pax_global_header00006660000000000000000000000064151552653540014525gustar00rootroot0000000000000052 comment=91f9e6da185207ff278159896d9235dd04e69091 .clangd000066400000000000000000000001171515526535400123210ustar00rootroot00000000000000CompileFlags: Add: ["--include-directory=/home/sven/dev/c/BWidgets/include/"].gitignore000066400000000000000000000000551515526535400130610ustar00rootroot00000000000000/BChoppr.lv2/** *.zip *.tar.gz .tags .clangd .gitmodules000066400000000000000000000001321515526535400132420ustar00rootroot00000000000000[submodule "src/BWidgets"] path = src/BWidgets url = https://github.com/sjaehn/BWidgets BChoppr.ttl000066400000000000000000000510671515526535400131640ustar00rootroot00000000000000@prefix atom: . @prefix doap: . @prefix foaf: . @prefix rdf: . @prefix rdfs: . @prefix lv2: . @prefix time: . @prefix urid: . @prefix ui: . @prefix state: . @prefix rsz: . @prefix pset: . a foaf:Person; foaf:name "Sven Jaehnichen"; # foaf:mbox ; foaf:homepage . a ui:X11UI; ui:binary ; lv2:extensionData ui:idleInterface ; lv2:requiredFeature ui:idleInterface . a lv2:Plugin, lv2:DynamicsPlugin, doap:Project; doap:name "B.Choppr" ; rdfs:comment "An audio stream chopping LV2 plugin. B.Choppr cuts the audio input stream into a repeated sequence of up to 16 chops. Each chop can be leveled up or down (gating) or panned to the left or right." ; doap:maintainer ; doap:license ; lv2:microVersion 8 ; lv2:minorVersion 12 ; lv2:optionalFeature lv2:hardRTCapable ; lv2:binary ; lv2:requiredFeature urid:map ; lv2:extensionData state:interface; ui:ui ; lv2:port [ a lv2:InputPort , atom:AtomPort ; atom:bufferType atom:Sequence ; atom:supports time:Position ; lv2:index 0 ; lv2:symbol "control_1" ; lv2:name "Control_1" ; ] , [ a lv2:InputPort , atom:AtomPort ; atom:bufferType atom:Sequence ; lv2:designation lv2:control; lv2:index 1 ; lv2:symbol "control_2" ; lv2:name "Control_2" ; ] , [ a lv2:OutputPort , atom:AtomPort ; atom:bufferType atom:Sequence ; lv2:designation lv2:control; lv2:index 2 ; lv2:symbol "notify" ; lv2:name "Notify" ; rsz:minimumSize 73000; ] ,[ a lv2:AudioPort , lv2:InputPort ; lv2:index 3 ; lv2:symbol "lv2_audio_in_1" ; lv2:name "Audio Input 1" ; ] , [ a lv2:AudioPort , lv2:InputPort ; lv2:index 4 ; lv2:symbol "lv2_audio_in_2" ; lv2:name "Audio Input 2" ; ] , [ a lv2:AudioPort , lv2:OutputPort ; lv2:index 5 ; lv2:symbol "lv2_audio_out_1" ; lv2:name "Audio Output 1" ; ] , [ a lv2:AudioPort , lv2:OutputPort ; lv2:index 6 ; lv2:symbol "lv2_audio_out_2" ; lv2:name "Audio Output 2" ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 7 ; lv2:symbol "bypass" ; lv2:name "Bypass" ; lv2:portProperty lv2:integer, lv2:enumeration ; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "On"; rdf:value 1 ] ; lv2:default 0 ; lv2:minimum 0 ; lv2:maximum 1 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 8 ; lv2:symbol "dry_wet" ; lv2:name "Dry / wet" ; lv2:default 1.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 9 ; lv2:symbol "blend" ; lv2:name "Blend type" ; lv2:portProperty lv2:integer, lv2:enumeration ; lv2:scalePoint [ rdfs:label "Linear"; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "Sinusoidal"; rdf:value 2 ] ; lv2:default 1 ; lv2:minimum 1 ; lv2:maximum 2 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 10 ; lv2:symbol "attack" ; lv2:name "Attack" ; lv2:default 0.2 ; lv2:minimum 0.01 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 11 ; lv2:symbol "release" ; lv2:name "Release" ; lv2:default 0.2 ; lv2:minimum 0.01 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 12 ; lv2:symbol "sequences_per_bar" ; lv2:name "Sequences per bar" ; lv2:portProperty lv2:integer ; lv2:default 4 ; lv2:minimum 1 ; lv2:maximum 8 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 13 ; lv2:symbol "amp_swing" ; lv2:name "Step amplification swing" ; lv2:portProperty lv2:connectionOptional ; lv2:default 1.0 ; lv2:minimum 0.001 ; lv2:maximum 1000.0 ; rdfs:comment "Values lower than 1 (down to 0.001) mean reduction of odd step level. Values higher than 1 (up to 1000) mean reduction of even step level." ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 14 ; lv2:symbol "swing" ; lv2:name "Steps swing" ; lv2:default 1.0 ; lv2:minimum 0.333333 ; lv2:maximum 3.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 15 ; lv2:symbol "number_steps" ; lv2:name "Number_Steps" ; lv2:portProperty lv2:integer ; lv2:default 16 ; lv2:minimum 1 ; lv2:maximum 16 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 16 ; lv2:symbol "position_01" ; lv2:name "Position 01" ; lv2:default 0.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 17 ; lv2:symbol "position_02" ; lv2:name "Position 02" ; lv2:default 0.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 18 ; lv2:symbol "position_03" ; lv2:name "Position 03" ; lv2:default 0.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 19 ; lv2:symbol "position_04" ; lv2:name "Position 04" ; lv2:default 0.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 20 ; lv2:symbol "position_05" ; lv2:name "Position 05" ; lv2:default 0.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 21 ; lv2:symbol "position_06" ; lv2:name "Position 06" ; lv2:default 0.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 22 ; lv2:symbol "position_07" ; lv2:name "Position 07" ; lv2:default 0.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 23 ; lv2:symbol "position_08" ; lv2:name "Position 08" ; lv2:default 0.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 24 ; lv2:symbol "position_09" ; lv2:name "Position 09" ; lv2:default 0.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 25 ; lv2:symbol "position_10" ; lv2:name "Position 10" ; lv2:default 0.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 26 ; lv2:symbol "position_11" ; lv2:name "Position 11" ; lv2:default 0.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 27 ; lv2:symbol "position_12" ; lv2:name "Position 12" ; lv2:default 0.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 28 ; lv2:symbol "position_13" ; lv2:name "Position 13" ; lv2:default 0.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 29 ; lv2:symbol "position_14" ; lv2:name "Position 14" ; lv2:default 0.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 30 ; lv2:symbol "position_15" ; lv2:name "Position 15" ; lv2:default 0.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 31 ; lv2:symbol "level_01" ; lv2:name "Level 01" ; lv2:default 1.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 32 ; lv2:symbol "level_02" ; lv2:name "Level 02" ; lv2:default 1.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 33 ; lv2:symbol "level_03" ; lv2:name "Level 03" ; lv2:default 1.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 34 ; lv2:symbol "level_04" ; lv2:name "Level 04" ; lv2:default 1.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 35 ; lv2:symbol "level_05" ; lv2:name "Level 05" ; lv2:default 1.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 36 ; lv2:symbol "level_06" ; lv2:name "Level 06" ; lv2:default 1.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 37 ; lv2:symbol "level_07" ; lv2:name "Level 07" ; lv2:default 1.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 38 ; lv2:symbol "level_08" ; lv2:name "Level 08" ; lv2:default 1.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 39 ; lv2:symbol "level_09" ; lv2:name "Level 09" ; lv2:default 1.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 40 ; lv2:symbol "level_10" ; lv2:name "Level 10" ; lv2:default 1.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 41 ; lv2:symbol "level_11" ; lv2:name "Level 11" ; lv2:default 1.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 42 ; lv2:symbol "level_12" ; lv2:name "Level 12" ; lv2:default 1.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 43 ; lv2:symbol "level_13" ; lv2:name "Level 13" ; lv2:default 1.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 44 ; lv2:symbol "level_14" ; lv2:name "Level 14" ; lv2:default 1.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 45 ; lv2:symbol "level_15" ; lv2:name "Level 15" ; lv2:default 1.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 46 ; lv2:symbol "level_16" ; lv2:name "Level 16" ; lv2:default 1.0 ; lv2:minimum 0.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 47 ; lv2:symbol "pan_01" ; lv2:name "Pan 01" ; lv2:default 0.0 ; lv2:minimum -1.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 48 ; lv2:symbol "pan_02" ; lv2:name "Pan 02" ; lv2:default 0.0 ; lv2:minimum -1.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 49 ; lv2:symbol "pan_03" ; lv2:name "Pan 03" ; lv2:default 0.0 ; lv2:minimum -1.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 50 ; lv2:symbol "pan_04" ; lv2:name "Pan 04" ; lv2:default 0.0 ; lv2:minimum -1.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 51 ; lv2:symbol "pan_05" ; lv2:name "Pan 05" ; lv2:default 0.0 ; lv2:minimum -1.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 52 ; lv2:symbol "pan_06" ; lv2:name "Pan 06" ; lv2:default 0.0 ; lv2:minimum -1.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 53 ; lv2:symbol "pan_07" ; lv2:name "Pan 07" ; lv2:default 0.0 ; lv2:minimum -1.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 54 ; lv2:symbol "pan_08" ; lv2:name "Pan 08" ; lv2:default 0.0 ; lv2:minimum -1.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 55 ; lv2:symbol "pan_09" ; lv2:name "Pan 09" ; lv2:default 0.0 ; lv2:minimum -1.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 56 ; lv2:symbol "pan_10" ; lv2:name "Pan 10" ; lv2:default 0.0 ; lv2:minimum -1.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 57 ; lv2:symbol "pan_11" ; lv2:name "Pan 11" ; lv2:default 0.0 ; lv2:minimum -1.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 58 ; lv2:symbol "pan_12" ; lv2:name "Pan 12" ; lv2:default 0.0 ; lv2:minimum -1.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 59 ; lv2:symbol "pan_13" ; lv2:name "Pan 13" ; lv2:default 0.0 ; lv2:minimum -1.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 60 ; lv2:symbol "pan_14" ; lv2:name "Pan 14" ; lv2:default 0.0 ; lv2:minimum -1.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 61 ; lv2:symbol "pan_15" ; lv2:name "Pan 15" ; lv2:default 0.0 ; lv2:minimum -1.0 ; lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; lv2:index 62 ; lv2:symbol "pan_16" ; lv2:name "Pan 16" ; lv2:default 0.0 ; lv2:minimum -1.0 ; lv2:maximum 1.0 ; ] . a pset:Preset ; lv2:appliesTo ; rdfs:label "Basic Tremolo" ; rdfs:seeAlso . a pset:Preset ; lv2:appliesTo ; rdfs:label "Faster, louder, chopper!" ; rdfs:seeAlso . a pset:Preset ; lv2:appliesTo ; rdfs:label "Jittery Jim" ; rdfs:seeAlso . a pset:Preset ; lv2:appliesTo ; rdfs:label "Panning Tremolo" ; rdfs:seeAlso . a pset:Preset ; lv2:appliesTo ; rdfs:label "Raving loony" ; rdfs:seeAlso . a pset:Preset ; lv2:appliesTo ; rdfs:label "Stall the engine" ; rdfs:seeAlso . a pset:Preset ; lv2:appliesTo ; rdfs:label "Waltz through Vienna" ; rdfs:seeAlso . BChoppr_Basic_tremolo.ttl000066400000000000000000000066211515526535400160220ustar00rootroot00000000000000@prefix atom: . @prefix lv2: . @prefix pset: . @prefix rdf: . @prefix rdfs: . @prefix state: . @prefix xsd: . a pset:Preset ; lv2:appliesTo ; rdfs:label "Basic tremolo" ; lv2:port [ lv2:symbol "amp_swing" ; pset:value 1000.0 ] , [ lv2:symbol "attack" ; pset:value 0.2 ] , [ lv2:symbol "blend" ; pset:value 1.0 ] , [ lv2:symbol "bypass" ; pset:value 0.0 ] , [ lv2:symbol "dry_wet" ; pset:value 1.0 ] , [ lv2:symbol "level_01" ; pset:value 1.0 ] , [ lv2:symbol "level_02" ; pset:value 1.0 ] , [ lv2:symbol "level_03" ; pset:value 1.0 ] , [ lv2:symbol "level_04" ; pset:value 1.0 ] , [ lv2:symbol "level_05" ; pset:value 1.0 ] , [ lv2:symbol "level_06" ; pset:value 1.0 ] , [ lv2:symbol "level_07" ; pset:value 1.0 ] , [ lv2:symbol "level_08" ; pset:value 1.0 ] , [ lv2:symbol "level_09" ; pset:value 1.0 ] , [ lv2:symbol "level_10" ; pset:value 1.0 ] , [ lv2:symbol "level_11" ; pset:value 1.0 ] , [ lv2:symbol "level_12" ; pset:value 1.0 ] , [ lv2:symbol "level_13" ; pset:value 1.0 ] , [ lv2:symbol "level_14" ; pset:value 1.0 ] , [ lv2:symbol "level_15" ; pset:value 1.0 ] , [ lv2:symbol "level_16" ; pset:value 1.0 ] , [ lv2:symbol "pan_01" ; pset:value 0.0 ] , [ lv2:symbol "pan_02" ; pset:value 0.0 ] , [ lv2:symbol "pan_03" ; pset:value 0.0 ] , [ lv2:symbol "pan_04" ; pset:value 0.0 ] , [ lv2:symbol "pan_05" ; pset:value 0.0 ] , [ lv2:symbol "pan_06" ; pset:value 0.0 ] , [ lv2:symbol "pan_07" ; pset:value 0.0 ] , [ lv2:symbol "pan_08" ; pset:value 0.0 ] , [ lv2:symbol "pan_09" ; pset:value 0.0 ] , [ lv2:symbol "pan_10" ; pset:value 0.0 ] , [ lv2:symbol "pan_11" ; pset:value 0.0 ] , [ lv2:symbol "pan_12" ; pset:value 0.0 ] , [ lv2:symbol "pan_13" ; pset:value 0.0 ] , [ lv2:symbol "pan_14" ; pset:value 0.0 ] , [ lv2:symbol "pan_15" ; pset:value 0.0 ] , [ lv2:symbol "pan_16" ; pset:value 0.0 ] , [ lv2:symbol "number_steps" ; pset:value 16.0 ] , [ lv2:symbol "position_01" ; pset:value 0.0 ] , [ lv2:symbol "position_02" ; pset:value 0.0 ] , [ lv2:symbol "position_03" ; pset:value 0.0 ] , [ lv2:symbol "position_04" ; pset:value 0.0 ] , [ lv2:symbol "position_05" ; pset:value 0.0 ] , [ lv2:symbol "position_06" ; pset:value 0.0 ] , [ lv2:symbol "position_07" ; pset:value 0.0 ] , [ lv2:symbol "position_08" ; pset:value 0.0 ] , [ lv2:symbol "position_09" ; pset:value 0.0 ] , [ lv2:symbol "position_10" ; pset:value 0.0 ] , [ lv2:symbol "position_11" ; pset:value 0.0 ] , [ lv2:symbol "position_12" ; pset:value 0.0 ] , [ lv2:symbol "position_13" ; pset:value 0.0 ] , [ lv2:symbol "position_14" ; pset:value 0.0 ] , [ lv2:symbol "position_15" ; pset:value 0.0 ] , [ lv2:symbol "release" ; pset:value 0.2 ] , [ lv2:symbol "sequences_per_bar" ; pset:value 4.0 ] , [ lv2:symbol "swing" ; pset:value 1.0 ] ; state:state [ "0"^^xsd:int ] . BChoppr_Faster_louder_chopper.ttl000066400000000000000000000070171515526535400175560ustar00rootroot00000000000000@prefix atom: . @prefix lv2: . @prefix pset: . @prefix rdf: . @prefix rdfs: . @prefix state: . @prefix xsd: . a pset:Preset ; lv2:appliesTo ; rdfs:label "Faster, louder, chopper!" ; lv2:port [ lv2:symbol "amp_swing" ; pset:value 1.0 ] , [ lv2:symbol "attack" ; pset:value 0.2 ] , [ lv2:symbol "blend" ; pset:value 2.0 ] , [ lv2:symbol "bypass" ; pset:value 0.0 ] , [ lv2:symbol "dry_wet" ; pset:value 1.0 ] , [ lv2:symbol "level_01" ; pset:value 0.65 ] , [ lv2:symbol "level_02" ; pset:value 0.0 ] , [ lv2:symbol "level_03" ; pset:value 0.7 ] , [ lv2:symbol "level_04" ; pset:value 0.05 ] , [ lv2:symbol "level_05" ; pset:value 0.75 ] , [ lv2:symbol "level_06" ; pset:value 0.1 ] , [ lv2:symbol "level_07" ; pset:value 0.8 ] , [ lv2:symbol "level_08" ; pset:value 0.15 ] , [ lv2:symbol "level_09" ; pset:value 0.85 ] , [ lv2:symbol "level_10" ; pset:value 0.2 ] , [ lv2:symbol "level_11" ; pset:value 0.9 ] , [ lv2:symbol "level_12" ; pset:value 0.25 ] , [ lv2:symbol "level_13" ; pset:value 0.95 ] , [ lv2:symbol "level_14" ; pset:value 0.30 ] , [ lv2:symbol "level_15" ; pset:value 1.0 ] , [ lv2:symbol "level_16" ; pset:value 0.35 ] , [ lv2:symbol "pan_01" ; pset:value 0.0 ] , [ lv2:symbol "pan_02" ; pset:value 0.0 ] , [ lv2:symbol "pan_03" ; pset:value 0.0 ] , [ lv2:symbol "pan_04" ; pset:value 0.0 ] , [ lv2:symbol "pan_05" ; pset:value 0.0 ] , [ lv2:symbol "pan_06" ; pset:value 0.0 ] , [ lv2:symbol "pan_07" ; pset:value 0.0 ] , [ lv2:symbol "pan_08" ; pset:value 0.0 ] , [ lv2:symbol "pan_09" ; pset:value 0.0 ] , [ lv2:symbol "pan_10" ; pset:value 0.0 ] , [ lv2:symbol "pan_11" ; pset:value 0.0 ] , [ lv2:symbol "pan_12" ; pset:value 0.0 ] , [ lv2:symbol "pan_13" ; pset:value 0.0 ] , [ lv2:symbol "pan_14" ; pset:value 0.0 ] , [ lv2:symbol "pan_15" ; pset:value 0.0 ] , [ lv2:symbol "pan_16" ; pset:value 0.0 ] , [ lv2:symbol "number_steps" ; pset:value 16.0 ] , [ lv2:symbol "position_01" ; pset:value 0.3125 ] , [ lv2:symbol "position_02" ; pset:value 0.35864979 ] , [ lv2:symbol "position_03" ; pset:value 0.52531648 ] , [ lv2:symbol "position_04" ; pset:value 0.56118143 ] , [ lv2:symbol "position_05" ; pset:value 0.68143457 ] , [ lv2:symbol "position_06" ; pset:value 0.71518987 ] , [ lv2:symbol "position_07" ; pset:value 0.78059071 ] , [ lv2:symbol "position_08" ; pset:value 0.80590719 ] , [ lv2:symbol "position_09" ; pset:value 0.85232067 ] , [ lv2:symbol "position_10" ; pset:value 0.87341774 ] , [ lv2:symbol "position_11" ; pset:value 0.90506327 ] , [ lv2:symbol "position_12" ; pset:value 0.92194092 ] , [ lv2:symbol "position_13" ; pset:value 0.94936711 ] , [ lv2:symbol "position_14" ; pset:value 0.96413505 ] , [ lv2:symbol "position_15" ; pset:value 0.98945147 ] , [ lv2:symbol "release" ; pset:value 0.2 ] , [ lv2:symbol "sequences_per_bar" ; pset:value 1.0 ] , [ lv2:symbol "swing" ; pset:value 1.0 ] ; state:state [ "0"^^xsd:int ] . BChoppr_Jittery_Jim.ttl000066400000000000000000000070401515526535400154650ustar00rootroot00000000000000@prefix atom: . @prefix lv2: . @prefix pset: . @prefix rdf: . @prefix rdfs: . @prefix state: . @prefix xsd: . a pset:Preset ; lv2:appliesTo ; rdfs:label "Jittery Jim" ; lv2:port [ lv2:symbol "amp_swing" ; pset:value 1.0 ] , [ lv2:symbol "attack" ; pset:value 0.2 ] , [ lv2:symbol "blend" ; pset:value 1.0 ] , [ lv2:symbol "bypass" ; pset:value 0.0 ] , [ lv2:symbol "dry_wet" ; pset:value 1.0 ] , [ lv2:symbol "level_01" ; pset:value 0.86000001 ] , [ lv2:symbol "level_02" ; pset:value 0.05 ] , [ lv2:symbol "level_03" ; pset:value 0.58999997 ] , [ lv2:symbol "level_04" ; pset:value 0.01 ] , [ lv2:symbol "level_05" ; pset:value 0.87 ] , [ lv2:symbol "level_06" ; pset:value 0.13 ] , [ lv2:symbol "level_07" ; pset:value 0.54000002 ] , [ lv2:symbol "level_08" ; pset:value 0.02 ] , [ lv2:symbol "level_09" ; pset:value 0.67000002 ] , [ lv2:symbol "level_10" ; pset:value 0.07 ] , [ lv2:symbol "level_11" ; pset:value 0.43000001 ] , [ lv2:symbol "level_12" ; pset:value 0.02 ] , [ lv2:symbol "level_13" ; pset:value 0.81999999 ] , [ lv2:symbol "level_14" ; pset:value 0.25999999 ] , [ lv2:symbol "level_15" ; pset:value 0.62 ] , [ lv2:symbol "level_16" ; pset:value 0.08 ] , [ lv2:symbol "pan_01" ; pset:value 0.0 ] , [ lv2:symbol "pan_02" ; pset:value 0.0 ] , [ lv2:symbol "pan_03" ; pset:value 0.0 ] , [ lv2:symbol "pan_04" ; pset:value 0.0 ] , [ lv2:symbol "pan_05" ; pset:value 0.0 ] , [ lv2:symbol "pan_06" ; pset:value 0.0 ] , [ lv2:symbol "pan_07" ; pset:value 0.0 ] , [ lv2:symbol "pan_08" ; pset:value 0.0 ] , [ lv2:symbol "pan_09" ; pset:value 0.0 ] , [ lv2:symbol "pan_10" ; pset:value 0.0 ] , [ lv2:symbol "pan_11" ; pset:value 0.0 ] , [ lv2:symbol "pan_12" ; pset:value 0.0 ] , [ lv2:symbol "pan_13" ; pset:value 0.0 ] , [ lv2:symbol "pan_14" ; pset:value 0.0 ] , [ lv2:symbol "pan_15" ; pset:value 0.0 ] , [ lv2:symbol "pan_16" ; pset:value 0.0 ] , [ lv2:symbol "number_steps" ; pset:value 16.0 ] , [ lv2:symbol "position_01" ; pset:value 0.04852321 ] , [ lv2:symbol "position_02" ; pset:value 0.12447257 ] , [ lv2:symbol "position_03" ; pset:value 0.15822785 ] , [ lv2:symbol "position_04" ; pset:value 0.275 ] , [ lv2:symbol "position_05" ; pset:value 0.3 ] , [ lv2:symbol "position_06" ; pset:value 0.35654008 ] , [ lv2:symbol "position_07" ; pset:value 0.39873418 ] , [ lv2:symbol "position_08" ; pset:value 0.48101267 ] , [ lv2:symbol "position_09" ; pset:value 0.51898736 ] , [ lv2:symbol "position_10" ; pset:value 0.60970461 ] , [ lv2:symbol "position_11" ; pset:value 0.65189874 ] , [ lv2:symbol "position_12" ; pset:value 0.74894518 ] , [ lv2:symbol "position_13" ; pset:value 0.8101266 ] , [ lv2:symbol "position_14" ; pset:value 0.86497891 ] , [ lv2:symbol "position_15" ; pset:value 0.90717298 ] , [ lv2:symbol "release" ; pset:value 0.2 ] , [ lv2:symbol "sequences_per_bar" ; pset:value 4.0 ] , [ lv2:symbol "swing" ; pset:value 1.0 ] ; state:state [ "0"^^xsd:int ] . BChoppr_Panning_tremolo.ttl000066400000000000000000000066441515526535400164000ustar00rootroot00000000000000@prefix atom: . @prefix lv2: . @prefix pset: . @prefix rdf: . @prefix rdfs: . @prefix state: . @prefix xsd: . a pset:Preset ; lv2:appliesTo ; rdfs:label "Panning tremolo" ; lv2:port [ lv2:symbol "amp_swing" ; pset:value 1000.0 ] , [ lv2:symbol "attack" ; pset:value 0.2 ] , [ lv2:symbol "blend" ; pset:value 1.0 ] , [ lv2:symbol "bypass" ; pset:value 0.0 ] , [ lv2:symbol "dry_wet" ; pset:value 1.0 ] , [ lv2:symbol "level_01" ; pset:value 1.0 ] , [ lv2:symbol "level_02" ; pset:value 1.0 ] , [ lv2:symbol "level_03" ; pset:value 1.0 ] , [ lv2:symbol "level_04" ; pset:value 1.0 ] , [ lv2:symbol "level_05" ; pset:value 1.0 ] , [ lv2:symbol "level_06" ; pset:value 1.0 ] , [ lv2:symbol "level_07" ; pset:value 1.0 ] , [ lv2:symbol "level_08" ; pset:value 1.0 ] , [ lv2:symbol "level_09" ; pset:value 1.0 ] , [ lv2:symbol "level_10" ; pset:value 1.0 ] , [ lv2:symbol "level_11" ; pset:value 1.0 ] , [ lv2:symbol "level_12" ; pset:value 1.0 ] , [ lv2:symbol "level_13" ; pset:value 1.0 ] , [ lv2:symbol "level_14" ; pset:value 1.0 ] , [ lv2:symbol "level_15" ; pset:value 1.0 ] , [ lv2:symbol "level_16" ; pset:value 1.0 ] , [ lv2:symbol "pan_01" ; pset:value 0.0 ] , [ lv2:symbol "pan_02" ; pset:value 0.25 ] , [ lv2:symbol "pan_03" ; pset:value 0.5 ] , [ lv2:symbol "pan_04" ; pset:value 0.75 ] , [ lv2:symbol "pan_05" ; pset:value 1.0 ] , [ lv2:symbol "pan_06" ; pset:value 0.75 ] , [ lv2:symbol "pan_07" ; pset:value 0.5 ] , [ lv2:symbol "pan_08" ; pset:value 0.25 ] , [ lv2:symbol "pan_09" ; pset:value 0.0 ] , [ lv2:symbol "pan_10" ; pset:value -0.25 ] , [ lv2:symbol "pan_11" ; pset:value -0.5 ] , [ lv2:symbol "pan_12" ; pset:value -0.75 ] , [ lv2:symbol "pan_13" ; pset:value -1.0 ] , [ lv2:symbol "pan_14" ; pset:value -0.75 ] , [ lv2:symbol "pan_15" ; pset:value -0.5 ] , [ lv2:symbol "pan_16" ; pset:value -0.25 ] , [ lv2:symbol "number_steps" ; pset:value 16.0 ] , [ lv2:symbol "position_01" ; pset:value 0.0 ] , [ lv2:symbol "position_02" ; pset:value 0.0 ] , [ lv2:symbol "position_03" ; pset:value 0.0 ] , [ lv2:symbol "position_04" ; pset:value 0.0 ] , [ lv2:symbol "position_05" ; pset:value 0.0 ] , [ lv2:symbol "position_06" ; pset:value 0.0 ] , [ lv2:symbol "position_07" ; pset:value 0.0 ] , [ lv2:symbol "position_08" ; pset:value 0.0 ] , [ lv2:symbol "position_09" ; pset:value 0.0 ] , [ lv2:symbol "position_10" ; pset:value 0.0 ] , [ lv2:symbol "position_11" ; pset:value 0.0 ] , [ lv2:symbol "position_12" ; pset:value 0.0 ] , [ lv2:symbol "position_13" ; pset:value 0.0 ] , [ lv2:symbol "position_14" ; pset:value 0.0 ] , [ lv2:symbol "position_15" ; pset:value 0.0 ] , [ lv2:symbol "release" ; pset:value 0.2 ] , [ lv2:symbol "sequences_per_bar" ; pset:value 4.0 ] , [ lv2:symbol "swing" ; pset:value 1.0 ] ; state:state [ "0"^^xsd:int ] . BChoppr_Raving_loony.ttl000066400000000000000000000066141515526535400157100ustar00rootroot00000000000000@prefix atom: . @prefix lv2: . @prefix pset: . @prefix rdf: . @prefix rdfs: . @prefix state: . @prefix xsd: . a pset:Preset ; lv2:appliesTo ; rdfs:label "Raving loony" ; lv2:port [ lv2:symbol "amp_swing" ; pset:value 1.0 ] , [ lv2:symbol "attack" ; pset:value 0.2 ] , [ lv2:symbol "blend" ; pset:value 1.0 ] , [ lv2:symbol "bypass" ; pset:value 0.0 ] , [ lv2:symbol "dry_wet" ; pset:value 1.0 ] , [ lv2:symbol "level_01" ; pset:value 1.0 ] , [ lv2:symbol "level_02" ; pset:value 1.0 ] , [ lv2:symbol "level_03" ; pset:value 1.0 ] , [ lv2:symbol "level_04" ; pset:value 1.0 ] , [ lv2:symbol "level_05" ; pset:value 0.1 ] , [ lv2:symbol "level_06" ; pset:value 1.0 ] , [ lv2:symbol "level_07" ; pset:value 0.1 ] , [ lv2:symbol "level_08" ; pset:value 1.0 ] , [ lv2:symbol "level_09" ; pset:value 0.1 ] , [ lv2:symbol "level_10" ; pset:value 1.0 ] , [ lv2:symbol "level_11" ; pset:value 1.0 ] , [ lv2:symbol "level_12" ; pset:value 0.1 ] , [ lv2:symbol "level_13" ; pset:value 1.0 ] , [ lv2:symbol "level_14" ; pset:value 1.0 ] , [ lv2:symbol "level_15" ; pset:value 0.1 ] , [ lv2:symbol "level_16" ; pset:value 0.1 ] , [ lv2:symbol "pan_01" ; pset:value 0.0 ] , [ lv2:symbol "pan_02" ; pset:value 0.0 ] , [ lv2:symbol "pan_03" ; pset:value 0.0 ] , [ lv2:symbol "pan_04" ; pset:value 0.0 ] , [ lv2:symbol "pan_05" ; pset:value 0.0 ] , [ lv2:symbol "pan_06" ; pset:value 0.0 ] , [ lv2:symbol "pan_07" ; pset:value 0.0 ] , [ lv2:symbol "pan_08" ; pset:value 0.0 ] , [ lv2:symbol "pan_09" ; pset:value 0.0 ] , [ lv2:symbol "pan_10" ; pset:value 0.0 ] , [ lv2:symbol "pan_11" ; pset:value 0.0 ] , [ lv2:symbol "pan_12" ; pset:value 0.0 ] , [ lv2:symbol "pan_13" ; pset:value 0.0 ] , [ lv2:symbol "pan_14" ; pset:value 0.0 ] , [ lv2:symbol "pan_15" ; pset:value 0.0 ] , [ lv2:symbol "pan_16" ; pset:value 0.0 ] , [ lv2:symbol "number_steps" ; pset:value 16.0 ] , [ lv2:symbol "position_01" ; pset:value 0.0 ] , [ lv2:symbol "position_02" ; pset:value 0.0 ] , [ lv2:symbol "position_03" ; pset:value 0.0 ] , [ lv2:symbol "position_04" ; pset:value 0.0 ] , [ lv2:symbol "position_05" ; pset:value 0.0 ] , [ lv2:symbol "position_06" ; pset:value 0.0 ] , [ lv2:symbol "position_07" ; pset:value 0.0 ] , [ lv2:symbol "position_08" ; pset:value 0.0 ] , [ lv2:symbol "position_09" ; pset:value 0.0 ] , [ lv2:symbol "position_10" ; pset:value 0.0 ] , [ lv2:symbol "position_11" ; pset:value 0.0 ] , [ lv2:symbol "position_12" ; pset:value 0.0 ] , [ lv2:symbol "position_13" ; pset:value 0.0 ] , [ lv2:symbol "position_14" ; pset:value 0.0 ] , [ lv2:symbol "position_15" ; pset:value 0.0 ] , [ lv2:symbol "release" ; pset:value 0.2 ] , [ lv2:symbol "sequences_per_bar" ; pset:value 4.0 ] , [ lv2:symbol "swing" ; pset:value 1.0 ] ; state:state [ "0"^^xsd:int ] . BChoppr_Stall_the_engine.ttl000066400000000000000000000070051515526535400165010ustar00rootroot00000000000000@prefix atom: . @prefix lv2: . @prefix pset: . @prefix rdf: . @prefix rdfs: . @prefix state: . @prefix xsd: . a pset:Preset ; lv2:appliesTo ; rdfs:label "Stall the engine" ; lv2:port [ lv2:symbol "amp_swing" ; pset:value 1.0 ] , [ lv2:symbol "attack" ; pset:value 0.2 ] , [ lv2:symbol "blend" ; pset:value 2.0 ] , [ lv2:symbol "bypass" ; pset:value 0.0 ] , [ lv2:symbol "dry_wet" ; pset:value 1.0 ] , [ lv2:symbol "level_01" ; pset:value 1.0 ] , [ lv2:symbol "level_02" ; pset:value 0.2 ] , [ lv2:symbol "level_03" ; pset:value 0.8 ] , [ lv2:symbol "level_04" ; pset:value 0.16 ] , [ lv2:symbol "level_05" ; pset:value 0.6 ] , [ lv2:symbol "level_06" ; pset:value 0.12 ] , [ lv2:symbol "level_07" ; pset:value 0.4 ] , [ lv2:symbol "level_08" ; pset:value 0.08 ] , [ lv2:symbol "level_09" ; pset:value 0.2 ] , [ lv2:symbol "level_10" ; pset:value 0.04 ] , [ lv2:symbol "level_11" ; pset:value 0.1 ] , [ lv2:symbol "level_12" ; pset:value 0.02 ] , [ lv2:symbol "level_13" ; pset:value 0.05 ] , [ lv2:symbol "level_14" ; pset:value 0.01 ] , [ lv2:symbol "level_15" ; pset:value 0.025 ] , [ lv2:symbol "level_16" ; pset:value 0.0 ] , [ lv2:symbol "pan_01" ; pset:value 0.0 ] , [ lv2:symbol "pan_02" ; pset:value 0.0 ] , [ lv2:symbol "pan_03" ; pset:value 0.0 ] , [ lv2:symbol "pan_04" ; pset:value 0.0 ] , [ lv2:symbol "pan_05" ; pset:value 0.0 ] , [ lv2:symbol "pan_06" ; pset:value 0.0 ] , [ lv2:symbol "pan_07" ; pset:value 0.0 ] , [ lv2:symbol "pan_08" ; pset:value 0.0 ] , [ lv2:symbol "pan_09" ; pset:value 0.0 ] , [ lv2:symbol "pan_10" ; pset:value 0.0 ] , [ lv2:symbol "pan_11" ; pset:value 0.0 ] , [ lv2:symbol "pan_12" ; pset:value 0.0 ] , [ lv2:symbol "pan_13" ; pset:value 0.0 ] , [ lv2:symbol "pan_14" ; pset:value 0.0 ] , [ lv2:symbol "pan_15" ; pset:value 0.0 ] , [ lv2:symbol "pan_16" ; pset:value 0.0 ] , [ lv2:symbol "number_steps" ; pset:value 16.0 ] , [ lv2:symbol "position_01" ; pset:value 0.25527427 ] , [ lv2:symbol "position_02" ; pset:value 0.28691983 ] , [ lv2:symbol "position_03" ; pset:value 0.43670887 ] , [ lv2:symbol "position_04" ; pset:value 0.47046414 ] , [ lv2:symbol "position_05" ; pset:value 0.56329113 ] , [ lv2:symbol "position_06" ; pset:value 0.59071732 ] , [ lv2:symbol "position_07" ; pset:value 0.65822786 ] , [ lv2:symbol "position_08" ; pset:value 0.68565398 ] , [ lv2:symbol "position_09" ; pset:value 0.71729958 ] , [ lv2:symbol "position_10" ; pset:value 0.73628694 ] , [ lv2:symbol "position_11" ; pset:value 0.75949365 ] , [ lv2:symbol "position_12" ; pset:value 0.78059071 ] , [ lv2:symbol "position_13" ; pset:value 0.79535866 ] , [ lv2:symbol "position_14" ; pset:value 0.8101266 ] , [ lv2:symbol "position_15" ; pset:value 0.82489449 ] , [ lv2:symbol "release" ; pset:value 0.2 ] , [ lv2:symbol "sequences_per_bar" ; pset:value 1.0 ] , [ lv2:symbol "swing" ; pset:value 1.0 ] ; state:state [ "0"^^xsd:int ] . BChoppr_Waltz_through_Vienna.ttl000066400000000000000000000066431515526535400174050ustar00rootroot00000000000000@prefix atom: . @prefix lv2: . @prefix pset: . @prefix rdf: . @prefix rdfs: . @prefix state: . @prefix xsd: . a pset:Preset ; lv2:appliesTo ; rdfs:label "Waltz through Vienna" ; lv2:port [ lv2:symbol "amp_swing" ; pset:value 1.0 ] , [ lv2:symbol "attack" ; pset:value 0.2 ] , [ lv2:symbol "blend" ; pset:value 1.0 ] , [ lv2:symbol "bypass" ; pset:value 0.0 ] , [ lv2:symbol "dry_wet" ; pset:value 1.0 ] , [ lv2:symbol "level_01" ; pset:value 1.0 ] , [ lv2:symbol "level_02" ; pset:value 0.1 ] , [ lv2:symbol "level_03" ; pset:value 0.5 ] , [ lv2:symbol "level_04" ; pset:value 0.1 ] , [ lv2:symbol "level_05" ; pset:value 0.5 ] , [ lv2:symbol "level_06" ; pset:value 0.1 ] , [ lv2:symbol "level_07" ; pset:value 1.0 ] , [ lv2:symbol "level_08" ; pset:value 1.0 ] , [ lv2:symbol "level_09" ; pset:value 1.0 ] , [ lv2:symbol "level_10" ; pset:value 1.0 ] , [ lv2:symbol "level_11" ; pset:value 1.0 ] , [ lv2:symbol "level_12" ; pset:value 1.0 ] , [ lv2:symbol "level_13" ; pset:value 1.0 ] , [ lv2:symbol "level_14" ; pset:value 1.0 ] , [ lv2:symbol "level_15" ; pset:value 1.0 ] , [ lv2:symbol "level_16" ; pset:value 1.0 ] , [ lv2:symbol "pan_01" ; pset:value 0.0 ] , [ lv2:symbol "pan_02" ; pset:value 0.0 ] , [ lv2:symbol "pan_03" ; pset:value 0.0 ] , [ lv2:symbol "pan_04" ; pset:value 0.0 ] , [ lv2:symbol "pan_05" ; pset:value 0.0 ] , [ lv2:symbol "pan_06" ; pset:value 0.0 ] , [ lv2:symbol "pan_07" ; pset:value 0.0 ] , [ lv2:symbol "pan_08" ; pset:value 0.0 ] , [ lv2:symbol "pan_09" ; pset:value 0.0 ] , [ lv2:symbol "pan_10" ; pset:value 0.0 ] , [ lv2:symbol "pan_11" ; pset:value 0.0 ] , [ lv2:symbol "pan_12" ; pset:value 0.0 ] , [ lv2:symbol "pan_13" ; pset:value 0.0 ] , [ lv2:symbol "pan_14" ; pset:value 0.0 ] , [ lv2:symbol "pan_15" ; pset:value 0.0 ] , [ lv2:symbol "pan_16" ; pset:value 0.0 ] , [ lv2:symbol "number_steps" ; pset:value 6.0 ] , [ lv2:symbol "position_01" ; pset:value 0.345 ] , [ lv2:symbol "position_02" ; pset:value 0.36 ] , [ lv2:symbol "position_03" ; pset:value 0.665 ] , [ lv2:symbol "position_04" ; pset:value 0.68 ] , [ lv2:symbol "position_05" ; pset:value 0.985 ] , [ lv2:symbol "position_06" ; pset:value 0.0 ] , [ lv2:symbol "position_07" ; pset:value 0.0 ] , [ lv2:symbol "position_08" ; pset:value 0.0 ] , [ lv2:symbol "position_09" ; pset:value 0.0 ] , [ lv2:symbol "position_10" ; pset:value 0.0 ] , [ lv2:symbol "position_11" ; pset:value 0.0 ] , [ lv2:symbol "position_12" ; pset:value 0.0 ] , [ lv2:symbol "position_13" ; pset:value 0.0 ] , [ lv2:symbol "position_14" ; pset:value 0.0 ] , [ lv2:symbol "position_15" ; pset:value 0.0 ] , [ lv2:symbol "release" ; pset:value 0.2 ] , [ lv2:symbol "sequences_per_bar" ; pset:value 1.0 ] , [ lv2:symbol "swing" ; pset:value 1.0 ] ; state:state [ "0"^^xsd:int ] . LICENSE000066400000000000000000001045131515526535400121020ustar00rootroot00000000000000 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 . README.md000066400000000000000000000154261515526535400123600ustar00rootroot00000000000000# B.Choppr An audio stream chopping LV2 plugin. Description: B.Choppr cuts the audio input stream into a repeated sequence of up to 16 chops. Each chop can be leveled up or down (gating) or panned to the left or right. B.Choppr is the successor of B.Slizr. ![screenshot](https://raw.githubusercontent.com/sjaehn/BChoppr/master/doc/screenshot.png "Screenshot from B.Choppr") ## Installation a) Install the bchoppr package for your system * [Arch](https://archlinux.org/packages/community/x86_64/bchoppr/) by dvzrv * [FreeBSD](https://www.freshports.org/audio/bchoppr-lv2) by Yuri * [Guix](https://guix.gnu.org/packages/bchoppr-1.8.0/) * [NixOS](https://github.com/NixOS/nixpkgs/blob/release-20.09/pkgs/applications/audio/bchoppr/default.nix#L23) by magnetophon * [Parabola](https://www.parabola.nu/packages/?q=bchoppr) by Erich Eckner * [openSUSE](https://software.opensuse.org/package/BChoppr) * [Ubuntu](https://launchpad.net/ubuntu/+source/bchoppr) by Erich Eickmeyer * Check https://repology.org/project/bchoppr/versions for other systems Note: This will NOT necessarily install the latest version of B.Choppr. The version provided depends on the packagers. b) Use the latest provided binaries Unpack the provided bchoppr-\*.zip or bchoppr-\*.tar.xz from the latest release and copy the BChoppr.lv2 folder to your lv2 directory (depending on your system settings, ~/.lv2/, /usr/lib/lv2/, /usr/local/lib/lv2/, or ...). c) Build your own binaries in the following three steps. Step 1: [Download the latest published version](https://github.com/sjaehn/BChoppr/releases) of B.Choppr. Or clone it including its submodules from this repository: ``` git clone --recurse-submodules https://github.com/sjaehn/BChoppr ``` Step 2: Install pkg-config and the development packages for x11, cairo, and lv2 if not done yet. If you don't have already got the build tools (compilers, make, libraries) then install them too. On Debian-based systems you may run: ``` sudo apt-get install build-essential sudo apt-get install pkg-config libx11-dev libcairo2-dev lv2-dev ``` On Arch-based systems you may run: ``` sudo pacman -S base-devel sudo pacman -S pkg-config libx11 cairo lv2 ``` Step 3: Building and installing into the default lv2 directory (/usr/local/lib/lv2/) is easy using `make` and `make install`. Simply call: ``` make sudo make install ``` **Optional:** Standard `make` and `make install` parameters are supported. Alternatively, you may build a debugging version using `make CXXFLAGS+=-g`. For installation into an alternative directory (e.g., /usr/lib/lv2/), change the variable `PREFIX` while installing: `sudo make install PREFIX=/usr`. If you want to freely choose the install target directory, change the variable `LV2DIR` (e.g., `make install LV2DIR=~/.lv2`) or even define `DESTDIR`. ## Running After the installation Ardour, Carla, and any other LV2 host should automatically detect B.Choppr. If jalv is installed, you can also call it ``` jalv.gtk https://www.jahnichen.de/plugins/lv2/BChoppr ``` to run it (pseudo) stand-alone and connect it to the JACK system. Note: **Jack transport is required to get information about beat / position** ## Usage The plugin slices a stereo input stream, amplifies or silences the individual slices and send the whole sequence to the output. Although this affects only the audio signal, it needs a playback running (Jack transport). In addition to the global controllers, the interface is divided into three parts: step controls, monitor and step shape. ### Global * **Bypass** : Bypass B.Choppr * **Dry/wet** : Dry / wet mixing ### Step controls * **Step markers** : Defines the size of each step. Drag markers to relocate. Right click to switch between automatic and manual placement * **Step level sliders** : Sound level for each individual step * **Step panning dials**: Sound l/r panning for each individual step * **Sequences per bar** : Number of sequences in one bar (1..8) * **Amp swing** : Sets all level sliders to a swing pattern (0.001 .. 1000.0). Values lower than 1 mean reduction of odd step level. Values higher than 1 mean reduction of even step level. * **Steps swing** : Sets all automatic markers to a swing pattern (1:3..3:1) * **Auto markers** : Sets all markers to automatic placement * **Number of steps** : Number of steps in one sequence (1..16) ### Monitor * **On/Off switch** : Switches monitor and monitor <-> plugin communication on/off. Reduces CPU load. * **Monitor** : Visualization (l + r signal) the input / output signal for a whole sequence. Use mouse wheel or drag to zoom in or out. ### Step shape * **Blend** : Select between linear (for trapezoid shapes) and sinusoidal blend between the steps * **Attack** : Time (fraction of the respective step length) to increase the level at the begin of each step * **Decay** : Time (fraction of the respective step length) to decrease the level at the end of each step * **Monitor** : Visualization of a single step ### 🔗 Shared data If you use multiple instances of B.Choppr you may be interested in sharing the plugin settings between the instances. Click on one of the four shared data fields and the respective plugin instance is linked to the shared data. The plugin instance data are copied to the shared data field if no other plugin instance is linked to this shared data field before (otherwise *vise versa*). If you now click on the same shared data box in another plugin instance, both plugin instances get the same data. Click again on the selected box to unlink the plugin instance from shared data. The plugin now shows the host-provided data. Note: Shared data are unlinked from host automation. ## Internationalization B.Choppr now uses the dictionaries of the new B.Widgets toolkit and all labels are now automatically shown in your system language (if translation is provided). The dictionary for this plugin is stored in src/BChoppr_Dictionary.data. If you want to add a translation to your language, simply edit this file in your text editor und use the (POSIX) language code (format: language_TERRITORY) of your language. E. g., if you want to add a french translation of "Help", simply change ``` { "Help", { {"de_DE", "Hilfe"}, {"it_IT", "Aiuto"} } }, ``` to ``` { "Help", { {"de_DE", "Hilfe"}, {"fr_FR", "Aide"}, {"it_IT", "Aiuto"} } }, ``` Once you changed the dictionary, you have to re-build the plugin. And please share your translations with other users by either submitting a git pull request or notifying me (issue report, e-mail, ...). ## What's new * New pugl lib implemented * Build process modified ## TODO * Moooaaaaaarrrrrrr presets ## Acknowledgments * Thanks to LAM and sahaathyva for translation ## Links * Tutorial video: https://youtu.be/PuzoxiAs-h8 doc/000077500000000000000000000000001515526535400116365ustar00rootroot00000000000000doc/screenshot.png000066400000000000000000005105501515526535400145270ustar00rootroot00000000000000‰PNG  IHDRH€¦+X¶sBIT|dˆtEXtSoftwaregnome-screenshotï¿>)tEXtCreation TimeDo 08 Dez 2022 20:51:33 CET1’Ó IDATxœìÝw|õÿð×Ý%Mš&m¡‹2[Ê(d•! ÈFÙCdÉP·_¿ŠŠÀWŊߟ~E8@†dˆ‚È”UvÒ–îݬ»ß—¤IsI.mÒÅûù}Ü·íÏ}î̽óù|Þ€B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„â%¦‚ÇiD Àù¬F„B!„R1fzyÒ{[€· F§Ó Lˆ_¬Õhp Ë0³!„B!Ä7A€Ùdâ ‹‹ÓΜ;÷rAAÁWrËð&²a$$ÄÇÿ_Ãèè~¥z= Ìf3Aöù!„B!Ä/†Çq€Z¥BJjêî³çÎý ÀÈ ’¼é›¿22"¢_^~>ŒF#xž¯PÅ !„B!Äxž‡ÑhD©^úõê5ÔhZeff+çxVæy4:n`Dxx¿ü‚j1"„B!„Ôh‚ ¿ ‘u:ÝÝó(x$·‹]lbçÎûAhJÁ!„B!¤¶` Ã$=~ünˆã‘Ü’Û‚Âq\ Ž!„B!µ‰ à8.@¨œýåH*žç•¯!„B!„TK,£’³¯Ü‰ãyžryB!„BjK,#+ABn¡Ô½ŽB!„RÑJõ81kv¶™Eš‘•?™Q9ÞÄ2²$B!„Bñ§HqõôèdD}…ã”BY&¿)±)G… “ÜŽpÞ£‰B!„RíÆ„ê1#¬ŒtkO˜‚ÇÈ=†ði–[se )òH„B!„jõxD †‡èeíÀ˜^‚h%3}^ÿµMB!ÀhѸC/ =‰Qô±C!ÄÑØP½ìàÈÞÈ=F‡zœ'ôIE!Ä¿1sÙÛX4o:B!e"<¦‡•:®dÜ|V”Û6#¬áåÆ*Uu±#„° 1lјÑ9 õB‚ âxè ²rá~Ýò¾Ü›ŒR‡2ÚæèwÿTŒîß­ÕG Jyí,ŽíÝ€OÖDj•^!„ŠúýÐ!·Û{Ýy§ÏÏy_=½ã˜#†EèµÐÿ¶%{68ìØÿ~¨z@î+ÓA ŠTŒ€ñ¡z¬Ìô]W; !„Ddl,†s0å"»˜G€.q‰CÑ¢sW4[4 ‹vg;¥WeÃî³ÿ÷ŒŠU£l²<¢ZvÅ ãQ¬ûü`Õ^!„Jqy ž*‚Ð3Èè¸RàQúÛ6ÏY (”(Ùù@Ýts^CÁšÅ¶àȪ·Öˆ2+œ¼< !„Ø1áÄûà™­Y”Q¸gÉgx¡_}ôìÛ»÷¡§7Š»Ÿ~#cÕŠÎcÛßÃ7‡.!ˤAT‹Žh…c¸Á£lZ>&Ãßúc‚TÐß:‡_¿‡ÿn9‹Bë'ŽNÁ¬1½Ñ&*Å7Oaÿ†ðÑÖÓÈp-0úŧ0¢m F„BÃé‘uå8öløŸî¸€"¹û°MÐÿ±9Û½-š7 ƒV¡GÎÅÍxyÎJœ,÷9M!Ä(y„It+Ýó ˆAÁd@ðœ¥(X³Ø0Ù SðˆRòH3ú¦7H„B$°P‡¡¾V@@ö­ ˜ËíÁ„Ý‘}êôøkÕ,ÛvâÇ\ ޤâbù"U÷=~;ô;~ù~ ëómxwíi˜ÊíÉ5ŽE%˜¯âÈÑ4x"ËßÄÆ§G`体ðîÑl8îì“%6r(fŒ‰RHÇîEã1tÐ=˜ºüä ˆŸ4½´v婸vg$_wF‹LF¢ÚÛ}nbó3£0òžúØz\÷í_B!µH„Bìð(¼qÿýÎ\LC¡ P6/ C´Ó'†`ëïÍ”ßäö8s6„Rª#{\Mfd‘ebÆ!©ûOsd“T~R–‰Eºº× Bq…Q¡^D=¨xàôÆÌ‡ïAÄÕ­XõÕ!ì?¥GÇNjtzä5ü«ô¿Øxè² m;ÂÓ±ûÀ%ÈÉ{`¾x ç C‘ÚÃîŽÂñ]Ùˆ2 „¢ó8›l?@ˆƒBÁP Á]w!ž„âk¸’êí>„R3Ô¤ÈÙê\ü^¤ÄHûIbê^#ÆYÇ$©z@É®¯2ÙýV¨ôY;€$B!èøØ§Ø4‡R[õ‚”`ùG¶cß -çô,þ·õœOËC©‰‡I_€[—ÿ¾ŸO"Kn—6¡Gÿû$æ´ §ÓJ¡ äPœr?¼÷/<»æ¬czq¡·Rr ò¯ãÈ7ÿÁü÷¡ØÛ}!„T»L‹O³ÔŽ+%‚#WÛ>ÉT#ËäÛFngìž;vüݧg&„B¼¡ì…?¾…¡š›XÿÈDüß?MSrö!„Rã<QâØÕN†ïrUX™({ÿã'NôàqsêbG!„B©Vf"ÕÈbfXiYw; ƒ5™jlËóm×:+ !„B!Õnk®  •¸/TÞZ£Sv»,‹…JlÌU!ÛÇÝêìQ;B!„BHˆRòãÄ )Ë,¦ò®L¶:êbG!„B©•ˆó$¥ùp~#¹(‹!„B!„XP€D!„B! B!„BˆH„B!„bA!„B!„XP€D!„B! B!„Bˆ…ìy²srüYB!„B©v²¤³çÎù³„B!„â7²ö£.v„B!„bA!„B!„XP€D!„B! B!„BˆH„B!„bQ}’p ¿¯y ïý||µU‚B!„BÊT]€d:ƒOç܇‡>: =ð¹H:t§RK!TY%j ¡igãxrñí}!„B©dσ䑃_˜ŠÇŒå6(Ñõß_áÕÁAoÜM"´à|vRoê—ýoÎÁ²ýÙ0ð«P#8¢)Zw€ñGàŽ°j©`NÂÆWþƒKãV£S3MõÔB!„À—’µÀöàÕ™`[ÃB×H † Áˆ…ïb„¯O(›Eyù0·™Œ¥³ºBm,FNÊ)ìúf ž?rÿyÿ $j™j«!„B!¤úù<@buЦ];8ÍSË_Á?‰=]—cõƒ­¥[‘Lé8üõj|õËI\É2#´e/Ü÷È#Þ*¾ ]Øà&HHHë×!=bxøßßãç¿f#±w1ެ}_þzWÓòaPÖG¯Çßà ƒÂÀ¸«›P‚K?­Ä éV)!pçC¯â¹AQb½=^— gVÍÀU€»^ÜŒ…}x÷eB!„B|Îç Àl6Ãlù‹aX°¬œGúRœúô%¼º7]„' pìë÷ñáâUhðñ3èê§Þg¬:ŒƒòôÇHk8 óŸl¹lãz`<Ô­Kúf,ûà0ÂxËà ä\GQd}K ãáº@¸ûcÞ °`þê—nÊ$„B!„øƒÏ$ÃÁ71öž7msM'â½D+OöBÁAlþ!]ž\†©w…€ÐâÉtñ%~=õºvSú¦‚‚ƒ¬±Y×ÿÆÎO¶ãj@; ogÀXhb;¡{DzV.Ouë¤ÊEž Cç;: M 5€ò¯«³¸Ÿª^#ÄÆ4´@¦|×eB!„BüÃ÷c:ÌÀ[³mcU}4åO¹¼Í7.áJi1Ò—OÆðw¬k˜M TÙÅâ“Öá·qßð·-•S 8¦¦½üîb\ÖÑSݸÃ0¡ÓïXõüÃ8ßï^Œqzµ'뺤)\—I!„BñßA j€¸V­œÇ y"†þs—bbKû0€A`}Ϻ–)×guE R ]X¢BÕžs{ª›2£_ýÝþÚm›7cù›°uÆR¼>±89×%uqÊX—eª*y!„B!Òü0ÉK‚؆Â5ŠE3åV\JáÝ?Æocµ Ñ*¾µWœ¬º1hØyé<w­zó¾Û3ã[¡£§cMPE…ÅàÇ"evªþWB!„:©úµÙ`„ꤟüGS¡[£^;t=^øæU¼ÎMƶ‘P–f 9?ƒ&@SÙ ˜÷uS§Æ󈉀ڔ“É…€.:Æó±®1Z4ÀÖ½ëñ]üÄ éÈ ¹w…žÁ.Ê$„B!„øGõHLúOCÿý«¼]f' Ãì7°8äc|ñó‡xe]1Ø»Bï@õN¡ªq[7EîeüöͬJ͇Q¡Cƒ–=ðȳ÷!Žó|¬† FŸ‡žÄ?o‚µÿùæ †HœÖ=âÜ•I!„Bñ¹í=KJJ~÷kM!„B!ÄO{8èi?ù !„B!ävA!„B!„XP€D!„B! B!„BˆH„B!„b!;Íwjjª?ëA!„B!ÕNv€Ô²eK‡¿Aðyeˆ{tÏ¥Ñ}!„B!¾R}ů1LÙ´UÖ €a˜Û>@°¿/L„B!¤â(@ª¥ìƒ©Àévf½t/!„Bˆ·(ICÃ0ŒÃr;»Ý¯ŸøÖ¬Y³ª» „B©Ô‚TÇÙ·¦ÜŽÝñ¨ûñ•N:Uw!„R¨é6a n÷Ö¥ÛùÚ‰wú÷ï•Jå°Žã¸jª !„BªJ…¤ò]¹*³Ø—GªÎí,ÝŽ×|; ATT”WÇôêÕ ¥R‰nݺáàÁƒþ¨!„BjÑ‚T>áVUïv –h¼Öí£}ûöèß¿¿×ÇiµZ<óÌ3¸té:wGú¡v„B©Ijõ$W™Ü¬¬ãnì§1(žÝ®ãv(û]ÝR¯^=äääTèØÐÐPtêÔ çÎCPP6oÞŒ‚‚<þøã>®%!„BjšÑ‚ä/Rµxïv»Wôþ¨,Xàðwll,Æ'ëØ_~ùcÆŒÁ† ûï¿z½ÞÕ$„BH S«[|ÁÝC0µ$8º[–¨U©ö‹Ç“O>‰ &`åʕؼy³ÇcÞ}÷]tîÜ‹-BAAAÔ’B©=BCCѺK[Dtheà Bèy˜ 0Ý,FÆÉ¸pül­ü½í$w(xrïvš –ºgÖ> 6Ä–-[0jÔ(FüßÿýæÎ+ëØ/¾ø±±±ë4 &OžŒ¯¾úÊÕ%„Bj¼fÍcÐiR/0]CãAoù)€‚J´A—¤àáÜ–cH¹~£º«/Hä*xº]¢o‡`‰Z“jN‡ 6àž{îÁÕ«WñôÓOãüùó ƒÁ`ðº<­V‹9sæ`êÔ©¸ûî»)@"„rÛÑjµðà0ð#ÃQ΃C¢rÁ‘õwÛVµâÀ·Ò¡Qßžˆý6Ç6ý†’’’ê¾¼ èѳ۱Zyu=Xªë×WÛÕ¯_ÁÁÁضmÆ“Ʉ޽{#,,Ìë²,X€‡~Z­Çǘ1cüPcB!¤æŠ‰AϹ÷ £¡,4òÙ¶C€±‰ú§ÂÑ¡õ\ùßQ¤ßL«îËrKv€T>á=Êã*»Þí¢®Õuýúj£äädôîÝo½õL&“Ã6•J%+Ù³Ï>‹¹sçB¡Pà£>²eËðâ‹/âæÍ›þª6!„RãĶhŽÄ×îAF¼cÀ#ù€é|Š.d£$­¦b8Q¨Z„€i¡>Äñ¸¢ÁAˆÖvyéŸÈ¼•QÝ—çu±«·cÐT×[](PªÙ"##ñ / ÿþ˜={¶ÇýÇŽ‹+W®`Ô¨QHNNö¸ÿĉ±}ûvù¢º„r[P«Õhݺ5‚ƒƒa2™`2™Àó¼ßΧP(lYj òòò””DYJ]hÝÝEv¹àˆËåQ¼7 '¾> &Èèèh¨T*(%%¸žzùùùi‰¸ Àõ ƒ9¶2Ì=ÑðßPúÚAV÷eJ¢©†(?_“õ÷º¨.Kuýµ«m:wîŒ_|£GÆ•+W°~ýzYÇõë×Ï=÷²³³mëþúë/—û·k×;vì¨t} !ävÑ AÄÇÇ£  YÙYà›ªÀG+•oMƒ¡As}èø@˜9ð<½É€‚œ|ð<;ï¼çÎCZZõtùâ8:‚  °°f³¹ZêQ˲èûÄ0d·‡Cp¤8¯Ç™w@•. wB7DôŠË²b7;A€Ùl†ÉdBzz:Î;‡ã¯îBäΦhúT"JZ)Ä.z‚}?-šm3kÿ¨‘ÏL Õ0®&¿­‰o_¨«E]½®Ú¢G?~<æÍ›‡³gÏbÅŠ8zô(~ùåYÇK%søøãm¿¢GØ»w¯Ã>ÇÕ˜7B©©6lˆøøxܺu Lb4[€‰ðùyü¥Däqje†Ïó0™LP@®BH½P¤ßLCBB†AjjªÏëàJhh(š5k†ÒÒRäååA„……eY¤¦¦V{„^÷öEîP•cpt¶ÎߎŽÍÛ#~P<lÃnÌf³má85Bdd$.\¸€cGŽ¡p~.â_í‡â¶ k'=Œ@“±¸vòrµ^« j WÉêÊx°ºPÔÕëªÉš4i‚C‡!==&LÀæÍ›Ñ³gO4iÒÄ«rŠ‹‹]võP©TèÙ³§-@R«ÕX¿~=Ö¬Yƒ7Vú!¤® ÄwÜ””‹Eè¸XÏU@ðQêÿ%"l]øŒF#ŒF£ØÕÎÈ aƸ~ý:î¸ãäää ´´Ô/õ±×¸qcáäÉ“ë[µjˆ‹‹ÃÍ›7‘™™é÷ºHQ*•ˆÝÙ\Ypp“Çá—~D„®hÕª4-è´F&“ ,ËÚº1Z¯‰eYüù矸¸ôwļÙ¥ð‚AÅ@;¢)§¯9®nœÌýš°,û_kB¼bÿæs7_Smc½.ûë« êÚõÔdÇaÿþý(((ÀŠ+ š6mŠœ:uJò˜®]»"33Ó¡õçСC0’û«ÕjtëÖ Ãàÿû¦M›£Ñˆ>ø5wÐ)!„T·®]»¢¸¸ê!zV{(ÎçK`Ý/¥ ©¥R –eÀÖ Ìú»õg€J…ÌŒ [°äO¡¡¡ ÅСCÑ´iShµZ9dZ5™LFqq±ËÏ!ºsPo˜§E‚gÄàˆ1i«ÿFdQ0î¸ã‹cŽ,cº¬\õ| Ï󸑔 t †ÀYZ‘â 9XŠüŒÜªº¼Ox|‘Ù*¨©u1¨ê^`Q—®¥¦ÊÉÉÁO?ýäðç#GŽ`Û¶m.5j4ìsôë×óçÏÇþýûѲeKÄÇÇcß¾}~ͼD!u…^¯‡2Vs„zÞè—…½!v¡³v«3›ÍàyÞ!Xµ~÷Ãqœ­ _rr2Š‹‹ÝîÏ0 """ªôyA­V AóeHF«-dëVg]ÊßOëOû…eY„††"::ŒÀÀx$G Ž,s'1uP(jÖ¨ ê¸òoÒÚþP^W‚$«ºðšÔT_|ñ…ËmZ­S¦LqX÷ÐC¡oß¾Ë=sæ †Н¾ú ›6m¢ÀˆB¼`2™À4Pù­õÈl0+äm ŒF£Û ÉJ¥Rù}ŒN§C^^¸l9²Ç0 Ôj5‚ƒƒýZ/{M›6EA“²àH™\Þs‘‘‘¶qïÖûYþžº –¬?†ë{“ Ì)›X¶4ANWe×(GÍ ×H•¨+‰êÊuuëZjŠ¿ÿþÛã>>ø ¦OŸŽ `È!9|ø0BCC‘˜˜è°¾{÷îHIIq9ΉBˆ˜>Ú,˜¡œ³…ú‚‰gÀóŒ-8âyÞ) µý½õs—¿g!uœyÚß>°ò·àèz0©xKð"…<ò/e"¨CíþYï§5`rµXYŸqÔj5êׯ¤‹çÁñBÅV$s0‹€ú '§J®QjAºÕ•–¥ºp Vuáj­V‹Ñ£GãêÕ«xï½÷ P(н{wìÙ³Çë²úôéƒ{ï½;vì@óæÍýP[B©;4 øÔR¿u¯+æ ÐkÄykë‘õ§u"Z©–‚’B[2),,„F£±e«óÄh4ŠI$|ŸÝ•Vm Ž0 ð8޳Ý;ë½´oIr×Bgý[¡Pˆã}͘b³­‹ `ÕU?ÖÊjA"6®R‰×&u!í9µ&ù×€°iÓ&h4|ñÅxûí·1uêT\¾ìÝ< ‰‰‰øõ×_q×]w¡¸¸ãÇw›‚Bˆ˜ÑL8zú´B Ò?þy ¨Î•=Ø>‚ 8IÖ¥ 'ß«d=a#H.½^_¥Á€elÁ‚YìFn0l ާ²^±ÞWk$, †²±F<1†­Y_Wk€ÔµkWôë×Ïïç1ÈËËCff&þùç\¹rÅïçôD«Õ¢]»vhÞ¼9BCC¡Õj}VöþýûqøðáJ—S[ÔëÊ»uå:jšzõêaÍš5ÈËËÃ+¯¼âõñíÛ·Çš5kеkWüþûï¸çž{p×]wÉž„–BngYYYˆ@ê†4oà—sÜhgFhR#cë &õ0o ’ŠJ‹Å±QUЋ#55qqqç[*))±vR“—ûKIV4(„`À2(((@HHˆmœ–ý}µo‰s$ ‚€’’ñx–1P€ ÀˆñyþŸÊÕ õéÓK—.­òófffbóæÍøì³ÏpäÈ‘*;o£F0eÊŒ;;vô[ÆŽ_|Ñ'’Um~P¯­A^yuå:j‚M›6a÷îÝxüñÇÖ«T*„‡‡{œ˜¯gÏž())ÁòåË1wî\@ïÞ½ÝóÐCaÍš5•«8!„Ôû÷ïÇĉ‘ûçŸ0nÍDéÈŸŸCfÄ•N@‹£Z[ ’«Ö“É„äËW¡R©pìØ1Ÿ×¥¼¢¢"ܼy‘‘‘.“B”””Àh4Ú¤‚‚¿×Ë*/==!@ \ÌA B[FâÖ­[ˆŽŽ¶ÕÉš¾ÛJNTZZ ½^ –õaÔ  ¶"1E<ŒUÊq[ŽA Çœ9spèÐ!¬[·QQQ~=_ll,Ö®]‹‹/béÒ¥HLL¬qé 媭ã}jk½Ë«íõ¯‰4 Z·nS§N¡ÿþ÷ÿôÓO1jÔ(äØ &=uê”ÛÉü:uê䓺BHmWPP€_ý]»v…î§bhþ—Sz ô‚Á§Ë…Ä|œm›"¾Ôa ’ý˜™Â’"$%%Ád2¡  @Vf9_ÈÌÌDrr²CPa6›¡×ëQPPžçm]ñ òóó«¤^pýúuž7‹-H ×ñhس9.\¸€ÂÂB‡ûÔWâ IDAT(5ÉúSϱ·O2ŽwIÏóÈÌÌ„J¥Bvv6¢zÅÀP¯¬‹ú„¾J¯QŽÚù”îC“&MB·nÝ0dÈ\½zÕ§e³,‹¹sçâå—_óÊ×1µuÌRmo©Í-z5Ipp0,X€gžyøè£°k×.Ç §~êëׯwø»C‡ÈÌÌDJJŠm}%B¹%%%a 8gΜAÚÂ4s06àÀ«}÷E`ƒ9¡ùjh”Ðpj@ ‹ ‘Ÿ‡ÒÒR0Œ˜½îìÙ³>;¯EEE¸rå ¢¢¢`kiQ(¶Ï £Ñˆììì*ýÜ0 `/Ch§±¥úéÛ%Ÿÿ¤¤$tìØ€c;ûñßÖV£ìú%HŽÍË3H8Š›7o" ™ÙYîÑÞñ ü]è÷ ‚Þºí$ˆ‹‹Ã¶mÛ˜˜è³~žZ­ëׯÇСC}Rž¯Œ5 ›7ovZ߬Y3‡‡¹Š°>¸Oš4 ëÖ­sÚîð­»Ü2ï¼óN :=zô@tt4"""áö8“É„ÌÌLdddàúõë8|ø0¾ÿþ{œ8q©¾€û@£ÿþؽ{·Wõ–«  8{ö,víÚ…mÛ¶É Ôˆ;wú­N·nݲÕé»ï¾Crr²Ç㌟þÙ/u2 ÈÊÊÂÍ›7±wï^ìØ±{÷î­ÐD¡¡¡˜?>æÏŸââb¬^½ÁÁÁxþùçe{Èó^¡P AƒhРÚ·o{ï½K–,ÁñãDZdÉ|ÿý÷ûWW«’N§ƒN§CóæÍ1lØ0,_¾6lÀ’%KpáÂ…*­Kù:ÅÅÅaøðá¶:-^¼/^¬–: ::ÑÑÑèÒ¥ æÎ‹S§NañâÅ’¿;'NÄÓO?íÛ·cöìÙHOOÇ«¯¾êUùùùxçwÜî£T*1cÆ Ì›7 ؾ}»ÇA¹„r;)((ÀÆ«»ÕJäççר.f'?Žž‡š à.•Ø’¥:¡‚\ÃáÇa4Ñ¢E [&»ò_8[[‘bŽkpöìY0 ƒôôtê3ÀȘ•‚­ Ÿîçbܸ’^W+­F¶ ]¼t {÷î |^eY!!!Ðjµ B\\6lèö˜Y³fá­·ÞªÔC2˲X¿~½¬àˆçyÛ7(ééén¿‘¶‘jy.W]ûV’Ú¨[·nX³f |^vçÎñÝwßáÏ#â‘9àäß'¶Ww÷5Žã0yòd >3gÎÄ·ß~[åu(O¡P`Ê”)1b¦M›†ï¾û®º«h×®6mÚ„>øÿú׿dÏ€¾k×.´mÛS¦LAzzÙ”}õz«ÕjÜyçX¹r%‚ƒƒ±k×.œ;wãÆóIù„Bˆ?Fn¿!1¼š¥´šÕ GŸÿÇŽCNN¢££m]í»Ù•””àÆ(**ÇqHKKCVVZ.틜&Œ-8bJxè·¤T¨7ˆ¿ÕÈéÏ#‡ñè<`Éèñññxæ™gðàƒJvEÛ¶mqêÔ© Ÿcîܹ»Õ;wï½÷¶oߎ´´4ïNÀ°¯;ï»ûãoåÓlJ™9s&>øà¨T*¿Ö¥[×n8xð žó0¾üòKÉ}ªsN¥àà`lܸãÇÇÖ­[«¥åcË–-;vl ’àñLJN§ÃôéÓeíéÒ%„††:¬{饗|VŸÏ?ÿ&LÀ¶mÛl­–ï¿ÿ¾ÏÊ'„BüíøÞ?ÑëŽ0äO † à®èquÍ_¶í—/_Fjj*7nŒ   [Ãó¼mÌmQQnݺ½^Èù< êFñ(ŠŸ¯tŸäàúù›Õr}žÈª2yÈçcð |œK:‡9ÌÁ7°hÑ"É}b›ÇâÔéŠH±1±X¸p¡Ëí¥¥¥˜;w.>þøcÙßv;`ì~Zo‹u]- ’¬¤¥… bñâÅUVµZÏ?ûª>ùäÉ÷8c}/V–e±víZtéҥںەDz,Ö­[‡Î;W[w;)Ó¦MáC‡°råÊê® 6lØ€#GŽ`Ïž=8~üxuW‡Bñš 8½öšGÞ S\R^þ™Rö)))Á… À²,‚‚‚ T*ˆã†‹‹‹Z†2“Ò {Ù€ —À^ÓãÖÖó5vOlApŒØ:ÂeÑ€o¼óî;˜;w.‚‚‚œ¶E„»üïÎÂ… (¹-##£ÇŒ.›Ÿ¨2—d 1˜¬¡o.9¬Ò”)S<GøùçŸqùòeܺuËm©V«…„„ 8Pòµ¶žÿÃ?ÄåË—±oß>» žëþâ‹/"++ËóŽnÔ«WíڵðaÜZ5q<ÛâÅ‹1eÊYå-X°@2†7ÿª_¿¾Û:ét:,^¼S§N•UÞsÏ=WéÔ©jµ5€Ð¥KÉ}^yå¬[·EEEË+((ðÛ¼D[¶lÁ¤I“Ö) Lœ8[·n¥qH„Bj…œì\ÿÄ!ã‚ë–žçe' *HΟ†PhBiIíÿ<ìÉ)8Á×Ëüùó)_®ÿJà´JÓ(N¥8¥Âçç>uê”ä¹§>0µBå5iÚDÐëõ’e áî~w{.‡ó°(8Sr§V\ Rà–û#óxŽÆŽ+YǦM›Ê:^Î2uêTÉs„‡‡KîߤI¡  @òA„'NÇ”J¥À²¬×‹F£zè!!99Ùå9®_¿.hµZÉã  yLLlŒÀpLÙÂÊ\ç%$$DX¹r¥äyL&“ã°ÿ Aƒ\¾ŽRå3 #@ Ée/ÁÁÁªU«\Ö©iÓ¦û=WE—I“& ;w”J¥ðàƒ 999‚Á`‚‚‚ª½n´ÐB -´ÐâÍR‘gˆ¼ô„ 5w¢X–[‘XTi'9錥L¸o$·½òÊ+8pà€çB˜r‹;,Ä{TÅ÷Ç^xáhµZÉmo¿ý6ñã?V8G~ii)>ýôS$$$¸Ì–Ó¸qc<öØc^•˰n&žeÊý,¿­Ü’ŸŸG}T²‹Çq2dˆWu“¬’—åæççãá‡ƪU«$ë4xðàJש"vî܉!C†H¶Ä >¼j$múôé¸páV¯^ŒŒ ´oß^Vë!„R“µ¸§REÕÜÉ:É$ù.  D\\œÓúâââ g€1b„äúôôt¬xoE…Êô0Yï‹õÞÔÂ@©yóæx衇$·-\¸ ,ðYv“’’Lš4 Ÿ}ö™äöyóæA§ÓyY*†‘øg$”û)•+`€çžN²Û^ß¾}½¬—kÞI€x_²³³Öß}÷Ý>ª‘÷Nž<‰O?ýÔi}ïÞ½]~QQU&OžŒåË—ã±Çþ}û€;w"))©ZëE!„yjv€Ä1€‚[JëÊÊ{ò‰'¡V«ÖoøfŠ‹‹½.O©T¢k×®’ÛV®\Y¡2]³ †»¤Zbjuë >{Û·oÇo¼ ¬åÃú`ïí¾=AðØcáØ±cNÛÂÃÃ1qâD/Jcì^Ký¬ ¸N'†ó6‰ ©  Û¿ßîtxÓ¦M½¨—Œš{Ñš”ŸŸï4o”?êä­mÛ¶9­ ô˜ÎßßFމëׯãž{îÁŒ3(0"„Bj™ âƒ$ŸuµS©ThÛ¶-Þ}÷]ÉI!³³³+œA­ylsh4Ém?üøC…Êôȱö$¤[*ätÝ«ª «Ü9ƌ㴋ÉdÂüùó!@pº.Ær­ [ñÊêõzÌŸ?_rÛØ±c½/ÐîÞÙ©€Èª|oØre9sÆéððpùÝ/½ 7P:}ú´tªÑùóç%×Ww½¦M›†+V8´ºýõ×_nŽ „R«)X€¸8Q\þÜÕ ºkE*Á‹,vUØDaß-‰³´ÿý´Zo»?‰‚4DEE¹Üž‘‘Q£G#%å&*r1±±’ësrrð×_'*T¦,Önˆ¶®v@¥3Úù¢ªî‚0»ŸQQQhÙ²¥Ónß}÷.\¼à|\ùâX»Tá^^ö¾}ûð矢[·nëï¼óN( ùiØ]d#tHc.U7ûk*·]jÂ`ŽãüšÒÝÓüT.ëT %×»ÊXXU ƒÓ:eÌ#„ZIÁÆYÀgç™ûÄu àÖÀ×€‰¿x_fhðÇh þ@£f´þçü…£ßÌ@‹õâï£b€7º½jΜ>!çu³j1ïæAªª1ZÄß`lãš5k†àŸž¦¸¸_¯_%K–àæÍŠOT%• nÞ¼éŸmÄ@ˆaË‚$Æ>ª,¿³÷:vì–­XclŒtÀXžÔ80ÀûV7†gyf/ÿzøá§I§Ó¡aƸvíšWupW7+‡÷‚DË‘Utt´S9™Y™ŽûÊm ôòåw59®T·µÌÌL§uUÉÕ¿»üüü*®‰3½^_±¹Î!äv‘o:‡,`àáMËòREK*0“÷ˆ¿kÀcm½ ¬C¼xŽpI£rÄÉQñJ"Y ¼g™cóµ®@z ðÍeà×À/)@˜Zì-5}PhvÞ „«XvR HB€oŠû*X`ÑQ`ßMçu[¯V¾þîxzÝì_‡ZÌ»y|Ýâ®ãl¼ ,94Ðû†?]btâƒú¸]€š¾ê/¶\¼ÜˆÕûF¿¥/q]ÖÞáÀž›@\00cVÁqãpn Võ€–/{×$[‰Ëã€n[%+žsøà|ð\Gàßíÿ[b²õbëÌï#-WÅV©²gÿËÕ)±±ÎëüÍÓë¦S–½]#€5}nߊàѱÀ}»SΉŸjš: €Y°L 1QƒbÆôéøûäI VñôÀƒQr½B¡7&È›pî‚hM÷-KÍÉæàjRÞ´ô4¯ÊqºM –eÊü•oU±üíê<‘²†mU„§1? @=œÖÿvà7Çî‚OãÎd^œµžƒ rji\˜UEj¼XjjjÕ|1A!¤òÖ_hœ±›è¼u(0¯Ð{Ðe 0´ 0°‘¸-6X 8Æì.å£cËýÏqàJp÷v18rWVËà¿§€¡?V<8Ä.vñß1_Ãv_öƒ‚«@–è n ü•dY¦©¸\ G€ØEí.K’ÇÛ¿vÜ4ÑÍuÀñL`L,ðz7 g”ØR#µ®*¸{Ýìɶ%¯vÞî¬=_+‚# &H¶nv‚% ÿìu:6~ó  P¡ã]u鉈Œ¬LµÜ³’8F\Ê%4 ÁvPÕR©TNëL&“ǹbä^’-ûu¿räååI§V©äDNáb7©@©uëÖX»v­d9»vírŸøÁÊMò‡ŠLmÚ´q_§jÒµkWL˜0Áiý?þX µ!„R!Ç2„zÀ¤⃴½Þ €ï¯y@oÊûXˆ‹ybàçrÅ–$wÜ•u)HÊõíuý–&v‘kdûñ9qLÔÌÖÀ'v™M•¬óÁN¿í@ßíâ=RsbKQ·o³¹À[Ýù¤×Uw¯[yÿ9 j t Þ:Y5õóïÆ ÙñÅØ·Ïy¼ ¶"™@!`ì¬ àÌ # ÊæÅad>Ø#¡MÜ?á~$$$8mW*•ødÍ´»£= $úÀº©ìµëÒݱš4nŒ€€ÉAÛ•bÉÖì~ÖŒv•é;ëÇ TJFf†Ó:…Bàà`—AgEjhë~gù›0Âê×—ÜÿÖ-çz¹¬ ÃXƃ‰?nß+å73 ƒ˜˜Lž<sçÎEHˆó8»;wJf¶óÈÍ8'·ã” 66“'MƼyóìTôŽ;pîÜ9ïëäƒ ºuë$ÓûšãŠBH õã5±¤û·@;éÏe'F»ùyˆão*ªÄãE»„‹½Ÿ¬-Rß^þ“(A“íP4ÓŠÁÛoiÀ´–À¯©@=•Øúeà¨@1X€ÆA@F©Ø “o»¶I­«*r_·05 Uˆ×®æ€¢Ú1>×»1HUÍ$1À¾#¿(äÅ蟇ËQû±ößÒ»õ[¼þæxyáËxé…ŽkÔ°¦?0 ïÿï‰B]WóÒåK0™Lb—:;AAAèÙ³'öíßçéJÉi%`Ë^Ç1+8?Wз[¿-{õ²¼¦M›JvÉ*/#C:iܨ1Îä—¾ÛXË{¢Q£F’ÛoÝJ—YãðÛ¡C‡&?Å4Ã0 “ @¬Ìf³wéç˵9rõêÕóy-Z$¿NåLŸ>]²õÐëüFýû÷Gbb¢ä>?ÿü3~ûí7Ém„Bj¨Õ瀔"àb¾ãƒöoib‹È’c@©˜ØBì.'G¡Ñq/ÐK/½„?üé<&N¦wÞyõ]´ÞUTff&fÏžíÓ2 !„T«ÒÙæ’rå‡F‹Ÿ7ë/‰ßHÏ;é Ô,&8u°ëðÌ¡Š—%‡‰˜U®·³ Ð#RLP`Ï,³uÞÿÞŸ¤Ë)Ÿ¡îd–ÿ³Ö¹âêu³7³µØÚ÷ÕEñ9õà( C1)F ';@²¥Q¶>$WEo,Þ²X£m¨ÀÈf ,µµ å6ÛKŸ~þ™d€ÔáŽAÖä™övîÞ% =4óA¼þÆë¾I‰\¾[”õz8ˆ÷†e<ß“Jß®ébi &,‡^¼|ÉגѬi3‡ÝFމ•}hw.ïOå±* ƒ‘#G:­ÿûï“(.–9H“±ÿÅ÷•\±bÞ|ã”VXþÎr¼õö[Ž™îìǾUƒ¬¬,Ü{ク~]:à&„RØx ô3çõ[¯:>ð¯:+.öÒŠŽ›Ëþ^i÷n?÷NùÀCNYþPø~¨ØÍî‚ôØçZCÎë–k({>M@|–ï¾µ *é^uÚôËœ>îÏh‡dù“c,-Iv­%î¸IVpùÊ%ÉCêÕ«NÁApñ?WåmܼQ²<­V‹%ºóù„õå`1H☲.wþfMg=Ÿ¬DÖcËö“è?pà@Ç`Sn¹^>|8Ú¶më´þ§Ÿ\|k#ÅõÄôð3fLÇÜgŸOãE°îÍËàm¦M›†yóæ9µÊzûe‚/íÝ»ݺuÑ#>î*áFëÖ­Ñ¥K—ó0Y1 ƒ.]º cÇŽNÛš4i‚„„HÛ¢E ´lÙÒ©ÛnçÎÑ¥K§¥]»v.»-vìØ­Zµ’ÜÖªU+ÉúBñ‘39@ó¯ËRq[UEpF*¬æf±³²u³ƒXÛFÌy¯°<VðÙÌÕÃÑhÏó’Û1H´_¬Nœ8C’<æ‰Ç[+|ùôj?ÖÄ2™.8”ŽUúÌZñ ûn›ó,Ó Ã`ÙÛËÅù©|s‡ã´Z-^ýu§]xžÇ×_¯/Ë~çéÁ߇¯'Ïó8zô^xaZµj‰/¾øÂ¡|†e¼>_e«e6›qäÈ<ÿüóˆk‡/¾üÂõ¹ÜÝ+?Dm&“ cÆŒAÿþýqùòeß,CŸ>}pôèQ|ôÑGn÷{àpôèQ<øàƒNÛæÍ›‡Ó§O#;;3fÌpÚ¾bÅ œ?7oÞÄСCmë<ˆ£G:-ÿüórssñ¬%¨¶·ÿ~¬\¹R²Ž+W®Äþýû=\1!„r{ñ"‹ž¸ÝiÝfíbgXÆ!© ”×™=”ã°{»×@ú­t¯ZÊì÷]úÆëؾu›Ó> ÃàóO>ä©“±ãç–•å ’}JÇc¬ã8FÌâÂÚENR÷ÅÕ½’z€õbbRÛ¡#;³ ü¼cNœ8áô-vŸ>}ðÚ«¯áùÏ»=¯·8‡×¬AëÖñNÛ¶nÝŠsç›ß=J Ær£ž{~>Õ²ëb2™™™‰ŒŒL\¸pYYYn÷—šÀÕ“¹sçz5á¯ÉdBFF233‘””„ìlóHÜY¯;üûÙ;¶v¸¹N‡W_}Õé žzê)ìܹS~—HY³f fÍš… &àÃ?ľ}ûœö Æo¼ôôt,\¸ÐiûîÝ»a00eʬ\¹¿üò‹CÁM›6áÒ¥K˜9s&Ö®]‹fÍš¡¤¤Ë–-sjU–e1yòd¼ýöÛØ½{7Nž¬=©T !„Úª'«R¾^æ=?_òåW_–í§V¬N!°Ñj× ì:ñg´Z`µ–í’ås.—~ƒú ¥¥¥’çÞ¹k§Ûc].â²k÷.ÉrAL&“ðòâ—… ­À©î—7‹J!pj…À\´ZàZ \k­À5Ñ\h€Àº.cìøq’ukÓÌý9í¥ÝbY§°[˜ö€ä9Â#ÃNÉÙ…e3f´Ë{¶jÕGB FmÛ·2KXx}á§Ÿ~’<ÏóB§N…‚sZ (yLlÛ8 V œF!pœÀql•-ƒ’¬S³fM–eÄ…ñna*³°Œ0dÈÉ:5jÜHÏ ¤—1cÆ&“I²ìÝ»w .õ×’˜˜(˜Ífáï¿ÿ …Óö·ÞzKA˜6mšÛr¦OŸ.‚ Œ7Nrû’%KA„N:y¬Ó¬Y³$Ï™——'ìÙ³Gò˜={öyyyU~ÿh¡…Zh¡¥š–ž¡æw±ÄV$“ .,Ä1H–ñH.¿´v(ß:o½þ~þa‡Ëþú?îðb ŠÄéæ<öˆË H9ŽÃ’EKpæŸÓxꉧã±<·]“xA¼7€x_(‡äOåê%÷l®Zb¾ÿá{üðÃ’ÛfÏ~'þ:1£ÇH~s.‡F£Á#<ŠÓ§Î8tW²·fÍÇøçŸÊUòZ9]ý]ݼìÖV©ê •9Ø®ïûo¿ý>ú¨dËÙ€°mÛ6Êo¹ó…£GbõêÕhß¾=}ôQ‡m­[·ÆÓO?`Ý:÷ÙÓÓÅ”òaaa^mŒŒDóæÍmK›6m0|øpÀ©S§ö*t†B¹Ux¢XêÖ­;V~`—ÅŒ8¾&€b& ½%hr1d(0Pð°pÔ¯†˜˜fˆŒˆt{ÞÒÒRlÞ²å/6ºA4ž~R hþ9} ÿ}ÿ¿.'2½š|3g?ˆMë7‚e¥ãϦMšâeËñβ帚|))7‘‘q &““g1!b ÈAìnhðõ×_á»­Îc{lÇU#[71»'jf>4þñ'bbbŽiÕª5¾ùf#rrr°û—ݸté"ÒÓo¡´´Ôåy´Z-5lˆV­Z£_¿~n O:…yóæÚâJ§Çp÷ŒáÜè5ÙŒ«Ë©TücýÎÆÝ \±ì¿úãÕˆŒŒÄ«¯¾ê´ËÀ±uëVŒ5Êí{Â×^xáŒ7K–,Áúõëmóz­X±,ËâñÇ÷yb›=zàË/¿DóæÍ¶ñ<×^{ ÇwXŸššŠØØXp³Ùìt!„BÕÈyZÄÅ¡E\ÎlñÁÊÿ!%5Åá!®q£Æ8úÇŸˆŒ7Ó¦NC·žÝ‘››+YÎwÛ¶áÉ=…ÿ[ñ_—A’UL³Ä4‹ñÕ%þ:~ßÁE€äJEÑWâÙÏq¼Š€œœÜwÿ}øé‡.çí©÷4pÎ IDATW¯î_ÅO*áÒ¥‹5j$ŠŠŠìêf­• À²ŒC°Wc9Þî*=Ü:ŽKp5w™Ì÷ÝkK_CTTž|òI§mƒÆ·ß~‹1cÆTY” `õêÕXºt)fÏž‘#GbèСX±b…s‹¤|üñÇP«Õ˜:uª­u ÇŽ]¸p)))NÇlß¾óæÍCRR®\¹â°­cÇŽÐh4صk–.]н{÷ú¼Î„BHmS½-H5èÛ÷ŸÄ^{Åiý Ï-°GVqÍ›ãßÿz//Yä\åp媛—‡Õ~ÆG‘ÉeìøóÙÝ>‰`¥Î#–râÄ ôìÝß}»mÚ$T²ržýñÇ?~,nݺå¦VžzqZ3Þ‰-a‚›n‡R ^4îÈ"«+•då¼8‡÷‡ˆÇÙÏ£æéÜ..ãé=L“˜ÈxèСغu+F]eAÒ'Ÿ|‚Y³fáÁÄ矎wÞy©©©X´Hâ¿ •¤R©Ð¦M¼ÿþûøòË/e÷òË/C¯×cøðáèÔ©“×6:Ç¡K—.>Ÿ¼—B©­jÇ$?;áF¢B§1ññÎÙΠm‚‹x»c׳=ûöÂ_'Nø§â®°vãäŒeò9ç‘câ°0¸zõ úöë‹Ï>ûÔmºõÊÐëõX¶üm <Àep$‹ýP–qËMjÚ(Àõ-«èËU¡¹‰*P‰Š¼µd×ÍÅÐJA0ûáÙØ¹s§äaC† Á¦M›\Î/äk<ÏÛºÒíØ±qqq˜;w®Ë.¸ž„„„@«ÕJnS©T`Yõë×—œ ɺèt:@xx8PZZŠ… ¢S§NGýúõmËPPP€úõëcófšƒB¼ <>ܺXj0A°þ›õèÖ»;n¤ÜÜçêÕ«’ë/Éœ{åŸS§Ðã®;ñÔ¿ŸFjZjE«êò&ÒµWƒ^ÇÜÜ\<üÈÃèѳ;~Ùó‹ÏÆq˜ÍflÚ´wth^X½^/}}r¯ÝÅ¿¯æO²[ÊP@ån}¥%_UÂÕi*š4@ ÆçrrØaƉA’* J޻ǎÃêÕ«„}ûöá믿®pY¿üò vìØávŸ©S§JÎ…d]Á²,’’’°fÍš ×…B¹]ù R ’²²³°s×N,{w9Nüí~¾e+–aâ„û²ÞeçdcÅÿ½'»«’ÉdÂþk>ý£GŽÆýãïCß>}RÉ+qećw_ŽÇ–„âï—öĉ¸çÞ¡ˆ‹‹Ãˆá#Ñ»wo´‰GDD¤Ë‰~­xžGnn.RRRpöìüzàWlß¶ÍuZ‘‹)@Ùõ—³¼ðÊõa“êÒæUì[ù“<ÕÉ\v¹“¡°°ÆÃ_ uëÖNÛGŒo6|ƒ ÷O€Á`ðoWSÏ=÷ŠŠŠðþûï{uM—/_Æ›o¾‰–VæeË–‰õµ8~ü8Þ|óM\½zz½o¾ù¦Ç2¯]»žç±hÑ"ã ¾þúk8p@v} !„ÛÜ笞¬Fñ»¯O~G»öèÞ­»üFLñÄZNü½” L@ /N(ëâÙÄ`0 +;ÉÉWqêÌi¯bîh×óþ=ÍšÆàô™ÓxcÙ›HNN–w°‹Óp'&£hÑááP*•²ëãX¨Yñ~0€IÀ‘ßãÄ¡ã`ŒÎ÷#((Q‘ÎÙü®]¿.fÑ«ÀXA\©Õjá´rr²s·9»óÉ}3Ч‘YQŸ>3¶lŠ‚š…À1`ŒøX¿-öªkMù‡ëH¡ R è€2Œ@–(ÄÔêxhª®5Ž´,„pbÚó,#mƒG»ûáu·&×ä‹$‡2*KZæfW÷t~KZuAÅj 0L)éà¨|0SEJù¬Úö»ú:õ´·¯›«ÝeÕ‹$B!„Tœ¬©Â]ì\=ÌxZ_©‡3`x‚Þ èÅVFÍ(d=/³[™žªÊ!³»ïYæ²ÞW#Î¥°ëfÇX÷,«-XrWG‰nuNë=m“¨®Ë]+q ®v<™Ç—ÈšlÁEV5Ûi”ñ²O†!8bwïÅÿ«L·2©:9qÑýѾz>­ƒ‡zx³»Ç®€5°».!„BêÙ’Ó\/¾xX©À3šÀó€‘'‰5  T, 0f ‡–+gÞVÞE~f»øíξy@€ ™,+•v’uÄ¿Pþ@Hß¹ÁRù?½Máé\Þg BÊ7›Ø¢ÇU»õ¹¸Æ –1^ŒÝ$Æîÿ‰"À–œ-7>É/ÁЇ·,Ã0–~Šâ=õõs³»Ï8B!„/TïD± ˆcô<`äÅñHVüYh ¼øp%Ñjâpj¯º›•Û×e0äfpˆ/9%°´"1°´ YÆj•kAr8P¢EOV°ämë‘Ürär×2!7®D&0°$Á(Äò”ïêÒ$«bÉ4g›åÛUæý##@aàØjãó·«—ÝáÜINïùJ׎B!D’o'Š­ª‡3Ä©TxAl1 b5è˜  n¸ú†ºrmºkfqØÑ{.n@¼f˽`­+ŽO2¹“Ÿ–kË“œ*{º].Ê©pãšÝ’]áì÷ñ8¦Èn?9ã’,-F k ”<d^¼ÔÖÉ;¡ìkëi× æÕ»GÎ5ÙÎÅXbmÁÝn•#3h³ž[²%‰ºÙB!ÄÏ|Û‚TU/‚@oL ±‹] h8 Ø’Í®‚uqÛâäM àr_Oórü…õ¡Ó,¼¥eCÉŠAÇÈ ÊKå[•8&רtpS‰'oÉ®}®Z±|ä•y ñÞ øöÎ<Î’ª¼ûßSu·Þgߘf`v@Addqyc”W‘hÔ,*¢ ¢†¨M^(&$‘¸!š¸ Á$EöfŸžé™^ï­:ïÏ9U§êÖ]º§{¨Ôô½Ug¯ºUçW¿çyN´vQÓ¼ã15Sž÷Ä_'ÅB± QqIÉ”5mþNb%M5-ã7«H9räÈ‘#GŽ)À®5±ÛÔ(mc!àC‡ÝØÄÅ&q•~“©4'XAC42çkÒ뇘‰uQAY™@ ª9aL›2³ÓF‹T oKWß°ˆæ',ËŠ±yym¤qü–Òå§O§VÄäÈ'b(Ý€Àdµf¾BŽsS¤(e‰“m¨&æ®ÙÝ”s’,̶D=·¯Ë‘#GŽ9rL5&×ÄngA¼ËÅÌn8Ó²²'á®;¼xßdÕ•µ;‹0™7Ým>hªîC}ÁVA B!8ELÐ %~Ha“v4SY²8`#Ÿ¥fh1ko¤Meªy­fì©þ´ä…éN[͇”ÂiPr ªú¬Yź2ÉSCEÇrHåͪB&yQª»ÎÏ“FSšS“S…×Ð46GŽ9räÈ‘c²°g$IQ‘ª:@ 6XCÍ(';Š6û­Yjô9õF~\hW°E‡ˆ¢¡µ˜Ø•™RMœuRuµšýÖ‰[ŽÏR«²³Êo1,Ê&H´¥Þ'¥¡¦phÉ8Ô¦ÙrþjϘ.z*òsS*•0«o­ü¯ ߊ”,›Í°3eì욥Œú&¤%ú«IͪTÚÉFnÙÊüŸ$m¹ž”#GŽ9rä˜lŒÃÄng2¤v¦+„ Ú€ Kl †6ì˜Òe7¨?s.nT³Ì…€I)~×öyIÎgLÁ¬:Ó†V·¿ón-ß<ÄÄ®Q ¬úÚt²x¦²ÄÉâ)E¨[D ±õµ)À5½:¢óÔ<ôö„«fHËa)Ò¦ _©I­;GŽ9räÈñŠÆnª µYYHlfh¨Èâ±tú°=„@Ÿ$MU?u½ÉXK?¦FÈ2 Ó† …€§E=*)1³k¯}ue7R2³ëH=K/B«¢œrÛçF“ü ÒK*xmÉ(Hbz \Iél%ªãhÔïq'ÏrÓÞ$%ž!&㼜&Éë_2ä$)GŽ9räÈ1™ØM¤&H›—ˆ‚4€6‹ÆöúÐïÁ°1³kÓפÁŽ63ÎlMf£ã„`g…–è~ æuFEòŒ’¦L[™¤µR²&ÙN^c•R•êŠl³ü–hÐvkÞ‹Kºqú¬æDæuJÌëüÔp:3óº~Ùý ˆY‚8ÕS‹ë7öOŠpêÔf’†6ØP3’ã%iÕΩV•r’”#GŽ9rä˜Lìy RzRjñ7 %hC—'þHÝ>l› ™Ý„“B»¤¬…Z“˜ç7"8–€ ĨìÇI¥‰¢Êü˜nS3zæD£n7®ÐN`=Û‡Ô¬9*ƺ²„ tœ*ëIQƒ Â4Bв@¬ÊW¬Á˜¹m¯kG£²´1jA3ûé$ŠürlYv ’»²‹hA˜žf—œ´¸<Ç­*¹êQV;䳞$Ùz¦š åÈ‘#GŽ9^^Øó¤4B„ ¬¡Ç—pßݨP wlf4ѼíŒW–’Ô4y½yQdvd}ª¡ŒIA‰šVTñš=Y¾ýYýkEà²ÌÒܼ®}Z*bïö#Ñ/§ª6T¬¹j’Ô¦oU^t,ÕFÁNûˆÙ¢Ã>ÁRú¦Ä&Mø¥#ÙϨÈÄp*CÂÌrÝÀ-¤6Û¢‰Ï_BMj·/“Ä 3ÚŸUPVĽq oŽ9räÈ‘#°'*Hu0Ä`$_$]Ec§`s†”(+SItœ¦ìPÙãÌG‹Ø‡ô5ÔBJ^ì‡Ô(PC£þ5cY³ÎFyê”U7SM˜á¥•¥&ã)/Ný-OW#å*u\»u["ë)”¯ ’[F£º#õ&ÝïŒ4umlE4Ò‚œÆ¬D¼Èl]CêËkHXÆ¡ 1¢Ô¼î °•2«ëÕ¤ÉräÈ‘#GŽ92±ç+H „`ĨH£zM¸ïn¶&º[›S¢™9íègæ–"€¨Dc!ªffÁ%³pnQ‰™u j§ìŒ¹iK4#[M‰–™X;Ü–‘èÜc-êÏRt õ(‘ÇrP´‡%•j~³ÁJ·©ÉLã$Ðnâ W”Å!A Î&,MˆKÃ˰M²¤”"L”6%£¨n3¦Ñç6"›»dªZYõäÈ‘#GŽ9r¤ðò Hn4»á@Ô£nú|ØìI(ðQ·"ìNýlõ¶<ý]è1ÓߨŠ/ ÇzÁø&™ãiC«q‡¹•LŠ#ƒ±” U“IwVùM[æ¡FÊW4QW¨‚BÛÈ€mÏlK+•®QGåÊ´ZT)ÄtYJÆP)…ú*3ëÍPÖ’¥&çÝúšÕ¥6ò*Ú2P—L6‹ÂØ üfjRN’räÈ‘#GŽYx˜Ø„Z5 êºÃ‡¾tWaP 9h— L6Æ3 KOÒÓy[•UÓâ“¥5”=tEI ÊSδѨÊO#¥c"eee[­©åu%óA92ˆX+¿•ºt–€¸J"Š^‡øNT§XØ$ZÚ¥t…1gò¯SÇÓító'.‘Œ¾drÏCë0jSº‹uæ} ê³éªÿyD}%SˆœÈäÈ‘#Gޝ@¼îvIµãPv±´Òl†¤ß›Q ÛŒ™]§‚ÔãÖÆv;¢}1Ѽ6˜¢¨$PCÉLîkq%uáófè9åm’ªfE'&ä©Ðժζ¤ŽN3ˆúm‘‘ ¢¤<%þ\³ß°ª(̶ýœ2i«S™t}[R]jl Ù†j×HYŠ|“ KNmÐÎߺév¥Ó¬oFƒvÙóذ٩ˆb(P¡6/8ÚTUÑDEÎ XŽ9räȱ›ág+wYÕ{Ž‚ÔÎd½ 1µ›nB}O+ÀÆ { w0¢Ýx0Þz&ƒFÉ(HE%>HÆ‚X=H¯µT7CO—ÝÄ餙ŸÕek¤.é˜ü¤U¥Ìª5my•šŒ' pê¶i”z˜5D‰‹-Àt’H˜öé4Y˨7Ñ„aË:ÖÒ¼Î9ž•OŽyq¤» òSG–²úÕ~²U<©SLÝ•–Å<’~b †r<ˆÖnÊðGltÕäÄ)GŽ9räxåÁk;¥Ú5[¥RañÂEì³d)ÝÝÝÓjd‘Ôá! 6š]]h‚혦jL²úàÖi R™h–=¨ø&PCF~d"ŸöÓHð%eÊr·ŒÁQ:N:®1l”Þùî–©Í Ó“Ì5¹Y}n3ò£@ùJˆ¦¯œ_Ž´#Ño[R$¨œ-ÇùžÈÒlœœ¼QUýÖ0Ÿ“W™ŠÔÎTSÓC•Øá`¬F[Õnµú­èÄ4Új!áhˆÐÃáhHX åX([¸Ûß\~9ZÎ\Ëm<¸ð Y²dÉ8sÁ}÷ÝÇŠ+ÆoG±dÉ.¼ðÂ))ûòË/Ÿ’r§ 't'tÒ¤—;•clðdM¤ W¤“Ž=sN‹,¤T,5m_¬Ý°ŽŸÞó3¾ÿŸ? V«5ïPÎ-MЊ˜e™¦Ù13æ„e]¾˜ÙùJ¦ºÂ³ÛbÍÙ\bÛ´IM¥]ÿQed©#AYå;»"Û»&L!M,áÈ"RNÅÊe/ ðªaA¡,7O™%žî„k§¨%îæsLÊtªÍ‰èùê†Á«"/Ö’´Ö¨,?¡ÌÒ@¹\æ–[ná+_ù \p¾ï³råʉý6^¸í¶Û&¥œB¡yŽ9räÈ1 h_A²ŽéA«|æxOw7]ý–.ZÂý¿}€/ÞpO<ý{:;:™ÖÛÇÆÍ›˜Ö×Çû/øSÎ>õ,núÂW¸è’?åÙÕÏÅåÔ@ èm5TU 9è3*ÒÖªA¢ê¼ïbÞzö[ÆÕÅ{-â˜ÃâÔNáŸø0cÕF«°6€ŠþɆ®ûФœ Ô´¤ ÒÐ鉒”aU_NkÊ…ÞöT–ø7·a·¬æN-ªA²…ÅieÅÔ(]‰©‹pç’ñu´¯Ð¾'¦v–\¨äéŒÜŽìXëdY®:•àpiÞš jN›µßž–,BcÓ§Ž%’=6ðŠòÖ›b.Z´ˆéÓ§sã72:: ÀO~ò“DºÙ³góéOšãŽ;Žááanºé&n¸á–/_Î5×\òe˸÷Þ{Ù°a›7oæ3Ÿù «W¯fåÊ•¬_¿€O}êS rå•W¶,û¡‡â†nà oxÓ¦Mã¾ûîc``€3Î8ƒÏþóQ;;;yüñÇ9ûì³y衇¸æškx÷»ßÍܹsùæ7¿É7ÞÈßýÝßqØa‡ñ‹_ü‚÷½ï} bñÇüÇ|ìccíÚµ|á _àöÛoo؆K.¹$"3÷Ýwï~÷»yÛÛÞÆìÙ³ùú׿NµZ媫®â¶ÛncÉ’%\y啬X±‚õë×g–}ÞyçQ©T8á„È‘#GŽ9rìÚ÷Aê0íJj+›ÉwÑÿŒ‚›!Ù‰¤õ}i´ù²}⃗²tÑnÿ¯ðþÿ%ÃcÃü¿Ï~‰»¿ýcnÿ‡osÏwÊ_^ôg|áÆkùâ×ÑÛÓË>ñ9ŠÅb]QòÝÌ:O}íÉã&G.Ž:ìHÞóÎ?Žën¶Q>ÕdkPOˆ!HZL‹VArŒmQy£:0þJÖ¨a»ô9u\eö±A¿ù^¥Êké«dÓ4j¯McwÙýö:-ªhĤÐ%!©þ»§3Þ—LuÝ›9AÂÜqMµ;Ñ•¬/ÿ©+ÒSËLt0ÆêÕ«Y»v-×]w't}}}Éê”âæ›oæÅ_䨣ŽâÍo~3\p§žz*¾ïsóÍ7sÇwpÐAqÓM7ñ–·´ÿ›lV¶ÅGÁyçlj'žÈ~ûíÙÒÿèG?bÅŠ¬X±‚ã?ž5kÖð­o}+ÊwÖYgqÎ9çpÊ)§ðö·¿¯~õ«\vÙe¬X±‚éÓ§G¶ó¾ïóo|ƒçž{޳Î:‹|ä#\}õÕrÈ! ÛpÎ9çÔõåÒK/eÆ \xá…sÌ1ÜvÛmQÙ÷ß?‡zhfÙ¯~õ«9ûì³9ñÄÛ·9räÈ‘#Gc´O–uÂÒ ìS%Ø»‹Ê°° J0¿óŠ0§³Š0³3ŠMnZzLT¹NãÓ‘$Y+V¬àäãNâѧç³7|¯ìsÝåWsÌáGñ³_ÿœëþáïùÝïãõ'Î%ïù·Þþ-îøéY²poÞtæ¹1Ù!C„ü4ty0Ãs»¢Ìú´Ö¼ñŒs3»º©3÷>ø›¶†å¼ÓÏi˯ª-5®-M,v©ªÁ3cÜaˆk³2¦&݇iÒg¥@y ˆI:R‘šQׯ¬ÏuA#T}Xu%Þ§IÖŸE¦”¬ƒ¤"ò¯Ãèè(/¼ð7ß|3gŸ}6‡v}}}\ýõAÀÝwßÍÏþóúŽ4@³²-¾öµ¯Q­V©V«ü÷ÿ7³fÍJ‘âK_ú¿ùÍo¸å–[¢ý_þò—Ù¼y3Ï=÷÷Þ{/÷Üs>ú(ƒƒƒÜqÇI9ôÐC™3g?ýéO©ÕjÜ{ï½Ü~ûí¼ùÍon؆C=´­þÙ²¯¹æªÕjfÙ7Ýtccc ÄÍ‘#GŽ9rŒí›ØÙ-ŠD€ü ‘‰xÔBùèdš@;iœïÚ)Ãü=ç,y£úÕ~ÚLÅÁ‹ X.ò›Gà£×ÿ :Ðüä¡»¹ýÚåèÃWB§Çÿ»íÎ<étÎ9ýl¾õãïÅæ?¾eÐ…Þ‚¶é5ØR“¶„b*—…ÁáAþü“äMgœÇ.ú3º:»Ë´Þ>úúzÙ2°µþàdÎWÚ-ËÓšþ×4(-*_§e†Ì9ÊB#¢“8PŸ×%I6wÃæ6¨#s·3y,Йñ¹zí¤Mµ3MfdºPÊ1Y³¯ L4DeŒëL¥†Ϫ#úèø'EfŒf¿±îK$‹¾¤I’[°ÎÿF§·ÎÒP™RÚPåYVŸny/¼ðûØÇ˜;w.×^{-W_}5oûÛY¸p!år™»îº+J_,yä‘G˜;w.k×®% ÃDYí¢YÙýýýÑç‘‘Qœ\|ñÅÌ™3‡?ýÓ?Mìß°aCôyxx82ñ³ß»ºº¢þ®Y³&чիW³ÿþû7lÃôéÓÛêŸ-Ûõ-J—í¶+GŽ9räȱãhŸ Í7Á , qˆŽ%=ÄI hD €04Ä V|CÕaîõuòH¸šs¾q‘ß¿´ÿa¬Ý¾–VX ð»çà¥еï4‡ÿ œCŠ ¦a^¶ )t_.)¾ó³Û¹ûÁ{øØ{?Ê GßphŠÅRý쳩?N*];hU–vþ†JHë¨ñC*{Ðíɘø@ 2êmÝeÿ­›ÝÇݨ…u™w`ÖÞT¤K‹XMÓjC<æÑ@Gu –ö@Gf£v§Š•#÷|kêû›Õ¦Tž¸M:fKö\âÓœ¯Z¾Vß”çÀÆŽH¤³åÄg0½®S¬[·Ž[o½•+®¸€—^z‰­[·r 'Ô©GqsçÎÅó¼ˆ`ìµ×^üþ÷¿Ò Q*ÅÁS¦OŸÎàà`˲ÛÁi§Æ;ÞñÎ<óLÆÆÆéKh°nÝ:æÏŸçÅÒ¢E‹X³f͸ËrI–[¶€!]v®ì$¯Ì IDATåÈ‘#GŽ“‹öMì6TaSúØÀö†BÕ2á™<Ú°Ò&Äöô"Ì.ÁÜÌ/Ã^X\†½Ë°¤ûtÀ¾fwÏ`íØ&ªû•á N8¨KþÖ+º9ë gñé·ü5›F·ð¹'¿+{`eÏëPJ1û˜Å°¢톃»`¿N©³ÃøIÍ*ÀÒØ¿–uÈæ7˜íù æ•`N‘…>|ã'øì-W326’™\WTÒl°ìøfÙÍúhE~Y*6ÛòUä‡mYk5ÛÜô æu£†¼V”ø!•=);³ •Ü<û9;½'Mª½™þ?YþgYe[ÅÆ|nØ'­[^#˼´:LùÅCQ×f_‰‚Ts%í´3F*RÏb5-Uoªw,0mv— ,O›[¾;F‰|í±U&Æ ®±<ëØâÅ‹ùð‡?̲eË(—Ë,Y²„w¾ó<øàƒüîw¿ãùçŸç²Ë.£«« ß÷Y¾|9Gq¿ýíoÙ¾};ïyÏ{ð}Ÿã?¾Î—æ‘G‰ÖX²d §vZt¬YÙ­°ï¾ûríµ×òÞ÷¾—µk×¶Lß«V­bÆ ¼îu¯£P(pôÑGsÎ9çðÝï~wÜemܸ‘%K–Ô•ý|€b±¸CeçÈ‘#GŽ9ÚCû ÒÛÍäÝLž *þMð=)ÑÝç)C p&Äf–f'랢¦Šª`öÛžâô9Çqù~ÎãCÏòáß_ÍúžÍÐ]†J½ª‹=˜]6Ê”i³GÅ­hˆJ¯Û!ÅÔ,Ñ¢ìÁ¡]‘y`§Wá€Q.–³Óï]F÷Vb5-*cNhT«š¹f†6ä¶6ïù]Èn¤þ¦ÍãB7O«œšPß%/öý² ˆUýšÁíGh"e §6ÿDä! /£H×T­Îþ«Eslÿ›™¡%²g+^î7m£¶I©$!QÉœ*cŒ²×G"¡"E‡³»´J§³:äªLN}ÍÔ#÷ÔÖEÐsÛl«ˆHŸDºs“oÛ¶E‹që­·2wî\úûû¹ûî»ùÔ§>ˆ*rÑEñ7ó7üò—¿¤\.óä“OrÕUW]t_üâ¹øâ‹¹÷Þ{ùÎw¾“hÇ'?ùI®¹æÎ?ÿ|^|ñÅD„¼fe·Â9çœCww7_ùÊW¢}«V­â]ïzW˼.‚ à /äßøwÞy'ëÖ­ã£ý(«V­W9_úÒ—¸âŠ+¸òÊ+¹âŠ+ø§ú'.¼ðB>÷¹ÏEdi¢eçÈ‘#GŽ9ÚCûé™aG-°äF9ÄGÅäÉßÝ£œ"Wе+׳÷´…t= ƒáp‚d¹Ïq¬ÚÀGî¹’õ£¥LC¶ö-/¤¦6nÛ"³8W™(*ð})§¨„ÀùE ÐXA*)8°€WõÆ'|/ó*³²ÓÞ ÛFc?«ª–I¤1¤Jøqk^ùc‘ U±oÆŸ ǯKÅ~]¡“Ï%WîÄÚSq=E%}¶ÑìÆÂÔ„95¡oFœ´ª›É§øA}^q'ë 6BJˆ÷GEÛ&d‘‹FíÈ"!N&·}QÙ^Ü>íh0ÞrýD• tªr•"6ÑÑ ÒTg¼Ò„Ï”ëšßYbä¦MŽU}üÁLΕj›K–ìúIöêïïçƒü`Ó^lذ?ÿó?Ï<öØcqÖYgEß?ùÉO&Ž?üðà ÕhßyçÜyç‰ãO?ý4o}ë[ÛjgŽ9räÈ‘cÇÑ>ArlãíLÐÈ*ê¿'þ:é-Á±&füò_³ì´·qjÇÑ|ÿ¾ÿ„æØ‡V]ZO¾<Å —³´{!÷>÷ £«ú¥7Æ O‰Ô[€ÙE˜i&¸Õ¶†02Z…ëÂv;øÀ>ïäMóN¡öad¾‚YÇ'Ëùk•"m|»/Die¾"SÓP#ô¢æl=®M‡0E1 ŠžDï+ ©ÇªØRâ@i‚M¦£¿ŽÒ¥7Ç‹9h2ñ¦çª^µ!#›J_GYi²«J«k’"y^M7£Eq]à†ø.È5©P(-jQ‚3â’ íH›DßÜÆ%dŸ$çMki¤b•J¹E:„É&TŽÏJ–ºµM§Ò¤Úï9%räȑ㕊RA1VËï…9r¼œÐ>Ar¯ªÛ™meÍlÍdô»w|ŸóOþ?üéï⮟üŒ­ƒ¡ºûk?¢³ÒÉiï?—þm[„;ù.þÃ?à¶;¾ÆäȰ¢‚´¸T$äøpkF`m•Ç—<ÉÂýçÕµvš×ÿvó»ç´ìÙ‹ÃëØ¶~KR!S$×xòŒ¤eÕ3s<š6kK*ù\§(ÙÙ;1 €À!I–8Y•I]Y$·ìÁtK+2>[ªåÎ2hÉO®;4Ÿ•cַ˽Âøô& UœÞU5¢èr.9Èâ^)5¨ÒD¨Ñ¥—(7"±œŠ¢bTTB<•6ý’Œ*UAšoX"9ӧɆKÆl{UrÒ}H«n®j­‘ëö+AvTt^\‚Uçëó»DSjXÓè9räÈñòÇ;NŸÇwîÙÈ–ê®nJŽ9& í¤4Æõ²$õ:Ü™¹­^ý<ÿtû¿ð®7½ƒk>r%úÛ°u»¬xÿÒú5t”;†ª0R,ùøû>ÊËãWÿ{/wýü.§<âÙ£¯¡¿*ü^:|!(5`C•üÞ?󺇧’±*zËÝô–»ÛêÙ7îúüv{¼FŽ5 ,/8ß žcbèø)cÆ¥@)/&{E‡pEœ$Ìíˆ)­ H샥LY}Y#ªfˆO•˜TÕ4ÚŸšFYs@c"¨­É 1#”(„Ä*Y¨QN¤Bí„}W¡2æ‡VÔ ´Žy”ÖF™1TÅ!`‘2c¾ëHJ‰‘öÿQæŸf¾âlù8j—%¿£È…éœ|.Ùq éÉjRéÜYÔCg}Qéz’…¹ PLLUÔÇ©r‹O5ÄæufSñÎÔú.åÈ‘#Çž€ãžAáÄùÜðWìê¦äÈ‘c’Ð>AÚ /ŠÿþÖ¯²táN8úxþùê[¸á[_ã¿~ñSÞö¡ (ŠœpÔkxïÛþ„åKöãéÕÏpÙ5—˾Q›C„$m¬Â¼²„»îõ¡¬XõØÃ|ú«Wò×üaJŶv  µæÖ}‹ïþë·sAbŸ,_‰rd?Gû=i—Kœ<dJ¼fŸ²êEÁ¨P¾—¬+2 sª‚Ó&ë…–:ú¼Øü’!Û-ÙA£-±I„jÒ£_*—8©ª!MFYÁÄ_  y’º-‘RVÍÒvàB…BÞ”!sJ›Ï(´UÞäÄÄ&l¡2k¹$(ƒ´×)ONZå#¾i/®_K%®Z“P’’2’á+1›²¾Ii5«N”I/·ÌˆÄd±ª  HXFÚU«ž¿Ÿs‰–Ó„9räxÅ¢Rò8pA{—=¾9½ÄpÿÄ– È‘c·Ç¥‡Ã` n}6fGu~9aiê§B¡Ö\rÕÇxÿÛßÃ;Î}ß_ó×﹄5ÖR­VY0g>•r­5ÿù‹Ÿð™ë?Ïàð`Æ«oçoMÃ`›k½nš3Š~|m•ÛﺓûW=Àë?%{íÝ’(aÀš kùé¯ïâwO=PÄípí–²x«;õNîQxjGyrÂJ[“½ÈÆ3dɾˆÂ‚;J”%ZE%Aæ”`Z"÷õ×`¨&DÄñ« émÚ  €ò¢ÀqZ3È)¥]¿ÈTX™‚8ðD¨Q†LQÓèª$ù\‘,å¼PQ·Ae>k«¦f‰˜²õYSBË´i[DªâdÈŠö=tA¡‹2®Ê5•³f“!iöK‰-S•Cš\e‡¸þ¸‰©NynÁ©4:£,7©{ÊG¦e†x)· 7_ªrwÑÒ=SÑæÎÎN-ZD¹Ü Úån†9sæÐÙÙ9eçoOº.fΜ L~›§zŒ§SuOÅÙGǃ[§FÊ6hÕÞNë¥HHßhÀù—Ã=7nhš¦vŒ7mÚ$Á†Ì|ÄýÛj_£ã•J…B¡@__ߤ•éî[¸pᤕ9Õx%ß+ž½ð`F—w¡¾p,Ý?ÛÄú§*,|vñ”<óüñI/s¼˜¸‰Ý! Cþçû?ùo<õŽ;âUÌŸ=‚_`ݦõüÏ#òï?»“UO<Ò¸ôïdTÃ@[k0¿( Òì"¼àÃö*/mXÃÍß¾%³¨¶¡£œ}ÎDºÙÜ’+WˆT!í|6Vó]Y5*!Ðú_uù°¸& ÄŠhãÅQX=*!ÀmBkè+‰PføGªIÅË7JŠ'᮵©_E tDú@k% í›À¶ß®/S ÅO§Fìeæf¢`†8Uµ(ˆUɧj¡14¤Ê¼°DÌ([Ê%iNvhC¦Œj€.*t—‡îðKàȸ”<”a=f ÚØ=) §>"C)ÕÇåÓ)ç¥XQJ‘œ¨œHùQ2vNØô:Òeóºõ¸j‘©ÐÍâfÍâGX¹r%{¦¢ÍÝÝÝ,_¾œE‹MzÙSŽŽº»»§ìüíI×…ôLöƒ~ªÇx*0U×ñdqPR|ûú.úVuË3Ÿ &¥Ü4šž; ÏÞ†ý ”}ÞØ0|ÌJ,©1¦jŒ,X$Ïó"â`?§÷µ“F)E±X¤P(0sæÌI+ÓþØo¿ý&¥ÌA’^©÷Š ¤xbßN@æDÛNŸÅ„tž{ÿ÷>ìsw¾XsM{Aò¦þÂs±zý‹|ùÖëùò­×'d9º·BMÃöl®Âp¦`VI‚6löa4Èx=>4Êšnc£t‰Y³ÝçÚ~eÍšA'¢! äÆU*!J J¢šaÔ´µc°9Âà.„êDÄ3åY¥H„e‰•Q— 8ûL(l£n©BœÇ~ViŸ*¥Äg b%ÌSÈŠ± }£¤)ˆ¢Ï…Ħ~¡6fx±z“/K‚beŠZˆŠ”)EtÍåxˆVzZ=³>…îó gPž³ñÉ2õŠ) C£Z™%¬l@{Þ5 ,ëke:ØtVÑq/Wé‘´öBÐñ%dN]ârr.£z•Ê.vë”aóe8Üzë­ìI¸üò˧¤Í^xaf˜ïÝK–,ᤓNš’±˜ª1ž*Ø…ˆïºë®I-w*Çxª0U×ñ¤ñÙ‹¡üz6-óøÑåøÆpé}°nxrʧëø-Kùúð"îØoG­Ùƾ›‡Ù4ãA~tÝ£M˪1^¾|9 /šÃpò&«]]]Ì;—§Ÿ~zÒÊ´8ÿüóùÙÏ~6éåN^±÷ŠWÏÿ©š¡>xôìž]‚{×Ã?<ÿúlÙóMMw;©%&ò†@+Ö¢ m«ÁŒL÷avÖz¢¬TucÓ²MHת®†ešŒìž`¤g/€ÁPL «¡D`«˜€ £f±\;Ivƒ?¨X¨Û@K¤¬¹_Ác(õ‹b„gÈW´–ŠÒžV$ ˜Ù§ JÚmÔ+]ðPÆì0A=Óp»X±U²Œ9`ÂLͨU‰²þOö³c&¨)',+tO]ñ ,(vúxÃA¬^ ‚И †±ù õÏŠÈ›1õsC¼G.ˆƒ[¸¾_Úõ7Òñ÷”I |VIåÉõ1ÒÑ®Ä5æšÝi[†É ]:9räȱ‹pîóÁëÑšle_,%ì³çܽጅð‹uÆ Ô``,ùBtË\vlh3tñ%+`n¿ó4m¤B€ÂCñì´2Ǽ´CÎÜ‹‡ÿcÏ61Ê‘—M7_4Ty‰ëkBñ¿y?È ¥`q7üûëáćí{Þ"ÊãÒ0…­˜,´š«Uµø!õWa¬ ÝÆÌnúlQqô´©nG­H”k Õ”¤¿›‰îˆ…Lièð ËG—<ñQ 9\ZÁ²Ðõ»Õ5Sœ2ŽÙ(3:Žw55Êàö1MÈœó™²%ê1ªq]QÙ.ÙrT)y ©s@;&ZÂ{wЊpAÝ¡ñ·ÖŒá¯C…†’äÐ6ø…1%ÔÑ>þYxD‘£èžo¼$ir; =Qè()KÍeâ(|™RFŠÔª„ß•óÝ®?å(WÊ%bæ3 òyýžïŒ™#GŽ=çî b²3Tƒ‘: 2©!M'/hR˜¹©5 NþAkçòùðáèÔB^ê)ñÚç·È{$ó|Y¸uŒÁ’ÏÿýƒÅ\š¤/6SÔ!ˆƒZžVñÜÁ"Ð0P G΄9ÎûQûVZ» ^^ R+±&Ôb^·©&Á z|1µ›U2fv;¬¡ÝvL¨Ì,5&õ7 ¡†Q`Ø(d¾„9¯(9û¡ŠÍ©ˆIE¼#õ9«NñŠdžF*XVwÜ<šze¢ k´;Šgý¹äW¥º– óyí@Y •'f€jL£¼­UÔH˜,P¥¬â-çS <`B©V‘/–U¬TLŒ°Š–‰"¨íšX†\iWóJ)'0…JžRÉ )ß$ÛP7@DJUÒvÝ+ 6§$Ÿw}4λ+ ^ã…¼s䘖õÆo³5BˆÜÇE aë yò&»Øêí®É|Ä,¸óL8ýÎæo»/_ ]Šcž†ƒ×á®U^BŸÙÉ)k·±ø¨™<ÿ¦ v´<•TÃrä˜j¸þGƼˆÉQšø¨*ôåû×_ï¿gç´w’0q¤© iLö= ÔbnÖoT¤¹E ù=§Ïû°-;Þz§ê^ÕªÜ4©È:*‘CGaýeº b†à§Ê”S¾J–•UwF;2#¦×åWF«O¬,iˆ5ˆØ’.†•l–(Yût‘'«« ! &šž.*llm/Ôx5¹AÁ ùÝu[có?Iãy^çÂm¶m“­Æv"­&EDʪUƬRÑûœµ™}öR ŽÒ—jŸ"U§äš(yP"e‰˜“©¾:3~v¿rÓʸJz]×7¯Q[lùN³Ó—ºª;-†d™7=6 ¸W3[¢‚¯¦Qc!žÙüÑo$Äð‡üÁ{Âö£¶‚ì1ÎñÊÅGV°êmî,Šé’ûö?GŽñâ ‹ãõVFy®Ù5åvtÛ4 ›GME Þ¼”ïׯwÕ«£cåm5 öß$þGé­ôŽÕx|V0ͧsfebý=z6ÜûƘÙ;ûûšXy9rŒ‡L—ùÈKö±ø7ç…J85û]U5¬’| k$}ÿ Å¿›ciOÜìŒÓÙ0w¯­¨HC˜Í-Ãlã›ãyNžIh‡×Æ6YåÕ¥×h`4Á´Ë©â™õ€ÚmCj, ~ÓvšµŠÜ6ªÔ5%d$Ý•¬×Mï9[£ºBhÒmv6m%ìq0Á ({f] u­ŒŠ¤œ¶×õÁ¹#‚“8.íÑJ'‰”Ó/åô×§LÒèŽe´)³É©OŒ•ADªÌùDiЦŸZC¨ñ´Óok„x¹~¯_Ÿ=Æ|QòfÞ*òeþíTxû²]Ö¼{8¢èu ¶Uã·×“µmÍq»ß6 _9Þ²(7ZSªR©im••R[-ÔJQó w,à8`ü}}ËR¸ë‰š'«¸ïo_ÓJã/³èI„¿N3שøò»,z‘é`Ž ¬tÍë‚Äï%¡ 5ÛÆBxa0VšfUà‘?€»Ï…¿<ví’®µÂžob7u=ÐÅnSUˆÒ¬Ì*Àì¬s´1Û!«ïzbmjUÇŽ˜Ýi-a¾‡¹{wøÐW€N³`lÕÉ›™¿IY–оª¸ÎFmSÔ‡ënÔ|71GK—Σ2&ÿ‰ƒn™fí+7â­&"+¾Š$[…1Ù²¼"ñÙä­íTÜne8HÄÍ!mˆSžÛAÏæÉºÌþ„ÊdÓ*$£jn¨´3xõ¸ÅÉ÷FÉñŠÄò>øçSâ7üCUxq»L¼ö/Ÿ¿ù:1»»é±]ÛÞ{*>œ¾èž³u¬=ÿ¢ñbí Ü ­¹Ý{„wîß×½k1s‡kxÌLVý*06©ðœ½˜h&ß?:5æu)Lï÷XÓ9}%¹6× ÑÕW¤ìµm”š®ü¸kàá¥î"+×lç¸??{îÛÄs+=–.†Îy° S"Õ8MLàìM|Óˆ¨°î­70ûçTï?~übëŽT|!< ÷ò±P^ކ|óÙ7/†Kô8þMMctNýÒvÃ/xpÙ2>¿X»«[³gâàâ£ò’k,i":.»4‚Ö×`ýœ«i%˜V–5ÉFÚ4Eb´O^ޝŠÇÌ¢±«°´,QìafA5Õøî7.¢ã al»ìfÊ!Z 1$IJ5”ÝqºÎvHPúsÇJ—P%E?Q\ªqŸÉKÚ=çÆß€ ¸ŸUØ`ˆë/JOXIå¢S—2˜,"iˆL²Ù’P©ÄW1׳ý$U–ã•Éî,YÊŸ³XÈÕê>]Žzd—:µ¹Ç·We¢j7Ôæ•yq†‚5E9¶»cV¾uª¬iõ7+áOÀ_Ý ëóE)Æ×ÿh°ZwOO˜Øí‚Ö Ëæ«˜”íb¼ü¤fç­†È{Ç`[ 0§ sJðâŒT¯‰4¾8Þk§UÙm•çL¨=„ì„0,Aèð… u(¹ Ý›¦Û†´¬®»YJOö£ìñÕÈ^ßQ9ìdÞõu‰”º‰}:»Qý(Ä,­Awêúí+TQ¡Ë>ºJ+ÑÍôÑéƒZpŸI â0áÚí¤é§»m²sÚ4IÅäË—µ•l·ãö°AŒ© ÓWAŠx˜«b©z’ʬÝä´wgàÀið‡À+æÍñ'À'À]/ÁLÝ­‡Î€¯Ÿ¿ÕØ2&ë[h3±¬5ºQixt‹L:g8oÌ}K{d;5e:ô?á˜ï&×lÛ ðæË寖”YßY¤¿ìóÌ4£C¸yfÅø‹ä˜¸ááûG›\[“ /Tò"õÑ-h ¾¢«(I{Pm´(¸ƒ±š¦£äñàÜ.^è­0m¤Æ–ŠY83ý µ²f×Îöšľ’˜÷Ÿ¸¿qú²N1Öxªž i- ›f[PFí…±NDÅûùšÆä­”}YSê„yS³à튙ð½ÓaIÑÃòÂåpÞÞðñßÀWÝñ ý+‘ÿ‘’¹rêwÝç'ó÷XÓbž½` ÒŠf“¸P aØPÅȪGóŠ0½ DÐBCßÑ6¸h÷/²7¼QŒ’– Ó ÐUDjPÍx“ÕJ±ß›µÛN¦ídÛI¯©#îD½aÙ)ÙÉÚ‰ÕPßlU8ÙNó]ª ÐEOŠ-(´Ñ5©>uå&ˆœ$J7MY¹Hë:ÅLgt+Rššä9*œËmT<—$Ùhy‰2f~–º!¾µ³ß5ÙK˜ÿ¥å¾©$I'̇Kƒ³÷–zNÙ Žýž³VIŽ:ìÛ ×+ŸOZ Û=k…(Mæ"­ÇÏ¿#ë4?\ƒGû£¥gUëF4ü®öîßn8q=97‹•³à‚ýàëOL^vÊWüÅWrAEóûT•¢jžÑÁ¹o¢ô3vù,š#‰È„Ø8ºÓ&¸ÑulêëîðñµfïQjZ´s ¡ª3‡ª|ëà9tÖ ÔG †ª±éÒh(ŸÛy ðÒ$"W<ÐØ<µÃy™Be¼H1Q¬Ê>ѯìK(ÿûÖ‹Éx0»NY'ï«SŸ>†—þg©?ܾv¢™““éeøûãá¢àÏî{×O^½/WD ’ŽÃê;˜4i7ÅÔ‡ùžÌ ÔTœƒj[«°¡*d©Ç‡e˜9ëÇ&n?‘¶NŠr”QŽgŒ°ÝÜì;}1)´)¬ÜÎkgÍÍÈÒxÎqƤÚNç“o—P¥›åÜãcâáNÜMcà (UwdgÉ‚{ÜúUK®Vµƒè,ÀEûÇ…}zÝ^5àÄùb>vá]SóÂdOÆ¥GH¨TµnX|̵ǫgï‡û7À§€‡ÇQvɃ*þF=)†GúëÖKi© e!ÐòÂÊ-ËWpì\™Îï” ÐÇ3¾r'½‹»¸ú3+8|pŒß,ì¡g4 ŠÇðPrÉc¯1þkŸé58Êý|ܾ{¬ç±GãÜ%惂þ‘úr$}÷U|Œ€†±@èŒs‚J(Þ0ijÓ*T¼ ¡L^’„‚÷”M\_ŽººRo¤ÉnrÿUUMi;Œt‡ñ|aFY‚E1SHÏpMˆÒ CðÂvXÚ+ftó;å¸;T£¡ÔUð•–ÅBçwÂÍÿ¾ÞW5û ‹ã:†YÇÉFÍÜ4*k±-鉗Ûx÷þðæ%B’þá d•#ÆAÓå…HЄŒÀ ‰(v/C¼üMìZ!D”£51µ[€¤y˜6[ùádžùq\hçþ:QåÈEˆ£ÁÀj(É[Ú.¨Áê¼MEd‹Û”–vÌfíM+8QYN ®é»pê8ȘrªTB‡0Õ‘…ÜD}%dÒ*65-oM‰¶%ÚLòXÂl/ª2–vÄ.=èVY"æyÂK…j­…¨¸Ç|ÖÐ÷Y¨0J’ŒA¸ÁäÌëÜòì_ËšlÛvô­EÅ—PÏï?fV’ÇB3 xn;Ìí·€,;ýO?°cuOe÷ pÔløä‘ñ÷'à™m2¾K{`¯.$ư–´·ŸÁKmçþg|X*&3/ f—}æ" ɽ¼/¹í°D¥köàÜQZÂÛP³ 7>ºK\xÌ,®û‹e,ãÝtŒÃB誦3.z°i .> }ç¯vz;™Ó!&[[vN ƒ)‡k^·nç©G¼Ž‹EWÉcáú14P b뇖Ð0ZÓ,é¡«2R¨²vG#«å·­säCf$¼øFn_’º!èuj‹v‚yc™ J*ÐbÞ8³½Né=E‰zvø¬äâ³nÑÛª¢4 ×ä¥Ë~}±Büö}E ûüÿÊ‹’v°üëiñ Á4VmNž@Ë=ñÅ!8 OÌýPÒ—Nuú¶§á_ž“äÝÌ×q—À Ð`Ãê§›ØYìÒ¤Â}S?ª¡¿ ëFa{L÷ã5‘ÖVåxæ 2?¶¬t¼×R³²Û&OF  aЄõîP† ÖÜŠKÍÚ¥S;³ò4sfU6[r|Üu”\U)ªÖ¬gµË|QêOÉ' Ó3[ŽQ0>µ*!ÔÉ.:_t( XÔ´TÝçU’d&L6¨‚†HŠ’¹9õÆ&w2Ù‰ªVŽ*ä˜åY²ä-7ŸÛ—tÛÆÌŠ8Ó?ŸDtŠ1³âösÛâ·ÅÛªb"±°[Ò|ê(‰tö/oM§ Ÿ=†g,à‰Ëîgø‡“èϳ£è,ÈT»dÿ¨D}ÓÀ` î—ÉÁ>½°°+š$ÐÃÃh8ó4É÷â Ü·~½Nìó7Jîh‚jÎ϶ªømjì 6!©^”H]ÓJr \ù*xÛO&§ì6±â­KøâYsð«!Í靈0¨}C „µŽŠÇÂQV÷Vè\ÐÉàÙó`Ë7®àÁkæŠoÈë‰)“B̰Ý"ó ó÷±-Bœ[L@ÃÞB2xÏ®ÂÌŠô äz^»s ’{÷vð4,Ø:J5ÔÔÚÐàb¤R*)öÛ4ÄèlO&_;Ò—¡šŒÇü.ùþ¾ƒ`ƒsÜ]6ÍÏ×!>@t£O“%Û7ç˜ÂÌ6ÀÀ˜ü»ìf|#8Å@Ö‘x’í›c!<±•Ê!sé6yNÛ æVà²ßÔ©Ò Ì逳‰YÝôr¼ÿ)õ²Ñ°n¯Âý%ÿAӠèá³Ê2~ï;Hî7ßzJž-¿ÙР WŽl å ÒËîo9԰ݘÙm®Â _ÖDšS‚îT‘ÔaB׃JüÉÆ8IT+bæ–hQ¶›õJž˜Ùuxà“Tê…Œú*u0íÿ™HŸÑ÷F˜ô}– …Ɔ:"–]dd&¨›Œ¯ª_sñ?2RÕˆ¯…¬~zæ­¢vÚšN§œ¶ëx§²&{*N…7Ï(#ê‡%I¶ŸÔ«AZ#k*Ùn1ˆC+gXt¢ŒÄ¥ë34òömv>ðK™·ƒ}{áÎ3aù´¸À¡1xz›„¬Íºá>´ItžU‘FÿÃIB¤~¹®½:wWÅ©¸7—Þó<×]ó*nÿÃeðá_í#>ÿ*8ÀøhÔB ï6 ÅOè‰-2ö{w¢äœà½ºàM]ð¦%•h™T?±EVBo19lÛ©]<²ÙL”¼u_ø»GäMïTc¯.ö¹òh¾Tb¨àñBw™J5d ª©§”3-îX{ ŒòûÍà  ƒüö½KáÊqÔwÀ4™8n“heà ~O »bBtê^±Ã¾Û˜9buâüä¡j(NþA(ëÝØõqúJà)¾ÀÉðÌÑðù‡àëïºuIÞ°8V!¶ŒÂðÎõ?s¯ãéµ€YÃUFjãÂ@S `ÿMÃ<:»“é°mëþFž€ùF yç~ðw^¼Æ‘ûŒÐÚXA$_Ä9oêÌ÷4YÒÎ_³…†4×D©“ú: âÿØ[5)aØ…ñuö⹃j!37û¼8´Müñeb~ýkáÿ–æ%Žš%Ag^·@å¢u0çè¡Í¢0¶ƒ5ƒ²þξ½òò¥Ã'º.ì‚‹“í©øç'ោǧúMÇn†•v±VÝpÝ1OOÁ½~7Âä¤Vöñ’ÍncU3,* q˜W„éEY+©–*w¼ýl»M­HÔ¨PÁˆ–è|£¡˜Öõb‚Ô(_‚Ô4iZZuoÕÆäʦ‰<êˆÔ’TúD[SíMV™‘1KQ <1ÐE%Á´ÜTMÇ*ŽrJK‘¦º¶fU› Ê'‘ ÇjòFÊRºXÛ‡èAè$§‹J©¸|å–ÿµŠ’vûh‰XrˆäŸ¿Z!^3ÞþøßM4űsáûgÀì2‘LöH¬z4„†{7ˆ9‰|ö½3àÕ߃§§0ü÷å+yç¹{qÌc›¸ò5‹Y¶yHÂÆž¹þâbš±«ðúE²X¤¸ßn†&“ÈZMÒ<¶…ò‚>ÊózðGaz)iãB#Dôw[Ú6/læ{Ø0"¾ »äš»æXxÕ÷¦Î¦ìÃŇ2í’øêÇOqßœ^zFk”‚-£µahGÍœÁ*ÅPÓU Û/ÖæKƒwîßx]ò‡h™€n“—Û«òÆ>2§Ê¸yÙ1±¾gi•äL8å-í¯/¦›×¬‚ë×ü­þTÀ5¯{ih§…÷¶p¯ã>ó·‰Ùâh6_ÿ¨†ª!3‡ªÌª1ÜåóüŽög݈<Ï{L@“3EõpMéÒ¿ûœpIR!Bæ *>¦´2B¿IcEûŒ„œ ŒÅæévñYÏ}Ø$›£BàÉmâ°ÌøŸîÛ+/Àn{ ŽžÇΑþY³=·Œ¡Ø(÷Æã+_ÓrO{t‹,7°°KHšë·µoø]^|œqçÎy)³; àÁ ç³9;´¾ ˜ü0ß»^ž&vikUK†µU Ú0« Òì"¬•;ò0n§Mm¿*ÔrÛfndÝ>t{Ñ® ä¶hGâT·?k_#bcÖ)%:òÁ‰ª²*ˆR±ÉZô6¬E{£hq …ºt6© Ò@Ñ3fnFA²c”¾ç§É¢&I4:™¬%Û.{j-K±M3ÇmÙ4±ÉgÃMGbh#̆!O`åí<#ëT»è¯ùpÀ4øõá¯ïƒëVeŸ·,s0Q(Ðò@±ÿKA «¢¿n<ÈfWே×|_ÞrM2¼OÉ%§ÎaéóÜ·W7‡¬äçuÓ7RcëÜYŒðûÏŸýbÒën‰Y¸ùÄø<¼4$æSí`8À_3ÂôZÏ­‘2zJâxm·Þ’Œéÿn÷ØNª‰ÅªÍâÈí{âGõÎýdÈÉÆ¹{Ã¥°´‡÷þòyþõàÙýâ6ʵþÁµ&æicµŠö˜»½ÊÓÓe1ÏUgzð¡už±P§ï¾"׌(3ƃ5y{¾v63´NóF¿§Ý%™DweC˜òl´31ÿü«àÒÃE¹ûÒðq'Dþªø2.öôâàN7å±×q©èÑ]òY°y¬m¤[¨¨Y éêðÙoó0ózè,x í¨OãSp¸‰6vÔì¤Y˜Öò¼r×Ar%”$’dɾ¼Òæ™ás×ë³uØï–XY2eŸ{¡2ubåiO®·ÕÛEÝÍœícŒÕ´±`ÿl<Ð0RÕ,í᡹Ý,˜^äÉÛTá™m¢(”LîÝf…ö)r”ñ7‹$E›]?O;ûT=YjHŠœyIôÜÓñK<øhí˜ÛÈx.Íz•›GÄÜR«S¾SþŽâ¥!Ù<%÷×#g Yè+ÁÏbð’µt=÷2 €Ò®ÿÑælÿ#Èx†¼ÌðòT&­åÁ´© ëÆ`qYÌ+ÃŒ1¿3k¦µ…vÇk¼×U³r[•*y…bRˆõ¨ÛߎmAóEq³ˆS³:Ó„ÈÞ0Û)›ì²]ò§‹ßæ)w͇vÎmWJµ±ûtAI;c¢¬ͧ®m*ær† ÄíuÛâ<°œ>Z’xH)ĬÁ!­NÑQ}B~b5Í*C6J]ÔT×?ÉÖéÊL‰²…ktlv—8î´ù©­bÏ}Ü\1U8k1üï[à]wÁO_„뎃?sLÁFeEö‰Nn×I0×Ì“2O^ „áO~>±—)ÌøØ\{d7ÁHÀ“3+±vÕPS  ·Ž2V yr[pYŸÔßWâWÿŸ½÷²$Éïû>YU϶yí§»Çώٙݽµw{Þð8CX2JH0AüAˆ"%A"$H¤ ‰@b0RÁ ER$@˜ƒ9pÀÝáÜžYwëggÇOO{ól¹Lý‘Uõ²ªß{ýÚ¼Ù™~ѯ_½¬¬Ì¬¬¬Ìüþì_ƒâù§àoVwV3Ü/ýµ³ZÓ³‹ÐØe_†KÑ]|Œížåî‡^Y…“ÃzÃ2?¤Õ;ñ»û+s,ÏåŸæÖG+¢âÄF‹b ¹°\çøF“j+¤é÷Ñ! <)™©{ØR2æú4syÝÎùâöüŒj×ëÃy}q݃?º©%ý _ðœÕŽãD*K«­½oJBôZ×…,“ÚÇZÕîü˜–0¢´ŠßßyX¿Ï_¹ ¿{]RÍU ÕXA×y³öŽØ9ÄãxrÈ¢àKÆZõ@öÿ¨5¼ñ¼`¾ÚÂÏqùz}SV(áÊVÛËgL1‰ÍkÌôä[¥÷Id‘j›Ò¡l>I´“‘t)Ê(¬özbj笶´WÍǦ´Jﺧ‘ª{¢ÍhKT3©µu¿׫:þÏ'kæßT‘—þéû/o\=÷"™bך©wïÈt›Ëš©™Ìónƒô.'…æ–npÇÓßs˜vôç–­ívü.SÙ^g¸~Þçƒeñd( Žê¡|KÁ¢­]}ˬKó*{§>P’7›_¥Oë‘:õÇеîmç#²ˆœ4è Y(…ðÕvU³œ¸î´ø(Ý'I "‘JvŠÏ÷JNb`Ó®;ëzÛDSBE’¥Xõ.¹ÇöµŠ\±‘â6E J9˜·—*ÍÝýÂM­êsøçÊð…Ok/júÌKMøòBÏMZ_t¥ª½'Åê%ãœæ¾v IDAT¢þÌW÷+åè/<ʯ¿úþèboni—¿»¤ArÿÆU <¿Å{’Z*ù¿¾7·ß[oòÿ‡Ç¸1Q$ÙSõ€óË W]ZnPw›þÇjËSL6 d¢°0\€¿x\ƒŒ× Cï™’à;SÒu»!|é¶vÎ`R¶Ó] Ô¸ˆÝ¬_Ú„c#pq¼­î—·à“GôçWÞ¯®k ô{×µã”ýÄ•ù§ïƒ¿|*n‘ßï—:á‡êhzj_M©»’Ña‹“›.Kóy&†V{Ù öColDÉh˜´.Iëã»ãG¶KŽRiÓdŒšiÀ6 ’ynˇ?»ÓC);¦L›M:@|”К r[;CÉY¸S/þ³#𕲞—ß”8hÚµ{4à…€³ó%ªÕ€Ízð社i×ó Fò.L¯ìÒÒ•OKŒ`ÜCymÁV óì÷ÅÜíXÚ©ì~Ê3¥ ­PvúRKGF(FR’mó´èPÿΚûôŽí0‹éd¾ÀêNâ¤x®'Ôn¶cÝÊŠeˆml¡'ù – uBjF’Yf JbÔã¥Ø‰Cáµ-¥É¶3Ñ.¶âac!ÔD‹–J®Åðô­Úêˆfó£vƪ†mÏvè@¶†*žÈö[<9šöDœÕ\~Kà j¾~çà&ÔWµÅ‘qïOÕâǾ¸'süÂ#üò¹" y‹ÕRŽÙºÇz- mPë­ÛcØ—›,°ðÚüÎ5xtqq"R_TZþGNèhõo-j•Â775Wþ¸EçÆ4W¾ ¤±ɦßYÚ[†j`‹Û@lbº´©c2Mµ›Þü^í¤ïÆ øÏNkÁ‰³ÝÖáÛužØl2Hž¼]Ãó%kUWSvÓ“ —m¦›>Õ-›Wf†t?ÿøé/ëLÃ9-9ŠÇm 48€Ýn©«]ÁÛ[úsdH«t*E'¢Ië¸þüü£ú>¾pþõ%øƒ]rÛé½Z/¦«U­zõìÁ,%(Ø‚‘‚Åô†Tàúû‘iò¥ÅÜ–GqFrt2Ïêú>U¶V]mƒvÈX<$iéQ/0Ôí¼‘o›R(õ’,Ñý;a²u¢~÷U©Ål´Ô„/Ý‚¿pAs.ôYøÈçïŽ=ÞÝ$[hg1-·¥Õ³yÊŽ`~<Çæ–ÿç6H ¤èò@i—íÚ)»§`=rù}"Ô—C9˜p`Ù×›“ì· 1õ[G¯ò²e„h R-L6ZjÄF”ìˆKC[ ®ký"õ•ª¬W›;lü÷„z6Ò®ÁMÉL·vŠÌ±e È[(G ¤Òq”êÞåbž7$8h™ ݾT·$Ë!IñZ$Œ¢“ëâ:Œ2S ÃÁFHJ˜Ê2eâD% 8k§r½¿yU{›‹ã!4˜ùîâJ|5\±ËðÌÁ7>û:þOŸô©_|”¿<ÏÕ¡k¥#ždiÓ§iQo5CF†N¬»´&K”mAÕðíeŽzcÜžõ¦rP0§V¥ç‘OÖŸ©!zŽ­? ÿW´™½P Ú^ˆ˜Ü‹]–¾µŸ;®ÿÊð¿¿ÜŸ»÷OÑðXêõµÓŒ¿ÑâQêŒæOßÜ‚@?ÿp—ÆøMOo gj>+¥<Å@Ñr"Pö‹ßÑÙ_ÿ¤¶=Bèçø§·µÄð =S]­éOÙÑ’Ï£ÃÚû—sz„–2ýÕÓúókoèýÐ?zJ,Ý­:öå…®L®ÊCË“¸h{h’%ÓC¶„é†È]Ç?êDnh“·Coyxã^Vìw“ùêD!£DúOu?ý‚1c[¡lHó;Þ¢ëb­Ï’öóíÔNÛh§MúÛÊ|wŒn@t«_º…øÔQ½^×6‹Ÿø=í¹ïÝB »F²o<>UÀ–pd<Ïk—ëîÅî®ÓNàaÏA¡ôV ÒF#˜Êk—Ä7=-aŠ'‰Ý4t/í>ˆ¾Ènú•Òª‚ÕP;l¨ÐÙQƒym¶½€S\„‘¹çœeæ7¹Y½î#¹—îMHµ@@ Øæ#Ûô<¤ s•£ínÛפNŽ:µ'-Ùö&kˆ0.$JñðêPv$év'êu&êÆM3ÒMð(Œk•yl‚°¨A"eÓ•ÙIÿ¸&á÷¯ëxOMëÍëëŠ#_¾­õÔŸžÑig+$ýèwvÍúÌ!>ósòª5®ŒØ,æ(ú’…5/ãÎYJEÓ“ÝjòÖxžÓy^½¦7¶Åª¢ôæ ÕjUogK:2ülYK¹zQ+Ô\÷ W«+ ô´äèïø¸h¸ }n¹'d$¤X ‹ÇƸ]×¶oŒê¾ú•÷ÃÏ?«7*¾Ôjjn¨øV¨ÕÛ~é½ZMƤ¦ß[af«ÄùÙ€±’àé›UJ^Ⱥ¿§…_Ñò%S [I/»\ž+j•´¿ûˆ–|ýÀ‘$/_[Ð@ࡾÇEÕÓñ©^YÓàh¾¬Ó±áȹBD?}>2Çæ/oPy¥·ýï?¿ðXû÷Õ-͵ïŽ y‹=4BÎlÔî¬yÜYóب²M°iqb:O1uC6\‰<€aí‡?„ã›-næ9<žãÚâ>%—7áƒ&wSt^#MðaÆ4?Ò RGÕ:8ÅNd¼˜ˆö·™4¶K:î{ ½v•ù6wÜ—í“®U{®Îúã%}ONÁç>ý]=½Ý5:<õøg/íoŸl:hXnÛ• s‡/ÀÎ[Œ—¬®!÷ÝNÝ©4Zõ´ªÝ\*¶–"Uœ(&R‡ õN íÙ~¨W™Ý&F‰F ©9Ï–€¡È)/Ò¤nutN;¦Tþ.ýgâ³Ý‚¿mˆçbmù³kh7ßÑù0vó­0ý¤ÚÞ©˜Nç28TÅUôÝ UƸ(é£.‰4°Á0#3]„'mVfºÂŠÄ*°PéköiÐÔ¦›te/Îç «Ú6a6A}Ó÷V4¸øø¼Þ°Má? ã+ðoßJçµ|îü·2õø$ë7_ç¹ù‘h]WÜZnt±7ܬ‡Ì,ÕÜ™"¯]©ëðS±ZY¨´ÚÅJKÛ_Þ0Ε5hÉk ´î¶ û Äi‰6`Zií/ô@¨¦ 7P»˜¾±¨Uä[Kcþäs}^(ÀµDó…Uð%§Þsˆñ¢äâ:c-Ÿ;>Í}ŒÙFK2ž)„Š#«žHÿÕÃé¹à;Ë:Ø=D©qÜ/…¡VŸÝÌOµ'²ØqÀ©Q^øÕQŽý›UøšµÝ>é|þç'Ú¿¯Váoöߢl N®6Y-瘵tÓCY°ñXYWøá9øOÂÿáÝYç²4–‡ÿî=ð·/j&š+µD}¯ôD$ÙFÁR[½îätxôNgrd2¿—¹â>¢þRî÷»’š¹ê˜H'à åµÛïEO«áí´1ÙÕx»¸ðìj•^œš¡VµSJs¥‡ì¶’9öAÛ&<ãØœ¼ŒtAv"4ÄÝ&ð,Å ¢eÚ›Øôˆô+²»ÿl!6³µ!wi^„qyB§É4æÒ1…2mîVUêÑFk°¬ôí(Øæò"û T5ÆÒçc0d¶Óø—ØÇ ’&€TæWÛì*þ¶-}¸Óäx ÌysSÕüì1 " 6ü›kÇÿð9ÈÛ<ÿX^þËZª|ú¥%þÝÅiž\¨áø’›wš„=6Uµf@:®º¬f¶’caÕëm°ºûܯ-Tí²öI÷¥““6=í°á©º¼]ÛI*xuM»¦8¾ÇfŠÌJN¬7™¯¹¬nT÷É ®»!ã8L6|šE[ÛˆLÒóÓËëðìÒ¾êȸXjj€óvU»ã/Ø( ®ýÔ$<øCð“ªmÉþû÷À?|2®®mi»¥õÏŒç91]àÔz“SëMXoX‚µrŽÕbŽÊD“3E”R¬lÔ½¥J¥‚Åt%‡¹–.ù’‰šÇdËg¼“R‡tÃíÎö@JAµ¥¨ Á|Õ£9Vb(gQï—QÒb5Í^`È<îŽâfÒE¼Ö¤€Û‘HÏGÛŽ£u5W;½¿ýÜÓ]Ø› CW=6j[ð¡Y]é…oüˆö¢:h¦1#'3¿ð˜Ž[Ó?y¯VÙ}ymoå>>EÒ©‹:¦šN*2Õðq¦>Ç& ¼½y—æúwˆö¦b—Ý8¿“9h5»%Ö}í¨a*òf7bC]î,Eꇒ­»ç;ur‡B:=#Kè@‹±7»­^7æÀ°› èÄ‘Éê•ÅÎ:§Ž×›|eœì&}±zôqöš¸¼¬Ã£B¶/IräÈÁ"Ž@ŽÛÈQU°£~U²#6Âi,K´5 :߾Ѭˆu–HƒŒ<†6@ "õ>aô¾Lµ¹{€²H!´Øá‚2މX|lö‘‘žê?Å6°L:º­÷Úäx»ÿïÛ:àçdQ÷ó?xR»x‚ßžÛ48:¶éXðÀšGÑ“Ü\vñºyªŒIi)Ò´íS $§YXrï?ƒÕûÕIƒIßY†±‚¶h;TqDä[h “¶GûÆbÊ‚c ;5Äx+àµ[ Éòæþã*5ZZk²°Z~~…š©Þ÷ö–v•ǯoh§-Ÿ:¢;€Vƒ}þÇáï~Fsð¿>Ýέ Ÿ¿Þ³nÛ‚§N3ì‡ßhQmHª€¡’Í„¯˜©ù<(låmVË9ÆK9ür>UFh‰Ô„œ ãu±VÀx+$© )e³U÷i¸’†îË1ŸI­bWkIæ¶<®99Sàå+½½QZ½UüºÙbušÓ³çSêvêøQÛARÌ…TŠD¢%§Pf­o{±ëÀí´èv/Ù"DIÄçVô|ó¾H­û‰)øöÂÿö¢fÆíìv#Kè ÙÿË“Z5+^+Zðo?OÿæîÛ` -ùéNBÅìdž‘‚Åá¥& ´ó¢©2åZp­y»¤ý«Ø r@î¥ì¾®Ù!“…vç½ÂJG$ŒÚ0_„k®¶ßi‘öÐ’Ú‰÷Q­0:åï&‘1%'Ù<±3‚ Å߯Ìa¡9%«Í%²Q³yÄ‘ˆ aØ]¨lîNõ€žå¬öý´¶Š¶Š™ˆ6ùÆõf`×Ä™BT–ÑOÑÎ=‘e8÷Ͷîo¿¸mU·x"7º%ë±À5fž*"ÇTQŽÙø'ŠÈ¼ÀŠuu+¡Û'p£‹’ûN’hO¸™9FçWlÓu‹ó*£O’SºMäf™1r“ÆõB¥~‹è¡$q¢ÅP™ cTLëtYß‹úÇë-ø÷oi5ºã#:íS†Ý‚|3à©kŒx!G7›lÖjÍþ$ëµ€‰‡ùª‹?™§hÓÖžû£…òþµAŠ)”ðù«{¾ü¡à çÜ©#¥baµu 6& 7d¼éaÉ"‡VÔ¶<íþv]»Ã>¨ÝöÓã þãeÆ>q†Í‹EÍðràÿü‘Iiç.¿}uÇ~9lˆ±’Å™¥:„’;k.A¨Ø¬ëw·˜·)Ù •mNµNÑ¿êš*ê­FKRwCff渽zðöaJi{ÆÍZÈá¢ÅDÃçC^~«Ú1©`qæp™3GJ¼q£ÑHõÒlQ™ƒ,è! ŠTæXib;HŠRv_’€£Îû ®`7†pââEÔøÄ¿ï @Šú/”ð;:àùf5C&gi‰ÎÔá&v²Ý-}æüã§µmoBJ¿cϯj‰–céó¿ôÞþ£Ät®ÒÎ\ç§g ä#»J¥Sug¼ÄdÁåÒý´æí’úH±mÊn€R×¼=F±ùntc§Éösæu`½-Ÿ™Ç–Ðö8H=H\¥¥HÇ °XÔ“P5rÖ`aløÓ›ÿmÇtH7ï¹Óuˆîçâ2co51hˆ]G›ß1¨Èc9˜ÊiéQɆSEu8éѦ¯‰çÏT=Ä Ñ3¢}i»-Ñ *¢ x@¶ÝôÄåŠlÿ¡¶çËÌ ºä—1¯n¯‡dŒˆÈÆFYU¨ñáD犳O—4Ç$qÿb)Ov-Jsí NšÉ©C%·—åò%À+u®Ý•,Åêñ"f.xñ\& à#õ¹˜›×6ÈÕéJeE×7ÏkÉÔ½Ê=jðëWà“‡á‘6W,ïYx߼͓-áÙ®6BXX÷û¾•¦'©{’¹ºÇíá<§g‹ºÏïE‰Z¤ŠÝ]“ 탆K6•˜«{T¼Õ†E?±`û¥jK2[R”É|%Çåï,kïy¿qE;¸GiPãbäÕ&ÅŸ;Oäµ} I×ëðŸ®t—€Äe”m9Qf¶î3Ñ XØp3ê°uWRw%lø8¶ \´±;…’0H)-õó2àL"2Œ%‰`£r˜­ylM–˜ͱd¸üžËóà±Ç±CIùÔ[[>×—:¸„7×€N펥;òlc‚¥“@´m…DZRÔQ²ŸŒ¾2 Î2¥MìÐþ¸àkäÝ’ ¥ÂZܪQùãë¬cõèÕ¼­=Á}å/¿xþÞ·SžàöDOÏÀ/= O§×øæxqM÷«/ÛŒÀŸ»¨]íïÆÍ~â A$êużűÉó5¡àΆÏìxžÉ–‡_°ï«5o·Ô?@*XF'˜›}Ò€¥ÀÉnd¡½qÇøo\ãͳ%Ú›|KdÒéŒãdCÜå| ’²w.r\0æh5² Çò k`Q uØfioÒ³íDh5ø–cÉLê²÷£Òm4ËÌnôS ÍH3ûÜ샜Ð÷Vqô³µ ¨²¨…Éæ?–Ddm2¿¦žkÛx?žWSunËŸ>D’;¤!ÙkXÒNëkré¼Ù÷Zi§ˆ$•,T1zÆ#‚ÐÈJ˜r…žØî"ÝœÄcÏq1ð0ÎÇ^åÌë’|1.^¤âE,A¤¹}’üdiþî œ”‘K”¤Í5“í¶«²¥Sã^žüÞ mrq¾½ÄSc¸úægŸçè¦Ë°/¹ºââïr’_Û 8Z´sCÎÍ•¸´!î/—§˜;î»ù>zêô%àÄV /Ô\k_>/²Tk„ˆ ˜hÌåák+ðúæö@°÷%ÏŸ!¿À¯]†§¢ÍØ:ü‡·wGï;;BYÁÉÍ&-O²²ƒ:¤(¼ýô·8Ø1“B uŠÍZÀ¤c‘gf‹¬®zœš/rþX™ÉJG*fj³5|(yezˆc¼iµioæíhÓiÓÔ°}“ogò%ÇÆÇVícÇ<]ogÒLeeÛ•'D&-Ó.”>çXZÂ2îh•´¡¼VO›+hû3ús|ÏD×wTCë¶å3~'é1ÐQÒ0&1Úõd£-:¤¡¥N«¥º`ÁPäÃ,0&.ã–ÚÇj;ˆÓã4¤pŒJŸ7»ÇÈÛVï2îèP¤Êˆ¯3ΙmR€(Vi˦›mD«¢C8žCNXk!ö’‡ÕS›‡¤-aæÞÌ>0ïSª6X‘]Ú·C)maHw²ýª6€1ǃJçSØfÒçT4Ü„[Q~]–¢qa„Âu”¢1vLŽ__Ô ÷øà…Q†}ÉáªËz-`}›¨µªÏÜTžÙšO}¼ÈHÍ»¯¸i÷½“†}ÐüdžS3o¹äÅíª•lXŠj­PB¥0<–cܬß`w¢A‹D•Ø•ð‡7´“†Ç§àw®öåýëäl‘c“Žm¶Èù’+K­}^è ÇDL&@ZÝò™Í1Õ8}¨È‰éÅœE9̬¶˜jyX ¬Úœ]iòÊt™O=6Æo}…¦Š [[äAÞØD!« ËX¶…ÚÙWQ,ê8œƒ±6¤ÅškŒHK€âýÈ6À”m›>—Šƒ”:×­ßs*ó¹IB1Ÿ}z‚éÑ<‡7=æk-šŽM=§?S ŸzÎæÔZ‹ÿúê:Å¿4ËW~â(¿ú¥eÖ~ãÊÎ¥é"üOOÀß<¯™õñ=K¥AÐ×´ô¨}þ:üÌŒ8:˜ó¿ü|î Ý»Ó$S‚t[Û=x¸D¥RôC®ozR±QwvXâȸ͕k÷î\¿ê ==P¿6íµÂZfšhç1ÓM”ü&-…IÀF4ÚcpeJ?È›’™¸éãø¼¡ò•:“¹©…b ÈÃ(ò¡æx™ö @írâI" ^¶ £ÎlZ7ÀaÖo ã‰)+!* –,¡%HGò0žÓ‹Ö±ài'¡JOŽæø76àÂø-²÷el¨“É+þ-¼Òs㕲Ñ1Ê77ýæõÂèËÔ“5úBÈöHa؈k¦òr2‡8[&°Ë w¹IîõbÅÓ6HfDe £®”O £ímëvû“k̶Ä÷gôK\‡0s&}E[ÒcŽIs­ÉäKŽu?'*ÞÑõ±KðØžIEíZûÁiʯUÖß;xýca ÝýÒtn™±œàÔJ(®/¶{ØI´iÊÜy•¼r?écÐÉRìXîÌXŽ÷_¬0T´q}‰ëIZ¾ŒŽU*íΚ—Þ€÷Ÿ¡ìÌÕ\Ö¶|Z¾VùÚË8èEuW1ê„ØJ2?žcý¼šeK—²Ý¸´¡?}Pμÿü£®ÏlÝciÓ×€aà$|L‰ ’”Šj#Äõ$3 õ¢Å˜rhÓgØ ‘R±Z XÞÐ㿘·xðX™sk ^Ÿ(ñ©ÇÆøÝo®´U—I2ç[`+E>Œ·^²½Ž8:z)MÂ,mú·ÆëH'¤,@‰×ýíwÌvô¢ÓÒ¤xŸ0%‘9—ÍÛ^ÌGË6ç—9{´L½rmÑåÚbkG‰c?4Uyøh@Ér8±VgÜ Ù¬&Š63‘vš9‹æF˜ßjñ±M—tœÿãïœç7/7Qÿá²¶E¬µÛÐ.ïþÑLì<¥ã}évÊÉLGªzð[Wà'OëÉî3Çào]ÜÙõwâ !C·ªÌV&Ê3z\Û JOŽæoy›°ïŸ5o—Ô7@G5Ý ð†Æü­Úyii \²v(©M¥l%R\‹$=Ê¿\yÌr̼(:ŠqÍ:c?è¶::ÒXNsºV}Xð´Ç·@¶Õ ¤Y¦Q–9q¤6½Æý¤T¤Äxó\|²×õ¸Œ2ãc”æJÌå¡5gqÓC¼\‡%_ƒ¿0î/`,t¤“ˆÛ•!£MÉcnßwRf¼ë2ušet ñqtB¦Кà,IWíá•¡¨/ÚSµJMۉÃ’Ex´ˆœÎA#D„ {ÁÅy«Ž}ÛÅ2\½·û&S–ql.&p2½ËÅ×ÄëAê>”‘ÁÈo™ I~ÑvD˜½L¥ÛK§ca´7¹^¤²ä<]Ö$CE›Ù‰<³yMä˜ÉñÚõßy£Š»X‡ÆóL:L×}†<ÉÛ‹-Ü>T{ºÑÒºÇt%ÇTÃ', mºxKNR4@/v½Ê-æ-Þ{~”•)(ÅH+ tAÞ&6¡mX"µÏª7C~ÿÙ5V³*E{ ‡N15ìpt½©ò’ËðˆH--¨6%#EAÑ—™ÈóÊåÚ–?”7Æd^ßC¹Oe´`ql¥çKn,y—Áà$Hq¹qÙË›>Gr/7Èš9p}ÃgeÃ'0¼†Ô[!oÝjröH‰“›.ŒùÈÅ ò|4;LeŽÝG¶„B*…EN€#6K ,©@Y¸–ÍhÙa¥êGëh¼ÇÀØ›™+œ¹¨ù’k„á¬v^ æf’–íï #¸ËÇ‚‡Š\8QæðT EÅ“%‹Cg†yêÌ0õVȵ;-®-ºÜZÑÎ=ú%!àцyê¸OÑ9¹Ú¢àK®.»)»±B΢\°*Ù”K6£eI˱yqvˆ­‚Ã箬ó‰‚Í/ÿó÷sù_~~ÿüÇ·©žšã7~>cO¦+¾R…/ÞÔÞ û¥K›ð%øÀ!ý»×ßǵРmÝãÂccÚÃc3`uÓÇ€ÐF=À“­€jÅáÐhŽÅõ{Ÿù³[ê_‚4—C4mð$*DsÀ³€ Þ´'éqZ´ëŠ_)múª IDAT2/š&¤ÒбÉq·´(ˆŒïd¤@Oœ'*Oe™—XÚ‚Ò²iΕá\IK“Öx£7\-m‘ƵYÏ/eÆÇÛòe~›rJz 2åט”¤¥7ßɱ@;¡¨…ZŠt(y åIIJW›Ð Û $†@.ÙDgæÈhˆ¸;"ŽbªŒ2c0ÙÌ'@˸‰nÄU]R§ûÙ&ARÚƒTHW¶E µ«bUe[‚Ô©¬èÙdï#ù? eîG©ì½ªíÏ9ºoÓûŸéYÏ\rmKd€¸ä1*PÊpab.ÕΓ8°ˆNÛ1PÙçFʂɊ“¢¹‰<Ãe=5Y J^HÎ È/sn¾Ä³¯mñÊÕFÛn«O²-ÁÇ­P $sU—šÏÒÆþ6ÜÕfH½2‘óX-å89m³´¸¿þ¸[t·4ç—yæB…bN0U÷9Tw±ºàS% °žmq½RäÇ>0Éž]ãÆòÞÕÔ y‹÷ža´0Ú ¹±âÒò$¥x(0#t«.™·õBŽLä±c”{˜6.2ÆíýÒT%Ç£'ÊLÕ}J¾ä­ÅÖ6g ƒ"…5æ¸T©DRöÒºÇá©<õMŸÅ5ŸZ÷¸MkÕ€k‹-ŽÌÙÖ‘2ë›Ï_ª’\Ž%°-°¤ÂB …"T ,HB)°…íÇ"—mA>”ˆ‚ÍF]hmòxˆ÷r‰Ó x’ÝÓAn^G $Ì}Mrñ»SG$u*FJ6çO sþd™¡²CN*&k.ãÍ€\4ÖKP-ØlÆŽ•¹x|ˆ TÜXjqm±Åò†ÏZ5 ì26óŽÅÇãÔ|‰±†Ï‘-—З¼z³I5#ÉÔ.á%+3§2‘çÄL‘)ßg©œga¤ÀO¾´ÈkÓe~ç‡Óúñ“l‹ž´Å{c±ó¾xSÛ#ÍAÑéìúÛ±àÀOŸƒÏo§ßn·§çJL4íœaÝ3ÞÅZÕg2gáŒÂéÙ"‹+÷¾úðn©€äJXöaÝG4$Ê 58 ‰Äñði›ÄÐÎ#i›$Ñ9Ô¤¤%ñ·Èäï,²’š8-9VÆËlJjŒû7±ŽÐ*h0v>¯Õî\ ‹>¬zZq7®#u=ÛRuˆm§Ó ™MqÏò{Qf²€gÁzk¾¶§*ÛP°P¶BRß_HZ²g’`;mÛ‘gNŠm‰íôN‹èPMÜþN °C+Û¦^×Äi*ºÀ¨œ¥=逯ǽ e{aèUGr>늻S}¥€Öös©zcp³MMT1Ót+‘¾Å<£¬DÕ¢ƒD+©Oê‹â")Õw#e›GN qáÄ0ż.5'%_R®º”}­÷;itm‹…‘<{d”‡—øê‹ÜZéŸkõä¹Q¦†mŽ®kãÓË·[ÈØ.®{œ*Z {gf,ž½_Ô î¢›ïé±}ϳy†<ÉüšGÁY¯\_Ô «©e?“•gÃׯ üÐû&ø“ç×yíZcOízßÙQÊŽâðš‡ë…Ü^ñR%¶w1Ljº ©#nÈfÅfzÄfi}ÿR°˜Šy‹Ê°ÃØ“|Ù´<™ú4Ýø8¤é)¶êAGú]S±ëç{d”b(™«µØ¬…,`ÿíHJø˜Í¬’¡JÊn…Šï½QÃëSš}kÙ£”·™EØðóÃllº) a[ËÒL&Ké€àR‚;~2¦úP‚ $Œ€R¨€JÙfµb ï¤Z×m=k³D´ïÒ¿E¼‹ÏgÕë,¡ 5Õê,ÁüdGÏ s|®„í†CÉäF“Š«MAÖ«‹ëB&FÆG&š>A#g±•·™ÎszV‡7Q 6k«[>+[k[>«[>¶%øÁ§'¶™­ºLÕ=š¾ÅË—ëø}õõe—ÍUÃÓŽL)F=Ÿ¥¡<³uŸxy‰¯­pi2òì¸éÁÝÒq–ö#½ ¥uñsé ÷¦ëï ãð×ÏêxJ³åvßǃâfsó –b²áÑh…Tëi ¸²á33–c´åqv¾À7^’÷<óg·Ô?@j*Xñá͆¶UiF )–Åjn¦íJJ"cä‘]ÎC˜`üÎn´Í´Nç ½3ìvÞ<×ë¡ZQûnÙ°˜×ì†- šòB뻲DŽЅ²÷Ù3_Ÿ'ûœñ³hI-EjE»å²¥5XV4ƒ«ÎÀ¢[ýÔ¿-O¤Õ«¼N`¨ÓùŽ`Í8׫[hoQPX¨ÄƒJ@†H×Õ±ÍmÄ#²çã6dÆ¢ Ÿ`m{œ¾nÛ&Åø.Λ*EF{hE:FI\‡ÌÔgE`Ì Ø5Gx~ªÀc§‡y`¾ˆF=ÉèF@ÉŽ_¨ ÚYilÕlKpb¶È‰@²U°) øKœæÍ›M¾öÒÆ6.^–¦*9ž>3Ìx=`Ø yk¡Iã€ù-®y?Td¼àŽä94ê°x77q{¥»(¶³xæâ(œ"'áІG¥åÓò$¯.4YÝÚÙ9FyÙæâÉ!N¬¶¸Y)ð©ÇÆ©l¾õÚîâÓÄ’ˆ‰z@Ñyõv+Ùà´÷îÛRAÓ³²C, G' ,uõGg \f.ô¨4F |æÒ*—–‹¼éñÖ¿±/Ž}ÑBC;mø±“ú÷Ï]Ô±’›bûÆCÀÕ*|w^XåáMRö$%_ryÕÝö¬UB)¨4Bꕳ• «ï.5»ÝŠ-Zz /y° …ʛǻ­®@%pºR }ÍWû½>"‰@kÜñáx¨ƒÆNç´w»;––À¼#È9»ûÍžW“ß¾‚†ÔÎ7PÚS߈´M™)Aê³ »mrÏL©¼ª{;úCVæÜ JY Kl=Ÿ ¶T„éM¶ fIŠèOõƉÆ’Ø*Ú.߈¬H*¥LR½Q~R®þ×>/3ªy–HÞU!T<…¶[ƒ»>ÜÛ–àìÑ2ŸæÐD[A¥é3Ñôq¤Âõ$ëõ­zÀf=¤Þ ·õÒʆÏÑ™Çõ%«å¹Ã%Î*ðí׫¼rµÎHÉf4â¢9TÊíã‚„¹ºG@ÛËöÊzR±²á1c[¬ÃÃdžX\^? ÒG"œ;nK ˜)òɧÆ)ç-&ZSõ¤äzd0-ûd7ÖÏ¿YåáSCpg(ÏûÏR)ÚüÑ÷Öû6¢ÿØÅ %˜mh¦åöbž˜ª4@’Š–o3Rð)Šã“y¾—éïÉQ‡?:ÆÉ¹y©(ø!2Ž?§2š»¤Ñ;¨È…Š\’wò¡$*r¡ì:½*!b°dÁFÁá='†xåR¥ô¦Æ’B3‚àæú/·\´ùð… £ždÌ ¸ºÔ¢~W3˜4x' {%‰âÕ+5?;ÂÑ-—kcEÎ)ó$àH Á‘ Uj>WÊÀ(1dŠÒƒ@JE^J$•²MÍ3öm¦½P „L ”3>a šbGY ,eµ™ç¸Na€-§^gæK|ü=ã ù’c [¶š!o­{¬mVפmëUÉzÕçò­&å‚Åd%ÏhÙf¸d3š†¢Zµ·å<Ëb¼ ‚×n4‘ö(°÷gWk„¼x©ÊìDžSó%š¬•s8KüîXŽ+ ­=•Ý‘þ윭è0‚Aò¬6= о½ KÚø¡ñ<³£y&ëJ)î¬yîWÑôsTlŸ% çæJ,,¾»ÔìúH­&s0_€[¬†Úx]*TOŽP‡sÙ¤Ýn²ï&)´›åZ l:vÐdNƒ¤¶A i/ïÓn$8½.Ζ#TÄÞ”PÜV¢ØOE[¯fI¤hón@VǼYÒ`êTÞ¶~èTŸˆ<-¢¥„–ˆY‰ˆÐ%›]‰Èn¶7®'J"aÉeÚ˜JÒªr™Â…Õ–ôÄÉÛTî̪²’¥ÈÖÎBƒB †Œ¶ùG±$+ºënaK¦*§”xÏéa†Š6…PQ©»Œ¶4Wr½êscÉeuËßQ<¢x{¡Å­U3‡KÌ(k,—s|è¡Q>ôÐh*¿-ŽÔÇœ0äéùjÃ#‹½+Û%ÝZñ˜,0Úò¹x¬ÌHÁ¦ZØjl5Bý©Ô[arŸÅ¼E©`S*X” å¼E©h'ꆮ§ðCEj¯n~ ðC‰¹á/äeãúR^óå¢ÅV=ä·¿¾Ò½_*ARüÀcŒÛ‚¹-—| YÝôyófƒFk÷Üц+ùî›5>9ÄPûD™Ñ¢Åo}uGÕ¤³GJœ˜)0ÓÐÁ߸ÑLizÉè;hmC© ÂeØ 8:UÀŠ6Çå‚Å®ðÈ©arB1^÷k»šnC©h´B6"»‡¦Òt%Ri·Î9G³µmIÎä‹á’Íl psá± ÿîKK©1r/HfÆó|ú½ å³›. Wq压<àç³ ÊIa¥löJMOñÂå:OáhµEé˜HÖ‰Ô1V«KMétàáEßMO2š·p¤b|Ø¡¾y¼‹UT\xtu' ÔÉæÈÔë&bÐÅ@(StWzÎ;w¤ÌÇg̵ؗ<šžâ•ku\_À¬ÆD/ª6%ÕfˆX–`¨h3T².jÐ4T´©,-ÉKoר7C¦§f®¸¹â±¸ásæp‰Y#^ÈÂPžÿÀ/\ªñå7våD¢'ý?—áïÀhä/Pðý5Kéõmª|œ(ã(Ũ²¸áãúÛQõòŒ}Fü€—øÊsëï*5»þÒJ³y8\Ф5š!¸Æ ׫g:pÈ»ž¿W(¾©´Šáª¯í°æò0jiç6|-mÙi`ô{»`{Pqàƒ–ÒjvžÒ(Fl-Ir€^ÒÒ®¬ÊùûBF¾ €ÙLY S7iW¶î„SÕ#¯å”¤P!B™rª4QB´ÕºõM (ÅÆj–¥4>е u낾kÖi6:‚Å7 Õ¶:”Ñ4e^C¼Ø*­~ÊŒ£…³9fÆò8¶†%?dlK«(„RqkÕãÆR‹Zs÷«L³òÒåã#玖™%MdzŽÔjF9%Óš€HÞZh12í8Wx½êらf%ÉØyẪ•J{¨*ä,¸ÅN<ÔnV{Ð^ª”Jœ´*9Î)ñêÕÎÞ„T³AštÖÉ[ªyˆ¦ÏK×ûV;”Rñü¥*Žk/U¹PbOçùÏ?6ͯy©«š¥cGÎ9|I¥ésc©Eµ‘Ví¤ÉmZnH9gQÌÛ›Ì17™ç}F)Ø‚Šë3Þô±¤âÖŠÇ­¥À¶E"4v"µ;ËÒïSÓ“Ô[!^—K/*Z<óÐ(Su9‘瑯cd`ã".¯G¹¶%xæ¡Qžyh”œ‚™-—|òýk5‚»ä˜!M÷®)¦j=àûo×xÏéa†½XN«d*)4 ŒYÛ`åE*s‰DI)”¸žDFR$›‘¢h"+bNJaGå%ÎÌ48™Ç‘}‘vó- eØEÜA%xðx™>Za(™uuÐÒ—®ÔB½FËðžIJÅfM²™q4騥T2lr®p=ÅËWê,¬º\<5Ìñ ÅjÉá‰ÓCŸÉóù¯¯ìÛ‘[.ü«7à‡Ã·–´Ä¨K¥œ#xèh‰ÑV€-%·–Ý®÷Úðl‚@2Ú iç˜Ëqë]䬡€tµ©Õ¯Æ8QÒ@¡©žEè>æZïÖ»”¾ˆ{$™íñ•vë½äk‰Ëx¦ó0åÀ¢ ®btÞëûÓO?ô[v¯ÍºTÐ’ˆZˆò¤– ;Z•2¶îlï¼û«û€Pϼññ¶|"“O¥¾ºÖ+ˆÜ™gÈ´?D¨À'mˆš-?ftÅïBRÚž/&z!Ë–ÁN©f€GÐÎ×>nwTl'eÆ™GšT¡‘OJu/ŒhïD’d ¤-ø©OÌph"O.ÞÄIEA*ò^HAJò"'%MOñÆb‹Ë.þèX¯lø¬nnqdºÀÙ#%Jš®¤ê†4]EÓ i´$-7¤éÉ„÷È”èê­h?´Ñ,0c7™«µ9 A` Bm…Àn‰ñ´#•Ž’ ÁQÒpè¡®Z½*ÖÅvb–RX ìP =+ #9>ñh…·®7:KX$AB0“[¦ä‡”ü×nµ¸½ g;ÑK—ë4Z’ÓGJäB…3’ãg>3G+²áBw´ 78e›éªï+Þ¼ÑÚöücÉÄA‹0TH «›>sG*þʇ§±-(û’‰ºGN*–7Þ¸^§Ú¼ ÙV=äê—“sµœäV¸dŒ‘wJ‚4;‘çsÏL23–cØ ™l¨PñêÆ:¶Ø )5˜¹BJ=6ªì;«oä›`‰JŒ=Ð%Ò"ƒ ÛoÇ Oœžh¦èÕ'‘ e¥LŠD¢táX™?Za8™nÔ=É‹—ëø¡Â²t‘qt™ƒ¦»1W,­ûÝõÃ÷JŠkwš\¿Óì»ä˜{{дÖ(pùÆ&ÒoR̨½éc‹è> ®¯p­6çùúÛ$ ÈÙ"rÓ+°mãDÇ‘wª–/q£ëü@áÏתxŸbÊÃy>ta”/=×aa@:w¬DI¸Œ»!¾¯¸~gox{Ñ›7´ªÞ#§†˜—Õ‚ƒÊ Cêfi­è½Ë·JAÈ÷o4p;WJ‚¤¢ÍæÊ¦Ï‘©…PRT0^ („’Z3äùk”=ÔÝ K×ÌO䙲}‚¡ô¹Ûɱ|´Âû#©ÑDÕ£HÖª/]®Q? g*{¡AÍñ¸8Ȳ/ßj$žÆ”±®$Ì3¥¥Ò&;® ˜ÚjÙ*úßlIFÊŠœT‡’’†tHi)©r—¤ÑJ1؉ÕÔÍ´˜IhæAQŽ(óá‡+”}É´PoI^¸\#ZuPÒ^²4¨¹Âó$·6ËxÕu:1Äá-ՒçãÌlßùÆ*ÕFHeÈáä\‘“s%NÎ)ôš’ õêú_||†o½ºÉ—_ØÜ“ƒ‘ÇO SE_òúÒvf’IJÁÒ†dvÌ¢ì‡\8Z濳ö®Q³ë Ýraª ã¶¶¿9ZlÛäxžæ®Ò]šÔçÔ@ßS¹Ñ¬à…®xp4F‡òºOÖ„¶UÚëÀ8H©ÑNå%“Zµ®jvB@ÉÖÞìòD êÏJnè FÌËú¹Ÿ~ŸW ´u*;ÓÎŽìýQúÍȶ–‰@†¤Ê°áéі̳ížLÌcÃÃ\R¾™Odª×œè_âqÎR±ç:]”NH¢HC;o@¥¥G¦ô)N·ªdQYiR.Ú4]Ér-`³æ³QÙ¨úÚ^æ£Aq…•4]I­ÖÛmYÚ.Ä÷UßN öB¶ŸaØ xæÁ^|³º-Šü âÝ|ðÂ(ùPQöCÞ\hî+o/ºv§I½òô¹&Â% [õ€« ­ŽÌ»AJ”:ˆ¢‚©ºO.rJòâ×ݽ1 ]¯^­'cä}çÚcdPã¢@:0ÉôXža/¤Ò Päû×\½Ó|Ç7Zƒœ+R‚Ó6/bª –Œ$´äFs¾±nDR"©–dı”¯}>fæICRd‚ øØ¢íÅ.Œâ}‚ˆC·t.=|rˆ>T¡(&¼€-7äù·Úà(yƒ” eiÐsÅÕ…&+ŸaZ*êy…s¨ÄÏ~vަ+™ˆìˆl©(†’bݧj/™ X/åøÀ… §g‹ü§?[Ýóeª’ãøt‘–RŠk‹;$ÁêVˆç[ û!n)Ïщ<×—Þjvý¤Õ®¹Z­lØÑî®O–tz3„MÙÑ;ÍI“ÞQŠvžÐjv‹¾¾ßC±š]¼Îjv½PÀn»å @”)ý ¥vÔЈÜz…~ ýÆ©ÎÏ¢@è¦î¶“D¨_ÊæíRÌãn€)9ŒÁO”`Ä@B*" ”Ùë%À"Óq1zÑ+0QˆY@œWšÒ)s1ÙÞ~³üìyÑá9%·h6!TÊ]x"Y€4I¨t3ìf dÙæÙW·h¹r`á§Æ6‰ã›t#*‚» -tc±Åñ™"ÜaÁgŸã_ýaÆ1EÙi ­Éɹ"G'sTš>2P\¾ÙH_Ç´´êòÅoûäríAo m·ó8¶@A½v±cT¤xL4›!µF@¹hóæ­oÞhœöÉ#ÞˆàÓOŽñ¯¿¸Ø´A>ñø8¼XÁŠñšG!”¬løûÔΗø¯.³ÕÅÆ±˜·˜›Ìóø©!ʞ–påvoé´Çñõ¥'çJ”=ÉÃdžøÂ7Vï±÷xoÔ?@òÍnºŒ90êÀñ‚V9Û ð·©Ú%4ÈÎÊL­Ç•.{úÞ˱š]N{úóe÷ ±}õÁN;ðõÛ·úH­0rÔ PyŽ\}DZ öÒ·}]“•4A[<Ñ£Ì0V?u÷U–ÇBåã ¹ |•‚Ü¡œ¬/†N2’:ÉèšXS\¥ÿµ¯ÉvYV|N°m,¶×¿´M’¹²hãÝøžDbÇ‘Tý”‹°â TB0W%ÂÞ+­où¼u£ÉÙ£eš¶à³OOðæµzÛóÙÛ ÍMäyp¾Ä°b)ÁëWë÷L_ìDƒä Çãíú{ÏxymÓç­›MÎ)ã:ŠÏ>5É÷î¨Ú M 9|öé Š¾b¬å³¸æóí×·î©‘I÷Ù\¡ºî=Úè!E¢ž,1_.M[€‘!GÂøÍmÇ d›ƒ$DÚÎ( œ„jKžŒ4KÅâ }éÄhŽ]¬èAÈz-๷j„ÒC–@(•Fï R§ñ¶¸êñ…o­rúp‰µ­€•M¿§mÑ›×ÜYuyæ¡ JÑplÎΕøÛ?z˜ßúÚ ×]æ'óÌOå™›,07™g|$—\?Üòi¶Bn¯ô¡þãÅUÏ );c%‡ãS®ÞƒóÝn©€„Ò*d+\miïm”´ëïÅHÕNBv•:"u»^ƒx¿üŽŒ y IDAT ^ncB¡½ÙmEÞì6jÊÑŸÛ4Ib?më9.³"ƒ.îUVˆ}õPß[Ù†UZÊÐSÔ!­W]}å7vþÂÈÐOºµµI” ˜„0TìD²‰q̇õ$U)3Y¥ÊO8ôzŽ 65IOGÖáÞ­>³ 1HŠ•ù„ÈØÅ’¥è| ’âfÄ+‡,‚q‡p³C_Üä”E8€½˜”‚0d eï•^¸TãøL‘1+D•>þÈ_øöš>yÀé#WpP y!µ`˜ÍÚÁÆš$ÉÈõðA?»0l‹{•^¸TãØt‘Š ‡Nmñý¤Ÿøðe[0ÖôÙ¬…üésë‰5tt¿ÍÉÖÃdg£ßJ¥Ó²ñïb‰“(\J¶Ä6³ã9®-¹m»£m ‰48Ší‘L¤ cQ«Þ)KðÉÇÇ(q¶Z’g_ÛB*Ñvåƒ"«Ãñ]‘ Ýý¹" /¿Ý軬õ­/<»Æ# óÐñ!J¡ÏfÁæ'?>“ÊgIÈ)‰ã†8R’‹<¢¾q«IЇ9no(®/ºœ>jáH›GO”¹zëþW³ë )´È½Âm®æ"W×98¤j$Ai™¬ˆ4%6IƒÈ«Ýõº^)msµêÊߎ…t(WKÒbovûY_ú¹‡®å÷P*}¨TäÉNêo[h' %K»¹nÅ3X?õÒQj²«ü½Sœa7 m'ÀÔEŠ£ ‡ªH‚çÍ ¡NÌÑÎÚQJ„ í’Œï”%$SúÔ®[@ç˜Gf[²U$Ø3 ²§ÒmÉ}ªö±ñî†#9 ¹~înzPÄI¥ÔÀÊÞ ¹|ïÍ->x±BÙ ùÈã|÷ÕÍÈ_˜ ÒøˆÃc§Ê ¹–Rlxc÷T?ìD1Óâ Û<¨r’Z.¼ðÖÏ\¨Pò%§Ç7+Âò£!õ99S`Äõ±BÉ×^ÚÀGâõO÷Ó\‘æøwÚ Åè5¸h^W¦'žäX#¥jSR.Ø8¡bzÔáÖŠK UÛÖÚöEVÇY€ÅAzæü(SC6Ã^€’ŠçßÜÄ÷ÂV)„Ðë‘æeFiÑZzw¼ØÝs…”ðÜ[ÜZjòÁ‡+ŒK‡VÎ¥=Z²ýèB¥Ø¨¬mù¬Uý((síˆÇñÕ;MÎ)QðC=Qæwþlù¾W³ë ÅÐÝG{®»îjœQ&bU;_(?l«#%E™Ž1 ;W{pe{‘šÝ’ÇCµa&ã,Yhì¨ív0íT~ÇòDúP ýL‘³ öd7ä@^t®Cd¾{Ö×%¿!#¯îÒ,`ŠÎô*/SNÏ:ãß±›oK |íÅN„ƘUF椎´´K˜åM5Ó”lKq:¶ÑŠ×¯7aÆZRj[³Ì¶¦¼îÅ—Eç´ËÙh1¯çÇ8^hoxѬV‚±Ü=ÍïD÷Wx¿téF“³‡KLM 6?úþ)þ¯ß½} ¤^¬CQ$·W<Übéžë‡^ôÿg Àëךœ9\f¢aÑáã \º|°»›©²ä±#å@R ß½TcùŠoÔ/ÝosE¬þÕñÉÅ{’ìÞÄLÏGç[®"‚¼ÒâšÙñ7W<éQ,)"M"}Î\:J'f‹Hâ.E'’ Y@Ø™!`¼¹wæzÛþœ>®\ê!³Ì9]çt÷½}znóEtŸ2Y™YUY™ùÏÿgGð ùxVóöªÏÏÞÝü@\œïJX_±åyE$ì9&)cŒL‘¦ÓZÓ JnˆÒš#3×—ý~k‚D.ñüšŒÉ6žQz>E3æWh˜()¾ød'ÒTµæúªÏ…ë †„ýÓ©:x¢ñ`~ív~ì£ľ¢Áw_^ãoÞhì­“˜v|áz‡GNWqbÁ?ÿÅE~ë/nðÞõƒk‹´;»DBŒ*Ù5Ë"M+Ã$%¶H‚ÁØH[§ˆ)H7ã³×ùFP,Æ&눓ÖYô‚õÀ¨cí¤n»•;b¶ÉGëœ';ö$¢¦Ðe‘:Ýr]nUh' )¿½S&‡m^ßÐüY¦!®8åÛa’ˆX#|¶z(L®ÏWr°(KÕˆa,W¾qÆäôןlAÛƒ!D>…Iñ¨„ÈÆ½¼Ö^ïO#…è#SüeQ­Lþá¬GTQDáþ¹¼kÑ’h ñ™t,ˆ#Æ’÷ÝÊ­UŸ7/´yüLH¯?3ÏÿùΞx+ûÜcST” ê7Í—nvyà±ñ<ãqIœxˆÚã:Ç‘iáY\_êñî•6Ÿ¬IÁo<;Ï¿ùÿ®±±ÞuÞ_}zž¹rÌ„¡ƒ˜o¿´Fx°¾¢ØÍwn€Júù¤ïOTë’s}¿ùÄ?rÃOi„«8<ír}5ÈQ9Å1"C øJ7 1|é£uªŽ¢Ä´ƒ˜—ßi˜oR•:©1Þd¥YÔÒŒsBš˜„f?»ÍqÊAî+6ûÿ–ó2؎ߺØâáãê½ÇUü«¯ã·¿y‹—Þmîi¹û%»S±K$±[Yöá’câU”ùMTí:±±IJìq²‹û2Û'é^f“ò÷Ä6&’g"£f¸à¬kŽùzû‰ÇNë³›ïeG¬Ñ€Dz¢£Ë&¤qõ­N=–©‡³3;©#¹R”nc3 0mY=žO(V; ¡5„± »“„¡l—ÈÀư‡#“ªY›ŸÁºõ±=7[Pnj7$ì=ä“€¯l|Ì1I:+W±è²a¢íÉã©,•1z¦Š#}Ï>ÞØàÁ£ej'ÏõXõ]Ù yŽà OLQŽŒ‘¯™Øèñ=ã1ɸ1HöV~Îû `K;¾µâóGß_â+OÏ3e=èý‹_ZdaReÎìNÅ.™T·¬Ã†9k‡tÈ…ce6Bð#è­*ôeµæ>”_ÅßkIGì@ò×ÆÂ¨.‡F­pÖYk‹tE™g3èÍïNÛýN꼓¼‹òI˜Nl$_õºš2ŽT›ÑwíB¶¼ó]ÖkË4„ Éo`Ú²XöE p ’‰ƒ¤!²Éwzky†©ï°HÇžôä@»Ï{˜ÛªN— pƒ±Š†•™®ðÙÁ07f¯,_œ:CZW8‚¸jR]!CƒoÞ«¢ãñÔ9(îÕçÑc~ôÚï3xRóÜÃÏ_éÞ•ŠÝÓOÔ™*+JAÄÆfÈ;—Úh­ÇöŒÇ%ɤg¯ë|¯·‰Ai†1—V&¹®ÁDã8’ÿüùÌÙ)þý_ÝâÚòîNUK’ö‹‡ð´¦ÄÜÞ¼z¾y`Œ·Z_¡ó Òq[ÁZ˜±&7˜09šÉj6¬5Íx¸Ê°A§J›÷8­ÃõµÀd‘x³Ëë÷õ¦ ÑšuX,-áÆ&ìâ[WÚÜ^õm’„a²LQþW`<Ì Œš]Ì>ªØ™ßŸ÷¾Šë|}©Çï|ë&ÿàÙyfë]%ùÚgçX˜tøߺ=ÒEù½&wÆ %`X”+Ì÷ÌÄzZÁÉŠ›ÖaC8ÌiAvp “´0s'ÅP¶a‡kckµ[¤ã%ãØ`±Ó=X @YÏ…ï¶^wÂ%çbm±v˜y²«IãÍΑÆäN&QCë0²L^Zº~Ýòºw„ËÆ\Ìk nsÿŽ4 ’ˆÈ:iHرB2°?ª¾:Ÿ\ô¼°0nR$i Õ½+`µòn¾³u ‘±Yºÿ"¡3ß  „”h¡Ñâ²"œñˆ&ÜÃŒÉP9`«Â{)¯oòÄ™*‡fKhWñùS7xøŸæÅ7¼øfƒ•ÆÎWö¥|ùãÓ¸±ñŠô“·Ù@yÀVB?\ÎäF£Æ¹ ·øÌC³S”õ±ôè-i‡æ9 ÜêäÕ‡ (Ò$YÐÄD]t7e SE÷ *gíŒRwàõÎ|Ÿˆ¾|u>?™K•HuÅ…=®m"s.Úþ᛬hBÑ;U ®)T#2ÍDãKɯ|j–O?4ÉoÿÕ-^¿Ð™ÏÇšà™G&ñÂ'ŽùÉ—Nï`=‹ƒÖWlñ̬sS·‰}QJ™Á$eì…‚„M"õvÚéÅœ»ÒazÒåô‘2 BHæ'Ÿ²ÎŸW/´ðÃ~@4¸ý¹ÇëÔ+/Œ cxñ ÂPg¬]­KíbmÙ…UÃ"eÛÚ í¿ŒjÇ­Pó»ß¾Í/=5ËǨ!cxâT•ýŸàýƒk¬îb1Ý{±ƒþÉ]¤­ÑµžHSʨ›°ªvаHÖ#äpº¢™çö§îJî6ßH@‘¨Ù-¸0cÕì&•M[l°¶©ÏP)¨hß¡;PIÏk "êÕòÎeÇ)![·HŒá^[Üô-Hrà¨gþVJÆNÉïB(2ÐÂ&Ú%¦ß¹“¼5fòÜ´Ac×# ]ãÑïº]Áˆ‰ý°©ÛÕq'ª5±üy/‚ÍáÇèš²±ì„9¹Dз=ºÌÁrv‘6Ù×C$Ì×`~ƒåz¾¹É²¯]‰ö¤ñÔæHë”A áÉ4VA¢†–¬x¥@ÈÆQJ™(')–F€‚´ŒJËúhscUýR•?£æ¦‰p%±#²¼,¸ÑnÂYP“w²‘0[ßä’´ HKž© ³(bQl°`IvÑê\¨îÁYíúP¶Š§|œJL­”y”ÉýÛŠH37s}M©–Ê-žÒLWc\¥í<`ûR« V:8jCÊîD¨xPr“»¼~Ïkô¡Ük"TKÚ® œ7¾+»”Š->CŒJÙUëÕnÊÆF:Q‚•À€ˆ (} ûÛŒM*4<ÜO6iTß[5»U鉴àšûß ˆÚ)(&»_FåY¨‰'‘€†íëi¨ 㨡"Íd]ŠÑŽö  æ3 äÈ« ¥€É¥Kíh´NA–6 ZfqP†=Šç\âi‡¸, À()¢Yq ¢ 2Žp“°3}`Å‚%ÀiL%ÃÞØçé%rnÅE–·ÀÖ[d¬“Ìm'.Ø“XUÒªhmãpiç&ÖˆÈ2™F¯;ÔÆù„ *,E."s­µõܧaŒÚ…pÖ%X0*vîJ@ùb‡sç–†¼è{Syä!Î{{Ïó]X˜åêÕK¬¬¬ìyÞ{-Ÿ}lŠž™fnÒÔ5Fà+IhCü æÖª?ÒzÂavÒ¥ >v²Ãß¾r# B8®g<.‘ò,çν³§ùÎÍÍQ«•Գȷc%Ÿ<;ɳ©Sq¡J£¹±â4¶><ë¡KŠ’Žxúþ6ß}w‰Ž¿÷ÏxœrÐúŠ•O.Fû&¶Yµ¶n²cA$ÌœªÏ œ©3„䜰cf²_*—ñ<‡Fcrifë.'æËLTR BËNEqL»#•È©Öejvž+Y˜ñjN7jpéF¯OU.Q±3ÛýjtI“ÊýT±û°¯Èd'íØu$_ùì,ž¨J3δýˆ+÷~üÄ]¨ØåPLÑd6 6ºÀektºlÃɲQÁëÆÖýõ'Ú¶°B•»ýd“¶+#Œ Z ÌýMIÉ%i¤Ôxùë´“ûÜIÞ£ò ¬ RÏZ=VßÊýLKRÐ(`STVš^ôëûKʱ0\ærçEÿ9*ÇtÐlXÀ$Œ™HTÇ$ØÈÀ -@ñ$ñ¬KtºŒžvŒc‚—àá*áñØègË<¨1y¤¬µ2jq˜²R;‘n›:çÀ[ˆÉ´5P6G#üØØê”k›8†ÀzÞ bDh¯ töàC`T"„oFQšë hBmò“‚`Þ¥#ª„Ó (_îR}s©s @*¹}ºÝf+Rɱ佗òðÉ*_üÄ,±ôì¤F èùšWÎoòã·¼ö~{[Oeµ²âü§™­)ªÂåËŸžãë?2´q=ãq‰°}É^×Y*™¶‹ƒ"I}Ïžšà‹ŸavRIIÛÄÀ›—Úüî_ßæêíÑ.¿Ïzüëÿâ“%‡ª<óPÀ÷ÞöÔ³8h}EÒŽÓýþé"wú“×Sà”!9’C¦jÇKLVÒ‘„ÊØœ¿ÒââÍ®™òäÇëí/}b†GNUQÀSÔYo¯ÒìÄ9' äÀQꆃ¸ýHö™l׎§ª¿þùϺô”$P‚w.·ùß¿~f{´ {Av©ÀFh`RG+‚=¸äBÝ5lÒ1–K66Rl˜ŠÁkóE€¤¤Ü-lÒÎØþ;“ä¬ÊoZ€´@½lÀÑœµÇjçb"í¦®»S£òÞ./mA\76δ6êuÊŒmÚcµ˜kò¬LbP#rï5ß!bCš^¤Q*}ªdBe@D¤ŒŠ=‰‡9 R€ƒ2@ˆ„©qIANÒ%v6_âkÏÌQ®(ÚŽaŸ¿÷³uþßïØXHÛô÷‚ÜY Øœ3…~VGwÑk\éiB¬§¬§·v aÎaCþ {^¹IøP•»Q×ïål#£²ˆµQK[ç¾£%£f·èB]Áº4žüv+;i?;eÒÄÀŽ8žt^Ö=9M;躃èÆЬ¼¤óSyu3‘©œ)Ë(s\$¶9©#a¼¯%ÛNnHÀM¢Ž–Øí8áH´ ¸2uFx_3¨å퀤ñä&°*p"©/ig=Ks<®Y*&®Á· %ÖÈóÞ-‹“0°!Œ-c“°8fŸ¸€Õ±E†¤®Å…-‡X## 7Ú±=–¤èhtDpµDnïYhRÏ9ŽÎÙæ;–¼÷H>ûxZÕ¡íHš~Ìw/žáOÿ⯲»¬û«ÛüðÍO?6…ˆ5ï©Y®¯Ýß3“ˆdÍgë,•8PÏBÁÙÅ5&ËŠŽ²ê0½˜?a‰ïþlc×›·¯uøíoßæŸþÒ!@phFóùÍð½WÖÇw{)¬¯Hcæm9Ñ¿Ç+éùžI÷s ™¨*¦j‘4^/ÑpíV—‹·z‘]µàe882¿†o¼¼Æo~ñ=¥©Oº<ùÐ$?;¿™Ÿ~uº!€iŸÒ‡}EN†´ã'î›à ›F(AË•ø1üî·oóƒW×í¼ñ`Üã¤tRn|Ö'. 3©ëDƫۥžñæṽÃ%8Ñ‹¡#rªvÛ4ì ¬^maº;zî;¸h; X€´B32ÌÙ‚gÀáíÀ0gEþíó‰ÕÄÖ;Χ€½Ñùóö\Þ¾%.RuºšLÏé GKˆõ=©LýE–>a`DÂä¸Öf'±½IOÎ'ýµ68 ;¤¥aR°•¨¥«PôKÙ}&LŒeL’?c€ŠÖˆžU]Ë#e\ óWbÑ%žiÔu÷r± {Fm(x #‚þ¼El@“Lb)EÖËOhràJ¶Ž`âQ$`ÒoEäÀKêz|ìÈÔ úß00»0@cçÀq-¬]Ö„C8ëM8F5‰³"zjêà¨€à”³÷uNŠqä½2=áðñ³SøJ(Á7^éu໬~ÿKœ=]ET5àKŸœ!Ó3—$“ž½®ó½Þ&åÓL2Yh»’®üàÕuþü…UZÝèŽ'6?z«ÁâœÇ/~rtÌÇÏN²Þ޶£t/ÈAë+úTì6¹¹9A^EmЦ'Jæ§]3ÌJXk†œ»Ö¡—Ä;JÆâ-àH €¦‰³b' IDATl{¥rË?Ä‘ê-pÿ± ËÍ+þVP”Ô£åí•Æ-ö™ ÖY Á瞬ó‘ûŒ½QË‘lt#~ëÏnpîZçÀ£Dv(–¡OHúKˆ ×r&O6DàëlR»Mþ}u°mGØ}ß8 Ë?ƨ¦­Æí÷¬uõ½àÀ5›‰š]¾“Hò¹Yïà¾(Hk·óà&eo’c2SÿJÕÇÄÀÀX¦$m]㮼,ѧË&Xl³lË–¹)ë£MÎî&eqr±xÒ4"))QçJK?Ê‚‘j̓›HØ8S9€*eZBªª%¶5"°v:QâŒÀª½IA´è‚ âó›¦Ù¸²Ó.¬¯E¯)7wH¦}§@S,¥ì‘ÏÕTËŠH b-8½K/$K”Œ[Të†%ó»LÓºq™ŽWp´æ“Oò×?[§Ó‹S0$6©€§}H?Ï}E*íø±ÓU¿‚Ž”t\ɵ¥ÿÇŸ_gµÞuòAÈÇAÊeÉjsÞírOu³K=cS­•»“% :ÚÆGÒ['v£ÚG“3Dån;¶g§e%ÙfûFÕ®XC+4vH¾U³;V‚¹ßn”å‘7©74²íô ì'`#UM³¿©JVýLXûœœšš+TÙÈTВΫ$“ÖÅwI€r¡*¡§Ñqœœä’‰¹UõJl\úÀŒe˜rì™Çµ(2ø:µ¿!QS‹2‡$ N€I— ˜D˜€‘‚¢DUÍ0FÔDÚØå€%‘&\V0훜£%ãÑn#²jgùÌryo÷u4ѧšÖ¬»›-ªileqd¾Þ¹ç¨±ÁܧÎS¼ÂÞKâÝΜDuŒH§^ú&†Ð\#B r‡e\Â8c{RpcTxR5¹~$B‘žÄÓ[âÁ‚“>Õ³I‰Ö6'ôi°[¹äµ :1¢ç ±{¹k Ûë¨ö8 mióYÛ…,k§ƒÇ„Y°Bd÷Ÿ|'vÀë/[äª×ߢ E0ïM:ÈP㬇0Òƒˆƒ¶2$Oí€}¯=GÁ§«H踒¾¶Áµ5ŸÅEŒã”=Z±üú‹+FÈü–=‰##B)‰kË~N¥Žlޱe{ıě«€^¤ùæËküÚçè803åòè™o_ngàhk”Oûà Ý[}…”0QQLUJ ­ˆF+$ÚO*׎«eÉ¡ù]G¿ÿÃ%|ÍS«ËËîl’‰`ÑýŠ,À²:Æ.çªs=ÃJL'±‘Bh‡vB­·æ³e?×ø?l©Ó]?Ÿp¡ƒ`'( ¨pŽ úÙ›Ä%tÞ #2(o_3aÕê*€¥c<ŒzaÏÎÄçƒ@¦Ü ;ÉD;ecD¶°r ˆPMKÔØH¼—åìc jú¨s.¢cb[‰Ë=ÃüùV-Œ€Qftê-ci2Ôyom)Û”Làû‹­§°ÀIglŠÑ³v4qr-}é~²a ÒóÀ&6íCCêI%RG Æ>I瀈ÈeÎV4ªOÈCE¨§ðœÈ‘¶”Òü´Ö}ƒfò˜\â¤þÉ÷+@ öñ”"œóˆËÕŠp×|8ƒŒœ—o¥ÎRj”º÷žÇGœ`¢¢X÷6z1ùÒZÎa {6€õbøï-ñß|õ(›.œX,qöT…óW;{’ÿ8EJó-ìõ»S*k÷ª/ñÈé-GÒU’×nαÑmîýÄF Z¡àß}ãÿòkGÑe‡:ð«ÏÎñýW×¹½ìmy{ ­¯Ø2åÉÿ`–-Ç·íßdÕŒ ¡¬6ºaœ%dˆò@(n@B nm¼ðvƒgž¨ãÄšŽWXk…,oe/“¹ß¢í}˜‹}…P¯)&«Žý“LV¦jŠZE!&huB6ZvH£²ÑŠi´Bº~lœ­ìäÛñÇ* ­$ï\ï°Ù‹48‚ݤü$L Ø×ô"c—sµ3®‰‰tȃS‘±EŠzÐ4 gš¯È©°‘±7ËàÈ ¼‘2+Bæþ$­è·Åéó”&úÿ`”xGsE¦¾–!%slL.xҸǞ²*jÒ1×M»†1KFì¦ ÜI2ùNµ´ä|ÀI™kw“¨}¡-héjð´I³¼º) O-5yÐo4)à‰³´±°Çc{ެ. kdÙ”MЬª\bckð„‰é4ã"»æÙÅ@;B¬FmRÓÇÞä'ê)h`Æ: ÐÉõùôùmÝ<+#'bð˜èûéc‰¥D¤Û‚¬½ ûŒÂ8SA,,»¨#ÀÒ HJÒ‰!iòuƒ›¤ÜÁ|>ºÿt”ÒÔŽcZ‹­@+¹F âIE0ëïuœµnWz-¾—WNj䠭 ß<õÈ$Â’ÃÅÛ]^:¿™­êí1ƒ”È7~²Æ'?•.s±æéÇë|ÿ•õ=[µ‡ü¼2HŸ~t’rY²RrhtcþðG+|âSd …{(:™/(Á›W;üßߺÅ?ü…üªK½òäƒ5Ϲ¼ðFãžQ¹;h}…Ì! ÙN†€nbÈyõš™&†R°¾ÒM¼Ù>EÇò¿)gôWÖùGs‹¨ŠbFÅ<ýÄ?y·Éf'ÎØ¢aLÒ>¤ýì+\GðôãuŽÌylzŠž# %Äù—ªa£²Òð #Í|ÝefÂéóh(cptŒ£1jñ€Ô©¡ $ޤ¤Ö( ±Ö¼ünsÛ:'õžTÌÖš®¢k^»Ô>ðìì Õ”iÔE^Óú ˆLmMa W +öÃðcp]8ê™Éø‚gÈÆÚ|$®Ìò)´ÁIÀ [S cŽ i' Ó“¾0;KgÜ@Ð5¢Ÿ½IÔØp‘ŒÈœ„½‰0ÔcouÈ3inp¾c@bÛ²;‰ª[gLR”?®3–'79ð“21¹s Ürû)ç“£.E ÑÍØ¼“nŒ®8ˆŠQ Ôk”Bº_[k's üw3 Àl—×à÷70õÑ/[¯Iò±mH»6p¬&³•U—B`“+³4xEÀ©èºd\‚ÜjkÁý”c˜¶,s‘Ö¹ÿáhÚ„u—pÞ#ªJT;ÆY p6£¾k”×`œž©„¼wžÇÑù‡çJ4<…/4_ÿ›•~»’1¤¸Ð9̓µ·Ù¨8,ÎÁsæù×7£½IõšÃÑùÕ²™}»Jd+±Â8HäÆªÏ»WÚ…ùŒË3• h¹óö&¥ Þ' yrÑ8îh–¾#ùÿ¾Å¦gmbŒ à­kþÍ_ç}aS‡ÊTÉœàïzŽ¿y»Á­UOË¿#9`}E¡;èC"¿›³=T±C†±\RR¢ÑÜ\õs‰)BEÀ©ˆ]²¿±ˆ3à$¡h¾ùÒ:_yfŽõ²b6€ÏöÐ=%Ø(+^~w“·¯wÌBؘڅNVÆsùnô"~ë·øÂÇê<÷‘iºŽË¬ yî#Ó¼s¥Å[—:pß²ÿ}ÅÝå;8ÖåÏ%x(ò`‘¹OÔÕ&« - P?ré†m Y¢üïÐsEÀIX»ÀpcÃçë³Ê/?=‡®ºÌûŸzdŠWÞo²ÚŒÌôPŠ­`iæäûÑWT+Šg›¢VsX®8tÉ_ÿtïþ¬ À²`Ë··›·›Ø€*%ð£:Yv%%W⹂_|j9åP cî;Záüµâ¥´h[߇ÊtAàÀ+—ÚÖkÝ ì =5ií~©›é„5"óìÖçŽÚ¦µªsB™Î×D»&îÚ¸ÁNÔÈ€¨Ÿ½I¶CmÕÊb¶8HTÍB²ã3aŒˆ@'êR)÷Ûö¤ÌÈÒ%ªmy'ÚÖ{½‰1÷½X†Ì…jÙBaòoçã@íÜä~vsÉHlÇ–5¡›?­¡¬ Hr¥ájãÜu…€`àD:ßA…Šê3ì[Zö¼F"mJ/~ŠÔ¡Dfc5ˆNvX~XPÈ,Ýÿ6"7úò8˜ü ¨Û%ç´0´V‚hBÍzDS kœF„» {ýÜ/||!`£±Ñ Ùh…46CãÞó^”1­ 'êé  'YœöXœqY˜vñ¬wÈXÀñÅZkV!7-XjuöÎ%öC'«T*ŠÛ—fOóíW6¶ê„+¹ç6H‰Ä¾÷zƒH¾øñB!˜ðì“u^|cƒ^°ó¶!„`®îpdÖãÈl‰rI¢ôɪ+é8’hkRkŽ4}>þÐ?|}cKW4ÎUá"¦`¢¢8<ëqhÆcvÊAA$]ט[*)Ž.”èù1+ M›wÙN„€Ÿ@y’[5•ÍÿøÒzÚÒ6±×í"Éo ßøö+ Þ¿ðkÏÍÓ«•˜é†ƒ²Ûùæ¨ïwX^ÉsìF6NÆŽªfǦêŠ;$[Ò‰~†g§³ÿí€È`Ù;©_˜“V•Ð5ªG"‰áf^‡æ¿ÓzU(ÿ,òmnÔ½ ÜOK ²åu[–¶ßrHJ3hOÕ‚y‡¸¢LÀÜÕŒŒW?HÙ«h¶D9†#1ÇsêA^L£mÓúfÄZ3$“ïQׂ°Û­èß©H³“Š“ó5¦=ê5³dIAבl8Š®+ˆ…À‹bªAÌ”+™«»@µ¬8¾PbaÚcµâÒ•ðG/¬àçTbÆÕ.UìåÂí.ÿö/nðµgæ8s¤BÇÌ Á矜滯¬ßóx§2®¾b ’êï ¦«)H¹työ¨VQfJ'íž&LƒÜçýà¨èlõÀÛ”t¦$;–¤]Þ ùã–ùê³óPuYðCž|p’·/·¹¹æ[´¿iœ}EÍ xæ‰:¸’› ôýeÞ¹²?6=¯]jó Ÿˆ)•‹Q̱+ÃU]…О‘h›žäÍ÷[&rÏßõ:Ø @ºÞëg^úÔÊrv9‰ è>v'I#À1å {ƣ݄4Àg-€÷»Æ•tâ6: ÇØþˆ~0–NþrûÐÜO]ùñC'—%î6/sÔ$u˜„±q>±äÃfæ(wÖ[zªæ ÙFv*vZÏaÅi sÒÑ­È×$]2, »aFÞVAÏ¿í@ÎÁÃŽòÚØh¸¶“NÜ–Çyì&ÿaçŠP0õ@°5¶Ñ–k¶^šÇõ@_ø26·ì`¢n—f+A+LpغK8ã¢=‰³’©×‰ÈÀjÅÍœLj(E1^¨ñ¼˜™ªÃâŒ6¬”†fÇ¥õ͵fx×+î+¹ÿh…“‹%”]‡ñã™Ç5~÷í/­f Þã/sæ]À£ëÖIÛSø¶¬F;âý+mÖ[-st¡„ÄÁ‰5Õ0¦êHî«:Ülkƒ ÂdÍIEغŽÀb(#X©8\[õùÙ…Vñ€5&$€Xdߤi~å³sD“‚C"à³×ùñÛÂ@²Å™#ŽÎyH)Øt%kžZ@Çy÷b›w.·¹x³»#»¦ù7<÷DšqöTͺÌ9H&V{Ý.’I§ãH>õÈJAו,;¼†ÖóÔõeŸó×Úœ»Ú §—9¹Xâä¡2Õš €i*QL9ŒY(+ŽÌ{¬5Ö7CVfA`²¢˜ª9LVMŒ”ɪ“¶—Ž«Ø()^x³Á•¿¯ ì— R‘´ü˜ÿðÝ%>ûØŸûÈ4½IÁÑFÀýÇ*CíÇÆ)ãê+Rsœ=Ê[HÁã§kÌÖ4˜^±uسi0„cZBe<]®nÆ”jYúÑqŽ(JEÇ (Òé9 ¬·#þèG+|åÙyô¤Ç¡^Èc÷Õð®I®-û[ÔíÆ-ãê+gǧ[„JrkÒ£À|÷6W–zû8Bà'ç›|îñ: 9s´Ê­î÷¥„…º¢ã¦ñõ¿#ÎÙ1@?i·Ýi¼8³Ò:sb °$2'a%„$Ôb-4Þíî+U´ª„a“šaæ4!ñ²5Œ¹ö.D.ÝÐ ¥ÙÈVi‹&ì Ÿ„w­ÈÄ{Z `VA]•»«Ž9—Ÿx,…•"Û¨íîE`ž½o섯¡ªÐ5…(+(ꊪ4ªœÁôElNº©G¿‡‘y ¤Ù. ¸8‰5ÖIÃ()\âÊRª™{!cc›%{Æ 9Jðäý5æ¦\:–…LÆ‚üÓˆHS:DXæa˜F„aZ݈^hIúQÞ1à“†<³”g† UìÈÀÑ0ÕìÅüñó+üʳó0í±Ø xøD•²'¹¼Ô+@‚>•ܽî+„€S‡JM:³‹Œ#j =)áPɰ+‡X‘°‰²}*|l‹ RIÊœ¥#[= ”†\7T, COFl90^ûªÊ‘­+X•féoø æ½Ó{2 ë^0ÈäÅ7å­È¥)eTìG x’UZÎNÀK¾º£À¨º*w7€ÅÚÊOŠ“ÁÝR—!÷¿ƒ²ûžü¶(:n•Ä1ɰ{É}‹"n´ i‰M’{N)‚y]UÈžÆ] pš!2ˆûüo Ђkk!×ÖBÀ¬òJ!˜›r hšõ8>ï±0í¥¾W¼(¦˜Õðٲá9Íçj¬lÜ\óY^ ÝB ‡g=î?Z¡äIZ®äZÕÃW‚ ԸÌCµf2ˆ9,"ØÜóÕ?ÃvÀJÅe­§ùöË«\ºÕëwÂ0 —Ý àÕKm^½ÔÆQ‚S‡Ë\çýÏxÔ'" Ë%ãµ)pu©Çß¾Õäýlh‘EËh ¿|ißüâ"+5E!84kœ ÀøV…¥´ÍM{ÄBÐr^»Ôæ?^%Ê3_ÃÞ°ÔŒXj¶xé½–ÉkÊåøB)ý›¬Õ;©¡Æ”ýˆX‚¯$=% r–V7âörÀíuŸ×Þo&}^¾Ìqµ‹!Ô:½¤ IDAT6HÃä­«žÚpêAÄ™#ðí«è±1HRŠ»Î»äI>úÀµŠâfÍ㔫ì#¶?Ï1Ù²p®")`2ûʲG4êÀËä€ýÑ–íý>#¶²C9”ƒTxÍ»hþäùU~å™9â9z!÷«pòH…n é…1^L«ÑîÆtüØ,êß¡‹3gWØh¼{µcÙ{sþnß’‚£ó%N,–¨”$›žâÖ„Çí?øÞÍv´»opʃš7îŽimš×/wxòL™nÄ©#^¿U˜v² I³äðæ»›v1îç µÌ@o0îƒÏ¤ðùØ™šÀ8aØˆàš˜1ìʸÅ^ ¡CXg š¾eQÏ~Ø„|Ø5ý=ÇPQÐvù&Ç#m‚áÞ +v¨³®ñÜw+€nÜ(w’÷0Ù h•x|ÖICÏ>ÿª46HŽýî·”UPìv b0Mß$`Ú €…$´­ ƒ¤¥eŽÒøVf4a“R?p"QS˪ÐxôÖí-uVïA`“Vxp¦·^^˜^’Å%Ñ%I4cÔëbWà®…¸«j3D„­§`Å(–6C–6CÞ°ª1ž#8<ëql¡Ä‘¹Gç<¼ŠYõ.…1S½ˆº„ùºCi–6n¯¬5C4š¹I—ûŽV¨U$]Wr¹êÑvkÍ€¼ºÁùk”TJ’JIR-+ªvûÈl‰³'«TýˆIÝdªªh¨wÝ©œ\,ÓUfûÉ[뜻ÑúlŠ$Þ»Ùå½›ÝÂóeÏ ”R{+¦Û3ªƒ#eTùûÈ %rq©Çïý`™_{nž¨^æÄF—³Ç+Jr³â°Qr‰÷¯wøñÛ ”Š™ë]Ê•UŸW.¶xâL‰nÄÙã66C¢X#íǹט@ f~Ê¡í˜Iç;×:&Äïqm©GoLž‹DÅÞ\#…îËÛQbWnð'*Š'î›ÀõW§J´ÉåÛ½tÒ˜…*%³õÌ¢¡[ ìW<‰|%èô"zÆ+›qn ƒ”g‹RPëD1;dUƒ”ϳ(õbÍ×_\á?ù̮РCªZSêhÜüø®ÍâÑF+äÆŠŸªžn'³qæˆk%9R–ÌN:¼u©}×}…£ÇJ›/á:‚¶«¸RqhyÍ®Ëï|÷ºQÿÝî;‘ŽUá±YxtŽ×Lå×zðö:¼±ïls]ÊKïmòè}¬—ë1Õ’ÜòÝI!˜ðš%‡P ÞºöwK½v÷Õ@¦¶&²™X~b_4ÉÏϵXõáªBÌ8èŠubp<„uƒ‡(²«÷IÙb4€†kFá"r`7@iT{ˆµ«ùK‚ä.¸Æöª!2§iáyŒÊ7‹#;È'ôkŒúcÇÔ_k(Ik‡$Ò¨æqò0`Ë4yZ€‘OCÿ+M··Ë3¹v°ÎX“£¥ ¬| ŸŸíÙNÚ׈@;¤‘n¾Eî§¼è!× V'Ò –7(‚¤a€ÑÖ#ÕÁ¬KTw€Ó pÖCd'§^—Ïk‡.=}àòªÏåUhïdSÇJ¿÷ƒ%¾öìÁt™J³YR„±æíË-^z·ÉZÓ¾»=®ÛÞhpúx…듧ØûŽUxïZg¬ ’RšZYqËUøZ›ö¿‡÷µÑ‹Ø¸ÖæMë’·ìI¢X««î ÜXêýqó]qàñøñÒÐkÞ_êr}ÝGN¹LvN.óÞµýd‘ö‡Ar]ÉSg'éô"–Ö·ÂQÁrg&>YE»’÷ë%ÚRð­—W™:kb« -Æp”0 Éöó)cdj“âÏx–=ÒB°ºô;YØp’›a€ñ)9¹ó¹|bgž·0G6mî|üùKk|áãpß± ®+J •0!3CM)Š)E·lìõÍx´{17W}n¯Wåž™t8u¸ÌdÙe½Zsi”*aÄ‘†Ï“L°ÒŠYn¨]·‹’+9¶Pâð¬‡Ð,)®Ö\ÚŽ¢Ý‹yçB@×9D7¾0üÛ›+ÃÙ:<4 LA)o„j_ðL >{ÈüuCxwÞ\ƒ·Öa‡!–6C..wó%¦;ÇK\¸Ñ¿x77å"Ь—«í›`,cÉ);H9ImwÒYoîäà¤oË„ß^j£ÂuÓ‡i1å¢gñ ˜h††ÅHtðó3Þ"·,[+9¬ò£n¬w§@iT¾Aâ¬!„ã‘¡@ç˜vÍ}úŒ:£ávmq§s¿¢|bÝÝŽÌò¶—$… 0°,5ª¼Á‰ù°ô;ý¾ Ê@ÃË`Ò|ǯ„‰Ý%…Ñ_Jb^åÑÄ0`£ÉÚæ¨²wÒ‹ÐÈσ³´.[Á’ö¬‡€2í  E8ï×ÒqVCœFˆ tê 1­b2xÝ ®†OÕίpöd•ͺ‡Äc¢QïTKš5‡Õ²C/‚Ÿ¾Óà§ç6Í@'oh«ÄÀ7_^ãq‘õ'´æäb‰«K½;ª{^Ž/”ÉzÕáÜÕààÉÛ'' Er»ò?\âWŸ]ÀU’×Î5yå|‹vâ´cLϯk¾ûÚÿS³¬ÔŽ ÍÊFTj¯’€ª€€fEq}Í'ÐãmÝ„…¸Óïr?¤Š‚ÿúa8V3‹„¯¬_<ÿvƒ_}fžµªË 7V|z#ÀÃNÅq’`š.ž+¸±âs{=èS}4š†cHè¾¼O*!•@Õ=ÎTgŽ”ÙìĬlø,7¾û]œq¹ÿh…ž'¹8]¦Â_¼°bú²‡M­!Ž‹òX!p•ñu•Ìßl£”<…çJë-ÒW‚n/6îø-2kâ¹ñfc”œ/P•´IÊœ4ˆs`ÉîGÀ·~¶Žxu‰ —é)‡™)™I‡éI‡éšÃä„c²ÒPï…ÌtBî+KÎ)³Ò06¯VˆÖPŸp8¹Xb²j‚&_­ºlTz¡æÝKm8V¡5[æhËg^„L”4ݶSèd¦ï= ÁÔb‰……2 Ä Lܱ¥ªKÏ‘4Z!?}s7/µ™œšæ¾û„™#Ζ Й-ÃŒgö+æ7}{âkèFÕ.™¤”øÈ|dÖ ‚—6áz >4Xï™í` Óôòû-Ž.Ó,+Ï–¸¶ì÷}‹3¡#i”$o_Ünëz€ewi`².„@o9˜K+¶^cö-M`â]ëÁ¬‹˜(ô‹>V2¶;í¸OÅ©¿"bènQ]·=>â\” ®u­ÆL°‘±CÚˆ`ÒÉÔìn(sa °r7* ¯‚ž@×$¢b;ª¢‡žÉþNAÓ(ö‹Þû–<KQr€G[7߯I#ÂØ0HdiFÖ±/ÿ\Ùwb³4ìÜÐkD!PöŸ.º&º´hOÖüiEì ÜåwÕGZõº­`Ïô’ݘŸoñãó-¦]:^åÁãÖfª€ðßºÔæoßnZïw»›Ä­¶c^xg“Ï>Vg¢q|Ñ:mèÝùd«ìJ¦']nU\|$o_N %Çfƒ´“|WÛ1¿÷ýeüPg.œ÷áÙ»Ñã¡[>,–˜êFܬÂÕuÓ¿ïul©e7$’–ëpq¹}Ï·ôÝíq=Ó TÍ…~Ö¨üÆýf²vy³ðºËË×ÖÔt‰énX¸š½SQR03©˜›r©×Lü©ž£uÚSœ8TfiÝçæj`TŠÆIZÖ£ä g#•€¢1Uö˜.ºZáî?²Úb‡lÅZ#âc÷Ìsï¾a€Õ1›}Kuö+†úNž¯SÌÛ õ9ôm,¥mQâ\ÊÙ\?Sá¥S«|yo?~Ó÷íîk}~Ë6”]ÂtÜÖøÜYŠNÁÑåÎ2Ÿ=+?ù%¸aHÀÒ7^¯oÐVtäo² uô‰=]¡ÿE¬y»FrÌ-ùh`dÀÅRŠù‚ÃüZÄ|%¼äßk[±¤d'2ë:6×ëÖuºŸ–îŒjä.^ á\]’Ç–mTÙ…==ï‹^œ$6³c­;^ m®Né¶w;¦,Ë"I¶"äàkaæ|X Žn̑㵄휹YÖ*k~£õ%ËD°«„Ò>[AÞ$GÅh±÷>»Š뜂‡MÕ“-ÊŒp:ÈñYJÜ }a‘ÚÝÚzÔßm]×ývKÛdì+ýLuk@â\7¥¼3Ú­EX¶F<Â’ƒÕg¾³ˆÜ»¥Ð¶&N%y–Äìà‹Q§çœž7Áú[Ý—¥ ì —}ÎÔ&ÙW8Æ©Á×Dš=£9¦æ6ïjg[2B¹Pt¨Ûг«°Ÿ=Šg@¤áR±ÕFÄÝO®pË ý,ÔFT@¥no»;U1gáXš¥œÍZ#bv5¸¤Ï 윋]èÁù¯íƒq×ìXiõ-¾çø“' #7Ú™…§æØC.£UŸ½cÇ»š$mtÀeÏhÇVøJ1W”QïU×F+˜^ð9zFbo¼²Äê`޳¡ÇøšÏ˜máDKÜp $b1«~o/’MXì^WÊÛŒ¸œ/ºÔÅ[æÜ|ÏUË«vØ;–ã\ÉÅ "J~ÈBÁåÔLÏÜ· .ÆÉë”æ" õ@“·!°–‚À1"åX ¾Q«†4"2@ñêAЂ2ÁS60Š·íp±ËFv—å=RÒ| ‡ÏT9|¦ÚŒßºvoù´twž8Uáþ'W[B&iuG$].ŒñÂ}á<#Õ€ýV¯”®tö˜Í9,æmV<9·Já]e~ÝËóÈT¢8_‡É¢¸ÍÙ©x-„cËðôJâÏÌ?¾˜ù|tµGäï×ÁXnÛ-ƒû˰»$"ûʰ«(ê½±í-‚­xòl•—]ßÇtÉãj?b¨Ïei-`´ß¡áX¬¸6ÇÏ^úï´­Ú&$Ó‹¯câ\vÈdÇ O’MŠ—Çó:®CËÝ»H2Úa[ÔÒ†lÔÞÎ\Ñ‘8Ÿk>3)Po)˜(ÀD]Wïã«÷½„¿ùÝ?]ÿ ¶b35ø»cÙë"üpø;df²®纭¸÷èjæ9oDpdªÆ‘©®£Œ0M—kÓm¹2¢º ßE{(©—ÀF­ïSk]‹ÔÁÑÆ:ug™Ú×é®ëÖGY j·l'ϯqò|_Ã~¸¬üæƒàä¢LU`ªBn±Bß6Q”›5 <±(,Õ•}ò¾œ,Àù*®pÃÕeÎ÷y\FìÍ¡”b¦ä²ì{T‚ê³â½¶Û¢‹] (™‡¦MÝ..oÛìð©öÎ_\ŸÄãœm‹T.JBÕÝj>€ŠF¯rgvkWÛ|°¬Ë:m`y–¥€RÏD³¾e¾™,åÄÍ`Ä•c=¯ ¦Znv½×Úž%•½¼ù¢ëñàéöÉæ©Œ4ª¡+!ÚP±’]ÞBÙ@@¶t7 •‰O‰o‘¸Lº|ú5Ë«Œå‰|C:¹¯Öån+¯é¸Q‰ò:µÜ²š h-’?adNêl©úU¢þ¨Ëq‘Úoúœ¨Ä±+ùvor_‰1mƒŠ¤‘ežG‘cÕøÃb„("GriO–üÝÕkKøã(ET°¨ïÏÓ÷ÀS„žyí X½©íXpú}9ºü›pEÉ›\+à¦a¾Xëç-OÌqd0Ïõ~•‰!é…Æ†ªî/9¸¶âhŸÇª¯96]ç£Z>,ëI&ßϤ9ê‘ùÞ6{Þ |ÍQ}êiæd_U–øBG景†<|r }E‰R=`¼f–.$Y–àŸÉ; Î,®#ïíYðª q;{h¾»Ûõ[óÚmÇõs,øÖpE¹µì§¾¿÷Hkþ¯ŽÂµðK/•ù—ŒÂBîë”ÿ¾ÿéU&LJ9[vÙjйv9l×QìÏ“ËY*p®ìrâ|;YjåÚÀq-ÖBî:¼Œ=z=öêaô˜Ç¾EÅ`Ù¥R»påK…f´ß¢¡§úr<=Sg®¬Û6½ö§ò“`‘ÿ®û Yíd™tï0â‡L«Í}¦³,ï„” 4DݣφIOTàÖB”A ÚU§º]›nlRz›í`“šÇE¶ƒF¸ò¥@@àOrAŒz0X‡#F±^ßl3oæõÚ¿xŠ…ÖBJy£À—·º?Û„2Êu\¯ÔÆY¢é—7@‚0^ØHX "-îuA{îŸfÝIú+/Yõ÷ºwŸöë.mÇû€¢¬ÄrGIr‰ à#2ÝÚ5à'oå é‚% (g·À“+ P»’8,Y„E[®m(D˰êª*4ÓÕˆÊ@ÒëXµ{¢ÇA>–³á›¯€]%š7ÕÏÝ#ªÀ÷à|`Ï!øº½<1ZàõÇ9>Xd°²{WSçk„=@RÞ³(älŽ äh xrªÖÏ“öÇv,¸y^6Ú „}ã~¸qD‰.|DzKö Ë|oÚ’Óã– a[â…gÖà%¿Çª/¹çò>]ö%¨y¢?zƒäÞôdSφ›Ç _2ÆS>¯™^&/ÂŒbÂP´ «[Iå¢C`[,]Îï"ï=”ƒÛvIÐtòÙç ˆ{ŸŒê>ºpÑ€Ò¶Ä Ù ÞrE{{Õϲïƒó<•¹SÄÕî@Ÿ\_¥àÍû%f"åšôЉ »ÆóœÈq ‚B.Àµ»F=|ÇæÐd‰eÇæà+;[½ ãЖbf%dµ¡9ßç1^ñ)V ÿ­ä†4‹3ý9ž:Wg¹¶MqÝ\ì ñ-2tüPbU;k”õGßed IDAT'Ê’ëî™ÓHµø,+ƒeJÌwL 5åê»]¯W·¸>¾xbçµ]–LÚá‹”Õæ,ë¶~#a(E ÀJ$Ic—C˜´å؆I˜[S™Á©›Þ7´ƒn@©W]‘ù«#ÌWRÉ.oÉcm ½]IWæ$ù›>†ôúÌãY]O—â(P°3x+0y¸:¿™ SwÞïû”ç¨é^O[JÜ5mah2@–0xžEä)ÈÙDù)¢¼ƒ.(à Iœ˜v,QŽ"lÃ’)ø+Ш ­QŽByåkÜŸÜÉ Þtk%À® 0²ë!VC³ð úï[ªGL½p2ë‚<3ƒ£ñMÐúÓ_†÷>Ô,²ÿ¤ßÿÏðªq¢w¾”Ü:ΟþãÊc¡¹r2ÏôZÈÚ|6pé3.S}9ŽO×›Ì@¦ú×u’Ñ39ÌW™'/¢f4ãZ£”fiuk£¿å¼ÅbÞÁWŠ©E¿ý|8–æ—Œ&–k8W‘{v—äþ¢Ï•ã~ù˜Ü#ïQlÒm- |Ìb)«M0dºÃ8B+É;S`Ƈ3 É4êJÌμ'q ¾¸ÚÅ" c.œ±Eî<ëã·•ïázmÛ(8 ŒŠ]Í<ä9 Š6¸6¬M–«Þ¦X¡.mXÏ2ëIá €N³)† AZ’Ħ€²ö­h±@1à7nˆ:þhØ-¿T´=1øÑž×"Ê ðÑyBº`ÉtÁ"ò$=ò”a’,AŽÇB[†õŠ!ˆ°ª¡ˆNøVÃüU"¬ªÄYEµýypöj@ññ5 ¯âÍøØk’ K–¯QçO×Ð!ðâKä嘷%ßÃh^æ5ðãwŠk]–}yÞô μ|Œ?ø©ëyÇÙ .OåØ]´X.™;_#J<“Ž­(lN ähÔøãÐæš4Q€['åh¾(š‡=?ø|é$Û ^6&@ê‹çº&ËÜ ëéJµ¿ ¯ß§Váö3[ª{[>š¶öíæÑÄ踖‘Ù¼CÎåflÕ‡?x þð1øÚ½ðã7Â÷¡¥ø×k‡¹õä‘RܤW™0}®åÊæ:Ä®­pÅlÑ!@1»–HWöɽ‘Í¡†ÿó(¼ó^¤?ôø™›Z@©ì Óô²QéÄ^Ü1 tA.vcø†½ÒÞøeù®ûàWï‡Ûn[û™¼å“p×·ÓWv„‰ú‡§ÛŽ÷‘“vMä9>˜ãºù*çJO”X®EÜùð’¨ÓmÃýŸ‡“s ®Ù_dºè±+ÐÌ-«-K~ô»T›Sý9ž:[•\`ÛÕÁì7ìh·>QPR©yhŸ`Òñ c x:¦@)ÍeNc¾‰ºÓu.=½0ЧŸi€ôªñÖò;ÏÁGŽï|ƒ¶Ó–ðÄ’ Y Æóp¾ ÀÙÅ˵ãƒy‚Psf¡Á5£;ç¦})Øæ]ìtb"5Ý@’)§,Ú_&=%%lÅJ(¬Ê ÓJRºÛvi-‚(0n@¦s’ŽIwh;æSîoíî²ýF×e”QÔK¡$ÝÊq¸g|hèho þ¬}­g½eÛuÒ"ŠQ7rß¡%»¢Õj0ñ® M29½Ú˜nÓFÓzešõ¤6L¦xÒŠ‹qaÓZ„5Bz°Wñ‡ÃlûhÛ­Q1í®I>›S¹JXžœBÇà§`åmaƒ ¶O×°@¦C«ì "‚Àª…(?@ùZP-BÕB¬Z„]•_U ±kªaÀN ‰ 6µ« ¨Ý9T-Ä=W§p´BáX{)Ànè&S¨4(-7¨ª…Xq–ónÖïÁó¥C·Þ(ÿ…XÁ—œáœ97~ø_áý¯¿íÁþá;¿ÀÔ÷\Å;ß0΋ϭòøh‰[QœÌ3»P[W«Á’(^Ès~Ùg1Ñ‹”&êsàU{àšö}œ¯À/w‹PKý^#eóôæýÂtÜuîâø¬Ûª“é±¼bL\Ù@€Û™58²´©ª·…AÊÙÂD4A&~ý¼ûÍåI›>uZþ®`÷o}=So p_Þ×ÏWXâÐd™›§V,¥X©lüš” 6 ˜.¹¬ø.‘R0ä‰ûØþr{á»ÎÃþ+šk-û݇…û¡ÀÛowàñջॣ¶_ÜöêæµÛìõ»v@Úf˜wçÏÝ¿õàæêy|¾ýÓðÏoi,{Jr[®Gœ˜©cæA)ž”çôË-ÓØFÀŸ‹ùµ€•zÄTŸÇÞÕ:åœMe ÷_)o“÷‡F 4P<~fÀrou«n= ”œNýÉgTuþ5Y$²R¼<óO¥¤  ôô3Ò1HMÉõ –ôgî¾Ù;8mØuä½3+.®QS¼éêg\À»âYbž(6í&—Uí¿ŠHJ®ëèxšúê¡°,gë’v{0ìÀdN’®Ö5„a'S•¾N½À@"è½Ã6ò’Ù̺xw!¨Jó¥~GŽoÄ)K˜ßœƒ°Íî¿Û²ÄuhâZkTC£×"´¯Q®Õ’ú¶ à‹]Ò’ÛjhÁ×d‰F¤Ak¯cYümTuc—âûÐQòAŽcBS2f–´n¾øã˜%e'\ØÃyJŽ+¿äm¢œ2@È€¡‚H®jmkþp,šy¦Ba±T`5ª!ì eU(Å,‘oÊúÊloù‘96vÝ9Iúê)¬z„w¾;ÝÀ^ °kaë’Eñ™SÍó©µîî|u¿×·ƒã+ðð|¶Üé…XÁ7íkÅ–„~à ðgOnªš/ÿÅ1¾ã3çøñw¿˜o^ã\Ùãt¿Ç®’ÍrÉai¶F_Ñâ\ÙcÕs8òTEò·Œça²È©+mª}“‰ó¡å=ö?ÿïv€øð<|ÕGáûŸ¿ñ ù¸\Ù{Ë’Ð7ï?‚Fœ0[Ët=‚¹ ;"ó®Zí-»"`1sá_³K>’›-¸à¤ØMk(×jË—Îú£8¼mvd‰ë~wš}¿ÈÝßQÿ·Wq×Þ~¾ûáiîÛÝÇK¦V™Ô ,XÝ H*ä,V]›ÏeyÕƒ¢+‚‡æy©ÁÛï†?{"ûÝU º%%^=).z.Àc s…É‹pÉ ' |Í—ß*ÔÃÎûb=³”¸Þ8lh‰«û÷·Ã¿tÊuoÈ>sF7~ô9Þ½e8Wm+røLÝyž.rf¶ÎGV #¶5"yNÍ7(ì.Ò°×(ljþæÒPŸÃŠëpº?ωé€Z¸í½n %+Ý›²60d>~ñHéefº %þz1F]—ÑH½Üéls z£‹Ê Å)uÝ^5Ñ:ï9.ÏF»wþãu2=^h;γ žwe™Ss~3†u§âX/Û¼Š]l鞯‰;êåv§L‡»­¢,—%Ä묆0íÃ@]Äú‚ «¡$?nƒîLXÛl_«C×ÖötTbå†Ênb]l!PBÔ| KF¬¡¿.RçݾÁ½ö¹ëÕ®n `¤M¢^#‘Sè’*˜NüFöÕ„T†Ô·nMÇE;ÊÐ À²Ê¤ëIN[ àG¼­%±£L2T+4@[š(¯P¶ldÀLì×B^ËNq„Ø%®€iÛ°d¿*Ô‚^ª!ÊG@¢jºzj‘ÄÕeÞª¥½†0F* †a}¬Ð!®q‘ÆŠY1[¨ä ÙDž³H‚Ø•ÕÈêm÷›9³i‰OG‰ŠO’EQˆkÑ•}gñÈBÛˆð–ͳĥ'GAßûyøë£[ªnuªÂ»¿ï.îý/Ïçgo¶yѹ NéGSËai8:œgEÁù['ÅÏ|0«Í5'éCOË(bJ‰«iø“Ãò1ýÍWÂ÷=OnJéì¬gG–ÄMp½8Àn樦àW”á–I#~`ê«…â¶è*Nÿ|jÃûº ™ï~¾vOËM+Ò$ÞûðÖuV8Ý€ïø<¼rœÊo¼’ÿûêqÞ}ûÓœê÷I@¹•u€¢ ®ÅÓ%ЂåÀV®`·Žç}ÃÏܘ@G(ý÷›`·a”ò¶°I/–ö±¹n±y¶”ÝS¦°Î'?ˆ8Ѱ—G`®(Ïêùª€ô,ËÙðÚ]ÆÐ\›G$–èh—û~£ö©Ó iiÿ¡öûiÕ81Û ZyòtµÅJl£%ïã3 >W탩’Ë~?bI©M}~‹9 ×V<0V Žâø|¸}òÈqL[sÐ7þ—;Y¿©b-À“þMœ,ð“>y¨Zñ[Œ‘þ•òÍôið“t­³³¶ÏøÍìÞfKÊ|7m—yÆ@¾A?wÏŽ·cÇìàtkz,ßvœpdªÊôŠßþýøŠ—ùnº°¥ND[§)¦ŠRH>É$Å &Qe£Ô¬W øY D°aÐBN¤±w©Éͨu»+›yø»ºÝ¥Ûß6ߥp·ëßë¾è¶¿ ÂÙ¬åPƒô ³¶Œg Nu€˜ Æ,Ë6òïÖÖ¯„âúX¶¡hI,R¬6“v ÜôþÒç:UÁzÌPòÌf‰0?šä¨–v’M4ì qTšhÐ!¸¢@4éIœOÞF:v˰dÄh2@-w84F/7¸F-®pM78xbF¨jÔâ èi‚Ÿz„Õ0 (0 —‰‘„Lkƒÿšc—5CþP„y›`Ð%ð@iìåw.À®„(\-Z9žâ:“ôúPNä“c_x€ÙªŒ\ÇÅ&‹ò·X‡Ç…YÚJÇ×V¢ô5döåGð]Ÿ…¿ï’-|ö©ÿu˜ž×Ï;ßq#¯žZåø@ž¹¢ËbÁf¶èòôX =˜ÏÞøîiFwLmlgs5QðúÀâv÷Âáõ·qi*»²ŸnØ^f+"ñ›Þ`k¹IpñígáKß,à‘¼tÄïŸÝPÕ[v±ÎIìSÞŒ¾4"øÞÏÁ3µÏvÆîž†Û>ÆÊ[öóó¿ö2þà©Jõˆ³Ã@XpðkÝ™$ϵ°œ/¹¬°T¶Ú]oþÝí[»Gc ôÁ[¯“¥«L½®%÷ÍõƒLª¡tØŒ چͱh8@1“y¸aH¾¯óuapÎW„ùò#yî^»ÛYcÿp\®×Ê6$Ûý”|+KÆ vKöЉ5ñLÙ!Ÿä}¼T Y©GœÈs`©N!gSklŒERÀ@Ée±àp¦/Ç\5O@}ûÚ}Ó°¿‰úB]Õ:ëåÚÅ&þ’`*oÃ>°r,¹oήuUvŠAJþlé[t[ߢÔÅHé$…Ä‘Æö'd°âÙj‡æäùvô»rMß—£çjMí‚].qÛ‚Š]AçÃÍÇCú]û=qç^u,–޹YÕfC˜jÀ€#‚£.L¸¢W÷ ‹”Þ‘6ŒUª}É}$«c>µ" à²êÊZ—µï‘Ξ$'Ò€°cj̃)ª‘°`ÝÎ]sT_ußw²p¯2½ú¥¡i{C @ªGò"*ZFÉ.~!%i:÷×ëe•Mì,·¼t%†äÁ2À8,jµt蜈3ŒPÞB÷Ù„{r„»<¢²ÊiG#¦óm«BèeGÚ©"À ²‚¨Éî¨z ~"ã'lªGXUYßt}3È ³ ø!Ч•LÝqZTVôpÇ=£Ñ®"ì³ñG]² À]p–}T=ð•uÎÓ 4~9^;Råþÿ'áÇî”?}|çÕ-©ëA“ñb3úýäÒÆQ¥ˆç!¦ßö…mG±Í<±Ìß]|ÛÏ¿ˆŸp,&* +ñíÍð£o’Bµÿ¯U×qìÏîäÔ=[”u½óÜüa‰Eš(HdzäÈßPNTåÊŽ¨ƒ½Ü|wáë÷Jgr12Q¿Ãé”àèø |çí@˜›ß½E¦¯‚éªd~_Ƕ¸;^–øþX àÛ>µu7­ µŸdù§ø‘·=÷¿n˜ίòäX‘‘>›Y?uÒ +zÒé;_ö˜_ÖÌÞ`µÞaÿpüÂïÑz(lÒŸ&ÞͱÍÔ„™¹ëœ€§}eq¹Û_–¿$؉M)È#)À4`:Á ¿|üÚý›ójèeK q÷yÕ¸´aWN·³Î;Ç'šúS÷ñÙÅ…É KQÊ)ü âÀb¿‹ki+Q‰4sµmÌSráCË­Œþ×ÁPçŸêü³RÓca+½˜bAÞÏC98±"¿‰AÊYò-¹²_:éõHÕ¸ƒV¨²ß4Pz&Ò}&öUK¿î—ïÛñ6ì¨ÕBÉ¿ö’Q¹öc-¡h¿¥v2—Þ¥`[Ajú6¥NLs=4ÝîÒ!ºtùT!No-„óF°¡(10Lz"û] ú­N`ì4ARJ—ôzǹ^¶¬m»Õi [ `·IWŽkظˆôr”ûºí? hôl¬)´¸ÓÈ5ˆ•ì"-à¢(ywÔ-Ð×íkÕ 4u+ ­œæ=¡Z£T $7PóþŠŒAP^KN·83 ¨à ‹âGÞ6¨`õ;D#Ž0Dž°MQ¿ F[U7 P`MC$°c&HÕÀ§žró#¬ºüâ‹Ì6†õ‘iL쓊äŸJœ/çn÷Z|®»}ãå–B{6Á€K0âå-ì•g¾½lgÕ“¬+¶‚/o¹€Œ ÿÈ¿Â_‘ù‡æá?~~á ü×Âz~«3Vtáæ1Øß'ó¼b\\†bû©/Á_Y»MšŽàïõ!îyÅ(ïú/×ñò³+üÕd?•ß ¾pV”çLë•o½†Ó˜Ó(ˆà¯_îo†w½L®Å`¾n|qJòÿ¬gJÁ2Õ›ÇŒà‡¹ÈzZb·’uüÞ#ð†½ð–ý2ÿª é`¯“&RHçy4ßÊEÔËvEÝ6þ|Þü q!|&-Ô,½ÿ0odŒ¿|ÛFÖóý+ Ùç:ïØÌ\êŽÅô€C£ $íÇïܾ¶‘<_}T¤íî%-àÜl?â2ó‰“ðÉÓ’S©[;”ã›ì»øÒ¹G™¾Îå¼ô ‡²LÌœ¹w–ðÝŸƒØ¾c‹í³g ¡$¯ÙTuÝM¶Ó"E[|ÅÔbÀ=Š“y® ªØ*\WÍβ}ŽÅlÑaª?ÇS®ƒ®[l[þ˜äõI»-'YŽØÚúc1¨H€ät:)lü ŽA“¥„aØ[–Á›t8 –ësUè)© KR\3 ìQü}/»²âø\ÇøÊW Xš«ÃLUîëHž%߸‚ y‡µÑ¼(È>·û€×:9¿óÀ†.y;8#÷ F 0›ý]k>_ñ1H±µèèý§H…c˜%Y¥NmÀÄ|gì÷C.ì ‹I€Nuê¬DU*»)šo; ÎCn+Òuû”¬€´Á˜#yŸ˜¶ä˜µaÁ¢^L—}¯×†,0š´&k£…±¨GèJ(Aâž©oÏÄ!Å}ŸÍ¡4ýŸd7MFH';¹ ÿíK"ûûÃ׋Ìr¬R6š—º˜yénö¢a8P{Ï!ø‡»—ß;yÏ,?ð¶¾÷-»øä–dÏϤýêýÂöüñkÍÜ×´/Ÿoík³œq¹º ¶¹ŒZÀÎOYd¦Ó¦ïû<<øoÄäm‰/[G^»RŠXÅîkÄÛÌ×å7Nä ÿôÒ1š#gÖàëÿyûÅ.ÀŽß5Ã{o›äWD,ä˔Є%›zе³,…kÃÙrŽ˜¾2qŸþ½ ȶX¤…™ú‡ãòüü· Ó÷‰Sf7#æ±Pg蔦øùiø£ã²lÀfï¶]pÛnxñMÕÎ'á[>µs.E·Ÿw¼Dö5Q¸è#ÕéÑñÕFÄr=âø`žëæ*) FóŒúÝųØJ@ÓX^Þg–Kuy÷­ˆøÈvصò½IXë N²­ZÀßo=ÄsÂÎÀ¾@¦Gr]Ÿ»Ë ’±¶|F­… 3½©fçIµƒ©äo<¡L½èö2Éú@Œj3 qG+Û0dò-4|#nУS˜t¥õæ›Ë•t+×kyr}ˆ$` DtbØð7âC¶6“”Æy”€N‘‹¬ºcëuÏöZ§¡M.U*aSÉN—mÈY¦mºS0ÁìC+¹Â4o©U›wl3YeÂNÅ (§$ß’'€#†€C± 9[Ø œî‘5Üc5¬…@Ø †n¹ÀÕ5ø‘Q˜ÃžÈä’ëfÅ ˜Öíߦnî“Y׮홈!º°;*]¾‹)ÐŽ¸×£.aÙA΂³`ÕÃ.Ôev]Mp¤Æáíw¯Ï,ÔEªù½I‡î—_*×Úµ$ }Wœï”0¾n@>Z±ýÑaøù‹6B>ðágÈÝ+Ëþ∀‰}]ËçÿÖ 84/.-±õ{puŸtXÚ>dŠþsËoüH»ÄtÚfkð=Ÿ…O¿Yž¥‰‚¸qeá{6Ü0Èñ+€q;–«àÞDgn¥!ÀiW‚y<²_÷Ïþ.1ûð»æåv ¯›YãÁÉ2ý |‹(h=+9×B§ûs,¸6¡cÊ{ÎÃïwÉǵK—o§-5„Š¢8Îð%£µ´ƒƒw—Ø«‚#y£JκìåvZ¤´ì÷ºé|OU8¿äSœÌSõ,ò¾…ïwWºy›*ÅøZƒÏÉw¥i\ß'ž0Ìn-fKÑž”ô¯ÂéÝ2lR oÓÜ^µ–e£“ÔTp`² 3ñ¶AŸŸµÉH PyzÞú<1 áôªsÙaz܇ÒP;0:½&ÏË]çeÛçJœäõƒ²},RïÜBÀÒDAÍŠ/#çª0_Û½ª¯õ´_½gSY\L»wÆLhyÞ{¤Ë1HÐòSËTªË:9i&(½Më‰íPŸSé2€¯„-:çÃ`C‚Hûl˜ð$U#q·‹è|¤@Ó3JÛ%äàkQ­›óEÆ õúøÙW7žf[J_ûËòŒwþácðÃ_¼°Øg»}ö,¼æáŸÞ(LŒRð’aès„¥¹²OFÓ/†óU?x–7ÞÇ_õGÉýüú!3šÄ#-Ö[îx ¹>Ïצ)wfóv{} -îOŒÂÞ? oü„°—¨½çñÂw¿ˆý‹5¦Ê9úK+Ë~óÌÛŠºm1[v˜ðQ’Œ~ð‹;–Øõ¢ÛB>zBþvÚj!ÜyÞ°ÐÒ)ß .ËŠS»ð¼=r¿î-Á]ç9¿â³owžãyn¨U¨vq³Sôå,|Kqãt…Ïxw|×ྺ36ìÁëvÃÑ%pØŒX;2 šç§ˆrÚÛ¾ZæCÝ"8,ÕRbF¨5ük¢ôw½žö¶g–ë¶}¼,Ô?5ç‹*_ɑްq³«›<(iK¥tXÚ’ûïU´«áÕ@?’‘þ¢-LWNAd^nñ‹ÕAÀK΀Ï0BŽÕŒ "oƒaƒbD^$³ÑCÚQ-Å<‚T ´˜6)_‹›[­åÇ©z$`¨‚qƒÃÄ)_ò E%a/‚š©o-ÄZ°–"¬Õ"I¤šçDw¿®$îõtRÚä½¥ÖYÙÏUóÙI€˜D]MÖZ9ªt €i[,‚AGÜël%êuó~˽.2õ4™n«§Ù<|Û§…1ºŽËÁ(øŸ·À÷?O–‘ž>º$,ñ ãÑR Ÿ;+ŠuÏ•Nç…Ø£ ðêÀǾA”æ°:ÕÆv|{ŒÁ]ûpoÛ·ñýüÒ}Ò™{õ¤<‹7‰°DÉ•߀×^þ£'à'î–ë…ÃÒ‰yù˜ü]?Ô>êø…)ø¦¹äG`—OWxçÇÏñ‡oa¦$=ÐBÉ¡nâæ\GñÔ@Ž@Y¬¹¢*vý¿„<òà@èe˶ÛÏ€¤D`§ãŠŽ°{J,5ÊËw—S½ë<+uÍÑ‘"7N¯‘sŒït¡äàDšþF@Æ÷¾çQxrnþ/ù›ïãЛ”¨ Z ®„Ýe Žßˆô»£d0"~ñÿÖƒínÉ‘–w£“(¯ÇBrÒL¤cle:ÈaÑ!ô89ŒL Ãõº¿C-.w/Â=Æã¤Çž©Æöéã§àÏlì°ØwÏçà7UÔ·ì ö†=Æ«Á´±èÉwäÑ ¦–Ø[JäôBöñ Ÿ€Uaù®¾í6Ž~~û.9 "qu¿eP0\8¯”EŠËy€f¯¨ÃÕNѾîÙQOôô2G¸µ©½‹+_¤!T°‰`Àl(Z0éÀ’#ˆ×7u%Uö’ÙŽé„Ú]Šiê ²Òó›e”b‹s Í’w̃²%nveG@_èˆÇ–f”b|Ö­¯¨S¿íÏZ¦Ú_”XÖ“-´lȃ^u%i¯HÀ$GU9eâ, ÒLÄ `²š1Eتõˆ7óÐã#Jq õªHŒF;L±;¾6 Vå$Åù€ÐZÜàŒ Nh„>Tˆ‘ÒŽÄ/ʸݬãšgÞìÙETFµÍËAÜëÊ6þˆKØg£³èc/úâJ'_n«§ ¶ÛS˜ï$¶U_”è>y Þ÷UBí+.u桼oNâ¶Éþ9kS¸ícðÁ¯iÔÆæGðá§]HòÂÀȨú6C1€-:í·ùSË|×ÝøëÿðþÖ²ûgåïÍ|É‘¸£—‰[Ì;ィ®Sb÷ÿíqþâÖQ¾w¦ÂÁ=ý” ì„8ÑŸ#°`1o㜪òâØ<òL7úÙl·ŸiMäwΧè㺻ØbXâ÷]‚c‹KÙKG˜yz™ÂhŽUÏ¡h ýÞµ‹‚‚Šcsýl…wŸò™~Ò¼'7ýcÈôÿ9È™_º^3)ËËŽÄ÷Z¶¢×àÏ5ò-˜úÍ;Ëø‘xd@‹EJ  ù^ÿ,%[¶uŒZmG~) ÇWe`cuƒîO,Â/Þ o{¾éxËû|Ï—3¿öÙÞq§ëÙ¹ üñaù+8ð5»,}çÕâÖg+a„†Ü{¦áMŸÜø1>—ì޸Ť y⪘²Ë.v±uc‚Ú Ñö¥ì8gÍáèö2ÍúâŽYHŠÛàõ·©º$ŽÝãÁ€ “F°¡¦…éH+št;1ŽŠ;ÙGß›UÚ,£”´8'ÒœI~;`È+b ó¾€’ôÜ<écH»ße‚{óbLÒèIU8‹¦9KÜûl6žB Ùè«rÂä…$Ü⬄€B éø!2’Š Ø µ˜ªIú뇢W‹„婊+F"›†äc²#Œ`òÑ02Û‘6ІFÛ_Õt½lÏ „!”d±æDRoœ6…Cè~ƒt%m×,y?êÄòŒmÖ­kåÝk%ÜëF<¢‚½áÎù8+&p²Õ"Ìšõîô»ðzÙŸß&Aá­Öˆø›>qÉ3 ψ­úðÍÿÿëVÀ˜­Áû‡ßl{’ò‚Äýàð7où’CóåX à7„ß8Äu?û‹½ëY $ÓFsE]böû?ó/ý“WpýÌG† "ùÜÁ£Sƒyö¬4¸G)ÆÞù87>ÓÍ}vÛýÆÍv('ž}î¦%í{ZÁ£ÉB{Ÿ¸òxާßú÷ž>ö òýÌ1;Qd·yj(ÏKêv¬Ê   ”· -xþ\…G yÏý»u®Ák?&ÉýÒ‘WÀþ’ÄÓ<¶­JY°Å6¶Ÿ½;û|D¦¿ääXí} •ús,q¡óì̯(ÂÓ+ÍX¬-Åž­2Póð¼$ƒþ›c¼ö†¯ç¯/¥­ÀÇOÊß{†­0Ö n‰ýžì?=À6Q·½˜5¼VÄb¾R¿5gh~ì¼Ì{bÛEò¶°·A·ŽÖŵ-¨Ø¥ýuhÿMöÚ7‚6²Î«ÖÙ )îäV#˜õ¡¿!LÆ £,z2âÀûf0G¢-mÓíÍmþ¨ØuÍ̤;­ë¥ôñt9ÖaÅÖŒXÃR–€Ž!G^ÜkQË+íN•´ ÑBˆè@¢ø¢”¸ý:´â\Û¸Ä! dzPy ò Ýg\M\PÞB¹Eô„ è·Mle5݉1‚ ˜˜Ÿ†¸¿QKþ†ì%¸À”khYfr aä°•É ³>@*(qz°kZi°;0òÛ*]§S ÒIq“«{± -ï܇¶QÞ¸× ºâ^·àÌûXkœÇ¬ýf7Õ«‘h§Vákþ Þ~“ÈY»VKÝìŽQyÆ-Ô"¯þ÷Ç„-Ú VæoÁ×–‘`”tF~â.8¶Mlâ%na=ä¿w„¿ü¡«ªT‹‚ç .?¤ê(øàS>? ·=Ó­}–[¨Åëßù‘<Ô·ð+D¸äÊ>3ˆ˜x~ö,¼ë>¾÷õ?Ä/Á€ø·ß ¿ý*@Sß]bõô ‡G‹¼tj…œ¾éÔ¹y7ŠµÂ "~åOOucƒ"-‰?zþ𫌜¾’oÿÍ£pÆ$·¿v ÕÞ/O‹8C7«‡¨Àô²F‡‘ŽiÑigŠB óU˜«QXUì* sì©mÐøÜYù¸a{ªÌ´'ᕼ¾ý*@Ë€ú+ÆÄå.y£&ÇW Žš±˜¤Mx®ÚÁ„PC¿Û m ƒäX÷µ·Ôò"ºl ‰bS OWF)-¨Œõ]ÝòLzRA%Þ.@X—ØÕ.o ==®dT5„aë$·ÓØu%ÕJñŠtS{•¶e]SÜžF$íž`ܸŽºÐ_‡%Kèýèeu‚-³f¶j –BÅ7oSÛ!ÏJ(év÷·œ™.&ÈQ-&)oCŸ,e?ˆÂ AM\â„"f‚ª‘¤Ø%΀ LbÔØuNÅ.|¡2IJ£„<6-&È\Ð6la“+h¶OÑ:Ð‰å ¢æ<5¿†@ƒ.Ý–·¶mÛ8¾'k¿*c¹J´§ÙþÄyìÆ*5eYå»1K£]Ë6Aì^ç‹{³ìcÕ£Ì$³*]•J®Ø¦‘£,‹´Hxæ üï[ámw\’êf—¤}öìÎÖÿwÁ­“â†ówíLœKÜNÞ3Ëo¿n’w^•ãЮ>JãƒyþýÃÓüä«÷ÃO~ òãëWtÙÖ·ÛÏ´Òp¾»”ýF-g‹2Ý`*nî3gà]÷µdì_ŸX÷?÷«·^(æóäÅRÁ¥ù„A„²!¯k9›ŸYáU8vÇÜZϬÁ7~þãu‡9貤Ã8’æ|¹!#ùc&-‚~ò®ÞcT‘–A’²q#q,£V_ÂV’‡ÎKÆ…ðÈ’,ÆÉ*• ¿þa\’¶êÿû Üó"xÏ+Œ(” /…c+"qýPë»öè¼á㛓Ç.Ú‘%žœ¯¢ÛÁº5㶃¤ø±+ÊF*Þô6.‘¦-'Šm¤n´I¼(Ñ¥Ì|³(œöõM\ˆWº…Î5Œš+Òß㮀§F¶ íJvsIõzSÇI(m–QêX–ZÏÚ¸Ù5`Í‘†!s<³–a3t ASi&V11@m@Èž&”³ ˜XgÄDYNµââ‘$mOÊ¡3-[7UGM7`ECìWã~â F @bƒ„2Œy 7Ýàt‚ j;I”Nçý”º¬ÍeÉåéë“„N[JbŸ|mFí’ˆ@w^ûô~»-O®Ë¨V~•‘?×ñlóœ4eÑãÍc°§T«|ÛòDõÍf+"Ç&pZÉa+ά½ˆ{]¼mºž$°L=#;ngdð²]:¶›7S{n©7mÒ>úpË^ÍëÏ­ðàD™¾FˆÌþòýqà™násÄ’qHƒÙî>¶±<\ÕßJJ òŽùÉ/I@~/ûÏ_`uË«9›pMqx¸È«+‹hÔ_„?zü™nÖsË/ ˲§$ß²W@úfÌQp O(´|óÞ}Hrؤs®eY=„oýÜóo¨ì/¡GÆŠÜrr‘œkaGš•œÃµkU~äós4¶’ßèlÞòIaª~ç––”÷îD¾°J ±G±HKù\Å¡žÕ^æØ²Ä=—í³g᥆}­ÄÍüÑeqë>÷?›±ƒÓ-€ÔïÀR{Ç#²L¿44Ë]K\5rOÅjŠÚüÆiR 6ôI„¦_w„½8¯°M2Hí{»¿%ARb}‡ucP2Ë›J“}ÅæþÌ>Q+7RŸ-€ ß°H˰Láz>ø]ÚœfŒR3ÇG:¶(YUxJ*ÃY´DlìHòØ@Ë͸ß:|ÔäÙp­¦4vÛŸ›dƒÌËÏ¥•(¾9ðDFÑ-ˆÐ Ch¡Š¸ÂQ3à(x°€=9TÁ±_£V#ÔŒ/ÂnƵß/ñ´n1:Y–ÅÂô´T¯=‹•éQ¼i1 ç™ø)9Wa¢±Ý@L/Õey²¾¬mtFÁÍŠ:¤ëRŠ£’?âö9¨@c/ú8Ë¡¸×¥+éÖþ ¼½l—í¹fËSU~á£gyÿ×ai¸ë}O^2øç”}ö,|ϵ2=èm.¾®ßƒ±ù Y‚ïùܽ&iç«¢¢ùÅobïr3ý9æŠc•+9›gÖø¸årðÿß\½iû³'áÓg$oÒSrü¿ùàæÒ*T·ÓÿH¼Ä«!<½ò•ßZ…¯ú¨¸mÿÀó%Çÿ5ß>1›çŠÝ;k&´¨¦˜¢io©Ý]3Þ6«3O/6à=ˆxÇ%¦dºE;Óí?$e»1JYåUFÇ+ÁòÄ»™œxt¿bàúllrDnɃÀäÊb‘HN§Ž)³LÜÌVößŠï ‹„œjÆ5]ØrJü:c—¸¼%m/¶§hÁžœäª?«x[#Š@ ¡L…Èo #V¡eÔ«.1BÔµ¼ (Še°ã?]$>(Ž%ŠhÅrÅlÔb&Ý Ž7/3Z™ÐZ¢.\°~ÌêR†t=ªÝ-ív–.¯ZûaW´q-TQyïn†ÄŽH—éaÝ@[Çþš=»üzËh7V¯s‰ŠVUÔëì%_@pÛ j¯£mü#kŸ—í²}Û¡äOo㻊ðÈgŸÊ|—¼Ý~¦ús0³|A–æe4OóªuÇŸúÒæY¨Ø˜…·~žƒöZÞ~ç)(òº§ ÔCÖ‹ßû¥‡·VoÚά‰jç÷?ÞûjaN­Jޣ͘F’°ŽØ´½¸gjÂuÍòµzÿéÇ?s“¸ _fÄ;í`Ycáä63x>uZؤ¿<²5™óJ‘œ·@ÙUXû Ìï“´?>,LÝFÜ+¿íĪ¨ÆŽŒ ‡Ó&ÔЦb·«Øê#Ü1?~—ôy=E):Pv[ËþḰ¸—°mIÅ®%ãyÚ ¥,†NJmgí$©Œ—\ï#LWJ˜¤z ¨Ú•m˜ðÄow,ðÔð!Š@wTÚÚO[G]· &KÓAªÅæx€g£…vi“¨ ‚LâÔ¦\ìÎç Š;éÊÐ'¡aŒB +€½J lR=Bø4Zªp– #ÔÛAIŽ*þ¡´ðm†kU«lzòqòÖZk¡-ä-tÑFå®išv.ËE-«£¾éå©ö5Ó÷Qº|Üžæò FÑR±³M‘;éµßŽã23i”ÕÎíXžo‰ñí@X² †]q¯ 5Îb€½ècÕ4*Ô-Q’`OwKmL]Æi¸l—í+ÑÂFÈ>¶Ãê_ÉvzM‚èŸ7(ßã>§7Ôï&ÀÒ!û¡;¶7ÿWîãÓþ~úü,¾mqwÁãŸÿÇ}ÛWÒN6i«¦w¦>-#ö½Ñ~%ÙepÔÛî7Á’Óv¾š.vEGò”ÅöŽƒðàÜÅmçØæÅ&{GÍåñDFÏVÑÉÚ´m”bj’ûÊQ1ÀJVPèj³ôùP²äå9âÀ²-nxAÔdIšCøq‡¼ ~T"W u¸û»Ç¹VK¡PŠËY”bÆ(A1³¤1kh«G°¦!Œ+ –¶OŽ£Á”'ª"^]âb&9¶ðtoÔëݘñ[#ZæÊ0HeÃÖåT+÷QÏs ™l¤wMY÷D·¶§×ÇÇ …c—ͤzŸIb«"MG\N—CÉ\—4èæ‚×­®M-O¹Tùȳû‚a¨`aÕ"œy{µ¥^×ÙöÄ‚.®w—Ù¤ËvÙ.ÛE³ÛÏ @({2`—e–‚ÉRkþ}‹Ýv›†OÿÔ½üÔ¯ÝhÞó?ŸÜþ}¤öwAV ¶7Éîe{îÛÁ@*º°Úºš.vc Ö:¹¾ä³Ä6ïb39IÓ쀫ŒÎ[qf•¨+Jë°bƒ Tz5€i_àr¶Œy°ª›yzÚ@Q¬ä»Ã¹V»:œ«ZìOÞnσ&7®ÃjÖ§”†P¡ã˜ ?fr‚–›[ÃüÖÌt=”_ävº2„½y9ðz$àèLCâ‡yÚs=¥:±›âï4âK¤Ð ¹šÈRÂ,´kò.…Zb’šMÉp ƒThÆ'ÑÞGïˆgRëVPõby’ë•É69‰‚˜AÒÙÛõª3kyóþM4LA&À¸ å)0f–kKä݃—`ØA;ö¬3ßÀ^ MΩTÝ©s¨“@é2(ºl—í²=vûø‘ëeºäÀB——ïh^¼@blÞ¾AÅ·-ØÂtûŸ®p·ërú¾gÿ¨ùe»lmÖL‹ Þ'„´º` !–¾é/¼ømÜ!Û‚‹]Æ I% eÆ%MG}ñúàJ÷Ó€¬¹¾(©†w´YÝŠèÁ¨+ Dka>PíñA9ã ×B ÷¸dŽ ×ˆ'Ø´^¼1@‰“±ºÛS7ù~j4BtM·b’ÉTýxÚ€)…;×°`ƒm™´€¨(ÉD¤:Ý™×%ã¼f\¢¶rÝ:ýnÆ7©H£ò6ªàö%nÝèÚÑM7¦%}<ݘ EoÁ‡&KºŽ%Ê(uÚÒ&’ã‘¡‹n¢ŠV’XZOëÔ¾ÚÊgÄ*5ÏCÆië\º/7 , ®q¯‹Õë"½äã,„Xµ”œyÖþTF½—í²]¶Ëv±í³gZîç9[¾ÓQêeèYFÒÚ¼Ô~òK’ðríO>|šCG/ù_¶ç Ý“PyŒÃDÌ#Yš°?† þö)8ôÜ$Ø@J£RCú©õm®ŒmUb]ÌÑY¬9³? +±Kœ³8Jä§«z@KLÒ^£·J¯9)”çrL,P‚ ’v+£—1QÜÄlP=–ÅŽÙ!ÝBA„j ìJhÀZ¤h‹ŠO¥€¦°Ë…>K\Ù† PªDí„dï=-;ž¶¬ä«e²/Ðd®T=BW t-TÎBY–íK×ßôt¦$•”UOrÛn– Ê̼RhW$4Â’@d„'Ò`E§êH.E^TjyzÿÍãj숊/­J€.•P$£|Çr“6v¯Ë‹z3ïc¯ø¨FÔ–q=ñ­?’¦Þd™¸aº[ž¦ËvÙ.ÛeÛn[lH쥣òB*ÚâU‘´Ñ|kÄêS§áožÚñfÝûÄÊŽïã²]¶gÄfj¢ð·¿$ƒœmòbBàΛøŠ0‚wíPüÝÿcï]£-9ª3ÁoGfžsî³nÕU¢Tz  !1z¶Ä¸c Ë ‡mfÍZÝ3ýcº{zºôŒmÆž^Ý=kV÷ôô¬~ Æ ÆØî±ÛŒmÌØcÑfŒ=l#ó’Ö ô(UÕ}ŸWfìù±#2###Ï=çÜ{êVÝʯ֭“732"22NÞýå·cïÂd‰ÜOö~7åò}\º¾!R”,Èù±l® EÒc—̸Ñá:J\á# ­Dtj)àIð> ‰QZ°i¬ÔÕEr«Rů ¹ê›Ó¶K–ÊDË øÀá|B„² ŠýlÖ•qÄ&à‡Q]’FζùH\­Óí'¡JöàMÉðïmèžívàH![Œ‘K ç#P%8ÃF :ów’7N4hÐ`?ñ…$¨Q[®ïY5 IDATõš%¤·}=¾üÏ_=Ðn6hphàj°KYübÿæë‡2Ñîä y–›ÿŠß <\¶Gh\bã!K‚UVŒb*\ "‡1ŠàšÊ TS2bóе¤{Ì>5hРÁ~â¿W¤Vì„&à¡Çÿ§IØÛ Á¾a}<¹ÜxIbXc(,ìi¬½Ø=àÎã$K`”Qr—Õ«øX"d¢Ø!@6D¶­0.e5Àk™¸Ú‹9ŽF¹g#5‰o½vÜO¿×í²OÕ²Þy9§É c·£… &$¹Œ›·D ¯Mærm>$.\ÖÈ醣\Ø!>æçUšÐ.Ï/1@–H:RN 3ϸÊõÜjêˆR¨à¤#´·úýáD![2îus Ôg$燈ÖG%‡uˆR¾/T®Aƒ ø]à—¾_¶çáx¶üƒ?=˜>5hp˜ñ¥3† Y›†ÑÞ–ÿýS8\¡ ŒO–¢œ q®‘¸Æ¹äÇ56#aET8«LXEÈ]ŸrJÛ©î6KšœÝa_1âÏ¥B*æc ™m ÒNV¬A‚(¥uUÖz·»m0X}ksg"5™ídÀù!Ðmƒ—Mß—cÙ—š` »u!´¿ÒÞ.dɯo eüR€s¨EÎZ°švê:WÓVE]b†  …ÑngdvʶÜ[Ž8& ,‘±DvÓ‘ Õiú\ÚÐ~*ú@\_žPÍÕd‰¥¯ÖgèYY÷ºÙJ Žñùâ—‡ˆ¶MrØ‘$̵r%Fƒ (¾tØ”ƒ2À?ø3àåÞÁô©AƒÃŒGÏ÷ß÷5õ-¿›áìfz Ýš%Æ'H«IA€k‹òPÜNÙ!#Y¦aÖ¡¬øØßíqW²ä${JŽóVÞ%+>‘‹ûÝVœŠ›Z«-di5¶Rã&¦sc3wqó­Çºh}~ÛʶG‚Beݶ¸6uï0p>6RÐRXŒÁ+ xQÉ: ÌÓTvS%v#Q*ëÌür‹‚´¸‰v£@[!Ù'oba œOD¥Û\’ž\¸s"dà“ûÃÅú)CÒ…¬xL¦îº¼©Y+så‡Ë×Õ““ÃüÅM™2@°¤Ñ©ˆ€l>Bz4F¶š­ ­ ANôºäÒ~'—/-4ì 4h0s¤øüóÀ{®-öýñ Àƒß:¸>5hp˜‘j0VÂó]Üô1s ýñ Ò¼ˆÀÐ…‚3Šd§ŽÊc ‘O|ln  ¼R ËÌ )¡ÒF›‰¨PœúZ¢Á½¬ÄÅîh ,GÀÑĸ‰±!u¦ "18-Y²k5BÆönâ(²QÙí•Õ,.l›&ä÷j"ù޵€¥ØÒà43dÊ­ÂU€8Xu°}ö>Cìñ¡–H{’Ü1Ñ•3Päî]h,}—Æ]ê!%Ñéa%B^è- ÑçØô=#IëF ô‡aÔ=ß –{:fùêiõûÍœm‰{]v,îDP}F|.C¼á¹×ÁòQJQ®*VïÇ}÷Ý7âÄ‹³èó‰'ðC?ôCèv/ ì¹¹9¬®®Îìþ]JóbuupòäÉ}­wÖc< Ìjï÷k-MK©RàÝŸYÆ‘{÷œ/¥gÅë_ÿz<öØcPJA)%/‰òmß8eˆI’ Óéàúë¯ß·:í'¼ýíoß—:m}³Äåú¬H[À¯g,K@øþßprevó>õ©Oí{“bl‚ÄÛYA†|¸B±íç !¨9„$7òƒ¯äݫǬº“qáj·0,ÊM„|tHSCüœ* a""Q”BÝÈÉS’”_'ì(¢Å¶ïþ Y°ó™|®ÆÉîHœS A±P¦HÌÊÎXzö}×}«îÙÂÈÉR¾94ijkŒí¶æ" ¡ª»˜7&» a—2wˆ Ŧ¼Œsn~ÍNýöŠ­[^Þ}YU:—67‚mÞ-"q=ÊZ7bÉËÅ=«Èš1›€Ì”ˆÒÈòξûYt;B¶R$‡×†ˆÏ @[r•G×µU©¿¸`ë–øå/_ZÙ³o¼ñÆ™ôyee?þ8^zé¥}¯{8qâ^ÿú×Ïd,f5ƳÂ-·Üø«¿ú«}­w–c<+Ìjï÷÷7€Ÿ–uHGù<ùÛ½/õº¸ÔžwÝu±´–?°D„,ËJÂý¬Ûv÷u:ÄqŒ³gÏŽ<’:íö©S§ðÄOì[³Æåü¬h=ùýè¿fÉ÷úØøçÿ¶~àí—Ôß¼I1¾‚ôò° =9BY ÚÅš$  ®:c“ÇecÔU“*ípyN@¬zâ³Cq±»’ÄåîX lk :¨#t\äà_£¤>պܕ.ʱòC°ý×7Àõ¡k8I»eÍÎɉTÊ©ä-·•6{PŒ¸æ’ÜÓ†\r‘Ä7!¹Çþ8º*WÝganËŒR—B¤Óì''ȃœf™‰K`Y‡ä„ù–(v\¸¯¥õ8µùPÞ_ê‡[žÜò.y㼋EÅÉ¥ý>Q4íp èùéJ„l14­¥ˆÖÓÆxáf ¯qöïÿÎnÏf-Ä¥ô¬°†™«¶Ê µÆÒÒÖ××÷­NÏ=÷ÜLê.ëgÅ^¼æµþ£/âñÇÇ[ÞtÇ%õ7oRŒOÖÓÝIPoüæncî¯{p‰kE–à ì÷;cÛìi`-æ‡â2¸IØìÍ èF&èW¯Ñ!obTEÉ6ë6éZª5Ý.‘·¢ä_ö¥k)p"¥f%’Àë©“·Çœ^!J¦½¼ Sµmª^Ÿ½FÍB(»0Ôà˜@ó œ(Iëõ©"fÙ¹T۶ߦó™þpNp™ƒ_Þã¬ù›&" )‰¾H&zM\é9—T´✕îûÊ“wmÅ”±•Ö|ÑrBŽðر½l9BºÚ‚žWP=ø\Šx#e^h>Ÿ¸æ/,HèÀJ· º­-È Ø¾y Ùr àp¾=jРÁE ðGß~˜9jРƒ/Þv¥|ç.ŒO®%eà½ö-¿khå¨!c=zÆx¾õªÑ®Ö5}² @·mÀ†Hò"u”¸ÚmeB zìX³ž’åô«Ì!hˆ›_O œ?6Ö…q[K‚ØLÜ—Œ«];•>W«rÖç”Þ&ùyBÄÂîûÊ ¹º4dp¢Às dòLåêƒåºþpĠʾº~yã-§z…)|J§*éGDd”&‚ÊŒó.¿ ’²Y0’PNaÛ0Õì÷÷qåúœ‰@µ³¨ŽÜ‚”‰Á1!:Ÿæîu4„$VöÕ7w9Q‰„é6Û Ù|„l1‚^E*]–ÇÆÖíG Û*Ü‘ 4˜5~îQàÛÝ‹ .¢­;5—Ô Aƒ 48$È|ãõpc2‚DÞg~aÃßß Õž»[»°Ð1ͲÖh :{Á$ºµŠÌ¶1ømn¤ 1¬³r9çBT»Ni·:íYÁ® W¾‘‹F=ZŠöèA‚%äý¥ÒGPU"!tÕ¾:}ôI—Û픋HvZ-3ޱ‘Mì<±uì–¯Èíg€× m£†Ò-£]6cúˆH‚d,!°S˜µ9\7wî×R"•“ò(õ–±£DÙaw‚—”ö»*¢%³®zjˆG¢„eË1²ãmd+ X1TÊÈZ Óm é [Œ¡—dKô¼‚îDÐ휘fR@õ5¢ — ­gˆ¶RÄ[¢ /]µˆ¹Ç·AÃËëRƒ 4hÐàðc|‚d­M—ĸ Aþ6{”bóV¾NFðÚ›øØˆýnŸbÐwMàƒy³v¦­$ªÝv&ÊHÆr=>²ñ*ÜÜF¶ÞšXüBD¼r­|CÛ¶–hvÛÚ£XˆV&‰{¡½zkdŽÐ0å»-Ås‡,Ù Í@A;x(Á¨“h·D°œOU®¦|í_}%ÊÝïÖaCÏÔ§Ð~Ž`rùöfC|k{ßm¢JêJ$Ê-ã6ÍŘÉ›_ÞßÏ"ÊÉ•N!v:& ¤G ®›ÃàÚyd+1@€ž‹^7‡!¸¥d Q'ÇR' 5T?…ÚÐPÛjK¢ÝEF)ж2¨ Q7ƒê1(ÓPæÅÚÊ ²êø4hРAƒ \ʘ\Ar×ãÔ*=¥e<Æ'0»)O¥6F(DI )3`°!-Ç.’´“‰b“RXs¥ ª4è«“KUÆÖá·!} ¬g¢"-ÙœH泫+JOð…”© uÉ’UµºâšÆs‘¨5cTn{…+Ã'Tþ1r¶¹¦œß‚q  I‚d¨ÞFöÎ õCÕì/·ó‹ÿ½©ê,n€&ÿ¨E´#è9%JÐb„ôŠ6×u0¸ºl1¥@zŒ-G°ŒŒ†õRD}hKCm2´ž"Ú΄uE%R= Ê )ÒEPs1Ì¡ø 4hРAƒ—8¦[ƒ”ï° ª±— )Fæœ`#@p­Š¼:üuŠÕbeI^F& ķB2,áØŠåØ¶C:JÊY@•Ê›rH¤ÛcÄçÄÃå^¥kr¯ÙkcÈÀV**Òj"ë~–c‰È·žI>?|÷HÖáW€9¹d ŒDa Y°ßÍÀXÖ¯´ ÉýbÅámäEh³eê”ÛŒe¾¿NaB`~œD•±k4Ëøe0땜RW—»?ÔŽ; KĪ~¬a”! »-á·¹Eàvî(!E ô¢TÐK²–(=#=Ö‚^Š%‡Kð êfˆvRD›– )Š6 )êj¨nê‹:dI"i!Dù©jãÌ­ 4hРAƒK¸Ø¡†¡¬°”H„"•Ï©#.©*©ÖX«ZeÙW>8Ñ¥\êP?÷9Q¿®H$`Ã’ÎÐw¬Dz |æ«_¹Ý ½TäÊëÏôŒK"Ç¢µÒ?ßÜûE^|uøÜùü×á”Õ¼â5‘sÉ#LöLî%(†V²Æ-Ú† ÍEàe./I>"=Û ÜRʉ¸ÑªÄçR´¾ÛCü|ñZŠh#eÈ¢¨/y‘D%2äbÝXN†,ß·ú§s!už´ 4hРAƒ—*¦ Ò$An¡q£QçÔ$W5 œ}߯–ßÂû ¡0È)CÇžh¯l‰"ÓË€—†À !")[Ž¥:àm×´‹Àñ@ö÷ûe ÿÃû€Mãf·Ihí¥˜J.§Á.~[¾ã¶3J!t\îì. Ô Çà ®#¾fñM €æ"Ð€Û å´ÁÈs‡Ç#§ß¡áÉËøÛðöÛ+ì(è“-¤oXBzè¯mÉ×¶½<ÌäõçüœKõ¿ôÍ^ 3¨Žm>¾”'ÓE,®sKRVîD“[ŒÁ ‘SXŽÀ‹r›;J’òækˆª¯m…tÐZ!^ÏÐ~rÇ»h½ÐƒêŠËœšàZ!ÒN'µÓÇRæîÊ÷¿Aƒ 4hÐàÒÇkP%G•}!ã(FìP x໫Uêò޹*€ìÏgò8õÇsW4le…›ÝB$Áæ#`-\ß½Ê=±;=ŒÞ0Y2G4‰›]OƒR j)pÛ,ÆQrêðS/Nx¥‡ÁeOÜw¥±ñçµ¹~°Cˆ ’ˆ’”•­ËÜB½$¤ˆc° »Í ñd£öô5¢óÔvµ•Bmk1Ò-èd`Fü|'ºh?µƒxc ÒÙM¦¿ù·k÷DŸ­¢Aƒ 4hÐà`‚Äá·È!¸®sÕŠÊÇC*TÝZ£Ò"§¥8чîõõL˜ò­L¢ðÍ+ ÚÐ! ÏED7÷ÜÊX9á©ãOEÄ#¬š¡ÉN:‘”P9ù!ƒð@6ß,Ȭ!âˆòPâÜV@'‚^À ¼ç„‹1tÇ(D-9LPËú ž†ÚÉ 6SYC´!Ä(ÚÎfdG¤G[ѶFüRÉKD)00nsÈC¬£Ìoòm.µÜ8*>ÿc[ Aƒ 4hÐàaº5HnÍqĆ\qlu¤P@mrÜÜü:C®A‡ öúZÈÑz*¹›ZªˆjçæD ©uÁ Q¯,B÷!ƒ¬?ÚÖ@¢EBÒ€BA9̰c¢”FPÇŠÉ„Ô6*Ñ‚‚6„H/…hNA·eý”¬¢¡„Û¦KpK†¶„ÙõCª§A-DxžKÄÑf†ä\ µi\CÝy`¿s\Ç û}kРAƒ 4¨Áô.vùöÂR91×µ.¨&!ü–š¹¬&ùû!dxÌŦ,ùš¬›Ýr$®v X#!+šëïKÕÜ«ÝÎOÙj``BÖ!H‡ø~pL€^’„úçx^A/&†)ðB,û[J0ØœFC‰,§zCÐvv[m¦Ha[Cuµ¥K”=­Å]ÎÄÅÐq zY”)b‚Ú":Ÿ‚úY¾Þ¨_ ¶2’“¬6äbô¸lРAƒ>ò‘̤ÞãÇãðñï|gßë¾ñÆ÷½Î ö“)HÀhcÙ5ªBdì9ÑÚ…D2öó&±õÆÈ£È¼™‰’´(: ].|¦òóCjê‰Ò(WI{Ž8ePOÖ!Yò Á()tx]ìô±ÜQ¶1¸a¼ ô’¬Â\$á¹[JÖi€R µ‰B´cT¡LˆÑv µ£A=¨— dZ)˜ÜL”Ù{cÜä¢éB„t%î(P?C|^"Öa¨ó£“Ûê­Ênv ”]ñ¨Zô)0H‡åëØ¤hРAƒ .LÅÎßçªãpÈ]~l#ŒJP¤Šr{1bÖ> ií¡‚1°1Ž<8ýùy@ Q‰hÛäqZId1ÿ¢æ"`Ó&¹Ey­–«XŒX.VK–ò9ÀâÎ×g ›‰šdT•<ë,ÐQÀñX‰Å­/„‹Âvf(ämŸ1xÍ<ôr|î<·-‰;]G-É]DZú@[¨—É¢m“h3• ;â2‡¾†êÛsò)d…«Chî!+· z)Fv$Çu>E|^Ô(J½óÜïmE¶óŠó"äŸx±ÁäÝcÿÙp) ˆu}>÷4hРAƒ‡ i(»´±¸• j… FE QR¶-ԋ˘ç4­Av¬={rË-ië\òsÝñµªBW°“Vb`!cðZ*nvYÍ+þqÜîj׆¡|o2–uH]Y‡Ä‘Ùßr}µö‹pC§ buhp"VcàÉž(mûˆá-‹²~@v"1 ƒ63¨¾(Ej3ºÍ j[Cõ2¨^&Qÿ† 50® (CˆÄ³”Ëó™½Oº#êQ¶ Dë)ÔZ ÕKEyã¥Aù°çv:—‹²œTO½¨ Än}Ûmº^Ì×Ö Aƒ 4ØL¤¡°Îòµ0VÄqó©qó‹Šš„bÃ’/ÑFJ(Y¬«fLUëº%ùüê9à¶ß˜®ŽÝð—n=&mMCܱa1h`36R!-Q‘¨»Z¢Èåùmœ·ýî0¹÷$ÿ¤ê=‚{®³O<`P—ÁC $f R¢ö?ÈÙb¼º(uè…¡¬Å a!®4*Ó«;ÀûK’ô‚78êÅ(D[YAˆºj'uå>©"0›ÛÈ·ÁåÛà ë纵Ò£c…l!F¶ƒÛÊ„ÿN¡¶†Ò/f¯Înt:¸îwd”/&0qé«eËç"¦ҹșK¹A$TT²],¹Öt74p—¢"Ö Aƒ 4˜Óið)À=feH‰ÚDJ¨ßX`!Ã<±ÎQ´Jŧ|Åk ÒS›Ó?žÚ,ÒW^Þ[]V²$‡]Ï€mB~GÀ¼m*‰b6÷ÃQ%‚ xÝú¹lø‡ÕQ³†ºÔÐ6Gc©}|åð*CŽÎ§û£o÷v|'®mK ‹Wu€¯ï±ÜÄOõ@[)Ú¹%k‹ºf}Q_òB©”´Lˆ\B’#dxPd˜ÜôrŒôH N¢sCÄçS¨-ã^—+½E}>·-*ôÚu_l€KsÄÖ§Bº;;ÅkYÇÅÿ}“„K¿UgÝ×ÅÅ,ÆÆéÑ Aƒ 4˜ S­Ab7 )0Zµ±ê¬eH(Y£=ä&"C„ÂRsÅNû†÷B$·­Ia  Ÿbiw3q³ÛÎdmΜ$$ÂÂ…øù0¹~WcZsÃÑ97#!j]-®vÖÇ®E¾z¿pu[êÜÎv'GN×ñTh+QŸ®nOõö¥;­¿ÜíhìH¾Ý•õFZ‹›YòDùE=1±²P!òÈ+Cw"dG$l82–pàkC¨n&ßQ—¹‚¯©/ÿºXõÊ/ób£Ô­¢#z>ÂàŠ–y±Q N•qpÐF½U¦½û0)9ëœQ_»ÝÆaœ]"µAƒ 4¸±·(v®Òc 0ú³%Jæ5k¾vÉ5}Âå’¡ uÀ¥©pí¢|>½µ‡Jv­Û¶5)JÐXµBN¶S`3“\H Ľ¬‰º”qé\rü‹¸dzÕß.o82Üg †`š„¦™aa,G²–HCϤ÷úé>pÓ¼Ôq.B¹GDÏöA©Q6ÓB!ò9]!pöCvˆ[™ý¾[WêŽ#h½®­@=Ft~ˆh++B¼WTAÿ Ê$*´;H#x‘¥ IDATÌü‰1xE«Lަý´1OWÈO=û‰Kh6hРAƒ—8Æ~½ÏšåǾ™ö߈çÆ!—¹Ÿ¥Ù°õ–ËpÅÐ,µÁ,†r¥Æ0œ—„‚„âz5ŠëMٸ٥òIiŽ„,UÂ}—ë$PQ_þƒêO¥?ö~³¨Hê{hŽ·ï“‚tÊøí}¯?]Dºž–sݺöêr¾ &ú4й¹‚ß#*ߪޭÜ"dK1²åX¢×ídPçeý¥\VuÜÆÈkÔ÷RõyUå»,ú`p¢…á‰vÁ“ǸäZÐŒviׯ·Ûiu˜äéSÛÍqû¾×4hРAƒ ‚˜ÜzõºÐïùëó™r?C²D¾òãNگëßíË4¸$—“~ÚqÉ ®m›™lÈè¨HITøýäãYŒ ŒˆòŸ‘÷пšÅŬ«e=`ÒžÌfÁj Ì)!`/ w/_‡—†2NsJêÜ+4¦h=…ÁíËQ—|xê-²Æº-権ù¹ Èæ"¤+1ô‚2 ÚH¯€žI›ym±‘ªtÍí L­JŸ!äL·eì¯h!]Šíå—?/6ø„#ß&ù~8Ç¥Èt’½^þžÎoÈQƒ 4h°/Ÿ …ÈGÝï%Rd¬0^¶l„»J»Ö›=ßWŽ\Õh/‚u{» i.vðÆ12°c’Æöµ4˜„()òê@,Ù±%ç_©±Ð}´Š‰f` %rÞ@Lmnx¯‰œ4ŠÏw{»Ç à{Ù>ÙÞcÞ¹ š-»)n¬’–9Ã^©ªN}bäýåHAÏ+è庥@= u~µ™™(yÞ¹žaÆx}ƒÁ`_¯e¯8qâÞùÎwâÈ‘#ù¾ùùy\ýõ8{ö,¶¶¦ Ø3«1ž’$ÁéÓ§qçÕy|üøóxf5Ƴ¬æñ,ÇxVhžšg…à@æñ‡O=¿¿uðìn…Æ'HC|T8æ~RøX¥þÀc’SÿÝ[¡þ—¯Êö¤é®W< üÙKÀ¯~{²s'Å»¯^³|î9à“õªy† }Ü%rÞ˜·IÜëb’@‚4Ù¤ºý%»€+\¨¬ñ®r,PŸç6†Y¯¤ËíMƒ  Áb/jÆ!£L}³iG‹bÔ&ãf±¬BãìFÄ«ÜÇ$+•/~¬ÁMLEÂX@”Ÿö”~ºàæKøü Þ&½`ê|e2µ2 z?ì¶?C‹~¼á–]\ÜOCŠÙJÆS/'ÐGbP¢Œ{]†¨« …K¤2÷$W²òcï¡%Å hÓëjAÇ@ºap¢á1¹/ñù!Z/Œ¾7µÒX?Î?šðÇü[^:‚k®¾¦Ö¿ˆpóM7ãøÇ7­qã–×ÝRëAD8qân½í¶’bÆæ§N#pží ôþ¯¥jÇšÃ×]wVVVFŽÅÝwß=±›Ëòò2®¹f—1¾ùf?~|¢zg‰»îºk¤ áýïÿÄõÎjŒg…8ŽqË-»ÏãÛn»mâºg5Ƴ¬æñ,ÇxVhžšg…àRœÇ{ÅdNŽu$Æ?8Ć«e}¢äþuDIsð8kïÜIq!r Yì%RN,Q„”ö‰Î’HuÓäÉI’ƶ#¹Û9õîKˆ,…ÖšUúä¨MŠ@¤@™ùÂ'>2%AÊ œß‡µG>Χ¢$µ•´5*DÂlXR‘o—ˆŒW^Æ­À½-ÚýÁÄ`è¶B¶CÏ+ e¨õ jCÖU‘â>DÞÈÔÅoØ?ÁDÈ:†« †W$й§ÉKÄg#IÎaŠNØeûÞ¢œWÀÅŒ JäŽ š°ÿøÀ7hРAƒ—>öÅÎÝ´Ò_ë‘uxDɯ»D¼ücrCÉ1ÇÁ%£ ¡`Á%6š\Æâ2¶™JT;‚€6Ñì\""±ž\ Èk눀LHñX’¹.Fµ"ÐÑ)ß~\iäìç‡S#Á^4þ+«ÒùØu„æ+û+çReèK|…ª§q¤ ç"!H-ê2¢õ!¢Íjì‘ ]B$¿‡»fó•HtBÈ–c ¯hcx$Éç`òBц!¯ÓHD%ÊÜs×-1òN$ WŠö¼'”š¸hÇ·Aƒ 4¸ø1ù«óÜ@Þå‡vúǼºb5p ¼^h?;Ig'Á%C~ð ¹~.Æ!ƒdØ6nv%„eÎ|¨ ;Î8úƒël„J+’Uk€ÄÔ×RÒFGɺ§¥8jT£„šBA:jó1pn†~Èg‡âb×1*ÒÄJ•C6 ñ Ù †³~Ç™£ys€œzü¯!;De1‚^ˆÀDˆ¶‡ˆÎ"œ2‘Q)Š{iÃVçÁBß=g_®xÌ’4B6§0<Ö2ê!ÚJÅâ³)Ô΄ë·fAvÇ@š¦èõzHÓâÇq\DÞ©ô+ÜQ¯Ö½^¯´¨X)…N§SŽêÃî}wj:€ñ èõzк¸w­VkÏQˆv㋽^½^¯´¯rï¦À¬ÆxV{OYñ¬0«y<Ë1žšgEæY!¸çñ´Ÿ ù¥ŽäøÇòó#ÞÝuÆš5úC,,?æ7¨o\\ˆH{É…¤áXÎ(>ÝqÓlr"™Ä± &XÜ2£L°¦òy9¨¼À!‚œŸ¢6‰"e Ñœ© €VØæ&aéİŠÎ {Ì{´À Càš¶´9)A | +_ƒêµX²ëR£@Ý t'‚^Ž ç(c¨ÑF ÕÕ’´ÖœG¡/WPÅ2αO†²t9Æðx‚t9¥@üòXl!Ú 1›{Q6& “È=nY÷M ˜ÿBª9¢fKŽBÖ 4hРÁø˜Ž …Ć:Â5•h…(/1F‚ñ=¢4Up¡r YØ\HGL.¤IÛtÔ²Ùa©ú$*R73noJˆMD²N)wë ¢¨†u”!D†lµHŠGæü Òž}±ÐÕ“ÐÇõèå ſ塏óÍ)i{’\KL¹õëNmû;¹óÞçô†ÍäÊŽöJççÛŽ<¯.ÇЉõ5¢õ´•CkO²ÚqUErºc7Bꕎl>Âpµ…Áj :&DëC$/öëA=-ëf.F©ÖueÍg–eèv»è÷‹ï[»Ý/€Á}Ø+cߦíì!û£(*"4¹÷¾Žï#BMù‡ØÞÞ.…ŸŸFišñE‚Á`P‰¸d߆î³ãYa×y¼ÌjŒg…YÍãYŽñ¬Ð<+ 4Ï Á¥8§Åø)2x®æ>@åru®pv;?Õ*J5çWÜô¨æʯ½'5 ë›D´ 5mƒ4 «…t‹‰³®ÎÎ r]ΦÀ+´\û‰¤Þ°+ÄÃWOCŽ)a˜@f½n)‚î(Pª%0ÃF êÑë*_'— •©2i+uD)ds1†« Ò£-pDˆÏ§¹Îªlv$j¾î¬€<Éäe¯×+åÖH’d×·^ì’"óÉ0¡º!Ï@ëCn¡”ýÇ-¤ºï Àú6Ò4E·Û-ù¼w:=¿½vŒÃá°ô&ØŸ?ö³ãYaªy<&f5Ƴ¬æñ,ÇxVhžšg…àRœÇÓb2»ÈÊ dTT/a6+ÿN2J„ ir+ª)ëqpá[…ãà ’Ûö¸°JPX°ðÇ,ÊN_ qi“¨A+± B¡µ QŠ—9^­« B40d¨oÈÐå'eÇXf!b€”k,Xœ4‹—ž»®Ž>žë¯ž“>¬gB.w{;ro;“GÈM9TGZ\”Üàly6”B6A/Çà–õ´¨G[¢Þå!Á-ÌÜ(­'ÊG·3%¡©8¤Ü&¤+† ÍK›ñ™â3C¨míÕ¹ëPU1+be_XuÔô­Õj÷‡Ì}üäJUŠX×Â(а¼¼Œåååéúš7¶(qô@sss¥7·û…±Çø"ÂÂÂö½ÞYñ¬°§y¼ f5Ƴ¬æñ,ÇxVhžšg…àRœÇÓb|‚d !eßœj£hø–ŠuZN*%·®º”/Ѝ!JnÖ­SUÆÁ…Ìd1m.¤’`gÑUŽlèmX¡­ä~ÙÈ~m° PZodïæÂenhHЀ …hhHQf~l¨py¨6" 2t_sc¾º¶-íÙ!°1Md‡=b#%i5®kßêî>ŸB¤ô»Q€ì”v¬ï ¯¨i‹c‚žÍE`¨h=uͽòۮ맱úKá#$#Bº`ò­$ÙµGDk¢ZÆãsD³µý˜,)u”£±ÛÌϵ¿S±ß­g¯I©}\î U¾ 4hÐàÃø)eóFÖÔvJf>}ãЂ8'Jò»È’•æX…ìj蔽‰ßf_R ªë \B”È ¿=o\æ¹mÄ,®p™!AjÐÀ(D–$¥º($Dnç ¶õŽëñîABŽ#!aÏF—Ÿ%žíK˜ò…Húôôë \òáÌcQ‹ŠÉ+|ž ¥Æý XÂäØÞdæ>+€çz1w"Ðm¤ ÍÔ¢š+YìÕIÈ× ºû ªæ4hûD$î|G¤Çds ª«ÅµîìPHY.®ÑîããbÜïæ4½KŽœ|N“$Vî#›ÿœúhÌzw½äÒ3oÑð¢ 4hÐ`:LF"›5)Ö±$ .¦([fbgäÜ'ð–¶Dˆ‹Ó/úë)­ArÛ–Bz’»Ž¨å£„äîÆªp‹´××¼«Å•l`¢Í¥†Üd,ò€ òt»Ë½7 Ehï¾Qœê°W&âö§øëžéç!3}xuXMd¬_J°‰4çkQ  ÎXAíØùʃ?U¹üÉfÜ™"I»[$îuë)Ôv JµCVœªœ! ªTn¿àƒ ™3zQÔ£ôH 0!:ßGüò _ó”fàüìýE-IQÞ%8Î}è´;¸îºëvoS¡œ6;¿rüPÝJ©±ê}æ™§gÉjÁ• `uuu¼±˜Θc|aVýÕÏ ãÎã§Ÿ~zâº/¥qf7g9ƳBó¬(Ð<+—â<Þ+ÆeoQ‹ñÿ›“¢ˆò·áÐ(ŒiM«Ž§Töyîw4¢,™ÿ(\V¿üa¨+4ÛŽ Ás¼+\}è„ù$¼÷ÙŸ¯,ýû|3ºç²Ï½Ñû~«L†l„9E…Ë£°–õˆH‹žOÍTHR®Á!¦®YçÙà¶cœF„ìÅ.¢\^™ û‡Oeßp+Ìx²l€k]‹pC§ £.¾\¸b®¼w°öl+§Ú¥é 8ÛD K*ˆÃS(w½nAaxuƒWÏ#;– ZKÑ~bÉ3=¨­ª&–9·ÎU;Ê„©8@F­Ò WuлaÃ+Zˆzí§ºhgɹj Qóžþ‡§qíÿôm€€gÿïõpÂ]Û;\Ó4T#3o5$x…ÏLøùô øþÉ/Ö±ÄhTŸ~ægŸÿü#xú©ð®«hÆì)D–ùÃÏ=÷àÁÜ÷6?ò‘à#ùȾ×;+ÜsÏ=€Gyd_ëåÏ þð‡ñÈ#à©§žÚ×zg5ƳĬæñ¬ÆxVhžšgE 2ÿèMÀÛ¿¼ßµ¾ÀŸìVh|É&)µëŽìh”, »ÞÅýc\R…P²Ù„®&"°fq¿ Øæ¹—*¨ Ó*’…› i…袺ư*3©!:™³ŽÈ*GŽÄâv—AÖY)€2êÜS?Af>þ\6î ŸÃSlÀÀZ œŽá‚a+¾ÙŽu«²¤=ÁÔ"xÛÌ• Êj‡³Ëûº­ b½ŽA[)h#3ÑëP„õˆß¯¼¿¾(ëüαB¶#=š [Œ DçˆÏ me’oÉ>âûà&•1šÖ°]Î>35¼k¨ö»ä†g?Í ò÷ïÚ©q‹\xu´Ž5hРAƒ ê1Yyt3‚ùDÉ'I>Yªcx‘ÉÙÂ¥Ââ¬% ly9 ÌE…•'?g!*T ‚!D\¬²nr–Ùèrdεê’Qsкµ¹dÈ„%”]ÅüµdöÙûßc!A.¾|ƒaì=-k’ž­'Κ#Pq}³ß¥bOñ»8t'B¶hÖ–õ2Dë)Ôv–'‡(¨fß!ø]ñ÷»ZñOƒµ†+1†Çè„ 6SÄ/‚¬ÒXºÊ¿†ä7:{Q–JüÜ"¶/ ,ÁÉǰèßHµˆQ$¼„¹ý£Hm•#6hРAƒ .4&ËÊU²ºŒš.òää>üä­_ Ôá¹ñ-uÕ%·|®ZxÆåa… ¦HÔ5DÁ®²k‡¬!›5Ȋ䯹kž” Â`ËûªPXÒ2TC–¬dÂRØ\».±QCåì‚ïd^‘•dx¹$Â1:Qà9 ÎÀ D;²þˆzYá ÏEΊ ö¸nºÄ¦·Ùb$êÑ‚RF|~ˆølŠh[Ö’Aúl`EåQœ:Ôæ¾€ ÈŽq*¯æ.*ŽÇ‘yäY• Þwe?ûXé²ApÆØM=º˜“2^hDQTÊd9ãbÎEs!Ñ|? 4cQ yV8ìÏŠ©2;±»æÈªÖß߆šö5V+AÕ(É –‚X1Û(x^9÷|ßíç°â| œ3‰ÕÎ eû| ¬›õDÛ™_p‘ŸÈþ XÖuK]DB”¬"eÇÜýÉóëØ{žҚ%s>Ì<°÷kȇš åãã“»¼Qñ«–2ÿ„¼ˆ[)AX˜ò}”·²%îu@›™•ƒ²¢=†(°y{N—l{l¥"Ø~Ú[®YG!;š ;Ú¢ÑV†älŠø¼fP ËEv®wŒ¡Ú¯ï&[åÈu«+½@H†ŠùÝiupßîÅ׿ñ5³>É™ÏûÜÇšžÏ²ò‰pâÄ ¼ç=ïÁ׿þõƒîÊãu¯{¾ïû¾ßþö·º+Žw¾óh·Û8sæÌAwå@Ñétpÿý÷ãk_ûÚAwåÀÑ<+ 4ÏŠ—óbº×ùkn“‰pîhSÐW(ܺ,J.u–$EÉÝä ¨ô«ôJÿðá|Z­0ÆoŽÊ›s{€Eeê³(KŒlXp[¸D4kT#·Açþ”Û3ê‹kmÑ~C»Ö>³AÎÔw52ã–ï'€ó$DÈÕXîÄàEYwF}h3m›À T¾÷î´wöïçÿ™µ<NôR‚ôh zN†ñ¹¡D®ëÚd´Ecnà‚±MþQ/J&çÊ®svÌÜApï‹ó‹¸ï§îÅsÏ=‡Ï~î÷Âí’wLw ÌÀÍÎWölõ§®:…~ðƒøÜç>‡Ç{l½Äpûí·ãmo{>ñ‰Oà…^8èî¢(Â{ßû^=z>ø vvvºK†ÅÅEÜÿýxöÙgñ{¿÷{ÝÅ©Sͳ¢yV.§gÅ\ììæ¯on@¢”B¬]RÝšßH±!Ì9¹¡F(ò)UútHÑuÈF T“¹c뺼Ùý} t3`Ns0¹“ Yʼèîyn=ÒäõÚS ‡,¤ì°‚ S׆¾Î9dèE€Ù/Êç»í~éŽM^+=§ ç”(NÛZÂlwµ!,e°u:߃Êú# ˆˆ¯Ù\„t%AºA!^OŸB™`Ð\;çë8®x4£^˜xelX6ëçòÀþ3ü´±ý=¶r÷}è~<öØcøüz¤´$)x 3$J#]ìf@’Šv¯¹ñ5øñÿqüæoþ&ž|òÉ‘çvÜsÏ=¸õÖ[ñàƒâܹsÝC«ÕÂOýÔO!MS<ôÐC‡Ý¥ñcÇðÀà«_ýê%moxÍkšg…Eó¬\nÏŠ± ’0Ç¥PX@n1ùj’]œ `+8ý}w”«+í³¤¼î.ÎaÈ:E•óÕ‘¤x5ï®SXB‘ÙBe¬ëŽÍ™bæÆ0Ÿæwû£ŠU¹¬%|C“hgí ·w,ìX¹9‚4—¯±2nΘ‘)?D¹.‰Š³Ê\°õ¹rIO–œq®’&OR0‰g£ÿöZ!e›ðüXKAC‡18ãn›ô!ûÙÙ¦òª¹Õå$§-DÐ'[ÐW·ÁsÔ™âgú ³CÐP—®Á­'ß¶Ó¸Bνß}ìa bÈ%Y«ž [ 2Ôf ÚÊÄUÒ¸¸²Ó§R_ íYùÞû [cB¶!=A·TO#:7@tnÚÑàÔ!nu×¹WÔÕá#råÈŽg>fù³§è/˜qÕ+¯ÂO}àƒøü_ùJ*´¶Û3äó»ýPp IDAT®?š !+ðÆ7¼oûÛñðÃã{ßûÞþ7v‰@)…ýÑÅ•W^‰_þå_ÆöööAwéÀ°¸¸ˆûî»/¾ø">ó™Ï@ëC¬øï‚«®º úЇðÈ#àË_Þ÷°Â—ÞøÆæY4Ï —ã³bÉ ñ+»î+j¿"/ÈDN”<’ä~õÈo«J”8' €^ûÏÇ¿œK9¿  _Ð ƒ(:]°!&ãf§G(FYÚ­ON=Ù™p¦|cÂk»øNùA7¨)6ò¡2ŽCâò‘ÓI8™ ùˆ:x^#€z,êÑvV^ï '…Í%•Ëqè9…t9FºƒAˆ6†ˆ^NE=dBÄÜ6âWìߣäœVNXnŸ¹§™þPi=‘ŒÏéëOã'Þó^ü_¿ó<ñÄã»ÍÞ¢Ò}'*±Yõ •«·½õmxÓ›Þ„‡zgϞݽ3êÇA£Õjáø¢(ÂÇ?þqôû0½ÃE†£GâÀ7¾ñ üÁüÁAwç@qúôi¼ï}ïÃoÿöoãñÇ?èî(Þö¶1Ÿ‡ͳ¢Àåú¬˜| RèféÍ8jKî;dŽ) ènç×3Š(¹k‰–>†ÜíÎ?'¤Õ)D–Ì9IqEý£ÁQ’œöl­«£MÔŽ$Š\LbèvMЄ…µéª6¡¾’wv8Žj”\ìò!c“ÿˆ€9 DªP¾ò¼0ÎØŽRˆÈ+ãA4—ˆûÞ‘¸²%Ÿ-Á%^&OåÞú*’#“%Èž¥Yº­¥úŠ1È÷ÇXédˆ ê¥Ôs}¨µTî‹;}m»îõ™ÊÜ)ž«~9w™Dqkr”æ>å"€c%á½;‘ÿ;¢©žq¯³õ›—A:¯7q, „C·Ò¥ÙJ n¨«":o׉êQ hè׃²ÒôpÕ"!DTÞ6íZ¢–'ƒ5Q3m_o}ýmø¡ÿìoà×ã×ðÜsÏVÚÉEöDT¨2?ókçô}$% yú#ïþœ+.(¥ð#?2æ³â£yV¸œŸ“çA«¬)lÕ$K&ÇÀ¯!Iî¾Q*«%fkàˆ‹OØÜþXRä’ŸˆÊ$I9å¢È¤º°…md?v>íX([ºŽ×ÀØü”B6cwÕ¦dm“sžóé”kħ,k‘zZŒB±©”ÅÔµŠ=²§Ì¨~j‘ìRƒevhq½5’m•ë+w£Dœ*cG¹±¹qÈDa„ “n†ÕürÈT_¶xÉüœ»¹Ã`é”.˜‹;óò¥¯;·SžSàC@mfƽN"²v†ÜáaùûÓœÝB4XõèHŒl!g@¼>Dtv€hKÂzÛûÃ^åùõä¤Ð™ƒAŒzxre(ÿñ’ºú„Ô|×,9¢R>)àŽÛïÄ›ß|;>þɇpöìË#Ú®å2ûŒ¢ÿÕ¶¸ZtŸ:Ç1~ò}?‰N§ƒ‡zƒA?0kpaæ‚aee<ð¾ùÍo^Vo@C¸þúëñþ÷¿¿ó;¿sÙG&»óÎ;qÇwàÁÄË/~VfÄqŒŸüÉâYq9«%ͳ¢Àåþ¬˜]p{k»¡¼Ü|I¾’Tgøå?êö÷݈’CÀȶk­FÛ‡œôPU-r£d‘¹›/†Ð°óé’¤Ðêu…²U·(_«äÖm>-‰ðÁ' !²ä–ó‰XÖ±t5Ð&ɇd‰Q¸ï®r4Š,'ÈG†"PÀËáßÝS1€wüwáúë¯ÇC›µ=p¿Fµ¦ÅØç î)éÌÍáÞÝ‹µµ5<ü©‡¡³¬\õ(rtˆˆ aŠï¿ÿ~|á _À—¾ô¥ƒîÎâÖ[oÅ»Þõ.|úÓŸÆ3ÏþñãÅ_<èîâ8Æ{ßû^,,,àcûz½ÞAwéÀ°´´„gÅg?ûÙê:óËͳ¢@ó¬ìAç;åæ(".T›ÜJtêš„(•Ê8$Ç`–±‰+šgEæYQ`oiÜ?¨¹ÁÈ…š¤¸È›CT6Ìí›h7¬w®1^ZÜME(nW9²†XÖ—¸oÄó³ÏïK¨áº~¹^!J,ŠŠU­lhp¸A#ÏõÄÐbôûùžÜn„ˆk »ë™,ɱne=ÚZˆšíƒgØWT!ÛV‰(ÙO—0™©ikÈ…áí2‡xåkq̾|èÞå’¢üZó!àr¿\8s0§M,}¢’‚gm[—®7È ˜‹uIV]qʹ.q¥2¶Nãz©; ‰{me½nh’µrøòì%ú]õIbB6![2A j-Et>íÈ}Ê]]ŠèéºÉV£(â~?ÙÙ.:ÍFBN|¹Dœ 9Òt«›Ÿ_ÀÑcÇð‰‡?~:â95ò6-a¨çÐSŸ;.NºÏ<óLNŽÆ®î‘#@ŒžGyä²7xàu¯{>ùÉO^öÏÂÂŽ;†‡zè²VKàê«åYq¹“# yV¸hž¦#HÓÿ÷ܽNA·¬ª›AmI²VÖ\ÊGTJ4ë´[‰hW"aŒ¬![Œ-Æ¡P63Ð@(Äγ;Îþ )²Y®€\u6ï´ó=fäÁO(DÒ ´ÖõO`J¹‡PwxÄy“‚[# í ö­øåmþ Ò4=è.\4hÆB0òYq™árVÐ|4ßÍXö'Ì÷4uhFÙå(+IÖèvÈ‘K„ìïîi—CØüH~ðƒ’̹­L¾ñæj¡pÔîÅä†T Pnô9òX’¶*C’qµ“õ@ìäsqª±¤‰ØôÕ#%²:î¡’f£ÙYrä®Câš‹®´ÉÎ¥{ífpÖ!™ë´?6j^©»\.¹¯\\V¾Ó*Aeµƒ*ŒÈí#õÚ1"wmtÝ×\5ýŒb¿¤¡L.rÒÂÎTf”ÿ@( ‚„XlÔ#£¾9A|+_ÙäÏ· tLÐó‘fh)`À¢­§ œ2^úÅ0ØkÎ'BùïT¾6™«Ýö“"›{npÒ6|÷þ5î¾ ÓêÈöF²µÉ0vØ Aƒ T0AÚÏ?¦Öà±.w! @ùí±rÎñU!?<´Û?ß}®Ô®*¬¤¨è_^ \>¯«de±W .æ4 ”X‹yŽ%r68ããœÎIJË]ËS±ö2Z?¤¹ùÝ&é‡Íõdj”Þê;õxÍÔ’%ÛŸ”ÅÈOYfœ{\{dίÃm·´ËëŽ{ëw#ãåE22@†`w¦M^¾rÙ2>"zrÑM§?yy¶å‹[ÂͯÄQŽÚJˆ…u¯ëÑëÊ$N_‹ºüémËëà¶B¶ Í)­¶2q­ÛLAC»Ë€Ž ÜrOŠì=r‰‘õÑZP0u™+qBy—”ÆqáF§Kûž¿Œ&áB–†5hРAƒAìi k×õË?èl׳ebA…Rã*K¾Åé’:òãGÜrû2j!WkJDÉ:”H“íWaÇÕάGr]íRʃ”®Å©‹¤=¦Ÿò’·m‰+¡Pvúª “¥40v!Ò(RQòRµ*e'8†{ÊDŒA•ĦîÐúã\ Ž`«$c›ûÇ.C1 þ%;¹¨B, áˆv!Ó!BEW¹ü«¿~÷Ùúý“b>>v7ðö“À·7€·üÇj™˜ä¾ÿ‹·`àOÿãŸ×•ûúýÇ/¼üÓ¿¾±6^™qÎoºø'·7þÏ¿þΟTË\Ñx5ð·o^ØþÝ7€‡Ÿ¬ß? þÝï¹8ßîü-À<+JxÛ•À¿z+p$~㯟Tž uû'ůþÎ-Àjøù/Ÿ|¢Zæ†eà¿)ž øçų"¸RŒó}ožšgÅîeöëYq°yKãÿgïÍ£äÈÎßßܳv©v©JRI-©%u«Õmw»ð2ü n›Ú `Æ>à–yÎÌà7ðޘnj™9ƒ¡Û0cÞÃó°›96<Ï`ìãÃØ˜6ÆîöÒ›ö–J­’J¥Rí[®qß7"22+²*3+—ªÒý“UY·"î½±}ñ}÷ûîwÝ0§uÞ%Qú]”J+On=o{¡0"]ÒV™ÿòínúwO Žá·Ñ1”ÖUzlAÛBÍrmuÓ}礧¸® 3Û¨]ßo/Mx`_(,Š7 =ñòø¤,XsBÏJ³ämT_Pߪ¶ôD ÍPõ.Y°lªã,=À’¦JÛ*½\_ƒ·7Ä äž0vb† /»“ÃXrBÙ‚ê)9$ÿaE–E¡ÏëkYýw‡½Í=/Š¡¼<2â$g‘µ0Ö,DZ])åúD ¥óâü©Ùý.C_vÒÀjSi½EÚ&´l©cÏJ„µLZ6»Ãë’ IÑâÉâÚ ü»ï!Nô Oô¬÷¢ ÏìE¾¶ñc_†Ñvx×aøÎ ·!_ÛKèG¾„<Øü©ÃˆïÎÀå€ä&ˆ?}ñ_/!ÿàûÊ|ØO=ŠñËÏÏ!?ÿ¿ @<3…ý‘G1~É)ÿ‚SþwSëÓ¡—ÁÛê[Óˆñ%äOŽ•ÙP»Ç“«êå÷³÷À†àÚ ¼ûppùTj};y‘FÛÕþ?úWê¥ù¡‡áëSðâ|ñ6ÿ$`›¼\îß·Rþâ|öUø­×”ßæ7„œ…¯ÜRJë *Å"¨ü 7 UåÄâ³óð¿? o.¿Í탎¼ñóꜿi.,¨}JËÏ/À««Õõ!kÁ9ÿå¼Rä‚H†Õÿþñ_í5øì[à¯oÂÅÅàòçfªëÀ?? sþÙßÃÿy^?Ói˜Ïn¾M%ûV«+ðo¿ '÷ÀÉžàmÎì…‡ûà‡¿¨”ÞŸ9ßQŠkiùwf‚•éÍxú2|ì"üçï/¿Í<¿øuøÞ|é­ð}ðwSÁå_«\Vx|s®.Á‡ËoóîÃps]/+Ë}²¢"ÊÉ-+‚Ѳbómê%+š„±ù&øõÙrJºPJ—tÒ*{a&î>¥Æ†ô}lßÇÿ?ﻣ¸Û²xGÿ¼™R#j³¿ƒŽ¯äo)KFóý})éJð'`[š;ß5\Ü¿¢ö|u¹ ›° Ò¶}Y8·þ¶,nädAˆ%kðµç?Ç6ëë ê›»ÁXIá>pëò”ê’}KïYú]÷r}sÅÆ7ÿHݧnûÞ÷ÒóYz«Ùê~(-÷ú%K>à„Nʳ!A† 5—'b¨´ã)±f#rÎâ°¶¯Ï¶ïÔøÛóß^®I*ƒËŽXÉ0vLÕo¬Z„óknZoõtnA„ÈÙK¦ê³óqÓ¥ 7m÷\ñ⬕ŒÂ eуýíJh¿º‚¸¾ª”š7ï/)_A\^F¾n ºNºçç¦a6SÞ<µ–ópnA½ˆþ¿q5âv¦¯Pžó•GJDg™j‹Š¯.Ã+K-órÞ׆LF`|fÒðÜÕΆ‚Ëtbàšh~!8Ü¥FP_Y‚™ |ý6ü£}›oó£6ß·¾;«6«LjÂcÝJɺ¸¨îÏ_‡3½ðHpyw´ú>L¦ÔuM—¹}q؇‰U˜\SÛ.äÔ½T~ÿÞêû`I5’ºTFA uoÎf”R•2á\ƒ;\þøêûp¨CÉüW–a1 _½ûÚ`(¹ù6ß7¸ù¾•2—…d…KWTÉ„I%¸¾¢dÅ[F‚Ë­RV¸|CÉŠ².õûYqÖ‘ ~UõáÁ¾àòRYQ È Ú‚eE`¹#+*FËŠb´¬PlYÑ$jó ù½=AFR GÅ™¹!OŒß3Q6=¯ƒãl–±«žHîçÅ_ä]ïz/^¬xŸçž{Ž|à¼øbÁ¥ºYFFFøÔ§>Åàà ÿþßÿ{þäOþ¤Æ7‡×¿þõ!ø»¯þ]«»²)>ú(±XŒ¯}ík­îJE!’§Ú ¥7;C òRGi7{]Á ôY:¶P¨Ô?wK ‰XI+òÖV2MÄŠ9»P§!ŠCå* <ÃHYdùråÒ¯C8Ƙ!É$Cˆ…œÚÍD¬å‘£íˆë«ˆùœÚ'c©—ÜžxU}ô5Yô»9œDÜNá%™\ƒÇú‘û|åÊÙÈ;îÖYM¥Ta9–]PsÊ£¸¯-¸¼=Rl•›wé1”r0ㄘäm˜Ï(ÿMOÀ6¯íW£Òí[Oúã*Ä)ï(EÓieLïK—×¢„nF{D) ŽB²šÓV}ÈXëË»jP¼6Cƒ‰Âè¿D}¨7¸üþ=Õ·±7¦”¦Œ£üÍe V ðfÛìKn¾o½ˆ+Yá6§™p Ì•õå5ÊŠMNª0>¿Lø¾u.‚ÊËÍÓÞ ²C(…3¨¼=R]ýå䀖ÁhY±ù6Í”u¢ö;EàK³íûxY¨¤³±„¾È£à)ðÂãûx衇øÌg>Ã+¯¼ÂÅ‹ùÜç>Ç£>ZóalÆúOÿ‰›7oð½ï}Ó§‹çD•ýÜÏý/^ägög·½q¤i0î}í÷òØêƒ)”çHF„ŒH™µ–ë¡’…¹~¥ž*×õã–û· d,„ !c*´ÑX11VLDV¹¢dåaj ©¹*ßΞͼEAÇ^Šß8rCLÝ Užw¶Œ9³™‡$ŸÖ'F¶+cð”+/E®ß t¬hS‚Ú*õ´ûÊ7ó‡ŠVpNƒ¶eÊEà¹p¿•7±*~9 ¼I}pîråÕ7°ñ çFÛ…7ê\^ÿ:ÊŠŠû±EYѨ>l +êÓ†–U÷CËŠÖÈŠ:Q¹Tby/gÿá­3SrÔ~#È*dùBÖüšKéß¶IÅb<ýôÓ|å+_áÁäu¯{O=õTCµ ‡•²øéOš¹¹¹ªöÝ·o“““5·©Ù]8Ò •ddDÍÂ’ˆ´­BìrjnPQh ¶ç<Ò÷ñ‡!z‘!•0°!l"mc,›ˆ´­þï,kî‰ï`öV7ªe¬˜ˆŒ?e›Z"Åé¼…QZ3¡'¦2ÖÅCÐFL¦ e"÷ÄÔŽN9ó™ÍÏ·ûq É “kÈ¡¶‚ ÛצFÜô•S(¼)”û«\‡­s6 £½]Q„mÃ͵¢rÙUí¯™ëëp'¨íœ­F2û†ˆ{bpÇ7i9_f››k›ï[O¦Ó*I‡;Ú;PíO®—çíòuÕÊj^…àv9÷`GD]‡Éµàò¥\ýûàŽö·©¿j4xr-¸¼Úy& Fr“ˆ;qõ\¦­Í·¹¹¶ù¾õ"m©º÷:ž¡„#&ׂË+51¹A2áf™ò-D½”%@V`­—^ùj™°År”“ZV£eÅæÛ4SVÔ‰Ê $C>~KгÔ}ÚH©A´‘âä(~ž¢Wj(QØodd?===üñÿ1+++,..ò•¯|…oûÛÞ.üÑý/½ôçÏŸç÷ÿ÷‹š{Ík^Ã3Ï<Ã¥K—xòÉ'‹Œ’_|‘_þå_æ¯ÿú¯ùêW¿ ¨»Ó§Oó;¿ó;ôõõññœçž{Ž'žx"°ì©§žâÍo~3ïyÏ{øèG?ÊØØäÏÿüϹxñ"Ï<ó oûÛ7lóÅ_ä}ï{ßøÆ7¸rå ¿ù›¿Éðð0ñÁ•+WøÄ'>A2¹}ã65>JîûÂ%¨°6uÖ>ÊÙˆ´…HKȻυùG'lñü#ïoß|"C`Ç å=ŠS"Rdl¤AÁ0ê‹böF1»#XmÕ¹º…›}C׌»±û[¨tÞ÷tÁ»8/‘UJ"t ´#ïéBüÏ›jþѾ$ìPIîéB5¯i%§¼‡cП€‡ûU8Æ×o«…|Ç:‘Ixí€*¿ºL‘Üuj[¢^DW—ÕËñh—Š›ÿþAøÛ[ª½_8¡ª m¾4Q~ßzòsÇàô5—$jÀ½ÝJÙ{Û5?å¹™àòz*¯íƒ|P)6ó8Ц2QìQ!:_ .¹† è刅à_ݯâóÏ-¨,m'{”âÿã‡às׃˿0Q}[¯®¨wöÑ.5Pñ¦aõìM¥à'ÁcE¿t›oN—ß·^í‚÷Þ£®û¤#uÀÁ8Ú­&›•?»¹¬¨ŠqîTó8:#pŸ#ÞyXõáùÙàòz*ä>YÁZ°¬,¿º\];ZVT†–ÛKVÔ™Ê]Å‹ûÅÿì—þßý8œ))h…ïÒÍ~°¦Ê‰ܾ}›§žzŠ?û³?ãùçŸgi©¥Æ0 >þñó /ðØc‘Ëå8sæLQ«ïxÇ;øÉŸüIlÛæ3Ÿù ?þ8ŸùÌg¼ÿ¿îu¯ãmo{ù|ñˆË¯ÿú¯ó–·¼…÷¿ÿýÞ|¤OúÓeLLLðå/™ëׯóÕ¯~•ÏþóüÌÏü >ø ÿí¿ý7ÆÇÇ9{ölÙ6äG~„ÇœŽŽ¾üå/óš×¼†~ðƒLLLð©O}ŠŸú©ŸâcûXéIÕlGìâïjYPóvDÝè"+aÍ‚¬J¬!#̨è IDATJÜÇd3ÍÛP^);ÂN(ãKd•WÊŽØ r§ÒŠ õlÛ¨Ei«À3ÐüFBIßäkûzy_DBÈ=ˆ'_òC_¼߃ã³XõVÄtñÿ\€‹‹ˆÙ œÜƒõåQåÿ·*ß°O}#ò CПÀ>ûâ?¼ˆø¯ï½ñ¥ °%Ư|û¿ütGÿ}ñÛ·UùGKÊÝ„&Am•ëÜûŽ!ÿù •²Û´á ƒˆ'_†× ¨È¸ vù/î‡oý¼0‡øð‹0¹†üó«*uï7ß/ÎÁ‡_RJ¡Ã†¶ ¿C×WáéWà‹oUŠÔ½ ”†{»Õ‹þ/ƃ·y~N)AûÖ‡_ï8 FÙÿîqøƒsðÑó*5ðÕeõ"ý¿¾ ÿáøÈ÷Á_M(åo5\¾VCÁÛFá7ΨcB¥žýÝ—àD7ïV“ˆÿæ¦RŠŸy»Ê*öÔY5>P~m¥ú>$Ãð©7Ã#}Jixå]ðo¿§²v½÷(|òŠšOòëÏÁ_¾E=«O_†oÝQÙÁ‚Ê«EÿùœJ¿û<?ÿïE5§ç‡öÃ×nÁ÷fƒ·™Í”ß·Zîƒÿøˆš Á‰ø/¨›û÷Á'T?Níÿù£Jûèy•&x&\^ ú&x£’\|'|èøã ð³GUl ÿÛ?À½^ÍÁùô¸š<Ÿ·ƒË«Í`ðþcð¿žTÉL[%_üËûáY%+ø]%+ËoÕ „jYQ@Ë Åv‘M¢º˜.OQ“¾ùkë÷¹Ïñã?þãžÔæüÁ0??Ïüü<Ï>û,çÏŸçÂ… |á _àÔ©Su룦±eNsîki•â:¢ZÅ‘q“3¨ìu*_€Ú×{„Üâ ýÜq›È°ÀN„°ÚBØà ɳ£baµæ’ã;¦2œŒŒ…‘²©FTyéÇ7xÿ‹ïÌÀa¨cÆ@…Ë=6ˆxq^e®²A<õ¡§^òUÌdO¾DèÉ—ÖÕ(M6êÇû¾¶ÞˆNªþÝXSFì×§0Îüõ;—+¯Vïùø%ÄÇ/v–¨QØÙ´za®šðÊâ¿îë8H!TæŸ_ü{_ÛÒýwu¬æá—ÕÇ%â„ä|gî8aI¥Û”Û·Vþå·ÔÇO\ί¨gà¹øGŸ_¿o¹òjùü„úøi+ÄË j¤y)ÿÇ·ÕÇϵàòjI™jm?¥P}kº ØõÕ”ÁåµðÒ<<ñ?‹ËöÆTF¸W–ÔDó mÊí[ ÏÍÀ›J®k<¤R??§dÀ、>~f3ÁåµðÞ¿]_6œ„oÏÀÄšznŸ™‚Óÿ}ývåÊ«åO.©ŸYÁ/|}ý¾åÊ«EËŠZVز¢ITn Yà½ÔƒÂå=DõAÚÒ[|öæÍ›üÆoü Âéž|òI>üáóž÷¼‡ááa¦¦¦64p¦§ ¦¥R)†††ŠþïOõb``€©©©¢yR7nÜàØ±c¶93SÈOŸN§‹¶I§Ó´µµÕµŸšâ_³È5l„c$EœdYÒ–òô˜xqë®Òï…‹9uù!($<ˆì¶VwÛY÷[BÈ m“ l©Œ¢¬­²Ú¥ß¹*CAìÍŸr‰Ó_/u¼PÇù7“ðå›ÛwRª È0¨Ä¹VÄ­âŸnA‘p#‹«ÝÏñ–rðG‚7 šhìk°"㨒Îåm¥ü}»†51êÉ |ðÙÍ·k$«¦JÏÜJ$jAÉV%w+Ìeáw^hm2– Sûë›­íÇ­|à™ÖöaYÑ4´¬( eEí +@å’ߣSÖ8ªŸQ´¾ùõšÈôô4Ÿüä'ùíßþmnݺÅÐБHd]ˆ\Uí”Á¶×+Ae¥}"{FÒÈÈSSSµ©Ùá” &HÏX…ä 5ÿ(e«ð:Ó^—Nú•bX›ÛȨ2ŽìÎ0vGXÕZ“DÞIþ±126"cadmÈI w £jmƒÍ]Ã×ps•}éöÇÿ<ûTýMž…þ+«´FFF;xˆ¾¾~¢Ñ(¹\޹¹YƯ]cbâúÆÏ¥ß@­¼IµãFýîVAµJo÷MºT¦@³:tˆ‘‘:;;‘R²²²Âää$×®]cqqû®ú®i£££ŒÑß_³³³Œsýú&²B³+Ѳb÷S…D“^¸Å¡v~FGGyâ‰'øìg?Ë7â½ï}/Ï?ÿ<çÎãÚµküÖoýúЇÈçóœ9sf]˜]­ÌÎÎrðàÁ¢5‘‚Êü¼üòËÌÌÌð+¿ò+|ä#áàñÇç'~â'êÒ'ÍöÇïõÊ 5ÿH†˜Êhgí#© ©â]’p´k¡¦HÇ0"¦æÙm!dÒÀvÃöl‰ÈJŒ´…HYiÛ1ŠlŒ¼,N²PíK~£Í}Æ‘—±Îõ~8ÆQÁ¬Ü SuHY<ó §NÞGGG–e‘ÏçI&“ Ò»w//¼ø–Uf^VÕî*øµ¨>66Œ|›mT{ù64288ȃ>ÈÈÈÑhÛ¶1M“D"AOOœ={Ö[öAswðÐCqß}Á²bppÞÞ^žþùò²B³ëвâî ò,vå¦5ìE¼¾ò••FFFøä'?ÉåË—ùË¿üKn߾ͯýÚ¯©=¤äýï?<÷Üs¼ð ¼ë]ïª[>ò‘ðoþÍ¿áâÅ‹üôOÿtÙ2?–eñ¾÷½Gy„—_~™ßû½ßãƒü /¿ürÝú¥ÙæHQHóí†Î…” PñÁiå=Â’…4àîHÒ©Cæ-Ù1«=„ÝÆêŽ`v‡±:ÃØqC…³9atbÕ"4—'4“'4›'´G,›)²RµmùR…Wu\2Ш’¾4rÒ]MªúEQÖ;Yì™®´Ù’OÑ?*àä‰Sœy@½ÜºººH&“Äb1b±Ñh”X,ƱcÇ9~ì8†QFD–Ø;û½*1ŽJ c¼d„,ù­©ÞÞ^xàŽ?N?ííí$‰¢û¢¿¿Ÿ{ï½—VwWÓ$N:å)ÂådÅñãǹ÷Þ{ËË Í®BËŠ»‡:.¼SákÚTºkÙáaµÓ¿ú«¿ºaõ·oßæçþçÿWº ë“O>¹áÿ~øaïû¿øE¾øÅ/ý?¨ìýï?o|㽿ÇÇÇyç;ßYQŸ‚Ê~á~¡èï§Ÿ~š§Ÿ~:°>Í6£Ä3ãÍÉ dÈP‰rNr†œ]ðèàn(uƒœ¼ˆ€¨Ê@gÇD ¦r2áYÒIî"cZ²0–MåA2•A².;ž¿oÕšSGà~~ãÈ©\”¬yæöÓÿø7ZÙO&“ÜsÏ=tww{^=Ã0…Bضíý¶m›C‡Æ˜›Ÿgzúv!„¦ø×z6rå”þ/ÈkTtdð¼¾M´q´u Ã`pp‘‘‰B ü/öìÙÃÈÈkkk¬®®¶ºëš’L&9zôhE²bllŒ¹¹9nß¾­Ãív1ZVÜ]ÔiÈ£àWÈÊ ¹–QÜ*nC£ÙŽøïi[;„¤–Dd$"k+oŽo¡W†§¼Ev›Ý®æY]a¬Ž2î$a°¤JѶ”‘eª¿%c1±jªâ¦TÙñüm”uÇTy\.‚ÂB°®tqBýܵœÔ¾Ò«Â_]ÕmWÙç}ÃûéìèôB",Ë*RhÜ—atttÐßßO(*ê`ÕÆQ¹ó„cùÝC>ÏÚfÆ‘¦>D£QˆF£˜¦‰išEsKýJP,cïÞ½tvv® ›Õì.öïßOggå²b``  +4»-+î.êèAªÞôZ ÐìJïewî¨9GY rN¨›šFØï-r“R–@ÆV‰LÇÚ‰ ¤BØ6ƪ…±l©ÄyÇ«ä¹jŠÝ>µ>j²4$ÏQô¥»†™c”3ŽêÊfU:ÿO$†áÍ#B ¥Ä¶mo¡]!¡PˆÎŽ.ææ«]ãŒ5U.œÎç5ª*CÅÿÔ”ÃUf¤”˜¦éÝA÷„»}"‘ ‰ÔuIÍö¢YÑÕÕÅÜ\ëýh¶=ZVÜ]´Ö@ª” °Ÿß4sën¡&YÑÖv×HZVhYÄn’3ê=š©GG5;‘’ð*i¨¹Gnx9aád´S‘Œ:s‹BÎÜ"'È;)¹sj¾’0!u¶5P†SJyŽDVªlxvÀÃãw"•̪øÐ¤TÞ®2ƥ鼷ò oæmÞÈ8ðí›J¥Èçóär9OéBxJOéKζìõ×°êÎÏ1’%›Œ£ÚOÐVr¡PˆÁÁA<ˆ”’H$‚‚ .­·±,‹t:M>ŸÇ0 lÛÆ0 odز,/¼ªT)Þíttt066F[[›7î¦1N§Ó­î^C©ZVìpe°R´¬Ð²"ˆÝ(+v†I£ÙÉø•ë@†04'cŒˆ9ÉмEŽ•“*‘CN‚Rç=aCyž|ë))[-°è$e(•ÏEk)m6¯f£Ã’ƒÈ «s+s ³uÆQ-mõ½°ÿ­[“¬­­F<¥Ç}‘¹/8Û¶YXX ‰J¥jìNIj÷R'RB·úþBÐÑÑÁÐÐ ^y4åøñã,//ïØ\%äóyfff^§ô”*>étšL&ãÝ+»™H$¾}ûR­éÒßßÏÚÚ7oÞÜÕç`r²vY±[ѲBËŠ v«¬Ðy)5š#¥TI  0—”'$T†¸á,ìêdµ[³T:îcÑD,[ˆUËÉv'¦³X`GÕšHä%"m;¡uŽ冷ù>ÒûH¤¯@yš6Â]ËÉMÈàŸwäe€âL•œ°êºQvŸ¯R&“á•+¯ÍfÉåräóyòù¼7áÖ}¹Y–ÅÄĹ\ŽÅ¥Å­G¢Ä8’õ3Žê;ñ¸T¹Ëår,..fÚÜMضÍôô4·oßÞôžX\\dnnÎó.ìfúúúBx œ»Ü¹s‡ÑÑQöìÙÓ¢ž5‡L&ÃåË—«“»|qP-+´¬b·Ê íAÒhMØñ2îx|ÜÐ*C-èŠ)•Ç(ïó™*üN¸k#ù=QBR‡Õ¨¦Èªð:w}£@Ï‘WA¡¾ŠUô?‚X‚Wû9Æ›%e¨†F‡ã/^  qâÄIÂá0B/ËmÛäÌ<7&&B099YáÈ—¿ÑB†uÁvu6ŒêQ;— è8…Äb±­7²Í™››ãìÙ³^_×[j Á´LYXX`mm………]:‰D¼Ññ ÿÝ ó*.\¸@8æäÉÍeÅN%¯-+´¬b·Ê m i4 D Œ;É¢Nö:Û1zòa*£ˆ¼TsˆLé…Ç9^Üßn¢'ÓBí—¶L{½"X'¼ªžÓŸ“*¼í¨3ŠŒ#Šœmb8]•œ=w–x*Ÿi;.‘B¸ ¶s\›) ’UÚc©tŠÜ#½X7r¤ÎÎc-f±’Ýgp¨c—.]ÚDáñY¬Î/‰hØ\£u-k\wòù<˽yr÷JV.,‘¹¹ŒeYäz 9Ò‰µš¿+M1©ÔƲââ…‹w…q¤) eÅîg‹¤: „ çh4;! ä›êg:éµsŽÇ'm#L»`Ô¸î˜2¡fRˆÂÜŸˆQðe,µØ¬3÷¨TÞìq’Ȫg+¤BûŠ£ v¬%eÞÔR•—Oboˆ®7!$S,š+,›+¬^[ òÑMZô¯îºA;^ç´q´cˆDÞKÇÛºæ æ ËóK„¿iº¼3CE4[§6Y¡ÙÕhY±«Ù¾!vZÐì¤Dæ ai2§ÒF‹”) ™+Ì/R’l/S’‹ç¢võ{l©Œu’7`«d BÇxÙRzõxÆ,±Âª|æ$(£ÌvŒ¾4÷z?ÏU kØ×²át5ž›¶®e£F£Ñh4 ¥þR#^ÞF³Ó°A¬Y^ênœD dœltVAö/.ç"üû™•*ëœ3÷HfmÈÖì‘b½ÑãÕïÿG@nV­àç8W¼Î‡0UÖõÕˆü"BÇ7ßp‡±m›D"QÓþæÁ6ò?6=Ÿz}¯úòæ‡Þ‹9"Ÿ¹AøÕµšvD"„ÃášÏk³ÉÚ9g>¿£Y祚+dI/÷:çQ‰‘£þ‰ « ©õ°œÔà9'Ì®ÔU† &W±?Ý{ÂÐ)Þx6«Ï’pÖ[ÚNátA»Õf¹lî5*d©«¶îÑI±4F£i õ1ª™#T&”¿b±<òHõ;¶€ýû÷cY†al¾qÓ?ØÁÕ_è#··ñ^›Þ·Æ¯v3kÛÏà߬Դÿþýû ‡Ã;æ>xö{Ï‘ó‡Í¹kYë éwÚŸ#I 2×…2„ò¾™(O\Îö4PòˆÊèÄõiå “â!•„"‚L#Ý&¸™ë`ó˜3Wùu²×©ÐGU‡0O”- ¡{[ÁYÀVvÚøÑ^­`AæFÝ“[26ÛI”MÝ]uUÕî^/èui4F£)‹6¶ÃIØSóÝ…@ú†/@£ç åœã‰©”ß %áZm Æî$NˆÝ†|ó€x™ë0œÐ:Ë—˜ÁW,Ù·*ƒÉ]úÊ@yŽ ŸÕð/.+/Òû‡!RÞÍ"×HØ’QT™×¨Ñ¶EÝ #Ð^#F£Ñhšˆ6¶cjž8óo áϰÖHL©ê«»j ¾ù@‰ð¼GEë'•Ù·4ÉÃfHgñYé&©s ä7ï?» ßY†ß8e*¨ÓýRu5Õîàä kBlí5Òh4fç³qþ^Mó9ØYl ¹)¾ø¶DÈÆ¶-•±—vÖ>êˆÂ¡ŽÖçf!eq’ ©Šü7á‚ÄQâ9HH©¼G–DX…í6ú”Ö]¾eI/ŒOª9N¿¸>r Ò6üüøø­@%²Z¯cP¿«Þ±RT¦ éAUÖHio £zGõ¨K£Ñh4MÅhÒvãPt8á×ò΢ ÖŽ¤Td£Û1T^}ïŒÀ¡» QƒiÙR¡>O@`K©yÛ3TÕ“L&9tð###tww#„`mm©ÛS\»6ÎììlM‡¨ú$6̵-ªLÝ]±aT#{öìallŒááaÚÛÛ‘R²´´Ä7xõÕWYY¹ æè9 366Æàà ñxœ|>ÏÜܯ¾ú*ׯ_'ŸÏ·º‹MÁ0 :Ä¡C‡èíí%“Éd¸sçãããܼy³Õ]lÉd’C‡1::Z,+¦¦ßš¬ØihYQ@Ë …–¥ ’C–Œ”º£Ò¥ÊŸ¦&FÛ¡;¦ÎuÊ7ÿ¨Á4-‹¨ll)SgwTyÌv³N£ûòV…›aÍF] 7­w]’!¸Æ‘P$I±qTnÛÙ<|ø:|s è€}pÝ¡Uޤ§§‡|ˆ±CcÄb1¤”˜¦I"‘ ««‹þΟ?ÇøµñJªó¼nêÏãÈgÖÕkT‡K2::Ê™3g&cÛ¶w.öìÙC?/½ô333[ol›sêÔ)î¿ÿ~zzz0 ˲Èçó$ èëëã…^ N·º« % ñðÃsâÄ ’É$RJ,Ë"ÓÖÖÆÐÐ.\ॗ^juWNOO=ôccedÅÀçÎc|¼Y±ÃѲ¢€– -+O•s|¹„ý%©ãïêÂve4 •‘oŽÔT’i«ÐÁî¨c uÀ·î4¾ÝV4Á¾ôo'Q‚ô…W 7óc\mte6õâ¸u‹‚!lß§rÆÑ×”×(k«P»w§u ìTùžvvvrúôœL6›åܹsd³ÙVw¹!†ÁéÓ§9sæ ½½½žâç2Ë IDAT>„œ8q‚L&ÃåË—[Ýå†ÑÙÙÉ<Àɓˊ'Y±‹Gʵ¬( e…BËŠæP¹ä*Ï~M£h2±c¬LV8p€••–––6©yç¡eE-+ hYÑ*Oó-}Ÿ „óïUhªcÔõ ‰‚ÔèÔÛ¶ =’¦´Ud uÅ”×ìnÅoÈwî…ù@nr‡>¬/+ú·@=å¾tÞ¿®’ß8rëûåKðì’òýá±M2×UfT‡B!‡½PÓ4±mé‹Ñs_vÑh”žîº{Ôœƒ 2KÏË©¨Š üÖ•¯Ÿmmmôõõ‡±, ˲ŠÎ…û²3 ƒD"ÁÞ½{ioßÏI__===˜¦‰eYE÷„ÿ\´··Óßßï)Š»ÑÑQÚÛÛ±,+ð\ø•A7ÄlÓçc …ª\VôôÐÓÓ³+Ï…–´¬( eEs¨Üƒ$K~—â): SMôDa0¡2‡™Î<³IçÐõ6+›œ{l1C%¦èŽÂb®9m·‚ ’/åvÑ#ãzt6{Þ6ë_ê·}¡u®w*¨þ¡(üöInÒHåBǽyRJ¤”Þ ¿TÀÇb1b±™L&¸õrž³êºV–Mí« ¼{AƒE¡PˆH$‚mÛäóyB¡wJÏ…ûÒO&“„B!,˪í`¶)±XÌ;.Ó4B”½'@»ŽŽÒéôºÿít’Iõ¼ùÏC¹s!„ ÓÙÙ¹ë<';-+ hYQ@ËŠæPÛ:HA÷Z©âWn;M0#í°'µþQN6Í`¶sÑše 奚‡Ô…=1å9[œoNÛÛ‰“MΗX ã¥\ï‘“”Á3¾,éÕ-ƒùµÐ fó*MûÁDáªÀ¶m/VÚ¶íÀœ_¸»ÊÁ:¥Gøš.íCÍîž*¨t÷2vÒ–ÞKÞ=À:¥Ç.¢Ñ¨7!y7áN,v_ô†¡‚‚Î…»}"‘he—†ÿùR=åÎE2™Ü•JOÝdÅÇÿ|hY¡e…‹–Í¡:©ÒZQò»\šûÛ•±NxÕœ¤ ÐÜ$ P³ëŠBO FÚà¥Ýj ÉâToÒq+ˆÂW¯Üõð®yPo韥a®†(äO‘n¶:|ÆW™ëýKá§á‰xj%àí}ðÙxf>q²øp*é­”¤R)oBm8Æ0Œ"¡îî¶mc[ëO„,ùCø;±%wO%Qávå"œýMÓ$›Íz“¬Ãá0BˆuçÁ.vÛ¨K&“!—Ë‘Ë)²;ÁØ=~H‘{.v+kkkÞ|)åºçãn95ÉŠ]z.´¬( eE-+šCm$2bàòõÚÃÌH[±”kR;|¡IÍ2rVaÒž˜òžíbÖŸUYHIíŸ0äOÊPËKÎop•Gþнjêž7¡/x$²šj,ËâÎô8è s÷·ûq…z6›%•J!„ðÖ³Pt¾*‹¦®Óý\j|u¤ÓiæææèëëóFþJÃ$Üsá¾Ýy»¹¹9VVVhkkóF…ýçÂ?ïbii !Ä®ó¸Ü¸qƒ{ï½·hzéóá~ˆD"¤R»o‰˲˜žžæàÁÚdÅnBËŠZVв¢9lÑ@r(U üÙì6Òdôt%…ö·)oŠVšk 5݃”³Õ1JR{AùÝm„Êyʾûñ‡¿Ù¬ß¡N¶:_5^Ýå4hxbiKfgg¹qãccc^¦`ÝË~uu•ééi2Ù ™lv]8]q–º*úPËuòù±,‹ÉÉIz{{À¶m/\¤tpnnŽ……R©Ô® ™Èf³\½z•ŽŽ/;—;™ØOX–Å­[·0M“ååå]9J¾ººÊ+¯¼Â}÷݇”²ìó‘Ï癘˜ ³¼¼Üâ^×)k™Ì®Lé¬eE-+ hYÑêc •Ri(žF‘ ÃPÚÂ`Û…»&»¦¦ù°’m«cJªs°¶ûÒq–¢ÂêÜu{ ™ëŠŒ£Z.ƒ³Î‘·Þ‘S¶T×WnRo½$A¬¬¬pîÜ9B¡###X–Uô‚³,‹åÕîܹC6›efvvÝË­rãHVÒ¥úP…qärûömïßÛÛë­[*¾Ü´,ææf½ôÅ»9vüêÕ«„ÃaN:E"‘Xw.òfž[·nyž…ݨƒ:Ö³gχ9~üøºçöm²ù7®O`7nÜØ•Ê(YqöìÙÊeÅÌÌ®=ZVвB¡eEshŒ¤©Ž¡$ô%”b»–‡¬ÕA.F`0Jj¯Áœ½JzfiÝv===„ÃásX–UþŸ›- ÛL´qtW’L&y衇##¥Ä²,b±ñxœ®®®ó¬iêÇ=÷Üý÷ÞK__¡P˲0M“X,F[[¹\!´Ð¸›Ð²BÄn–;Ê@Êçóœ;w®Õݨˆ¾¾>r¹\pï9{’ÜÌ sãS*IC‹hO¶‚Û·¦ZÖ–#p<ÇÚHï\[¾ç^]·Ygg'±XlÇÜeÙ.òb»ôCÓtâñ8§OŸæþûï§§§˲Èåräóy„!¼0áC‡qíÚµVwYÓ<È™3g#cšfà}qàÀí9¸KвBÄn—FÅ[)RÛ= ñv$jÀ@zb*)ÁR®Á®eZܾTç`1 –­ÎÍ@R«»f>O-4ޤ{ÝýØ-nF¤D%&ibH½”²ü¹hp÷ž={8räííí@aNAé'‘HpèÐ!zzzÚï\”^’&Þ@pšp=Šú epҜߛÑh”000@8öœ ûbxx˜}ûöFÚ'-+|}вв¢¨ZV4Œê4PQòE G «¥+ £í2`Í„Åä¥z°[ôÒYz§…} ï‹k&„Œ´©sµiuh]‹Ÿ[Û¶É-f·³EåFÊÆ˜Ê‘Ë­Ÿ{Ö²Ù,öxjÝË,v=OfmƒycuÄ4MÌÛiäRñÛ,&Ô§=lПŽpáÜ9V–—›Ò˲˜¾u›øÿˆ±ç¹y¢maö›!f'îpëÆdC/Û¶1M“|>”!„—žÕ¯øø•Ÿx<Þ0å#ŸÏ3qõ:Ñ?Žj' ±7aüòææ›’6Ö²,f§gI|ñ2çWu„²Â,O-pcüzÓ<étšñ_áèï Do”.àÕàÜÙ³¤R©Í+¨Û¶Õȸ3‡  •—*ÄRJb±XüZVв¢€–´¬hÕ%ið—OÙòJÛ@ÛÖtÇà c -oI¸í·Ú@ZÈ*£iz4€R8^}õU&&&ˆD"^èF³™ŸŸç›ßü&Ñh!DÓ.?kkkœ?žÐ¥7ÑuÃì‡u@JI*•ò&ÕJ)1 £Hé)}É5CéX\\ä;ßù‘HÃ0¼¾5“L&Ã+¯¼ÂøøxÓ®G)RJîܹÃ;wˆÅbH)›¢påóù¢IÖ¶m{¿Ý{Â?BÜŒk£eE-+ hY¡Ð²¢qTn •;8¿GI Lj҆R !½qè‹+cd1§ ‚  vÍÄv.[«û±”s5ý èK@X¨dš]‰mÛ-Q4JiÖhßF¸/”f ¥drr’#GŽx!®Òã~ÜþäóyVVV…B¯éUGš¿¿ͼÑÌçcii‰……ºººŠ”žÒ{²,oìf)¦ZVв¢€–´¬¨/•Hk/Ô®±Þ›än·sÎMýi(ÏH4¤²¶-d!Ûú‡jÛx²–š‡”6Õ¹m‡¶HÁ«¤ÑhêÆÒÒ×®]ãØ±cH)½ ÿ(°eY¤Ói&''½Åÿ4»Ó4™˜˜ §§Ç›tï†Äøï ˲˜žžfmmÕÕÕ¦x 4­CË M)wƒ¬¨ÂƒTò;°¬ÄbÛ–Tw“ÁÔCêûJæ2­7JÀ›Z¶-ú2ŸQç¦=‡: SHM#Èd2œ={–P(ÄØØ¡P¨èçŽü]½z˲˜ššÚQ£šÚ˜˜˜  qêÔ)otؽ/Ü Ù¯¾ú*kkkÌÏÏ7eB¼¦µhY¡ b·ËŠ*ŠõÝðîÍ_j0U›°Áï‘ÚítF`Ì7ÿh6Óú°6”I ¶E_˜Í¨s3”TRGØY•F³SH§Ó|ï{ßc~~žþþ~:;;‰F£,//³¸¸H&“Á4M¦§§YnÒdtMë¹ví©TŠááaöîÝK[[ù|ž……VWW±,‹ÅÅEfff¶Eˆ“¦ñhY¡ b7ËŠ* ¤‚ôém co[:¢Jé•­m®õ '|Rn¾Ì9ÔØ~hšF.—ã•W^áöíÛ xéy³Ù,KKKÌÍÍm‹yšæ2==ÍÂÂ}}}tww‰D0M“µµ5æææv\¸ŒfëhY¡ b·ÊŠ­HÕP.ÄînA ²²´)ïÛJnÛ„Ø éx¶A_˜Ë¨:)Õ¹ê‰Ý]^F¦H)Y^^Ö#¿š"r¹“““LNN¶º+šm‚–š v£¬hžär·*º‰°Zÿ(‚Œ¥ tóS•²”ԙ欩 i={{8õú3ô½þ ¹cQRý+d¾˜¥ëS‹ôöö266†mÛ,..råÊnܸQ×>!8ýðúáSpªåC`…ml!éú3t§möïßÏ©S§H§ÓLLLpþüùº¾è„ŒáØOÓþÈ ™{Bdºl,C’ø«º¿™b``€£G’Ïç¹sç—/_fnn®n}hkoãþï¡7Á¼7Æê°ºÆí<]ààÁƒ<øàƒ,//3>>ÎÕ«WëÚ!÷ž>Áá!8|ü÷ü£ûˆ?ÔKêˆA¶]]¶?[¤ûB–¡¡!Ž?N.—cjjŠK—.Õ=ÜJËŠB´¬PhYQ@ËŠæP…´M”çJ[ޏ)¾sÊ@²¶‡E-Ü4ßÛ¤?ÜɨsꜵéD ;™ŽÎNüÀi†~ò^Vï ³¶±¥DbKÉêÊ SW®xÛ !H$>|˜}ûö1>>Î;w¶Üc'qò§eõM –ã[8kx ~_½ŠL”›p8LOOoxø~ý:×®]Ûò(ØÀÐ'ßúÉÇGH C)m¯3wfÈ\™ò¶7 ƒöövî¿ÿ~æçç¹víÚ–_0±xŒ“ÜÇÁwŸaù5a#Å×#—É2í»ñxœýû÷344Äøø8·nÝÚRÆîãÄ`þP©nœëQ8ׯcMÖR ‡ÃtvvòØc199ɵk×¶<:º§w'Þ|†=?v˜ÔÑ‹¡âs±°°Àä•W½í à ™LrüøqöïßÏøø8óóó[êƒaœ8s’ã?ó‹ßYw=lÓâJÉõˆF£ 088Èøø8[êÀþû9ùŽ×zëÙÈÅ×ãÖ­)òW Ç …èèèࡇâÎ;^6«­ eE-+ hYQ¨SËŠæQ›IÛJÕÓƒ*ùÀr¦ÓÛ#­6Nˆ`Ûô‡éT!QáèÐŽÎJßp?¼çûˆ¼}ˆ•.‰ÄÆ–Ò誤ø¾“R’J¥H¥R„ÃaFFFˆÅb[!þÇßD÷?;Æò°4 ‚¼ð{½2cš&³³³ôöö‹Å¸téRÍ#Ä÷œ>ÆáŸ}í& îƒ,9¶m{¢c±cccLLLÔü¢íèîà‘w¾ø»GYÚSîz¬?™L†L&ƒaìÛ·x<ÎøøxM}x훥ÿçO’½'Š®üz¸ÇÝÙÙÉÑ£G¹råJÍ#Ä#GpâgÁøÁ^ÖÚƒÏEÐõX]]euuU…ù8@4­y„8ð?ñfÚ~nŒ…ÞʯG.—cfF ‘H$¸téRM}¸ïÑyÿi¬Ómdcå®Gñ¹pÓ÷$ Ž9µk×XYY©©ZVв¢€– -+šOíšç6Ñ¥wQCedëŒBÎVI–sÛæ {›…Ø-çÔ9ÊK•};DgÕ¹Óì óšú&roé".<å¾» IDATt‘•„¦ò¤/-º±HúÕ%Ö–— ‡ÃÄãq"‘ˆ§X˜¦‰ištvv2::ZÓè×ü“w``˜t›@ G Û’È‚${i‰µ+säÒ,Ï.‚¥F@‰DÑÜW?~œ .T=:|êÑÓøÀƒäNÿÿì½wœ$×}Øù­ª®ÎirÜ ;›w± Ä‚À@<ê$0ÈA&iØ:I¶|²yº;Ý9*œî$Y¶eY²-JV°)ÉÊ-‘’i"±ˆ°Ø€ÙÝÙÙœ§§s®ªû£¦ª»g»§»7MÏìûâSØ™ê÷ºý~o~õ{ïýÞïyЕ’ JÊ@šÉ¾!»” yi|"‰ªªx<$I²?+—ËæCN’¤¦Ãh‚!žùþÿ‰üÇÚȨeú(8V4SSd“$âqEÁívãr¹ì¶ÐuT*eÏÚßIͳ}ÏŒ’ëqTèÃ3(ÜHžX'·ž&>µŽž*âr¹ðx<Φuà %C³ŽÏþ9úORxÊO^)µ…œ1`.Gîz„Ì|œôµ™xUUq»Ý(ŠbëÚ‘îèèhÚñq8U>ô!÷·;I—éÍÀ¹n½ºAêf„üz†x<Ž,˸ÝnÜn÷m}ÓáppôèQÆÇÇ›’àìóçèüþcÆœèr™>Å[)RëäVR$.¯PLdq:x< ð÷yX{p¬¿Ñfa+J[QBØ a+v†û75oP?¥·õz‹øå÷ ·mî?J`)Õ:«5Ææù¾­2@s)U§ †Ì„ â|…]Cç@7'þÖ“ž¡m:<ä ¸žbéÏ&ˆ¼6K—¿ǃSrâlkc}}¹¹9\.===¶as¦ØëõÒÓÓÃòòrÃr<ý‘¢_Å2‡GYÓ‰ÿ÷nüá[t¹ÚðûüxÔö.{Óµ¦iôõõ …*6û†ÁÈÈSSS ;>O¥ÿSP(sxä¤NîSúúLš6—Ë…ªûH$–––˜žž& ÑÑѪ–ÂL ཽB¡Ðp?àìß|–ÂÇÚ(n>`¢_…>œN'M¥u=ûüS¸þî0…î’ãDt’//póÞ&Xpðð:8}í$ôsssär9ºººhkk³Oj·ä`vv¶áš}‡†ûä£ÎùÑ6ÒúåsŸ»Júu:üm¸Ýnœxp† VWW™ÅëõÒÝÝËåªh‹P(D¡PhØu¨žùÏ“ÿTgIºcI#òù[ÜúÜEz]ø|>üŠ‚³«‹X,fÏÄ÷÷÷*d$‰ááa¦§§ÖÇɧ¥í¥CÓÉœ_aâ/áŒ@ÈÄít¢ÊAR>………R©ííí´··£(J…>zzzÐ4­áa+J[QBØ a+vŽû7@Únpô°…äQàPØü9Y€ÅJÐÀæ ´”L,¦!Q0ÏA:4Û0¶ÓB Á 0úôÜÏ÷’Quó¡×He‘Õ?»ÁHxÇŸ~§ÓiÏ,išF>Ÿgccƒëׯ3;;K(¢»»Û~_+Æ>•J‘L&ëÊqèØaB/‘ñËöÖ1žeü¾Á¼ðîàõz‘$É–AÓ4N:Å­[·¸|ù2ëëë #˲ý¾n·›¶¶6"‘HÝLI=}=ô}ç!”SAò–óX`寡_Lp¢gŒÎ÷vâp8Ìð]GÓ4r¹KKK\½z•™™ºººƒöûªªJ0$—Ëٳŵp¹]xâ(ž’ÞÔ‡‘Ñ)~+ÂÌgßf$0À©gž·äV[‹Eb±ܼyŸÏG¿ý¾’$áóùƒ 9_£öÓþ7 ÷8íÐ%ÇdŽÉÏ|›¶˜‡gŽ=I @–å }œxõ\'9‡ÙÒz‘ÏO‘úú":‡èyú4ªªVèà S¹ví333öߊ±Ïd2uö²,søô1üŸ!éÜÔ‡f _H1þK¯0âíçÃÏ~n·»BV[LNN2>>ŽÛífhh¨â½½^/ápØgÙŽÁ¡Aº>zƼ¶Ã£Ìä™ýìEÜÓ:gN>FQ” r¹sssŒ3==Moo¯}`(˜{,'°^F3a+J[QBØ a+v–&HwyZçÃ6(*ÇS¶‚”(ÀB‹­ é a´–L ›$0—±i·j§ÿ;“ —žÔç‰}~†ÇŸ¡³³ôßð¤™ì^ÃS˜õ£ª*~¿Ÿp8Ìøø8‹‹‹ Ø3°N§“p8ÜÓsô{Ï’.ÛGàÏrù§^æ±ý°opN§ÓKy{hž¢¤sðj˜€àرctttðꫯ299ÉÁƒ+Þ»»»›h4Z÷!Ûwv”ÀÙ^²Þ’óô[ïàŸ†#ÇÎ íPŒÙö(+ÝK^Âk^†††…B\¹r…¹¹9 à ÛŽV  N×uz<~F?zŠx{™ÃóÍuæ~ã"g¡»»Û~ȧÔWû—qeF&ƒtttàóùhooçÂ… ÌÌÌ022bëCQ:::rz|×)Œ4µäð\ÿ7ç9äfää°í€êºÎxÿ2i5ÏÈd¿âçСC´··óÆo033ÃððpÅL¹%C=}tï§ãÙÒ’Ãù“›è¯Åx×á3ö,§a,â̶Gi[sѵèa``€`0Èõë×™œœD×uºººl}x<['Ûáp©ùÄY¢]eÏ[IÆöÁ¡:p8x½^FFF8pà™L†µµ5s€,In·›P(´­§Ÿx”ô{=èÕÿw¯ðØØIöî§££¿ßoîcp9yíÄ<çOÏ‚GÁá0åèîîæÑGÅáp033cË`ÉÑÕÕU±•}£Cß3@n@²Ce–¿pƒÀ¢ÂñCÇèíí% âñxp¹]Ìì‹sþô,˽i»-B¡GŽ¡§§‡H$B:¶Ã$I"T:::8uê^¯×ÎŒeµ¿$I´··Wèh+Ý}=ô<5Bv¿b‡Êl|m.&9uä„B!3”Ëåb¹7ÃùS³Ì Åq¨f[øý~ÆÆÆ"‘H‹Å*ôáõzñûý5eP…Sç%ñ¤j‡ÊHóy®ÿ‡Wy÷#ïbdd¤B’ÇÁùS³|û‘y[ªªÒ××Ç™3g0 ƒÙÙY{–\’$dY¦««k[}Œ9ˆë=:°Cefÿ ý…6Ž>~þ$rÎ@‘dŒÍ×Ün7ûöí#‹1;;‹¦i(Š‚¦i¶¾¶Ë–Õ÷ä~”v'Ùl‹ÄùEºóA÷õ …p8úxþÒ!2äiK»‘dÝÖGww7‡ââÅ‹är9¼^¯­ë»Ô"8ÜNøX7i‡Ù…é8ê=á>;óXy¿8²ÜMç†wRA‘ͶP…`0ÈÈȉD‚L&C8¶û¦ªª¸\®š«²*³ïý‡ˆ:73Pt2_Y`ØÛG¿=k}¯¦òñó'1Šz…>ƒƒƒD£QÆÇÇ)‹¶>¬p&+sU5ºOâê÷“ÛÔGú­UÚ6\ võÓÖÖ†ªªH’d·Å{®rêF/¡ 'Š,ÙmÑÙÙɸté¹\ÎtÔ6û¦Çã©Øs°a+J[QBØ a+vžÆWdJ+Gö Òæ’uQ9ª†ÁÃ38p)p8l¶_¦h†×åuÓño‘Ë^AjYì+¯›avé‚Ùv‡Bf[ î?‹9X¨q¥j‡%(Š‚«Ë‡6ä´3PåÆ7ˆ½µH¿ŽPžÑÆSp2 Ó™ôÙÆ¾ÜñÀáp°¼¼ŒÏç³?Çívלôz½èÇŸ·h†aT8Aå´··ã š2äW2xS*!OÀÞGÐŒ ‡ÎN3sT¡P°3Y3ÃÕœ/§ÓIïh?©þM}d5ôé ]¾Ûù³6Ó6"‡*ÑÑÑa·ayȈå”n¥ ŸÂˆŠ¦šm‘›JЦñ¹Kûši ¿ßo;*ù|ÞîVö²j`0Ä?ÚN¶Íl‹B$‡ºmÞ°Ý7›i —Ëe‡^‹E ð?×ápT ‘e™}£C$†L4Ý 7‘ Ç×i—oF˶2A …Ûúf5º{º‘F¼<›ú˜K,z xüvß,—¡ž>Ÿ®®.TU¥P(Ø÷­™ájΰ°%„­(!l…‰°­AãÒTÜ43ػ˻—b:÷H,Â\²µBÙÀ$µÒ9HsÖI2ÛP¬ =>{¼òoU~n ÞIÁ÷Ô¬¦zxº‚h²yp]1•£¸ž%°éœXÊòÙ·ò™§­”;?ªª’Ïçq:ö!„µfÞ‚ƒè06CfRÓø¼¾Šl¹ÓP˨—Ë!Ë2@€T*E0´Ã"jͼ¹Û|¨A7Ú¦ ¹õr;—Þ`ÍF–?\¶“ÁívÛ3†‡ÃŽå®:+¬*ø{ö>´\ÜRŸ×kf-}l'‡5ó™Édp»Ý¤Óiû~5}màVì¦Ì| Ãe¯Xçt4«ŸÏG6›%Ûéòð›r\®vúf[bHp¹¶>ŠÅâm³Ãõäp¹\d³YŠÅ"ªª’ËåP¥jß”d‰à`‡­CÓÈÌDmçäNõaµE2™Äï÷×í›ÞÎ ŠOµõ‘]Nà4{VÚê›ÕôQKkÇꊢØNqµ¾)lE a+J[±Y^ØŠ– ùÒݬ€U«Ûb>ù=Ç ±ó\ŸÙdke‹Ã:(Vj9¹˜I™iÑA¬ =HúÊf´t~zÊýø~x²ö†gÙ¡àðªö©ÞZ¾ˆž* Ë® cjÎrþqw88N4MÃãñÍf+bž·â ¸0¤Í¥t ¼²Rñp³œKŽz3``î#ÈçóvÌuùLàm2»HNÅ–AKç!¯!¹JŽP1£Ùˆ .—ËÎö£(Šý©Ö²"ãð;K§¬kZ<‡¢¸lgc;}Ô’Ãr¾ …@(=|«¡úœ K%}IJ8ÊtÉÖ{4ÓÖž‚rG§– ŠÓâvØmQÌÐ3ší—;¡Í´…5jFÅ y5}H’„p•ôa˜}Ó­ÜÞ7›‘Áš™µúf]}xUpȶ>ŠÉJ±ºTî„VÓG-9¬TÃåý±fß¶¢$³°6ÂV`ß¶bçi2IÃŒ-ÿÞÉhg/¯,I˜ z=æà#š‡åLë Dt$£õäZNÃFÞ”«×k¶¥ÜZ@{Ý€Ÿ™†—7ÌÁÑSá:Ì8ZÓ˜†V4—ó-ƒ¥ƒêj9=[>`Ï –SÓ˜nÎvé–,ºA>Ÿ·e°>{ëÌ×VÊå°fkÍŠÝ.ƒÙ›g£ëZA£ ìÙG(=j=ܶʰ³W­úÐk¶Åvúت“¦6ÔJe2l¶EyŸ°fb›ÕGyˆHÅÇUmÃþ¯ÔE;«Ü ÝÚ[e(—£|f¿¾ [ÚÂ0Ð5ƒ|¾pWú¨Õ7kËÀmúÐ f[”÷ÍFôa}¦®››ãë¥N.ׇ°%}[aµ…°UÛâ¡¶;ÇüUì)2öî çnpÈfr§éÍ ™Öë’a€!µ^ˆ]V35ä4ð:à`æ[k vÏ¢?; _488­ ‘Kf‘7 :ªŒá‘I-¤*Œ©e ¡rƒg­‡¾u•vk&¯Ù NCdtÃÀÙæ&‘\±º5X>cUOI’(‹øýþЇ‹õ°ÜJ!•§- a†H(^•¬T$—ËU}ÈÖ’¡\Žò¢,›™;dä6j:¹xI†"!T’ÉxÅC¶Y}X²–ëÃ0Œšm‘‹eq‹€‚n¨!Éì2…Bɼ}hšvÛÆÞòYÕrй"…ti³-$·‚æ0HÇÓŽWyRµ¶ØÚ'-G´Ü ¬Õ7 à ·‘±õ¡K ¶¹I$ïJVß,ßÄnFÍsEò‰Z¾›}Óp’*æ*œa«-šÑ‡åˆ–ë£Vß¶¢„°%„­À~?a+vžæ¼MƒÒzcó†ÑààȨqíeT޵d 0¨þÏŽ\›av­xÍ$ÍLvp, ªXAºïèÀ¿œ‚¯Dà'Æ2Ò«f©Žìs %–——+ö[/+t¢|C¶®ëär9R©²,S(p¹\¶5 £¦ÓŸßÀ(èèº9ç 2¿0O*•jZ]×Y__Çét’J¥Ì¬Wz)þ¿Öƒ>M“g06eptºIè)Ö××+.µdØ*‡užõ€.Ÿ%·äÜŠ–/’\ŠÙú\2R“……2™LÓm‘Ïç‰Åb8r¹§!}$—ãhÙ¢­ç ŸåÈ*ñx¼êç×ÓG4EQ²Ù¬½aÙj + òVr‰,™Hc³-”“Œ«Èêê*¹\®®[e(?tS×uœN§Ýµôaèñù [È û™%N7­MÓˆD"¸\.Òé4>Ÿ¯âskõÍôZ‚B*gëCíõ²ž‰²±±A>ŸoZ±X Ã0ì°òYòZú¶¢„°%„­0¶¢5h|€T1¨Ùüa»ïÒè@¨µÚãÞ¢Êp¼Íü9­Á­äΧÏÞ-i¾­k*a¶ÀÑ6³M÷—= ¹ç°^€?[+]_ݨY-•L²:±€:o.Çã—Q†½d¤ uò–AµþM§Ó¬¯¯“ÍfÑ4 UUmC^(jžB~ëæM\× ºŽŽŽ²ß‡ÒáâÖÔ­ªF};t]gii‰l6K&“ÁãñT_Õñ2 ƒb2‡<•E7t4‡1ê¦ûéÆÇÇY]]mXÙl–¹¹9 à ²oß>{&Ðz½–>ŠÅ"ÒÍ,FÖtN²mƒ>Êìússsd2™†õ133c·IOO½Ý0 ;CT5t]G_Í!-çÑ ‚ÇÀ÷hÒ‡7nFë΄–?ä#‘™LÃ0èêêB×u»^-}²yä‰ º¡£K¹>™‘ï>Á•+WLg¤A}‹E»o.--1:: ˜—ad2™mõÁl#i†ÇäB=ØOD‹1==M*•jX‹‹‹d³Y666…Bø|>{ÏH.—«éð[QB؊ʾ)lÅfß¶bÇiî$ë_iËá°µÊW*ûpašO‘€†˜lá;ÃhÝ»é$òfŽÐ|1V¿ßü«ƒð;'ª_ÿttÛªÙ•$‘×ç!gÆ,ËÝ.¼O÷’õyûí·Y__¯;ëÇ™%‘Hس®~¿ßvtŠÅbÍa‹¥/O¢'Šè›qÏ®ö8ÚÉëo¾ÎÜÜÜm—jrLNN’H$ˆF£¤R):;;m‡ jÏ[į®’šˆ`7÷E â;ÛÍB|™k×®54·²²Âòò2ñxœD"aŸcRþ ·Â7ªQˆçXýÆ4dM}pàyt«¼ù曬¬¬Ô•!“ÉpëÖ-’É$±XŒB¡@8¶õaÍ’nÇêùi «3TÃ0pëÂÿH'W®¿ÃÔÔ”í°l'Çôô´=;žL& ‡Ãv€Ú3ÂÉé b—W0ò›{=†}xŸìaCsåÊ666êʉDX\\´û¦•ÆØrtòù<Ùl¶¦ zQcéK7 ³©ÜÏ÷áÙâµ×^cqq±® …BÉÉIR©Ñh”L&CgggÅ@ ÖŒ°Eä­²³ tÍÔ‡z¦ß™.&nÙï]OŽ……Ö××í¾é÷û‘eÙÖG½aa+J[QBØ a+vž»?(¶‘ÁÒÈ™}N3AC^/é³Ó!kÕBì4hÙ»TæÓf:2ƒj³;ç÷‚œ¿¹?:±m±x4ÎüùIœ2]ê™6º¿û+«¼öÚkܼyÓ~àkZ)–:N333ÃÍ›7Éd2vœóðð°=j…ÓÔ{Ⱦsá2®ÿ7÷`íÐùá³=ð­o}‹+W®T„¯”˱ººÊ¥K—H¥R¤R)æææ8rä²,Ûá…Bh4º­Ó³8»@üëó8¦òæ~ЇFð?ÖÃ[7xóÍ7™››³CGÊeˆÇãLNN²´´D&“auu•@ @GG‡íxišª²Ó“Íd¹ùÚUÜçÓæÌð!ƒŸŸÏÞ’aéÏ®8z£Û<°:qÃÌžEÞÖGGGGU}äóy–——I$x<û3­Ùõõõ†ô±ø—×é:åÃ8ã.G)®e)ä \»vµµ5zzzp:·éÃrF#‘ˆ=SmedˆD" =`ãWW‰~m÷àFHB[ÌP¸‘ É³œ1¿coo/@ÀÖ¥Ã0H&“¬®®Ú3±ÉdÒÎΔÉdê:z^cî®>u­_‚¼Nþ…¤Žuá–––èîî¾MVzÜ¥¥%b±Š¢Ø‡oZ3««« écõëSô<D ·ƒ Š×ÓrnÞ¼I$¡§§OÙá­åúˆD"v(œå„Yú°öÀÔCØŠÂV”¶ÂDØŠ¥¹ƒb-¿Wû¹QÊL-ê—ß²Dz¿Ûü9«ÁdÂ\¥iA$CBBjYù˜L˜éÑCuaˆ³ ó9øw³ðj ü üæ1soRÒ©4‹ß¼Épù©6â¿3ÉôÇ~=—Ë1==ÍÜÜ>ŸÏN¿šÏçI§Ó›ˆc±ôõõ¡(Š&Ð3·fðý‡0Žÿ{ é¿G¸ò+ßDË•âÎWVVXYYÁëõâõzmg'NßæL\¹r…}ûöˆF£ =Ü"kœÿí&].$—Ìâ¹ÌÚÅyûõD"A"‘Àétâõzq:öÌž5[lae”êìì´g¥«m¸ÞJ>ŸgîÍ[ølù{zÈþî,ø¦ýz±XdnnŽ……¼^/Çv(ÒétÅÃ+“É0>>Îàà N§“ Û)­ÇÂìžß â Dº”bâ×^#³VšÝ___g}}·ÛÏçCQt]'“ÉØ3žVŸ…Bv8O­8úrâ±8ê—nÒ×íAõ²öÙk,¼2i¿žN§íx}ŸÏg;`Vß,w¬,g´§§ÇÞo±Ý ½…®ëL]½Å±ÿFþGCè°Ä•ßxÅ~Ý0 Y\\ÄçóáõzíTÅétº¢ÿkšÆ¥K—Âëõ‰DH$ueXYZÁý{7 µ«Hë¦ã±[¥=†Ñh”h4ŠËåÂëõ¢ªª=ð°2iYLOO“N§ioo'“ÉØû4ê!lE a+J[a"lÅÎÒø©¢?æž­ìÅÎb¯ d‹p#Öº+4ºaX[U¾ s ¤F"Äî~“Óá·—àw—¡K…¿Û¾ÖÐàÈ"±ãÖï_ ô•0 7檖±öÔ#“É077‡ÛínØÙ°ÿÆEÆþy–©K“hÅ곸՜œjÌÎÎÒÑÑA$i*éÒ9´_.PÌØXŽT-cm ®‡Jd9’Mf˜øooÑ{¹Ÿé+·ª–±öÔ I* ÌÌÌ ÙØ¨Õ°“¯_eè§s,ßZ$—®>k˜ÍfšQ´Â:âñxC3ôës«hÿùmT—“Õ™åªeŠÅ"±X¬î{Yá_²,7ìü¹¿à/½ÉèJœÉ·®×,g…nm‡aÌÌÌÐÞÞÞð ½ÅÌå›ôÿ|žøzŒäFug)—Ë5äÌYYËjeJ«…°%„­(!l…‰°;G!vF)„nëjRƒÕ&tÒCNó{g4˜ˆA±5—h$ÝÜBÖªò153Ùv¡+bé¾òƒã0“…—úáoö´9@j’T4I*š´—þï†F‚jL¾u½ÉåkÓìCÅbuvùžÉÐÌõœ\&Çô•[÷Dš¦5íðXÌlÊp/¸S¢Ëf½{ÑÍ8Ÿåèšn÷Í»•Á0Œ;î› 7æî™>š”X[QBØŠÂV˜[±34¿©QÝ`S6©µe¼ƒ'ºÁ!“:à.­d î=«Þ×fî?ú¡«ð¡Nøñý;-•@ Á¡ñÒ^OªpIY¤¼Þò$ɉ^A¸5›>•äþÆ÷Âî~üÌx%ff°ûÚ3äî#] B@ ìaš I¥‘´Å‘®æW?䪊¤«1óLŸVEÛ\AjeÇ£5÷H%Çî<ÜKÐ$çBðXÀLÚð+ófF»Ÿ;¸ÓR @ Ü7š[A²Ï8Úüa뀩–ý°…C9$R#.3Ó_Vƒk-½:³kV²E0 RÃNPesuNpïÑ øÜ¼· î43Ù½ÐÚØ¹ @ »•æHFÙÏåX¦ò•¥zÅV+S‡#&+í]nŠ!Åt4W³°níÁ‡f˜+„­,ãBÚlËáŰï†å]p`ìTŠ-ܮո¯Ëðë ðþ6ˆáG'à߆“~øƒ;-@ Á}åÎ’4ÜIšïjØ+R –»à'Þu>ø>Ó±^W4ðÎäñ·uî¬øÁ£ð7ÆàF~ñ2|a¶±2Ôm‡dêôçÏ|v~ê­ÆÊ4R·QN´™z}W|c ~æ‚™9´‘2Ôma+J[QBØ a+8Z¬_œßi)¢=|>/ä{ÉFŽð[i\. ^níÕ®=ÅKýwžÀãLœí‚ç¿`>¤>q^_5þݮ̫°Ï_¿n£üâ9øûo®Ã_|žê—+SÛW+óµÅÆê6Â߃¹$<ù9øÔAx¦n%`1]¿L#uaÈû |ø/͇æÿwþjÞŽÔ/SÐë×m”{þÝeøò|æ½ðÞ^øü,¤‹Û—ùÂlcuṨð쟛íù¾~xg¦’Û—߀gûë×m¯Ãtà>òEXHÁç^€/ÎÁk«õË\Ö¯Û(ÿëqøsðƒß€vžîƒå DrõË4R·„­(!lE a+L„­xàÈ;-€@ hA~~`ܼþÅ$üøMóç»Ùø{„œ0è‡ù”™Ío:a:,OöÔ/ó¾úuå‘vˆàòä5ø½IóýU¹~™G»ê×m„øT¸™€Õ ¼¶b¾Ç`ý2ÏôÕ¯ÛÆBæ êDÌÌ ùWKðþúe><\¿n£›ÔÕ(¤ ðçÓp¦ÂÎúežè®_·ºÜÐᆙ¤ÙÇ®lÀFNvÔ/óÁúuA‘àD;¬eM‡)]„?ºÿópý2/ŽÔ¯Û(£%˜ˆC4_Y0ûbŸ·~™§zë×ma+J[QBØ a+v„û7@’¶\`wðÑnx®Þ¼ý:îkü}Ü x•ÒìPF3Tíîúe|õë6J¿× »±öMΧ Çcëze¨Û!4ÝüѼù~µ~™_ýº ÊÐæ4'0‡Hº=õË øê×m”n·¹²^Ø<Çl9cf(-w$k•ðÖ¯Û~Õt(byó÷dŠºé„×+3à­_·$ ×SšÙ70.wj•ðÕ¯Û(.ÓiÊnΪ¯gÁã0àze¼õë6‚°%„­(!l…‰°;Bsç Õc»Uäíêï‚­$ÁCÃ'ûîÍûHöÿÊîmý}»2uê6,GµÏl°L#uïT†ÛîÕ(³õ3«Õ½c9ª¼Oµ2È{Ç2På;Ö*Ó@Ý»‘£¡2ÒýëÕœéZe©Û˜•òWmÓe¶öÏ;Õ‡°Û¿¿°›¿#l…ÅÃj+ ¥%éö‹²­FiæKß«ó”Aë‘ÑÌ£ŽÍ™\b¦êdë—™OÕ¯Û(ó)èó•>s6±|_U­2s Ôm„hri&7ä4gz“…úeæRõë6BA7gT»7gUÚ]°’©_f.U¿n£,g Í]šÉíñTÎônWf>U¿n#$ æΡÍ3ëªÙÆÖLïveæSõë6‚5“Û¿¹*+Q9Ó»]™ùTýº²ž¯ îÍùÒ·ù·—Ñê—™KÕ¯ÛÂV”¶¢„°&ÂVìM ¸}ðSm TkÐcT¹ÁÞ%–7ó€×ŒK À¡0¼º‡BðÉƒà”«—ùâ\íºÍr9Ai—mÌ|ÿ‚?òŒÍØìjeÞZ«]·R*Âþ jr¶Û µ˜ŒÃÌ C‰|õ2µT»n3d4³N¯Çlÿ.·™uë« æûþ½c¦CU­Ì_ÌÔ®Û,×£¦Þ†MGî;‡áºÙ_¾ï0œj7÷’T+óÚjíºÍ°š5èaŸ™eêx›~s)wÁGFLǦZ™¯Ì×®Û šaîIèt›ïásÀGGáó3f_û?Nša0ÕÊü·éÚu›e*a:ñ‡BÐæ27‘/l:U…s=%Gk™ó˵ë6ƒ°%„­(!l…‰°;Bó{¶kkbÐ#*ys ¾½_ú0üÔãðò‚™ÖsØo>ìu£v™Z÷›Åþá+ðËOÃÄ_7Sß~cÉ|è|ꨒ)Gµ2½vÝfeøÝI3ÛÖ«/šÃ×a! ïîcm¦ ÕȨ̂j×m–é$ü— øÂ‡àw?_7†—ù ×êeÞZ¯]·Y à'߀ô\ùHæKŽÝGF͇§nT/“,Ô®Û,ÿc’EøúwÁK‡àk f¶¯mðînS†jen&j×m–Tþñkð§/Àë5ªo­˜ŽÝ'™2Ô*Së~³À¿¿b:Þo}Ìtl¿¾hîéynÐÌT¦Õˬek×ma+J2[Qj a+L„­hYÎIÙ²!)²!)’Œ´ÍU}ͨùë«Ý»÷z€×³Ï>kœ;wnÇåhäzúé§gžyfÇåhäzòÉ'gŸ}vÇ帣k7ôå—k캛ïâV ž4øô#÷Dæp8l|úÓŸn¾n¿×àWŸ6ð:î‰/½ô’122Ò\½Óàï5xaðžÈpúôiãÅ_l®ž*<Þeðÿ>~ÏúÑÿø7_¯Ûmð/Ÿ0òß^|ñEãôéÓÍÕó; þú˜Á'ÞFFFŒ—^z©¹z‚Ÿyï=Óǧ?ýi#7W¯ÃeðO<ÖyOdxöÙg›·ÝÂV”.a+J—°æµGmEÅuü¦s4@Å›ÿRùoE™†ßM <¬d53ôä‹;|–ÕB¾ÿë;+C,¿<¾³2tøöªyí$+YøÑWwV†dÑLϼ“˜Jþà_í¬ë9øé ;+ƒ°%„­(!l…‰°÷•&H÷Q @ @ hÄA±@ @°I£ ¹ÏI²ôÍò†QeIé~¬2}õ1xß÷á‚ÌnèË/?ÖX9ƒÖÿ.@ v/÷Çoz x¥^!±‚$@ ›4¾i'ùjƒ³ÚàÁ!þ.@ ìAZ€$Âx‚dzâïM Áñ@ ‚MÄI @ 6¹7!vâŒ$@ @°¸w+H& @ ‚åÞ ÄàH @ ìîí$©ìÚz_ @ Zœû—æ[ Š@ Á.£ñ’TmÄclû«@ @ ì&š U¹gX7ÅÈH @ ì~î,ÄÎØ¼¬Q½ñ‘? @ ‚]@s$£ücûϹ\.Âá0Ñh”\.·Ã AèM @Ð,Œ-¢j =0(bdd„ÎÎN‚Á .— EQ0 ƒB¡€ad2’É$+++ÌÎÎ2??¿Ã’?ܽ @ îæš;'ÉÒ7ËoFÙhh—Œ|>ïz×»%Íf‰D"Äb1’É$étšb±XQÇápàñxðx<ƒA$Ibii‰K—.‘N§wè›<\½í!z½ð¯ž€s=æï¿~ ~é Dó;+—@PÎcðÓgáhüñ-øG¯4VÏ£ÀsƒðOÎ@Ÿ®nÀ/\†/ÌV–ëtÃ'ƒ¥4|f~ûFó÷‚röùá7ž#aÈiðó—Lûº•÷õÃ/¿œ2üÎ ø§ß¾³ûð[ï‡a9'þàî¿£@Ð8Ou÷Ý¥ù6ØÕé¼N'Ï<ó DQ–––˜˜˜ V«P,I$$ VVV$ ¿ßÏ{ßû^b±¯¿þúmιàÞ ô¶Gù÷ïÀ÷<ø³àÕøÒü®Ÿ€ì!¦ðoÀñv8ÞÖ\Ýk1ø»_ƒ1xqþö!¸¹T©Ì™8ÛÏFð‰ðƪéà6zÿ嘓=‚-üä›ðõEèöÀ›…¯,À;¥×%à?= /~Æ£ðÊwÃçgàürs÷_YnLž_‡_¸¿ñìýø¶Á]s÷ç íRçå‘GáÉ'ŸÄãñ0;;ËÔÔÙlöŽßÏ0 ÛñVU•§žzй¹9&''ï¡Ô¡·=ÊRÚ¼2LÄ!ìÂ|jïR##Ø{¬çàÂ:Œj—qH ÊæL½¾y/£Áµh©Ì| "9hw•H!' úÍצæ1î×bðÂ>ˆ¿8,H‚Jf“æ°’1ûI¿·r€tºÓì“—"æïŸ€Žš}·™û[HÒEжØñ¯-Âà½ÿ®Á=BÞi4’$ñ /ð|€b±Èùóç¹zõê]9Ù[) ¬®®ÒÖÖÆ™3gªž!%h¡·‡ˆ? Áø†¹÷Q ØM<ÝŸyFk8>‡Ù¿=¸+Ýw+àUL§L4U€_s÷ýÎû÷Ý»ŸC!ózu¥òþ€×l[Ì&Í>Öìý­œÎtÞÛï <î~iáñxxñÅéííåÖ­[LLLÔ É’$ UU‘eÃ0Ðub±X·@:F–eNŸ>ÍåË—íd‚æz{ˆ¨ðKïÿøÜLì´4Aó¼¹ éJçÑB•Ì}Ï Â¿z²Zé5Éþ_Ù=©üÅ&î U;ឃø:$¶<×¶öYº³û[ù;/W®ž »„‡f€ät:ùØÇ>Fgg'—.]baa¡fYUUÉf³är9Òé4©TŠ\.‡a¸\.|>·ÛÇãÙÖÖu\.ÇÑ£GÎv“½=D8esÃï—æàsSfX†@°Ûˆæ«'‘÷ôÁ_ƒ_» o®W¾žÑÌ>?º¾çQÌÕ¦ùTs÷“"±‰  n>÷‚¹ïç/fo}.e†xZ úÌ>Öìý­|{õÞ}àòP Eáãÿ8\¸p•••ªåœN',,,ÔtˆÓétE¶3UUéíí% ¡ëzÕ:`&ãúõëÛ–”z{ˆ_8gn`ÿÏæÞ `7Òå†á€"š*ä?Ñ Ÿ::_.›è92_ûËYÓÁ|~ÀôŒàPØ\iÚçoü¾Èb'ØŠ"Áï}Ðìc¿~­òµr~kÞ^7÷Äl7“.|â üÈùæïoå¹Ax}6Ä9„‚ÝÅC1@úŽïøzzz¸téRU'[UUR©×®]CÓ4\.ǧ§§¿ßoŸ©“ËåÈårÄãqVVV˜šš"ŸÏ3;;ËÂÂûöí# iZ)@–e†‡‡¹uëÖýþÊ{¡·‡ˆ³Ýðá!séûŽ˜÷~ò øO×@û-ÂÙ.øÙ'L§Ð©À±6øÙ f¶E‹GÚá¥Ãf¶»É¸y¯Ó 0Wž4'.®ÃO¼ AÕ|í 3fxÞ‰vøÒ‡ÍôÇÿñÓù\Í6~®Ê,¾àáæ™>ø®a3Mý?8nÞûáoŸLÁÿrþËuÓÎ~ÿ×áž7W›~{¾±d–mö~9?ÿ$¼ô²9H*矇'»Í¿¹¿?ö†¹²ºtÁé´;j‡ Lt"Ex;³­5ˆ¾»svßrüøqž{î9¦¦¦¸~ýúm¯;NæææX[[ÃëõòØc166†ÓYÚèj†½¥üÊf³Üºu‹+W®ØÉÂá0ƒƒƒ5WdYfqq‘õõõª¯ L„ÞÁžÇ­˜I޵Á¿½´ÓÒ6}ð3OÀ'¾²Ó’ìö¹à‰´©ð\t©;-Qk³Z€/®C¬ßŠ=¨ARCç ÝÙÉ ¡Íî;ÛíæSŸúÅb‘W_}õ6™UUåúõëd2Ž?Îã?ŽÏçC’$$I²ìjN¶®ëhš†®ë$“IÞ~ûm¦¦¦ìÏ«ÙF’$qíÚ5qÞN „Þ@ ì:¾³ú\ð½½;-Éîâ·—`)¾ö >­¡’Òà›í“$éûîNžϳÏ>K?o¾ù&ù|åÆUUU¹qãétš'Ÿ|’'žx¿ßªª8dY¶/+ݳå€oý]UUúûû‘e™••ŠÅ"©TŠŽŽŽšÎ¶Óé$ßߨ¥½ @ Øu¼;ê_£îµ€~Ìfàíäƒø´_ªd*©dÏîAòx<:tˆÙÙY’ÉÊWU•ùùyR©çÎã±ÇÃét¢ªªíD—¯8lu¬·b‡ƒãÇ#I/^$N³¸¸ÈàààmN>@ @UU‘m Bo@ v%²$Âêî„NµåökíÙƒbßýîw£(Š>UN*•bmmãÇsêÔ)œN'n·—Ë…ÓéÄáp ( Š¢Ø«å?W»$IB–e8ÀØØkkkäóy¥úLBOOÏýl‚]‰Ð›@ `'Ù³+HÃÃÃ,--Ù›ð-œN'×®]Ãëõòøããr¹ìð, Ëi6 Ãþ·ä>P*C!Û/¹ D‹Åª{ÅÊW’ü~?ÉdRd ¼G(ŠÂéÓ§™œœdmíœ7ñÀéììdllŒD"Ñ!káp˜@ `OæXö¨ZÒ˜@ @2™¬šA³•ÙkýªÕúPÓÈÊû; çÎÛðk^¼yoÅ€*û­¢(hš†Ûí&•JÝU[íµ>ô ðÜÐp¬ë$s ù% ]2Á׊l|ðÎü÷ŒŽÓ‰|§ C†ÌA…Ä»T‚¯Y¤Ý¢(ä»ÉzpÍu ­çÐ×rñ¢=3á÷ûÓ™^ ÅyåÄ4Þ¼“çß9‚·è´_«wÕÃétÒÞÞN<'‹UÍ~f…=ì{-EÁårÝ–Ú[’¤ªz³B@Å~¤fõ–uùÖ»ÈºŠœüVmËΪz3B z»‚Þî@ïPPâ O½UãÈ‘#~ä(ýc¡ª¯û^ß P( (J….¡rY("ŠÒ=$‘Hpøðá=ë„9r„H$²ÓbØX‡XoíïåöÈêïáp˜H$²ëH°·úU«õ¡féüøA:>vàŽëKø¿ºŽá0( öÀ¾Ú3T’${`·IöRzÏH3G‰'TsEéHŽ˜A1,c”-@:$\‹gØïž y<âG ”Á^ô``` Duþþ`ÉÌœeý¡í‘IÛͽ$íI/OMŒÚïÕè h»CE-§>‰T]ª·V,vãñ^âñxPå6«ªªá©\oå畯 Y¿7ª·ñ£ëL˜!-Ú9÷ÿÉ@…Þâþs?ê#׿ÅÀÀج纒Ãñ[Bo[q¹\H=.²Ã2Ùbõ=ZÞlMÓÈçóvB+\r«¾¬3®Êg0w•¹q¯…³X6¢•p8 ÷÷ò£vãäË^èW­Ø‡šEz¦h ûÛŽœ„?«¡y´Š#/ÊÏ,Ü[GmÜ‹¬v{¡=¤¼Aàõ"ècÿ§Þ( ä´kN'7(£;A*Û ¤ Šî²7ÙrîP1$áˆêH:ö I]7(†[ë|¢Åý I`'t°ÚõÙ·ÛMÁ­›ÎìæàÈÀ@F&Ÿ2³‘9ÛÉvæKˆÎ|åC©‘Õˆí ©¢(v(ÖvKϵ²±=L¸Ýn;«S9²,Û÷ÊõVÞž[‚mFoåúWó¦E¨Ð[¶€¡ëæÀÈzo toõÃg¦>¶{8w¨ žt‘B¡P&YþðµÀÅbÃ0Ó¶ïÊP—¥<=þ^£|Ob+P((·ïï–=²~Þ­¶e¯ô«VëCÍ+$‘Šw¾wJ’%:UÙ^=²ü¢ò~[þ,Íd2÷¬Ïî•>t¿ñ_(bÈÓ?æG©íû~%Cð|Õïq‘Û'ã½R$ö^uUÇQ#ú¾’ÏSôƒº¢Ù{²C2ZP¦ý y"râžÒ¼Qdö÷<ðï× 4ßýØ!û®( :T Ž Ý@ß|år9<º®óÌ·G¸txoÞɉÉ4´mõªío©5`* 3†–£·uVë@Ò‡ +–¹V{•ë­|PT’ÍéíÈx;š¤“q8|) lÑ›a€f` Ùƒ#Mz«F.—×V™›XCuU-íôà[“í¿…­ûÇÊÀkkk»v6½•ñùþÿöî;>®êÎûøçÎŒzu—‹ä"ÛØØ€!6¦HBqÓŒí@’ ›lž$›lê&»»›²I6dS6°01á! ‰¡™ê&ã*[²¬nµ‘4šrž?ŽF3#š-iT¾ï×ë¾4:sçιsι¿{ÊÍ•Wh}>™™™ÔÔÔ$:+¼^/ÙÙÙ½º«ï¡Pˆ*omÌ8¥‘f4Ô«áX‡úËûÂqü׌;¥m4LL'¥,2Óbt7»`0H0쨷õõõö=êÐPÈ~ÝOÃÊdãcƒùº‹“™üˆêëS¨¼1…¼|ä¼â'0Þ…÷ŒØSþÚ§0ùw>¦<ì£êºêW'Qö™4&?ØÊœçÚd;T¬K“4@¤pQ«¥¥w‹‰ Ž ²!c|-Çhmmí8°Ó¼>°cF{×9±yø‡*ú$»·IÂi>Ÿ¯£õ#555î–ð¬Fc]KKKÜ“‚`0HZZ^¯7¦ÜâHÑúZn.ã°h焎V© Å–[N:ôØàÈ®f£rëFÑ®"?º„]K*ñxº|ËÎNf‚ÉÃi‹œ0v׊T[[Krròˆ=aŽfϞ͎;ASTTÄ’%K8|øp¢³@UUãÆ‹™P¦s}ŸlÖ–VáñxFäÑT¯†[ꯤ?žÀ_ßJ˲dBi'wâvd|+9G'wܳ+ܪÝ‹#ÜuÔëõHËÏhªCƒíØçÒã¦7žå鸒o¦›#ÿ=€¦eš–Å–[Ûd¥ÿØýkÆ’“¯ÑÑÝèâIÐùLcc#ž:ƒ™ ŽŒ1øÓ 93&P½ë Lœ81î8–xݵÂûÛ‚ÔÖÖÖ1F%;;»ãÇ0Z(ÒÕl¹Å;)ðûýdffâõzSn3ÇãOïp»**·n”””P[[Ë*ï*R·¥Æ]ÇïñáNüð†Ë.:8:r䯯w‚éŸðE›^xá”§äÎ:êߪU¤¦Æ¯C-_·].EF²úúzvíÚEff&éé¶Ÿ¿ê» wTUU‘••Ejj*ÆØ™ëššš4>´³PK³à©Ê.SiK'!c[޶7Béð¶Ð÷)ÞA0L‹âw÷3§b&¾).è8±5ø&BÁš%ìþù+ìÞ½›éÓ§“™™Ùqr}¢ÝÓx–ÞN¶«««III¡´´c ³gÏÆqZ[[»äµs00–9r„sÎ9‡ŠŠŠ˜t¿ßÏÔ©S)))Òr›±f! “»GÉG4RËÆ@1ÆÐØØ¨cAÆŒ¦¦¦.7ÅγÕÕ××':+Ã_‰¯=P’‘¬ÿ“ý›¨e˜*++#}‡Ÿèà(|r›}Éi$å¦ÒÚÚÊŽ;1³EÏ*Ôy*Ëx]³âÝ ²²’¶¶6***p¹\Lš4 ŸÏ×å ¡ßï«eee@üûBåääàr¹†¬Ü<ãR¬Ìê!õ¯ÊMDDDd”ê{€4̃¢Îþv  u?Ò’ïâôO®옖={ötœLwwrÝÓ>Ù/ÀãñpðàAŒ1,X°€¤¤¤¸'ÔºÓUEE™™™]ÒC¡3gΆ¦Üòo_Ž·Àé™`ˆæʇöC‘!Ó×9g8ŽóñAÍÉ«*© É\ÚNóÄÎf$MÏÀ9ÚBcñ *++q‡œœœ˜)*{ëžÕyñù|¼÷Þ{$%%qìØ1êëë?~<ùùùø|¾.cB¡PGW.‰¨ªªbÁ‚q}¦¤¤àóùðù|ƒZn“.. tÛd‚©ÄGÆñ×V*ß§ry~”ô¶Rÿ»Ø>ŸÀŸª0¡®ÝìÚr S?»Œq í4Œ»víbÇŽÔÕÕÅ´DD·LD§un¨¬¬äý÷ßÇårQRRBMM ,X°cLܾæõõõºÑh>Ÿ††’’ºÎü …˜1cFÇàæÁ(·¬ùIÿDm9]ƒ#2ÿP®r“‘«|=,Ÿè\H¢ýà<øîо­[|+œ=ipó3–œÌ18ÜË@õIF¡Q ¼õçWIÖÛÍ®ýd×7ÝÅ´s :Ö=xð [·nåàÁƒ444ô©»Vmmmǘ¡PˆÃ‡SWgg7›5k‡úúú¸c:OD o¿ý6¹¹¹qŸ3ÆÄÜDq Ë-ïxgÄ Ž€ì'¼Tììõ¢ÃØqÞdøÛ5Ðx;œø¼z-\85ѹÝRÝ`þ®ûå¶y'¿íÒuc÷ÄåÅ«mN9¹]˜¢µ‘²¬Ú_FèJG³¡þîûÖÛp¤}›xÇéX>våäé‚Yú?Í÷â÷û)p7Ù‹–ˆêj‡÷}åì|`kÌú'NœàwÞaêÔ©Lž<ÇCrr2ÉÉÉx<ü~?­­­´´´HJJÂÃñãÇ©­­évµgÏæÍ›·%¤²²RSºöÀï÷SZZʸqãbÆn9ŽC àðáÃ1ëd¹í¿ÿ-æ—S÷É\pE‚#Oi€†‡ªÜÂRÝðÔ•ðƒpÕŸÁãÀyS  ®‡ýæqA õª5iÿù¿t¬^°œÐ¦úÙoùY°:êÛàšYðè¡Äægã‹ðð(È‚ß] ß>>õrbó$CùÝþnx`ßÀo[FŽ¢µ°p< G¢z$½r ¬ÊƒeÁvͬ;ÐFu€pà½ý,ÿŸIðÕé˜$À€ë¾rvþâå¸ãHŒ1”••QVVFff&¹¹¹¤¥¥áñxp¹\ü~?---444Ľ·QØþýû™5k€=Áß÷EzvðàA–-[†Ëå" uGûöÅÿ3åvð·ï2Ó}&·ç`\Ž?DÊÝeTWœÌ]Yò³ì•íï²'íÏ]gJüd\4 šp÷.øÑ.ûÜÂqpß…° ^.‡òf¨n…¯¾iŸ|¦?dÓ~¼šüðÏoõ¾íòõöñõ0.^-‡OüÍžh\›¿XÉc†vŸ€óþpòÛŒ§|=üt7|x&d'Ù}ü?¯F˜ðönš i8}3Ì͆Ÿ¯¶W‚Ë›á_Þ†ÍqNÖ[;uñô‡bÓî:6Âø8П ^:Þu;çN†ß>þ¬É‡¼txò ›Çü‡ãï×h´al­„7*íç •¯‡»ÞÏŸÓ2à{àÇEðàÅpÖ$˜Þüx‘õ{*÷¾[¯ö×ÃïÁGómú©ÔÏ°ž¶-±úòÝ7-~´.šjƒœ'ŠáŽ—"ϯœ^f×{¼8¶¬â}7ß 7< wÌ=N¿õ¶mÍêœöÀ¾Þë¢êÓȲ¿ÞöømöÿÙÙpZÆÉ]ëÏE¹¡ÜÖµÒq½;á÷°^Ç1Ë×o¿¾Ö,½ó‚!ÏÿÌ™3ÍÂ… MAAÁˆûì]nK—.5‹-2óçÏòÏnÆ-g˜Ü/43¯^¨r뼤º ¥ë \j¸bºa\Jìó†×®5üà<»î¬LÃû7>2ÓàvìãZjpº¡õã†ï®ˆ¼>ðIC^zäÿ¯4üû9½o åë }Ðä²Ëk ·ÎíºÙɆ÷n4ܹpà¶^ÊמùÁã²ËÓWþyyìóO_iHqÛ÷v;†=7î:Ûì2¬Î34ÞnX6±çr¨Þ`¸ì´Ø´[榤Ùm~r¡b½!ÍyßÅã —L³å·*/òºÒu†³'%¾n õràfçΚhðÂ~vÑåôÜG S ³³ '>fëÉ’ñ†Ì$ë×>·¸ïåÞÛR´ÖpÛ<û83ÉðÂU†.>µú>Þ¾z¦}|y§ã­·mß:6ëEwKoß}.ÇðÖG ?;ß•dñÕQÇYùzÃ_¯²ßo“Ó {oŒý.éüÝй â§ñÒzª‹ªO#k)Zkøær[WÂiÿz–áßζŸý™lÚ]gŽÜj;¶]o¸pjl}øÊ™†w¯³¿{á´Åãíãs'JÖÙòû=¸ù2Cå[f_8£çm¬ÅNeÝ‹Q=)ÌîÍoøú¾n[ŽÓÑ£G©««ãÈ‘#šý¬Œ1ìÙ³ŸÏ×mËÑ`*Ù´‹ô/¥ôé½*·ÎZƒ°ê ¨ñÁ½çCåzxæC0£}Šö%`Ñ8øÊvÝ#MpïnX;Û^y—?Ü Aϖ–Ҿ¿wOÛ»§È¶¬øCðÜ1X>1vðÀEöÊèï˜mvö“"{e-²¯½eNìów/h¿®—O„¼4¸ë]{EðårøÝAX7·ïŸKئPÑb?Û_í…– æDž¿fÜ\ý»ÿcÙùy0+Ó¶Ô½S àÖNŸùw·Û«ã‡àåãð×2ØYk[4; Ë:ÕƒÞʽ7÷®²Wð«7Øÿ¿öæ©Õϳ&Á„øþ['¶”ÂóÇ"¯ë˶%¢·ï¾¥`^|áuhôÛcüåNÇÙw·ÛV—ÊÛ‚Ôù»$ú»áTtWUŸFž÷ê )+&Ûÿo›¿ÝßuCîýð³Ý°ù2Û vA|à X¸9öu—LƒÇ>7?oËÓ¿Ž6Á̇àÂ'áÎ…ð‘™½okõ]ìÂü~?￸3aï¾ ªôßïçàÁƒ {ÿ²7'콇½#Mð™WìãiépßEðë àŠgìIgŠv¯¬Ÿì¶ý¤§¥Ã1¯íJ½­¾êiÛa5Qw1o vèþ­³`j:ÜôüÀm³³Š¨©ýË[l­hÇ£î6-Ã~&Ñ]Š›ì‰Fm(„Ï.²Ýn‚Æ~Þ£òú¹Å6 ØVÝÿm6 í A¸{ÐÃlZtw ò¨rlDº}†ÿÏì4δ·r»s!üü|ûø¥ãpÑíão¼¿?'|‘î3gM<ùú9-ݞ裎·C‘Ç}©û«§ï¾PêµNwÊ¢ê7Ó{øn8ÝÕÅSù¾S}JœöÁúy삪VØ×i¸Æ¦‘Ç¿Ú ßXn/ŽíhÿìÃw´kfÁ§Û fáß„p»úI[ÎÑAîÓG»ßÖ(3f$@­#”Êm(k†_ï…{Ú[®K¼P×fûÏw.¾“í¬Ë‰I33Ὠ1^^?¤D5pOH±Wì{Ûv_\= >u:œóxä þT·OA¼Ûþƒ3; Ê:{‹~Ÿ2¯íOÝŸ;?ÓMý1/î^ < »jmÚ¡[ìÁ°[ž·W¾¿v&|g{$=4ÆŽ³4Ü8Ü.ÛböÄ.7Ù¶ì8ɺÞÊ=ì¿÷Ø¥³ú¶Ø[8µúYÖ “ÓbÓ¦¤Á¡:žÆºxß}Ó3ìIìÉNšÒS9Ä;N»;v»«‹ªO#Ó¦°ó{Q&ÞĽ]‹xÇ»`Ö— w ‚øalLt±‘Vÿz–¤›ê¶ ܹÐt{ry¸¾w®ý2w;v`ïŠÉðN4øá gØôK¦ÁåÓc·¿½®˜aÏɶAMXOÛîÍü\;¸ø¦çbƒSÙfw¾´&¥Ú+¯__f»ÌuçÝj{Rüeä²3Ý8ǶhôGv’mÕØß~eñêY¶¬¢U¶Â¥OÁíóá‹KbÓçf÷ïýF²5ùö$báf8ó1»œ¾Ùv‡Úp Ó¥÷TîŸXWÎèÿ6O¥~¾Se[®k¿­Å¼œØ®2ƒQ÷G³Þ¾û¶WÛãŸgŠÛÎ’8Pâ§Ý»ÝÕEÕ§‘©ªÕv¾yN×ß“ðű;^‚Ù‰vJ½±Ç⬷<—žf/˜…E¹ Ú—Ù›àº-=ok”Q€$"ý×à·³9ýùÃP;¼| 8þ®}:â5±]:Ü Õá7Ú«óAÝ7ͱ÷ùâx¨S_êÏ¿¿Þü¨ý¡}:j–¨ž¶Ý›µ³!+6]j§È.]gg:•mvç‘ðÚØwl«ïíè~Ý kÿLµ÷¿ùŸ ìÔÎïö³Ü;Õö*ã¶ëáO²³eÕv]ïx3\ò”ýŒ?·Ø¦}{|ÿ<[&cÁÆB¸ï}Û]¨¼9²Ü[ëæÙÖ¼“ÑS¹ß0ÛŽ{ê¯S©ŸáãퟖÚi¿}NìL}ƒQ÷G³Þ¾û °f‹½z_| ”Ý›?pï}œ~rA÷iÐ}]T}¹þáUÛ·Ö›Þ—‹cñÄ»`¦ ·_Fô,vZ´hæË΋Ån¤/ѳi;‹Ê]ËpYTGÏR´ÖpÃìøÏEÏb÷ƒóì¬rúá;+ »nˆÌr¯>D§Mϰ3z†g園fxð»Î‰¶®‰Ìp7òëVŸf±ScDDDDDFŒÅvÿ\jÔÿ´Õ.a_{3ò8ï·]_Vê…¹Dþ¯hÛþÿ=ãmkR;‘vNï«¶‹Ý«Ñ šYLDDDDDFUÀk½­¤$‘vc;@ÊÏ‚žggZyò ;Ýp´ìdø‡E°ýz;̓ÊI=¿¶·mÊ©S¹‰ˆˆˆÈ q÷q½Žã||Ps’ í= î|ÅÞ´rÉ8Po§ñû\]üï>øÁN(̵ë쬱ÓÇ{íG󻦿[=êï8<¤Tn""""Ò¿Jz[iì¶ å¥CN27Ú{_l«±w½>}\d†6{7ú#Mà Ø¿¾ ½!W¼×^|Züôè;Ë©Q¹‰ˆˆˆÈ »Rv’ýÛØÞêÐÐÆ@VRüõ'¤@a´íºñ^{Zzüô”¾6ÔI¯Tn""""2ˆÆn€Ô™8ÝLê—ê†õ…æ†ß²­ ñ^Ûùõ=mS†ÊMDDDDÐØ ü€côƒýëiEó8pÛ<(È‚÷Æî_[꟮q,Gå&""""ƒÈ“è $LE³íJ•Ÿ SÓáÌ ì‚½u°:ÏŽIy¥><–M€MíØ”ž^ûRŒ/èš^ÝšØ}MTn""""2ˆÆn ’ž(†4¼v-\3 ^:G›`ùDX6feÂåÓmKÄ#—Bé:øåj˜ŸÿµGšâ§×·%v_G•›ˆˆˆˆ ¢¾´Xé8Î«Ñ Æ˜AÈÎ0רîXÿïp¢s#}¥r‘ž­^ëm%H"""""2ô)@»]ìDDDDDD:Q€$"""""ÒN’ˆˆˆˆˆH;H""""""í ‰ˆˆˆˆÈà»®^_‡oO/Œ¤§{àãóáë d|gd&%,›c÷F±22­…EãìýÛà½:xøüt75“¢ˆˆˆÈˆñN|ñuøðÌØô«f™áó¯Á›•ê_01yD-HC£|=,Ÿè\Œ\_„ä_ÃâßÃí„\›.Mt®DDDD¤?Ž4ÁÞ:h DÒ2“`á8(i‚W+À‚ú6ð‡–ͱ ½x5œø¤¸cÓK×ÁÙ“zO“Ä„ì³ù\·®/€sÚËgJl¾ *7@ñ­ð…3"¯–¿» *ÖCÍFøÍ…‘çî:ŽÜ ·Ã¶ëá©6ýŸ–ÂcŒÍÃOVÁWî~ŠˆˆˆŒ5ãSÀíÀ%ÓàÙÀ–à 6-AÆN€”Ÿ«óÀ¸fV¢s#§âÝj8Ô«§Ú[?~9m‚™Á…O á#3ÁåÀW@M+Ì}¦=÷½ÙÎ{u°âqȽ~¶ÛYixp?\9r“ízÜ4~»/{+"""2z¹8-J½pÇ‹ð³=pþT˜‘™¸,%ì‡Ú†y°µîß #é?;òÒáÉ+lëÃ†ÂøiÐ}‹ôÜRíÜÉvðÙåÓo_Ç‚2/ŒK†%쥯¼­AÛt{ïnX;–N€y9ð…סÑoû²¾\ÙÆ¦PÑbÇ2ýj/´¡0Ž7ÃߎÛm\9ª[áêÄ쫈ˆˆÈhÕÐeͰ§ÎžÇí9'|š¤aHl(´ãWÞ¨„­kl·¬Šøô+¶EiÍx»Ê®ûÀ¾®iiq¨n…;æÛ‡üMöÄû‰+à­*ÛRÑ‚qºç]2 ¸nz^-ïú¼ôÝ´ ¨õÁ¬LÛer÷ÚÈsÉnØ^3Ú¯Ft7ÈoC!|v‘ †ƒÆ¹Sísÿ»þ~¡ œn›§Ö#‘ÁPëò¿ãŒÕIDATƒÒ&{n>% ædC¦¼þ„eilHççÙé͇lps°n ?ÚÕ¿íl:yü«½ðå¶ÅÁ娖ŠóŸŒœŒ¿Ü)ºfÜy:\ýئ–ˆSræ˜e?ã º68}³é.Ú²‰0=’]6h6/î^ < »jmÚ¡[l—=€?ÃÏWÛÉ5®š_~cwJDDDd”»i|q ÌϱcÌ?0þk±îxih÷WDDDDfôHkòmkÏ›cƒ—Í—Ù‰¾X•­07;v¼Qç´žZ¶WwßR½½KŸ‚—®¶ùøáÎAÝíQcñ£½¯SÑ·ý5þsǼpý³ñŸûÒV»„}íÍØç6Ù©Ç÷-¯""""2âþYì6Ú©6Aysd¹·Öͳ]·¾½ ¾ž½GÒ'Ø×uN‹nqøÓ‡`å”H‹C¸¥bZºm©(» >6¿k^Ž7Ã%OÙ>–Ÿ[}:ûöíKPŽ ‰ÈJIIÁ™’Bë,­ÆDgGDDDÌãsÈl L vŒ7…BK8Pr‡ôôtrr{‘U’ˆ (Çq¨Sp$"""€ãr˜˜äêh= …B€s …—¦¦¦„aV€$"Æçó‘ÑœDéþjB)‰ÎŽˆˆˆ  ÓI)sã8n·;¦›]0$ vKµµµ]ºÞ 5H"2 Šv±øÑ%ìZR‰¯À£o‘1îÈøVrŽNÆqB¡.— ˆ´"…ƒ¤¶¶6ZZZðù| ͯN]Dd@•””P[[Ë*ï*R·¥&:;"""2 ø’ZqÑ5@Š’ŠŠŠHIIáСC Í«$p^¯—-[¶$:"""2Œ,Z´ˆ9sæ••…ãØÛ€c¨­­¥¸¸—ËEiiiB§ø†a åçç': ýR\\7]û‘£}?DDDDFšÝ»wS]]M^^^Gw»`0Ø1&©¤¤„†††DgsøH0rN{;éÖ~ ­±²""""#MEEUUUdee‘ššŠ1†––ššš>9Cذ¦M›–è,ô¨¬¬¬Oëi?†ÆXÛ‘‘& Q__O}}}¢³—+Ñ. ‰ˆˆˆˆˆ´ö]ìJóuYø—§â> õ9/žým‰ÎR¿4~u¡¬îãY÷‰É/7“üFËæªï‚3’hº3·Çu\UAR_h&iGëåªÿ3“ð~*WY€¬Ÿžˆ»NËš,ÚÎI%õ/)¯&v韡 ²Ü8›Âéé˜vö¦!{kÿ¹i4ߘ @Ó&û©2R_9'¯-k²N饸>3ŽŒûëÈþ¿ÕC“©~NpÑ|kN¯ë5}n<™?;AÖ÷k† Wýšì¦ùÖ’vùº üg§Ñ|k6îƒm¤¼:Ä‘S24R¶çg@ÐÀ£U8Ï,Á|h'lº )íñF|—gà;?ÆoN"õ…#Cöþ§*ë»5˜ôî[ü “i^—ƒ÷c¹¤ß_çˆs×;OI€œoTuû¼ñ@Ûé´^šAÓ§rÉüù œ¦ÐæPDDzT¾.{Šjã?_|+Üð,¼Ýýwý ¼ïPæEDÆ„Á²"Á‘¹¦š‚8~ƒóô˜ËwÂnï g yk É[[H´Šw ä'a2]#æ$<í½®ã_šŠq )Ã.@rÕI¸ç™J2~[OåÖ‚“ÝfxHzoduƒr/^ K'@ÞoÁLtnºwÞdøÏó`ÙØs¾þ&¼t|pÞï[oÑößÍÒu°fKl°/MD¤ÝàOÒpÇT˜„ù·#p¡ƒb¾y~[óø¢AûΜVƒ«:'¹‡üý‹ÉpjßwÙð Žú*”ã"”æà4…ð”‘á-? Vç1pͬDç¦{©nxêJxæ(œöÌÙÿ±ÍJÍÓ~ZóÀ>¨¾ãYEdx¼¤,7Üž¥>Ì=¥8,„ 7æ–=ðBœ“û3¡€ÓåÁÈà[™FëuÙ¦{ºt· Nóšà&ek IE¾å°o¼ë²i¹©ëx¤`~Nr¾X>l[öÂù2é#¬òˆÈè³al­„7*ac!~å¸q6<|ÀOÛôìdxc Ü¿Ïþÿ^¬xª[mp±ù2Èß-í­ú7Ï‹Ÿ‚¿]ÙfOŠá˜î¿î{Þ¬‚Qò\@ŠsôÙý¶å(×AÌ7ãÜ=jý˜«wAã0î/=Ì´¬³-.ãîY³ïÅ“ùÓZ2Úu°mpF5›O£ù¦lRŸl$åµá7e¹ÓbH¬æµÙÔý$¯Çu¿4žÆ/gòùGp™ÝEd˜:?feÂæC6˜9Ø·Îmñ¸§üíWgž;Ë'ÆðÀE¶ué¿Û/XnŠzþW{áË¡0v´Ï,úÝíPÞþôxq×mÆÓ´Ú—Ï„{χüLxö|êe(i²c¨æåÀùOFÆQ½\»ÞÞ÷î¢Sƒµd,«Ÿ´Ji‚{wÃÚÙ DÆ œM !`0×ÁŹé†úæ[ÅPæÃü² î/WpÔOYI8¡õÄ]â'y›–y$ Ë û땸´ÑvQÁ©L§‘|¡qnL– ׉ NchpúÙ‹ÈØ¶±¶”Úàl°°±06@ª‰j¥i ÚnnѾuLM‡›ž¤m(„Ï.²]ЂÆvi›õº²¨ß o¦gô-¿Gšà3¯ØÇÓÒᾋà×ÀÏÀŒ (õöàôö¾ÇOñ·qV&¤¸a÷ÚHZ²¶Ï[NˆÈàø¤Â4x¬š‚ðÇÌ­ïA]çÞy˜_•Á=Çü-Ç“ìàj½'Ú¡mç¥Óº: ÏÁáÛââ ó—uð˺¸Ï7üûd¼ë²É¸·–Ìßôo°&ܳŠoÇ?\€ôím¶eìç«áË[íØªxikþbƒ´7Û¹÷ëì w"2æôµá|¥ã8¯F'ÓË ìâ œ?.†½Í˜÷ô;8ÊÏϧ¸¸˜iÓúÖê(eeeyGû1´ÆÊ~ˆˆˆˆH¿­^ëm¥Á»R‘SðÆ m^DDDDDd ¹z_EDDDDDdlP€$"""""ÒN’ˆˆˆˆˆH»Áƒ4@ÊÊÊ…¡ý^FË~ˆˆˆˆÈÀÖR~~~¢³0 ´ÃËhÙxƒ7Í·ˆˆˆˆˆÈðѧi¾5IDDDDD¤$‘v DDDDDDÚ)@i§IDDDDD¤$‘v DDDDDDÚõùF±Æ˜Uƒ™áþ?£ZjF…_7†IEND®B`‚makefile000066400000000000000000000076521515526535400126030ustar00rootroot00000000000000SHELL = /bin/sh # Bundle PREFIX ?= /usr/local LV2DIR ?= $(PREFIX)/lib/lv2 BUNDLE = BChoppr.lv2 DSP = BChoppr DSP_SRC = ./src/BChoppr.cpp GUI = BChoppr_GUI GUI_SRC = ./src/BChoppr_GUI.cpp OBJ_EXT = .so DSP_OBJ = $(DSP)$(OBJ_EXT) GUI_OBJ = $(GUI)$(OBJ_EXT) B_OBJECTS = $(addprefix $(BUNDLE)/, $(DSP_OBJ) $(GUI_OBJ)) FILES = *.ttl surface.png LICENSE B_FILES = $(addprefix $(BUNDLE)/, $(FILES)) DSP_INCL = src/Message.cpp GUI_CXX_INCL = src/BWidgets/BUtilities/vsystem.cpp # pkg-config PKG_CONFIG ?= pkg-config GUI_LIBS += lv2 x11 cairo LV2_LIBS += lv2 ifneq ($(shell $(PKG_CONFIG) --exists fontconfig || echo no), no) override GUI_LIBS += fontconfig override GUIPPFLAGS += -DPKG_HAVE_FONTCONFIG endif DSPCFLAGS += `$(PKG_CONFIG) --cflags --static $(LV2_LIBS)` GUICFLAGS += -I$(CURDIR)/src/BWidgets/include `$(PKG_CONFIG) --cflags --static $(GUI_LIBS)` DSPLIBS += -Wl,-Bstatic -lm `$(PKG_CONFIG) --libs --static $(LV2_LIBS)` -Wl,-Bdynamic GUILIBS += -Wl,-Bstatic -lbwidgetscore -lcairoplus -lpugl -lm -Wl,-Bdynamic `$(PKG_CONFIG) --libs $(GUI_LIBS)` # complile CC ?= gcc CXX ?= g++ INSTALL ?= install INSTALL_PROGRAM ?= $(INSTALL) INSTALL_DATA ?= $(INSTALL) -m644 STRIP ?= strip OPTIMIZATIONS ?=-O3 -ffast-math override CPPFLAGS += -DPIC override GUIPPFLAGS += -DPUGL_HAVE_CAIRO override CFLAGS +=-Wall -fvisibility=hidden -fPIC $(OPTIMIZATIONS) override CXXFLAGS +=-Wall -std=c++17 -fvisibility=hidden -fPIC $(OPTIMIZATIONS) override STRIPFLAGS +=-s override LDFLAGS +=-shared -pthread -Lsrc/BWidgets/build ifdef WWW_BROWSER_CMD override GUIPPFLAGS += -DWWW_BROWSER_CMD=\"$(WWW_BROWSER_CMD)\" endif # check lib versions ifeq ($(shell $(PKG_CONFIG) --exists 'lv2 >= 1.12.4' || echo no), no) $(error lv2 >= 1.12.4 not found. Please install lv2 >= 1.12.4 first.) endif ifeq ($(shell $(PKG_CONFIG) --exists 'x11 >= 1.6.0' || echo no), no) $(error x11 >= 1.6.0 not found. Please install x11 >= 1.6.0 first.) endif ifeq ($(shell $(PKG_CONFIG) --exists 'cairo >= 1.12.0' || echo no), no) $(error cairo >= 1.12.0 not found. Please install cairo >= 1.12.0 first.) endif $(BUNDLE): clean $(DSP_OBJ) $(GUI_OBJ) @cp $(FILES) $(BUNDLE) all: $(BUNDLE) $(DSP_OBJ): $(DSP_SRC) @echo -n Build $(BUNDLE) DSP... @mkdir -p $(BUNDLE) @$(CXX) $(CPPFLAGS) $(OPTIMIZATIONS) $(CXXFLAGS) $(LDFLAGS) $(DSPCFLAGS) $< $(DSP_INCL) $(DSPLIBS) -o $(BUNDLE)/$@ ifeq (,$(filter -g,$(CXXFLAGS))) @$(STRIP) $(STRIPFLAGS) $(BUNDLE)/$@ endif @echo \ done. $(GUI_OBJ): $(GUI_SRC) src/BWidgets/build @echo -n Build $(BUNDLE) GUI... @mkdir -p $(BUNDLE) @mkdir -p $(BUNDLE)/tmp @cd $(BUNDLE)/tmp; $(CXX) $(CPPFLAGS) $(GUIPPFLAGS) $(CXXFLAGS) $(GUICFLAGS) $(addprefix $(CURDIR)/, $< $(GUI_CXX_INCL)) -c @$(CXX) $(LDFLAGS) $(BUNDLE)/tmp/*.o $(GUILIBS) -o $(BUNDLE)/$@ ifeq (,$(filter -g,$(CXXFLAGS))) @$(STRIP) $(STRIPFLAGS) $(BUNDLE)/$@ endif @rm -rf $(BUNDLE)/tmp @echo \ done. src/BWidgets/build: @echo Build Toolkit... @cd src/BWidgets ; $(MAKE) -s cairoplus CFLAGS+=-fvisibility=hidden @cd src/BWidgets ; $(MAKE) -s pugl CPPFLAGS+="-DPIC -DPUGL_API=\"__attribute__((visibility(\\\"hidden\\\")))\"" CFLAGS+=-fvisibility=hidden @cd src/BWidgets ; $(MAKE) -s bwidgets CPPFLAGS+=-DBUTILITIES_DICTIONARY_DATAFILE=\"\\\"../../BChoppr_Dictionary.data\\\"\" CXXFLAGS+=-fvisibility=hidden @echo ...done. install: @echo -n Install $(BUNDLE) to $(DESTDIR)$(LV2DIR)... @$(INSTALL) -d $(DESTDIR)$(LV2DIR)/$(BUNDLE) @$(INSTALL_PROGRAM) -m755 $(B_OBJECTS) $(DESTDIR)$(LV2DIR)/$(BUNDLE) @$(INSTALL_DATA) $(B_FILES) $(DESTDIR)$(LV2DIR)/$(BUNDLE) @cp -R $(BUNDLE) $(DESTDIR)$(LV2DIR) @echo \ done. uninstall: @echo -n Uninstall $(BUNDLE)... @rm -f $(addprefix $(DESTDIR)$(LV2DIR)/$(BUNDLE)/, $(FILES)) @rm -f $(DESTDIR)$(LV2DIR)/$(BUNDLE)/$(GUI_OBJ) @rm -f $(DESTDIR)$(LV2DIR)/$(BUNDLE)/$(DSP_OBJ) -@rmdir $(DESTDIR)$(LV2DIR)/$(BUNDLE) @echo \ done. clean: @echo -n Remove $(BUNDLE)... @rm -rf $(BUNDLE) @cd src/BWidgets ; $(MAKE) -s clean @echo \ done. .PHONY: all install uninstall clean .NOTPARALLEL: manifest.ttl000066400000000000000000000006551515526535400134320ustar00rootroot00000000000000@prefix lv2: . @prefix rdfs: . @prefix ui: . a lv2:Plugin ; lv2:binary ; rdfs:seeAlso . a ui:X11UI; ui:binary ; rdfs:seeAlso . src/000077500000000000000000000000001515526535400116605ustar00rootroot00000000000000src/BChoppr.cpp000066400000000000000000000550661515526535400137350ustar00rootroot00000000000000/* B.Choppr * Step Sequencer Effect Plugin * * Copyright (C) 2018 - 2026 by Sven Jähnichen * * 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, 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. */ #include "BChoppr.hpp" #include #include #include #include "Ports.hpp" #include "SharedData.hpp" #define LIM(g , min, max) ((g) > (max) ? (max) : ((g) < (min) ? (min) : (g))) static SharedData sharedData[4] = {SharedData(), SharedData(), SharedData(), SharedData()}; BChoppr::BChoppr (double samplerate, const LV2_Feature* const* features) : map(NULL), rate(samplerate), bpm(120.0f), speed(1), position(0), beatsPerBar (4), beatUnit (4), refFrame(0), prevStep(0), actStep(0), nextStep(1), pos (0), audioInput1(NULL), audioInput2(NULL), audioOutput1(NULL), audioOutput2(NULL), sharedDataNr (0), controlPtrs {nullptr}, controllers {0.0f}, stepPositions {0.0}, controlPort1(NULL), controlPort2(NULL), notifyPort(NULL), record_on(false), notify_sharedData (false), notify_controllers {false}, monitorpos(-1), message () { // Init array members notifications.fill (defaultNotification); monitor.fill (defaultMonitorData); std::fill (stepAutoPositions, stepAutoPositions + MAXSTEPS - 1, true); //Scan host features for URID map LV2_URID_Map* m = NULL; for (int i = 0; features[i]; ++i) { if (strcmp(features[i]->URI, LV2_URID__map) == 0) { m = (LV2_URID_Map*) features[i]->data; } } if (!m) throw std::invalid_argument ("Host does not support urid:map"); //Map URIS map = m; getURIs (m, &uris); // Initialize forge lv2_atom_forge_init (&forge,map); recalculateAutoPositions (); } BChoppr::~BChoppr () { if ((sharedDataNr > 0) && (sharedDataNr <= 4)) sharedData[sharedDataNr - 1].unlink (this); } void BChoppr::connect_port(uint32_t port, void *data) { switch (port) { case Control_1: controlPort1 = (LV2_Atom_Sequence*) data; break; case Control_2: controlPort2 = (LV2_Atom_Sequence*) data; break; case Notify: notifyPort = (LV2_Atom_Sequence*) data; break; case AudioIn_1: audioInput1 = (float*) data; break; case AudioIn_2: audioInput2 = (float*) data; break; case AudioOut_1: audioOutput1 = (float*) data; break; case AudioOut_2: audioOutput2 = (float*) data; break; default: if ((port >= Controllers) && (port < Controllers + NrControllers)) controlPtrs[port - Controllers] = (float*) data; } } void BChoppr::run (uint32_t n_samples) { // Check ports if ((!controlPort1) || (!controlPort2) || (!notifyPort) || (!audioInput1) || (!audioInput2) || (!audioOutput1) || (!audioOutput2)) return; for (int i = 0; i < NrControllers; ++i) { if (!controlPtrs[i]) return; } // Update controller values for (int i = 0; i < NrControllers; ++i) { float newValue = readController (i); if (newValue != controllers[i]) { setController (i, newValue); if ((sharedDataNr >= 1) && (sharedDataNr <= 4)) notify_controllers[i] = true; } } // Process GUI data const LV2_Atom_Event* ev2 = lv2_atom_sequence_begin(&(controlPort2)->body); while (!lv2_atom_sequence_is_end (&controlPort2->body, controlPort2->atom.size, ev2)) { if (lv2_atom_forge_is_object_type(&forge, ev2->body.type)) { const LV2_Atom_Object* obj2 = (const LV2_Atom_Object*)&ev2->body; // UI on if (obj2->body.otype == uris.ui_on) { record_on = true; notify_sharedData = true; std::fill (notify_controllers, notify_controllers + NrControllers, true); } // UI off else if (obj2->body.otype == uris.ui_off) record_on = false; // Linked / unlinked to shared data else if (obj2->body.otype == uris.notify_sharedDataLinkEvent) { LV2_Atom *oNr = NULL; lv2_atom_object_get ( obj2, uris.notify_sharedDataNr, &oNr, NULL ); if (oNr && (oNr->type == uris.atom_Int)) { const int nr = ((LV2_Atom_Int*)oNr)->body; if ((nr >= 0) && (nr <= 4) && (nr != sharedDataNr)) { if (sharedDataNr != 0) sharedData[sharedDataNr - 1].unlink (this); if ((nr != 0) && sharedData[nr - 1].empty()) { for (int i = 0; i < NrControllers; ++i) sharedData[nr - 1].set (i, controllers[i]); } if (nr != 0) sharedData[nr - 1].link (this); sharedDataNr = nr; notify_sharedData = true; for (int i = 0; i < NrControllers; ++i) { float newValue = readController (i); if (newValue != controllers[i]) { setController (i, newValue); notify_controllers[i] = true; } } } } } // Controller changed else if ((obj2->body.otype == uris.notify_controllerEvent) && (sharedDataNr != 0)) { LV2_Atom *oNr = NULL, *oVal = NULL; lv2_atom_object_get ( obj2, uris.notify_controllerNr, &oNr, uris.notify_controllerValue, &oVal, NULL ); if (oNr && (oNr->type == uris.atom_Int) && oVal && (oVal->type == uris.atom_Float)) { const int nr = ((LV2_Atom_Int*)oNr)->body; if ((nr >= 0) && (nr < NrControllers)) { const float val = controllerLimits[nr].validate(((LV2_Atom_Float*)oVal)->body); if ((sharedDataNr > 0) && (sharedDataNr <= 4)) sharedData[sharedDataNr - 1].set (nr, val); setController (nr, val); } } } } ev2 = lv2_atom_sequence_next(ev2); } // Prepare forge buffer and initialize atom sequence const uint32_t space = notifyPort->atom.size; lv2_atom_forge_set_buffer(&forge, (uint8_t*) notifyPort, space); lv2_atom_forge_sequence_head(&forge, ¬ify_frame, 0); const LV2_Atom_Sequence* in = controlPort1; uint32_t last_t =0; // Process audio data for (const LV2_Atom_Event* ev1 = lv2_atom_sequence_begin(&in->body); !lv2_atom_sequence_is_end(&in->body, in->atom.size, ev1); ev1 = lv2_atom_sequence_next(ev1)) { if ((ev1->body.type == uris.atom_Object) || (ev1->body.type == uris.atom_Blank)) { //update bpm, speed, position LV2_Atom *oBbeat = NULL, *oBpm = NULL, *oSpeed = NULL, *oBpb = NULL, *oBu = NULL; const LV2_Atom_Object* obj = (const LV2_Atom_Object*)&ev1->body; lv2_atom_object_get (obj, uris.time_barBeat, &oBbeat, uris.time_beatsPerMinute, &oBpm, uris.time_beatsPerBar, &oBpb, uris.time_beatUnit, &oBu, uris.time_speed, &oSpeed, NULL); // BPM changed? if (oBpm && (oBpm->type == uris.atom_Float)) { float nbpm = ((LV2_Atom_Float*)oBpm)->body; if (bpm != nbpm) { bpm = nbpm; if (nbpm < 1.0) message.setMessage (JACK_STOP_MSG); else message.deleteMessage (JACK_STOP_MSG); } } // Beats per bar changed? if (oBpb && (oBpb->type == uris.atom_Float) && (((LV2_Atom_Float*)oBpb)->body > 0)) beatsPerBar = ((LV2_Atom_Float*)oBpb)->body; // BeatUnit changed? if (oBu && (oBu->type == uris.atom_Int) && (((LV2_Atom_Int*)oBu)->body > 0)) beatUnit = ((LV2_Atom_Int*)oBu)->body; // Speed changed? if (oSpeed && (oSpeed->type == uris.atom_Float)) { float nspeed = ((LV2_Atom_Float*)oSpeed)->body; if (speed != nspeed) { speed = nspeed; if (nspeed == 0.0) message.setMessage (JACK_STOP_MSG); else message.deleteMessage (JACK_STOP_MSG); } } // Beat position changed (during playing) ? if (oBbeat && (oBbeat->type == uris.atom_Float)) { // Get position within a sequence (0..1) float barsequencepos = ((LV2_Atom_Float*)oBbeat)->body * controllers[SequencesPerBar - Controllers] / beatsPerBar; // Position within a bar (0..sequencesperbar) position = MODFL (barsequencepos); // Position within a sequence refFrame = ev1->time.frames; // Reference frame } } play(last_t, ev1->time.frames); last_t = ev1->time.frames; } if (last_t < n_samples) play(last_t, n_samples); // Play remaining samples // Update position in case of no new barBeat submitted on next call const float relpos = float (n_samples - refFrame) * speed / (float (rate) / (bpm / 60)) * controllers[SequencesPerBar - Controllers] / beatsPerBar; // Position relative to reference frame position = MODFL (position + relpos); refFrame = 0; // Send collected data to GUI if (record_on) { notifyGUI(); if (notify_sharedData) notifySharedDataNrToGui(); for (int i = 0; i < NrControllers; ++i) if (notify_controllers[i]) notifyControllerToGui (i); if (message.isScheduled ()) notifyMessageToGui (); } // Close off sequence lv2_atom_forge_pop(&forge, ¬ify_frame); } float BChoppr::readController (const int ctrlNr) { // Sync with control ports if ((sharedDataNr == 0) && controlPtrs[ctrlNr]) return controllerLimits[ctrlNr].validate (*controlPtrs[ctrlNr]); // Otherwise sync with globally shared data if (sharedDataNr <= 4) return controllerLimits[ctrlNr].validate (sharedData[sharedDataNr - 1].get (ctrlNr)); return controllerLimits[ctrlNr].min; } void BChoppr::setController (const int ctrlNr, const float value) { controllers[ctrlNr] = value; if (ctrlNr == Swing - Controllers) recalculateAutoPositions(); else if (ctrlNr == NrSteps - Controllers) recalculateAutoPositions(); else if ((ctrlNr >= StepPositions - Controllers) && (ctrlNr < StepPositions - Controllers + MAXSTEPS - 1)) { const int step = ctrlNr - (StepPositions - Controllers); if (value == 0.0f) { if (!stepAutoPositions[step]) { stepAutoPositions[step] = true; recalculateAutoPositions(); } } else if (stepPositions[step] != value) { stepAutoPositions[step] = false; stepPositions[step] = value; recalculateAutoPositions(); } } } void BChoppr::recalculateAutoPositions () { const int nrMarkers = controllers[NrSteps - Controllers] - 1; int start = 0; for (int i = 0; i < nrMarkers; ++i) { if (stepAutoPositions[i]) { if ((i == nrMarkers - 1) || (!stepAutoPositions[i + 1])) { const float swing = controllers[Swing - Controllers]; const float s = 2.0f * swing / (swing + 1.0f); float anc = (start == 0 ? 0 : stepPositions[start - 1]); const float suc = (i == nrMarkers - 1 ? 1.0f : stepPositions[i + 1]); const float diff = suc - anc; const float dist = float (i - start) + 1.0f + (int (i - start) & 1 ? ((start & 1) ? 2.0f - s : s) : 1.0f); const float step = (diff < 0.0f ? 0.0f : diff / dist); for (int j = start; j <= i; ++j) { const float f = ((j & 1) ? 2.0f - s : s); anc += f * step; stepPositions[j] = anc; } } } else start = i + 1; } } void BChoppr::notifyControllerToGui (const int nr) { // Send notifications LV2_Atom_Forge_Frame frame; lv2_atom_forge_frame_time (&forge, 0); lv2_atom_forge_object (&forge, &frame, 0, uris.notify_controllerEvent); lv2_atom_forge_key (&forge, uris.notify_controllerNr); lv2_atom_forge_int (&forge, nr); lv2_atom_forge_key (&forge, uris.notify_controllerValue); lv2_atom_forge_float (&forge, controllers[nr]); lv2_atom_forge_pop (&forge, &frame); notify_controllers[nr] = false; } void BChoppr::notifySharedDataNrToGui () { // Send notifications LV2_Atom_Forge_Frame frame; lv2_atom_forge_frame_time (&forge, 0); lv2_atom_forge_object (&forge, &frame, 0, uris.notify_sharedDataLinkEvent); lv2_atom_forge_key (&forge, uris.notify_sharedDataNr); lv2_atom_forge_int (&forge, sharedDataNr); lv2_atom_forge_pop (&forge, &frame); notify_sharedData = false; } void BChoppr::notifyGUI() { if (record_on) { int notificationsCount = 0; // Scan monitor and build notifications for (int i = 0; i < MONITORBUFFERSIZE; ++i) { if (monitor[i].ready) { // Copy data monitor -> notifications if (notificationsCount < NOTIFYBUFFERSIZE - 1) { notifications[notificationsCount].position = i; notifications[notificationsCount].input1 = monitor[i].input1; notifications[notificationsCount].input2 = monitor[i].input2; notifications[notificationsCount].output1 = monitor[i].output1; notifications[notificationsCount].output2 = monitor[i].output2; notificationsCount++; } // Reset monitor data monitor[i].ready = false; monitor[i].input1 = 0.0; monitor[i].input2 = 0.0; monitor[i].output1 = 0.0; monitor[i].output2 = 0.0; } } // And build one closing notification block for submission of current position (horizon) notifications[notificationsCount].position = monitorpos; notifications[notificationsCount].input1 = monitor[monitorpos].input1; notifications[notificationsCount].input2 = monitor[monitorpos].input2; notifications[notificationsCount].output1 = monitor[monitorpos].output1; notifications[notificationsCount].output2 = monitor[monitorpos].output2; // Send notifications LV2_Atom_Forge_Frame frame; lv2_atom_forge_frame_time(&forge, 0); lv2_atom_forge_object(&forge, &frame, 0, uris.notify_event); lv2_atom_forge_key(&forge, uris.notify_key); lv2_atom_forge_vector(&forge, sizeof(float), uris.atom_Float, (uint32_t) (5 * notificationsCount), ¬ifications); lv2_atom_forge_pop(&forge, &frame); notificationsCount = 0; } } void BChoppr::notifyMessageToGui() { uint32_t messageNr = message.loadMessage (); // Send notifications LV2_Atom_Forge_Frame frame; lv2_atom_forge_frame_time(&forge, 0); lv2_atom_forge_object(&forge, &frame, 0, uris.notify_messageEvent); lv2_atom_forge_key(&forge, uris.notify_message); lv2_atom_forge_int(&forge, messageNr); lv2_atom_forge_pop(&forge, &frame); } void BChoppr::play(uint32_t start, uint32_t end) { const int steps = controllers[NrSteps - Controllers]; const float ampSwing = controllers[AmpSwing - Controllers]; const float* stepLevels = &controllers[StepLevels - Controllers]; const float* stepPans = &controllers[StepPans - Controllers]; const float attack = controllers[Attack - Controllers]; const float release = controllers[Release - Controllers]; const float sequencesPerBar = controllers[SequencesPerBar - Controllers]; const float blend = controllers[Blend - Controllers]; for (uint32_t i = start; i < end; ++i) { float effect1 = audioInput1[i]; float effect2 = audioInput2[i]; // Interpolate position within the loop if ((speed != 0.0f) && (bpm >= 1.0f)) { const float relpos = float (i - refFrame) * speed / (float (rate) / (bpm / 60)) * sequencesPerBar / beatsPerBar; // Position relative to reference frame pos = MODFL (position + relpos); } if (!controllers[Bypass - Controllers]) { // Calculate step number int iStep; for (iStep = 0; (iStep < steps - 1) && (stepPositions[iStep] < pos); ++iStep) {} // Calculate fraction of active step const float steppos = (iStep == 0 ? 0.0f : stepPositions[iStep - 1]); const float nextpos = (iStep == steps - 1 ? 1.0f : stepPositions[iStep]); const float stepsize = nextpos - steppos; const float iStepFrac = (stepsize <= 0.0f ? 0.0f : (pos - steppos) / stepsize); // Move to the next step? if (actStep != uint32_t (iStep)) { prevStep = actStep; actStep = iStep; nextStep = (iStep < steps - 1 ? iStep + 1 : 0); } // Calculate effect (level) for the position const float actLevel = stepLevels[actStep] * LIM ((actStep % 2 == 0 ? ampSwing : 1.0f / ampSwing), 0.0f, 1.0f); const float prevLevel = stepLevels[prevStep] * LIM ((prevStep % 2 == 0 ? ampSwing : 1.0f / ampSwing), 0.0f, 1.0f); const float nextLevel = stepLevels[nextStep] * LIM ((nextStep % 2 == 0 ? ampSwing : 1.0f / ampSwing), 0.0f, 1.0f); float level = actLevel; // ... and the panning const float actPan = stepPans[actStep]; const float prevPan = stepPans[prevStep]; const float nextPan = stepPans[nextStep]; float pan = actPan; // On attack if (iStepFrac < attack) { if (prevLevel <= actLevel) { if (blend == 1.0f) { if (level != prevLevel) level = prevLevel + (iStepFrac / attack) * (level - prevLevel); if (pan != prevPan) pan = prevPan + (iStepFrac / attack) * (pan - prevPan); } else if (blend == 2.0f) { if (level != prevLevel) level = prevLevel + 0.5f * (sinf (M_PI * (iStepFrac / attack - 0.5f)) + 1.0f) * (level - prevLevel); if (pan != prevPan) pan = prevPan + 0.5f * (sinf (M_PI * (iStepFrac / attack - 0.5f)) + 1.0f) * (pan - prevPan); } } } // On release if (iStepFrac > (1.0f - release)) { if (nextLevel < actLevel) { if (blend == 1.0f) { level = nextLevel + (((1.0f - iStepFrac)) / release) * (level - nextLevel); if (pan != nextPan) pan = nextPan + (((1.0f - iStepFrac)) / release) * (pan - nextPan); } else if (blend == 2.0f) { level = nextLevel + 0.5f * (sinf (M_PI * ((1.0f - iStepFrac) / release - 0.5f)) + 1.0f) * (level - nextLevel); if (pan != nextPan) pan = nextPan + 0.5f * (sinf (M_PI * ((1.0f - iStepFrac) / release - 0.5f)) + 1.0f) * (pan - nextPan); } } } // Apply effect on input effect1 = audioInput1[i] * level * (pan <= 0.0f ? 1.0f : 1.0f - pan); effect2 = audioInput2[i] * level * (pan >= 0.0f ? 1.0f : 1.0f + pan); } // Analyze input and output data for GUI notification if (record_on) { // Calculate position in monitor int newmonitorpos = (int) (pos * MONITORBUFFERSIZE); if (newmonitorpos >= MONITORBUFFERSIZE) newmonitorpos = MONITORBUFFERSIZE; if (newmonitorpos < 0) newmonitorpos = 0; // Position changed? => Ready to send if (newmonitorpos != monitorpos) { if (monitorpos >= 0) monitor[monitorpos].ready = true; monitorpos = newmonitorpos; } // Get max input and output values for a block if (fabs(effect1) > monitor[monitorpos].output1) monitor[monitorpos].output1 = fabs(effect1); if (fabs(effect2) > monitor[monitorpos].output2) monitor[monitorpos].output2 = fabs(effect2); if (fabs(audioInput1[i]) > monitor[monitorpos].input1) monitor[monitorpos].input1 = fabs(audioInput1[i]); if (fabs(audioInput2[i]) > monitor[monitorpos].input2) monitor[monitorpos].input2 = fabs(audioInput2[i]); monitor[monitorpos].ready = false; } // Send effect to audio output const float drywet = controllers[DryWet - Controllers]; audioOutput1[i] = audioInput1[i] * (1.0f - drywet) + effect1 * drywet; audioOutput2[i] = audioInput1[i] * (1.0f - drywet) + effect2 * drywet; } } LV2_State_Status BChoppr::state_save (LV2_State_Store_Function store, LV2_State_Handle handle, uint32_t flags, const LV2_Feature* const* features) { // Save shared data store (handle, uris.notify_sharedDataNr, &sharedDataNr, sizeof(sharedDataNr), uris.atom_Int, LV2_STATE_IS_POD); if (sharedDataNr != 0) { Atom_Controllers atom; for (int i = 0; i < NrControllers; ++i) atom.data[i] = sharedData[sharedDataNr - 1].get (i); atom.body.child_type = uris.atom_Float; atom.body.child_size = sizeof(float); store (handle, uris.notify_controllers, &atom, NrControllers * sizeof (float) + sizeof(LV2_Atom_Vector_Body), uris.atom_Vector, LV2_STATE_IS_POD); } return LV2_STATE_SUCCESS; } LV2_State_Status BChoppr::state_restore (LV2_State_Retrieve_Function retrieve, LV2_State_Handle handle, uint32_t flags, const LV2_Feature* const* features) { size_t size; uint32_t type; uint32_t valflags; // Restore sharedDataNr if (sharedDataNr != 0) sharedData[sharedDataNr - 1].unlink (this); sharedDataNr = 0; const void* sharedDataNrData = retrieve (handle, uris.notify_sharedDataNr, &size, &type, &valflags); if (sharedDataNrData && (type == uris.atom_Int)) { const int nr = *(int*)sharedDataNrData; if (nr != 0) sharedData[nr - 1].link (this); sharedDataNr = nr; } // Restore sharedData if ((sharedDataNr >= 0) && (sharedDataNr <= 4)) { const void* controllersData = retrieve (handle, uris.notify_controllers, &size, &type, &valflags); if (controllersData && (type == uris.atom_Vector) && (sharedDataNr > 0)) { const Atom_Controllers* atom = (const Atom_Controllers*) controllersData; if (atom->body.child_type == uris.atom_Float) { for (int i = 0; i < NrControllers; ++i) sharedData[sharedDataNr - 1].set (i, atom->data[i]); } } } notify_sharedData = true; // Load controllers for (int i = 0; i < NrControllers; ++i) { float newValue = readController (i); if (newValue != controllers[i]) { setController (i, newValue); notify_controllers[i] = true; } } return LV2_STATE_SUCCESS; } static LV2_Handle instantiate (const LV2_Descriptor* descriptor, double samplerate, const char* bundle_path, const LV2_Feature* const* features) { // New instance BChoppr* instance; try {instance = new BChoppr(samplerate, features);} catch (std::exception& exc) { fprintf (stderr, "BChoppr.lv2: Plugin instantiation failed. %s\n", exc.what ()); return NULL; } if (!instance) { fprintf(stderr, "BChoppr.lv2: Plugin instantiation failed.\n"); return NULL; } if (!instance->map) { fprintf(stderr, "BChoppr.lv2: Host does not support urid:map.\n"); delete (instance); return NULL; } return (LV2_Handle)instance; } static void connect_port (LV2_Handle instance, uint32_t port, void *data) { BChoppr* inst = (BChoppr*) instance; if (inst) inst->connect_port (port, data); } static void run (LV2_Handle instance, uint32_t n_samples) { BChoppr* inst = (BChoppr*) instance; if (inst) inst->run (n_samples); } static LV2_State_Status state_save(LV2_Handle instance, LV2_State_Store_Function store, LV2_State_Handle handle, uint32_t flags, const LV2_Feature* const* features) { BChoppr* inst = (BChoppr*)instance; if (!inst) return LV2_STATE_SUCCESS; return inst->state_save (store, handle, flags, features); } static LV2_State_Status state_restore(LV2_Handle instance, LV2_State_Retrieve_Function retrieve, LV2_State_Handle handle, uint32_t flags, const LV2_Feature* const* features) { BChoppr* inst = (BChoppr*)instance; if (!inst) return LV2_STATE_SUCCESS; return inst->state_restore (retrieve, handle, flags, features); } static void cleanup (LV2_Handle instance) { BChoppr* inst = (BChoppr*) instance; if (inst) delete inst; } static const void* extension_data(const char* uri) { static const LV2_State_Interface state = {state_save, state_restore}; if (!strcmp(uri, LV2_STATE__interface)) return &state; return NULL; } static const LV2_Descriptor descriptor = { BCHOPPR_URI, instantiate, connect_port, NULL, //activate, run, NULL, //deactivate, cleanup, extension_data }; // LV2 Symbol Export LV2_SYMBOL_EXPORT const LV2_Descriptor* lv2_descriptor(uint32_t index) { switch (index) { case 0: return &descriptor; default: return NULL; } } src/BChoppr.hpp000066400000000000000000000107031515526535400137270ustar00rootroot00000000000000/* B.Choppr * Step Sequencer Effect Plugin * * Copyright (C) 2018 - 2026 by Sven Jähnichen * * 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, 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. */ #ifndef BCHOPPR_H_ #define BCHOPPR_H_ #define MODFL(x) (x - floorf (x)) #include #include #include #include #include #include "definitions.hpp" #include "Limit.hpp" #include "Urids.hpp" #include "Ports.hpp" #include "Message.hpp" struct BChopprMonitor_t { int count; bool ready; double input1; double input2; double output1; double output2; }; const BChopprMonitor_t defaultMonitorData = {0, false, 0.0, 0.0, 0.0, 0.0}; struct Atom_Controllers { LV2_Atom_Vector_Body body; float data[NrControllers]; }; const Limit controllerLimits [NrControllers] = { {0.0f, 1.0f, 1.0f}, // Bypass {0.0f, 1.0f, 0.0f}, // DryWet {1.0f, 2.0f, 1.0f}, // Blend {0.01f, 1.0f, 0.0f}, // Attack {0.01f, 1.0f, 0.0f}, // Release {1.0f, 8.0f, 1.0f}, // SequencesPerBar {0.001f, 1000.0f, 0.0f},// AmpSwing {0.333333f, 3.0f, 0.0f},// Swing {1.0f, 16.0f, 1.0f}, // NrSteps {0.0f, 1.0f, 0.0f}, // StepPositions {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, // StepLevels {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {-1.0f, 1.0f, 0.0f}, // StepPans {-1.0f, 1.0f, 0.0f}, {-1.0f, 1.0f, 0.0f}, {-1.0f, 1.0f, 0.0f}, {-1.0f, 1.0f, 0.0f}, {-1.0f, 1.0f, 0.0f}, {-1.0f, 1.0f, 0.0f}, {-1.0f, 1.0f, 0.0f}, {-1.0f, 1.0f, 0.0f}, {-1.0f, 1.0f, 0.0f}, {-1.0f, 1.0f, 0.0f}, {-1.0f, 1.0f, 0.0f}, {-1.0f, 1.0f, 0.0f}, {-1.0f, 1.0f, 0.0f}, {-1.0f, 1.0f, 0.0f}, {-1.0f, 1.0f, 0.0f} }; class BChoppr { public: BChoppr (double samplerate, const LV2_Feature* const* features); ~BChoppr(); void connect_port (uint32_t port, void *data); void run (uint32_t n_samples); LV2_State_Status state_save(LV2_State_Store_Function store, LV2_State_Handle handle, uint32_t flags, const LV2_Feature* const* features); LV2_State_Status state_restore(LV2_State_Retrieve_Function retrieve, LV2_State_Handle handle, uint32_t flags, const LV2_Feature* const* features); LV2_URID_Map* map; private: double rate; float bpm; float speed; float position; float beatsPerBar; uint32_t beatUnit; uint32_t refFrame; uint32_t prevStep; uint32_t actStep; uint32_t nextStep; float pos; // Audio buffers float* audioInput1; float* audioInput2; float* audioOutput1; float* audioOutput2; // Controllers int sharedDataNr; float* controlPtrs[NrControllers]; float controllers[NrControllers]; float stepPositions[MAXSTEPS - 1]; bool stepAutoPositions[MAXSTEPS - 1]; // Atom port BChopprURIs uris; LV2_Atom_Sequence* controlPort1; LV2_Atom_Sequence* controlPort2; LV2_Atom_Sequence* notifyPort; LV2_Atom_Forge forge; LV2_Atom_Forge_Frame notify_frame; bool record_on; bool notify_sharedData; bool notify_controllers[NrControllers]; int monitorpos; Message message; std::array notifications; std::array monitor; float readController (const int ctrlNr); void setController (const int ctrlNr, const float value); void recalculateAutoPositions (); void play(uint32_t start, uint32_t end); void notifyGUI(); void notifyMessageToGui (); void notifyControllerToGui (const int nr); void notifySharedDataNrToGui (); }; #endif /* BCHOPPR_H_ */ src/BChoppr_Dictionary.data000066400000000000000000000125661515526535400162470ustar00rootroot00000000000000{ { "Monitor", { {"de_DE", "Monitor"}, {"es_ES", "Visualizar"}, {"fr_FR", "Moniteur"}, {"it_IT", "Monitor"}, {"nl_NL", "Monitor"} } }, { "Bypass", { {"de_DE", "Bypass"}, {"es_ES", "Paso de banda"}, {"fr_FR", "Contournement"}, {"it_IT", "Bypass"}, {"nl_NL", "Bypass"} } }, { "Dry/wet", { {"de_DE", "Mix"}, {"fr_FR", "Mélange"}, {"it_IT", "Secco/bagnato"}, {"nl_NL", "Dry/wet"} } }, { "Help", { {"de_DE", "Hilfe"}, {"es_ES", "Ayuda"}, {"fr_FR", "Aide"}, {"it_IT", "Aiuto"}, {"nl_NL", "Hulp"} } }, { "Tutorial", { {"de_DE", "Tutorial"}, {"fr_FR", "Tutoriel"}, {"it_IT", "Tutorial"}, {"nl_NL", "Tutorial"} } }, { "Attack", { {"de_DE", "Attack"}, {"es_ES", "Ataque"}, {"fr_FR", "Attaque"}, {"it_IT", "Attacco"}, {"nl_NL", "Attack"} } }, { "Decay", { {"de_DE", "Decay"}, {"es_ES", "Decaimiento"}, {"fr_FR", "Déclin"}, {"it_IT", "Decadimento"}, {"nl_NL", "Decay"} } }, { "Amp swing", { {"de_DE", "Amp.-Pendel"}, {"fr_FR", "Ampl. balancement"}, {"it_IT", "Oscil. volume"} } }, { "Step swing", { {"de_DE", "Schrittpendel"}, {"fr_FR", "Balancement par pas"}, {"it_IT", "Oscil. passi"} } }, { "Auto", { {"de_DE", "Auto"}, {"fr_FR", "Auto"}, {"it_IT", "Auto"}, {"nl_NL", "Auto"} } }, { "Manual", { {"de_DE", "Manuell"}, {"fr_FR", "Manuel"}, {"it_IT", "Manuale"}, {"nl_NL", "Manueel"} } }, { "Enter", { {"de_DE", "Eingabe"}, {"fr_FR", "Entrée"}, {"it_IT", "Inserire"}, {"nl_NL", "Invoeren"} } }, { "New position:", { {"de_DE", "Neue Position:"}, {"fr_FR", "Nouvelle Position"}, {"it_IT", "Nuova posizione:"}, {"nl_NL", "Niewe positie"} } }, { "New length:", { {"de_DE", "Neue Länge:"}, {"fr_FR", "Nouvelle durée"}, {"it_IT", "Nuova durata:"}, {"nl_NL", "Niewe lengte"} } }, { "sequence(s)", { {"de_DE", "Sequenz(en)"}, {"fr_FR", "Sequence(s)"}, {"it_IT", "sequenz(a/e)"}, {"nl_NL", "Sequentie(s)"} } }, { "step(s)", { {"de_DE", "Schritt(e)"}, {"fr_FR", "Pas"}, {"it_IT", "pass(o/i)"}, {"nl_NL", "Pas(sen)"} } }, { "Apply", { {"de_DE", "Anwenden"}, {"es_ES", "Aplicar"}, {"fr_FR", "Appliquer"}, {"it_IT", "Applica"}, {"nl_NL", "Toepassen"} } }, { "Marker", { {"de_DE", "Marker"}, {"fr_FR", "Repère Temporel"}, {"it_IT", "Marcatore"} } }, { "Sequences per bar", { {"de_DE", "Sequenzen pro Takt"}, {"fr_FR", "Seq. par mesure"}, {"it_IT", "Seq. per misura"} } }, { "Number of steps", { {"de_DE", "Anzahl Schritte"}, {"fr_FR", "Nombre de pas"}, {"it_IT", "Numero di passi"}, {"nl_NL", "Aantal passen"} } }, { "Step shape", { {"de_DE", "Schrittform"}, {"fr_FR", "Forme du pas"}, {"it_IT", "Forma del passo"} } }, { "Sequence monitor", { {"de_DE", "Sequenzmonitor"}, {"fr_FR", "Moniteur de séquence"}, {"it_IT", "Monitor sequenza"} } }, { "Jack transport off or halted.", { {"de_DE", "Jack-Transport ist angehalten."}, {"fr_FR", "Transport JACK arrêté"}, {"it_IT", "Trasp. Jack fermo"} } }, { "Shared data", { {"de_DE", "Gemeinsame Daten"}, {"fr_FR", "Données partagées"}, {"it_IT", "Dati condivisi"}, {"nl_NL", "Gedeelde data"} } }, { "Level", { {"de_DE", "Lautstärke"}, {"es_ES", "Nivel"}, {"fr_FR", "Niveau"}, {"it_IT", "Livello"}, {"nl_NL", "Niveau"} } }, { "on", { {"de_DE", "ein"}, {"es_ES", "activado"}, {"fr_FR", "on"}, {"it_IT", "attivo"}, {"nl_NL", "aan"} } }, { "off", { {"de_DE", "aus"}, {"es_ES", "desactivado"}, {"fr_FR", "off"}, {"it_IT", "non attivo"}, {"nl_NL", "uit"} } } } src/BChoppr_GUI.cpp000066400000000000000000001366051515526535400144400ustar00rootroot00000000000000/* B.Choppr * Step Sequencer Effect Plugin * * Copyright (C) 2018 - 2026 by Sven Jähnichen * * 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, 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. */ #include "BChoppr_GUI.hpp" #include "BWidgets/BDevices/MouseButton.hpp" #include "BWidgets/BEvents/Event.hpp" #include "BWidgets/BEvents/ExposeEvent.hpp" #include "BWidgets/BStyles/Status.hpp" #include "BWidgets/BStyles/Types/Border.hpp" #include "BWidgets/BStyles/Types/Color.hpp" #include "BWidgets/BStyles/Types/Fill.hpp" #include "BWidgets/BUtilities/Dictionary.hpp" #include "BWidgets/BUtilities/cairoplus.h" #include "BWidgets/BUtilities/to_string.hpp" #include "BWidgets/BWidgets/ImageButton.hpp" #include "BWidgets/BWidgets/Supports/ValueTransferable.hpp" #include "SwingHSlider.hpp" #include "BWidgets/BUtilities/stof.hpp" #include "BWidgets/BUtilities/vsystem.hpp" #include #include #include BChoppr_GUI::BChoppr_GUI (const char *bundle_path, const LV2_Feature *const *features, PuglNativeView parentWindow) : Window (820, 560, parentWindow, URID (), "B.Choppr", true, PUGL_MODULE, 0), controller (NULL), write_function (NULL), bgImage (0, 0, 820, 560, URID ("/bgimage")), rContainer (260, 80, 540, 350, URID ("/rcontainer")), sContainer (3, 165, 534, 182, URID ("/scontainer")), monitorSwitch (540, 15, 40, 16, true, false, URID ("/dial"), BDICT ("Monitor")), monitorLabel (510, 35, 100, 20, BDICT ("Monitor"), URID ("/smlabel")), bypassButton (652, 15, 16, 16, 2, true, false, URID ("/redbutton"), BDICT ("Bypass")), bypassLabel (610, 35, 100, 20, BDICT ("Bypass"), URID ("/smlabel")), drywetDial (743, 5, 33, 40, 1.0, 0.0, 1.0, 0.0, BNOTRANSFERD, BNOTRANSFERD, URID ("/dial"), BDICT ("Dry/wet")), drywetLabel (710, 35, 100, 20, BDICT ("Dry/wet"), URID ("/smlabel")), helpButton (20, 80, 24, 24, false, false, URID ("/invbutton"), BDICT ("Help")), ytButton (50, 80, 24, 24, false, false, URID ("/invbutton"), BDICT ("Tutorial")), rectButton (40, 240, 60, 40, NULL, true, true, URID ("/blendbutton")), sinButton (140, 240, 60, 40, NULL, true, false, URID ("/blendbutton")), stepshapeDisplay (30, 290, 180, 140, URID ("/smonitor")), attackControl (40, 440, 50, 60, 0.2, 0.01, 1.0, 0.01, BNOTRANSFERD, BNOTRANSFERD, BDOUBLE_TO_STRING, BSTRING_TO_DOUBLE, URID ("/dial"), BDICT ("Attack")), attackLabel (20, 500, 90, 20, BDICT ("Attack"), URID ("/label")), releaseControl (150, 440, 50, 60, 0.2, 0.01, 1.0, -0.01, BNOTRANSFERD, BNOTRANSFERD, BDOUBLE_TO_STRING, BSTRING_TO_DOUBLE, URID ("/dial"), BDICT ("Decay")), releaseLabel (130, 500, 90, 20, BDICT ("Decay"), URID ("/label")), monitorDisplay (3, 3, 534, 162, URID ("/mmonitor")), sequencesperbarControl (260, 442, 120, 28, 1.0, 1.0, 8.0, 1.0, BNOTRANSFERD, BNOTRANSFERD, [] (const double& x) {return BUtilities::to_string (x, "%1.0f");}, BSTRING_TO_DOUBLE, URID ("/dial"), BDICT ("Sequences per bar")), sequencesperbarLabel (260, 470, 120, 20, BDICT ("Sequences per bar"), URID ("/label")), ampSwingControl (420, 442, 110, 28, 1.0, 0.001, 1000.0, 0.0, [] (const double& x) {return log(x);}, [] (const double& x) {return exp(x);}, SwingHSlider::ratioToString, SwingHSlider::stringToRatio, URID ("/dial"), BDICT ("Amp swing")), ampSwingLabel (420, 470, 110, 20, BDICT ("Amp swing"), URID ("/label")), swingControl (565, 442, 110, 28, 1.0, 1.0 / 3.0, 3.0, 0.0, [] (const double& x) {return (x >= 1.0 ? 0.5 * (x - 1.0) : 0.5 * (1.0 - 1.0 / x));}, [] (const double& x) {return (x >= 0 ? 1.0 + 2.0 * x : -1.0 / (2.0 * x - 1.0));}, SwingHSlider::ratioToString, SwingHSlider::stringToRatio, URID ("/dial"), BDICT ("Step swing")), swingLabel (565, 470, 110, 20, BDICT ("Step swing"), URID ("/label")), markersAutoButton (715, 450, 80, 20, BDICT ("Auto"), false, false, URID ("/button"), BDICT ("Marker")), markersAutoLabel (715, 470, 80, 20, BDICT ("Marker"), URID ("/label")), nrStepsControl (260, 502, 540, 28, 1.0, 1.0, MAXSTEPS, 1.0, BNOTRANSFERD, BNOTRANSFERD, [] (const double& x) {return BUtilities::to_string (x, "%1.0f");}, BSTRING_TO_DOUBLE, URID ("/dial"), BDICT ("Number of steps")), nrStepsLabel (260, 530, 540, 20, BDICT ("Number of steps"), URID ("/label")), stepshapeLabel (33, 293, 120, 20, BDICT ("Step shape"), URID ("/llabel")), sequencemonitorLabel (263, 83, 120, 20, BDICT ("Sequence monitor"), URID ("/llabel")), messageLabel (420, 83, 280, 20, "", URID ("/label")), markerListBox (12, -68, 66, 86, {BDICT ("Auto"), BDICT ("Manual"), BDICT ("Enter")}, 0, URID ("/menu")), enterFrame (66, 52, 320, 70, URID ("/menu")), enterPositionComboBox (10, 10, 120, 20, 0, 20, 120, 44, {BDICT ("New position:"), BDICT ("New length:")}, 1, URID ("/menu")), enterEdit (140, 15, 60, 20, "0.000", URID ("/lflabel")), enterSequencesComboBox (210, 10, 100, 20, 0, 20, 100, 44, {BDICT ("sequence(s)"), BDICT ("step(s)")}, 1, URID ("/menu")), enterOkButton (120, 40, 80, 20, BDICT ("Apply"), false, false, URID ("/button")), sharedDataDummy (28, 528, 194, 24, 0.0, 0.0, 4.0, 1.0), surface (NULL), pat5 (NULL), pluginPath (bundle_path ? std::string (bundle_path) : std::string ("")), scale (1.0f), map (NULL) { if (!init_Stepshape ()) { std::cerr << "BChoppr.lv2#GUI: Failed to init monitor." << std::endl; destroy_Stepshape (); throw std::bad_alloc (); } // Initialize and configure images sContainer.createImage (BStyles::Status::normal); rectButton.image.createImage (BStyles::Status::normal); rectButton.image.createImage (BStyles::Status::active); sinButton.image.createImage (BStyles::Status::normal); sinButton.image.createImage (BStyles::Status::active); stepshapeDisplay.createImage (BStyles::Status::normal); //Initialialize and configure step controllers double sw = sContainer.getEffectiveWidth(); double sx = sContainer.getXOffset(); for (int i = 0; i < MAXSTEPS; ++i) { stepLevelControl[i] = new BWidgets::VSlider ((i + 0.5) * sw / MAXSTEPS + sx - 7, 60, 14, 75, 1.0, 0.0, 1.0, 0.01, BNOTRANSFERD, BNOTRANSFERD, URID ("/dial"), BDICT("Level") + " " + std::to_string(i + 1)); stepLevelControl[i]->setClickable (false); stepLevelControl[i]->setScrollable (true); sContainer.add (stepLevelControl[i]); stepLevelControlLabel[i] = new BWidgets::EditLabel ((i + 0.5) * sw / MAXSTEPS + sx - 14, 40, 28, 20, "1.00", URID ("/smlabel")); stepLevelControlLabel[i]->setCallbackFunction(BEvents::Event::EventType::valueChangedEvent, stepControlLabelChangedCallback); sContainer.add (stepLevelControlLabel[i]); stepPanControl[i] = new BWidgets::Dial ((i + 0.5) * sw / MAXSTEPS + sx - 15, 135, 30, 30, 0.0, -1.0, 1.0, 0.01, BNOTRANSFERD, BNOTRANSFERD, URID ("/dial"), BDICT("Panning") + " " + std::to_string(i + 1)); stepPanControl[i]->setClickable (false); stepPanControl[i]->setScrollable (true); sContainer.add (stepPanControl[i]); stepPanControlLabel[i] = new BWidgets::EditLabel ((i + 0.5) * sw / MAXSTEPS + sx - 14, 40, 165, 20, "1.00", URID ("/smlabel")); stepPanControlLabel[i]->setCallbackFunction(BEvents::Event::EventType::valueChangedEvent, stepControlLabelChangedCallback); sContainer.add (stepPanControlLabel[i]); } //Initialialize and configure markers for (int i = 0; i < MAXSTEPS - 1; ++i) { markerWidgets[i] = new Marker ((i + 1) * sw / MAXSTEPS + sx - 5, 10, 10, 16, (double(i) + 1.0) / MAXSTEPS, 0.0, 1.0, 0.0, BNOTRANSFERD, BNOTRANSFERD, URID ("/marker"), BDICT ("Marker") + " " + std::to_string(i + 1)); markerWidgets[i]->setHasValue (false); markerWidgets[i]->setCallbackFunction (BEvents::Event::EventType::buttonPressEvent, BChoppr_GUI::markerClickedCallback); markerWidgets[i]->setCallbackFunction (BEvents::Event::EventType::pointerDragEvent, BChoppr_GUI::markerDraggedCallback); sContainer.add (markerWidgets[i]); } // Inititaize shared data buttons for (int i = 0; i < 4; ++i) { sharedDataButtons[i] = new BWidgets::Button (28 + 50 * i, 528, 44, 24, true, false, URID ("/halobutton"), BDICT ("Shared data") + " " + std::to_string (i + 1)); } // Link controllers controllers[Bypass - Controllers] = &bypassButton; controllers[DryWet - Controllers] = &drywetDial; controllers[Blend - Controllers] = &rectButton; controllers[Attack - Controllers] = &attackControl; controllers[Release - Controllers] = &releaseControl; controllers[SequencesPerBar - Controllers] = &sequencesperbarControl; controllers[AmpSwing - Controllers] = &SwingControl; controllers[Swing - Controllers] = &swingControl; controllers[NrSteps - Controllers] = &nrStepsControl; for (int i = 0; i < MAXSTEPS - 1; ++i) controllers[StepPositions + i - Controllers] = markerWidgets[i]; for (int i = 0; i < MAXSTEPS; ++i) controllers[StepLevels + i - Controllers] = stepLevelControl[i]; for (int i = 0; i < MAXSTEPS; ++i) controllers[StepPans + i - Controllers] = stepPanControl[i]; // Set callbacks for (int i = 0; i < NrControllers; ++i) controllers[i]->setCallbackFunction (BEvents::Event::EventType::valueChangedEvent, BChoppr_GUI::valueChangedCallback); monitorSwitch.setCallbackFunction (BEvents::Event::EventType::valueChangedEvent, BChoppr_GUI::valueChangedCallback); markerListBox.setCallbackFunction (BEvents::Event::EventType::valueChangedEvent, BChoppr_GUI::listBoxChangedCallback); enterPositionComboBox.setCallbackFunction (BEvents::Event::EventType::valueChangedEvent, BChoppr_GUI::enterListBoxChangedCallback); enterSequencesComboBox.setCallbackFunction (BEvents::Event::EventType::valueChangedEvent, BChoppr_GUI::enterListBoxChangedCallback); enterOkButton.setCallbackFunction(BEvents::Event::EventType::buttonClickEvent, enterOkClickedCallback); markersAutoButton.setCallbackFunction (BEvents::Event::EventType::valueChangedEvent, BChoppr_GUI::markersAutoClickedCallback); rectButton.setCallbackFunction (BEvents::Event::EventType::buttonClickEvent, BChoppr_GUI::buttonClickedCallback); sinButton.setCallbackFunction (BEvents::Event::EventType::buttonClickEvent, BChoppr_GUI::buttonClickedCallback); helpButton.setCallbackFunction(BEvents::Event::EventType::buttonPressEvent, helpButtonClickedCallback); ytButton.setCallbackFunction(BEvents::Event::EventType::buttonPressEvent, ytButtonClickedCallback); for (BWidgets::Button* s: sharedDataButtons) s->setCallbackFunction (BEvents::Event::EventType::buttonClickEvent, BChoppr_GUI::sharedDataClickedCallback); sharedDataDummy.setCallbackFunction (BEvents::Event::EventType::valueChangedEvent, BChoppr_GUI::valueChangedCallback); // Configure widgets bgImage.loadImage(BStyles::Status::normal,pluginPath + BG_FILE); drywetDial.setScrollable (true); drywetDial.setClickable (false); attackControl.setScrollable (true); attackControl.setClickable (false); releaseControl.setScrollable (true); releaseControl.setClickable (false); sequencesperbarControl.setScrollable (true); ampSwingControl.setClickable (false); swingControl.setClickable (false); nrStepsControl.setScrollable (true); markerListBox.setStacking (StackingType::escape); enterFrame.setStacking (StackingType::escape); enterFrame.hide(); sharedDataDummy.hide(); setTheme (theme); setAutoMarkers (); rearrange_controllers (); // Pack widgets enterFrame.add (&enterPositionComboBox); enterFrame.add (&enterEdit); enterFrame.add (&enterSequencesComboBox); enterFrame.add (&enterOkButton); markerListBox.add (&enterFrame); rContainer.add (&monitorDisplay); rContainer.add (&sContainer); add (&bgImage); add (&monitorSwitch); add (&monitorLabel); add (&bypassButton); add (&bypassLabel); add (&drywetDial); add (&drywetLabel); add (&helpButton); add (&ytButton); add (&rectButton); add (&sinButton); add (&stepshapeDisplay); add (&attackControl); add (&attackLabel); add (&releaseControl); add (&releaseLabel); add (&sequencesperbarControl); add (&sequencesperbarLabel); add (&SwingControl); add (&SwingLabel); add (&swingControl); add (&swingLabel); add (&markersAutoButton); add (&markersAutoLabel); add (&nrStepsControl); add (&nrStepsLabel); add (&stepshapeLabel); add (&sharedDataDummy); for (BWidgets::Button* b : sharedDataButtons) add (b); add (&rContainer); add (&sequencemonitorLabel); add (&messageLabel); redrawSContainer (); redrawButtons (); //Scan host features for URID map LV2_URID_Map* m = NULL; for (int i = 0; features[i]; ++i) { if (strcmp(features[i]->URI, LV2_URID__map) == 0) m = (LV2_URID_Map*) features[i]->data; } if (!m) throw std::invalid_argument ("Host does not support urid:map"); //Map URIS map = m; getURIs (map, &uris); // Initialize forge lv2_atom_forge_init (&forge,map); } BChoppr_GUI::~BChoppr_GUI() { send_record_off (); destroy_Stepshape (); for (BWidgets::VSlider* v : stepLevelControl) if (v) delete v; for (BWidgets::EditLabel* l : stepLevelControlLabel) if (l) delete l; for (BWidgets::Dial* d : stepPanControl) if (d) delete d; for (BWidgets::EditLabel* l : stepPanControlLabel) if (l) delete l; for (Marker* m : markerWidgets) if (m) delete m; for (BWidgets::Button* b : sharedDataButtons) if (b) delete b; } void BChoppr_GUI::portEvent(uint32_t port_index, uint32_t buffer_size, uint32_t format, const void* buffer) { // Notify port if ((format == uris.atom_eventTransfer) && (port_index == Notify)) { const LV2_Atom* atom = (const LV2_Atom*) buffer; if ((atom->type == uris.atom_Blank) || (atom->type == uris.atom_Object)) { const LV2_Atom_Object* obj = (const LV2_Atom_Object*) atom; // Linked / unlinked to shared data if (obj->body.otype == uris.notify_sharedDataLinkEvent) { LV2_Atom *oNr = NULL; lv2_atom_object_get ( obj, uris.notify_sharedDataNr, &oNr, NULL ); if (oNr && (oNr->type == uris.atom_Int)) { const int nr = ((LV2_Atom_Int*)oNr)->body; if ((nr >= 0) && (nr <= 4) && (nr != sharedDataDummy.getValue())) { sharedDataDummy.setValueable (false); sharedDataDummy.setValue (nr); sharedDataDummy.setValueable (true); for (int i = 0; i < 4; ++i) { sharedDataButtons[i]->setValueable (false); sharedDataButtons[i]->setValue (i == nr - 1); sharedDataButtons[i]->setValueable (true); } } } } // Controller changed else if (obj->body.otype == uris.notify_controllerEvent) { LV2_Atom *oNr = NULL, *oVal = NULL; lv2_atom_object_get ( obj, uris.notify_controllerNr, &oNr, uris.notify_controllerValue, &oVal, NULL ); if (oNr && (oNr->type == uris.atom_Int) && oVal && (oVal->type == uris.atom_Float)) { const int nr = ((LV2_Atom_Int*)oNr)->body; const float val = ((LV2_Atom_Float*)oVal)->body; if ((nr >= StepPositions - Controllers) && (nr < StepPositions - Controllers + MAXSTEPS - 1)) { for (Marker* m : markerWidgets) m->setValueable(false); setMarker (nr - (StepPositions - Controllers), val); setAutoMarkers (); for (Marker* m : markerWidgets) m->setValueable(true); rearrange_controllers (); redrawSContainer (); } else setController (nr, val); } } // Monitor notification else if ((obj->body.otype == uris.notify_event) && monitorSwitch.getValue ()) { const LV2_Atom* data = NULL; lv2_atom_object_get(obj, uris.notify_key, &data, 0); if (data && (data->type == uris.atom_Vector)) { const LV2_Atom_Vector* vec = (const LV2_Atom_Vector*) data; if (vec->body.child_type == uris.atom_Float) { uint32_t notificationsCount = (uint32_t) ((data->size - sizeof(LV2_Atom_Vector_Body)) / sizeof (BChopprNotifications)); BChopprNotifications* notifications = (BChopprNotifications*) (&vec->body + 1); if (notificationsCount > 0) { std::vector ndata; for (uint32_t i = 0; i < notificationsCount; ++i) ndata.push_back(notifications[i]); monitorDisplay.pushData (ndata); } } } else std::cerr << "BChoppr.lv2#GUI: Corrupt audio message." << std::endl; } // Message notification else if (obj->body.otype == uris.notify_messageEvent) { const LV2_Atom* data = NULL; lv2_atom_object_get(obj, uris.notify_message, &data, 0); if (data && (data->type == uris.atom_Int)) { const int messageNr = ((LV2_Atom_Int*)data)->body; std::string msg = ((messageNr >= NO_MSG) && (messageNr <= MAX_MSG) ? (messageStrings[messageNr] != "" ? "*** " + BDICT(messageStrings[messageNr]) + " ***" : "") : ""); messageLabel.setText (msg); } } } } // Scan remaining ports else if ((format == 0) && (port_index >= Controllers) && (port_index < Controllers + NrControllers) && (sharedDataDummy.getValue() == 0)) { int nr = port_index - Controllers; float val = *(float*) buffer; if ((nr >= StepPositions - Controllers) && (nr < StepPositions - Controllers + MAXSTEPS - 1)) { setMarker (nr - (StepPositions - Controllers), val); setAutoMarkers (); rearrange_controllers (); redrawSContainer (); } else setController (nr, val); } } void BChoppr_GUI::onConfigureRequest (BEvents::Event* event) { Window::onConfigureRequest (event); BEvents::ExposeEvent* ee = dynamic_cast(event); if (!ee) return; const double sz = (ee->getArea().getWidth() / 820.0 > ee->getArea().getHeight() / 560.0 ? ee->getArea().getHeight() / 560.0 : ee->getArea().getWidth() / 820.0); setZoom (sz); } void BChoppr_GUI::send_record_on () { uint8_t obj_buf[64]; lv2_atom_forge_set_buffer(&forge, obj_buf, sizeof(obj_buf)); LV2_Atom_Forge_Frame frame; LV2_Atom* msg = (LV2_Atom*)lv2_atom_forge_object(&forge, &frame, 0, uris.ui_on); lv2_atom_forge_pop(&forge, &frame); write_function(controller, Control_2, lv2_atom_total_size(msg), uris.atom_eventTransfer, msg); monitorSwitch.setValue (1.0); } void BChoppr_GUI::send_record_off () { uint8_t obj_buf[64]; lv2_atom_forge_set_buffer(&forge, obj_buf, sizeof(obj_buf)); LV2_Atom_Forge_Frame frame; LV2_Atom* msg = (LV2_Atom*)lv2_atom_forge_object(&forge, &frame, 0, uris.ui_off); lv2_atom_forge_pop(&forge, &frame); write_function(controller, Control_2, lv2_atom_total_size(msg), uris.atom_eventTransfer, msg); monitorSwitch.setValue (0.0); } void BChoppr_GUI::sendSharedDataNr () { uint8_t obj_buf[64]; lv2_atom_forge_set_buffer(&forge, obj_buf, sizeof(obj_buf)); LV2_Atom_Forge_Frame frame; LV2_Atom* msg = (LV2_Atom*)lv2_atom_forge_object(&forge, &frame, 0, uris.notify_sharedDataLinkEvent); lv2_atom_forge_key (&forge, uris.notify_sharedDataNr); lv2_atom_forge_int (&forge, sharedDataDummy.getValue()); lv2_atom_forge_pop(&forge, &frame); write_function(controller, Control_2, lv2_atom_total_size(msg), uris.atom_eventTransfer, msg); } void BChoppr_GUI::sendController (const int nr, const float value) { uint8_t obj_buf[64]; lv2_atom_forge_set_buffer(&forge, obj_buf, sizeof(obj_buf)); LV2_Atom_Forge_Frame frame; LV2_Atom* msg = (LV2_Atom*)lv2_atom_forge_object(&forge, &frame, 0, uris.notify_controllerEvent); lv2_atom_forge_key (&forge, uris.notify_controllerNr); lv2_atom_forge_int (&forge, nr); lv2_atom_forge_key (&forge, uris.notify_controllerValue); lv2_atom_forge_float (&forge, value); lv2_atom_forge_pop(&forge, &frame); write_function(controller, Control_2, lv2_atom_total_size(msg), uris.atom_eventTransfer, msg); } float BChoppr_GUI::setController (const int nr, const double value) { BWidgets::Valueable* v = dynamic_cast(controllers[nr]); if (!v) return value; // Prevent emission of ValueChangedEvent v->setValueable (false); // Set new value to widgets const int ctrl = nr + Controllers; if (ctrl == Bypass) bypassButton.setValue (value != 0.0); else if (ctrl == Blend) { sinButton.setValue (value == 2.0); rectButton.setValue (value != 2.0); } else { BWidgets::ValueableTyped* vd = dynamic_cast*>(v); if (vd) vd->setValue (value); } // Switch on Valueable again v->setValueable (true); if (ctrl == Blend) redrawStepshape (); else if ((ctrl == Attack) || (ctrl == Release)) redrawStepshape (); else if (ctrl == AmpSwing) rearrange_controllers(); else if (ctrl == Swing) { setAutoMarkers(); rearrange_controllers(); redrawSContainer(); } else if (ctrl == NrSteps) { setAutoMarkers(); rearrange_controllers(); redrawSContainer(); } else if ((ctrl >= StepPositions) and (ctrl < StepPositions + MAXSTEPS - 1)) { return (((Marker*)controllers[nr])->hasValue() ? value : 0.0f); } else if ((ctrl >= StepLevels ) and (ctrl < StepLevels + MAXSTEPS)) { stepLevelControlLabel[nr - (StepLevels - Controllers)]->setText (BUtilities::to_string (value, "%1.2f")); } else if ((nr >= StepPans - Controllers) and (nr < StepPans - Controllers + MAXSTEPS)) { stepPanControlLabel[nr - (StepPans - Controllers)]->setText (BUtilities::to_string (value, "%1.2f")); } return value; } void BChoppr_GUI::setMarker (const int markerNr, double value) { if ((markerNr < 0) || (markerNr >= MAXSTEPS - 1)) return; // Value 0.0: Automatic if (value == 0.0) { markerWidgets[markerNr]->setHasValue (false); } else { // Set value and switch off automatic value = std::min (std::max (value, MINMARKERVALUE), 1.0); markerWidgets[markerNr]->setHasValue (true); markerWidgets[markerNr]->setValue (value); // Validate ancessors for (int i = markerNr - 1; i >= 0; --i) { if (markerWidgets[i]->hasValue()) { if (markerWidgets[i]->getValue() > value) markerWidgets[i]->setValue (value); else break; } } // Validate successors for (int i = markerNr + 1; i < MAXSTEPS - 1; ++i) { if (markerWidgets[i]->hasValue()) { if (markerWidgets[i]->getValue() < value) markerWidgets[i]->setValue (value); else break; } } } std::vector steps; const int nrMarkers = nrStepsControl.getValue() - 1; for (int i = 0; i < nrMarkers; ++i) steps.push_back(markerWidgets[i]->getValue()); monitorDisplay.setSteps(steps); } void BChoppr_GUI::setAutoMarkers () { int nrMarkers = nrStepsControl.getValue() - 1; int start = 0; for (int i = 0; i < nrMarkers; ++i) { if (!markerWidgets[i]->hasValue()) { if ((i == nrMarkers - 1) || (markerWidgets[i + 1]->hasValue())) { double swing = 2.0 * swingControl.getValue() / (swingControl.getValue() + 1.0); double anc = (start == 0 ? 0 : markerWidgets[start - 1]->getValue()); double suc = (i == nrMarkers - 1 ? 1 : markerWidgets[i + 1]->getValue()); double diff = suc - anc; double dist = i - start + 1.0 + (int (i - start) & 1 ? ((start & 1) ? 2.0 - swing : swing) : 1.0); double step = (diff < 0 ? 0 : diff / dist); for (int j = start; j <= i; ++j) { double f = ((j & 1) ? 2.0 - swing : swing); anc += f * step; markerWidgets[j]->setValue (anc); } } } else start = i + 1; } std::vector steps; for (int i = 0; i < nrMarkers; ++i) steps.push_back(markerWidgets[i]->getValue()); monitorDisplay.setSteps(steps); } void BChoppr_GUI::rearrange_controllers () { int nrStepsi = nrStepsControl.getValue(); if ((nrStepsi < 1) || (nrStepsi > MAXSTEPS)) return; double sw = sContainer.getEffectiveWidth(); double sx = sContainer.getXOffset(); const double oddf = (ampSwingControl.getValue() >= 1.0 ? 1.0 : ampSwingControl.getValue()); const double evenf = (ampSwingControl.getValue() >= 1.0 ? 1.0 / ampSwingControl.getValue() : 1.0); for (int i = 0; i < MAXSTEPS; ++i) { if (i < nrStepsi) { stepLevelControl[i]->resize (14, (14 + std::min (std::max (66 * ((i % 2) == 0 ? oddf : evenf), 0.0), 66.0 ))); stepLevelControl[i]->moveTo ((i + 0.5) * sw / nrStepsi + sx - 7, 135 - stepLevelControl[i]->getHeight()); stepLevelControl[i]->show(); stepLevelControlLabel[i]->moveTo ((i + 0.5) * sw / nrStepsi + sx - 14, 40); stepLevelControlLabel[i]->resize (28, 20); stepLevelControlLabel[i]->show(); stepPanControl[i]->resize (30, 30); stepPanControl[i]->moveTo ((i + 0.5) * sw / nrStepsi + sx - 15, 135); stepPanControl[i]->show(); stepPanControlLabel[i]->moveTo ((i + 0.5) * sw / nrStepsi + sx - 14, 165); stepPanControlLabel[i]->resize (28, 20); stepPanControlLabel[i]->show(); if (i < nrStepsi - 1) markerWidgets[i]->resize (10, 16); } else { stepLevelControl[i]->hide (); stepPanControl[i]->hide(); stepLevelControlLabel[i]->hide(); stepPanControlLabel[i]->hide(); } } for (int i = 0; i < MAXSTEPS - 1; ++i) { if (i < nrStepsi - 1) { markerWidgets[i]->moveTo (markerWidgets[i]->getValue() * sw + sx - 5, 10); markerWidgets[i]->show (); } else markerWidgets[i]->hide (); } } void BChoppr_GUI::recalculateEnterEdit () { Marker* marker = (Marker*)markerListBox.getParent(); if (!marker) return; int nrSteps = nrStepsControl.getValue(); for (int i = 0; i < nrSteps - 1; ++i) { if (marker == markerWidgets[i]) { const double rpos = marker->getValue(); double val = rpos; if (enterPositionComboBox.getValue() == 1.0) { if (enterSequencesComboBox.getValue() == 2.0) { val = rpos * nrSteps; // TODO rounding } } else { const double prpos = (i > 0 ? markerWidgets[i - 1]->getValue() : 0.0); if (enterSequencesComboBox.getValue() == 1.0) val = rpos - prpos; else { val = (rpos - prpos) * nrSteps; // TODO rounding } } enterEdit.setText (BUtilities::to_string (val, "%1.6f")); break; } } } void BChoppr_GUI::valueChangedCallback (BEvents::Event* event) { if (event) { BWidgets::Widget* widget = event->getWidget (); if (widget) { BChoppr_GUI* ui = (BChoppr_GUI*) widget->getMainWindow (); if (ui) { // Get controller nr int controllerNr = -1; for (int i = 0; i < NrControllers; ++i) { if (widget == ui->controllers[i]) { controllerNr = i; break; } } if (controllerNr >= 0) { BWidgets::ValueableTyped* vb = dynamic_cast*>(widget); BWidgets::ValueableTyped* vd = dynamic_cast*>(widget); float value = 0.0f; if ((controllerNr == Bypass - Controllers) && vb) value = vb->getValue(); else if ((controllerNr == Blend - Controllers) && vb) value = (vb->getValue() ? 1.0 : 2.0); else if (vd) value = vd->getValue(); else return; value = ui->setController (controllerNr, value); if (ui->sharedDataDummy.getValue()) ui->sendController (controllerNr, value); else ui->write_function (ui->controller, Controllers + controllerNr, sizeof (float), 0, &value); } // Shared data else if (widget == &ui->sharedDataDummy) { const int val = ui->sharedDataDummy.getValue() - 1; for (int i = 0; i < 4; ++i) { ui->sharedDataButtons[i]->setValueable (false); ui->sharedDataButtons[i]->setValue (i == val); ui->sharedDataButtons[i]->setValueable (true); ui->sharedDataButtons[i]->setBorder(i == val ? ui->border : BStyles::noBorder); } ui->sendSharedDataNr(); } // monitor on/off changed else if (widget == &ui->monitorSwitch) { if (ui->monitorSwitch.getValue ()) ui->send_record_on (); else ui->send_record_off (); return; } } } } } void BChoppr_GUI::markerClickedCallback (BEvents::Event* event) { if (!event) return; BEvents::PointerEvent* pev = (BEvents::PointerEvent*) event; if (pev->getButton() != BDevices::MouseButton::ButtonType::right) return; Marker* marker = (Marker*)event->getWidget(); if (!marker) return; marker->raiseToFront(); BChoppr_GUI* ui = (BChoppr_GUI*)marker->getMainWindow(); if (!ui) return; const int nrSteps = ui->nrStepsControl.getValue(); for (int i = 0; i < nrSteps - 1; ++i) { if (marker == ui->markerWidgets[i]) { Marker* oldMarker = (Marker*) ui->markerListBox.getParent(); ui->markerListBox.setValue (0); if (oldMarker && (oldMarker == marker)) { if (ui->markerListBox.isVisible()) ui->markerListBox.hide(); else { ui->markerListBox.show (); ui->enterFrame.hide(); } } else if (oldMarker && (oldMarker != marker)) { oldMarker->release (&ui->markerListBox); marker->add (&ui->markerListBox); ui->markerListBox.show(); ui->enterFrame.hide(); } else { marker->add (&ui->markerListBox); ui->markerListBox.show(); ui->enterFrame.hide(); } } } } void BChoppr_GUI::markerDraggedCallback (BEvents::Event* event) { if (!event) return; BEvents::PointerEvent* pev = (BEvents::PointerEvent*) event; if (pev->getButton() != BDevices::MouseButton::ButtonType::left) return; Marker* marker = (Marker*)event->getWidget(); if (!marker) return; marker->raiseToFront(); BChoppr_GUI* ui = (BChoppr_GUI*)marker->getMainWindow(); if (!ui) return; const int nrSteps = ui->nrStepsControl.getValue(); for (int i = 0; i < nrSteps - 1; ++i) { if (marker == ui->markerWidgets[i]) { double x0 = ui->sContainer.getXOffset(); double w = ui->sContainer. getEffectiveWidth(); double frac = (w > 0 ? (5 + pev->getDelta().x + marker->getPosition().x - x0) / w : MINMARKERVALUE); frac = std::min (std::max (frac, MINMARKERVALUE), 1.0); // Limit to antecessors value for (int j = i - 1; j >= 0; --j) { if (ui->markerWidgets[j]->hasValue()) { if (frac < ui->markerWidgets[j]->getValue()) frac = ui->markerWidgets[j]->getValue(); break; } } // Limit to successors value for (int j = i + 1; j < nrSteps - 1; ++j) { if (ui->markerWidgets[j]->hasValue()) { if (frac > ui->markerWidgets[j]->getValue()) frac = ui->markerWidgets[j]->getValue(); break; } } ui->setMarker (i, frac); ui->setAutoMarkers(); ui->rearrange_controllers(); ui->redrawSContainer(); break; } } } void BChoppr_GUI::listBoxChangedCallback (BEvents::Event* event) { if (!event) return; BEvents::ValueChangeTypedEvent* vev = dynamic_cast*>(event); if (!vev) return; BWidgets::ListBox* lb = (BWidgets::ListBox*) vev->getWidget(); if (!lb) return; Marker* m = (Marker*) lb->getParent(); if (!m) return; BChoppr_GUI* ui = (BChoppr_GUI*)m->getMainWindow(); if (!ui) return; int value = vev->getValue(); switch (value) { case 1: // Auto m->setHasValue (false); ui->enterFrame.hide(); lb->hide(); ui->setAutoMarkers(); ui->rearrange_controllers(); ui->redrawSContainer(); break; case 2: // Manual m->setHasValue (true); ui->enterFrame.hide(); lb->hide(); ui->setAutoMarkers(); ui->rearrange_controllers(); ui->redrawSContainer(); break; case 3: // Enter m->setHasValue (true); ui->recalculateEnterEdit(); if (ui->markerListBox.getAbsolutePosition().x > 420) ui->enterFrame.moveTo (-320, ui->enterFrame.getPosition().y); else ui->enterFrame.moveTo (66, ui->enterFrame.getPosition().y); ui->enterFrame.show(); break; default: return; } } void BChoppr_GUI::markersAutoClickedCallback (BEvents::Event* event) { if (!event) return; BEvents::ValueChangeTypedEvent* vev = dynamic_cast*>(event); if (!vev) return; if (vev->getValue() == 0.0) return; BWidgets::TextButton* tb = (BWidgets::TextButton*) vev->getWidget(); if (!tb) return; BChoppr_GUI* ui = (BChoppr_GUI*)tb->getMainWindow(); if (!ui) return; for (Marker* m : ui->markerWidgets) m->setHasValue (false); ui->setAutoMarkers(); ui->rearrange_controllers(); ui->redrawSContainer(); } // TODO void BChoppr_GUI::buttonClickedCallback (BEvents::Event* event) { if (!event) return; BWidgets::Widget* w = event->getWidget(); if (!w) return; BChoppr_GUI* ui = (BChoppr_GUI*) w->getMainWindow(); if (!ui) return; if (w == &ui->rectButton) { ui->rectButton.setValue (true); ui->sinButton.setValue (false); } else if (w == &ui->sinButton) { ui->rectButton.setValue (false); ui->sinButton.setValue (true); } } // TODO void BChoppr_GUI::sharedDataClickedCallback (BEvents::Event* event) { if (!event) return; BWidgets::Button* widget = dynamic_cast(event->getWidget ()); if (!widget) return; BChoppr_GUI* ui = (BChoppr_GUI*) widget->getMainWindow(); if (!ui) return; double value = 0.0; if (widget->getValue()) { for (size_t i = 0; i < ui->sharedDataButtons.size(); ++i) { if (widget != ui->sharedDataButtons[i]) ui->sharedDataButtons[i]->setValue (false); else (value = i + 1); } } ui->sharedDataDummy.setValue(value); } void BChoppr_GUI::helpButtonClickedCallback (BEvents::Event* event) { char cmd[] = WWW_BROWSER_CMD; char param[] = HELP_URL; char* argv[] = {cmd, param, NULL}; std::cerr << "BChoppr.lv2#GUI: Call " << HELP_URL << " for help.\n"; if (BUtilities::vsystem (argv) == -1) std::cerr << "BChoppr.lv2#GUI: Couldn't fork.\n"; } void BChoppr_GUI::ytButtonClickedCallback (BEvents::Event* event) { char cmd[] = WWW_BROWSER_CMD; char param[] = YT_URL; char* argv[] = {cmd, param, NULL}; std::cerr << "BChoppr.lv2#GUI: Call " << YT_URL << " for tutorial video.\n"; if (BUtilities::vsystem (argv) == -1) std::cerr << "BChoppr.lv2#GUI: Couldn't fork.\n"; } void BChoppr_GUI::stepControlLabelChangedCallback (BEvents::Event* event) { BEvents::ValueChangeTypedEvent* vew = dynamic_cast*>(event); if (!vew) return; if (vew->getWidget()) { BWidgets::EditLabel* l = dynamic_cast(vew->getWidget()); BChoppr_GUI* ui = dynamic_cast(l->getMainWindow()); if (ui) { for (int i = 0; i < MAXSTEPS; ++i) { if (l == ui->stepLevelControlLabel[i]) { double val = ui->stepLevelControl[i]->getValue(); try {val = BUtilities::stof (l->getText());} catch (std::invalid_argument &ia) { fprintf (stderr, "%s\n", ia.what()); l->setText (BUtilities::to_string (val, "%1.2f")); return; } ui->stepLevelControl[i]->setValue (val); l->setText (BUtilities::to_string (ui->stepLevelControl[i]->getValue(), "%1.2f")); break; } else if (l == ui->stepPanControlLabel[i]) { double val = ui->stepLevelControl[i]->getValue(); try {val = BUtilities::stof (l->getText());} catch (std::invalid_argument &ia) { fprintf (stderr, "%s\n", ia.what()); l->setText (BUtilities::to_string (val, "%1.2f")); return; } ui->stepPanControl[i]->setValue (val); l->setText (BUtilities::to_string (ui->stepPanControl[i]->getValue(), "%1.2f")); break; } } } } } void BChoppr_GUI::enterListBoxChangedCallback (BEvents::Event* event) { if (!event) return; BEvents::ValueChangedEvent* vev = (BEvents::ValueChangedEvent*) event; BWidgets::ListBox* lb = (BWidgets::ListBox*) vev->getWidget(); if (!lb) return; Marker* m = (Marker*) lb->getParent(); if (!m) return; BChoppr_GUI* ui = (BChoppr_GUI*)m->getMainWindow(); if (!ui) return; ui->recalculateEnterEdit(); } void BChoppr_GUI::enterOkClickedCallback (BEvents::Event* event) { if (!event) return; BEvents::PointerEvent* pev = (BEvents::PointerEvent*) event; if (pev->getButton() != BDevices::MouseButton::ButtonType::left) return; BWidgets::TextButton* button = (BWidgets::TextButton*)event->getWidget(); if (!button) return; BChoppr_GUI* ui = (BChoppr_GUI*)button->getMainWindow(); if (!ui) return; Marker* marker = (Marker*)ui->markerListBox.getParent(); if (!marker) return; int nrSteps = ui->nrStepsControl.getValue(); for (int i = 0; i < nrSteps - 1; ++i) { if (marker == ui->markerWidgets[i]) { double frac = marker->getValue(); double val = 0.0; try { val = BUtilities::stof (ui->enterEdit.getText()); if (ui->enterPositionComboBox.getValue() == 1.0) { if (ui->enterSequencesComboBox.getValue() == 1.0) frac = val; else frac = val / nrSteps; } else { const double prec = (i > 0 ? ui->markerWidgets[i - 1]->getValue() : 0.0); if (i > 0) ui->markerWidgets[i - 1]->setHasValue (true); if (ui->enterSequencesComboBox.getValue() == 1.0) frac = val + prec; else frac = val / nrSteps + prec; } } catch (std::exception &exc) {std::cerr << "BSchaffl.lv2#GUI: " << exc.what() << "\n";} frac = std::min (std::max (frac, MINMARKERVALUE), 1.0); // Limit to antecessors value for (int j = i - 1; j >= 0; --j) { if (ui->markerWidgets[j]->hasValue()) { if (frac < ui->markerWidgets[j]->getValue()) frac = ui->markerWidgets[j]->getValue(); break; } } // Limit to successors value for (int j = i + 1; j < nrSteps - 1; ++j) { if (ui->markerWidgets[j]->hasValue()) { if (frac > ui->markerWidgets[j]->getValue()) frac = ui->markerWidgets[j]->getValue(); break; } } ui->enterFrame.hide(); ui->markerListBox.hide(); ui->setMarker (i, frac); ui->setAutoMarkers(); ui->rearrange_controllers(); ui->redrawSContainer(); break; } } } bool BChoppr_GUI::init_Stepshape () { double height = stepshapeDisplay.getEffectiveHeight (); pat5 = cairo_pattern_create_linear (0, 0, 0, height); return (pat5 && (cairo_pattern_status (pat5) == CAIRO_STATUS_SUCCESS)); } void BChoppr_GUI::destroy_Stepshape () { //Destroy also mainMonitors cairo data if (pat5 && (cairo_pattern_status (pat5) == CAIRO_STATUS_SUCCESS)) cairo_pattern_destroy (pat5); } void BChoppr_GUI::redrawStepshape () { cairo_surface_t* surface = stepshapeDisplay.getImageSurface (BStyles::Status::normal); cairo_t* cr = cairo_create (stepshapeDisplay.getImageSurface (BStyles::Status::normal)); if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) return; const double width = cairo_image_surface_get_width (surface); const double height = cairo_image_surface_get_height(surface); const BStyles::Color fgColor = stepshapeDisplay.getFgColors()[BStyles::Status::normal]; // Draw background cairo_set_source_rgba (cr, CAIRO_RGBA(BStyles::black)); cairo_rectangle (cr, 0.0, 0.0, width, height); cairo_fill (cr); cairo_set_source_rgba (cr, CAIRO_RGBA (BStyles::grey)); cairo_set_line_width (cr, 1); cairo_move_to (cr, 0, 0.2 * height); cairo_line_to (cr, width, 0.2 * height); cairo_move_to (cr, 0, 0.55 * height); cairo_line_to (cr, width, 0.55 * height); cairo_move_to (cr, 0, 0.9 * height); cairo_line_to (cr, width, 0.9 * height); cairo_move_to (cr, 0.25 * width, 0); cairo_line_to (cr, 0.25 * width, height); cairo_move_to (cr, 0.5 * width, 0); cairo_line_to (cr, 0.5 * width, height); cairo_move_to (cr, 0.75 * width, 0); cairo_line_to (cr, 0.75 * width, height); cairo_stroke (cr); // Draw step shape cairo_set_source_rgba (cr, CAIRO_RGBA(fgColor)); cairo_set_line_width (cr, 3); cairo_move_to (cr, 0, 0.9 * height); cairo_line_to (cr, width * 0.25, 0.9 * height); const float attack = attackControl.getValue(); const float release = releaseControl.getValue(); if (rectButton.getValue()) { if ((attack + release) > 1) { float crosspointX = attack / (attack + release); float crosspointY = crosspointX / attack - (crosspointX - (1 - release)) / release; cairo_line_to (cr, width * 0.25 + crosspointX * width * 0.5, 0.9 * height - 0.7 * height * crosspointY); } else { cairo_line_to (cr, width * 0.25 + attack * width * 0.5, 0.2 * height); cairo_line_to (cr, width * 0.75 - release * width * 0.5, 0.2 * height); } } else if (sinButton.getValue()) { for (double i = 0.0; i <= 1.0; i += 0.025) { double vol = 1.0; if (i < attack) vol = sin (M_PI * (i / attack - 0.5)); if (i > (1 - release)) vol = vol * sin (M_PI * ((1 - i) / release - 0.5)); cairo_line_to (cr, width * (0.25 + 0.5 * i), height * (0.55 - 0.35 * vol)); } } cairo_line_to (cr, width * 0.75, 0.9 * height); cairo_line_to (cr, width, 0.9 * height); cairo_stroke_preserve (cr); cairo_pattern_add_color_stop_rgba (pat5, 0.1, CAIRO_RGB(fgColor), 1); cairo_pattern_add_color_stop_rgba (pat5, 0.9, CAIRO_RGB(fgColor), 0); cairo_set_source (cr, pat5); cairo_line_to(cr, 0, 0.9 * height); cairo_set_line_width (cr, 0); cairo_fill (cr); cairo_destroy (cr); stepshapeDisplay.update (); } void BChoppr_GUI::redrawSContainer () { cairo_surface_t* surface = sContainer.getImageSurface (BStyles::Status::normal); cairoplus_surface_clear (surface); cairo_t* cr = cairo_create (surface); if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) return; double width = cairo_image_surface_get_width(surface); double height = cairo_image_surface_get_height(surface); cairo_pattern_t* pat = cairo_pattern_create_linear (0, 0, 0, height); cairo_pattern_add_color_stop_rgba (pat, 0.0, CAIRO_RGBA (BStyles::black)); cairo_pattern_add_color_stop_rgba (pat, 1.0, 0.0, 0.0, 0.0, 0.5); cairo_rectangle (cr, 0, 0, width, height); cairo_set_source (cr, pat); cairo_fill (cr); cairo_pattern_destroy (pat); for (int i = 0; i < nrStepsControl.getValue() - 1; ++i) { cairo_set_line_width (cr, 1.0); cairo_set_source_rgba (cr, CAIRO_RGBA (BStyles::grey)); cairo_move_to (cr, markerWidgets[i]->getValue() * width, 0); cairo_rel_line_to (cr, 0, 30); cairo_line_to (cr, (i + 1) / nrStepsControl.getValue() * width, 40); cairo_rel_line_to (cr, 0, 145); cairo_stroke (cr); } cairo_destroy (cr); sContainer.update(); } void BChoppr_GUI::redrawButtons () { // rectButton, inactive cairo_surface_t* surface = rectButton.image.getImageSurface (BStyles::Status::normal); cairo_t* cr = cairo_create (surface); if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) return; double width = cairo_image_surface_get_width(surface); double height = cairo_image_surface_get_height(surface); cairoplus_surface_clear(surface); cairo_set_source_rgba (cr, CAIRO_RGBA (BStyles::black)); cairo_rectangle(cr, 0.05 * width, 0.05 * height, 0.9 * width, 0.9 * height); cairo_fill (cr); cairo_set_source_rgba (cr, CAIRO_RGBA (rectButton.getFgColors()[BStyles::Status::inactive])); cairo_set_line_width (cr, 2.0); cairo_rectangle(cr, 0, 0, width, height); cairo_move_to (cr, 0.1 * width, 0.8 * height); cairo_line_to (cr, 0.25 * width, 0.8 * height); cairo_line_to (cr, 0.3 * width, 0.2 * height); cairo_line_to (cr, 0.7 * width, 0.2 * height); cairo_line_to (cr, 0.75 * width, 0.8 * height); cairo_line_to (cr, 0.9 * width, 0.8 * height); cairo_stroke (cr); cairo_destroy (cr); // rectButton, active surface = rectButton.image.getImageSurface (BStyles::Status::active); cr = cairo_create (surface); if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) return; width = cairo_image_surface_get_width(surface); height = cairo_image_surface_get_height(surface); cairoplus_surface_clear(surface); cairo_set_source_rgba (cr, CAIRO_RGBA (BStyles::black)); cairo_rectangle(cr, 0.05 * width, 0.05 * height, 0.9 * width, 0.9 * height); cairo_fill (cr); cairo_set_source_rgba (cr, CAIRO_RGBA (rectButton.getFgColors()[BStyles::Status::normal])); cairo_set_line_width (cr, 2.0); cairo_rectangle(cr, 0, 0, width, height); cairo_move_to (cr, 0.1 * width, 0.8 * height); cairo_line_to (cr, 0.25 * width, 0.8 * height); cairo_line_to (cr, 0.3 * width, 0.2 * height); cairo_line_to (cr, 0.7 * width, 0.2 * height); cairo_line_to (cr, 0.75 * width, 0.8 * height); cairo_line_to (cr, 0.9 * width, 0.8 * height); cairo_stroke (cr); cairo_destroy (cr); // sinButton, inactive surface = sinButton.image.getImageSurface (BStyles::Status::normal); cr = cairo_create (surface); if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) return; width = cairo_image_surface_get_width(surface); height = cairo_image_surface_get_height(surface); cairoplus_surface_clear(surface); cairo_set_source_rgba (cr, CAIRO_RGBA (BStyles::black)); cairo_rectangle(cr, 0.05 * width, 0.05 * height, 0.9 * width, 0.9 * height); cairo_fill (cr); cairo_set_source_rgba (cr, CAIRO_RGBA (sinButton.getFgColors()[BStyles::Status::inactive])); cairo_set_line_width (cr, 2.0); cairo_rectangle(cr, 0, 0, width, height); cairo_move_to (cr, 0.1 * width, 0.8 * height); cairo_line_to (cr, 0.15 * width, 0.8 * height); for (int i = 0; i <= 10; ++i) cairo_line_to (cr, (0.15 + i * 0.03) * width, (0.5 - 0.3 * sin (double (i - 5) * M_PI / 10)) * height); cairo_line_to (cr, 0.55 * width, 0.2 * height); for (int i = 0; i <= 10; ++i) cairo_line_to (cr, (0.55 + i * 0.03) * width, (0.5 - 0.3 * sin (double (i + 5) * M_PI / 10)) * height); cairo_line_to (cr, 0.9 * width, 0.8 * height); cairo_stroke (cr); cairo_destroy (cr); // sinButton, active surface = sinButton.image.getImageSurface (BStyles::Status::active); cr = cairo_create (surface); if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) return; width = cairo_image_surface_get_width(surface); height = cairo_image_surface_get_height(surface); cairoplus_surface_clear(surface); cairo_set_source_rgba (cr, CAIRO_RGBA (BStyles::black)); cairo_rectangle(cr, 0.05 * width, 0.05 * height, 0.9 * width, 0.9 * height); cairo_fill (cr); cairo_set_source_rgba (cr, CAIRO_RGBA (sinButton.getFgColors()[BStyles::Status::normal])); cairo_set_line_width (cr, 2.0); cairo_rectangle(cr, 0, 0, width, height); cairo_move_to (cr, 0.1 * width, 0.8 * height); cairo_line_to (cr, 0.15 * width, 0.8 * height); for (int i = 0; i <= 10; ++i) cairo_line_to (cr, (0.15 + i * 0.03) * width, (0.5 - 0.3 * sin (double (i - 5) * M_PI / 10)) * height); cairo_line_to (cr, 0.55 * width, 0.2 * height); for (int i = 0; i <= 10; ++i) cairo_line_to (cr, (0.55 + i * 0.03) * width, (0.5 - 0.3 * sin (double (i + 5) * M_PI / 10)) * height); cairo_line_to (cr, 0.9 * width, 0.8 * height); cairo_stroke (cr); cairo_destroy (cr); } static LV2UI_Handle instantiate (const LV2UI_Descriptor *descriptor, const char *plugin_uri, const char *bundle_path, LV2UI_Write_Function write_function, LV2UI_Controller controller, LV2UI_Widget *widget, const LV2_Feature *const *features) { PuglNativeView parentWindow = 0; if (strcmp(plugin_uri, BCHOPPR_URI) != 0) { std::cerr << "BChoppr.lv2#GUI: GUI does not support plugin with URI " << plugin_uri << std::endl; return NULL; } for (int i = 0; features[i]; ++i) { if (!strcmp(features[i]->URI, LV2_UI__parent)) parentWindow = (PuglNativeView) features[i]->data; } if (parentWindow == 0) std::cerr << "BChoppr.lv2#GUI: No parent window.\n"; // New instance BChoppr_GUI* ui; try {ui = new BChoppr_GUI (bundle_path, features, parentWindow);} catch (std::exception& exc) { std::cerr << "BChoppr.lv2#GUI: Instantiation failed. " << exc.what () << std::endl; return NULL; } ui->controller = controller; ui->write_function = write_function; *widget = (LV2UI_Widget) ui->getNativeView (); ui->send_record_on(); return (LV2UI_Handle) ui; } static void cleanup(LV2UI_Handle ui) { BChoppr_GUI* pluginGui = (BChoppr_GUI*) ui; if (pluginGui) delete pluginGui; } static void portEvent(LV2UI_Handle ui, uint32_t port_index, uint32_t buffer_size, uint32_t format, const void* buffer) { BChoppr_GUI* pluginGui = (BChoppr_GUI*) ui; if (pluginGui) pluginGui->portEvent(port_index, buffer_size, format, buffer); } static int callIdle (LV2UI_Handle ui) { BChoppr_GUI* pluginGui = (BChoppr_GUI*) ui; if (pluginGui) pluginGui->handleEvents (); return 0; } static const LV2UI_Idle_Interface idle = {callIdle}; static const void* extensionData(const char* uri) { if (!strcmp(uri, LV2_UI__idleInterface)) return &idle; else return NULL; } static const LV2UI_Descriptor guiDescriptor = { BCHOPPR_GUI_URI, instantiate, cleanup, portEvent, extensionData }; // LV2 Symbol Export LV2_SYMBOL_EXPORT const LV2UI_Descriptor *lv2ui_descriptor(uint32_t index) { switch (index) { case 0: return &guiDescriptor; default:return NULL; } } src/BChoppr_GUI.hpp000066400000000000000000000313521515526535400144360ustar00rootroot00000000000000/* B.Choppr * Step Sequencer Effect Plugin * * Copyright (C) 2018 - 2026 by Sven Jähnichen * * 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, 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. */ #ifndef BCHOPPR_GUI_HPP_ #define BCHOPPR_GUI_HPP_ #include #include "BWidgets/BStyles/Status.hpp" #include "BWidgets/BStyles/Style.hpp" #include "BWidgets/BStyles/Theme.hpp" #include "BWidgets/BStyles/Types/Border.hpp" #include "BWidgets/BStyles/Types/ColorMap.hpp" #include "BWidgets/BStyles/Types/Fill.hpp" #include "BWidgets/BStyles/Types/Font.hpp" #include #include #include #include "BWidgets/BUtilities/Dictionary.hpp" #include "BWidgets/BWidgets/Widget.hpp" #include "BWidgets/BWidgets/Window.hpp" #include "BWidgets/BWidgets/Label.hpp" #include "BWidgets/BWidgets/HSwitch.hpp" #include "BWidgets/BWidgets/VSlider.hpp" #include "BWidgets/BWidgets/ValueVSlider.hpp" #include "BWidgets/BWidgets/ValueHSlider.hpp" #include "BWidgets/BWidgets/ValueDial.hpp" #include "BWidgets/BWidgets/ListBox.hpp" #include "BWidgets/BWidgets/ComboBox.hpp" #include "BWidgets/BWidgets/Button.hpp" #include "BWidgets/BWidgets/TextButton.hpp" #include "BWidgets/BWidgets/Knob.hpp" #include "BWidgets/BWidgets/Image.hpp" #include "BWidgets/BWidgets/ImageButton.hpp" #include "Ports.hpp" #include "Marker.hpp" #include "Monitor.hpp" #include "SwingHSlider.hpp" #include "definitions.hpp" #include "Urids.hpp" #ifndef MESSAGENR_ #define MESSAGENR_ enum MessageNr { NO_MSG = 0, JACK_STOP_MSG = 1, MAX_MSG = 1 }; #endif /* MESSAGENR_ */ #define URID(x) (BURID(BCHOPPR_GUI_URI x)) #define BG_FILE "surface.png" #define HELP_URL "https://github.com/sjaehn/BChoppr/blob/master/README.md" #define YT_URL " https://youtu.be/PuzoxiAs-h8" #define WWW_BROWSER_CMD "x-www-browser" const std::string messageStrings[MAX_MSG + 1] = { "", "Jack transport off or halted." }; class BChoppr_GUI : public BWidgets::Window { public: BChoppr_GUI (const char *bundle_path, const LV2_Feature *const *features, PuglNativeView parentWindow); ~BChoppr_GUI (); void portEvent (uint32_t port_index, uint32_t buffer_size, uint32_t format, const void *buffer); void send_record_on (); void send_record_off (); void sendSharedDataNr (); void sendController (const int nr, const float value); virtual void onConfigureRequest (BEvents::Event* event) override; LV2UI_Controller controller; LV2UI_Write_Function write_function; private: float setController (const int nr, const double value); void setMarker (const int markerNr, double value); void setAutoMarkers (); void rearrange_controllers (); void recalculateEnterEdit (); static void valueChangedCallback (BEvents::Event* event); static void markerClickedCallback (BEvents::Event* event); static void markerDraggedCallback (BEvents::Event* event); static void listBoxChangedCallback (BEvents::Event* event); static void markersAutoClickedCallback (BEvents::Event* event); static void buttonClickedCallback (BEvents::Event* event); static void sharedDataClickedCallback (BEvents::Event* event); static void helpButtonClickedCallback (BEvents::Event* event); static void ytButtonClickedCallback (BEvents::Event* event); static void stepControlLabelChangedCallback (BEvents::Event* event); static void enterListBoxChangedCallback (BEvents::Event* event); static void enterOkClickedCallback (BEvents::Event* event); bool init_Stepshape (); void destroy_Stepshape (); void redrawStepshape (); void redrawSContainer (); void redrawButtons (); BWidgets::Image bgImage; BWidgets::Widget rContainer; BWidgets::Image sContainer; BWidgets::HSwitch monitorSwitch; BWidgets::Label monitorLabel; BWidgets::Knob bypassButton; BWidgets::Label bypassLabel; BWidgets::Dial drywetDial; BWidgets::Label drywetLabel; BWidgets::Button helpButton; BWidgets::Button ytButton; BWidgets::ImageButton rectButton; BWidgets::ImageButton sinButton; BWidgets::Image stepshapeDisplay; BWidgets::ValueDial attackControl; BWidgets::Label attackLabel; BWidgets::ValueDial releaseControl; BWidgets::Label releaseLabel; Monitor monitorDisplay; BWidgets::ValueHSlider sequencesperbarControl; BWidgets::Label sequencesperbarLabel; SwingHSlider ampSwingControl; BWidgets::Label ampSwingLabel; SwingHSlider swingControl; BWidgets::Label swingLabel; BWidgets::TextButton markersAutoButton; BWidgets::Label markersAutoLabel; BWidgets::ValueHSlider nrStepsControl; BWidgets::Label nrStepsLabel; BWidgets::Label stepshapeLabel; BWidgets::Label sequencemonitorLabel; BWidgets::Label messageLabel; std::array stepLevelControl; std::array stepPanControl; std::array stepLevelControlLabel; std::array stepPanControlLabel; std::array markerWidgets; BWidgets::ListBox markerListBox; BWidgets::Widget enterFrame; BWidgets::ComboBox enterPositionComboBox; BWidgets::EditLabel enterEdit; BWidgets::ComboBox enterSequencesComboBox; BWidgets::TextButton enterOkButton; std::array sharedDataButtons; BWidgets::HScale sharedDataDummy; cairo_surface_t* surface; cairo_pattern_t* pat5; std::string pluginPath; std::array controllers; float scale; LV2_Atom_Forge forge; BChopprURIs uris; LV2_URID_Map* map; // Definition of styles BStyles::ColorMap fgColors = BStyles::ColorMap {{0.0, 0.75, 0.2, 1.0}, {0.2, 1.0, 0.6, 1.0}, {0.0, 0.5, 0.15, 1.0}, {0.0, 0.0, 0.0, 0.0}}; BStyles::ColorMap bgColors = BStyles::ColorMap {{0.15, 0.15, 0.15, 1.0}, {0.3, 0.3, 0.3, 1.0}, {0.05, 0.05, 0.05, 1.0}, {0.0, 0.0, 0.0, 0.0}}; BStyles::ColorMap txColors = BStyles::ColorMap {{0.0, 1.0, 0.4, 1.0}, {1.0, 1.0, 1.0, 1.0}, {0.0, 0.2, 0.05, 1.0}, {0.0, 0.0, 0.0, 0.0}}; BStyles::ColorMap monColors = BStyles::ColorMap {{0.0, 1.0, 0.4, 1.0}, {0.8, 0.6, 0.2, 1.0}, {0.0, 0.0, 0.0, 1.0}, {0.0, 0.0, 0.0, 0.0}}; BStyles::ColorMap noColors = BStyles::ColorMap {{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}}; BStyles::Border border = BStyles::Border {{fgColors[BStyles::Status::normal], 1.0}, 0.0, 2.0, 0.0}; BStyles::Border btBorder = BStyles::Border (BStyles::Line (bgColors[BStyles::Status::normal].illuminate (BStyles::Color::darkened), 1.0), 0.0, 0.0, 3.0); BStyles::Fill screenBg = BStyles::Fill (BStyles::Color (0.0, 0.0, 0.0, 0.75)); BStyles::Font defaultFont = BStyles::Font ("sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL, 12.0, BStyles::Font::TextAlign::center, BStyles::Font::TextVAlign::middle); BStyles::Font smFont = BStyles::Font ("sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL, 10.0, BStyles::Font::TextAlign::center, BStyles::Font::TextVAlign::middle); BStyles::Theme theme = BStyles::Theme { // rcontainer { URID ("/rcontainer"), BStyles::Style ({{BURID(BSTYLES_STYLEPROPERTY_BORDER_URI), BUtilities::makeAny(border)}}) }, // smonitor { URID ("/smonitor"), BStyles::Style ({ {BURID(BSTYLES_STYLEPROPERTY_BACKGROUND_URI), BUtilities::makeAny(screenBg)}, {BURID(BSTYLES_STYLEPROPERTY_BORDER_URI), BUtilities::makeAny(border)}, {BURID(BSTYLES_STYLEPROPERTY_FGCOLORS_URI), BUtilities::makeAny(monColors)}, {BURID(BSTYLES_STYLEPROPERTY_BGCOLORS_URI), BUtilities::makeAny(BStyles::greys)} }) }, // mmonitor { URID ("/mmonitor"), BStyles::Style ({ {BURID(BSTYLES_STYLEPROPERTY_BACKGROUND_URI), BUtilities::makeAny(BStyles::blackFill)}, {BURID(BSTYLES_STYLEPROPERTY_BORDER_URI), BUtilities::makeAny(BStyles::noBorder)}, {BURID(BSTYLES_STYLEPROPERTY_FGCOLORS_URI), BUtilities::makeAny(monColors)}, {BURID(BSTYLES_STYLEPROPERTY_BGCOLORS_URI), BUtilities::makeAny(BStyles::greys)} }) }, // button { URID ("/button"), BStyles::Style ({ {BURID(BSTYLES_STYLEPROPERTY_BACKGROUND_URI), BUtilities::makeAny({BStyles::Fill(fgColors[BStyles::Status::normal])})}, {BURID(BSTYLES_STYLEPROPERTY_BGCOLORS_URI), BUtilities::makeAny(fgColors)}, {BURID(BSTYLES_STYLEPROPERTY_BORDER_URI), BUtilities::makeAny(btBorder)} }) }, // button/label { URID ("/button/label"), BStyles::Style ({ {BURID(BSTYLES_STYLEPROPERTY_FONT_URI), BUtilities::makeAny(defaultFont)}, {BURID(BSTYLES_STYLEPROPERTY_TXCOLORS_URI), BUtilities::makeAny(bgColors)} }) }, // redbutton { URID ("/redbutton"), BStyles::Style ({ {BURID(BSTYLES_STYLEPROPERTY_BGCOLORS_URI), BUtilities::makeAny(bgColors)}, {BURID(BSTYLES_STYLEPROPERTY_FGCOLORS_URI), BUtilities::makeAny(BStyles::reds)} }) }, // invbutton { URID ("/invbutton"), BStyles::Style ({ {BURID(BSTYLES_STYLEPROPERTY_BACKGROUND_URI), BUtilities::makeAny({BStyles::noFill})}, {BURID(BSTYLES_STYLEPROPERTY_BGCOLORS_URI), BUtilities::makeAny(BStyles::ColorMap{BStyles::invisible})}, }) }, // halobutton { URID ("/halobutton"), BStyles::Style ({ {BURID(BSTYLES_STYLEPROPERTY_BACKGROUND_URI), BUtilities::makeAny({BStyles::noFill})}, {BURID(BSTYLES_STYLEPROPERTY_BGCOLORS_URI), BUtilities::makeAny(noColors)}, {BURID(BSTYLES_STYLEPROPERTY_BORDER_URI), BUtilities::makeAny(BStyles::noBorder)} }) }, // blendbutton { URID ("/blendbutton"), BStyles::Style ({ {BURID(BSTYLES_STYLEPROPERTY_BACKGROUND_URI), BUtilities::makeAny({BStyles::noFill})}, {BURID(BSTYLES_STYLEPROPERTY_BGCOLORS_URI), BUtilities::makeAny(BStyles::ColorMap{BStyles::invisible})}, {BURID(BSTYLES_STYLEPROPERTY_FGCOLORS_URI), BUtilities::makeAny(txColors)} }) }, // label { URID ("/label"), BStyles::Style ({ {BURID(BSTYLES_STYLEPROPERTY_FONT_URI), BUtilities::makeAny(defaultFont)}, {BURID(BSTYLES_STYLEPROPERTY_TXCOLORS_URI), BUtilities::makeAny(txColors)} }) }, // smlabel { URID ("/smlabel"), BStyles::Style ({ {BURID(BSTYLES_STYLEPROPERTY_FONT_URI), BUtilities::makeAny(smFont)}, {BURID(BSTYLES_STYLEPROPERTY_TXCOLORS_URI), BUtilities::makeAny(txColors)} }) }, // dial { URID ("/dial"), BStyles::Style ({ {BURID(BSTYLES_STYLEPROPERTY_BGCOLORS_URI), BUtilities::makeAny(BStyles::darks)}, {BURID(BSTYLES_STYLEPROPERTY_FGCOLORS_URI), BUtilities::makeAny(fgColors)}, {URID ("/dial/label"), BUtilities::makeAny ( BStyles::Style { {BURID(BSTYLES_STYLEPROPERTY_FONT_URI), BUtilities::makeAny(smFont)}, {BURID(BSTYLES_STYLEPROPERTY_TXCOLORS_URI), BUtilities::makeAny(txColors)} } )} }) }, // menu { URID ("/menu"), BStyles::Style ({ {BURID(BSTYLES_STYLEPROPERTY_BACKGROUND_URI), BUtilities::makeAny(BStyles::blackFill)}, {BURID(BSTYLES_STYLEPROPERTY_BORDER_URI), BUtilities::makeAny(border)} }) }, // menu/button { URID ("/menu/button"), BStyles::Style ({ {BURID(BSTYLES_STYLEPROPERTY_BACKGROUND_URI), BUtilities::makeAny({BStyles::Fill(fgColors[BStyles::Status::normal])})}, {BURID(BSTYLES_STYLEPROPERTY_BGCOLORS_URI), BUtilities::makeAny(fgColors)}, {BURID(BSTYLES_STYLEPROPERTY_BORDER_URI), BUtilities::makeAny(btBorder)} }) }, // menu/button/symbol { URID ("/menu/button/symbol"), BStyles::Style ({ {BURID(BSTYLES_STYLEPROPERTY_TXCOLORS_URI), BUtilities::makeAny(bgColors)} }) }, // menu/listbox { URID ("/menu/listbox"), BStyles::Style ({ {BURID(BSTYLES_STYLEPROPERTY_BACKGROUND_URI), BUtilities::makeAny(BStyles::blackFill)}, {BURID(BSTYLES_STYLEPROPERTY_BORDER_URI), BUtilities::makeAny(border)} }) } }; }; #endif /* BCHOPPR_GUI_HPP_ */ src/BWidgets/000077500000000000000000000000001515526535400133705ustar00rootroot00000000000000src/Limit.hpp000066400000000000000000000025361515526535400134550ustar00rootroot00000000000000/* B.Choppr * Step Sequencer Effect Plugin * * Copyright (C) 2018 - 2021 by Sven Jähnichen * * 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, 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. */ #ifndef LIMIT_HPP_ #define LIMIT_HPP_ #include struct Limit { float min; float max; float step; float validate (float value) const { if (max <= min) return min; if (value <= min) return min; if (value >= max) return max; if (step == 0) return value; float newValue = (step > 0 ? min + round ((value - min) / step) * step : max - round ((max - value) / step) * step); return (newValue >= min ? (newValue <= max ? newValue : max) : min); } }; #endif /* LIMIT_HPP_ */ src/Marker.hpp000066400000000000000000000244501515526535400136170ustar00rootroot00000000000000/* B.Choppr * Step Sequencer Effect Plugin * * Copyright (C) 2018 - 2022 by Sven Jähnichen * * 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, 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. */ #ifndef MARKER_HPP_ #define MARKER_HPP_ #include "BWidgets/BStyles/Types/Color.hpp" #include "BWidgets/BWidgets/Widget.hpp" #include "BWidgets/BWidgets/Supports/Validatable.hpp" #include "BWidgets/BWidgets/Supports/ValueableTyped.hpp" #include "BWidgets/BWidgets/Supports/ValidatableRange.hpp" #include "BWidgets/BWidgets/Supports/ValueTransferable.hpp" #include "BWidgets/BWidgets/Supports/Clickable.hpp" #include "BWidgets/BWidgets/Supports/Draggable.hpp" #include "BWidgets/BWidgets/Supports/Scrollable.hpp" #include "BWidgets/BEvents/WheelEvent.hpp" #include "BWidgets/BWidgets/Label.hpp" #include "BWidgets/BUtilities/to_string.hpp" #ifndef DEFAULT_MARKER_WIDTH #define DEFAULT_MARKER_WIDTH 10.0 #endif #ifndef DEFAULT_MARKER_HEIGHT #define DEFAULT_MARKER_HEIGHT 20.0 #endif /** * @brief A %Marker is a Widget that draws a visual marker and supports * @c double values (including range validation and value transfer). I also * supports but NOT handles (!) pointer clicking, dragging or wheel * scrolling. Thus, the respective events need to be controlled externally * (e. g., via callbacks). */ class Marker : public BWidgets::Widget, public BWidgets::ValueableTyped, public BWidgets::ValidatableRange, public BWidgets::ValueTransferable, public BWidgets::Clickable, public BWidgets::Draggable, public BWidgets::Scrollable { protected: bool hasValue_; public: /** * @brief Constructs a default %Marker object. * */ Marker (); /** * @brief Constructs a default %Marker object. * @param URID URID. * @param title %Widget title. */ Marker (const uint32_t urid, const std::string& title); /** * @brief Creates a %Marker with default size. * @param value Initial value. * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ Marker (const double value, const double min, const double max, double step = 0.0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %Marker. * @param x %Marker X origin coordinate. * @param y %Marker Y origin coordinate. * @param width %Marker width. * @param height %Marker height. * @param value Initial value. * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param transferFunc Optinonal, function to transfer a value from an * external context to the internal context. * @param reTransferFunc Optinonal, function to transfer a value from the * internal context to an external context. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Marker title (default = ""). */ Marker (const double x, const double y, const double width, const double height, const double value, const double min, const double max, double step = 0.0, std::function transferFunc = ValueTransferable::noTransfer, std::function reTransferFunc = ValueTransferable::noTransfer, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %Marker. * @return Pointer to the new %Marker. * * Creates a clone of this %Marker by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %Marker. * @param that Other %Marker. * * Copies all properties from another %Marker. But NOT its linkage. */ void copy (const Marker* that); /** * @brief Defines if the marker has got a defined value or not. * @param hasValue True if the marker has got a defined value, otherwise * false. */ void setHasValue (bool hasValue = true); /** * @brief Checks if the marker has got a defined value or not. * @return True if the marker has got a defined value, otherwise false. */ bool hasValue () const; /** * @brief Method to be called following an object state change. */ virtual void update () override; protected: /** * @brief Unclipped draw a %Marker to the surface. */ virtual void draw () override; /** * @brief Clipped draw a %Marker to the surface. * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped draw a %Marker to the surface. * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline Marker::Marker () : Marker (0.0, 0.0, DEFAULT_MARKER_WIDTH, DEFAULT_MARKER_HEIGHT, 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, BUTILITIES_URID_UNKNOWN_URID, "") { } inline Marker::Marker (const uint32_t urid, const std::string& title) : Marker (0.0, 0.0, DEFAULT_MARKER_WIDTH, DEFAULT_MARKER_HEIGHT, 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline Marker::Marker (double value, const double min, const double max, double step, uint32_t urid, std::string title) : Marker (0.0, 0.0, DEFAULT_MARKER_WIDTH, DEFAULT_MARKER_HEIGHT, value, min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline Marker::Marker (const double x, const double y, const double width, const double height, double value, const double min, const double max, double step, std::function transferFunc, std::function reTransferFunc, uint32_t urid, std::string title) : Widget (x, y, width, height, urid, title), ValueableTyped (value), ValidatableRange (min, max, step), ValueTransferable (transferFunc, reTransferFunc), Clickable(), Draggable(), Scrollable(), hasValue_ (false) { } inline BWidgets::Widget* Marker::clone () const { BWidgets::Widget* f = new Marker (urid_, title_); f->copy (this); return f; } inline void Marker::copy (const Marker* that) { hasValue_ = that->hasValue_; ValueTransferable::operator= (*that); ValidatableRange::operator= (*that); ValueableTyped::operator= (*that); Scrollable::operator= (*that); Draggable::operator= (*that); Clickable::operator= (*that); Widget::copy (that); } inline void Marker::setHasValue (const bool hasValue) { if (hasValue != hasValue_) { hasValue_ = hasValue; update(); } } inline bool Marker::hasValue () const { return hasValue_; } inline void Marker::update () { BWidgets::Label* f = dynamic_cast(focus_); if (f) { f->setText (getTitle() + ": " + (hasValue() ? std::to_string (this->getValue()) : "Auto")); f->resize(); } Widget::update(); } inline void Marker::draw () { draw (0, 0, getWidth(), getHeight()); } inline void Marker::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void Marker::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; // Draw super class widget elements first Widget::draw (area); double heff = getEffectiveHeight (); double weff = getEffectiveWidth (); // Draw knob // only if minimum requirements satisfied if ((getHeight () >= 1) && (getWidth () >= 1)) { cairoplus_surface_clear (cairoSurface()); cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); // Colors uses within this method BStyles::Color cLo = getBgColors()[getStatus()].illuminate (!hasValue_ ? BStyles::Color::normalLighted : 2.0 * BStyles::Color::illuminated); BStyles::Color cMid = getBgColors()[getStatus()].illuminate (0.5 * (BStyles::Color::normalLighted + BStyles::Color::illuminated)); BStyles::Color cHi = getBgColors()[getStatus()].illuminate (BStyles::Color::illuminated); cairo_set_line_width (cr, 0.0); cairo_set_source_rgba (cr, CAIRO_RGBA (cMid)); cairo_move_to (cr, 0.5 * weff, 0); cairo_line_to (cr, 0, 0.25 * heff); cairo_line_to (cr, 0, heff); cairo_line_to (cr, weff, heff); cairo_line_to (cr, weff, 0.25 * heff); cairo_close_path (cr); cairo_fill (cr); cairo_set_line_width (cr, 1.0); cairo_set_source_rgba (cr, CAIRO_RGBA (cLo)); cairo_move_to (cr, 0.25 * weff, 0.5 * heff); cairo_line_to (cr, 0.75 * weff, 0.5 * heff); cairo_move_to (cr, 0.25 * weff, 0.6 * heff); cairo_line_to (cr, 0.75 * weff, 0.6 * heff); cairo_move_to (cr, 0.25 * weff, 0.7 * heff); cairo_line_to (cr, 0.75 * weff, 0.7 * heff); cairo_stroke (cr); cairo_set_line_width (cr, 2.0); cairo_set_source_rgba (cr, CAIRO_RGBA (cHi)); cairo_move_to (cr, 0, heff); cairo_line_to (cr, weff, heff); cairo_line_to (cr, weff, 0.25 * heff); cairo_stroke (cr); } cairo_destroy (cr); } } #endif /* MARKER_HPP_ */ src/Message.cpp000066400000000000000000000035361515526535400137570ustar00rootroot00000000000000/* B.Choppr * Step Sequencer Effect Plugin * * Copyright (C) 2018, 2019 by Sven Jähnichen * * 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, 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. */ #include "Message.hpp" Message::Message () : messageBits (0), scheduled (true) {} void Message::clearMessages () { messageBits = 0; scheduled = true; } void Message::setMessage (MessageNr messageNr) { if ((messageNr > NO_MSG) && (messageNr <= MAX_MSG) && (!isMessage (messageNr))) { messageBits = messageBits | (1 << (messageNr - 1)); scheduled = true; } } void Message::deleteMessage (MessageNr messageNr) { if ((messageNr > NO_MSG) && (messageNr <= MAX_MSG) && (isMessage (messageNr))) { messageBits = messageBits & (~(1 << (messageNr - 1))); scheduled = true; } } bool Message::isMessage (MessageNr messageNr) { if ((messageNr > NO_MSG) && (messageNr <= MAX_MSG)) return ((messageBits & (1 << (messageNr - 1))) != 0); else if (messageNr == NO_MSG) return (messageBits == 0); else return false; } MessageNr Message::loadMessage () { scheduled = false; for (int i = NO_MSG + 1; i <= MAX_MSG; ++i) { MessageNr messageNr = MessageNr (i); if (isMessage (messageNr)) return messageNr; } return NO_MSG; } bool Message::isScheduled () {return scheduled;} src/Message.hpp000066400000000000000000000024311515526535400137550ustar00rootroot00000000000000/* B.Choppr * Step Sequencer Effect Plugin * * Copyright (C) 2018, 2019 by Sven Jähnichen * * 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, 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. */ #ifndef MESSAGE_HPP_ #define MESSAGE_HPP_ #include #ifndef MESSAGENR_ #define MESSAGENR_ enum MessageNr { NO_MSG = 0, JACK_STOP_MSG = 1, MAX_MSG = 1 }; #endif /* MESSAGENR_ */ class Message { public: Message (); void clearMessages (); void setMessage (MessageNr messageNr); void deleteMessage (MessageNr messageNr); bool isMessage (MessageNr messageNr); MessageNr loadMessage (); bool isScheduled (); private: uint32_t messageBits; bool scheduled; }; #endif /* MESSAGE_HPP_*/ src/Monitor.hpp000066400000000000000000000334041515526535400140240ustar00rootroot00000000000000/* B.Choppr * Step Sequencer Effect Plugin * * Copyright (C) 2018 - 2022 by Sven Jähnichen * * 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, 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. */ #ifndef MONITOR_HPP_ #define MONITOR_HPP_ #include "BWidgets/BStyles/Status.hpp" #include "BWidgets/BStyles/Types/Color.hpp" #include "BWidgets/BWidgets/Widget.hpp" #include "BWidgets/BWidgets/Supports/Clickable.hpp" #include "BWidgets/BWidgets/Supports/Draggable.hpp" #include "BWidgets/BWidgets/Supports/Scrollable.hpp" #include "BWidgets/BEvents/WheelEvent.hpp" #include "BWidgets/BWidgets/Label.hpp" #include "BWidgets/BUtilities/to_string.hpp" #include "definitions.hpp" #include #include #ifndef DEFAULT_MONITOR_WIDTH #define DEFAULT_MONITOR_WIDTH 10.0 #endif #ifndef DEFAULT_MONITOR_HEIGHT #define DEFAULT_MONITOR_HEIGHT 20.0 #endif /** * @brief A %Monitor is a Widget that draws a visual content. I also * supports and handles pointer clicking, dragging or wheel scrolling. * (e. g., via callbacks). */ class Monitor : public BWidgets::Widget, public BWidgets::Clickable, public BWidgets::Draggable, public BWidgets::Scrollable { protected: std::array data_; std::vector steps_; uint32_t horizon_; double scale_; public: /** * @brief Constructs a default %Monitor object. * */ Monitor (); /** * @brief Constructs a default %Monitor object. * @param URID URID. * @param title %Widget title. */ Monitor (const uint32_t urid, const std::string& title); /** * @brief Creates a %Monitor. * @param x %Monitor X origin coordinate. * @param y %Monitor Y origin coordinate. * @param width %Monitor width. * @param height %Monitor height. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Monitor title (default = ""). */ Monitor (const double x, const double y, const double width, const double height, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %Monitor. * @return Pointer to the new %Monitor. * * Creates a clone of this %Monitor by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %Monitor. * @param that Other %Monitor. * * Copies all properties from another %Monitor. But NOT its linkage. */ void copy (const Monitor* that); /** * @brief Method called upon pointer drag. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a pointer drag. Changes the value and calls the widget static callback * function. */ virtual void onPointerDragged (BEvents::Event* event) override; /** * @brief Method called upon (mouse) wheel scroll. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a (mouse) wheel scroll. Increases or decreases the value and calls the * widget static callback function. */ virtual void onWheelScrolled (BEvents::Event* event) override; /** * @brief Set the position of the steps * * @param steps Vector containing step positions within the range [0,1] */ virtual void setSteps (const std::vector& steps); /** * @brief Pushes raw data to the monitor to be displayed. * * @param data Raw data. */ virtual void pushData (const std::vector& data); protected: /** * @brief Unclipped draw a %Monitor to the surface. */ virtual void draw () override; /** * @brief Clipped draw a %Monitor to the surface. * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped draw a %Monitor to the surface. * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline Monitor::Monitor () : Monitor (0.0, 0.0, DEFAULT_MONITOR_WIDTH, DEFAULT_MONITOR_HEIGHT, BUTILITIES_URID_UNKNOWN_URID, "") { } inline Monitor::Monitor (const uint32_t urid, const std::string& title) : Monitor (0.0, 0.0, DEFAULT_MONITOR_WIDTH, DEFAULT_MONITOR_HEIGHT, urid, title) { } inline Monitor::Monitor (const double x, const double y, const double width, const double height, uint32_t urid, std::string title) : Widget (x, y, width, height, urid, title), Clickable(), Draggable(), Scrollable(), data_(), steps_(), horizon_(0), scale_(1.0) { } inline BWidgets::Widget* Monitor::clone () const { BWidgets::Widget* f = new Monitor (urid_, title_); f->copy (this); return f; } inline void Monitor::copy (const Monitor* that) { data_ = that->data_; steps_ = that->steps_; horizon_ = that->horizon_; scale_ = that->scale_; Scrollable::operator= (*that); Draggable::operator= (*that); Clickable::operator= (*that); Widget::copy (that); } inline void Monitor::onPointerDragged (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast (event); if (!pev) return; scale_ += 0.01 * pev->getDelta().y * scale_; if (scale_ < 0.0001f) scale_ = 0.0001f; update (); } inline void Monitor::onWheelScrolled (BEvents::Event* event) { BEvents::WheelEvent* wev = dynamic_cast (event); if (!wev) return; scale_ += 0.1 * wev->getDelta().y * scale_; if (scale_ < 0.0001f) scale_ = 0.0001f; update (); } inline void Monitor::setSteps (const std::vector& steps) { if (steps_ != steps) { steps_ = steps; update(); } } inline void Monitor::pushData (const std::vector& data) { for (const BChopprNotifications& note : data) { int pos = std::min (std::max (note.position, 0.0f), MONITORBUFFERSIZE - 1.0f); data_[pos].input1 = note.input1; data_[pos].input2 = note.input2; data_[pos].output1 = note.output1; data_[pos].output2 = note.output2; horizon_ = pos; } update(); } inline void Monitor::draw () { draw (0, 0, getWidth(), getHeight()); } inline void Monitor::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void Monitor::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; // Draw super class widget elements first Widget::draw (area); const double x0 = getXOffset(); const double y0 = getYOffset(); const double heff = getEffectiveHeight (); const double weff = getEffectiveWidth (); // Draw monitor // only if minimum requirements satisfied if ((heff >= 10) && (heff >= 10)) { cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); // Colors uses within this method const BStyles::Color inColor = getFgColors()[BStyles::Status::normal]; const BStyles::Color outColor = getFgColors()[BStyles::Status::active]; const BStyles::Color bgColor = getBgColors()[BStyles::Status::normal]; // Create individual surfaces for all 4 data blocks cairo_surface_t* surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, getWidth(), getHeight()); cairo_t* cr1 = cairo_create (surface); cairo_t* cr2 = cairo_create (surface); cairo_t* cr3 = cairo_create (surface); cairo_t* cr4 = cairo_create (surface); // Create patterns cairo_pattern_t* pat1 = cairo_pattern_create_linear (0, y0 + heff, 0, y0); cairo_pattern_add_color_stop_rgba (pat1, 0.1, CAIRO_RGB (inColor), 1); cairo_pattern_add_color_stop_rgba (pat1, 0.6, CAIRO_RGB (inColor), 0); cairo_pattern_t* pat2 = cairo_pattern_create_linear (0, y0 + heff, 0, y0); cairo_pattern_add_color_stop_rgba (pat2, 0.1, CAIRO_RGB (outColor), 1); cairo_pattern_add_color_stop_rgba (pat2, 0.6, CAIRO_RGB (outColor), 0); cairo_pattern_t* pat3 = cairo_pattern_create_linear (0, y0, 0, y0 + heff); cairo_pattern_add_color_stop_rgba (pat3, 0.1, CAIRO_RGB (inColor), 1); cairo_pattern_add_color_stop_rgba (pat3, 0.6, CAIRO_RGB (inColor), 0); cairo_pattern_t* pat4 = cairo_pattern_create_linear (0, y0, 0, y0 + heff); cairo_pattern_add_color_stop_rgba (pat4, 0.1, CAIRO_RGB (outColor), 1); cairo_pattern_add_color_stop_rgba (pat4, 0.6, CAIRO_RGB (outColor), 0); // Draw grid cairo_set_line_width (cr, 1); cairo_set_source_rgba (cr, CAIRO_RGBA (bgColor)); cairo_move_to (cr, x0, y0 + 0.1 * heff); cairo_line_to (cr, x0 + weff, y0 + 0.1 * heff); cairo_move_to (cr, x0, y0 + 0.5 * heff); cairo_line_to (cr, x0 + weff, y0 + 0.5 * heff); cairo_move_to (cr, x0, x0 + 0.9 * heff); cairo_line_to (cr, x0 + weff, y0 + 0.9 * heff); // Draw steps for (const double s : steps_) { cairo_move_to (cr, x0 + s * weff, y0); cairo_line_to (cr, x0 + s * weff, y0 + heff); } cairo_stroke (cr); // Draw curves // Draw input (cr1, cr3) and output (cr2, cr4) curves cairo_move_to (cr1, x0, y0 + heff * (0.5 + 0.4 * std::min (std::max (data_[0].input2 / scale_, 0.0), 1.0))); cairo_move_to (cr2, x0, y0 + heff * (0.5 + 0.4 * std::min (std::max (data_[0].output2 / scale_, 0.0), 1.0))); cairo_move_to (cr3, x0, y0 + heff * (0.5 - 0.4 * std::min (std::max (data_[0].input1 / scale_, 0.0), 1.0))); cairo_move_to (cr4, x0, y0 + heff * (0.5 - 0.4 * std::min (std::max (data_[0].output1 / scale_, 0.0), 1.0))); for (int i = 0; i < MONITORBUFFERSIZE; ++i) { double pos = ((double) i) / (MONITORBUFFERSIZE - 1.0f); cairo_line_to (cr1, x0 + pos * weff, y0 + heff * (0.5 + 0.4 * std::min (std::max (data_[i].input2 / scale_, 0.0), 1.0))); cairo_line_to (cr2, x0 + pos * weff, y0 + heff * (0.5 + 0.4 * std::min (std::max (data_[i].output2 / scale_, 0.0), 1.0))); cairo_line_to (cr3, x0 + pos * weff, y0 + heff * (0.5 - 0.4 * std::min (std::max (data_[i].input1 / scale_, 0.0), 1.0))); cairo_line_to (cr4, x0 + pos * weff, y0 + heff * (0.5 - 0.4 * std::min (std::max (data_[i].output1 / scale_, 0.0), 1.0))); } // Visualize input (cr, cr3) and output (cr2, cr4) curves cairo_set_source_rgba (cr1, CAIRO_RGB (inColor), 1.0); cairo_set_line_width (cr1, 3); cairo_set_source_rgba (cr2, CAIRO_RGB (outColor), 1.0); cairo_set_line_width (cr2, 3); cairo_stroke_preserve (cr1); cairo_stroke_preserve (cr2); cairo_set_source_rgba (cr3, CAIRO_RGB (inColor), 1.0); cairo_set_line_width (cr3, 3); cairo_set_source_rgba (cr4, CAIRO_RGB (outColor), 1.0); cairo_set_line_width (cr4, 3); cairo_stroke_preserve (cr3); cairo_stroke_preserve (cr4); // Visualize input (cr, cr3) and output (cr2, cr4) areas under the curves cairo_line_to (cr1, x0 + weff, y0 + 0.5 * heff); cairo_line_to (cr1, x0, y0 + 0.5 * heff); cairo_close_path (cr1); cairo_line_to (cr2, x0 + weff, y0 + 0.5 * heff); cairo_line_to (cr2, x0, y0 + 0.5 * heff); cairo_close_path (cr2); cairo_set_source (cr1, pat1); cairo_set_line_width (cr1, 0); cairo_set_source (cr2, pat2); cairo_set_line_width (cr2, 0); cairo_fill (cr1); cairo_fill (cr2); cairo_line_to (cr3, x0 + weff, y0 + 0.5 * heff); cairo_line_to (cr3, x0, y0 + 0.5 * heff); cairo_close_path (cr3); cairo_line_to (cr4, x0 + weff, y0 + 0.5 * heff); cairo_line_to (cr4, x0, y0 + 0.5 * heff); cairo_close_path (cr4); cairo_set_source (cr3, pat3); cairo_set_line_width (cr3, 0); cairo_set_source (cr4, pat4); cairo_set_line_width (cr4, 0); cairo_fill (cr3); cairo_fill (cr4); // Draw fade out double r = double (horizon_) / (MONITORBUFFERSIZE - 1.0); if (x0 + r * weff > x0 + weff - 63) r -= 1.0; cairo_pattern_t* pat6 = cairo_pattern_create_linear (x0 + r * weff, y0, x0 + r * weff + 63, y0); if (cairo_pattern_status (pat6) == CAIRO_STATUS_SUCCESS) { cairo_pattern_add_color_stop_rgba (pat6, 0.0, CAIRO_RGBA(BStyles::black)); cairo_pattern_add_color_stop_rgba (pat6, 1.0, CAIRO_RGBA(BStyles::invisible)); cairo_set_line_width (cr1, 0.0); cairo_set_source (cr1, pat6); cairo_rectangle (cr1, x0 + r * weff, y0, 63, y0 + heff); cairo_fill (cr1); cairo_pattern_destroy (pat6); } // Draw horizon line cairo_set_source_rgba (cr1, CAIRO_RGBA(BStyles::white)); cairo_set_line_width (cr1, 1); cairo_move_to (cr1, x0 + r * weff, y0); cairo_line_to (cr1, x0 + r * weff, y0 + heff); cairo_stroke (cr1); // Write content to widget surface cairo_set_source_surface (cr, surface, 0, 0); cairo_paint (cr); // Destroy patterns cairo_pattern_destroy (pat4); cairo_pattern_destroy (pat3); cairo_pattern_destroy (pat2); cairo_pattern_destroy (pat1); // Destroy contents and surface cairo_destroy (cr4); cairo_destroy (cr3); cairo_destroy (cr2); cairo_destroy (cr1); cairo_surface_destroy (surface); } cairo_destroy (cr); } } #endif /* MONITOR_HPP_ */ src/Ports.hpp000066400000000000000000000025471515526535400135100ustar00rootroot00000000000000/* B.Choppr * Step Sequencer Effect Plugin * * Copyright (C) 2018 - 2026 by Sven Jähnichen * * 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, 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. */ #ifndef PORTS_HPP_ #define PORTS_HPP_ #include #include #include #include enum BChopprPortIndex { Control_1 = 0, Control_2 = 1, Notify = 2, AudioPorts = 3, AudioIn_1 = 3, AudioIn_2 = 4, AudioOut_1 = 5, AudioOut_2 = 6, NrAudioPorts = 4, Controllers = 7, Bypass = 7, DryWet = 8, Blend = 9, Attack = 10, Release = 11, SequencesPerBar = 12, AmpSwing = 13, Swing = 14, NrSteps = 15, StepPositions = 16, StepLevels = 31, StepPans = 47, NrControllers = 56 }; #endif /* PORTS_HPP_ */ src/SharedData.hpp000066400000000000000000000042151515526535400143730ustar00rootroot00000000000000/* B.Choppr * Step Sequencer Effect Plugin * * Copyright (C) 2018 - 2021 Sven Jähnichen * * 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, 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. */ #ifndef SHAREDDATA_HPP #define SHAREDDATA_HPP #include "definitions.hpp" #include "Ports.hpp" #include #include class BChoppr; // Forward declaration class SharedData { protected: float controllers_[NrControllers]; BChoppr* instances_[MAXINSTANCES]; public: SharedData () : controllers_ {0}, instances_ {0} {} bool isLinked (const BChoppr* inst) const {return std::find (instances_, instances_ + MAXINSTANCES, inst) != instances_ + MAXINSTANCES;} bool empty() const { for (int i = 0; i < MAXINSTANCES ; ++i) { if (instances_[i] != nullptr) return false; } return true; } void link (BChoppr* inst) { if (isLinked (inst)) return; BChoppr** it = std::find (instances_, instances_ + MAXINSTANCES, nullptr); if (it != instances_ + MAXINSTANCES) *it = inst; } void unlink (BChoppr* inst) { BChoppr** it = std::find (instances_, instances_ + MAXINSTANCES, inst); if (it != instances_ + MAXINSTANCES) *it = nullptr; } void set (const int nr, const float value) {controllers_[nr] = value;} float get (const int nr) const {return controllers_[nr];} }; #endif /* SHAREDDATA_HPP */ src/SwingHSlider.hpp000066400000000000000000000236311515526535400147400ustar00rootroot00000000000000/* B.Choppr * Step Sequencer Effect Plugin * * Copyright (C) 2018 - 2022 by Sven Jähnichen * * 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 . */ #ifndef SWINGHSLIDER_HPP_ #define SWINGHSLIDER_HPP_ #include "BWidgets/BUtilities/to_string.hpp" #include "BWidgets/BWidgets/ValueHSlider.hpp" #include #include #include #include #ifndef DEFAULT_SWINGHSLIDER_WIDTH #define DEFAULT_SWINGHSLIDER_WIDTH 80.0 #endif #ifndef DEFAULT_SWINGHSLIDER_HEIGHT #define DEFAULT_SWINGHSLIDER_HEIGHT 40.0 #endif /** * @brief A ValueHSlider with its center as the base. */ class SwingHSlider : public BWidgets::ValueHSlider { public: static std::string ratioToString (const double& x); static double stringToRatio (const std::string& s); /** * @brief Constructs a default %SwingHSlider object. */ SwingHSlider (); /** * @brief Constructs a default %SwingHSlider object. * @param URID URID. * @param title %Widget title. */ SwingHSlider (const uint32_t urid, const std::string& title); /** * @brief Creates a %SwingHSlider with default size. * @param value Initial value. * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ SwingHSlider (const double value, const double min, const double max, double step = 0.0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %SwingHSlider. * @param x %SwingHSlider X origin coordinate. * @param y %SwingHSlider Y origin coordinate. * @param width %SwingHSlider width. * @param height %SwingHSlider height. * @param value Initial value. * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param transferFunc Optinonal, function to transfer a value from an * external context to the internal context. * @param reTransferFunc Optinonal, function to transfer a value from the * internal context to an external context. * @param displayFunc Optional, function to convert the value to a string * which will be displayed as a label. * @param reDisplayFunc Optional, function to convert the string from * the (edited) label to the value. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %SwingHSlider title (default = ""). * * The optional parameters @a displayFunc and @a reDisplayFunc can be used * as powerful tools to visualize the value in any way (including units, * prefixes, postfixes, text substitution, ...) and to parse it. By * default, %SwingHSlider displays the value via @c valueToString() and * thus shows a decimal floating point representation with up to 3 digits * after the point. */ SwingHSlider (const double x, const double y, const double width, const double height, const double value, const double min, const double max, double step = 0.0, std::function transferFunc = ValueTransferable::noTransfer, std::function reTransferFunc = ValueTransferable::noTransfer, std::function displayFunc = valueToString, std::function reDisplayFunc = stringToValue, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %SwingHSlider. * @return Pointer to the new %SwingHSlider. * * Creates a clone of this %SwingHSlider by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %SwingHSlider. * @param that Other %SwingHSlider. * * Copies all properties from another %SwingHSlider. But NOT its linkage. */ void copy (const SwingHSlider* that); protected: /** * @brief Unclipped draw a %SwingHSlider to the surface. */ virtual void draw () override; /** * @brief Clipped draw a %SwingHSlider to the surface. * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped draw a %SwingHSlider to the surface. * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline SwingHSlider::SwingHSlider () : SwingHSlider ( 0.0, 0.0, BWIDGETS_DEFAULT_VALUEHSLIDER_WIDTH, BWIDGETS_DEFAULT_VALUEHSLIDER_HEIGHT, 1.0, 0.0, 2.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, valueToString, stringToValue, BUTILITIES_URID_UNKNOWN_URID, "") { } inline SwingHSlider::SwingHSlider (const uint32_t urid, const std::string& title) : SwingHSlider (0.0, 0.0, BWIDGETS_DEFAULT_VALUEHSLIDER_WIDTH, BWIDGETS_DEFAULT_VALUEHSLIDER_HEIGHT, 1.0, 0.0, 2.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, valueToString, stringToValue, urid, title) { } inline SwingHSlider::SwingHSlider (double value, const double min, const double max, double step, uint32_t urid, std::string title) : SwingHSlider (0.0, 0.0, BWIDGETS_DEFAULT_VALUEHSLIDER_WIDTH, BWIDGETS_DEFAULT_VALUEHSLIDER_HEIGHT, value, min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, valueToString, stringToValue, urid, title) { } inline SwingHSlider::SwingHSlider (const double x, const double y, const double width, const double height, double value, const double min, const double max, double step, std::function transferFunc, std::function reTransferFunc, std::function displayFunc, std::function reDisplayFunc, uint32_t urid, std::string title) : ValueHSlider (x, y, width, height, value, min, max, step, transferFunc, reTransferFunc, displayFunc, reDisplayFunc, urid, title) { } inline BWidgets::Widget* SwingHSlider::clone () const { Widget* f = new SwingHSlider (urid_, title_); f->copy (this); return f; } inline void SwingHSlider::copy (const SwingHSlider* that) { SwingHSlider::copy (that); } inline void SwingHSlider::draw () { draw (0, 0, getWidth(), getHeight()); } inline void SwingHSlider::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void SwingHSlider::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; // Draw super class widget elements first Widget::draw (area); // Draw only if minimum requirements satisfied if ((getHeight () >= 1) && (getWidth () >= 1)) { cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); const BStyles::Color fgColor = getFgColors()[getStatus()]; const BStyles::Color bgColor = getBgColors()[getStatus()]; const double rval = getRatioFromValue (getValue()); if (step_ >= 0.0) drawHBar(cr, scale_.getX(), scale_.getY(), scale_.getWidth(), scale_.getHeight(), 0.5, rval, fgColor, bgColor); else drawHBar(cr, scale_.getX(), scale_.getY(), scale_.getWidth(), scale_.getHeight(), 1.0 - rval, 0.5, fgColor, bgColor); if (step_ >= 0.0) drawKnob (cr, scale_.getX() + rval * scale_.getWidth(), scale_.getY() + 0.5 * scale_.getHeight() + 0.5, scale_.getHeight() - 1.0, 1.0, bgColor, bgColor); else drawKnob (cr, scale_.getX() + (1.0 - rval) * scale_.getWidth(), scale_.getY() + 0.5 * scale_.getHeight() + 0.5, scale_.getHeight() - 1.0, 1.0, bgColor, bgColor); } cairo_destroy (cr); } } inline std::string SwingHSlider::ratioToString (const double& x) { if (x == 0) return "0"; std::string sig = (x < 0 ? "-" : ""); const double value = (fabs(x) < 1.0 ? 1 / fabs(x) : fabs(x)); const int digitsPre = (value <= 1.0 ? 1 : log10 (value) + 1); const int digitsPost = std::max (4 - digitsPre, 0); if (value == 1) return sig + "1 : 1"; if (fabs(x) > 1) return sig + BUtilities::to_string(value, "%1." + std::to_string(digitsPost) + "f") + " : 1"; return sig + "1 : " + BUtilities::to_string(value, "%1." + std::to_string(digitsPost) + "f"); } inline double SwingHSlider::stringToRatio (const std::string& s) { const size_t colonPos = s.find(":"); if (colonPos == std::string::npos) return std::stod (s); const std::string pre = s.substr(0, colonPos); const std::string post = s.substr (colonPos + 1, std::string::npos); return std::stod(pre) / std::stod(post); } #endif /* SWINGHSLIDER_HPP_ */ src/Urids.hpp000066400000000000000000000064721515526535400134700ustar00rootroot00000000000000/* B.Choppr * Step Sequencer Effect Plugin * * Copyright (C) 2018 - 2026 by Sven Jähnichen * * 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, 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. */ #ifndef URIDS_HPP_ #define URIDS_HPP_ #include #include #include #include #include "definitions.hpp" struct BChopprURIs { LV2_URID atom_Float; LV2_URID atom_Int; LV2_URID atom_Object; LV2_URID atom_Blank; LV2_URID atom_eventTransfer; LV2_URID atom_Vector; LV2_URID time_Position; LV2_URID time_barBeat; LV2_URID time_beatsPerMinute; LV2_URID time_beatsPerBar; LV2_URID time_beatUnit; LV2_URID time_speed; LV2_URID ui_on; LV2_URID ui_off; LV2_URID notify_event; LV2_URID notify_key; LV2_URID notify_messageEvent; LV2_URID notify_message; LV2_URID notify_controllerEvent; LV2_URID notify_controllerNr; LV2_URID notify_controllerValue; LV2_URID notify_controllers; LV2_URID notify_sharedDataLinkEvent; LV2_URID notify_sharedDataNr; }; inline void getURIs (LV2_URID_Map* m, BChopprURIs* uris) { uris->atom_Float = m->map(m->handle, LV2_ATOM__Float); uris->atom_Int = m->map(m->handle, LV2_ATOM__Int); uris->atom_Object = m->map(m->handle, LV2_ATOM__Object); uris->atom_Blank = m->map(m->handle, LV2_ATOM__Blank); uris->atom_eventTransfer = m->map(m->handle, LV2_ATOM__eventTransfer); uris->atom_Vector = m->map(m->handle, LV2_ATOM__Vector); uris->time_Position = m->map(m->handle, LV2_TIME__Position); uris->time_barBeat = m->map(m->handle, LV2_TIME__barBeat); uris->time_beatsPerMinute = m->map(m->handle, LV2_TIME__beatsPerMinute); uris->time_beatUnit = m->map(m->handle, LV2_TIME__beatUnit); uris->time_beatsPerBar = m->map(m->handle, LV2_TIME__beatsPerBar); uris->time_speed = m->map(m->handle, LV2_TIME__speed); uris->ui_on = m->map(m->handle, BCHOPPR_URI "#UIon"); uris->ui_off = m->map(m->handle, BCHOPPR_URI "#UIoff"); uris->notify_event = m->map(m->handle, BCHOPPR_URI "#NOTIFYev"); uris->notify_key = m->map(m->handle, BCHOPPR_URI "#NOTIFYkey"); uris->notify_messageEvent = m->map(m->handle, BCHOPPR_URI "#NOTIFYmessageEvent"); uris->notify_message = m->map(m->handle, BCHOPPR_URI "#NOTIFYmessage"); uris->notify_controllerEvent = m->map(m->handle, BCHOPPR_URI "#BSchafflControllerEvent"); uris->notify_controllerNr = m->map(m->handle, BCHOPPR_URI "#BSchafflControllerNr"); uris->notify_controllerValue = m->map(m->handle, BCHOPPR_URI "#BSchafflControllerValue"); uris->notify_controllers = m->map(m->handle, BCHOPPR_URI "#BSchafflControllers"); uris->notify_sharedDataLinkEvent = m->map(m->handle, BCHOPPR_URI "#BSchafflSharedDataLinkEvent"); uris->notify_sharedDataNr = m->map(m->handle, BCHOPPR_URI "#BSchafflSharedDataNr"); } #endif /* URIDS_HPP_ */ src/definitions.hpp000066400000000000000000000025041515526535400147050ustar00rootroot00000000000000/* B.Choppr * Step Sequencer Effect Plugin * * Copyright (C) 2018, 2019 by Sven Jähnichen * * 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, 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. */ #ifndef DEFINITIONS_HPP_ #define DEFINITIONS_HPP_ #define NOTIFYBUFFERSIZE 64 #define MONITORBUFFERSIZE 64 #define MAXSTEPS 16 #define MAXINSTANCES 64 #define MINMARKERVALUE 0.000001 #define BCHOPPR_URI "https://www.jahnichen.de/plugins/lv2/BChoppr" #define BCHOPPR_GUI_URI "https://www.jahnichen.de/plugins/lv2/BChoppr#gui" struct BChopprNotifications { float position; float input1; float input2; float output1; float output2; }; const BChopprNotifications defaultNotification = {0.0, 0.0, 0.0, 0.0, 0.0}; #endif /* DEFINITIONS_HPP_ */ surface.png000066400000000000000000003200001515526535400132220ustar00rootroot00000000000000‰PNG  IHDR40P”.Õ pHYsÃÃÇo¨dtEXtSoftwarewww.inkscape.org›î< IDATxœìw€EöÇ¿Õ=³™$,*i‰"¨ˆ˜ÐŸg(êy "*˜ðî89³¢žé<ÏœE gÀЇ˜ÀŒ¢§"(JpI›f¦ë÷Gu¨î®îé™ ,ïs×ÎLwu…îÞ·ß«WL×u Î]?‰€®¹º.AAD:bÝ`ŒÙß-#ž1¶ÃôòuHàAA~HÐ41d#^%tvd¬ëAׂ ‚ ‚° A³@Þ ò^AA$h¶SdoÅŽhà“À#‚ ‚ 4Û=–a¿£‡§Q8AAÄŽ‰æÝÁËÙ&×G4Þ{°#±#Ž™¨º®ãÙgŸmìnA‘%Ì›¶¹)`…QY߉ܰ£^ËuÜD4âñ8*++Ç»+AAdÏCÓðfúJçù¡·òÑP]Çm¼D8{ï½7¨<¶çž{¢   {DAD]h’‚&ªÔÆ;ª±^v´kEÏGó¤´´ýû÷\~È!8ùä“íߌ1hš†™3gâ›o¾Aqqq}t“ ‚ ˆzb»4QH7·‡pدώ4ÖæÎA„믿>ãó4MÃÿøG|öÙgÐ4 ÄUW]…M›6ÕC/ ‚ ‚¨/vÈ,ga†,ͷر2¦íˆ)¯ ààƒÆ·ß~‹>}ú`É’%H¥RèÖ­¶mÛÖØ]#‚ "Cš­‡&[È«ãfG¸Í}|Í3fàÐCuí+((ÀùçŸgžy&ð¼-Z`„ ˜8q">ø`$“IŒ3ýû÷çœÄ AAl§htQ ÓüÅMs_s¡¤¤ÄÎHÖ¾}{Œ1Gu|ðÁÐ󮹿üûßÿ†a˜6möÞ{o<ùä“H¥R Ñm‚ ‚ ꉘw‚=…ßDCeôîH×®¹§ÕnîãÛÞéСþýïã¼óÎCQQV¬XsÎ9sçÎ <çý÷ßÇÓO?!C† }ûöto ‚ ¢™°CΡ©/vD‘ÓÜçÛ°iZì³Ï>èÖ­ž|òI$ <ýôÓX´h;ì°P1¯½ö‘å,ˆÃ; Ÿ}öªªªrÙm‚ ‚ êšCSÏ­ÓiÎ![Íu\Û?þ8¾øâ tëÖ Ï<ó zõê…sÎ9?þøcêÍÏχ¦iX°`æÎ‹¢¢¢õ˜ ‚ ˆ†€M´Xhs¥¹Ž¯¹Žk{ k×®¸òÊ+1þ|L:+W®¬S}ÅÅŸøâ‹±dÉhš†ââbŒ?žÒ6AÄv…œ52^ãØ mj.ó™škÈVsWSfðàÁH¥R]×ñôÓOã´ÓNCmm-Ö¬Yƒ{î¹·ß~{îCADΠ³fHs™€ßÆ`ÑÆÐØlذ§Ÿ~:æÍ›‡7Þx[·nU–kÓ¦M`yyyxä‘GpóÍ7ûŽrÈ!xñÅ‹Åp 'à¾ûîCÏž=1kÖ,lÛ¶-gã ‚ "·‡f (5ôöDsE#oMÝ9r$àÜsÏuíÿý÷mïK~~>~ûí7¸Êôë×/¿ü2¾þúkL™2ÅWw—.]ðÁ`õêÕH$(++ÃÆëi$AAä’z4ûï¿?Ž8âˆú¨ÚE"‘À¦M›°~ýz,Z´Ë—/otc±E‹Øc=УG´jÕ %%%9«{Þ¼y˜?~ëÙ^ kY˜mo}—i.ãh*TTT ¢¢Â·_Ó4Œ1C† A=°aÃL›6MYGee%ÆŽ‹^xååå$f‚ b;¢^Í¡‡Š›nº©>ªå÷ßÇ«¯¾ŠÇüqƒµÛµkWŒ5 'œpöÞ{oèº^/íX«¤çŠíÙ°Þ^E™—æ2ކäúë¯Çwß}xœ1†Q£FáŠ+®@ß¾}a¦NŠ &†©­_¿S§NE~~~`½íÛ·G§NìŒhAA4 šÕš6mÚàì³ÏÆûï¿^x:t¨×özõê…gŸ}K–,Á”)S0`À€z3õÍö:_e{í·—í½ÿ ɼyó°nÝ:ßþ–-[âïÿ;òòòðôÓO#™Lâ´ÓNã>Š Š™täççã /ÄÊ•+Ó& ‚ ¢ái¶shFŒàè£ÆÒ¥KsZ·®ë˜ù$žzê©÷œ ‚ ˆºÒ¬<4^ÊÊÊ0sæLßáºPRR‚×^{ ×_}“3'œp’ɤoëØ±cë¶< #GŽD*•òmaY¥Âêìß¿?&OžŒÙ³gcáÂ…X³f²~y«©©ÁªU«ð¿ÿý¯¼ò .ºè"ôìÙSÙßt^#<†aÔ˶iÓ&,[¶ ³fÍÂ¥—^y…ùÁƒÃ0 pÎs¾m޼˗/Ço¼I“&a÷ÝwÔ§!C†ÔK8稩©Á¯¿þŠ àŽ;îÀСC¡i™ÿµ”——‡wÞy|0’É$fΜ™•(Ô4 ±X sçÎÅ|€½öÚ ß~û-&Mš„óÏ?Ë–-ósß}÷¡´´4ã¶‚ ‚Ⱥ®ó\o—^z)oJ\wÝu9W«V­ø§Ÿ~Úhã¸âŠ+ûvÒI')ÏéÒ¥KÎîëgœ¡l£mÛ¶\Ó´H[^^?묳øÒ¥Kszm¾ùæ~öÙgóx<®l—1æÛ ”Ó>„aùå—ù{ì¡ì‹µuÔQ Ö§T*Å_~ùeÞ§O p2dHƒõ‰sÎ/^ÌO=õÔÐ>mùùù¼ººÚµïþûïç^x!À[¶l©x±²€uÔQ;v,¦OŸÞØ]ôéÓÏ?ÿ< „¿üå/¨­­­s‡z(F…·ß~×]wïx‡ðÐCá³Ï>Cmm-z÷îD"á+×µkWì¶Ûn˜3gŽïXYY*++Q^^^çþA4Ÿ}>þùBÀÀ³5^zôè¿þõ¯¸ð •á*eeeØsÏ=±pá¬۸øâ‹qÌ1Ç„–Y¼x1î¸ãÌš5+s£F ‡H¹»>õÞ$ÆŽ‹{î¹'4‹T.اÿ>øø£1úÌÑxýõוesM›ââb<óÌ3H&“x饗¥^JJJðÜsÏ!™Lâå—_nìîØœwÞy())Á¨Q£²:¿¨¨çž{.N:é$ì¼óÎøé§Ÿðé§Ÿ*ËnÞ¼ƒ ÂG}„M›6¹ÄÌÏ?ÿlÿyîß¿?ÆŒã4Œ1Ü{ï½2dþð‡? !‚ ˆFr¾Á˜8®Ißs°-[¾ þ6×^{m`Ó]»uͺþÎ]:‡Ö]]]ñãÇcŸ}öÁ´iÓ27h˜ô©yÚßÎPÍ]¹êª«ððÃ×»˜±hÙ²%^yùœ~Úé¢YÏ_#ÀÃã?Ž^½z5N0Æ0mÚ4ß|¤ÆfäÈ‘?~|Fç0Æ0yòd¬X±wÞy' ñ¯ý ={öÄìÙ³•çTTTàÝwßU»å–[ðâ‹/úö4ï½÷ÊÊÊpØa‡áî»ïM'MADýÐðYÎt&¼ ,Êܽ)¿ëî»pÙe—¡¸¸Øw¬´]ö“v¯ºê*)•——ãÄ':ëÃÔeH²ˆaLx±¶S,QsÚi§)Wf—Y³f Þzë-¬X±ëÖ­C2™ ,[PP€ÒÒRôíÛGy$Zµj¥,§iyäüðÃøâ‹/¤Ž¥ïû•W^‰ 6¤/BÛ¶m±×^{á˜cŽQö±¤¤×\s F©¾Ë/¿¿ÿþ»o&ž¦¶mÛ¢_¿~8öØcѲeKßñ-Zàšk®Á™gž©¾É“'+´Ì„‚‚tìØGy$öÛo?e™)S¦à‰'žÀ¶mÛBëêÖ­&Mš„¼¼<Ü|ó͘9s&þñàì³ÏƲeËJ¥Òö‡sŽ+V„–éÕ«>ùä 8«V­Â¶mÛ0pà@,Z´(mýAAÔzLç¹Þ‚’üç¹g¸^çzQœëù1®Çc9oûÛo¿U¶=rÔȬêÛe×]xUU•²ÎÚÚZ~ø‡§¯'Ý„û˜Îõ¸Îõ‚× ã\/Œ™×'âùœ ]»vÊò;vä›7oœü½`Á>tèP‹Å"'·üü|>jÔ¨Ð+W®ä%%%Êóƒ’tíÖ•39›qSLòoݺ5à”í$“I^VV))@—.] És­Zµâ>ø``Ÿ:wîì*” cÇŽ9Ð7hÐ þ믿*Ûúë_ÿzn‡x"‘àÕÕÕ<‘Hð~ýúÙÇÒMê²åååñ3Ï<ÓN°bÅ >aÂ^PP@Ih£6Úh£­‘·†OÛ¬1ᥱB«ˆto]ƒ8åäSÓ>_ýõøàƒÒW5$×EkøëS\vÙehÑ¢…òØ­·ÞŠbΜ90 #«ú‰ž}öYôë×Ï<óŒ²L—.]pÑEeT/ÓBR>3ϧ÷˜gÛ´iÆ{ï½×W\×u}ôÑõMÙ¥ Ý´i.¸àÜÿýÊ> 2¤Î}ʆwÞyÇs jjj|dž z®a¸óÎ;Ñ»wo¤R)|óÍ79íÛ9眃'žx………˜;w.zõê…»îº ÕÕÕ9m‡ ‚ ˆÌixAcͱEMî¬ö¢¢"å€-[¶à믿ΪΠ•Á×®]‹»î¾+«:Ó {ŽsÊogtéÒçž{®òØUW]…+¯¼2k!㥺ºgžy&~øaåñK.¹$PXÃÀ˜â÷|¦›Cfî»âÊ+”al‡~x†ý &QÁ¹qãFßþ#Ž8"W]ʘ¯¿þO<ñ„oÿÁºîÓš5k0iÒ$¬Y³Æwì’K.ÁÔ©SëÔ¯E‹áðÃÇŸÿügTTT„†EAѰ4Ž ÑcÂÁ¬ugâÅ•ÏÿóÌ”o}Ó¡ë:¨<öÀ ²²2ã:ƒ‘Ä cîäÛ!cÇŽUÞ‹3fàÖ[oà_3Sƒ\†sŽ &àóÏ?÷k×®FŒ‘AmLºfÿ,§¦¯aø)DÎÖ­[ñú,Öµ.]ºdЯ=ÏÀ[³eËÌš5«Þû”)3fÌðí+**B‡²ª¯²²2«?ÿ2|ðæÍ›Zfï½÷Æ®»îZ§v‚ ‚Èœ4\~ 9 =ËËËÃ{ì»ï¾[™‰¬¼¼7ÜpCVuwëÚ-ðÍþÿ}#«:Ób‰M|È>»\C‰"O*‘L&1yòdpp߸˜9V¦eßÙÚÚZLž}úäºKhš†X,†éӧ㫯¾jt1HA;"±uÈa:šÈâõåG_ ¤$Óp AqQvÞyçÀãëÖ­ÃðNÀÚµëÍ8»uï®Ü_QQ¯¾ú:«:#a…åÉé­ëšñ,] MÒg»ví”F嫯¾Š¥Ë–¦­Ï5<‹µŠæÍ›‡ùóçû@AÓ¶m[”••aùòåõ!¬o.± ðÌX¨B¦ÖoXï.ÕÓ–áíZL´cÇŽþ>­_ïÛ×´nÝZ¹óæÍ Ü?š¦¡_¿~X²d ºuë†O?ý8ôÐCDHAáG¬C“kGCX}V8NB‹Ò6Ïâñ8b±º9  ÕÙÍd%p—‡Æ4D]öhvûðƒ³¶åŠ®]»*÷üÑÇ×eϯ1=zQU}ô‘rdA#‹‡í‰ïùƒŽä;¼jÕªhâD•l ¤-e oÍ A}jDúõë§Üߘý*--Å%—\‚ .¸-[¶Ä¼yópÞyçáí·ßÆŠ+2Zˆ ‚ ˆÜÒðIRÜ\T"1@=PXXˆ³ÆŒÁ7_aLJ§{ £¦¦V¹ßÊåøCò¬ôÍ‘h:ÙZ„þ¶&3o™ï21McN8¯×ÂüÔN«Ö­"M;ʆtsVŒý÷ßß·ÿÃ>tﳋÓÍ›Š88«ŸC† Á¾ûîë;)y=ròÉ'ûöýòË/ ó"!€“O>'NÄÒ¥KñÆoàðÃÇÛo¿Ýhý!‚ ¡ávÆÍIïõgˆ·hÑÓŸ>ë4´›·¨C\JÛ·¯K·Â‘EÎÄæ™@9!€}Rã“L&Ó®ôuHvv4«œç„M›6)Ï‹©„hºŽdØW•°éÓ§21Ì™3'<Ñ€EH²lÎ{ì¡ìç\ô©‘8äC”‚æ7ê) GD>ùäôîÝ7ÜpjkÝ/:¾ýö[ß>‚ ‚ Ž˜×ÐÉEèD¨]fpá¥Iq ÆqÒ¸S¡§XàµÎ¼Ñoݺ5úöéƒ?þñTôULDÇãxìÑG±g¿½Ôi–C:ûÓO?)÷wîÔ ñx‰D"R##ÙÊþfe<Ë`‰¿Þ†5k×­õí‹ÅbhÙ²eà<ˆlzh‡£™¿ ÎÁ´Ý©­²|Ðdseg3ç3‰OÆú¬x3ÆÐ³gOŒ9'NTfË›={6¾ÿþûh}’ ™§:φ½zõ¨Q£0ñâ‰())ñUýßÿþ?üðCæ}Ê'žx"¦N*BE=L›6­á;$a­c¥ ‡K·è'AAõ‹ßrh,QÀ¹Ÿ¿Ôr`«Ô¤D8Z€á(ÏUß‚¿à7ß„«®¼ ×\uµï¼.»`äé§ãÑÇSTÜÍå+–£¶¶Ö· _qq1:ø ¼ÿþûéFê'Ê[xvv3÷[ÌYòÊ«¯ §ï‹‚.]ºà€H[nݺuÊý;tt š\Ë,Í|&:uòOt€_òÆ\ß>ùä´m=•1c ¥¥¥JÁ`‘J¥0eÊ”Èuz½3Ÿ}övÚi§Æí“‡1cÆ(× £°°;wÆQG8wæõ×_ǧŸ~šu¿rɶmÛ°v­_°AÑx4Ž á0çÒp ®qq$Í·âAó«%ï‘ü1&Œ±ë§`À>ûàøãŽ÷{Òˆ“Ô‚&„êêj|õÕWJ#~Øñò4*+ž{~Xkõ0æ^«'‚fô™g*ÚVñé§ŸŽ§ž|*m¹_~þE¹ÿ°ÃÃwß ~á;ìpß¾D"åË—E«À¦Õ¥KYhzðl¸öÚk1þ|_³Q)++CiiiNûtõÕWã³Ï?Ë(!‚ÌwÜ‘‘ÈŠÂÚµkqþùçç´ÎºðÖ[oá­·ÞjìnA!¡Y‹ró9›à†an)ÓbŠ1 Ÿ‰OË3‘Aý²¸™0WaÀ>² §›=çMåþqçŒEÛ¶êЦŒ‘Çe¥nâšÈ lÖÖ,ûlCÓ<÷eÅÊX¦Æ sOè¯cÊ O?ý$í§ß—œrÏ=÷à–›o®·Ùpç]wâÖÛnuÏjäΕ——cèСøõ×_§AAlÄ€ÜÌ›É ¤ 6@x!â7€O?A:4LLý~§v‚ ^X1(CÕ‹/½  ckÑ¢®ºò*\<ñâŽf‰5v:70€e¾ÐdƸ®C¦‹8_çÌ™ƒ /¸ÐuxÈ!èß¿?¾úê+wùŽiذaèÛ·¯oÿœ9¼U¯'#¾¼¼—]6OL¢;4ÝsH—rù¬[·—^z)ž|êIw{iä¬oÞyçŒ;+W®l°6{÷î’’,[¶ åc0`R©”ó,›tîÜÙ®C•( gÏž`Œaùò宿‹  ü;¨¦¦K—.Euuu`âñ8:wîì[7kãÆXµjUîçúAD£á³œYØagf/ò§™©œ³÷H-Ê—L&CÃ䜻6‹Åß}‡yïÏSžóçñaĈ¹}“-‹9sñQèpÂÎômyö{uÆ«þÚÃÿú·Òw]®Ÿt^II n¾ùf_Î9fΜádGKç‰ÊáýL¥Røì³ù¸ì²ÉèÕ«§È,&ÕÏ,ï[íÕµ[©T Ÿ~ú).½ôRôèÙÃ'f\m…]«zðà$“Iœxâ‰?ÿü3–-[æ;wùòåX±bŽ9æ˜ ¯AAl_Äê%VX•Ö1+ä,ɘóhòPÍľTšz8ö˜c•û×®[›ÑÛf¹ìM·ÜŒÃ=ÌW†1†i=ŽD"×g½nîôV¹I÷9Ö<1M$°*S]— k¥283XÈÑ>•³È™çàÝwÞÁçŸî[{åøn¾éfLºtRh»™¢Çt<òè£Øm·Þ¾c3fÌÀâÅ‹Ýͤ6Œ™jòe—¢° 0r_’É$ÊËËQ^¾?ü°¿ÿþ{hùl¼!“&MÊhÔD"õë×£¼¼K–„ôIqI"ÝwLüûDwR€á´hÑ7Þx£o ±X &LÀ[o½¥ÎJX<öØc7nN=õT<ðÀ˜;w®¯LË–-qË-·`íÚµ¸új¿çöí·ßFmm-F…‡zï¾û.~ùÅ™Söâ‹/bÙ²e8ûì³ñÔSO¡¬¬ UUU¸ýöÛ•ÙÝ4MÃÈ‘#qÛm·á­·Þ²³­b=¬'Ÿ|………xøá‡±råJÛë£ë:ºu놳Î: O?ý4JKKC_èAÄv–ã¹Þ&]v)WñŸgþã”+ˆq­EŒk»pm÷®õk!>w-àZ‰y\Y¿¸9d¯®®V¶=ç­9¡çnyb›õÆ,e½œsžL&ùµS®å%­[p=?¾å…lù1®ĸÞ2ë»p½W1×{—p½s×[çq½0¸Ž“N9YÙ·.]ËÂÛ”·¸´™ûbÒ6úÌÑÊ6ÚµoÇõ¸no1s6üøÀköè£ð¢»l]¶Ú¶áo¼ñ†²Ã0ø¾ûౘîÛŽ:j°òœn{ôàZË8׋b\ÏÓ¹®k ¶ r”²Oee]¸¦1±±Ì6V—Mcüè£Vö©c§Ž é7¨·#Fðd2©¬ûí·ßæ………çÖ×¶ß~ûñT*Å¿ùæ‹Å|Ço»í6Î9çgžyfh=guçœó“O>Yyüúë¯çœs¾Ï>û¤íÓ¸qã”mî²Ë.œsΟ|òÉÀsŸþyÎ9çíÚµkðkIm´ÑFm µ5^È ¼4I.6 "ÓYž9Ÿ&ð¥°?KÀž{ì‰»î¸ oΚ˜6ö¿oÎήf3þy|à[m]×qÝ5×añÂEøÛ_ÿ†îݺ¥­/4TÇàâÚâºÄàÌ£©O<ýŠÚZ§ã¿ÿý/fÌœ¡<6vì8|ýÕ×8iÄIÊ7ÓQ(**¹çžá·+ IDAT‡Eß. «yàû]oµE‡Í‹ô»±É0Ì«NÝçu9Yê€â¹å•Wpá…*=Sƒ ÂÌ™3QXÝ3– ,X€Gy{íµ.¼Ð=¬wïÞ˜0a>øà<õTx¶¿5kÖ@`â ãíÛ·G÷îÝí­oß¾>|8`Ñ¢E®²k×®Å×_ý÷ßx ë¼îݻ㠃¾ûî‹ `Æ Ñ/AAlgøÖ¬O8à@.½t’­}fsÀ5cz˜ nB0DAé“^±Þ‹„5„Yþ‘GAûöíqã7úŠ <¯¾ú*N8á„Ðg"×\qÅ8ùä“1eÊ<÷Üs(// æ¿hš†‹.º(çɈÿüç?èÞ½»ïX*•Â7Þˆ/¾øÂµŸsŽ«¯¾/½ôRà:=555?~|£%w ‚ ˆ† AסéÙ£zöèÑMî{ð~¬þmµËèêÔ±¾˜ÿ¹-†N9ùœ=æ,ì7ð€@OÌgÏÆùã/ÀÃ<M wn•u)CY—²œþ÷å—˜AD6“¶ë`û¸ç[plÚ´ §œz Þœ=;·W¯åÒ¦Müñ”?fߨ‚•?¯Äé§ŸæÊ49K4ùÄY“¤Iéêzº5‰­ñ¹ûÇMÿÀÎ;üå/¾cC† Á+¯¼‚#F4˜¨Ù¸q#.¿ür<òÈ#¸é¦›pî¹çbøðá:t(î¼óN,\¸0çm>úè£(,,ÄèÑ£mï æc}ÿý÷®}»ì² ž{î9,]ºS¦LñyaÚµk‡n¸/¾ø"ºuëF^‚ ¢ÙR?š&ôvû_…ëÿqƒoÿe“&û<;]˺bÂ_þŠën˜â¯È4Øb¶UVⱇAQQQ}t9˜úÊÝ«hÇIPÇŠ BeùÃ!xmÆLì¾{Ÿ:v.=_ý5FŒ8«V©ødžOe;#šð:ñ0<ÕËï œ'‘H›™ÍjÔKÈöÑ L?ÈùÛÅCii)N;í4ß±¡C‡â¥—^ÂI'„ššš {—S§NŸqãpÎ9çà‰'žÀwÜß~û ×^{mÎÛÊÏÏGŸ>}pï½÷âé§ŸŽ|^ÿþýQTT„‡~Ï?ÿ¼²L×®]qóÍ7c¯½öR&9 ‚ ˆæ@ƒzhš%?ü€O­Û¶ú ©>}Ô†õ^{î©®L:ú‹Óñý’ï0íÑiØ»_¿õ6š9†ó†,à»·LhV®ü ‡~(î¾ëœö'¿Ñš R©xð~\y娪¬Ê¾"yqW˜ž 0l‡( ­ØÉjm˜,:‘Í£¹o‡ ÃÀ˜³Æ`§vÂ!C|Ç=öX[Ô¨ÖwÉ5†aࢋ.Âüùó1{ölcÔ¨QؼysVõµjÕ ©T [·nõËÏχ¦iØi§°ï¾ûÖñÃ?`Ë–-(--ŦM›ðã?‚sŽóÎ;Ë—/ÇêÕ«]å;wcÇÂ0 ,]º4«~AÄö€¦œ°ekÂpÎñô3OãÀ? Īի”eT+ÙÀ?þ©o.Äÿw þ:qVÿº:ý ¹@ƒ³MTšÐ}¬¨¨À™cFcÐà#ñλïä,®?‘HàÅ_Àþ싉/FUU•z|QÇM˜Ñú5ÒÆ¬Mj¶.—>ÒZ:éúV×N5“mâ ÔÖÖâäSNÆçŸ®,rÜqÇáÅ_D^~^ƒ<»_|ñyäcîܹxöÙg³®ëwÞÁ›o¾ZæŒ3ÎP®Ecmûí·4MÃ÷ßÇ{ Ë–-Ã]wÝ…>}ú`ÆŒ¾ò¯¼ò zöì‰Ûn» «V©ÿ$‚ ˆæ@öš&(jÖ®[‹Ùo¾‰;îºß.^ZöŸwü§ýñO(..¶÷•¯/Ç]÷Þ9t'™Lâ¾îÇ£SÃñÇÓN=G~Ú´nã/œ 4&ŒíTÚ’ÑQL¢¨ï[ûÁ‡à˜c‡¢¬¬ ÃŽŽC9{ôí‹wÞ%paT‹T*…ŠŠ üòË/X¼xæ½?¯¿þš=qÛGVîÏy’7C6Ø3do‰Êy’‘VÍÆc“¦O¹ 0-[·nÅqLJÞÿ½{û×6l¦??§þéTá©©çiN“'OÆÖ­[qß}÷e4¦åË—ãÖ[oÅW_}øç?ÿéò,}ùå—¸õÖ[ñÓO?¡¦¦·ÞzkÚ:þùg†«¯¾ÚžÇsñÅcúôéø¿ÿû?´kç¡]·n>üðC|öÙg‘ûMAÛ#L+ŠåÜ$è·ç^8ð€3è)›‹u Dß« `K¨2Äœ½¬©©Åú ë±råOXôÝbu¡z÷Ú “/™ŒÝ{à›…ßà–Ûoõ…mÐ]×Ñ£{wôìÙ ¥íÚ!///£>91 @×#IŽÏ?œ¯>ù,á¿ÅÅÅØ¹}{_5?ÿò‹È²–E”’ ;KJJPZZê+¿råJÿ¢}R{QtÑLÄŽæô©ev¶=^ ë ,aU†s­CŒÙœeâÁ?Ó…©å4‹UoAä~y’í AAM¦ÇÓšœs_(‰e¨Xoc3 5ñ¶h­AÓ:´-b@­”'€ µ@%ec9eXé (Ñ€vy@+]¤±Þ6&…Ø“®GÆa>iÆ” «Ž:çŽx8¨ãéÚ7Ódó| (ÐÁ5€Õ`ÕPËÕbÆ+>HPx³$ËEsžš7ÃꂊGê ‚ ‚ ²Ärd|¤Û_'cŠÌ`à5) Fx%XiÀV ¨1"†YåÀ RMž®‡f"uÄ€cLǘX«'&…1«¤Ó!¸èŠ„"ÌÌ·?Ý1Ew‹f«xÐÉîÆÒÞ"kr@Ö-»gŽ’u®&ÕÉÍÿÔ%ÌJÕ'á€r÷rÚ‡4ýȤxÚи&¾JAÄöCÌ·ÖF.Œ‹,l*n@B‹j¦8x 5 _b) ÅÁÀ\ž!?™v> ßnš"õf€É¯ß9„ Iš;ã’ ±f˜sï‰P_Ÿ¨âÆû3ÓäéÚÊ´:K4xݶ qïJæ0f nÎQbÒ&ý—+ª`€ÒYó̯©q‘æ‘eŒ™rõ¤ºÓž…Ϲà"‚ ‚@}¥mÎÆàçsej aˆù4EšøÜšj a )¼®¦3 ¿ò” /!“r‰o"ºé¥a0=4æ\#‡Æu¢ÂcIÜdê‰ZOTÂÞüGÕ®uUœÁLº ¨Ä´Êƒ†¦ìŠ™‰Ìš[äÒbuy~" ·W$çk†áa¡¢Æ÷Ì×¹wAAì`D[X³¡ŒŒ„ ©æ€Á…G¢X P aà‡¼VH„îan WÁÌ œxq RæµÐ,A£‰ù5É€9E,XÜ0˳¥Ëé.W@=Y;¯¤•¡ar™´sb¤rQæÕ˜¦™Â&€ÊàVkšÈ͹óàÚQ’—)£§'ʘì¶ükèÔ‹À‰8/Ë Aóý9¥°3‚ ‚ ²$š‡¦¡Œ ÎjR@2&BΊ5 H*ÍlgYö%Ô£“‰aX6]Ç2œ?`‰)¦ç ® Q£³hƽGÜx½6îdu#u°”•¡nA^¢\ˆ2¯Fe \ƒ¸¶öÚ1¡çfzÅ4óúË÷Àù™“ˆ½a!‹ˆzq„Düsâxª˜é­Rü™&/ AAP?!gu! ‘ū֠…:P¶¤œŒS94x¼oŠ•žœL&ÇÞ2kMÊ4„ã Ègfb.ð¼ÕzÂθéy²½Zó6XEø SEõ…סŒ4ïÆ[¿÷vrGÌèpPX 8TÂ*l®‹49ÇöبœŠÇÈ‚'$3òÖA¦—F|-*S"…s1‚¦D6'…g"…ã;^O&‘¨®SêhO]b Ìy4131€<Æõª?¼i¼4ªsmCÖ3.ev8ÏwW›aýŠ‚=áÅ{.w ^ÏX}MH]öM‡Ò®›¢Æ›ùMÒqLaÙ{/k&si|]4‚ŠG?5¤È·D3…D†SV0À½@¬ÿ¥‰‚ ‚ ¢ÐtæÐxíRšêÀÍE6[êÀïPe†Eœ+°#bg2<-ÄzÌxâ½eÅ¥¸Èþˆp³BÓK£™ž*`f…h¥óШŒbé\),ÈãµñU±þ´ôÝ ÷sœ7<¸¼ª;v¸áfºçrJ–´o\Öþ!å:þË”æùuæ×Ø‚Õsk•F~õ&Jä$éúYß^5AAD¡éxh¼F¤ÁÅ|™JC$ (ÖÄ|šØ’eØYVñUD¥ñ†¸ìò Ab‘â"A „L¾îævLùÕÛ§09%e8×iÐ285k +×®Fv$©-Þ>HMúELÀ 0N!u jêÓ™H`†aÉ}÷õ#¨n©¬-dÒˆ=å8¥Bö¼«.ë¸w©«H#po³,&Ò<ž{md.±è5V;õ-¨‚ ‚Ø>h:/„¿-%’´ÐEúæ’PFÝ,™lÏr½TžšÐâþp; ÇšC“0Ä5‰1á­Š3gÍÕ\rÕøÒ .U˜–|®¯å9ßepËãpKj*‚—È%†BŠZåÓÕgóôÑÊpÆuˆ0>I-¸&ï{ ðP!âèAåà§]¥ër2Ó°7”õʉÒ:h"ö…ù.oMÔ±q *ú¯ªH•‘-ƒËKAD3§éxh|˜†|uJÌ¥á1±Èfë°1T2ṨOa"u¥Nugx¾“UÌV b¬‚&OsæÑ%_˜2PY‰Açø<ÌgYºÂÒ¼ž›ëo{6¤öÓÞ® Ïç8—Û¶„§ÆÀtæòÐÈuµm{G¼ãV”ñõ10ð:¼8̵kà,Êé눿¾@‘×Y›ð¶n¶tžOî÷Ö#‚ b£ézhaÀW›^š´4Ó7—èÀ¦”™ý+¢ SK§®×(KË#/L­–4­ÖÍ{­¥Âž?5A±ÃÒøš(Æu¶™¡gmÌÔÍ­cÀú$P¥¼ŽÏ2!Óvr¡mAczhâLÌ¡)`@LjSÎÛyïZ7>‹Ú[w€%BP8–ï´ ï wÄŠ×k£lšCí²ðö˧"ä ¤¶­2LTkh0× ž.'"Š{ŒrÑ?îWŠv]]ð,Õ±´áfÒqÕyâ˜ædBSˆŸ¸ ñ¦øN€à’E²*¯ÛIƒ{žS˜§("öÚ9ŠùtAO ‚ ‚h>4Úš‚ü´oWŠX,†uë˱uÛVuA±¨dU ØœÚs'ÛY Øš N]œŽ¬¬§,ΉZoPƒ#h†a¾èfbOyó»oñK¨ôMzŽ/lKY>`LªWÿ†¿=ÇÆ•ßY*$}W †À{c©'î>Ÿ™acº) uù&pG|x¼:všgbн$ä}°…COË«¢‡O丼WR9˜¢ËëþpwÕ/"Òxˆìà õá Ë ¬JòΤk'¤+Ádà’!ï AA4" '°{ ½¡ò1ù‡ãäãN€=ûC×uûØ÷K—àõ·gáå7f ‘L¸O4¸X‹f[ ¨2„‡¦eLl“™%pu(Ãò¹"Jš×»ÁáÌ£—2ibˆwK¸tÝ+¯õ©y¸;îÛà ,RÞ銣˜ìÊQ‰Õ•ñ/Õ度×@„œ1Àà¦s7ÆÞ&»Œg~ ÷žç飬•ÞÅ|‘„¯…Ƹ!d T¿ë1K£(\BÀóì-‚i×+mÌ|Œ} !‚ÚŠ@XøY.ê'‚ ¢iÂPš× ÿ¦·jÑ 7_qè¿`ùÏ+ðãò¥H)tîÐ {ìÖš¦a媟1é†Ë±â—Ÿä^ŠðªóÞ@×aÀ¯¨¾¯Ê"šg$‡t(† 9;tB^Hù5~]PUg@ÛЫè^ ®ÉÊà‡ÊÀñ«*²ßÐ{„hØ|†pݧðäÈçxÞÀžy¢“EŸ–æ5ê½báÝiàmb0:æ!Õ:V•‚þ[-´uµ`Õ†ßóçõÙû¥ªúÎýÇ8$OŽ×«rž÷XXˆš˜4ÏýõÊuDÙRŽÁÝUö1®13ñ‚yŽ‘†ÜP :RÓ¡¸ú¦5A±}ðkž÷~tÒgoQÒSÿõºuîŠß|‰;¾ ?,ÿE…EhݲÖoÜ€Ö­Zaü™çãøÁÇbó–Í8ç’óñÓ/+ºâ l§8x|°Ý‹bøµø® ø¥Fxo¤þLºp"N=þ䬆µà›/1áê¿£6´je–pß—èĘHWݣحH$XU,®×A)h<[W K_“òû+¼^¼¡OAoÞ•u+ )'ÄIYŸªN•Xà°=3FÛ8RóÁ[Ç€ÊôÕ5ÐËkÁªœ¹Y®i3¦ÀðzZÄWÏ|’ {v¯xÈÏç)/g~‰_°¨+Ž,®eåÌp\³Òb›W'ÅÝ‚&¨ãam¤+ëSŽEAAMƒ Í#Õ›hy³wÊû£™WÿírtëÜ3ßz7Þs :îÒ÷ßt·í­1 sÞ·L*œÆ]ãuˆ(çÚXU‰/O˜Ze%ˆ3{¡R[œI «"*½G|u÷V^ÓÚÍÍs¬v|îåß^qç‰róuˆ«oÓ¤Ç ÁÈå4Úaacžñz›·ÛdRš¼öŒÕGUˆh˜û.¼iuYïZ5!'SøAAl¿ÄгH¬ïÂ!Œfa0Ü™loý¶{Êpó»cqÚŸ{ホ<øp|·l nzøvhù:îºî_èÒ¡3Þût¾ùî[ :ø =|’©®»óFôîÑÇ9#ŽŽé³^rz›ä"ÓÙ39@±줋äÛR@J¬ž~âÑÕƒÝðûF,ýiÜgÿ´æ„!Ãpß´ï³Iã¹Èœ  ™,µ†˜G£iBÌjÂ{Ãxð©>ÏK@˜µWN&"6\Þ¯àžrAóû¡s=˜o—8E᱑ݎúÆô@gö¦Áv]ªË%]y~¯UEºi—7KÒ™>ÏOˆ€påMP«3®±[sLuÊ÷’».tˆ¸ ®6„gFcB@¦ü}ãÞ Òˆåyª²Šš(uAÑ´ˆa@‰$^LÑ’2' ñ™âî2).•‘~s©ósرÃÍž†d[†=ºìŽx~Ÿ÷%.}ðZðÇ;_¿™w>ýûï i¸ÿ…‡qÌáC0lÈñ˜þö«ŽÅ¦3á¡Øfö-c@Û8Ð& T$E_  KÇÎÊÁn«Ú†?_ó7Œ8úL8ç"^˜Ö-[¡U«–¨Ø¼É0—OÔº4æø“\XÑùP¤ù:PÉÝá;2¢+Ü4ä’Õi¥Tìn@ÊÝ’ÐQ‰e²Äç`ò'¥ðyYÌß¶F3 ÓcbM™žYmðÀtЪ6ì¯ö9Žˆ°=2P‹3Û{â»ÎøCô¥Ÿ„ Oí‘“õªWÜÀrjåä@¶gGÑ7KÌĸψ_,ùÄœj rýé‹d$j"&‚ ¢‰îædyë|¯—Æå¹ø" —ÇÆöè¦ÐöÝcT&ª0__ ô-Â"ã {âq¼wúöîX³µèV€µ©ÍX¼j öè¶;Š{´Æ¶Êm°ÃÜòMs#ÉEˆP›8°KØ7X<`yð<†—ß›‰÷ÿ÷!®¸àRºÿ!'ÏS{ ¢xe¢ZDéê’½^"³Æœ¬ž¯%š¸&:€”Ê£’¾#¶Åg;_U) í“ë`e‡&ÇóyÂÊr··†CÊØæiSž1·CgRúkæì*RGžrÖì>qŸ‡Æ I³E–\‡¯ãpͲ»"&,‘«~0ç®ÃXWÇ»Kíá)û!„"טÎÀSF¨3Q)P"(ŒtEHÔADó%†ò„0ä¬8wó-µý]㦱çÙ/Êf‡°¢L‘SZ²~­.G¢W>Àó„Qn˜v àØ]Å5{_„ 5¸eécÀ¾-€ÇÏ©µØ“õAé]°í÷UŽˆA„Yj /Ô€T! kf¶/Ã\OD΀]òƒc½±äjŒøîxL<í"äøŠó{Ž÷lv!8cVZ@>w‚rw Þ¡$8PcŠÍBMÌ£Éׄ  s‡È?=oÇåcLvÈŠÂ6¤=ÂÆz&¼¨«$™ï‹ÿg®äà`fö6ŸcE>A3ëLxhbB cÛtå˜n#!@¸zæ]&Ç+ìrf'¯ƒ[ØÈó%AP8F˜\·UÌ3Hï­µ“O¯H÷Uóûʵf¤ú¸µGáeáæ_ ¶×F¢Ññ~±?+îáׇ¨qÞdD ©'‚ ‚¨1|¹ÕY%]s ;èæ[kB,Ä<û4f.FÇ8dLl–q­1$y q3÷[¢H4†!íÆu½þŒ%•?áï?þ ëZlJòÈk)F¢,ã| IDAT‹”æ›É쵑å«È\‡%OI¶¦„±°šó5`¯b;\®H+Àî{÷E~<_]¾,¼ek3˜^gzI,¯”vgMη¬:YÄÈ‚Èå}ñX4†\Îký$7×Ýw‘)ê,ƒ‘ÞXT+‹7‹ârZ¶¬ŠæCST)ß!¼²;ÖøÍKšN…%°Ë0Ó{` Æ\bÅ}ªXÙÅ‹z}¸—}Ø¿çpˆð”wõɹJïŒ|k¹|½½}¶š°E³3¡¹¯‘¢?®c ¾P4³ÏÜÜdï—åáò Ïk “ú¢:'íã/ ¸4b¼ÞµFOAD81¬¨r{gt8¢ÄòÜXbÇ*º¼î ¿.1İfßu(kÝ Å?ÛŒ*—(:¦ûÁø­²“>¼ëjÖÃ^ä=ò;!ÉSX¿¥BXEág€®‹zâL.=.ÜL!ØC“Ç€>…€[öÃÕ}.À.킯Nÿ`K3O(Á…Ñg†Ó!iI€Yávö|"¸)Øs“`ÎG‚4/‰9ó’äd ²’ a9íÄ™³•í¬ÖðX`Þ!Ö«u© Çž÷ס)„ƒ×; Wɼ•Âí²º AýP‰é$¹vÝ–qÍ ÖF±˜‚ÛÒæ®&À=3±*DŽézyšY¯Žf ¹¬ûZù³¯+muOß\kiL„Ÿ9C´'¨“#€í óŠiéï9žîü´Š=²òX|›€òt?-¤± [Yg¡Cb† ‚ rB •R¾fËr“ Oÿo×§TžIÆ‹)v>þòSô<ê4 .Ü3>û¯(h»xáå~±¤1ôé´º•tÂü•ÿCÍÂß…wHƒS6_ Jã@[Ó MÀ&¨6P“¬ÖÑ,ŽbB÷Ñ±Ë ølªwe@»ǃâ;dzd8çvæ&¤ 0Μìo)S%áN²”¶”uœ›e$c'b€h ®‰ìn1AÓÂLŒP‘à$Fð "Ûøµ?%ãÓ.oóå–~\29{–ožâ4æ}ŽTeÔM¹ŽùºÄྯ– m-"* .§lމg’qáqi<ÈÆ?³wx…ˆklrç\n·F•µ™uÛ±Û $‹ ûöI™6fWÌÛõ¯YaYàð:1B4„yŒÁ~¬¿ ¬„øçÎ5“E…,jƒQ •°NAy œcˆš,‹D#'•AÄŽK̽Ä7¤WÁQ0ÿIWY¢¦ñøÊ¬yä)8ÿè1˜ûÎ{Ø´m³-€ÞìMá¨ñÃñû– ¡uô&þià…Y/ßms #ËHŠ3!hº(ÚÄ€*ø­X“À’®KÑ©÷.¾Þ¶ÖZà¹~ÿÄ®%íÓŽluÕZlYWáö@18ž""u²üÚ»õÃ'_ÍÇÜys¥úàXR:~Oƒ¼¥êö`”'ðô«ÏâˆK†ÆÜi®Zæ— e~I¤‘=1w:ðÍVgëMs Îï˜ô;¦I!wÒœ&tLsÄY\HÖÜ#¹»®ð38΀8œ9D̬«•XåIS¨$àˆ $·„J’ƒYáqfÈ·Bḛ̀:‘¥ŽÊà`R&;.¥ñf¶2Ãñ,‡oãmÝùéù0¥…$˜lχù›Û® ïüfþ'l™ W1«~HÞ$K¬ÆL—wqYÙ¨–ʼntHˆµY+—“K¨lY®úÁ¼í¸+“ GH2{Œ.$Wïéˆu.“öY’N’5>q#ç…pßf>÷p¼ªœƒ™Ï‘}Ym‘ç†.-"l|‡"ˆUu .j¼Â— ‚ ˆ:ÁP–_ïÿ¤jš†Û/½‡îÖm(ÇÃÓÃ[½‹mUÛñXís .8mvëÚ ËYqWÇfSø(z-&Ä·{{–ˆôÅ+ª¯¶+ª1üÀ¡¸lìß‘ˆ= €sŽgÞœŽ;Ÿ{ÀÉΤÙS¤3á™±Ãi¬ýšè—,t4øÅ¦Ùû˜åˆ™FŸ®¹Û²C¤qd{Š51F×€šPm +p§à¶Ä $!âJ½íˆ' Î:,aŠœ³q09dÎò,Y ,1dz‹·“PÙÉÌú¬¾à–g p­,o§ý•è'¼4ÛRÀÆ$P™DšÃäžãÏ>g"¼³ß¼È*Ác†¢1;tŽpœD3Å’HH"ÈIÖo&%X`)Ó{$…Ì1{>·û`{…,!dyätÀ.qÇ$cÜýŠi0JãHîV£SX­}ib+ªÀ6%Eß ØÊÈåIòâÑ>V±0QM´p_¿p ®‡{”€2LÌsžª~«ŸÑ¯oVf3#ß4«5 UB+\Ÿp,¨Q§©‰òÎADÎi0AcÑy—N8qð0¼ÏصtÄôÖnX‡/ý¯½÷þ°(ZEDf¯ÎÀ>%Àî…ÂPZ\)DÍoÕÂká #Ê^Ë5K 1©¬íuáÒwwYfy{¼ä¬ùCÅ:Ð%_x§vŽ›RÀ²*à—‘ÒÙÊRg…ÈéL¬o¥å¶½Fp{tf†Î‰ôÅ–‡ŠÙ‚àVjcàœé¢ó\wæN€É¡hÖ'^˘µ<3)óØÉL¡“àÂã”籤a†Ë™"ÈJ°` 'ÓsÄdQåI©íö<Î`´‹#Ù³©]ó Uˆ-­Bì§j°-)h nìn1Ãp [ D(nE¡¾¹-*¢/¡}PχÔžo7½çеdì j 0b F¡#_ÄQjÕ)SÐp§A…²ë÷¦1÷v1C¡¼³D÷ï 3A‘3º6ZÃŒVøU©v¶O  u XY,Ø, üÍ)ÿú.õ)å ¦(È»äEM€‚P–ì[ô(ž™o¶ 1·1% xÉ#Ĥ rÐÌú,Ác…ɹÖ2…-z÷\"˜kI¿­ïÞ9AŒ‰9O€ó[öIsììdVv·¤å}q¼3.¯·D w¥ÒfI9ÎDž09–4À™Þ:†T§|­c`•b?WA_]¶Í‚&1§Èl×NÑmX¡Sæ£k%€°î1‡k‘øíËV9yMËP_\ëB†‰'ÿ©¾:¢£JQˆp³|Mš< ,izgª 3ŒÏ}R ³F¾~ÊãÁÇÝ Ù™¡¨‘OP…Þ©v‘ !‚ ˆzß ±P¤úM g@6%-I`§ÐFJcÀ ¨4ßðgk¶'ÈFއ ÜYã-äÜs—ïI¦ :BDùÈûÍslÁb³Å„0ümÁczÝxLˆU«f8B)H¨¨„œA.H´ÈýQ ë3¨ñN+jT'É»2ø«‡ ‚ ˆìÙ¾ ƒ˜C±Õ4ÛR@»8Ð6hÖ&„·"Õ(ÉàbdbèÈŸA§E©Î2ÂÍù(¼*)æ’äé`-bÂKc­×Ã,»Ð6%!tŽåBÐ{ß\[ˆI¿}BIòÊhLL"7#p Ьìo¶çÈ)çˆ%f{,o—½Cšé²2ÊŘ˜CS¢­c"XRÌó`)±°¦%†ÀÌüšóÞß6 å q¶ØÏCÄ-ï$~la£È ç‡=?ˆ[É8\awÜn_xBl/•$ÂÌôÝ€ã~±sGóÊÏ€}+…šq‰ ëÙð7ï·²÷%¥AOÌt+)=6Ò~KX0þÇŽYà òèȇHÔAQÿ4³l°ŒµJ3Ë׿”˜S³SL¤t^agŠXÿ:Eü„½RÜ}Jã™qa@„šUâ3¦1 XËc@¥T_¨8qŽ1o_®—j쪱Z¿4QD~ëïÔÂ\+Ø3Æm‹2eþÖmUgF£IÞSàpÍL‚ ›!lÌ ƒ’³ÏÅx¡Žd‡<¤L Û’‚¾ªz…˜‡Äå¹F–7I8ÓÀb¢n[­I‚;%ªÀœð-é²Èé´™oŽœìnvzk§Œãá±’$˜ž iî‘}ž|Žw]#Kx™ß Ó›bÿ™‘Cãìλ?Æ nˆëg@ž¸ÞŒ›bŒ;—ÇyTÄ ¶UÏ3(ïgö3ÇíÕ#j·!÷ÑsÜ%j\7E]6+Qãöòé$z‚ "§Ä\‹96UÒ .æÑüžjóÅú,íó€6Õ@s²kÕw?¼¤=–·%]ÝÞj˜i˜Vsáb(Ô€boä©‘2ʦ8³²á%9x>GŠÁ™ d &{y¤ïvr8uº…yÏ­¾r8®{o•sk#é뾺D¢œUF3EMÚ¿Ü›}©IÏADî‰e•.¹®ÔG“ lNASmˆÅ'KãÀNq`C¨e™[™ô3“ºÓÕ`ûB¶j9PÉE&·b h¡g³­mõKbIÜD½ÿ–À°¾[¦·Œ²^¿ɬð)e%ÓÏ/®¯îËbfÙ²ÛôˆeH’•$ Ÿ™ÿÍKf8ãcv_ÌsBV·sPRæØ˜|ÈÕÉ­ãܪ¥1,[^1Ypy¸%ŒÌõ¸©¼¬ºìc0½8Ì)oµo %iÈ\?¸t¹¥Ê¬ŒšÕoæ®ÇÊ]  ¯“4_Ç•¬Àü´¯½OàÖ~yÀ²Jöˆ/âT ”ÍÿÈϨá/B¢† ‚ rGãxhê w}ˆïÜ ;K@Ç< uØ%üI¬˜ÿ02¹™Z%éêŽRŸl(% 1?¨ÖÌ.e&@¾&æù锽 î†å1Æ<Yšþþ?{oÖ,¹¬ ~’gÉ=•’Jµ¨îµî¹c6Ï3ÏóÿmÛÆf¹=]{iII¹-HÂçÁá€c9JUefÁÓNá}˺ì]cÒ 8^©í 6V•INY±JùìD!¶ ÎdºÎE‰Ù01àÌJ¡T@*¥õ+‹ §B® T'+€Nœ^­qA-\¤ªØQ1i˜ƒònç*?6v¡¦gšZÁŽ£„ êù¼Ã܉E†fFwíA·jÔÒåX3—ÁzËû€Ò3EË€—°#žÅSfOl`Æe Çn åçj‚V¿KŠd À‹}^»…5jÔ¨Q£F§ÓGj¡)´M¥ RLóå$©œŸÀ[àÅ ð²vÀBC|bì¥Sæ8<¤¾,íw¸ m—N¬4gRÔ0SâÖx—O”Í„«îhe³‘й”}.~RBKÍ.³¾¬Àd»R8›W­%°àÌò ÁóØ:)H:…JöÁJ½¾‚¨ m™KA†ƒ‘SE±ûE†}MNÓdŒ(YgæïÅ ‚(X?ÂZ,HS\UBK}žâ|3~ãà·,¸Ñ£»šánæXJp…‚šâúUN:¦¬ãlÄJæéŸåÕhÑHGÅ«”îAµ„šÛz±ˆÊý¼¸f à4jÔ¨Q£F÷¢ÐÜçÇ}f±Lü0 °ùl|Ö/6ÀŸïÄ=kÇQ!9mí÷@ïÃ*³Æ‡YÒ6_ÏnÎ;àq\„›£[¿GÄð4>éƒæÉ÷šl„eúå5ñíÕì Þ勯 J«Rs6#ZT R#¥3šÒ˜<ÅýŠà£"dŸºS’›`‚Ѓ²«@Ai²M•§cÖœXÙ‚ ¤ý®rdHM±¶ì’äé½A ¬òš5ÇÔÖ ”ºÃnç#Xˆngœx%ÎiòÒ È÷4¥|| _ÜG%hXl³Nž¡KÓ¿EÙ†±¸ñ)Ùýk(VçÇòÚ5€Ó¨Q£FE. ¹—\ ìfq9ûa~çEÁÿÕVjÒü4ÿŒš4Ç Ï}‚‡[/@möb™yÔ‰ëYo¿ïáA˦šEBë~HaËRF3ÉÅŠ®ÙªœëàÕÆ°‘7œKý(_Kâ&Íæ¼!ð–€@w ÁæY|‘}qi£b«X@QÙǾ­™R´›¢âGö蟤Z-ZdPèÈ„Ì.ž3й«#¹PÅu‰1“›Êê `æÌ…½ôp“M]Þ¬µC.‡µvä÷F)2¾%ùëïå¸3üå\|Vqƒ±òÙ¾‹åÉ`×Ê„^9.MQv‘%íûnh`§Q£F5ŠôqÔ¡9…&ofàåxw.I¾¤.Í7;‰79ÅyýdÅáàsèY㥊Ò ÍqŸzè$1@·GŽCs[ E1&«S iµJ›ßØœª [<¡N|UîÜdXÈò³}lüjðƒ€ @3à½Ä¤Qö‘óZì Y}”ˆä¼ÒåÒ ý\Jp@ÆÀª¶oŒ Àf®ÑÊ@©{ˆ«Iփϴ˜ë`-(™ìð=Áox+–Ašn’Ø2—pŽ"àiqùíÚ *< ï•$­s± f¡ï!ŒQ¹²[Œäžò¦ ^®Ò~*xi`§Q£F5ŠÔç9e?š=p3ßOR—æóx>_n€?ÝIMÏÇÿè'NR"žcåcI p3K·ÁàA'®T΋Þâ1;–Z$Phi•1Y{6úü{T(i­kæOÚPIj°”7Z j²–<íÛCC[Â0àYr¸œÉZ µäÙ p0Zz¶uŽ2[+ŠUþ-¸"˜8¶éVY놘°™ååÜãB˜F–ÕÙ uq$Ö™‹`¡aÀÍëŒ×¹„YE G$™É, £lÚ$Å fÝVÖì½y£àM—Z½Ý}½½¸Õ2Á®‹²ÉqL+']¡Å™÷Dj€©Q£F5ú„©?^cÿˆhŠl¾Ûzà«xÞ?î¤nËšÛÙ}c¶ñhÞûÑæ˜°ÜPCÎIl51ÀÖ@Ky¼òܲSÙ*”YÌKe>±T6EAvLë»ð yɯlñBxœ¤æ µ,„¹ˆôÖ€ŸZ(Jp^$4 eAX(Ú°–®Sí¿z((Ôœí5Ã(üœö¿´hØu‘AKÑ2¢k´ãC¬ŽåËÐx+`†iìÌ\dV3à, À9{Ÿp)ÎeïUÆâ¼l]ž‹® ~Ì{¬µ—`éòd œHâ‹ôÔ˜Wæ±ôÞpH55jÔè_ˆ>^ ;ë ÀÛIÜÎÞzà«ø| |¾þºnÇõš4§à»S†C¼âg`g·¸ išÏ;4ç$ngs¡XYm­ú¸º"k *ý³bne¡F1T¥5s+”xs&(Ѽ:?迲œÅº; Þvà &8æ¤Ð›5H`¿Þ(Ôv•ß*Õë´;óÅ…Øž°°Ü-Y5Èìp¨w 0Š  ""n2kåS2…—Bíœ5UóÅaî |îÀçÐÜ­‡9 ÀsN78ÎcÁJ ¸ä eÏyåE.ey/â”ö•”)¯å¢C¸ïX¯¿Å ‡1M•¥µVet2£F5jÔè_ƒ>Þš}?ØžEÁÿ~‹ŒZg¾€§½€cjÒü,«ˆœ x²Ö;„8–„Ozàrõ0V´±5å¬|¿OîLaÌûóšõÁ*Ö«¼)?Ìü„,ƒ¥Ø´<ËÞê <8)¬Ù˜=8±So¼8·:(ß2bÝ *˲J9ƒcqÓ¸•z.0³ &ç'+D Äø;ŸZ?2 Þ0Ǻ3zm­UÖêáÞ84gRËÇb¡!Ÿ²¤-€Zq¬HŠá“e([û~cq“Ýö ƒÜœ6§ñZ¸²Ùk¥Y.’×"£ºwIÖtµ}”T̹¼é¤ 5jÔ¨Q£›îŸåì}>ü%~|G¼ïG7;à«-ðüø.$¸ÝGÖSʱ|TSº›w, í¢;Mݬó˱ªåî7§\ã Ym²•bé%±íµ\Í>SY«²F·0£˜GÒø™3޸ЇAð`°Ä¨˜lm …Ôº×yÓIeõM¤Ô:Ï#“5 IDAT…Xe‹Ã9Z†"81À$KѼj$YÐìÖ” ¸µÌT¶0$ÝsC&p#@gÑ·.¹›MœªÌ*SLŸ3ñAeVºÞ ˜ÌÎi³-¸ÏÐ}Hàƒ Ý÷êÇ"5á³å(ÝcP'J‰ N5+ô¾ø4jÔ¨Q£FŸõyÚ©ý"L,ÙξW“¤o~1H’€?9àš¤&Í©t¬¬§°¾/àaˆ…æÖד¬gC’ºù2ÄШ:ÅZÑÉZîà#d­Ï¡À†“ŦP¶ ™(ëÀ&5tþd¼ä•e¯² q•HÒ RÇg6nc±¿„…UO€ xW„ì^œ©cÁH¾¸HÌb­‰Ã•µ‚%aÇ“a¦©íÚUIW…<Ã4f Söé²™L»‚íO²‡þ¬‹îft3ÃíLºæÀ?ÃO–Ÿ•Ÿ!àÀ«£â-,6lÖ·Ö/6æ @ÖL±Nf1Bê´öˆ%“(È[f–Ë*Æ.›ÖiOçj5jÔ¨Q£œ>ÖšÃä!–™—“¸žPóåðdŒ`.hh‹?¤¿ûñ÷>xy¹šCb’8šË [ŽYÙ#ïÚžœ c '3sŠeè wß>¾•ý¢üü•×±`±àãH¬WЉ$+WÍ%Ù¢ÌJæ\¶]¥ÐÙ¶QE³,s]X]¹À‹sö², ‰ê«Kì©[k‹¯Î°$,xØ%È>xãà/ü¹,ÆM wÇ Yl>§SŸ¾wõyí%_¯3Tî%!X ÷Ýò±–‘a®‰+²i39Ž¥=OâÓ¨Q£F}âôáÖ¼/Ù'áw ü4ßÞIMš§©I3Êù¹ú¶zxpÒS›îã},/bIU}í«¦ùœ  {-Mu¦M®Èµxl]³¯¦OT óý±ÁZmâ´TÎ]ÈÞÐÚü…y"sÅR>Á:ƒ!Ì={ Ä}X%[ß°õcT´BÆ,ó×ÂôÞ3b?ñé~ìFÈ-ÌEýœ4orA“=P÷µ45«‹qã –«°/é¡k j¿Æ 98d7ó—’"œfwçÅ嬨sÈš*—ÈÊ­–Fì]óÈX˜Ì=³°Æ”ÇXö¥ÀŒÍÀ2®vOí‚ÔÕL­33¢ufqëÆkÁ¶é½Xj5jÔ¨Q£FBŸž…Æj¤žwÁíìÇQÚŸ’íìApÉrf̽ÁjˆûþNäOþ,Í,Ö™w¡ÍƉÛÙyÅBS™fu^µF¬vF}­'¬)³ÚX…zßzËùÝý%±Z½$~&>šž²×ø«‰¤Ìd4ë#‚¸¡EÙ)m %y Éî¹éÏÌI‹'3/ÌV+?³<{žŠûÐòÈn]C•ñöœÐC’\t’®yºh(dL‹ã3^Kù@öظÒÙx"+<Ë>ÅñÚ{¨ùÀâòyAÁÕÎQ°Î„Ñá¾±[Š’Ç/`©9‰G£F5jô ÓñYÎ>„_ÏSŸTj¶³—£$øíVý/àé µj¦‚ï©ë<éQë>þ'Zy,OÀ-Kö¶;/®fûhÖÆÙcÞ#Z {ÉhË•iñ¶¤h(úg²òæSVÒ²Ÿ(Êè¥n z‰;Á,±úT^çŠ3÷BÖÚ´ör3…xëºF™51ZnJ¶ºæäÇ9ëüÉòM¯j±±][ö°Ö8E78Vw³Kq9ƒƒXfn}¨åcöÚìa×·Uqdh´i³t̺äòEþÀ~ëLq[j–¸ÒRSÆÝÄuDëLº~¤E4×j%Ù}¥ÜRó>¨v‹7jÔ¨Q£FÿjäOˆ×þ>:VV+óÈ’à›Q’lI,4/Qø×j¦¼O™Nat š·³doH,P]n…ºÏ:j}ö[c^YO™š–™%†„ 1ûä^›—dŠ~ˆµ¥§G€ƒ…Æ#iÙTöE‹'Æón9.·Ì@,V4²ü)XZìÄf‚œq;‹­•WŠVªÉT¬‰Ê›ËHjmêÄ:ã/{ðÆØXgô^øÍ/sï"QªîXܲ¼?è$uso&8aî…r·o,ZWm-BꆦÅ©¼>‡HµZ¢ewàXjÏ Ü;±pM,é•‘ÆJ€½Y¦5/Ä­ç hìÛ‹°)•y $ H'ì9‡ÑÄ yRZ†Yެ=ŸS™ñ©”‘HöîLâgxãàf–‚š»TÇG…Ê€ Šyíq”·2ŽØD(Æ–ë/ùcϱÎ኶âX]Íb*t@À›¦í®PõÞ~PÓ¨Q£Fý+ÓñšõØÍf¾Ý·³Ì¹ž ’éêEáØyO¥ŸÃË“X¢®½¸ØÅ:ó ÎÜaØzꜶ_gsOÞ¢hRþ‡n¨PàÊå+®/É<Ü“\ûâ:4‡ì\ ÝTd!P*¢º~¢ŸR!SÍR" 8%F9ëü}@Q Öå¨5ËÌk†`aÕ‹oÅÃfk³¯Aæ,®¡‡  —„àvÝí 7KüŒÊ@F†¸_–Ÿ=Îæ§\¦pì(5dü²õ-ÛWË[ÃÆìØ½PW³;C’Þ;ÖÚÑKP¹MÇôÙGû>?5jԨѿ(}Ú@Ô‰×ðÍN^7¼èåï2Xiî &Öhß}xäÁ²Æ/VšGsÙgÐÕRT?'#ó)ë;Ð7)”IÞ˜ªÆ÷мÆÚAHð†€NbhhäPe…Un­EÉö3.sö“e•鸧(kÜЊ‹XGùZ€äŠæÌ, ÐdKþ1¾¸ÆU‹G\²Xÿxë0?pà3q7sw’áŒæ|k‚9ਬ­în¶j\%YÌ1{ù§:M´pA¥p¿¸£;Ã’HÂóÂmr ÔPÑP& hÔ¨Q£FÝŸšCJùâ¯Tœïûwâ¼ûh Ö‹—;Ià<í/6’$@ÍÏ]ÿ©ô>øi?f±>½€Ñ h{Øg´L  ×öüÐt59kr×\ùö1>Ð/&!sTQ<à´uvi MGr?Lj¡á:Ã"s¿².d¡k üÎDMUlÓ`gÎe D§ËƦW6– B´ÑŠœøRj+ÆZBºÐüEÿ onbt׳¸›ù´wå>Åõ#—»n¡ÑcÊd°Årtz{QŽa–”ÍogI0 ž`ßüû&«ìá!1¾f_ÇcåP¥Ýü-kØT®Õ‚ɵ< ¥OÅBS ü¯Š³vžT 9!Ø#iδ2–²ÁÈ3¼éÚ‹9ó“¦ HÀ(kö0·Êj)«¾qN²›=èá/Äìçn$]³›(ºýÖíŽ-\ãòã… Zø/«úXKM昭¯¾6,æ¦0@äØtî`PL  $Ön‘}ω¨8hI5jÔ¨Q£ŸGýó£øKËáƒÛÙ;q=ûÕx܉•æqjÒ°DÔÝ+7WÒ>ž5> ±¾Ü…5ÞzQÔ/C͆r ÍÚT9·Ïš³è¿ÇBBPíþ0•²­ŒQe•ÁyLBfΨ0"MÛÎÏš¶™Q«¿&ÕÎì4Ñ: ­”AÚQù1¢ù ZtÞvB_6,­õ…‰áˆ¢•Åó±F>‚XB(0)/?Qiw³ùQÞÜGwãÑí‚u†ä8» Ô$K Eªë‹ûd¬5f›í–‹FXs°Ú¸Nö×3§5©%Ç[ë ”‡ñ2,u¾÷ Á€™âF×§,1c-D%¥{#gõ>è`Ù¨Q£F}ÐÔçn3ÿ49~ybHlÉO³Ô¤ù·9š¤qþv'niþ€*p’¦@ÕÃU†÷Qö#¨``òRæFܧpօijyÅ¿} …ökßâ¾!ë¿“±9ûÖ¨Ús ycaHƒYdx¡­—L:ClCì nD:wO€Ï1”àšÌkSe—–ƒòî\¾¬ãR\ SýÖš?kõIŽMö4Ž·2½E l_’Ò­6›[$""‚?w˜õð{`ppog¸»9$E'È'ÆUø³ñgËç­÷ÏïÎÚi˜’:D”–åÔK^\G‚XewHVÏi÷¶½U 1Ê”/9ʧ®gk÷Ó­tn ¦Q£Fý+QŸ½+ÝOàXÍe‚¸}·~%1Àg!ÛÙøò‡­4ûöäHËB>àÐ&¯h+å±#q›Ólg3ÄÝìI<è×s®€e<ŠFuªêx£”³9¹fÝp{ö¸£üJçH#Ë…Å‹¼@WOðO;øG=xÛ…}ƒ¸R=ì@å – ^.›kǬŠn´¶˜>&‹!hT¹¢Œa/ >d‡ Qi¬ ›c†4÷>Ù÷zÌX€›bâ­wÀü°ÇøbÀü¨º`±p!±HQÙW@dA‹ç$SeIn+«*ö¶66ÄYù´ÝëE²€§Ø.ö Ù9D0áV‘\»P4™å þ, l,@Ò ”Ýúöž"ŠŸ£šÅg•ö<8šG£F5jôÓºËÙ/ fîÃû¨1:9H½–W3ðr~ã%ËÙWgÀï$þäIñkÎGLK¦¡ÖÍâ‘}Ê dªÜ;ƒ@Ä"sîÓ]và/7 ßl¥Ï]ò9“˜€|yÕLgÄ¢ô‡>§4i)(åf<Ñbð~`—âj´“Å¥¨Cº7‹íOšZrý¢ü =Bí˜6ð“ó¿ŸÁ?íÁg„ùI‡ñ÷gð‚Óäfn&©ƒ³f‹âº# ¡T¨³P*Õ]jáû¥}ÙìI<%r0¶©ïÍxâì=…‹ݵ,0P`ÃÊ#•Åw„ù²ÇøÙÿ°FŸ;LÏøs—p>/£€‡‹>`ïáèX¹ØÞKY#²àª\O­ a &ɄDž¤ANèÀŠA,ÅõÓ["·VŸ9ÂűýL®¡Ÿ’5jÔ¨Q£]êclÅ)Àfµï@aåšÒO0š!–çì8ó´ÚÏö± À‘Ä“ÀW“Äœ<íßmoÏDázëåUÓÚª\YB€â•v»æÚ8Ðú9åéÂceyJrYùpl<€Ï±ÎœwÀ¿ŸÞƒ½‘ìgÈÇX=Ë‚ V‹ÔËñÒ µ8(`X¬¿,nøj@zºN\/„éb‡¬9.`uÄ{DSñ²#😟 @Ì¿:‡ù¿œZ\“>I&CWÁ×*Äi2D¥7‚Ûׂ!W´‡þIñF®ñª;\ ŒÒˆ5¤Žؤö <˜ñK¶EÉß8Lç OwÓ“~ÛÆ`T ╟‘˧s¤óÌaiÚO÷>öMýÒz¬q f/|â‘ÉÀ¯°2e¯dp#O@ïÀðjâ5JטõšXÐ ZÖô\vÙûHȺì—>ó{\€‚qùÝx,5dÔ¨Q£F>Bê±u¢HÈ@F 0j€¤T<¤hüWES•]-ò¨ç²v¬(íæ8*°+çUÁ¼¢<„@ù'½ÄK\tÀï6Àô@€ÀÛYö£³2")Õ¥œ ‰ËÐ%ëSÜl åz8—Ñò,ó T™6»çv’µ=f·_t wsTõI @£¾”]×¼&›ö%\‚eÁèú€C9¶ÐÔì}·—(ï[*f̱Ò<;Ÿ;ðY¸Æ ³#øÇsæj°LymITF‘¬%ðb\ìÀB²  ŠÈÃ*à`%WœkŠy t¬UD-4ÜQc1 ®b €7ØÖ08ðÌàÎe `̜淠'/T}€ª‡Œ2)ï¢M­:zìÓ±_NYí<À¢2Q¼õ"Ì„›AëÐȾÀ¯qѦ_Ÿ Ä`šÌƒô™2Á6\œ_µØ,>”øÛs ¤4jÔ¨Q£Oœz|¹•‚ŒªdvHÊ·þ€wØB°TÊ»¢_<6§ãÞž㻢͂WÊøm…\`9×;±`<íÅEër#îZ¿ÚJü‰7J®a|Õ-«¢Ü/ú™÷±] WÚ˜LiRQ¨Ò±êlCÁÈŽäø2ä¸ nAY¢­ìX•ìJ»¶Y%>ÜŸ·Ûcú&w'³3!e7ìÂÇÒ³dÁ›9Y}Ê{ÁºîÙûÜÏn—â<Ÿã˜ ®òY²˜%gZá}*AS£F5jôPÿí!p|?:$E¸ õKœm£ÔǶ[Àß#·rDp´MCÖº€âØZ>20@ù±ž7.PÙ9%«$„Špj¶8€{`3K6´Ò§@æ>âäÙùò8dÊiË” Ûò6뺳Pظq$šßl€§ƒÄÍ|³ý}'If£Ü©B¬d”52ï©\—Q€íSd²J¦^6+?Ì|êzTÙ7«¤Ûñdö2»²f/ìõ so;Þ8øçèºÀÔ] ÿýÃÿu z¹“»7™¹² Fv‘Õ'™ì+‹U¤Íõ—Û–²q²WÆ’bïI«|ÚóÙxÙçÓÆ3‡‘ «,>)ø¼%ì>ߟ9ø­C÷nÂö/·Ø|swåAsRÂÜDe±::¿¹§u˜®‹‘õç’§¾]ÄÏèZ8k‹ ¨C?Š€´sGðƒÃ¾hf¸í‚n¬›ç@S3ÌšppÖ–Æp…W|5 Ë1f¾ì5¹ée—ų¼±ËZÝΧ{Âö7Vì:×†ËÆâÐ’:Ñ@ËõóûhxöOÛ¨Q£F}ôÔãWè¦v¡z]áC,àôÆW! ñ6ÔÞ9ëš‘?Zÿ™2ŸŠöZ9´ÿ§Æo±µù(dâƒXá÷HžÆ‡nZt4hÀT2·òêK4;•*ðü‰`â"ÈPYM¿h•a6àA²›ù‡½š-¡3£{3£»e8×aÁ„²5ë–>ao|êRQœâ´b… rórŽœÂ»â\ÚÆFfÀ901ü V(Ö7‰«™›ñ!·ú`yœùtþÔ¨<‡(¡”Ü<šVÐK55jÔèS"‡—“Ä“üz |½žuòž ú/*Aµ?KTüÕÚ>„?%ÏÀ Kv³ïGÉtöÈI0ýãØý×èÔy¡ûòb Ì-‹ÛÙŽ%áÁÃN,5ý=ç=¥ÿ‰}©ìDöoϵûí@_î Ü“—™A³Ï‚ø#Ô}j¯.I0™ý A쩉MÎìCìÌi›MÐN©çÔÍLçà\D*Ç%÷¦à­Ãô¨Ãü°:‚»Ñ¿A»¤ñÑ“ö   ›=G ØŸ²yÃÜvLjÎo äï…e{h÷4¶e2†þƒŸ94CÈl62Üäe¯xÉÓ¼äsiÚB–5*]WÛ²óuƧ~µ4jÔ¨Q£FŸ9üáF2z=éߟ¿ÙJ:c­'C¢X‘­dŒòªô!>´²,iš¿Å¢qÖ/6Àg½×ÖýsçÝ÷÷>xyn=èÝ, m àA/®…Î¥"©DÇÏ}Ь?§ïZ‡SŽÖAª‘Ÿ¤`âˆ+UãÞs|äoµë¢_HcNV»/ø¬ }~œæ7+ce3 b¡t‡Tž£‚?Ò19’š,zÌOøËäýÛݵ—€yuó2¢UÁ Ò9™–ò¹ +'°VÊ—bçÂ’g6¾¼\Zsf¬3€¸™í4ÙA‰fŠñµýŒ/Åd•[ej &?_ï°wØÊÉS¾n5jÔ¨Q£™þÇ6—?€ IDAT-ð÷;Q~µþýLj³œ/5»µÓƒTZsö)ã÷ý»¯\s°d|Üíàyˆ¥yÐ…â Å¸_R®÷Á!ñA qàó`}+µ­h ãæ;E¾Sú3é1r*°¡ôž; 14$÷üıVÎBâkšD º²¦B‘^}ô¾glyYò±Ò(–£lÈŽ³l­¬aÎt ³OêêÅÂ|é0>éÁgîΣ{;¡»÷<éK™¼d§²{ bé0À¥èlÂv™Õãr«4K[¹ÜE_9¸'øs¾è%³™ÜNâgÈ×øWÖcÛøý˜3×`q©üÛèŒ/MÍU«ü»‡ÿNá–B7^xÎH€ÚÖ%7º}óï›àwµSÖrL?{¾êVf:€²4ð LØé¹iEe'j<—I,¢<ŽÅ­¬Ñò/Ï/d2Kä¨ñ§ ÿØÇò¥÷†g¼œ$ ¿¿è0?à8º«ý;)¤ét—+·™ÌqÅÌI:ŽjíˆñCÑêA9ãÒV,Å]íhžGô;ØÇÈåB2€AbDàCñØ¥•Ê7Tt’ Úš Ç’«ýéÐ>X›S·µ6GhKr `´ù8$ÄødóY±€ a~ ÙÍø¬Ý« Ýõ$îfa~¤ïœqÛÍq9—Ž‹çíxرºž´ûøªl±ÉðVW³ha Ûyù›)Kœ@XòÏöß^¯âÚÅ$ÙÿÅÚ­|5*®õâ²»åÀ}§5ºÏ˜F5jÔèC"‡Àë øËXjÞÍ’àë-ð›Ôf¸úÄÀ/kmùGYr4æä§I@Í.Ôíl‹MÝPu‚6PxôÜ—5 .e·sH Àà @Ó¥º'÷YÏQýkëÛÃûX~nÇ@‚À—¡‘ó¢±>‹©*òf.˜5Ùâ–X°QÑVíÖ•¼ôœ[NA¥q|ºdøØà| à¤Èäü8šÁI1Í·èfŽîfÊ›ªsP`–šYb²u¦1Y{±d×QÌa÷Œô¿ì‘Xç6þÜa>w`'iš»;/…4™áÔ"T^;ùm3í?¶§ä¹èRÐÚmt¨ÓÞð¡Ïw£F5jô’huw,ñ#¸þz' Þ—à÷g¢ÔŸwë€á§úø¨)­ÇüýÜñ5^%1$ÛÙ›íìuHeýY/—.€Ÿ»¶S6éçžÒ®fYÛ ©›ùœ–.gǬç±ëý+šê)2¼—>d\Î$ÑÝlÏž±ófc™±.hk2 ½&@a—óïY›ÅCT´YW¸84ÌEfïÉv €º`Á¸t˜žö˜t fôïfôo't;{ÎÅ-UÖTZTǰ J׺ÈWY»u‹MÞF/î ó¹Ã|)ÖÇ@wëÐÌ Ð’³Îŵ_;gŽ“ë™íxðK`I{†ÜÛõ¬òUÓ¨Q£F}¬äÀâ‹ogàowÀî$@~ë€ß¿?ž÷ÀV5®ÿ þœ§þÇÐû°Ö¬ÉF'ô7³¸œ½Ô=îMMÚ êÞ‹ ÷ª¢…ÔÀ‡õÜyà—׎$èÜIÖ³SÒ©×ô`ßr x3÷¡>p`€ל9Xh¢¶3Ó@…Åþ (öO±?Vû ó`3*ê'ÄÔ(18¥t6Ó‘Ad€0?0?ëÁçhçÑ¿Ñ]Í )¹{6¼ àPç72SqƵè”Y;­¸­­)ݱ?ÌÜ•{€ÈnÌÌáÛytw³XgP#+R Oy™âþ› •­]Ep¹eFùj'Ë£vo‘=¨ÍkÏQÈPwÄg•+G}7íûŒ6jÔ¨Q£Fÿ$êåGŠ%›Ù« øÓ𢷳gÁõìå(€gœ“{€ò×-«fýKüðÕ§}¼wÁíì»øzw»Ïài|çÙ–Žæ} â_åWhALrM¯'j±´]p¶¦p׿_“¿ÖÿP_{l2@Eµ/›{™É)ãQðÙ;§¾×´ÍŽ@£d9Kq!–—ÕPmªªBÉ4¢Ú6V×,Õ>KƒÛseP…–V,++Ùá4¨]ÈÆ–ÉkîHG¹]ì>w³éÉúŸ&ô¯ft7>*ýqBG/ÍF:Ád< ÙØBœO–9 HÙÀˆ@Ì1KZü¸)3–9Ÿ7l—.+NÀð@’à²ohçƒu†Å:£ã‹yK/DF~’¨h«uá{qq;S–ý,ò1û’Ë3¥Å1a–Y'K^\?gy–íkTnL£F5jôO&©¯O]¯gàÛð?zIðÛ-ðU4?Ž’øš  ±•Ð/jâD¿OàÝ|?¯f±Ì<$9À_:)@Êþýà4žûø±9˜¸aà:ÇÄ=ÐÍyÜȾùßpÙÛw ¤eO…yO_óvÞ!¸›Q°¶e|ò)m³öã´|»Š±#¨0Àf»p6 äA†¼([Ο0‹Õ¬‘ô¹„5½Ã|ÞczÒÃ?ì0ºwº·#Ün0bkø¦¢£²ri9däÑÄÒ1e³GL¿¬ƒã~6-4SÚà ×ÝŸ;Ì;ø‹ÐÝ  q“>¤ ˆªd<ÁÇôÔ”.ýÈ·cöZ~´X¾íÇÓ^³ ,€OÑV‚— ¯ÞkÙó¦x\»y*iÔ¨Q£FŸõÙ/çàÍ$q4/zàI'–šßŸ?Lc2–µi–*]5«ÚÞ{ =ODïMs/G‰)úÕFRW±‘½x5Š{Ò1²J‡Ör,Ï $°ÉtÆòdú²Ÿ…ìt¥UG':DÊyNµ”àÀå[åGùùµ ‹¥e÷¡‚šbqØ!4v¼²œ*héTÕ> <òº5…lIO€ \²ô °¦Rˆ(`ÆT¹×'ôŽ(Sv#^ Åh¸#ø¦gÌçÜŽÑ¿žÐ_Í )ðs…ˆÁ$b>ýˆ5RŒµ#ÛVÐdãT?‡5áýúˆàÐ(î‹kc _X;Â|æ0=ì1=èÁI‘Їó,™ï6 TÆíc‚'`AMì“@‡Í^€3ÀÄ‘‰:ïŸu2× ¼8?ÜgAÉÚíéF5jÔèã¥~¡ßyQæÿØK–óN^ÕõìÆo'±èd¿…¹ŠJ¥ćl­±ë}¨I³þm·»ðl¶‹µã}ÈsŠ.q”U¦ ™»t5;>#à“ÔÍÖíWçäî&ÖïZ¿5P`_k²–2îᣅ5¹@f`òR\“+ë«¶…d÷•Í‰Ö •‹§| ´Ê¼Y†2óà`±·l-@a~µÔÀA¼£èn6?À‡þ͈áõˆî:(ÿœæPW2• 0Åb›fmI g¯Â…}!µñ €bÖ¤¥/™B¿ætYä`øŽ0_v ˜/œÈw‹`µéà7dܶrŒ¡.{z + s*tª@Ä2 Ö¾ìý´xÝÌb± 6«#dl3ß¹œ÷¯~0V>.G=˜8ô]ШQ£Fý©ÏÞ1D ¾ ž‡8š/à×gh^OÀnn€¼ 2H¦3Pc¤ß7åXêt²c=‰ëÝËIÜìžõÀ³KóçNö&('Ùü?wÞ5:†w*C7^,4;w³ËNtkA6ve’Å5?Q®}ÊÒ*hXá·à,¬AAî$†FêÐ00‡îÇ.ÍZp²fJz)ê÷½ªìd‘†žD:¬ÌãmXÖ†ùLDåH15V‡&=Á_8LÏÌ;ýÕ„þí ·›¥“sÁ˜Ãq,`3s ¢· JEQ;LXhΜX…v~ë0>êA—t1'ÀFVfŸ‹G:çu\xÕ?ýÎóáBÄ¢­r>gBO•÷0m¨µRyK¤²ç¾®~5ÃM£F5úȨ¯þ¢+ÅŸGà³;Q„ŸtÀïÎEÑLkAò©qa©9|ܤ¬>Í?’öû%­5?‡÷Ä/ôýN^¿RMšoœž½ng{&?ü z†€Ó\‡GËg Ýpóôøˆ¹÷X\dÛ)ï›iW+¼KàRëWÁÇðÊtz1@ sªÔž:Çø©­ áB ƒód†oŠá¦Œ/[~.µ)p µL©e# ¬h="È>„?ôS4?èp÷õv_má/;to& #LOð¦ V™0¦¼ØIÁY€»l‚%‡C6ÀGŸþÇí‰Ê:çn]ŒT‰ØËÍʦ~ÏBhV` ¨ýŽÈ2@ÞÃîÖÇ wñPz?ÌåìØDÃHàDAŒ”hÅMH2Y}8fÁÓõGƒbZtŸ8·²!ïSÅô•¯Úc¿V¤ø+\Ò)Ì5jÔ¨Q£_˜R–3 WÆf–X™¿Þ  yÔ‰ûÕoƒëÙ›I¬4;äO÷Xk´çÔÏ¢ŸËwfêvöbž·³‡€œE ÑyV©"hÖtOÀ£çhfQø6$ngg”j›”Ê÷Å^¢@86gµ«rÑò°Ô¾6do?Ûÿ€ã܉ÆLcxêΆ‡]KmmÐÄz2+ç !8öw±™IâZÄú L"ÈqAiŽuzD9çNpÇ ¨9«› „ö/åì8¢P“§ƒßH°Ý—[ì¾Ú`Þv ‰1þj‹ù¡æ4;ãVÇa•ÑÅST`M`’DKHH™=4‡‡3ƒ\p8?ëy/Ç D&=öO" Ào¦sîÜÈèÞN^OpWR{&Z˜gl-.ÑLÏ…ÆM,¦b.òöøÌǾçØ-~T&9‚Ž)Þk›Nó^¨öP;Vj`¦Q£F}`Tw9°€•'à·Ù‰•âëõìzf­M“†-xZE øÇXj~.o­Ióíüv«Æ‹P“æå$®\Çþ°+Ã!@Pm*•<ݧ"‰)ž=rDBµ{v ôÁŠÐðÑ…þE ƒZF¸w1Kw>$ntܸƒXJz' :î\Á⻸'ø³Óƒ|á8n c)0æ•`͈u|<³—ؤ É@^'6ãhd`bÐŽA“FŽà„âˆÉhâd‰ àEæã><ó¹ÃÝ“pÜÌè®fl^î0¼šànç(OØ™ZTŒo›÷K óÑ0¼€<ÜÌ|EÊgɼÐH úP70.âZ*@¾Ê{½û~j`¦Q£F}$ÔËóöʯ”>¥¼šovÔôÀWùûa+q6»[àÉÅÃÒŠµ¦WSíÿè>¼¢4½ E6_ÍÌ ’ñío;à–ä‰ð¡yO¡C2x²§«Aóº›w3hçÁ—]¨E\BÈŽ÷ÏYÎsB_}Ï+ôquɯœoßþe]ßóàÀ>“ø¡˜ÝAÚÕ…(R \B=“hééTÄŒpÁÁ¢ÜA +vÁ"Ò I§ç)º}qï@ƒƒï)ñ `„µ¾b“:(`Šñ-¡Í%ËŽµªPäÅòÁxKÀFÍ¡F˵Gw3 àК=>€‘g³÷-Œ¡@¥$ÎK?çØŸ´îO°Ä ¸ŠÑ¬spŒ_Ѹ Ö±êøhÝI@DÞkr€yã0_:ðYî îvÆæõ„ÍIAmFh&3}¿fEqá{RãsÄDŒ[{oïÓð€ 5ÖªUÞÃeïò¯Ø¢øŒVy70Ó¨Q£F>Pê@ÓÀVZ'ˆ‹Õ_BÖ³G¡6Ío·À£(ýãü3ŠrÙˆ%¨QúGZköý@{·³CMš/BMšƒ¬ÿµ(zG+ñktŠ’°g…ƒ@3wkÚIœ;Q®íO ð¾€KÉgM##ÀºdE€ãäMGì›”|v$oÕ²1üóþIæl;ÌÏÐ×À<ΡΠÅ1è(ZO\¤˜ kÚˆu$ìgR:2i¢)ñ&¹)Yuœ9Ö”ÚZ+(á¥IɧYݦ – æpÖB¬"\ÐDà˜ž _lúŸFœý᛿ïÐ]Mb=‰c’åS1„ ´8¦ä"\ÌØK66î—Ø”pkE—. ÆÍ+€NÍE¢`F~ôÓÓ£óeÈÖví1¼ÐßÎpÀ•ûÏàèx«+°0HEn?^XMbQO}µãÍíl9Jñ4”[iJzVšc(9ôyoÔ¨Q£F>êE³¿\5å“Y\–¾?…xšßŸ‰‚ÿ»3qI»õ!ñ‘Šq˜¬ê‚V“á}QÉûГàòý(ë{äBMšøÞŸýŠ5á:fÇðÞÇg 14w^´¢ó^ê õ”[2«U R›+ö§¼-ûÓy‚ºæŒ…æ<åç@l‰Ž8‡Ä­ŠÔ•Ê!\ÿlÀüû3ð)°8¿0þϘ~ãA`c1”ÁXUBœ ‘¾ëŸ™[­'΀-0Jl€I@À¬Öí|jD0âƒKÖÄ ÑK±Ëà¶_Çäºåfqå‚g8u×RËÈÄÂÏÆÏÜЦ'=ÜÎãìO·¸ø?ßáì¯wpWbQ¡1U 9Ö&È=O]Êð,Òë-·îÊ¥ @f\PÖ3‹ˆ#øm‡éQéqÞ8tW†wºëIâfÌ-§À"¤9Õ¢¥`¤'¼DË^ìX€3Þ~–í9ä§b‡÷m¥94fÌ4PÓ¨Q£F>` uh½…†«øûðÇx<ˆµæ×àå6Ô¦ñb (Ç*Ù_î¬qÅZSíÿžèÞúÔû]4?Àã33ÏC<ѵ©IsЬ÷ÑBîË‹èºõ’€YÜÍtR`ó­O¾£•µz¨vFæºZð”²7 ÅÅ5 ™ku 8P´X¢È¨P@‚N€ Ô2 ‚Ö~‡Ü·¢Åðà ÿd€܉‹Öð…e‘Ò«<Œ¥ô¾Ð÷ÁJܸ|H2@‰öQ¯â“›Ul§Öò ìäÕÍâŠÃϳ±Ò0à‘Æš˜¸°¸Eà¤E0_t˜ÏC]" oflÿ|‹í_ïÐ;¢ç<1!&RˆAìVéÏÀJº‡H Åh­™ƒ|‹Ã-••̱¢‹7’­m|2`¾ìAÌè¯f o'tw>0*ùŠõ+Sæ- àÄÁ[”b> j2R‚ûÖðØk¥)xÖ¬4Õ6e_A0P35jÔè#£¼°¦ ÞÏ­&,éš?ߊ•æžm€¯C&°kL&A@íÉ~IFi^uAÛ7þ(Tr€ö±ð,nZ¯&ÉìöÕVÜÎ>€ÇðÊI¦·Séð5˜SxܾÉõ»õâBxæ€'=øqºõÌ­ó©ßÁ¸_QrÁê‚¢“vÒØ’¸N’KûF `Dݳ4î¤'PïÀ€ÁÅàwdñ(Aû´q,N2}‚K©¼ºn»—Òî/ƒ•ÇV†ÜáÎd¶Š.TDP`Õ£ÅDÜ»¢%£´š@áÔKÁP˜ÏÍl]Œ°´Sˆ#‰ý)`’,%¢˜+È FT”µph Tg–d—ü=ìÝ›ýËú׺ФÕê#Xá¨h—·¡ÁŧOî‰b¤S´ «9>'QåŠ1ÁŸ ˜™‚®#`¦¿ž Z^æò‹Ì!{Ÿgd@šA#¤(œ‰UŒ7%X1·ê± bß×ÃÞïÔ iñR;y¶ç5jÔ¨ÑJ9 ‰¿¬Æ?\ÛfnfÉúõÇ;Éöõë ðåøí$JÿnȸžÑþ_ÜBi§PD¯Úï° #c4ßOÀÛY,S/6æ¾Å2U«ISò;ꑨ9T…|Í:Âö|8gã3h8÷²KÏñƒøj z5ƒv"?¥þjá µ” !æDcG ˜X’øbHÔúÂN¬2©V XGÞ Ò:yp¸ Ì ;[øÐưXCðçèóþ93£ûÛßn@?pwâÆãD4¸Ýä½µÛyC½똄x  ÑdÄ àˆŸ2`#¦’.À‰3~P?"[˜&ÀR{«€'€³S@È1´f¥É扛‰U0SMHШQ£F} ´¬CC¦!>Yäøw,îW¼“x’‹sqAûÝVþõixùƒ¼°í³â‚–õ9@'&¦ö‰«“gàj’8š]p;ûõøû(ë½ Fb¶,¤ãRŠ÷ ¢«Vx.ZîXâKŒÛÖ@…kLæ¬2¶ô0¤lÞÐ À…îX*°+(Ñ5¨"\Ÿ4F#!ý-i|…9ƒÇgS;dÇyÅà~¥îP ‰ZT@NªkBYUwŠ™Bf–xŒ°í€™1}}&€çz‚û~‡îo;tßî’5Fóòñ©~Pì­eð©|V8o· >»1ÕZs@g-îwM/Læ3Jz­0i4~þQˆ ™àÏ:ÌOLOpGèÞÍ^ènç<Ù$5P9g nÊÓŠ˜cñPRPcÅ‹`@ÖÀ^ç ã]Úw&oÆÇ=Ægæ‹îÖcx;bx;Ás‘P™ÌnEÀå ßxf-€Y—Aœ3¢ð ¦t9Ûg¥Y´æ¾0Iõ ?ßJ7Á¾ÏSzë½yÕ:6ÐÓ¨Q£Fþ Ô§ª‰* ‚rŸ´ßÌÀ·;àO𤗘’¯¶’ñìõܰ,3ÃûЯ%#T¦a IDATŠeZÔŒ¨8°€„€ªu¤<¯ï5«V‡ha°µF°…¸miŒ'=ðÛ3±Î\Ä)pèɸ_UâG2÷,Ê\µ2 ¤q# W-,­$ÎÊmö‘‘êu$.ÅnÛÄ)ûY$êJ…Xy=Y:0Éš(Ñ÷P¡]Ûµ¾H ˜÷ñšaKA-4Q–ÚWÝÇ0à܈$˜BlIà¶®éÑ3ÝxÐÍ,Áú>€33¶z¿î»×@ÌâžO÷Þj’^½Oý²àëʵ"ÛŸŒxù½0?è0~Öc~ØÃMÝÍÜÎ˵‹Š®5ìÆEäJ°vHÁGt93í`¸`É# ð/xD¥?+MV® <¦Æç¦ÇàýõŒáõˆîÆKlr°k ¡|™éMÜ´ÔO·Oƒøm›¡d¹Ê¬lÊŸ¶•q"Yy_£ œÔ)˜hI-†¯}ït5jÔ¨Q£,I þ¨Ö~°Ì¤>ĉ+ùËx~'OýŸhmš ¸ž‚ÌK>‹÷F£ˆ2¨²ÎÙÛF\Þ_Á‰ }ÑFÈ­#šâ×½÷”¬,6>äAp3;'7¿&`q·» š³»—À£FÖÀ‰*-ÑÚAéX­^ : W­XP³[™ø@—=ø« ð|ÝHm!úÓXÖv>OÌ€Œ‚޳’$¥¶Ù¼¢5Gî `p‘-+Y+DÓò¦FIR^c {K”t}Ñ{Ê#*nl-_!p_âkØ«ù¼P—d?CûBΓÁ…—ãVøE+‡íf5oÃ2)Ñò4ž‰Á‚Ôaz¾?sè®f ?íп ug¬²Mb%! ŽB;y}¦Ÿ‚7~œ™ÕƒÂ„! UPÈVBé§Ý(®°#ÌçÓÓã³þ¼Cw=aózÄðn–¤RÚÆhû°rB±¥kÆX¹E>¹‡ö%ˆMe{LJÀ”—¼ô±}Èc㊔·UZO‘E-~Zì½\ò°×Ë~5jԨчDh %$k+Ž áÇñn–¸’¿ÜO©IóÅøz–Xšù¸Azºkž &—.$ëˆÖ‰U×Cß`¹ àŠÅ±ÖŒ[%à3iQþ§@F³g ”ܹ¸tÎX; °q’îøQpÙr½Œ{2ˆEÊjFŒXè±þFÐVb!BŸÀI¨I’—h%ñ §`!‰.[†W¨Ôuí² CyöôbÆK)9yÐËøo@Û®1,Ì( `çøÄ\¼ Ð2âÓ{p1Z:Fv·¡M ûZ£5¡×2ØE<ÿ—RÒˆ¶*ü+ a6çš\•sDe–×Ǩ¾­1=&K”k£ ‹°sðg¦§›sÒ¿óèšÐÝø@-—ƒ¨¨|k| QJb•s#3 ’™5‚ÅIÓ'«…ÀèÞiùp0óÃ^¬3ŒáÝŒáµd6#Ï ${]^ NüqÚ3 RtÿWÛdlâ•/7{-À¦†ŽÍî { °’oNN¶/:cýQPTÌ]ݘS©äÙ¨Q£Fý¨ÏÀ…*Fµ¶Øž(wž!©œ¿ßIm–GðõVbJo¦ÀÇ€}.]”‚Ø£‹–Ã"¸=¤ô¥X‰!vÄ€šhá踠ydnZzÞ.çðq#ê ã– ¨aˆ»ÖëQ¬4#2׬B,HñKŠO}=…vÎ!É¢V™`=‰Öš9¸Ži&ic Á†¤¦ÎÓôå {ç\Ï W£¸22ëˆU¬#È  ø°J¨Q¼ŒA‰mOsZ(D¶6.ëSðÑûWï7 {4ùä’W»&Ãp³P±|HP§ì3`-ŸR‰åh€b]J`d”[ÿ°Ãø¬—ìf ô¯Gt¯F¸»T W³”Eké\aŸøê½a­ ɪal œøFk…Ïûǽ ¼¿p„ù¢ÃøtÀø,X™ÞNؼ±y;I!Q³Ki[̆fòê}úëJÏ.êîeÙm Ÿ‹D÷G–-®MßÛ·\¼Vi iæVW¬'ÍÅf­P.5jÔè¡—ü˜Õ²jeí”ܸ:ÈÿÀçAƒÚy`€¯6¢<¿ØHÁMÏ*—øTcHŒ`ù‰´Iex$KJg4F͉kÁ `ÎÈ­#êÖ¥`@Á‰ZGfƒÇ½Ä }±‘>ßÀÞ¨»Öuýò>YjfÛÎÉŠÁˆ+ªX(¸‚9¶ï#ð Êy} èèÀo½\“[>ïAçâ"ÇŒÛbK Œ¶üö’U”öŽC¼ tà$e´ªˆ)Ÿpñ m2R¬Ï>Yª@ÄÌ¿f¹)×P:µq”ð ׿«MDÊ*dYÓæ(s¾9LoÓãÓgÌݵGÿãˆþÝ,éªs=_>kö½ ꯙa®€„`µ0ãø‚½„'…ÏpøÏæÖ ä7„éqÝgƇÊ6o& ¯&t·RwfÍ’¡û«i/ …k’²š-@¹ºžÙŽë5K aú*øHu`BO³½{ '0qz®ò²ýØŠÆeÏåèd5jÔ¨ÑF=þËY²‚ÄvZZOŒ•ĺjÑð™ëÌ@R´ñ܉ſj5N˜@¬ @q²š‚‚®J=%ˈþðîô='K¬™¸lìˆZGŒXW,Ôž^ Ñ ] H4 ±Bÿ1Ëšv"Ów#ðßo€7³X^`ÙSÒü\F,(9ú(/»–šg±&]ÍbMr$×é"\wM¢P*ÒåÛ2>c¨x]ë[jKk¤šU \ÄÀA«E/ÒûÁºW퓵 D*`£2÷ªå§ ˜B!=±·óYÄSŒ)AM¡aK[G˜Ï:LO:LOÅm²»š$]ó•Énf\ìÞ­1Ff{lî£bÏ"¸±ïe@A-MâzVf$‹Çƒ¿ì1>ß`|¶o ý+cÙq¯—׳î¯Ý¿ÌäYÍR½رº­6FÅî=(ÿØ#–ò£®5øð}cÇGùËï–ls?ÛëÇtiâF–p£Ž”Žÿx6jÔ¨Q£FÿLêñ¿> q+”ÒÛ‡šù+K/L©þH'¥R{hÛšT[7œÜªF˜“‚k’„óž1ÀDãDÔ•KÛÇ>&©fÎê>-,>M‰–JýÔÕËÕÇx«4„s¯Æ`€‹³àHø_Û:<'€órʽTy(‹‰¥¦ÎùÎ:5ƒ“Ŧ¾Çº%¡8n­5yÖ´¥Õ¹Wxí›ÄI–·1AŠª)£GÌ_WT-7µõ *2~E£Qv­û™žc A÷a~Ða~¶Áü¨yFÿF²‚¹;Ÿ,š…ÌËÓéÆàt5²X¥Ÿ @Jâ‡X›1Œ5û™hódnhÞüa|"Ö™éQ7yl^Á:#I%bJiÒ}IkR–Šh&¥Ø´ZW§2X—DN¬* Z8Äù$ Cé\ä›·¥kI¥noO‡§»lQÑ⡈¹/HA\Êîfû‘éÞ¨Q£F}ŒÔãË-²_4µùÓ»‘seƒ–¢©T{ˆ¥æi\Jͼ™oGqsºñ&æƒ k R<ƒ0œ!'Z^ÂÜ1ÆY‰ªëÓG FÌÎQqÎöÏ©/Í÷“Xe>ß—x¾ À3À³Q:Vø”tª2±ï±é/ÝÇÛ9Ô ‚Ä]J¡Íè¾w €Xô£´§Q[:b ‡€C9÷1òÕÀ— ®u…4Â,ɦ”Eo•ÿ±rÖ²{aï¹}k)ÖSÃLÖZ’™1 V‰ÔD&ÞæÇ=ÆÏzøóN Œþ°C÷6¸›…1eJáR®¸(“$ —-¯¡bÌ"ë—£˜ÊYÄgÄ"˜:MÌ=azÐc÷bƒÝó x ¯gl1¼ ±3Ѻ“>ƒqJŽâ­\Š„drðQ‚‚wy›+` _] jÌ\úõ¤Ù‚SÏ)‚FJsnŽ3£ ´ò=–æ& Ao¶ ?šZ‘ÍF5jô¡Q¿Ýå–ÌÍÊÄ•hJßÌz¢}èzÔƒ³‘Œgœ•ŸFàÿ»•ÔÀšØÔ"‘ØóˆR”d•`$t‹Z‘ýaef¢•÷Ñ>¥r&/ɾßïÎç½}ÖßpGÁÍÎNr€ŽÇʹ6]P|èÖƒ¯fQè4¼+[–fû¾óÔN–ë;JŽTöâÄ`G²^G) µ¯ð8…ÿÚ¹ !‘“"º»"‹ý(DÌq¼ÝR£ºŸE¶àRLóñ€ééÞ8ô?w³9 V[fÂOé³ÝÜŠ8 j²åUÀQCæ!€‰¤àÃøÌa|Úc÷Ùóe‡îÎcóÓˆMˆ!caRy37•Ä!¸ÇéÞRòþ$ÀDòÕää½Z^|öŠÌ­4°ŸÆZ–pQ°bÓ®3’EÙS‡).Ç|?²Ùà˜1¾b'M—¾¸¶•kÞ¨Q£F} ÔÓÿñVü¿c½ŸbXXP `7”~õ©¿æc½ì@?M’ýìßÏÄ5ë¢@b­y;™§‰•ÇŸö`Mq´mW@9HEêj 6Nÿg»š¥ÞÎO#ð¬wâ‚ö—^ÎYEyÀ¨ µB‡@Ï¡µdïwGC;.:ðe:ëRúìC"í›§ìÏ+'u-û®Ã^^EŸC|€Ažîk7Æ`UÊŠŒG£Ð Dz>uGÔÿÓ±mGnQÈ*­ D‘gtëø¢Ãô¼Çô¨ÍŒþÍ(Å4oç¤äZ e×¢—,!±Â‹B[‚œ]`A±Î²œ©Ä´Q´ÖÄ"˜DðazÔc÷ùã³èýÛ ÛFô×Üq« ÷r²µ¬Dðá‚•Å…6G\\8gŽäį-,2´ðÁ“õ™LXó ˆLRŠ®°H %¸BrChK¼?Ò÷`ºMP kŠ÷‡Z|8Y€’iÔ¨Q£FŸõøÏÛè» {ˆ™¿7¿z¶OÔÄBÅyò ËüÐ_lÅzñEüà€w«MæÒ†£Œ±_©Ì­õòB|ÇLtHy+Aõ?MÀËQ²º]tRtóqüè€qÎ÷¯ÆûØ5¯‚ªìÍÄ6yHÚé«Y€Í£N\Î41€*û+¬â<Ç€ +î>å~Ÿìûæ=`hÚðAbÅÈ# ]Ȳ²þ#æ¶·fvLµv`£‰0ÖÖb>‹dÏ•ŠèÊ­¡`€à7Àô¨ÃøÙ¾èàîÃ#ú·Üè³|ñ3¤úò굤ÅÚ‘šëõi\Ži¹£Ì2Ù‰0_:ì>°{¬3W6¯& ï&½ƒïÅ:ˆ#øN--ÿ?{ïÚ$¹­d @FD¾ë%©¤ÛÓ½m¶¶ÿÿ¿¬Ù¬íìöØÌô½zVVVå#"H¾Ü‚ ™¥««–zé¦R2@Á—¸ûqÙNeVÚMeñ˜lLɃU3F†<ï£X4ÜKN'ÊòBQ´J+ȉàgf}`)d‰F‘Ä,Ñ&Ê»'‚3ûôžÁLªAÍ*«¬²Ê*«üÉÅáQ–v³ðT+)•ȪҤ_L‚ýòÀ_;Ð+YýÇ…šãpß+9KÒ‹m/ì{ŸÚÕØœèè¹vc¹gIúS/V§¯7ÀëF˜Ý~ìC˜À—´½$/Y§*—`¡WR€£Îÿ™‘G§¯ý¬¯J·Ï)ýeR›]ósà¥Ðêrk€ä,ØŠ…†M¦ŒÆ•pƒd­InC÷…\8²+æncÉòûÒÿEÀ¤?ã|32@‰ìÚ/Þ:ájuÊHÿ-Ýb“ö_ kÍ*«¬²Ê*$q‰Ž@úŠbú1„U•ò\³c:·ðïôÊw4ÿ—¸“(ð^WÇcßtZá_Â!§ðI¥½/6§€D`·½ü‹IEß5;ô™F_øÔyÑÆ©ö¿DQxA;IIgˆ;à^ÆÏÌ Ñ82^}ýO(ïÚgd²u0½¤iû¹6ã±å˜¡€C˜Ö)Ú,Î{"à–Ä Õ‰²JÏÒ6—}Ñ6/W–/ E²¿`SU<—žŽ#àÏ-ú× üµp÷=ÜݳÝÍ&®mY[¥ËÛÔdC+ MÏAo"Qì¥IJ€“A §Æª8^&ì BkÐß4Øÿe‹Ã?m1\:˜G"`¸r[#1ÁQr‹¯0F´¼pŠU!MpKC2AËuAèŸû Àe2¹å%'9I–í4žüN  -‰S”ÿ­^ËT–±Èee‰€ 2UFzæ Ö™ÊM8 «¬²Ê*«¬ò'—ÿH±'IKÍv–JÚLA×c—¦:àÆ®ð+ ¼oEù¿ÄJ}蓆Z¦ô®)ëK ü)žlö¥ÀæT»}$€¿xàÜopÓÈyv8­$œpÏ éå˨•²ÐÁƒŸ¼¬D·ÐX‰Ëô<=þT¥"½Tÿ¹sÊëUÛ©iÏÏôÛŠTãΨ[]–s(×—€c¼7Oõý’{°ª få9˜Jc™+œ%ksu Ù>n Ã…Åð¶E8·0]€»à>0}– ³VòÛ¡ŒyI“82ƒ”µ,Ä`t°nK%V I´$„ƈ%Å©U%‚’ÆÀo ü™CÿÊáðnƒþÊÊx<£Ý ¿p À,nei¸´((1¼ôAÀIäßQK´®‚˜¸P¤Ï÷™!ÖFrãÌEa¤D–éåìkà¥ümH¨ S¹.ÌñÒ_GhF$—À̯d4;%«•f•UVYe•?Š )”ë´j7)ÔŸå—x¢Xé׺‡äkùëxÝ€.¶ÀMþn#±'Oaâò3J0jxc œ ûF`S9æÔ± Qn>{‰£ùäK7º}oå‡ÐÊçßxR‚MYyFKàsÚéªnmÒs%>þ~)È9%K×°vÝgm£6¦  °Ò6K ¬ÊSŒ¡)AL­ßIûYß¿&æfißâ1…Å#¯NSËÉd§Ž™ [ƒáÚ¡»±-¡ùe@sÛÁ¨»Y:ÈD —IÆ`VØä”g ®`!ôÌêæç°xÝ ^xcBhå¯oÅZ#û-àAh þÜÁo ‘XQ6ŒÆ2¨¨cØ>Èv”ì‘A/À%0 ´Äãbî*/–Šž£AR MfÅÌi—'VHŒ€d""ɵDŽPù½ç2Þƒ †Væ<ff*G§KšõñÜ£½Ê*«¬²Ê*DqK;‘'*l™wJáTÇ|è?¯,ð~#.YßnÄõìÈâ~6YFF¶ì›/·¢®t>§„.ŸÜô'½ÐZ“Ë,õ{5_7’“殜Xo¾„ùÄø’¼´¹S§I ¼(uç´Ñ䪋ÇfxiªNMaMY/ë—Û'ô¸I;5dT‚nkRš”ÈÕk.ŽgÛAßÏYn–®Ýs÷t HP¾Q[öw’LsxÓ \;p`ØOîc»÷cÚh¦±bMˆfŽíF·¦<àÜh C#à­Apa£TÑ-!´acà[X¡!k$¾ÉAA›,~& 0d ŒgؽGs×Ã}ò°è`æèe;Z\ÔuŒ²Xô!±‹MóìDW1-œ,9™‚lîÓkRÍ:• &j.qMÕZC/ cZ1æôáÜ2¤œ5òÇ»å¹ûpE2«¬²Ê*«üIÅM”¾Ú-íË…Ò[~ãö œÿá(É6/,袾cðm/ni1©fUfÌ\ÐDC¨ŒmiÌÕs®!~ q@ÏbùÐ^ÜÍÞ99ß_Œ$"õ ZÂ)åaiü§€ÊK”UØÐI®Ù±€˜­—ÖK3ÀR_å$S?¤…q½¸”õ¾¨Ü‚¢Šžƒœ_ÌC£±II}®ÿ¥}‹ý.€›Ù1•¾jn­‘l®'®HåcãþÂ`xÓŸ;˜p·ܧAè» -d’âËVu#'X±p…Ƙа˜°µRÀb€Eh­‚—È"F ¼°Q³O€€ Ÿ!€Žò—ø_îÓ€Ý_Øüõ€æN覩c˜"Ö%Ò#sʯÅ·°\âõŸ°nÁŸ=pFç\yŸ”Ró¬Ô©•U[”¬.©KÍI‹Mt;»ÄJ󭲜½UÖ³; YöÆÙ‡ÿƒÊ-'­%§Ú(—À'\b€–…î‹•ï²Î ,\ç¬ÏõùÜÔÅýBìDù 4» íÖÚÿ’þOZn³ç*î^RK×c¶˜Ñ\@7ý»ýwôoZ°#‰±Ý»ýMl ¸5ð;ƒ°uà àwâÆ­‘¿–ÀcÅ¢ÃÖˆ'ä\ij0½‡éì!€B±lö Zödl /®bÔCÀÌCÿªo (0Ú_zœýû»°Jf€‚ò.úÓç&YcŠùOx!&ð̦5 GI¯»ÔDöÊLõóuŸØŽdíóÒ=cÿ|b[Š âë(Zf‚¥Ôž‘4`Éå •nN¡2$®v«¬²Ê*«¬ò'“Âå¬6ª8MØÏb])˜.+ÎVYÀÊçø['Vš‹3I@ùm º€'ßâ’K DÒïL]¨a%ów›“‰9{æ¶Ÿ;àÓøJ‰^[àG4º½¤ï¼ÿò Ș%A©·3Q²ƒüäÁ}E¦³­YC¦ˆ•Ç*elRî²UãŬ÷:^©O•òL‘伯ñrOê3f· («ÏE¹1‰Ì€€:=4Šö)k?TúÛ\ÎU9?4ncTÀ«}åJ´(È8ƒÑç‘€àôQ5W:%>ˆ÷Üü…Cÿm‹ýÿ~Žþ« BØÿËÝW-ÐJ0>¶ì±ùY-¶ä!yV:/ö‰Aà @䨀å`´—¿æ)À*P1G/ǽ€e3ÁCt’AÁª‹Ü…C÷ºÁ°³p¶?°ùé÷è'`&¿w²Kš”ÿ<ÏOþúȯcuÝ¢ú*‘GVŸ²‚æèæàP²Ö¸%ÎÁŒnfñày#'š^e•UVYe•?µ¸É‡7}г¯pV4ûAZâv¡M¤¦X\›>HnÜ4Bð¶¾mÏ¢ñ^]GjJMÏúÂ|ódÙ©ò¥êl[µÖKÇm/–š7NÛ›¸èÔ팿L“xn|ÍäDå؉Çðèeµ¾!ð…•œ4†Pµ -¿ìþ”Ö´¤0N®c4ŸjçÔþ¢»™æ ˜Ì´VÊÊNµýܾš‚œ?g5èhe!H\Kܶ„È Æ‚uãFcTÞˆ;XØð†Î†+ƒþ« ú¯[ N®÷ÛþÜ ˜Ð•~0Ë ÉËÒyà!ÀD‹Ë!À>ya ‹`eÔ=L,1ÑÌD3°PBN '“õ@ 3ˆ1fµ by@+ùeŽ_·è_7 f´{l~êÑ|`†õŽi°<Hì f0²ºÀAL#°­Õ ¤Ç¾&y”ÆË(u8ÃS¬¬gTe·B²ÆdKkM¬œ,3Nâ’ˆÈD0èߛ_(+øYe•UVYåÏ$S–³øÕ.¿d4~Ѩ™ìÏ/¾òQq|À=pÝ «Ö¥¾i…%ìÑkî‡"0uIWŸ€¨R˨Õ[:~¡ýZ„:qCÜÎ> Ú¾kÞ¶ÀÍø¨ä%îÒ9½t<§Æÿ؉Ä^€ÍVÚ¶ÊtV“߸TêÍ®Wqpd ¯ÇQPÅVÚYch€Pö–Ǥv °QkÿÔ½CÙ¿Pì0bqI.D†0Çr§«ïÄ4 PÉb[¶»²ðÂ;# fcG°ÓˆãF¦úsfåÚzQØM¯ ã×í}€ëÌ“€«ìa´—ý6º†)h¡£˜¬0 3xly9ð IDATÀȰå幡Ï/YLú±E¦°ûs‡ãWt_ovînÀæÇ›ÛNÆ8³¾ŒS;[_É_ “× M¯­?i’‹ö(,±~Qg°b[å36‚—ùÃT;–Õ ,R®Rƶ1y&&ïçjŒK ˜ò]¿‚`£Ye•UVYå?ZÜôkŒÓŠóÔT”ŠÔ'ôÀ§ø>l… ìÛ pç%HýуBöA-÷êïÉì|Ì5YÚÿ€“› Éà>H’ÍÏøÆÊ¹½r’`ô@ã*ô—Ž©®l×ÀÆ’DšÚ#IJ”3m@\ó‚ñ.ˆEËDþ·<‡rõàø“ëí,TqÆp¦ŠîRðøâ8« °Ôrk}ÊsÄ„Dƒ“©›P YX„5Œ[É·‚EØFàBÓ²#µºHœ“¸ƒQrƒBÊ­b `9µâæÕüÜcó?ŸÐþÔÁܰ{,öèݱs @’{˜ö+sT‘Ž€Dœ. sfËæ)ÄË¢Aôùu4Þº× Žï7è^5 ÀØ|è°ý¹Csïa† TÎúš‰×”+—,EøÏ_cã;£|×HYÉ}2}ÅUÐL(²¯f¥cÌñµ2f#žŠ&uË4a3›0šñß0HßÊx¶Ê*«¬²ÊŸIÆÄš¹׉küO>zK 4g_ó´üÜí$WËÛFbNn[‰C9Š‚=ÉëPö¿ø»ÿÉq-ì{Î芀ƒkÓm?’¼k€¿Z¡¯®Ñ7ÿá¹±½Ì ÊrvP sc€3 43«HÍumiìTŒá% ã¹±NÚÉë @"Ek…ZŸ 8û¯Øý×´?÷°^óµ„ä/ ìuúBÈòšT1BñªH¯„ˆ"xZ’¶‹õ6;ƒáÊ¡ûºÅñë¼%4?ØþxD{ÛÃyfžÝ:†¸žãžæ`gÒûHbÉX<[¯™4AOn™!R@Á'/û˜üͱVÌõã$>Jœºô)˜9ù$äógêþVR>ã+>Ze•UVYå(£ËY®‘Ä/ê¨ÑzdŠ•À“kÀ½«Å“:~ÛŠõæ1aP· ³T<ó;Ó–N”_»¯R‡ €?yI²ù/çõ¦àöstÈã´_ëë99'×IW•¾Ù³0™‘@çÅæ–’Sc,Çô€ó\ÔNq`p²U¨U„-äÜ{=ÿ\±.5dÊ@ xlGËØh4Yç†ÄâÒXQ6Ž`eg¶V¬-;«ÁúbaA£V'`+²°!@Ãq3?Òwê¦ôÆv¯4ÇJ{]Âh`„Åá_w o7 ƒGóûÿç »ÛÃ~`;N–8,!=þ†$ÞdkÄãfy-’>»~4¢˜âý@ùÁ†v„îm‹Ãû-úë¦cl~9bós÷è\qÄ•‚@re>·ŠŒMg– ü©ÜseËÓÛÚñzšÞã#¨ËßK3µÞTÂ3£ÔØxAÁÌØŽô´ð@2§Ëã—¾ËVYe•UVYå ˉ5K·1 ²Œ¨fEQÛ;z±büí( æÛxí€o6’¤òÈ€÷˜Y‚Êæ)å}²|⸗”?·/vçzòÀí ÀæÊÉù½qÀ÷F,!½ÎÁKÓ—ö¿T–]‡¤¿Ä%¨cðc÷ jÌHÝl EwžüXUærÝUÚÌQUlÎå9é% ˆ+…pÄݬ1É•ŽÔú€h¹a,1Ÿ‡•9H.]N­-- iä/4™$ï2ð²S@ÓÐx¬þƒ3cžŸè*4(@QBXW°0Œ–HwLÑ £tǦ†1ê%¹¤œƒ¡ûvƒ Ö!s hìÐüÔÁÞÂFç-Ä™‹ ,÷‡)²YÂÔ¯õÒµÑhšãEGhHˆ¾iÑ}Õ‚Bó¡ÇöÇíÇ^bvµ03 袬žvU²ž%\‘¿§€©©D æ9@›WÁn9ðÉÆ°„Y&R¼[a„–9´F\Ír}†Q’*Ç›¢¢ï¥¾ÆñœÛÙµ·Ê*«¬²Ê*ÿ`q“40UPâ9§q®(.)‹vÞPùq‹Ç<ðS\…à*#xðhú8ž'øLã£q;{9Êv¾¨îì‹â|ô [| ð¹’\…ºzX8öTŸ/‘SãZR4kbS%dØøÜ‚vf’\õd_…*ÔÍ¢[X.íèÆŒ]ÄFÀÙ¶hé—< hlì½2ˆ1¨÷  å ŒaÄÊÄÖñ˜ˆ2‚ À7‘æXc)TÉe–.¹ÃðÊ"´îó 5ïPWÖ¥f½÷„$$»0•{"=fÙz“´cLtÃ"ýOûc¶ûpæp|×âð~ƒáʃÐ4ÿÜÁ<ùBS…}6©NvƒDö² Lܽh~ïq§v²ä‚†lzª4>žOz3·3˜\'–ßÐ¥¹ŸlŒeú•âE؃–문e•UVYe•?š¸qu³ÐŠ'_½òË?'KMÀô‹?L,`åÓ 7Øm„êø½ZiöAb÷Bµ¼”èµi›Æçã׿.f÷[¦¸—k%q?Ö(Ms#Ö™ ÷è±ù©Ãæ—v?Àdãx%+Þƒ¹ž,6üd¨Ù½›ƒ“üÜkS09×É»#ˆÊÇÄÓǤ:—1u¡ã Ì›Yf"àÍiÛdè È&{åÅùxª ¦<_®UXø½Ê*«¬²Ê*¿“ÌchòÔæ¹ä+–Ñ ­=ˆ«§eý¢ îWøQ Î$†ß´Bãüä• £Ò–¯–Æø’rìw¹Ùyæq6Ï)çKð¸?°äw¹€=ðM#çõºÐv7•nXXà\Püª}>‡fžc ¹‘é,°€3É{BAÚ’¢²r–êc Iº'ô>2ú$7Kº¿"àР{jGÖ0R71Þ(ˆÙ9𙸅akÄÚ²3Wá L ¡À½RÅ^W¼i`ÐQ-,ƒN(£¥…P9.a}®^b¥L\EWË $Î X(L•óœA¬6q®€C*7n-†ëÛak`ï=ÜmûY©.­ä—åÚ§X²Éóæu'ë"EÌïœäݹqÀOFÎ9æ©%úZ^Þ÷sc8©õa¼刎üä…V»%¡nn5Ž&ºÇ} p‰ñ7E›Æ6Ôâ™kXÌÃÍ\ ÿx«V£¸†!¹†°yY(þsC£ÅƈÄbÁNmÈ3Ì£‡¹ía½$T—0:„dq¡ÎK.–ŽGæ° ¼‡ZZ LS™•…1ZYr½’³é¯¢îü:-ì>x  ñ™ÁðªÁpí"Ÿ4e8Åçk8³}T–“æõáºr^UžEv„á¢ûzƒãûþÜ¢¹°ù¡ÇæC»÷2·å|@”íüÕ”N#¾*¯­t,g e2˜䢯Q±—’2œoy!e:˜Hr#ÏDh üÖ 80`¼$4M´Ú4?‹"¤Ul ò8Ô³º,i÷+€/Ì]æ¿=¢ù·ÌÇA¬-.aGú  dP€4ÿ‹\7“)zùt'+ËK®Ý䙈ÚrÜóݵòR$øK‹ámá@C€ûØÃÝ 0Gºi°ÞV¾­+óäÈ`Ü=1}XØÓ„ÐJÍÃwt¯g´¿tØþp€û]ÍÆƒg´Ìåh&È&k,$ÕÖO°Ù¸—äÂéÇ6 í”´Î©»P%ËÌÖÀ7f¨Ÿ‚™‰•*o0#`ÐÌPCãØF´²¥ø¬¬2óxb/¼mVYe•UVYå?B\òÛª2™Õ´ã¨¸dÊÿ °È±3v2*ëèI¬1?ôÀMœm…ùìëV@Í>ˆûYÀô#ž÷ñªÀfétf¿\ Kå= «Ù‡^h©·F⃮€œÈà–+_“¹ª4\ëkÌž*¶£•ìI,8ÓäšØ,JÉ5•k€éŽ5qÌÍâ„1 «naBwŒ]æ¶5Â.¦ÖVÐ"I*1*^šLÇó€^”>:äÿ„ALbY°þ› ¸•Ą涇ûï¸ÿëöN’Oæñ,`‚‰Vu§ŒÓýUy#®ŸÜš§Ê9ߎ pÁµgézg ‰[Ý`x­îfû<ËÚ)dw• sÙtà“Çú„æÏ3oß¼Ò4ßoÀ[ƒæÃ€íG´z¸'¡iæ2–+¾ªxz.éÔ†PÁ`3à‹s`BÓùçrþ+S™¢i|̼ýt€5B[½W3 ˜é…ÙÎ(Aë â–ÉY_Óßéõ’ÀIV@HïÓÂK “æ€B9èUVYe•UVùc‰± &ÿ[ʘHbá˜)°á|¥/Ö‰eÜvÀ÷V¬ï±l|Õ ØéUñ.ÇRÛŽÀ4RåñKJ[8 ìo©œ!+ù÷^Í'œ;àFÏé'#®tý‚â—›j4õBÿ§ªÖô‘XÖ+«\ÄjrfÅ’´! XmŸ]ÃØA-,$ôÆ—Û‚­ÔÚ ¶B,  ¼°£‘QMA , CÇD=‹Û×at ‹q-t ^:èJ64Ž…zÉóÎ-Ð mïÑÃ|`>˜„”ͤð-]Wd÷z™Ä3¿·è™r þ\¥g'Ó”³¶’U sñ˜ØüÎ`¸qânfIØÍnûÑÝLA¤xÖŽ”íÀ:èÎr –꓎G×.žN] l5‰æw;ô¯Ðl~:bóÃÍýò¹%eú€F£ Gå|Ü%µÓþiÙ ¬`94"-”ó›²*ÖÁ¨Úxþç!º™ ‚ß¹6Ã*óQ¶°ˆu‹I·)>:<žó È5§ ¤çÖ˜ιœ°žÇ䜊9^e•UVYe•ßK\Tšg®gq91_r¬J¦™UW£´àÚð<!¸V‚€3|ã€OØbÕˆZFNlglh¹òx •¿¿Ôb%æx¹$‰è»¸0âvvᤠ'ˆl"žZR¸ø;­ŒFd €p5hvÅ ¼qà‡F’œj@>4™$mHãY l4Kr S°’ƒ–{^ƒðÔC˜Ä:Žhy’¨rNtCÏšR&)æc³¸…éÛ+±y(5r×´P¹K2»æÕ›½^¥²’Ÿ®ÁoUˆ»Ù…Eÿ¦¿´ áîzØ»^\ë2ªã™é PKÈbl¦ƒ¡ÙyæhGKt¬Ü†«Ç÷[¿Þ 4„Ͷ?±ùÐ µ5ڦ¬¦É91YI–šxXŽ>"D)Þ9‘ÉØ_1Ýåügï”Ú¥™Þ"j¾1b™Ù‰ù„hÂxH’P33„bò&ÙË)¦©huŒ„j‰!ÎÞ‰™Ëdéwê´WYe•UVYå&nÑÒ2‘âë?StÒRå´Nj/*R Ù§Y”UÜinš+ |×× ðX, ±ÈLVÙžë>sjuThx§¾(1'ÍMzm7Üö"JWŽ ”çPjaÕ˜ªHæîa9k˜A ¸Çƈ{ߥ Òè•ÿëF,e™›˜ÉöGÐÂV‹U`yÀ±×$©½±C+Ê^\à”Çè$Ž4_ó³ SÚäÀÊx7Æ€¡J›LÚä2©Y@’kêi7ÉDTåd DL®Y~?.h†9 >ÙÖ3åKƒ5ÝÍÞ´; ûÐ|èáî5yjÞ ¥iÛ-H9Q†ÇD·Óg<«;QôÌê;@’hÞ9¾Û`¸±°]ëÌì£2±ÅÇœkýŒ…&12ÚmñJ›ÍaåZLè–3P__µù8¥å×páøz$øÖ`ØZ ;3‰Î›už6”š]׿6¬Ç#5 ¼ŒÇRnÍ9%+’Ye•UVYåO"ËYüêÑ\ÈWpóåÏ™d wMÙO´­EQ)Ýà—¸êÄRp〷¸kÄ@ïø5Î5–É6fÚD\AóÀÐ\1yØ”ç³p®buzTr€Opm$¼rÀÎɾ‰†²0g4þM÷sÀbñ¿‡…\Ù¿ÒXuƒ€’Ö€¶ØøR]ün4®ek@Íøk ·ÛbŒ´ ˆÂ4È¿XYéÄ ‡ü¯Wp¢LaƒÖëXÊ4×K\M¦02:‘2­McY²k´t/2$;»…0œ) Ò)¿X¼teÑ|÷)ðô¢òyla«îf7¸›Ýp·=Ìã óXë·6þg€Í¤ p³S›¨æè¯Þoqüª•$š?uØþíˆöc/4ØEÇé5AG&)Þ¨ö¼WÊN¹¥:•)ÈAÉ ³{G_‡é6Uw±`ßô;+Ö™˜¨U­¤A]9Y^XrlÌY”Øõ8±ìÁ³Zºybgçxf_ñÊ*«¬²Ê*ÿYÄaòÏãN(}§_½ŠvO•ý‹njª€hpëD; Vèz¶µâ¢õ (Ø3à}ÆÌ“õ?ÉfWWTjÔR1‚ªâ˜Ùùœ*[@:q<]qßÀWêJ÷¶®ŽÀ' ~ÔÔjÊ¢æe‘€|z-C ƒäÎÅË¥<™Ãhê¶ÑíZZ–š­.5)¥® t}š|`•ÑÒ²h¢‹˜‚h"ÉèJFѥ͓&u ݱ\ÇI2Éü~‹Jav«¤ñQ¦`rVYцÎSJ”é $ñ4f$?6ƧÔú¥J9eãIãÏæñKýyf c©\ ƒÀ_X Ñݬw3÷ytá:Ù5e¥Vÿ©Ñ=çc$ÆçÌâøu‹ã_6è/,Ü>`ó}‡ÍOG؇aN+]ÎO6¬ ލ€Xa2m'æ{Tø§•(¾«* mr¿Å›Ð(QCH¬…Þ‘Xf6ÃÆ"yçRÏ€%(ðŽ$B 0`dò -–Äpö<ñå—]Áݬ²Ê*«¬ò'–YbÍÔ,(ë©(Ó:ªÂÚ’étÿtÅ”äÃ|`à£~è”í¬*ç¯;]:T´ŒZh>„R LJNl¢¦S«»p:Ó²bgü9°ºuÀc+¤¯ô|~1j-à´‰Q,æWÑ– pQ€’,-œeû4X_˜ÇhŒg‰TѬÅÔ{à)Z2 Ö°ï Ÿ:àžèvŒq+Y°¾äcر°@“I*@‰ƨXOæ1GÕ˜ßOÅeMe¥â[Ö'hŽšÌ¥§gYÉN¼Pµû§6.ÊËc˜4°žãÏ4'‰æ:ÁÑXRž5Ÿ†MÎÂ_»1™æS€û¥‡½ÄÝ,[¶“ã‡j¹*åJ@t³´à±D„¦¹åpünL¢é~î°ýÛÍǶg¤Måõ-¯A ¥ÄW gU'¨g¼1Žæ‹õxšn&ƒˆ˜Ç`ý@ÁÁ‚!Kfœod›IÁË€1·óc¦ÄB”¡ &Øñ8WB¨ºôVÎá NzÑU¸Z·þj^e•UVYe•¤¸¤5”ÊIúͣƅlßd£Ø?ù™µ_©KTÄz…¦ùç^âNÎ4Îãm ÜyàѾÈM3ù[”¸LúÏ€Íøª[+3Eg>©ÛÙ+\àݸU_*f.ÅqZ°£ÑÒ²%±¨l´ŽZZȉK[xa¨kÄ:¢ #1ÆÅ }ñ¾vÀ?m€ úèÛƒþû1%8¥N«èöÙ’Bº&dAÈQj oUÙ)Rí˜%Å9–H”œ52fêÃhJÇæZ*×û\R¬+Ã_.¯ôóì1'$!K;Ýb¸nÀŽ`¸ÛæÁ‹;_~L  (ŸY\jÈN–%ðÊÂÄÀC2Fnqüzƒýûù…»°ýþˆÍO=ì~H@sj¹Íúʆ÷;Se<¢iSÞŽŽùK®­ÔÏb[´½Z¬üMÛÎÀǤ™$à†£Ò¯÷¡ñ s0ú\Òp Ä -ÂpqŽK2!Px¦î*«¬²Ê*«üÅ¥¯"€´Þ›¹XLÍ(K¨ Ø¿^Æ4ÕíRÚgÆÜ4—Vø+µÒ|ÄŠã}¥í²ŸÊr&Sj§ô¬°É›ªœ9,&“Œ±, ¨xR@qå€ÿÒ>o{i»1‰êxò¯É­-$@¥Á˜ÿEWs1@JPƯ!€; ¾OÀåI\ÃpP0“ßm@;#ä=ƒèç^ˆN±,Óû%ns¡üVæ¨<ì¤f>ï§ÀM¹?Z¹Zÿé!s•'l\§h¡O’×(—ÆÀ[¯eÁhn˜¸–õP?h.— ”Ì,2“%L*ÊçÛѽF J9ò¡1ß s £×’\º6´vtÛû™ZSÎ ðÝFr½ìuÉ5ë AøA HÀ‡ü=@É8z,,àe´Æñ‰o‰±0qÅ­=wx‹˜(Q!W“IBWÊuŽ'Ó<Ç“:´Pe;4uÉ*ݰÊú4öˆe€ÕÕŽÂ ºæ%À¬#”uNÈÈšõ—u½þsåpÙÍ„3³v3û©WÆ0B8Q±^Q¶}rŽô™ÀÂ\fã:i‡ãû Žï7ð[ƒæã€ÍߨüÒÁ> #W톨'ÓG{aì³Ü4ÅõNœ"z2q##‰-.¤.c ^ ê÷6Ë Ã,Ï«&‚¥^ž7†¸ 1¶ °îa€ÝËóJž%‰¥)pæÇ ·èŠ2VYe•UVY%g9Ë‹ íbjË 4/ŠmH4QX(W<ðs'Ö™­æ¦yן‚ä¦I+™4ý¸W»ã)Ë•®ô—h¡è®AŒ…ƤÐVbl‹ROï“¥…ä÷…Kùh! âÈ#cX<—.O"„î8ZUXîyüÝ«+Yt#‹Á÷s IDATÑ 0¡:E)®üêdd@û~R€†€·‚‰KĘ)ÞñÖä”2ZÖ9ÕÖL¡_Ðð+Ê“hªÙ(8‹+àz̳À´ÅòHjQ96–—@*õórÎf.”§s,ΓÐj×ÂnƉÝlP äbÞj®n§LY>{¶â‰× !l Žoì¿Ý {Ý‚‚$ÑÜ~ßÁ} `j;n¦†áØ™¼“¦SÕõ'· K˜—Z_˜XŒ#kFðÒêvkä·Õs‹ãŒq/&Ä<aôë”øF޶pî~€}òɽlLr™^lÿ¥àå·9oAÍ*«¬²Ê*«üÞâfÊÊäkÊSeåv~gËœ¥äZJÙDÖGþñ ,Ö‡ƒ°ž]Xàë¸i€w^ÀN×K¦÷™#|vÅš' %YAh¡ÑZÒh-ȸÁV4K-šh2¹…E÷¦˜«%*Õ¤K¿ž¥ÏÀý àìikÍ1*ÝÈ&à†¼ø)hÑd’¢•aÄ£³eê\ŸUM)Ò¾ð¨n/[>³ MæªÅ˜.…§kZÜe·åu(Ë‹ñ¥¿å}TÖãIå<ßOYάV  /מOô;;/ýQ¢–Ú8‹òlq¶àÏ-†×¸›y†»`ïz˜ƒÄ`$äàŒg†›‰% Y¿µ¡Æò Šýò8%odp WN’h¾ß ´$®fßÑþÒÁLÈZÎQá’T^A'ë&`4Æç0h$Y¼KhC#‰.‡6#–“å‚Q‚ ÓÐaŽêÞ§y•¨  [ vªMÏpOÍû÷£ÛgœW^¸ –xI€þoVYe•UVYå?B\R„ÝÈ*š(3«Èä ì˜‰’¹z" Ê*“Þà—¸ìs\:à>[qKÂH_•¡¨@'°BY®dìa4ZW¢»X“Qï2&±`-2´DË #Ѭ"(8yd`Ô5ŽÞ´rû|ßÿc/´Îûè"--s‹%ƒOƒ–SÚI^£›˜Ô2¤𠵆mhÌ=sR‰,ÄKÎäÔ±—ûã9pV9º0æìnšô“cW²p*Õ}%È_rI[jë‹Ê àUÔ­¿r^·;sp·½P +»Ù|ìYÁ‚+Ú"°«ÍIâ&‚ß:tïþ²AÿªéíGl¿?Â= c¬E°ÅcÐü¤ÝlÝÏ’°‚•ç6¹wäfHà>ˆÅòâ¡!øFË&1jM FþH„¦zrs0³·)˳ÄÌðÎ"œI®™Ðe¹Û{4v`y/L¦þ -!¥ÇÐÓÙ*«¬²Ê*«ü'–Ñå,ZJrÀ‘fª([µ%vÊÚ eµ@”k+ ¤ÄÓðÃüÔ CØÆJ`ý»xà”'eb"ÓWtkÌ”=¬¡Ñº²µÓ\-ä4± “Ú#bÀ8Æ´ôÑR2Œn_þ=èöÑË_†äÖùß<ð—­œø1˜ùk'ñ/y‰I®Bé<1õókQüÎÚ`½T0<:æ`H¬3;n4ïgU ãá7) ¨¤øLõÎY<=sZ9ZR¶Ës$ Õœ0C´Ðpý¸SmÖÊÓý› ¬TðËñÿªòn+ø!kÔÊtã€3+¿ èÉ\O&ÑÍåÔ/ý®)#¥’¸¤¤œâs(0hkA;§Ö´jgÖ»Je¼<Ÿ–€“IqEæJ•Õ!alXóÐ(x,Ä K$„1©&åq›‹¾&õ+±6i*Óvh,—ka Qw³ÈnöS÷Ñ‹ÛS([´K•vk¤öj(-ºE]6Ö ûªÅñ»-†K {Ø|Àö‡îÑÖ™( ,i‹€›Às8Y#m£10šÀÒo-üÖ¢ßY ;q# ­ó‡øúñò\› xñ°Oj…Ù‹K™I âRÆzC$¤ÙCwÕ`Ø öàÑ’Úºî%@V`¢EKÊDh´Î|»Áñ« ØÚ_„¦Ù}èaxØGó¤V˜ÎÃY4x|O( së3îƒþÜ¢»v΄Ñ<š{3+4/ƸL§øÔjÅ‚TžÁ¼hÅ2«¬²Ê*«üg7QB£–3ù­5SY\U¥BÑÆÕ÷Ú’nö¯ÌÕbH@G>rö°­×° lŒ(­^“Ð:EÁÚc’qµ7ZZö |ZŽbû×ÜX)f7Bq#y``”}lCð­…ß±¼œ[ gÃÙèFÆ­ÄÁ°00LÏ¢ö$®cö^ó¾ÂÔ% c9k\[V‚‰P· o“´Mž·™“0g(nšVX^ÛÚ5{î:2ÀÖÀ_8 ¯„3 :°|$‘clç×€²j=+fmŽý±% ‡o[¾máwîsÍß:¡iÞ#ØÒ÷ˆäzÒ€|¡acà7~k0¨ëXiuÛÁ+À‘ä—rošža¤HÒJÍõòàÅóäAGµÒèbyy/p´¾r2_'戡`æÌ¡»vè.|c`ŽÌ pò•i¯\ŸÙ«¦VoE«¬²Ê*«¬2‘ÑBC…¦U.¡GÀ’è ’‘¸DÐÒ˜©EÆÑèd3ЃéMN x— ðNÀÀ’CåçøØ Õ³”Çq)4*ã¹¶X—(µ•ëI½R£_ªÉ€ +Ⱥ÷BEý•zäk+D‡1çKÞM­T^©´¤ð”UË©è!.gG¥jŠV²T¿Jò®!È tvMKœSnç@©6ÆÜ­.2}åãÈÛ'È*}׉²9öqB,ïûüD—æu¡|/“¶•n¸ö¬¼v,ä¼ÂÖ`¸ÑdšŽàn{¸ì} ¶×û.…ÉÁV6ç³q†l;N{œr¦\çÌ$ãê_·8~»E÷¦Ææ§»ïh>y˜Ç"ù™¢[4p83Bu|nÑ_8 çbÂFùƒ0Gú㽇} tÿy€{`½€›}HÁü‰=²˜˜3'.h0âû"»ˆ ÷ +€ógýµCwӘ隇íý·Ï\×âÅþ‚{¨,_±Ì*«¬²Ê*«ÌEÄ®BV§Us‰îb1‡‡ÓíÈæL\2ÐÒ`j¥1Y;€ZT¹ßcÌß]‚b>–è ¦ùCÄDÇ{åc|Û •óFXYè‡]u¥PWÆóò >É4»r?Êcx´ØÌöM·“ÅÆ øÂ]|öÈ®œP:ïÌÈÜV“dÕNбççY3[ñÕ9މ=Ëõ<3@c1 îÉÎýÄsp“†º¤UðÃl{©ríZ€!°“PDˆ´DÙ¼^¹¨ø¥9g–dÒþÔ„su7»²Ên6ÀÝõ0{u7Ks/Ïçg$Ÿ/%“À‹„]l¸r8¼oqx¿EØX4:l¾ïàn{g ê2ê7üÎ"œ; çÃ¥ÅpaáÏ£F蔌.dO퓸¹ûîósïÑì5˜¯˜.€|¤S–ç.%üT7²ü1ž\ *ÁÊÅ"fÃ΢»np¼qð;êîq@ûIè™M¯¬zes¿•¼ð¸/Íeów¿Ê*«¬²Ê*¿»¸8ŒZJ O­'Ñ¢K´À¸ °DÊãØ _¿YíDC𘗌-,•Ç þI~±´I$íZ—¨¯htÝú¬†!¨"MI‘c+ ¨|­‹z/6ÑQÖχ¾óâzöÚ;^Ya;û!ºÜÄüé ÌÝÂ2Ë@œ"ÁOe^›eýº*¹ö™ÆŽˆŠ¤šÐûŒçØ,of ØÔ*~ X*®ýÊx¸1ð—ên¶3 #£ùØÃ~:•L36©¬Ro©¼bQƆvÝ»ÇÚ¡-q=í‡îsÐß´âJvfÀ\Y — `¶ÜJ¼ [€zÉñ☧÷8À}öh>‹Ê>#¥òÁÃöH˜Dˆ Ï=3§{ñ‹$ñì^c¿` ÃΠ»v8¾j0œY``4ÚÏÜ£Æ •$iúëðàY,¿4Î @Ze•UVYe•?º8\Ú^8YaH\År°’+‡#-cd ‹JC´¸äØEÀm*)žE5_æ±Ý‰dʪ(Ý·ƒ€€3'ÈÐ<ù1†ÙŠeü€Gm;jر?BEÁ,µÃS’®(5âèÉ{`¿_騝œ” JðÜjå³þž7e{]ùnì,¨¥,–i¡Ÿ¥Á-ô5³Þ0#PT©1ÅjÕŽüermÙ‰É0yN®?œ÷[¶©cž”£VNãrKEYŸ0Ï•`¹Š¾@rEØDw³þÆ-Á}ìà~éaÇÀój»Ù&žq.¤Ý/0ñ`&ˆà7ÝÛ‡ÞbÿÝakàîÐô7$ÿ<3.Â…ß:ø–ÀNèÔiÌQ©“ŸØÇ îcŸ1æI\¸Ì^-0š A,V¸ôúˆÏyœËûów+ðã³%±Ì¼jП[€æÉ£½“¸Ûy3|¢ËÄøÒk°Ê*«¬²Ê*«Þ4#`1<ÆÆ$jå¬vÏH”Vß‚©E%ËÓ `%/3…‚ KI¶êƒ‹x€ÅíÁzqÛj7nÞ8àaP·©šäò5[ZÎ@Èduú9kKZjuó ±zжŸøèÏèr\8ð~4Çâ“ú›ÍAEJh ô¸©4ÆPêfab£Îƒ7͘˜ÔVúâJS©‹§r<M.óÄ´“K~O,)äéñ? ª)dc)Al9®âÖ\4#%×ë/µ“Y¨rÊ‘XÊ5nÅB,¯ü¥ÃÞõ°w=(c7«>ž”gä<=µi~Ý6:¥OŽ@‘LãföÿºÃýÿqþ«V޵@÷®E÷®•<1 +m Ó¸G»ë‹»`?+ xêBæ%¨^sÁ](aLøIAåof©X(cCðƒîJ,3ý¥@p÷=Ú»^Æ~Ф›ÿhò÷‚œ ­²Ê*«¬òŸDÎ @F-$0&‡äÑŠL Tbn–h©,Y£¦#‹'Àe²1J\a%-:Ç la¿q9{å€+ ¼jÔmŠ„iD¢ Fpc –šSr ÌŠ‹ºÅ¥ë^)œß4’_çu \ÀCºÂ[]µÏÚ\F©DOêr½"CƵWjkMRªõ(®PŸ»ªrX8'Ú¡È¢—pÆ V;Ç( ÌÙéØ=IRÍœE®œ†S×ü9@9é ëÏ[.×{¶w3ÿºAØZ˜#ÃÝJ0üÄÝ Ù”ŸR\“ÕŽçÀ\x@À Yu k ~k¶þÒ¡¿±è¾Ùàé_ÎÐ}ÓÂo Là¯üµŽ™NÆiŸ„u¬}ð°j…q÷f?À=°ð÷’7bu R²äʧ:!Ys™œ^FrP]6)izy:U“i#€Iâzº+‹ÃëýU6€}PȨ̈n/V²˜y)h~›˜—€¿­²Ê*«¬²ÊD?ú¼”.aà‚q»ÌÍR“\AL`&I)¯.yçÎ÷Eë‰çÑõì¼p¾j,ìjY“ pˆ„±©:ŒvÊcËóäQ#:Œ’öOÏbaúèåï'Lg׸5’#š”Îæ²p©œç Ñ’rÍHà&mö ÷ªo °³@Cs÷)·”å^Omæb•O1Å:”ÕÉŽM眵Ï8º©¥áKÏäXb|ǼGD¢G™ $Ãf¦ÄÏ@ßœ}ø˜›“õ³²ålacáoÆdšî®‡»í@’¬r†{—úšµ¯óhb_*e™ ;‡°³Â@vi1\‰…h¸jÐ]7ð¯$¡dØØñ]ѱX^´$ëËçÍcײ'Idiº É/‘F(-ªäóZLdîó²ç@6ôÙŸI a’_g¸²8¾nÑÝ4–`=6Ÿz!Øg MËqTšMø|öìV†õg—S‹«¬²Ê*«¬òwŠÃ/ýR`ÁÔÚòpƘ`¹õ#&Û¦ùÜZ3ë‡QZƒ½¸œ}Câ‚öÚ8z±6Tσ§Äåy1[wªŠJúPg§VúãøÄ-îS/ä×VXή”í,ËI3Éi“£|³>³kP*L±`v ¨=ƒ<&=mH®q9¹iéï’"뜲Þ,)x H'Ʀ8?Dâ"g!q4m³°œñèÎLâIóË`Z>G^Ÿòú9Øâ4ıÍñàIy ì´v@qcá/{7À~»Ù8bá\òö•† @V,Z¡‘Ī~gá/,Â…°© WNXÈ.ÂÖ€7VZ¡•x%ò,‹öØýõ€ö§ÍÇæÉ«{™Ò-½Znã9îóÄÂçx|gè‚`Òç2TVï·X¾€6']6CCè/¯[t¯„ÆãÚ§íG! _ õÏ GYôŸJß?õ.\e•UVYe•ßH> σ`YYM_üüg¡íç@$×ú&R®”—ƒ‰}pç³^h†¯¬Ð ß{`o5Èž—•›˜«ƒ²UÛ\¦šå°'`«f±)O»gãÝ|Õˆ%䯗V\é†éñs`£ý¥~¨:Mó¾i~~ñue{ôA”Ô3nŒ$Ð,Æ43Å{i±ï²Ïìo"šÈÈ5ý²~1ãüÈýe@Ö;)»YLª:e§4öWȳáç㩜ÛxËÄF´\Ñ®Í 8óWÛáÌÀÜ­ÄŸ/P@ 4ÓIÂQØpCà&²<7;,þÊÁ_; — ¹ÄÉ„Q€(ÀÐô û8€$‰nØÇ€íÿxÂùÿý„Ý¿ïáî$ ºã&èá˜ÒÆi qÝ#¾*¸¸µY Îå tV¶g ¢‚cª˜[ï¯à„ÌàøºÁñuƒa£‰3? Ø|ìá˜Aé™À÷¬“ßAþ£€ÑdŽWYe•UVYåw‡.×|TJ%5®¢çŠQ’ž€äS‘“ÊE«Ì³Ú0cŠ #A€•¼4[#®g^Ï3í3[FŸœ#OɪA `•íTê•s]úƒ$ÔüìÅ]îR]Ï6ƒŒ9ÏÌžôõ¸L,KešˆåU圄5êÈÀ>€z7¼3 Íó3 Ϻœݬ߲li\Å|Ë¡Eeª_É¡FÆ–KjÉ!˜¸‚¦ž&–ÃQû¬å`ÓByYƳóËnZ¼‹f–À[4þÚÁ~’»õD´¥u‹HÝÇF6Vúd±Àˆ®•C8×D–[+€‡ 10 óØÃªµ…ö0ýÛac`=¶ÿ뀋ÿógÿïÚ}ÊýC^wÊŸ«rîÂi¼ê¢5ÿ9+/§}©l²S^‚%ôgÇ×Ç7-†…é#˜é$ö'Ò3¿A<7Ö/>ð¥ÇÿòGÃ*«¬²Ê*ÿÿ©EÓ*òÒJqRÂ* $/3ÉÀGm_j•íHè†s׳וó“øç£S”ká³óåqæTpn•€o¢ñWÎ-°Œûó ™WênvãÄÒôàXérÒ¢œCÕjSë³lg\!±&Oꪷ#q9k.‡ì¸8å4Ä‹´ËÙm6RgSFÖ-~ËTJK¤×‰˜åAâé8kÔíLv)¿e ¾T¨œ h`îšV–§ñaO”@ès4‘%åšÀŸ ¯ø+†»`>D¯9‰…-K®(+±akÄìBÿ]5ðךæÜê~§‰HGc„iÌ> pw¼ï>KŸ¡!tï78~³˜ÑÜØþÛ»ÿ¹ÇæCsôÉúÙÚÒiÖÀIöÜp^V˜4÷±Í±Ò)Õœ½VòI¢³‚F¹îuƒã›ý¹yFóyÀæ¶Cói€=ŽV?®Œõ%cø¢ß_¶»"¿f'ÍžÑ冔¯²Ê*«¬²Êß!núÉ~ÌhŒ‘i"± ”¿¼äÀhöñ¬ª|L$îãã ®g[R.'@g„ OZ™3§åÝd¸ªÐS`ë¤ñb>_“ñeæóCc€nà—š+ \àÎ_ ÙïldØ/7Ü@ðJÇbÕê‚ÔÛ(u³32gq%}‚T sCs‹ÆòÙÔ•—>½h'›„}³!p#Ü)ÅÏ”li:hj š¦"=Í :+Õ¥ÚY6ÎÔ/‹+Wgq:uøÜøs‹áU‹°3‡r×ÃÝ‹kbÐX'vÈÏ;ƒpfá/ ¹º] +YØYù·! µ ÀÐ1]òƒ˜ŒJÙ>z¸ÇÚbu±„Ãû †KDÔl¾?b÷ï4%TÊ“MB®ôsÿ’ßâé0}•Tc²ùMTH±(QÕ©sÅ’kÆï Ž7‡7-º+‰Yj>Ø|ÛqK\k‡è‘¿PÇ»ä÷Ås›Kqy벂˜UVYe•UþÁâf–…\êŠzÜÿxY<ö¹6žMµ}%VæB…|®‰A£ÅãQô˜›¦ 䖾̜°KbF‹‡ÑXçt•þ¢ËÜ^é§?{àB­3—ØôÀœ?Y²ÆTÉ($Ò¾ÎÇš±Iù°™ÎBZGGq¹}:‡Ïå‹ÉÇYÁ³“¡ÕŽ­I^'äèCÇgX’ wÏBi<@cK*Ja~ï/H"“ÔJP¦P«;›ï€¬Í;&å[Iäè_9a7söS{?•ð9aØ´à3+Ö–s‡p-V˜áR˜ÉÂÖ[‰ð sd˜Ûö‰aîÄðY IDAT¸ûH¡<ÀÞ{˜'{0Ÿ,6Ä’ƒfxå0¼mнkÀ-¡ù¹Gû·#š_z˜½OùpÊóÎãe¦Â“?ÏYp¦¨±fÝúUë25“ÝË €Á°%t¯¾Ú »nî¾ÇæC‡ö®‡ÝILO0?rž0ø§>‘Ày FúA#‚Qš‚¶|Q§ìw2«¬²Ê*«üNâf Rá¬ùÔ€Ou¶Šª/Ï›¢ÜCÜ¥>  ¶ .­°ˆí…Ú×¶ô“*ºˆÊl¾–?wI{n¾ò2V‹HîÕíì‹ÈºÌ=ÐHh@•öó1f}ŒÇ#ij9;f n˜%æ‡Þ ‡äsÙ¨%qÃó+XŠ*“Q×\Ðíó±æÃH +ñy¹NNÛäõõŒ •™<CG×  â^–É °˜›êòhÝáÌÒ§=#˘”çVº>së¤3¶biòWþÝþ¦†¾5è¿ÝÍV˜Ç®øK‹p&ñ/acÁv3æ`?禇ý¤Ö˜ûä…BùàÅ 3°$² ™%°³èß´8¼ß ¿i@‡€Í¶ßàî‡BÑÏyö¤p~[”7Ì8Õùm_kcœÇX'>©<»ífR¾— aØô7û·-Ž×lw?`sÛcóq€{ò’8³dc«ÉsJ}ùnÈòˆÌ 2xÈÙ­Ÿ×Ëß;±x3«¬²Ê*«üŽâ’v˜ƒŽ|>­ó‚5E…¸²o ˆ|é¾åù˜¢€ï5ÐþLc?6FXϽX¼.Ë–À%ò#äÔJ±Ý*3[ÓÄ~s­+6Eó2†¬Ç lgAÁŒÎÐzItŠP´[[º^˜¦T<*z-…ÆÄjt`Г÷¢Ä’ˆSt©ø0F–²¼ÿN~æ÷Y9þ¼p]‚íJûvj!)›C¼î•>1aГ×É»æqN«`«¬_–3K @ -0\7èþe‡îŸÏào@@ØY ÿ²COn……Œ·Vb`’˜ò8À|0F]ȬZbìƒZ`öæÀ `™'@ŒNRŠ2°†ûÿ±÷fM’ã:ºàRr-·Z²ºÛfÆæaþå¼ÍÏœ;ví¾ô9U™•klî.‰˜$HÑ#£ªÏ’§M0Ë w‰"A’ã6ÿ}‡ã/;p$ìÞŸ°ÿËÇt(nXpÖvk]Š]r–9³µ/À{ˆÓZ†¾ÏðjÜ õ¹Æ’Μ^ x|»Çñ‡Q’/Ü/ØëL¼Ÿ¥ÖLjúâsûL¨Úåç*ºtS?Ѩˆž‹/lÝÖóY'¸(uߎm´ÑFmôw¤b¡ññ$·ž…pQµ1ÂikpôÚ>×úb ª=Î@íJÅr·æRhóZA̓¤ÅLèZŸ¼)€Vux•sE{ê§ýÌœh}YÄJóÂjÒèßG &èiLíf®35ùSúꂳ=Š«_Æ&1ÎȨû ÈUS €Úsþ­0Ÿi×ò@P9‰D ]°^Fn®éñίäí¾tÞºWíý‰H’ Pk ûˆtÄÒr1ÿ´Çéÿ¼Àéßc¹‰ ˜ ,/#LS§  ƒ©Ç»„p§àå‹Ä¿äà~µÂH汄 ·ä¬g@&a¹ˆ8ý4âðb ;³ÿõˆá~0c×{ Ëî6ýÖ>Vk ûóìÛtb¡u{Yï¾hÚp ¤]ÀéÅ€ÃÏ;°ìñ!aÿû„ý‡ ÃÝ‚0eôõ|2 }æÞøÓôG;©¤O,÷¢¦Zê\/óòÜØÀÌFm´ÑFÿlªchÔ¿’´VÎò){Õº:Ñ9ֿܹ@†Ú¾zã([H‹V.ÀÕ, ÀÂÝ çîHð¯[KT¥˜9ÐçÙQ¥;•ª9ù97cL ÜÍb¥ùq”¸•—ƒdlû²H–¶6ós4‰VÙö<ÁYmtÞÄNð¸€O \³Ä_ì e½8p?ƒ51 Öæœ¥¢ý¬²ÌÇÏ(×ítêó$V‹¡I,ò[ ñ6nAÎõå÷ÆñÛ°Bçe µ¼HeI§Ì;ï#ø"ˆ¹ŽH7ÀŸ^H,ÌüjÀüÃéÅ 5dX’5Ðã‚ø0#Þ€oÄ<&‰g9ŠõÅ@%0y´V+?'2xG˜ßŒ8þû^bgˆ°ÿpÀþ/G gI_ܳœ}~¸!ÚûÆËñ Æ9ÊÛž¡1,…‘ª+½Ó0½ˆ8¾ÝãðÓËe@|Lâföû Ã×QÓ3?•ø°‡Õª±:ECW®kg:ù/»¢é\‹ˆ©¢MÀ°,þàß‘m´ÑFm´Ñ߆g PY0*¥ß5àâ[€Àƒ êm»)WO€!ÎóÖ&`g"±Æ|T@3ŒSóJÓ8Ÿf±Šà0kÆuÀ¥ûœ(Ú7œ­o|Z“Â×çY¬K?’ àE>pt«@Š—IóÝ3—Çï€T*õwrÿ €ƒºèñ Ö™]C\+fò[…˜t•cw¬ÚÞ kw¢ÞgßF‹G²ZhhÑX WçÄGBå”ÍÔ鿳»©¨Wm¤ö #€\ñŽ€½‚—˾¶,düBêÁ¤«ÞðN@$âVf„#0|œ±ûφ¿1|Ö,d ‚˜x”º4VÿEÜ츶è?áY¡ª1dŸíöŠ„å2âøvÄñ?öX®Äû»¿œ0þvDxÐø´ÔÊÖ[ß’(XÿìÆE+O’ºA ¸H°æ¹UK¼ZGèˆv5»½’FÂtqøiÃO#æë:&ìÌì¾N')œ)r«“?8Ì·z–® T jlã6÷Ó“9þ ¦¨´þ[ •B`qŸÌ˜Ùm2m´ÑF}‡T'肸/=Åÿœ™àÜ5^mÆ}rœ3çªâ&(Ÿ­âýÝ |Ò/q={ìL׳UuHÇS{®’O#<;î´²R{¤k}) x¸U·³—QR%¿€ËIAXïÕmD·u_õd[óÜä{{ÿ9sv·)Še¦·§ øæå,î}[ ÿFm´ÑFß+¹¬ÁÌêXTدŽ|€}uþà國Úzº+ûå]HâO>Ï¢ŒïHþ½ˆÀ}€§¸¹¬†tüöXxj>7XÍ ŸÕ¤1·³ë(É®"ðy±Ê0=PÕ{EO‚=“HÜÎ 4'Ð.ˆb> ÊWo²!×åzLwü)ܱJC´ùwdèûŽb¥ÉoÄ'`Ó£¬ìû>íÚÏ%¸ö`¼HF8)bÉæBv‘^ˆá›¬i”y$Š,’Ž ñÓ‚p¿ ÜÍ÷ DŒùíi¼˜1üõˆ‹ÿñˆýÿzÀðu&€@ÞoÉa¶gepóDz•³òÍX®Ùãôo{¤‹€áËŒÝ_ߟKÉÄgýeK¾\0ØßF~}ÝЕèy}¬5¾/¿nå›­C}ñLWÇG~ÞcÒ‚¥ãç ïN?izæ¹ôϺïÏ˯?n?Œµ…å€ì›8¢tüVnALÕÔX•m%oIû´Ÿ6Úh£þÑ4”×oÀ7ºzÊ~¦ ¬~dU‘oÁRÖNÜ/pVx¹ÃW3~~uع>±Xaî$\àÖyyÕê‘ê:/­¦TãæéMõ·¹¶™o³Ò´IÐØu;» Z“&J¡Ð#—Œ_N¬kYê€íœc¥À““Ït@´‹ €%•B“uG…¯xžvÕòËÇ͵ð×’;^²dÉ·’2™ È °0›£å¼»êìeVŸ“ ¤10)§†æ}."ÒµòóÍ n¤ µÀìäZ0!,,ñ-‡„ð° hí—øU€L¼_f,oFÌovñ>axwÀøî„øu´.Œ€‡:£ØÊ;sDÿx6r&í#N? 8ýû§703vï&ìÿ*|Zgüz%7¹Lfº6™gB®å“üµ?«U¶±[4Ê3 ®[}68óeÄñÇßîqz-ïvv_f\¼;b÷qÂð0+˜á~p%0¸Ûæ)†2_Üœê‚Õ³³¾6Ï \$kÐTÊÅMQ*Ÿó¹sco´ÑFm´ÑwHu /8øœ‚š7ƒ¹³Ö oåà3ã¶@¥*ͬÔ2ˆ}U@³ âvv=/ÄÅYi* ×õéµ,Àià åÏÛ|šóU-û/±¬;u;{…_ËzækÒ¬ä×’×xάUaf}Ý‘Û}ëÆŽ€ QàÍBC!”ĖƪZ'Zu{v\¿¬½yu™ïŸ‹F¬€†£jωEn‰KDo|ûPÖVãq4¦HV+Ìu@R“nÔsöÿ‚ ±/4Iúd:°óx¹Ó"–ÿ tJ²ß®ó£¸¤#Þ.?狤Wöû ƒ'¬§”âç‰Õi¹Ž8ý²Çñ— ¤1`üŒR”lmÇ´pæ›ã— ûw'ì?Lˆs‰?jû:ûY÷îgOÞwž0öäu«g®-?åÏI_hTX(!ß ðò³ÙÝh£6Úh£ï‰Ö.gùó9€aÔÓ U¯dÑôá@Ѫۢ‰ré@EÛG;¾64±ÄÉXÀý>ã¨ñ)Qö$Öëö8yJÓΦ†­ÊE¬yìÅ£íf‹Ò£X’®£€°Ï$à"ñùuéj$gÖê[×Ϭ‰¸FI  ã—7ÒìU°›ÞgÆ'÷·\=½KÞ2H}•Ï…$,º¸½qÜúr„fH0p!…*ù*€¯Òͨ&€¯9¾ ðo5e&É<辤Q·³îß'„Ç$àæÄ’…-%qÓ< iØ!½Ë1!|?Í ã’ãeVâå2ÊäQͳž?7r“(Ö™é‡Çßa~5 LŒÝo'ìÿr*E4}ÿ†9ÑD¾¥t±ñÆ¥yËG‹%Ýv ZˆÔÚº¸ê‡GHö%Ç€´'ß 8¼ÝãøÃ€4 _gìߟ$£ÙÝ"V§Tc×é¹ôËm|Ý Þ‚ÂëòZ7(âì+³¼  „F¢P‘8[ËœE¦u-{êþÚÎFm´ÑFß1 ùÓSÊmeµhÛ>|20úèyJ9Ï–‘3Jy·fÓž¹Ä§\LOóBcS^,À!Ó¢uJ ò|ÀÎg-ß²Úø×ØíÞ’3|»¿7šÐàzö3ðÈXio]kX‡?¯±žs´kÀ3ƒjÅb–º.{ykO”ª`sÛ ÜLieù _©‡ê­Ep®cÏ8Þ¶ÑÁÙæ,e³¸œñ’\1DÎÅ+€¦îc4VèBÁËU_Kz!ñ/¸Œ’ny4%€æ„p¿ˆæA­._2÷3ÂCâA•åE PZmÊAçÊcŒ˜¯#æ×#ÒE Ÿ$£¦’;øéb  •*·3¿Ô•kš]«·Âü2JìÌÏ;¤°{wÂþ?>L¥ˆ¦Ýª}WØþ\Ún.0¾:nû Î¥ÌÏÑ]`«éþ68ß5²#œ^IÌÌñÇÔš¹_°?aÿ^Aš“o%,ÿꨦù7)óé€SÏÝ+?‡É0¡ÎGM $Òãæž§üÙ#µNú€ÿU,ÐFm´ÑFý‹Ò:ËÐ,­¥Åƒ>Ó®.Ú®[½Úk1] ¶¹È÷ï+A~í­6ÍŬ ‚Ý?j,ÍÁi$­†åˆè§ˆ¬úYýur›t¯¼¾EѾ Àen­(¨²kÔg)ópÜxð¶°Xg5%oT™YÁÊ^¬°rÏ£ )ŒM9ÀÞ¼Ðʨ•Õ·>ûöAWI/­`v pd.ƒ‚’½€˜t+ äYøY]̰« %HüÊÝ:,s¯õ`ng ê2ÂÑâwä¯(•¼^]CÞÒ‹Ë«áÓŒá“X{hn®ó²hïϬýgõ½mW(GåtA˜~Üáôï{Ì/F„CÂî·#vïNˆ÷jÉ®ú U¾‹eFO¹ñ˜Ë>ÊîVœøþl*Ù³±z®ŒÊ1Dècþe ˜^x|»Ãñçæ‹€pX°ÿý„ý»#Æ/ ÂIcv¸€#.l¬åÞXÉZQæÏ¼>~®m÷œZb’Yd ĄÌs${ bd¸”ÓNb<³á›6Úh£þiX¹xÅeˆõm{«°d—t~Ï›¬jÔøk¾åRVõÈr_*Å—ÅË»ž½!±~Üh‚sçjãeVÔ¼nÎsúÖv¼<2¬ÍY_àa½$æçfž5c—ï§Lv»Àµw‘_›…%ŽæQdà½f‹3í@ežéͯQ.å{p¬µ™P@N3õæbc4ÃYÐ’¼HrÞð ®a R$îEÓ'߈5Q뿨{]‚$¸]Žb‰ ·³¸”Ý.÷ á°H¶¯C’”Ëæ²ÄâýfAØTí7?Ϥ ±Î,7À@ü2#|žsÄýÕ§í>âÞÉæG`~9âøo;œ~Ú#c÷Û„Ý_Å:bñ*ì“è4:0Ü¿m|䆷TÉë~_dQ²ÄPé%Ÿç¤0½0sx»ÃtŽ ûß'\¼›0~™Ô•ÏÇûÔËSâc*KPo-œ,+fÛmÞÙö¼e+ )ÐÈø½•4ùE‚™&Ø¿ŒõÇaË–¹l£6Úh£ï™4)@Ѧ¸ÑØ×³ y󺲴‡Ü XúHèÅ©x€Ò-5ßh»-€é%8%©Ms!oæqÄõì:‰ò>§¢$ø{sËo˜áê3€ ͵=ëõ³°ðy;K2ƒ›( âF2ñ£d+._N6­âß®M-¥yëð‰A ž0‰=Cm róÏ©œ[NiìÅÒØ|ýy+Êñ¸ðº_Ä¢t)€#`0ÄÉ&‹Â«TçÀЧÜÀ}fˆ[ÛÄ"“c8ÊØ;B#­ùÕ–qšUØoN÷ö¤½ïƒTÙ ¤10²†|!ÉøÅˆåí€ô;q%Ò+]†¼ž´°Ä)}M £Æ»hì ݉E†è˜ÄuìÄ ”Š;PÜ«¼ÈÛiÛ~=`ÀÉ@d¤‹ˆå•¸ÀaaIïüyBx\ŠÒ­×¯8l Æù¤.†‡Ýÿ)J,Ñé§N¿ŒX.#†»û¿ž0¾ŸðÜX~ OÑLÕó ¼'WÈ‘ÔÈWgÅZ‰‰W·¦—·¿JÀLÄñ§¿ìpz=‚™±û<áâ·#v¿O 4¡B0v›g#mµp}ÞÏw zZ×5ו‰ „EAL âbcMcbhfМ ˜¶t䌸þ‰ØcÃ=m´ÑFý3¨ŸåÌk H€þ#6ú–6ÇÞx¥®H¼ô5Ú§Ï1D±myZ¥~F£e°(è·‹dI”ôk+¶iJ‚i„Xg[3í°gyñ<ûóYó¡µ,M&§÷³ðùBÁ„Æxà!×ÊÍ9«P¦=zÐÐ~®?¸X>²Öëa±ÎŒ¤A÷)÷¶€#d™»ˆ›6ª°ù,\rPKP ¤A€ZÈ2€/%m²òK=\øÅ~!™È,I-C t¯q/·‹¸Ž=$ÐAÏ©ûÍœ³Be Œ‰©ÐðOú9‘oݼxÕð‘,»Ù>€ŒøiB¼[JŒ×j¿c} wëøK›õž iG˜^ 8ý²ÃôzZÃûv¿ž0~Ñø-o]Ì@Æ¾ËÆ®\ßLù.ïœN¾ ('0à@ÖÀ€[óÌÊ`† ÌÇF<þ²ÇéÍ€ñóŒý»#vïO˜Y£^zf[+z}ÉÒ{4z€‘§¯{#i†²%’ÔÆ @Ò˜S¶Â„Yãcf.ñ1ºº1<¨åÓ‹ÕÙh£6Úh£ÿ.4ä™3´ˆ°éVp£M+Àac¹c¹ûÕw­?g¢åÑj²TÇ›þ}r(X˜¹Þ©Xi&QæWcÛ¼[€Rñëæƒ3×ùsž %”$_fàõP2]’€›¹¿*Dæ¦Õ+­+ŠÒˆ%” pî0A"ÙºÔY£s{$çzl"­pšvQj¼\júê+‰}ák æ¿Ô¸ž½e_#°$kÈ,ÁôÿyÄðîúºHö±G)p)ñ/âbH rÜ µZâÑ»š­‹OC_.X//,/ð@bù$ñ;4sÙC«{ªé¯ùÞ_WZ9I·åzÀéíÓÛ=ÒŽ0|Y°ûõˆá÷£€>ѹLo ½/ËØôw2‹…üûÌåuûbBVîS H„“‚™ã’rzø:cÿÛûwZkFbèoBj’ð•íÐ5캹dv)_š`ˆIƒþ „äâb  &ÌR”µr-KN0™÷çnÐóíÎÙ¬.m´ÑF}ïԷМSŽª IÔ9ò#«ŠWŽðV Mì}¯?e±éÆÞ £­õ,z.©Â{¿ˆB¼#q;» RÄò(nHä´¦†¯¢¥éwZ³Ý‹Yiåé¯õ2Š%év.GàBA׃6LÍ(Ö¢Âç(zôeÌëCH,.WI•ÔÍ ú\_^“p–‰+_ 0À(…é"H Ì%׃€‹#Ò”Û<Ši‡d7BšD}ä›~5ÈÛí¿1þϯGà~–6–FY Yæy[Ý“!‰úZÕhñKf ¥³HTÊ®µÑýž]©¸I3 X.#æ×Òu ~1|9‡RL³‹ P fy?Õ-`ÇÝvMÀûˆY­3ó‹4ãû#v¿o5u·ÊD¶×ýÛí’d®• k*s…ç‡Þ¼ü4%4…ÒWNÛì®/YÀž0½qøe‡ãO#’ÕšywÂþXšÂ©ÎÒæÄUƒ./•Ë_=#¬¾ùz1‰¸(ˆYȰՖÑ$4k–¼ÉMÃ,6®>OÃ|{ë£@ÙËFm´ÑFÿâ4¬4 `­Øz%Üè©¢˜ù·tœƒ³1C;ô%©¹ÞúÏÇŒˆŒAºé ýäÚ>fˆåáë"JrÅJsÕ"¡–îôÙ/=0V=Çç9yV¼²XE´Èæ«(–‘«(ÀæžÄí nŒ¸±sÎ1U¼Mo}§$™ÕN ¸ à=¬Ò° ª.VÅ4Õ @ Jæ&£¸Yƹ˾–x&¾VkÔ^ÝÇ4†Kp?ƒŽê*v·€îÐ)/Òÿv´À‘~Ÿ÷'ЧIbb€*†€úí¿_W¯e*¬ŠŽB³Ün»UغÝߞܽÅ1 ]¤—#Ò.€ áÓ„p«Ö„Þ}–ÇU PsKäv¸Âý0Å~/× IDATßœÞîqúI­3&ì›°û4#ypîù¯ƒà ¦ûÞ+áUîZö}ì1ÖBìúõ·¡`",»€ùåˆÇ·{~Úa¹ˆ÷ ö¿°ÿíˆñË,™âœe¦¡¼Žwéýõˆàæ»ÞJ’fY,F˨ f“ãåXöIâµhJp/blŒµð„—¿/"Ùl´ÑFmô½Ó°Ö0:Z—W¾[åÍ>ô€MÕ°V®ÙÞ-÷² ™&”QOìYÎ3Ç“‚šÇ¸UËË(îKW– `)î'èꀗ¢Á¹c¼x-w•< êÇ’¾ùͼ f.ÕJrÂZn-€òý[`¼Y2ÈjÀ‘¥¶ pP5’XXLÛJTV‘‘‹Ò–#å¤|!2æK±ÄdsA"ÿ‘$M´ºßÑànŽâ*F÷ á~–B“Gq‰“”Æÿ8"ýÌ"»“÷SŽ‹é‘Y²Ú‚Œ6¿UF1o¯;lu¿øvå¤Ó X^ŒX^J&¹áëŒáóTÜÍÍzý¦} ¼Úå7åÝ·"šó›ó/{¤—‰±?aüíXÆ7ë0CöÈÀ"‹MoËFº<¨ã‘ôÛ¯6#_NÉìžAË0½px»Ãá—æËá¸`ÿAÀÌîóŒpHZk¦<Ô2@1¦*áþ¶‹¨÷?S™k0?Gu+…¯e(5d )–3x9.%vË@Œ«!SÝ¢«3ôTüÌß‹6ܳÑFm´Ñ?‹:šæUckI@Ó¾=W)Ôþ¸i1T~¨‰s:Þ’­÷Ìkl¯h›6Ó*ß¾}ۗךüñ…EQ¿KÀnÑVŸ&h g.±:-xðòªâl¨@^¹žsµc ¸gà6—,ü]Eá÷ ®qõ§²,‘3g¥¾zH-Y¬™ÎqT Àp‘­¾‘&4#Û^­:¸H–QÎ,MAjÛ Ê¹¹>L €GÍ@vŸ´. GXáÀR»f3x à×rBA¨jsô–«Ñ+ùPY2[Óláq‘ì-PX%I``UÑ^sP±¼°\`a„¯3—YÛÂU(X·, Ä4›««»{i^Œ8ý²Ãé§Q‚ç?Ì;óqR¹ßrW‚–Èâ9L–Ü(c-É}t”n÷ïyÎVyeÐ&÷eó‹ˆãÏR8s¾@SÂî÷ û_?I–8š]Jh¦2/VÞÚ}`¬{pãXvÈxI;ùœB²·ÿ)Ž,noš\,2Èü¬âz¾µœÝÏo°a‘6Úh£þ•©CÔ¯RFûkÚ{k@7“™?à5dWŸ’œ€5‘@¨¸.ÌÀuu;ÓŒz¦w|†X ÌJóŠDa¿t®gÉi­ÕÅg;ócxyx­³ÒrÏñ¦ç,Á½ÆÑ¼Œós)®Z¸§Иvž×©ž°šKvG3…˜tMK±Ñc’TÑK’Ø‹;:’Z` £I0“t Ï{’ø—¨c/–èVÆ ƒ€ÒôÉ8¨ÆÞbO,V›TŠWæLzÑ¥u†ò?±+˜Zdp.–ÀãTgjíP×{¤QÝ¢|ö`ÜY‰ˆD9çHHWË‹AÜÍŽŒøyB¸•˜Ÿ–Ç.ß.ŵí»ÌÙL„´˜~0½Ýc¹Š ãoGŒï'’‹ÉÀ@„¿^§b¤ól$h0{ÚÙ¿cð韫¬adxà¡ÖÛe ,×QjÍü²ÇôbÆøñ„ý¯Gì>HºišÛ5obhÜ8ì?p9i퓺Oæÿ‘°Œ‹™`&*á$VÂpKb8ILZk‘©Æ=ǧu“y. ù£V”¿‰ÕeõlÜh£6Úh£¿- µ¢íèœÜfkÛzEþÜ™ïÏ[+ìMh’_t †Z:×À]<^<ƒT®ñš¡ÄªìÌ\iV­Ë Š¼‚ ?!?¶)bí°tnìo•|ܹ…#$Žæ!IB€=©ÛÄíÌeeZß7´^¿f/™$!Àa¦A€È> @i6²P×ʹ į֗,WU~ (9$àAÌã"ßêB¦`$d¥°ª“ç¡ÂµÔ·ŒR==5J2ʨèŒân©Z7/ÿ±b ì¶‚,±f Sy¦—#Ò«4į†Ï â£XŸÈÕð!×yN8à•o°‡”=à¹%xæ§·{L?Œç »_OˆVD“y¥ØzÙUÀÃŽ±Ûú¦¨JÍêņ xiåY H°\EqøeéõNÀîÓ„‹¿ž°·Z33ÊË߯(¸svÜM–™Jºe-äº `Æ€e°¸"˜X46FAL0·G׋‚ñ„œh ¶šú1FµlºíŸCo Ñ{o´ÑFm´ÑߘÄBstyE®úµ¤ºm lìä·€M òF—r§3 ù¾ð|`ÓÒ.÷êz6dݺÔlb‹kS¥uQPxðó6`áÁ„g©Õ]f2Z“j¥Y0 ºö1׈)rð ÐÓðçi%b›@Ô1À#_E`Þ‰õjGâ>v$þe§)°£iÕ \nYÜçå=$Ðã,ûpf‘µ¼õO¹LƆT¦â§e,g9kFi²þ,£!·{QämÃè»sùmÊëqsMp½•[œ“àŒÆ«XI–—ÒU”½_„¯³È©ûáuß2‡"”.fö߉Á°\DL?Ž˜~‘4€~|wÂðþ„ð ™Í|²2ÒìV¨¦ÛcÕ·!ûNjHªãa|³êqÃYbÒFÅrqz­é™ß `Ưö•Z3AÁLÎh–ÁJ˨dR[=¦ô=F¶Æ Àì–QÝÊl^“¸”…ƒ‚˜Ãº¶›5¦“e­b©=yî9Šrü,ú“ÈåO'Ø€ÌFm´ÑFÿ@êg9VÊR>FíAàé>`Óöm×uƒÿ¥¡¥n]‘;±Ë½uÔ{ßµ×’ª@|Ö —RhÓÒ90STþ `Õ«ËÒ»®š¾ÓžíøÂÂÛí ¼À&/ØSq¯òà©bÈñE®¹RùqÌ*!€d§nb7*‹H ]Þp9€˜‘€‘@ƒÊsAqÕS2.ؽ;a÷ë Ãç t’û¡XDP@S³¦ÃjYF²död¤&À &0‡„ð° *h—B˜È@½ªmäø`/W'ÇZÎÍD×-î ¾ù¦·XïYý'è›]ü ÆØh£6Úh£§hXi F]l­„7m̹ÝÚz¥ÜÓSE9ëׇÉ]ï­.^A}*y@o¬|^ù™YÜ»†YlXWQ@Ã>ˆ²¾H öÓÖ7Çxñç*5÷oÄç$YÅî©sãøŠ$q6YSê˜xÀXòƒ G;’Z3ó2Þ Z‹Fâ<èã ü6Ÿg9?Câl±¢èÊ4d{Öîe^­õ¦ÎÚ®5Ùúiõu@×q¶´Û¦ºÁ;{OܪdÜ °eË_Ú­ªZiƬ„*@¾V¨%]3_Ì/¤1€Ž ñË º›‰µ¨¤»Ö`ñÚJƒõ6ª®ÕcH?ý¸ÃéÇÒ@ˆ_¤æÌðq·@æbuÉý׊¸È¥L,¯‡‰×óÐá³–‰Õá®’Ï Ä¦›‡Ÿv8ü¼Ã|Ž ã{Éh6|žb5´kÛ¾2¾0kŒº”-{s!`f¥¦=Ì,>,jÑØ¯ÙÅÇØš KU ÛdœQô×ÀÆYK¸i÷,Z'uøã}üÉë70³ÑFm´Ñ?€†¸m‡ì‡³QÒ[`RYNü¥g”ü.ÀÑçÀ¤3o9 ÓÂú¤ŸKÏÌÔ³’=·(î S±Ò\( ñ ¼fæM ä;vB¨æÚÓ’›óäÎ1Äë~‘|ߺYÌ YÐF Öw æR­/Àª½pPw§kR„$çõ(®g q‰ú<çœÚ:ÇYè[o hgˆ«SVv“Ö B«Ø6ŸH­°£—iV– ˆà¨ŒÿY´ÚÌW°¬Hgµ=ïÊÒÇjAÆúxõ’ ÙóYa ’¾z¹Vw³H_f„ÏêòeÅýd¹|©¶¹n¶׺"ˆ‹Û+±Î,7tbŒ¿Oߟïf©Õ’XT ´ëË»æù1,õ²¥s&"qcÇCÕߺo—É Ù4=óñçæ›:%Œ¿KáÌñÓŒ¨…3=qR€u)%gÞG,—óNÀM~”iv²ð çâã’3—Ñ̛倌üc7—zmL-ÀiNóuý¹yÖò[ŸïÑSMž“ ÀmÅugÏ£6Úh£þV4`pª™W~B„`róü½Å ­fÚ3äëÚ‹±RóÁ?lΙfšq ®Þkm— àJcGö$VŸ ƒ~Âbƒ TÚo96íxB ¸¿KÀµÆÒ\h‘J+9«Škš¥OHbg¼fFä—º3æ>¦©Éß ’B˜ ZÐÇ[è_{³íç™(ˈ,­²žf$QLh·ûÎ+ì þ$† r|á:é@ÃaÛ<ãE]Ÿj :Ûó¬òÖ¬]W'd© 8@²›½ˆH4'IðUŠi0ØÜN¼ø-ØlǬ{FBÀr9`úqÄüfŽ„áÓ,™Í>βæPpµï¾ïV4•Ûµù 2Ï0Jí;® s5K½6æ«AÀÌÛ¦—ZkæÓ$`æÃŒð¸ˆUË®³Ë HÏQ _.šáí"Ègu+C¬1G/áÁYd´† \í˜Ì¿PXqsò[·-­Œ²Œåª¿Ÿ:ÇžÑà[ ç)¦`´b9Ž:¯‰Kì‰$°§›EÚšEÇ‹9›:¨NL°Ò°QÖŒ'©–NÓ_åþÕÊ‘ëåXšit~%M.Ð*ÜnÛ5,æii—VÃÆ¬LO O•[˜ã˜Á!`¹ŠH/ð.€I¬3wš.95ýZ‘J,Ë·Ö¦½Ò™Oï ók4W2æðþ„áý„p¯À•]?^8^Aï¥í‚FÍ÷eäÜŸ|_©ö0”kµèè@’žù͈ãÏ;œ^EÉÈöE3šý>axФ.¹‰sºå4 ˆ™/æË€å2bÔE1tZŒø°ˆyXÄâ£Öd2(iääkÊøà}®„ÙȯX Ì CgÀÐ9: Nν z Íø—¾6Úh£6ÚèŸA¥°¦fõëéeÒ±Já>㘧¬IX{½SvÛ~=}+¾æ[À§U¢ÛñÏ]×ZO€\?EbO ÆlNXµj5}gPD¥á Ø´Rð`üû ëe¢}^¸¨âel}²IA‹e#;±€ËÊdJ[^Ä$ý“Ôç1~‚›€’u̦Aª„aPŽƒêˆ|!ÕØ°rÿ¢JÔHW3*¯ú)¥Ì4H»»úçöâj¡-w‹[÷•®w¦o$nOWâêÄb ø"ÅEs"ƒ§”Dö]úc=Ö‚2Ž„ùZëμ²Ø)¢IÇZêŒb€enLÉö¦ëáÚ[}™ŠEý¯ t”*ó$®åôfÄáíˆÓ›Bf¢Å©©‡ H³5&`¾ŠÅ3¨5Ïbc ÷ Âý‚x`C'u_3‹•Ýͺ´™È¸ý\$Yíáõy'gœk°>·ïÀbõH|ùDZßg'²ÑFm´ÑFÿ80³(¤¤ °ÅQ,ú·UæŒ|Æ1Èj]©ÎZ·Y‘@=Ų>•&ÙdC£ÂãÙLh¹7HR­õЛ֥s=;‘*žg@R¥á¶`§9W4Bd«YÎD¦VŸNùJ]ÈY¿}–7ì‹‚Ëòe æÈÔÌ©´í˜vX,S3+xHe™ªæÕ\ÛEf¬B˜ÖÖœ"¾l™pkFŒÚMMåÈ`}ã.² Ù*²sY¯Y»ýÛ߯õqÎ2’Ù}Ê,!TO›ÑXt­9|IH7|AKí—Ûtàœ¡«êÇÉ΋»ˆ¸ŠªäɤÅ;_˜±\„Ç$®f&QɶÝS°Øü©é¾’‰Âîy¶UPââ}˜/Íí ða H;ÂéåˆÃÏ;LovHVkæ·#vï¥VMze ’©l¯é–0ÎiT·²Ä I\ÊâÂxŸï„CI»ì­1r‚„^|OAý¼\%#h”ÿ ˆ¬žƒµu¦kÕz­Þ¨ºn“¦ï…ì­ ¼æ3AëÄ”ãè0Yv«À‰zŽ­Ò—SöR”bš7¼#q7û2keûÔ©uT߆•xZT?ä[dϤ±Î̯€ ñÓÃï§³ÃɃŒz^¤§1ùv"䢛ìÎËŸ>¨z7AÖkrzæŸw8ý0b áaÆîý »÷'ÄÛ 4q±ÆìÈ\DÌ—ËUÀ²jp2w f$s™¸•y—»âò——3s°ÂÍ÷úw¶~6ò¬ÎyìVm[¶íÿlz3{„Ù çoT.Mž‘;`£6Úh£þî4äLJV¬ ª*!VHÒ~ÈzÊš›¯?æë1MÛ°i•èJ×>ÓöY?¨O›îDêk*®g‰uÄ@MNãìAÓ|[™M1Krõ`È/–,Pq![ Ê: Ö"–±ðing5ÙúâçÙ.×ü­‚Jœ¼Èä¬g(z”‚©˜¶[-…Ó„³5O¬+Åî\»ö¬uL‚€J-*¯$ëžkƒôö±þMuӼȇÊÜš‚ŸÕVöó#HŒÏNR'§«f Ü  ¡‡^xU+%óa 257®g\Xd¤}ÄôjÀôÈeïŒï'Äß'„ÇT¬X6&•±jp„ÊªÕ Zçš7ù^\â2hÌ]p¾†ìŽ7Ý 8þ$©¥—‹€pLØý>)˜™Ù³ì%i¾Š˜/ÅÃAÖ›&Æð(V˜x¿ <̈©Xc @:—²j‹±ÿ[dûT€*˜ß5Z!®ô\­û“IZúF›§N§âC©›ç—ËÞÖ{Rn´ÑFm´Ñ?‹†‰kq3ªtÕÏV§B N|suù"ÊJd=`Ó‹‹9 p:ÁŽ·Ê³³nбŠòÌùa=wX¤Èd¤b5Ù“Ôi¸ zÊJìÀ8Ðb`f —t‚ÅÅÁ˜eæ‚€Wƒ¸¡- ašÎ[þ Àt‹«4²óÚ9AÆ>.À4«’wûk‰­oîWÇñåüxŒÔŸÙÔk‚?jíI pÚ1a”Ykƒ¨Ë±s‡R yy´©v{"BóY”OçÒ€2?Ud7K׃f7cÐÝ úºhv3”7ëT‹¯š»}dT}·cñ°Ü ˜ßŒXn ñã ÃûâÝââOÊmä•zÉ̆l™ªØÑÈòŠº k¥Ôë¾XY2åXŸÓŽ–¼à(©¥w¿Ÿ©óRÝÉÈ,û€4êÞYá1axïf±Æ<. ƒæâròobÇSÞ\}/|÷ÁK½Ng²•µÇÚ¿=ªÖæ©fÏA@BÉ3EîþkžÙh£6Úè{¤¡z½¨ŠY3-°iAM nV`E%õ­ý¾l<àhMÛ5gÚeõÀÆ¥^ÅÙØSȉ2ÿ€¸! àØ)0ñV0ÄX ΀ ˜17¶HÅuK‹ôås3 c—Àu,c”Ìc 5?YçdÛ€¯Á›ü ͉½Ì“#Jü8ƒ•s À³‘ñŽ)ľ]›Ý¿Ì•M× Êt2ž¥&“ŸÉLƒCl½½© "C Z ~M+KûkÜDµŽ@ºˆXnÀÄ/3Âý’‹iV3§Æ„­.¼\ÉÉ‘$]ñ²˜^‹u&„p;cøý„øi™%Ï–Ee½ºÃ¸VƒTQ̈–À×™Ö(¯þxÒB—ËeÄñ‡Rk3cøæšwd`H¥Ðæ€ <Êsæ§âš–Á œ ™2eŠ·Å·˜ŒÅ½Xì‹)žyj`)Å2³«ZB“‚7ƒ¯QQ-Ç,#¯%;db ÉÒ<_jVµêuÊ>q×W+bñI½õóüXÛÕqÊJ(¹ Ù“?¬åЙ/Ÿž™åh¥Ì1×àWGµ"’Ì,%RëÊ$Íw¨KIÀ ±|™A‡¥¸ (i¼kËA…MûZ±&ðްÜD±Î\Ÿ& fÄ{‰…’ÄpxåôÉì¶sÒŽ{mÝg-3 – jú¥ã²vY.¶?¢€™Ó’žyz9€ngć)ËëAÒ-›5†´HL|Pcñ1 dl$ÎãÖÀå ˜q%÷íòåu†¹uüL¹/8ÿ‡Uû5ð묭?üÔùç·øÍDÍe.¾¬;Î3‡Øh£6Úh£¿7 þK‰/Ð`‹«1‹±IªÍœQ¦¤ö»µo€M ºÜõþÍa£Œ®kŽW¸*†š1|ñ =hUì»×'ÖL_.¦f¯~zf51·±‘ŠõÅäPáT‚Y\¼âå³ye¼åÿàa#0ÄâI€QÏEÏùWñO›,'KÑQ—ÑŒ2ž¢‚‚9¯£lƒŽ«¨¿Z×±èH؆‡³Î0k¦³Æ¥(_ÖîÕàåâù <§|-ÔªaSé2“~·FÈûwËuw³ [É´…ç*÷yh7~f“ à‰ÉÛÞ„ËEÄòfÄòfĈx7cü0cø$‰#[uÊœ=µâê-.úFU{ßýgÏ g™qz»Ãôj±Ü‘*k #fćÃÝ‚`ne‡AÝÊrlŒòžKÆ;ÒðlsjyÙ ³v´njOÉŬ¬3yöhÕ×7ëG[s1k} Ìl´ÑFm´Ñ÷D¢ÁÖÁ IDAT ©€€)§Lš (ÐPƒšž²]c„óÀFAÔ7·ÖüQÐÂ͸-OöÜ€B(1-–ÎÀˆ¹‘E.JÕVÛMR°b•ë›b}%}2­å×û íëÈâ g@ÆÒ<[ãJ“:\*MG®ÆSþ&Ñ™´“(®B¹›•E…ÜœM±Z‡µRL­•îɽæú”Õ©(«d㨅3qüe“¹ÆM²nóe(À#%„Ç„ð°¨[™ú?jÊåYb§85àçÀŒ~nçãÖ|tÜù XXÁLumY»˜é=~òí‘:gÏ]”çVó½é6Ÿc¨U©÷¨á§Úh£6Úh£ï:.göŸ³Hò=°û U0: jK­æ '"Ðk|ö©•ë/ì;ZztØøKTÿ¶¶Ø”Ð.ëK†ç’L!AkÓè8æ2–k¾p0Œ~à~DZ¶=kÕ1‹¸€]¢¶-M´zõ&¾™¿—ƒW“Sœ (Y\Ïv¡Äÿœ›O«ýäPóÔî!*Šoa—òg/#òÂâÌ¡ŒÊƒX"T)'€‰«@öz›%=ƒµ˜âÒ4Ç÷¸ödu7L—é2ˆ²Ÿ$mòcR€Q/;”Ÿy7a} $ó¯GÌ/#†/3†÷‚&°Š÷gÓS³ëÓ Íî³ÇÖ+¾y4 q¾å™´æ@X®ÅÍìôËÓIÏLj\¡1sB82ÂQüoÄ{ä?ÕAþ´Øýéy^ÇÁ¸ó )6“ê|>]¾¤.ÈkŽù±+ÁœiÛ´é¯>äÁû¤r7랟`3Ï ÍÝl£6Úh£ï‰Ë@Æ^5§dß ³BX0¶×\Z¥ÔuW¿é×ÿTÁÌ×°*±m²ê—»QÌ[j‹nöÆ÷ŒPp)•Iàž¹•©ë«òNQ5ØYÛ@›´þËû¢òK /=Y˜òs¬äædFÐ@}”Ìfc¬ãtLÓ6Í•;ý·bY§ Yr„“ZhÎ2+®cŽi.¬¶²gh°?¹X¢"'B{!VÈà ¡Š²Ê)IÚæVÑmçjdØÏ¶cU€Ó]ãÑV†îs Ädni²ë&F¸Aw‹¸1*ØõòªG(5oZР y ,/"æ7i$Æäã ñã$©¡g´\ÞJã½1ëm u|¸¾¶ø0µ²0kŒÂ½áo±\KmœãO;Ì/"x R7(1Â,Ö˜áNâ}â팠±1á°hl W)—k°RÖ ]¬5 ˜q ªX˜z:•¼“OwÛ®åSñÖò"b]ïÑV”ë»mVÇ©€IÔ`&ƒõþfÚh£6Úh£ïž ¤lÍ”`Ý\ʯ ‹;U6 ¨ñŽu¦k lrxFI `í·µó?Àö‹ÝhÅ`źà3’ecsuóe(¼,ÂW€$°ø¢,V“åŒæÑ˜Vã·9v/hæ`:²Xiö¡¸Á é ‹Lnž¢äÌ:¿S’ñlXãJ˵먿'üº‹ꎯy3ïÃö [-Û33Àš¶Ùo3À‰Ü±KŽ ?í‚¡Tqusɬ˜»arœHºˆà« ™á,Ö™û¥d¶Ó9û[’|_&„ÎP™ý¤Ë€ùå€ùfƒ¿Nˆ¿Ïb9-œü­Bo¸µ¬ciJ£ôÈgv®yjˆÔ-WÓ‹ó+ýwe #œ¤fÌðeFü:c¸• ÿðè3• ³>“»íã“øý_‡T*°Ò™§wWc=R¹°/›2vçÐússË<Xð€•ûÙêz×¶ý^sÊwZ•¼°i–çÇ@Œ+‘jP\{†(¿s*JPóµ"lÀå"ˆ«œe9«RðâÛV‘J;>Ò¼ ì˜¹XÍíLçdq4UÕG¯5à®ÍS|Zjéc9ÁÉÖd³B!nZ6“o—wÌãˆJp–*Jœ%^˜!Ö4Fv…“ePE¯1©¹QÍ¢ÁˆqžŠgŒ ”eÀc_ðŽ€ ·‹º›‰¢ÎɉÜ+àö±ÝæìO@Üí‚Zg^ X®#x†/â‡â]*™ï¼ÎÌEÀZaíY`ªëý5zq$I«¼R+æjÀrUþ¦‘ÀCy- Z€x7c÷aÂøþ„áËŒpH“³tVÀ¤v/«ddYËP_c`¤Öj€Âë>s{Ö-^Ëp pÜùvŒö/uŽù¯O=£«sÍË{IBRŸ»|ûøgØù Øh£6Úh£ï†o7iÈ~}ª'_¯¦µÔœSTZ#´ïÕ9ëǧiëÝ*|†±ž5&¸¶ö6ÙꔀK¦±6erÎ@ÖP@ÑDÀ» ñ5‘$yBî[ÿšÒß ¡Uì{àÆ·k XÝݰ' Ö7`EÔçý[i›ó€ f¡9ê˜ÑÉÛ_Ò˜/²­éreåðSU~غ÷²ôú›[¯…Åj•Ó_;9õ´F¿[¥Ð)2V#£­D‚}@ºŒà@ C@óP»›yÐÐÚ^³›vËÍ€åå€4„Ç„øaFü¼€Mc?¦–J·p¦Û.ö!³h@f “.‚Ô‹¹‰¹&Q,UбiJr?.Œx·`÷î„Ýû†[I)íLëJf<¬@ »m}æÚ¾•Ä>sκwXMß3õö¨Yêݧ¾uçtł݂¡œc3örÅgP{z¸6Úh£6ú— ?hŒLé7eÙ+´Êy`¥»—>šãþ{uΩ^ö1+¹T,,Þ]Ì&?FãɌä?Ÿ™»ïϬÇ”A kB2+Íâ®]¹cy µ§Ö£hüY«wr0 8‘ZiàHÅ…nÀ·Ý΀§ÁMnÇe3‹eaæZÞ¦0º¾=õëW§Læ2¿JÓ.s,V*.3 † øÒx4—3.csÅ[Ùh˜pû¯ÃŠ[F¶•ƒuLJ„X,.i/€ŸЭ‚Œôú¹äy6´j±Š,f¹ŠÀŸ' Ÿ&„û˜RƒÏÚi¾MZ0åý"«KǨ֘ˆå:`¹ö<@ÀìÌ ##$¹GÒ.€8!Þ-ߘY$Nfá‚]¸æ1¯—YþÜÉ̇Ý} Ô#¯H݆ëö¥yéÓu|îÑQí4®kÍ…«ïm§Í^a÷\´Ú29K Ÿã6w³6Úh£¾GzÐ<çÇ+[k-—® 4aõš×)‰Ýq<°©Ú4VbX3“Q¼ïÚ7ŠLZ’ûîyYªæo®à®Ç<¨ Ð@yG–ïúž‚V’§Ð·†ô€K#†Ú·§¹ÖjÒ’$È 4pÎôäçû-p£cùù 'ý7pYoiçgbËÇ Åè§}%×¾F¤YiõÙLç9%° ÏngÍúŠÕ¨Ñ~+¹BªÑ£¹–¿ÒY‹½Ë¼ÕÅê2‚Rw³Y@͉ÕÝÌo:J®»FyÍãÙԉƀåÅ€å…؇ûñã„ðe*I*š¹UM–NC÷àÍöB"äLe9.è*`¹ŽH×ËEïR PbÐ1ÐAüÿ’ÉÄœŒï&ì~?!ÞÎ’Ì!±Äå4@¢ý»vájÜÐ2ààæ{óºoÜs¢.ÍV×»çÈ9ÀÓþmÝÔØÝÿÕu=j—ÒÀŒÞƒÙêé^ÖP«ó_Ä6m´ÑFmôÝPÐ<÷‡.+x\¬5KÝ¢Z‘¶_iŸ¦¹G^yöàħVö–²”¤,ñ^ ÊÿôXËKoàs|ù‰¯€ ‹Å¬B–êyPËIB®µÃH¢¤wëíàÕ1]pw3º[$»ÙÄÙ…éܶc÷¡’WÞæ²ÆËUÄòB“œÂçñÓ zuÊJ®GmÝ V©‘þešr¿qLe¼“b˜éZ-2Wé"" rÏÓ Ä‡Y²“Ýk`?æiÃÂÝ‚áÄñƒ‚™“+ôi@‚ó&*²p÷µÜ u€r­~í<j0Òéß÷£ŸŸ3ÍZõâeªkœd3˜ñíj÷%y3°2z’ˆ«2™ýh³Îl´ÑFmô½R hþÌ–ÿá¶WïÄt”â$ÍNé h ˆ1W)ï6fÙÇBé¦ ô…S;Jœ֗V¹Öäµ]‚XHN „YHPX–´s¬ýžÝÍ‚¸e%–ªöš½‹Wõ`ªÂœnÜUƳ 4±Ôt¹‰XnÁf¹]@§T8v xfQé’€ä ÿˆ¤Ö˜å*J‘ÐQÜÊt*µc½¤[¦‰‘W¸K4áaÁðÑÀŒYª èj]ʼLí¶¨2œY3®ÿ±ŸtPZQƒ ÿ¹­^ÌŽ}¨Æï¶±?\[ñáçì¯÷Ýè£5[ «w+ÌpÝoÕÉFm´ÑFý÷ §Ó6ÿQbè›]Õ´¬ge©q¯M!óÀžçëÊ%¢ÜjŸm°}¥4å‚Z×-Ó\[‹@o2Y‰î4*ÚC™XŠ\5£¸žI< 7ßbåµ+pÓ;ÏŽ¨²lgf| Ÿ™ôjLnLîÜG£ó´–U­b·N,ëê*Õçƒfi©­ ´B0žGgJ0OÈ®~Þ+¿­nRV|m[&'#›ƒ_;ì¶²WNóuÐ y tbµÎ¨uËé·¢™Óî߆i ¤«(‰v8±Xg¾Ì ‡<3Þý?ÿžC¿üßÿ£L8ð(‰ÒE2éRƒüÙT4'„»„ðïµæƒ6$ˆ5çÅ ©¤wtLˆŸ'Œ&į 踈õÌä™çWó¬ûÆ*–z;p9Ð!gAN3t*&¬g þ¼#`ÈyLJ›ö9ò`†QîëâR)Q˜Ó“}ýÚ¬3m´ÑF}Ï$€æoùce¿ææ‚F(à„á 1bmuiÓýzþZw²j܆¨V0)P­mÔ>5e¹íü)Ó—£§„ F®qC.A€“»œI‹úX”•a×^üKâ’ÂyO‡ÕÚ±Ìõ5maÏV-¸1~f¥|fÙIþ|ªÐL¡¶?nCÔ°ã×ÑÍßgNËMMX`)µÝ¶ÉíWÓùˆQ‘ ›ŽŸÜ>k–åµÈ@DÏ´“ôÅLÌÝì±d73%Uß»¾ÚímíS„¤F¾–ôÈ Þ-âjæbRžK¬)—yGâ&w±ÜLQ’D’,eÇ$Ö¦‡E@ÌýŒð(Ö–0ËZ.û€ùFŠg.ûšÃçYÁŒe3sK߀ü— _g=W]›ÿrìd@Ô\Ó‚q/냰ÔÏ£³`¦98¶skÑ´ÏÌ4=·oh`†’»«&g¾l´ÑFm´Ñ¿>uch8yW¨ö¤û|Fù¬Kˆ·Ü´b Εs¾æ+v×–³†TÀÆ€Á9ª@Žñup°s=Óxïz6SIEëçâúãüªÕøì€•e†²BB±œC ØH€ÍÜ‘]$uš¬,e3—âš9ƒ_®®cЪ¤m+çU0¾uIP7-Fv¹±ëÔz—å,3´œ«­xfo9jV«“ë3cÇ‘öQjÐ,Œø˜@÷3pJ U eëÜ÷™»ÎsÖã¶_"izäi§._Ÿ%¸¶d>ƒ²Ùe@ºÖš1šÌ€ ™ÓÂÃ,ýI¬Osë|)`fz5`¾ˆÀÌ·3†“XrAQ•f{ÏW D„`¢ou‘5Au ÖÀfu¶yuJÌT¼ªtúYÏuu½ûlûÎ’?T+†$±9r;xC˜Ùh£6Úè¿!-¬Y\¡Wî[½k½Ò{é¬ê•Ø_^÷ùœà•}ð¡_9©{W>Îî3õû[õ½LE‰bçzÆêö…ÚJSõoZz3u{KL*ûsé”[×°¤ãÕíl¤’ZX˽·nzk s™S©E.cuì Á­‰ã5óÀOó¼6sÈ<2 T¾$>…KŒLn퀡®ËB¥»†Ó°jÙð[žµ3Ô:!Ö’;¤Ÿjyøš;~¨k£ÚÀi݉gôuFü<ç4ÍHOë·-Þî.Ž,í4©sŽ f‘Y“ÄçÌ RàH¬iœGÂ|=`z9`¹ @’Z3£™Ç˜e½VV›_sì\\M=¼>æúb÷®¹9b½éí|âûªßf…–:3Ï3Ù"±ÊêýçÁLª;óÍÿ*†ÙÜÍ6Úh£6úÞéÛuh¼N©¿l+ë µŸrÞ(€µŸ긒懾ÛoÜžbž‚>°aj æ:k€ÐJSñ È“½IŸXbi VsýªêÞ8>ÛI8àbIÜx“†˜s±Bœp" Dé'Âiì €ðÀÃ3PÍß­kB¼ÇÄÀNš,+«ŒQM× yLVŽylUͯí§QÆ“YgÒºŸ¼”-Žô²èirDhÚ–wÆ5ÉFš €tÔŒ_f™àu`~×åSmû=´ˆ¥Æµp$Ðc’˜”ÛtdÐR+¶Ï¡éçQbc4Ýx8$„ƒðÐ f7Y1i ,׿—Qxƒ¤>N¶Ь×T`¢ð±/^YïŸkÅØpç˜_æ5˜Yµuß×ÁþÍ<ì6W7Ϫ¯zJë>ôý…YdÖVÝTìMÓþ—6Úh£6úïCë,gí[@`¥ìf%ÉA`ž°âx­²Ã+OiŸ½kŸúÞ9õwKÛº²ÚT=E¶V›Æ,f%‰ ,T\Ïz@)¯­Û0À”*yS[ŒÒ¬k‹õdTe¸JàÆ«ú§ÕzwyÕ6÷Ž­Y,íº6V–|ûn¾`-fQi×ÑÓ?c ›á©‘g³…|¼Ž;Nv®åÉñ]ÄJà$e ’Fú!î ˜•޽xš}œ¿ú{„bHi°\IñJ,Œp· ~žî-MsÓÑ3ˆC°rT‹Œf* 9ÖZc¼H˜–«€éå€ùf€ Ÿæ f2o-iKZ¬i¯iÞ™ØÞÀz¼5֓Θ5˜áu_½ïú¥3+÷º†²U&g‹ÔF k³úÛÑfÙh£6Úè_j@ÓjoÔœk¿ëûM%ÿà :ÿkXÕ–S©Jm¼æ­ÑüžlVŠ{çZÔLiÌ ÁóCMŸí8(h!¤iœ}Æ1s¿ê‰¨UŒÛñ™5™€[ ;o`cG’q-'pc¯À‹×º¨+§"ª×ÞwÕ¬WaT¾>MYfʲ/ÃQÍžµO®ªGb‰Uš¹Ä¨øZ+•¶Û™ÛÚ¿ßJhEÓÙ<i@ ‰̉eÆ')Xû^Î× Â-_䘘 8¬Çª‚ÿ-Xlt€L'í¸m{7þ“`¦¾´Xe‚šê‚„’‚œ›Ž:s®†ù{“Þ3q£6Úh£þ´v9#ÔÈüq VB*S~H©9¾\,¾ÿVi>KØäï èhŒMéV©² ñZÉÇúÚêä¬_ƒ”x6åîŒÂÙ^±w—±is ÆxQ tb­£äZ16`5~,Üñ°x0@3¶€¦¬õ»Z[^ͧ2wØÇ¼¿œ8ˆê>ÌjdÎÌÝÌÀƒ7¹*[²e.—QêÕB™WZÉÞ®j¡¤˜æÃ °ûÔkȵZ e¢ž‰Ë‰HW¼9Ø>ÜjÖ0fÉTx/=ŸKÃ_Žâff.eæ¶ç•äJgUÀ i$5³ϤcBü2‹Õè.•™=@rV9¯Çóã·V˜u›"ÔžE^`87mªc(Ï·/}ðÓ\ÓôWõ£{„f\?dk Ô= þ`æ›Ö™g=«7Úh£6ÚèïOCku±`f!§^1ך$°N›ÔMñì(Ê:Ž(Ÿ\};¹ÎJÕ\»ðÏKEûºÝñ˜cmLñVü, ³—uåtÌ~x_Ò£å®Çú0cÏo¢™‹2€´T§qÃ@E#»Öð•òÆd¶ñ¸‡gtã}xÚÊ5îCPÚØŽ3rÅ–u(,ƒÍT³ðRÙ¿Ø6ÎÚÄ®›°i†!×Kã·=ñÏ-üãÕ -ºF¹™â¥?†õb:ëOn#å7Ø—!§ì6HƒJè1fè¥9ÉÃ9Y5ïljÛ×Õ]gÿƒIªYc†)±ÏäÃbå½<Õ(K‡P†M‹÷‘5ù¥‰O¥eé¦.–$óÀJwV¾aß7t§ç6Q/Éõþœõ~­känÔhÕûE0íÕÎOíCs/7Eò\ýð’å'çþ/ ZÆÈžÝp=3ýÕNê¥Å•¯iá‡À™Õ°eŒ­¯=L*Òºo&dÎLO³6Òd°‰ê¢µ{¬šáuÁfÔp.¶¯JH©l;ºÏ¦^™á:ÅYÏäoÎ7.Ô„Ob§d7ò·ZävÜ ³­Z׃HìŒlã¯öš„z×®k|θòWfvfL>“Zú±wZž5YÓ&ç,å¯Oz©bNÂ˪÷_ʦw/ƒ×/[s&©Çèí埋oQk³OÓÓ`e;ßH=ñk¸ôr÷ÏÜëݰÕ¯Bh¨×9›ƒ";G?Móu7rÒÅÀÖ_1ÒÕ¥»·Æ_{sæ‚NwßM·ü@óÄûàª&©WçBÛꚯÏõ…ýw÷LÝë+-ÞX¹…3W6Þ·¯}Ý+•Ÿn’”¥õÇÖðoÒx´Öʘ.û$8[s¨pz3 ïZYÐÒí ã,¬¬yB¶©åDc”kˆú s&?m³o$f;Úâ=WÔ#;V-a¤ç‘e$×`í\Ï…5r‹›Þ[ù)ƒk|Ë¡>mL†µTÕéĨb¡ÕÓKõ~ÝõVZ¸òCcØ<´n˜ûnÚeãoðŸ- ñšçï{V×Ü8« Y¹{y¯¯´¸}¦îÞʯµã{bÊëV +¶¹M{ÿñ=0éôË£ “~[–_¤œÊc¥Å‰9Ê0cýë(¿¦L¸W&\W«a¹¾f.m¨ÙT˜Ù_†`'Ëllz3Ìœß_®lº¤!YN ¹'Ê•ækÁ¦öxÙJ,· Fi\ÒÔp´Ø¨©õÚ¤“œúòÂs!\Œ&C˜óÑh¥¥ŸÕ) §Ö÷ ùú„.Š~ØÞ†ÓC/L£õnäËÃéÎ’çBwF9erQíX\:ä,^ób‡|lVL ƒ¡.!\ù©†[¯iõÊ% ä©%•ÒSŒÕÖ0€•»ænõ£žô´³ ©ïŒ´4îÿ'êŸ\ª¿µtå+4€%sê'¸ß»õbî»Å/õЪ ×b®ärźÚìii!õW“0cä ½½R—„™Žl‘ÔÒ2Óë×x®Üν­ÇáÇú:çÅŽQ”[†»n›¼Øé0#å dvC/š 2>p‡u}6 3Õ‡öñŸëuÿé!ÌÈrbÎM+}øgCˆ±fG Å^œ²÷cMѵÇC˳Ҹž¬rÚz)ÖC™êµ‰A-|ŒßË÷˜ô’üÚ0a˜Vm‚€ì -v8‡²nòå®ä§3î¥e7ôÒ¤­ûÑup3……Çâ}åbž+;ôÒ,’jÛ¸“òô’gó§Óíã&ý°ñ(”Å›þãð²ô=»jôÊdÇn‡™jÏÌÒ_Õé ÷t@ödYýãt®°&þj¦ÄC°‰îТ->bŸSt5ØMe‡QCÜ&u)Ê*ʱÉp'>™]…^’ä¼Ò¡ge×VpÆv!D-º|Mœx#IÔÊÀPtGØðñ½¿&íŠ)!­N%ˆdÅ›üùôß´“<^ÖÑ7Ãp³´ç&îžMl¿²ÓLR‡{ܯ‡«ˆ¦ç7ZøÙÍüd:³Ò=×;–\¨‰×MþûNÒ¢ókÌtÒÕN}¸ÁÿjçÊô³â™3ÉÜ_iq{¥îÎJ枟ùl赉A)9Í9l?ÜøŸ¿ÜTÔý‰Ñêº 3ýÒÈœöêîôZÜ^¹ž¨Sÿ^*_7©Ò “oW}»§ïŸ$h¹©®M~ïÈš “6{¬rŒòЪlÒ 3R¾¦L 3¾§*„n«|¡Ì°¯ oñv˜iÚò¿ÝCãþËà¼Ö™ùW¬öqò¿õZ?„È„uS¶ÙÊŠO[f¼íìd“mÖ÷@Ä™Œ•9ë†Æy&×h-‡z€6 76”«a½˜ÎøÞ;,þY–[ 5ÅÏþ:ØU/šøŽªtBŒ÷ÍʱŵŸWlœg-×0äìÌ7΋ûgâÀ2ÕŽ–\óòLòˆµŠÃã‚–V2ýda «¤@ën¬÷ÛœéJXÓH'.Ü„)—Ó™ÂÌý•¯û̙ £ÙÓÒË9—/éH¿4ê¯-Üð·b»»n œîÎJæaïzÄlþ6Íß²erIŽ5ú·rïMøÞ‡šf½Ga¥RFú|ÚÛ1µ]8V’˜ja&ôʨ og{ Mx_&3˜Å}ã¯lûELÏÛ6¶ÙDã×­y|Íš@3ã¯X­ÁÐ µçj;…áh&ÞÈžl[öŠÌ9nV~hA˜ñ¶³ƒT½Ç¦Ü>ilY¹`B·Mº.Q1ô¬!¶‹kWkœÄõYä&0Ÿ×(,”+¤¡&vf|ƒ¬ld·®ãóòã§åûlÂùóåû¢ÒáféýAª= Å7&{0¯sV¦_Æ-œê®‡¹oeôñ~’Øpì$u¾×åŠ_¯&í‰ ëÆ¬¬ÌC·X¦NŒ´ì\Èí3u¯¹á]æLyc<©ÿº6jU*äèK£þZ§ÕÎͪ槃î|/‘ mE]lQT¼vtœ¸}™(Òo“pÚº¦6$­²J•u(ö«…›žC|ªè•éüùúøÌj4Õë\¾ùÖØ5ÌÌÚ… 83zh¶0õG°zÖ;4hL˜%¬œ$`Njj)éµ1ãmkÁ¨¹MÂKnÊ2ü° {Ú»´0û>ÙfÔ;Ó8¹ô˜S¡&LᜮùS;ÏÑñÒ`’cš¡gä̇šåppÖ‚IÊ4¦Ë‡j¥3ÝÕ®kÒ”ÖÓúN¦Ø ÇZõÉ‚šÉžéñ²Ë—Ö/¿~£KY°ôñpï‹ä®ñƒ•[ÿge‡!GË´7Ƈ™+î^*ÛWæýÞÝèætÕÈv ™¾W÷¦ ax—›E,Ô!ÿ}ئ-jË í{úkV×ê¯t²½ÔÝïµxÓy{zfŠßÇìûFÅj•´ÃÏö3¤Åï+CÌ’ïëAÅf¹ª|~´Ox¼fÊ^™ô>@+fÚÓ1O†™¬lùPs—)³7'ÌŽÄùš9¶ 6þa×cãoÈn ?k5ê[ÇM…ñ13Þv£°“Ö«nÒYÍŒªDÍFE+ÜÔŽ™–•; káưÍ+ÑT¶þ|±g¤xMF›»VsÖˆó ~——Ìøµ¬œNö|øŠ÷Ðh˜( ìZ4kù-î°î}’~î—X¸Æ¿¬dÚáÞ™ôÞšÐsŇ›8¤L2÷W2§®WÇø{QܶK7|î¡•ñ÷̘Ó>ŸbÙ*¾µÙÉæFþY×(ïŒú«F«kþž¹zvi˜I‡ÓÙ¤ Ê5›ú9Þä>šf»²Ÿ•bÔ©Ú±l¾Áì0c“ºaÆj0n‘L¹žV«a*æU2ô±ü}І‚ àÈlhöýÇnÓ`“•8¬)]2ݦ6Ö7{<´&*Ic*ȄDzŸ‹²Âó¡f%2|/ÃRÜÍÏ£^ŸÔTÏMYÉÐK³!BC¨é‹‚¬*½Åù†ëÔ›aØYW´ç¼g¬dMh¢ÚxØa1SLí¥!ü„ké÷Ïï™l8Ÿ)ž ç4ªWþÐè0V¶ëd]n¦‡½ÌJ~Æ3`ìãîY¿è¦›©Ìœú)–ºûmÌ™¿ Wü¶\йëzfÌ7‹Øh}Pßäûæ[£%…Ð@¿âÏì¯/d‘yЫ»ãMN—ÝþÔú^ER%ød=<•aâæEI¬˜ä¼*û¥Ç]k‡}ËŒæ{e´0Ù‚™ù½2š\¬x]˜±~]«u®Ñ~­7ap„.¯‡¦´i° ÿvC£clæ”ß =µ0"iV¯Mí±j+Ó?¹J6ŽA#„Œ¡1eâÔ¾Åþåù„ bË'䃇|ðÇI¶]7›œÇDïMXæL.ÐÔžß›qQe– çîŸ2òÃÔL¾mz}à ]éú3¡AjÍøÊq¥Z£mGaÎ=hFvéµ¾§Êž骿¹?ëñç¡»GÆ<´RbBʲs åd=›în/Ý÷k¼ØñÍè&­WÑvŸÍZÅ^‡“Î…™k»6{uwó0cÒ·zë{w¨rÏX…êû°Öö¯5K®„‘ôÚ !©x.ÌH7ªü\†ue’÷doeüû/ Ô“¿Óa¦±ÅìwV˜!ÈŽØáš`n°‰ ^Å|\ûE&oxÎ*â¹ìñ¤õ«bûZ8šzÌ$ žÐKìå½4Rœ¡k2Ü„ŸÓwÚ€ eœÉõ¤=5e}Gê ¯Ø{ÖØé‹d0êI°E (꛼Æa4[ò3ZF2~áFÛ»ó3+ߨ´Jzulõ¥(+QÖÔ„óK«žvA,|X ÷„mü0³8ƒu@§vXóÔº©–C /çB~½ã†/Z™{½jfóOü‹K˜üßÐ)¸AcÕJ.Ì,VW;f:ãêyw%sg¥î~è™±Ù¯D-4„o•úHý½Mã×ʨ¥™ÇmSy¾’Šðä×ܯ™¿Ù?ô`…ų{eÔ¼ñ8FåÀÅC›þ*®Ý¤•Ö 3€#wx&Xl¤ø‘zÑRÍz4Ö ­Ø&ØHšœD`´mã±t¿p?‘kÄJ>Ô„}^Fn$ßæšê¹I¥ m†ð×íô±þά›EmaF›Ôv«÷j•­á‰ž¨ÞÊö½Ô7u´Œ[·Ï¨ëà,Œ´êÕÝ÷CÍî ‹„†Ã®_òsDcY·ŸÚ½'µï«ù r-·)žËî߉©Çä½2‹ágIõÊäÕj‡™~*…îf¦®=GèpM0«áóuÇØ¹×Fš¼×&}¼üDyÎÁCÁj½L3 ÷áÄí“pÖiYå„Ó†×èøëØûú¯*›ÔíŒå'§á+Û¿Qf˜QÊj˜mË70ÇCÝò]ã³á¥²V¦ SJgaü´ÌrCË|JXÆJ¾WHîþ˜ûý0[ÙÊÆ•áã—É/‰‘â YöÄW³Vz`]Y§vX祵K•Ú¿Óý•Nöš‘=é\#Ýß»ÓùBmߘ"¹zœJ ¬Ô}x+4ÂQYLëü­­o7dêSMûsܦW¦8^=¿´C  uª!ÌPÕè¡ÙÓ_¼Z1|V·”¥å5Â$ÙÕpL'×›†´-*×̎˨óôf˜ +z‡Ze4Ëo¤áòu±ÉWÚëd‡¡™ôÚÔ^«´ƒ(Ìü†•-Mœ¥LK߸5®AkÏ|÷V§aý™»+éîJö᪌1²¶÷ÿVBuh+§½3½u lÞsS:»{…ÂMõC}ãöÉiز e“@ã‡Î™þ¾™{þ¾Ÿì&w;\ºJÙEŽÎß®ÕÀSK•ŸÓÍÖ uK› 2q»pÓ¿†^™t3i¼®Lú¾nUgT¯ú‡„¶7?Ðìûâ¹›$Ô¤Wý“½6sBMQÞNá&/™™K¡ACMÙª„›ðm­^aw¿8©Î|OC­ÞLÑ~/øpÔûy—?µ+›.*ãZ‚>ÐhèIœ¡ƒ$®Ònò"â¿2‹¼'F 7£•±r÷Ãôaf2d®úBN]ÑÃdˆ™†÷Xö^K6Š‹rÚ°‘¿wÆ>è¥Ó~8—laQ~úDíµsU] VÆÝûs¯—¹¿rÏù^¦Z ©¶Á“ì®wí™tûê÷µc¬½g'ùg*ÈÄí’ÿx4{e4 -Kg0Û8ÌÔÏy§0®íÔw3€GÜåO pnÁƇS>®¢·cx¼Úk3VÖÖaMýÂéã±^vXè2Lºš:›—‰p“îg${64¬CÇаMrjå”Y¹šEYÆõVe›¢nÕÇãsþ5ŽaFÉÔÑÊï¡IÞÙ°D£azå…q÷Ä,Œä†¤!À¬ä†‘ù0£N2W;ÙÞ 7‹S1‡ao¡¾Ru]z ¬_s&ôθÑz·èf²Q8÷ZÏHó:†m¿ö#Ò«gõí¾ðš«ÊÊ sëî»Hù¯²AÎk¡ahÙRn†²0uu8µÐ˲²~™ä…sYøòŒqÛZw¯ËjØ.¾ôµ×#y_XŽí\Yæ¡¿oÆo«žtýªå×$>éŸýC·¤·.¥·œä¿t*½éznºû«,Ì4§F®N¬êðÌÔþÍǒ¦‚‹íã¿MzæÚAÃøYåä{e¤xÕÖõÊõ™f’çvYcÆšÖ›•À£¤›|v“?Še ؇}–i­²¡3eà6l#lnmüÚºŽs· Û¥÷…$÷cĆùºOfËz¥…»å³chh°‡`SÙ×MÛënP_Yy!LôÊ@«~­¯l;[ù¶³Vù½3é ìiỏÿºê× aFrÁ%Ìêu·—îö2w}OÅCßó²JùFîÓ|iXP4nSœnŸ|¥×RI˜Yøsxh¥nŠäÐÓS~͹~ÙkêóÍ¿&ý£WÜ÷ü„ôãŸußÿØg¥oûgîr=°~½[/{ôN¼6£×qú=ïn²·ÕT™á=Ù‡óM7ãÊA&ÉÔ{wÿSì«Ì–W iåcÙ4´iêI#f*®ÔêÀcd}ͺ?ŽñÇ4mœî\Nh±'åÙr£Ê03¿}sv´b»öñ×l“n†Ì…»1ãj‹˲×>îÏ7öÒä½!£×³Ò«’M l$Ó'å…ÓO¹m½œu÷úŒë­áúX !*”z^:?SYè ×0|†Ý­†mµ»0ñµ°ÖÊœ%½:]éþ±H£¡·ÈW—S7«˜)Ë*Åã·Ï†¿x¯œIo[÷ìäEšÆ1æ 7K·«¶û˧ž÷¥.L÷–$Û…^Z#¿®Œ†î³´W&b6Qµfý fÛž™¡WÆäqv}x´Î=4sì#ØXù  e7‡ÇÖXÚbh„“7¨v 7낱~r¹)–Ë{‚¦Ê.ëÐ ¡Ë!vÖªÛÚbe}‰á!mÍ–ŸZÏ|1ë­ø¡LëC”µî…ûcB¨Y$½Zgîõ7+dBøÊ¦&®¬â'ùÃjñŠCÓ†ûw’}«ÞþÞîÛé}’I&ÀSmãrc ¢©û=F¢|‰+ÏUwm<þÙ†ºL¾÷íø!âð²bˆY µÖ³áMUsMÉ‚žµÍêVËòï›qI‚öœrxLW  æ†uûÿM9(= 5Ï 7ÛöÚ„Zo†ÒõKB5'rØÚ^š°o¸ï¥+ʳ•‚[!IŠÁönÁI7Í… Óª\ŒŠ´©ó¨Õ#¬©“†˜V’Þc˜‰¡h(ªù¶2á“~·… ÷Ï„iœ­ö uJ{‚Nq¸™Œ\ ³¤%7ãÌh´îÔ®m……ô¢lÒ ®>6}nñí~ž9Uó(ÈXÅ×)Ü'×’†u‚Bímü¬CEÖžSfÂ#“7þ×Êš 3ÍcO<Àcà8Mj]`˜Ú/ 5éþ1Ô¤h¨nö?$Í׳—ë© Ó7gÙ+4z*!mê±Aï{ ’¡9ù~¶Øg"à„ûr–yy´¨¡Âኃz~*ÇJÃW|θ^­0t.ö¼ØaxY:iÀ& Á´Ç%\þpÿL2Us­š=a4ô"™¤w&Ì’VÜŒ_}»4_ÇF½K×;éJå:Ûø>ýy›Fuòþ´£ÇóŸ­u¯Ÿuý´ŽW 2R¸×,Ü/KfÄ3É{! 3²•CÎ 2ÃÏd*ÓÿCÏŒk ÀãëøM°M°™ 5Ù­V^»7foCÒÂ6îã^7|ÊŒ>J.[V•0PÙ,Þ§#%Cr¦>Ÿ8±Ñhê n«ìq[´àG=9q–73™0¬,ê9~Ù¡Æú†kmê݆2KÅIâÂz%a£t]š‰FjvÙÃ}=aØÚJ®—'܇3uÉÕx›¶3Ê×U ¾åùz][!¦8~9ª®^X¥‰0”ßÓhÄ®¿ý} ˆ½2i8/î•IÃBùkµ¶Îû 3­^™P0a€IN  6 6­P{iæ¶&Lóáf¯ÍDÍm¬uÃχ뱊IÍTëÂM˜¦y´&Žê×¶pBOR¸'§•µj—64îŠs1]ç¯éýñSw Y†{ZüMõ&μVÔ3ü3Zg§þ"d»‡kîÁ ½3sÚ°¡wÇ5³Vn"€4̬i¤® 8a#ßdÉãûEéû?oûÀJÏ^©^9põ%¬]ß©òBY3'ÈÌËÏÃç`Ò5…$ÅÞ:Së¡[ ›aµòøì0“äðQ¯Œ”/ »®,c^  6 6Y«l"ÔL–Ùx2k{ ?ìn¡¦Öðšú8¿¶¨…U¾þMZ~­žå1BýÂðµpÏB¹Ùkc*Ï…Ç‘5v¸"Þãce¬IÖ¼1ãé“×ÞÃP>_üœž{èòçcÂP±lF·Ñ’²LzyÌ™õ÷àôCðZWçégdz ã픤/}Fº[™ÙL’ž9YSXí`•0Rë µèabüÔDp4ÉÚ2錀á=]†™Ö±çÔOã—éÂze&êÀãèÑ 4Áœmo‡Oîçÿ!Ô„Æí¬`SÙ nªÁfª˜pü·š,|­)gT¥Ê“µÅ<ÓMkç^m¬…Pãëšm—6Ø’©Ë >a b¦eœìÊÛY; ÛZ¹QËb›j ñÚ5íüC!ÌÄ…4m{Ÿ´|?»Yìù: kž¸2­ò˾•ÃtÕaÈÙ—}Žôצ÷­½ïlùÄÄ>Å÷͵›*›O>¸&ä…ÿ•†ÙÊÒ Sö6n¡<§nüßµW¦,<&5DÊm‹OÖËP“–×,s}¸YÛkÓ*&62ÍÌ{¥¬T!¡ë |ªž4E/ÄTP ÏõòA#}®üôÙ½R>”,|ôIaˆ—‘ ;2£…5CC³j²k=' †aLñú ÁiªAŸ•ïg6së×ÈÏ–,Ú™î–ì»QÀ æN®g&Þs%é?þ5×KóõϹF'Oy8¯øÖ(NgxήïTšz¾õÜŒž*›¼oÂÿñõ.×”I?ŒØ¢®;IY˜ d!0À6¯@Ì 6¡eT64j àmÃMöiõ†á¦e*lLícü7q¸X%,µ®]+ô¶²qQ·0<(ûÞä×9ÞÄ­¼ñ—öΤAlm[sº›`x²í0‹›Ê4y–!'ú^'zÂÊáq}×\Áñ.~Ý›. *IÿÚ[¥¿÷éÿ¾-ýÏKÏ_¯ì<®HÌïþ·ò[sǹÏÍmЇ`†ð…ë>sïrÌB×Þze£^× Ãˆ*ó¶>Fæ|jÛj¨Oµ0×–ÛØ yØ}êmÛ §´a‡;M„ 9ŸNÛò+4+é­Ü¶ZžU³±‡”™¡'&»‰ÛúYÊì°ÎKúÂD8ÿ,ìŒë”žN<¥‰¯ôúÛÞÆÅ­ÜÏ:ëóÉìP•ø’„Ç¥aUzM·Z_—ZÙíã˜|šâÞ_?Iú?OúÐ?'Ýë¥?÷ËÒ÷½8âÏ·òµö÷¤uý'ŸKOd}ÙçÂ-´>À¬Üõ5é$ ˜\iýIDATsê^©bù;8ù;Y”%i}¯L¿æÜó@ÅãÙCS µL`‹Ç[C”¦Êm•Ý:°M¿MšCihÉêTrª~kë#řԤ|Í›¬€21¬ SáxéD]ñXº}hhÇfòsyÜtŸlí’òÚr[ÊÕº¶áž”p]ýLj6Ü?S«Wx(id:©÷ëá„ fÖõ&ÍxŸÅKï‡ß¹I†ã˜Ó¤÷Ý”þöï—þî§¥ïÿŒôoKÿùóÒç_›w¼]ŸÏߨõ-lã­pÏI7Ä¡WÆÆP;»Wfª*ÖŽßjÝ+S­(uey´>Ñ5~w({£çOznÊÝF¦õ©žoúéöt& +{yâ½1ò‡¥Ð“ÃJ¬ Ó@gŸ§ßÛ!lÄOý“úצ®žsñU¶zûZ}&^»pÎFê} 2ɹÙU­7¤¾ìº¯Ð{dÕŸCM2¤-L’ºÚIÿþ;¥~‘tûLú†_–þÁËõ—qò=²æùRòš”·R•5£"C€‰÷!™ø¶2a½¡9½2Ås£ÍŠ÷ÊÚžÒZ!¦<¿-{e3ÌÒ Ÿ’'_pÊFÅ>BMZî®á¦†D ÷¤nf}qÍæåeû™q9µmjeꂌÜW0¡ç£ 0µò¤úp³uÙô’M5Þ}÷G\œÑ*Ÿ NIåPÀ0¹Anéìh£¯F}ªutLj“ ×0 m«zÿMé+Þ!Ýï¥úLv‰ÊK–…€¤š£íÂÏ齺Æå­m殟â³01CèÅ aÆôv˜ÕlêµoÔ·d&•…„|¾—†Æíg¤‚ YºÆVÒ:þcr÷?°icÜjûágSe‡²6Ý ¼DaÍML(0ëxŶa¦²Ø Ÿq²Y86ù5+[µSв¾å1ÒòÒ©“³÷òšý‹MMù  kÑ'¥=3s®ghäú â=@s®åZf豈ëãh3­{_^:•þ›¤Ÿ{]úçoIßò|öt­C+ÿ&ù1 ­jnrªéû%Y[FÆÄãeS2O¼ÒákÕM6½Ù¿UP•™ 1Ü8È4+ ¦ø{h’ :%÷ìÚZÄ„KÙúÝ×eÚ(ÜT6êåV6ÖÉL¥–5Å ¡ctCÀXrCü¹6ü- Yð¨FŠæCÅÇë„ðµûW”¡U¾ìJjA¡ü9L#œ4lM6™ÁF™«ºA6Ù€òáWÍ0óáW¥¿ñ éA}åçæ‹PÖl¾¶ù]¨¼^6™ý.L—md‡ë×ûMËÕ c­ âÃ3zd¦ž2ñÿè•à-ãÍ×µœ¤x÷4p²·FŸ÷uœPöºlå¦ci³{oÒãæ=ê¬1Þ;1Ù¡‡£lÑ×Z§Jö­Ö-)«5Dm‹žYwJenrS7ŽS+sn*ÙñiÇI â°&3¬m&n÷’„û|R¯œº ó3¯Iï}"Ÿ =ÇZeÖÔuc×Î&á8¶Þ÷“%a0¼}ævÖ6šÕ#Óª/½2„å¬OªÓ)¡øãë”müó¼.sÃMè¥èŠí“Æ·MÆàL†›Öq/Ð&?·zcŒb¯ÑèýÓšh 4rÂsiXJ7sÝæ|êö k΄aNS;úý⽆ûYÊ 1YÆaV2=³+_ãÀ¾ÿó¿*½ôÐ÷ʼ#_´tÝÁg>µËöYoS—ì®wº@fRîtñíð¸Ëð2Ù4Ì”½23?â¿¥ìŲlŒÄ?Ò“#ÑOk:.Î혩ñMy/Rº]Ù,æÇî½)N¶l §e‡ÌCÃ=4TËaMµzŽŽ[y, 2•n>„-Cp¬ Ñ+®ýdÏXV¨ß¨|›îaøW»Wæ‚‚ ÿ) “¯CSûYktò‡t0'ÔœgðõBؼñž5~*IÛ¯å R~N7<šÍŠùïk=YOÑT×Cz. åiŒz#oäÉ^•щçÿ¦CÆÖõÎtŠ«ØKfr› ›½3aL\K«¡nãUT$ý¥/”ž¬,=õÒ©ôæ™ôüõùuÛö’×.‘Þ¡W&„™M‚L²A­grƒÝ'Ÿ¾¬^‚ U®‰Z~ÊÝú Låëq¶®‘6®Î³1Ò ¡s*2Êþ­5ZBQ¡±Þ¼efƒ¯<—Vu³Ç‹º¬ÛwÖ‹§’0cãù”_é–AÈ”=4së‘®…~׺t‘Ïdjæ¸[åZHÒ7ýŠô“/¹ï?ø éÇ?ë¾ÿ±ÏJßöÏâÑ›§—V«}µšÏÅj…Kÿûabg›¤äzÙöû©z´ü¡YkȤE¬Ùdøo]2Ì2L=¾îuÝöw¿üo,a€‘ÊǵR»±;‘\÷œ´[Sò?ºÔ*d¤|溢"åµ´<#75t6ÈL¿ÖåsS½*s®Ãèº%;fáfF]Zõj=žµÒÇýÆodÃuL·ÏV®ßâ—#½>i˜±6J›”ýÊ™ô¶UõX›¼¤ÍÇíÄsE‰×+ÎZf‡9·éñöx3~ܤ앩ͦ·å1ªjïÉÇñ¿«ÌÐ4Þ¨Õ–´vÖ5Þkû?ê6 5é>éó{­‹U6ûYµÁ_ Éö/~.žßh5ièºHóÔÔ{eî°³ôÓïôû¹×s]ð a¡¶ÖM²OÞë !Ì„EBwù…0Š KÆbbÙ!î¼{O7=%mlú^ñרdÁoþ±g˜¹å¦›•÷ÊT›ÝíX‚ ›4¥òSuŒmjÒ}ÓíöU¡jF=4•cÕBB©~¤ö$åyµ:‰*UŸ<þ(ÈØùïѹa)kĶ»/\V áÐÿÛ+3Û6pcOFr={ë§Þ²Keûú]OÃLÖ‹•,޹¶ÇÃúÎ1ĤõMßlsÃÖ6!o_eðÚ,Ð`ž]BMZF¹Ï6õ(÷¡¦Qn³)9©ðíš§ú${°®ggn-YM2üiݱÒ{²õRvk•Ú¬\ë{3’ò÷i—òZïÙð¶)C™•ÌÔD±\›|»Ÿ 3YJö&µÕo7/tÝqv, €ÇØîfÓá=‹}„š²¼tßê’ìœÎ¾Õ*ã´'ÞEQ1ä„íºajSÇ® «s£ë•†‡PÖºð3S²m2ÌJÓk×ÔÊT94ËÁ* 3Û¶áûíïÞrÇǬ¼·mù¾K×ò…â-ÌŒº­--Ô}]ÐߨТü)6¶¿‚ÍØ¾CMZnZÆ:eCõÉ9ŸDû3?Ô:pQLø6h ÝsNÐ )! £k YÚdèYÙû³f¨Y³^•)žgç¬f¢™éú=i¯Æ6ïøŒô#ŸÍ»}&=s²}™¥¤ÏÖÞ{VùZ>Å{òÂCŒ”ÿ.NÝ;¶qÁ•2w- dö?äŒ`“[w=¶ 5eù­c¬mHmzp«ÉÙîÊmã·áþ’é͆jåA§pBãyCÏÒ 3ÚÜ0“¥š3•o+ïÚ´.Ù½&Åós¤Û~àiéNef3Iúœ“ ]£ 2ÊçÐ3ã{¯ö`fn2ÞaN¯Ì>CÌ6e€‘"д>âÞ¤sSÁc×P3–ö-í‰õ.z ªÇõ-Æ,,$·v ß6V~7ÆdŸüïÄÊ/XÙ¨G­üÚ§ù4ÐÛ[Žoœßù×ó/}aýñH¯žíP°g’0V¾Æ!ÌÈ÷Êmz"çb‚ G­[¿ ö.ùÄ=Ú&|”÷{L§vÌ}Èf‚j7}|´o«¢ ÙP%×8Ž_S )û5‘mc§vL{QFÃÔ¶ø*ËNÃL¿‡2[þÁËÒw}|æÆuñpÅFkÝkãz¬¬l?kuÑßçfæ^ÞG5å<~xŒ1ËÙe+Cͺ†Î>z]ÒN‘mz‡Òž•¹ 8)¹ß%ÕªÀºîéc­ÆdbwB¥èx~3Ž•5àíö-ì,Lõ][¹Xqâ‚äz§›…™Ëæ\Ï Îm/—a*ÈœGo̦å€Ù4‡dªÁ³mi傽4®vll§! ÔkýþÛdHÖJ›–UÜnÊûaŠC7'ØG/X9SZQÞÜ¢·Î½AÐÚäDÃH¿ôÚÕBµãËU9ÄºŽÆ½ÚdHáœý×!Èp®4ªmQ³Ã…¶ìé™H [vÊä Ò©ä±fÿpïz­·¡Ö³IÝã²Mã¸vOÒ–që—¿’6ì觉 Â&V2>6ι¥hÔÙu¦&¤˜;¬l.æX”£™³…5ËÚtÙ} uÛ´¼mCNsçF!­ûlùÍ0±-g@Û"ְ̘½]ÂÌ y®¨—ØÚŽI ›;roÞ±wT›¼aÎA·yßd¸Pšcu^¦¹·´”SodCÕÒ™Ö¤yÝ£BÒ“^‡m¹1€lÒ‚}E•š=N;úÙפÓJy/Ü›±seâ‡ÑÏå5_µsµÉmZé>›8”sà1D y\mDû‡ï÷voΖvi V{­à,Hͬ[í€k‡@íùbþõÚÓ3ᵉ‹º–¯sY×CkÜWÃWA€£C yœµBÍÜ`2uãÃT`Ú5LÕÊÛe›Öp¤ÖƳÃÏÎ3Èý‹¤U£ì+­d"ÌÌ^tô€ì4„q¢ pi4¨ÛGoË>Se›‡®ÊÓ(Zåí2ÝuZH­œó 3’ô{®ï^F/e“\¶äÖ¦YÛ¥2<4»}=ÛdûCi¶nrŸÚVÊï™Ùe†¬‹ 3se¯gmhÝ%÷Êl3YÅ6“Q´Žíß.ÁcÓ}·i¨îƒU¾åÆ;o¸ik¸Ú¡4œÿ¿Ñ0¼Kê•Ùõ~—mû¡¼` rµ`q ¼ó®V;ج¡k•‹M®M¥W&SÔo‡) 7¶ñµÜãv‡ö2€Ù4˜¶éäÛšœÊž¤}7B×–·Ã=;&þ_²ÿÝ‹íñ¾¤5‡ÙÊEO&çç¢{wÖÝÈÞÇY·IÌ!7¦/<(δïÅ]À#aÉxìÅ&÷Àì{Úæu¦‚ξ‡.ÍÙÿç¶­ÛyžÓ®“V€G=48‡ÞœZ?§¶]ëùM޵íþ—í2ëÌ ý`  .Ç.Séž—©Æ°m|?eaè¢J¹™ÌD ÁåÛG£ô<¶»­V¯Ìe4À%0εnÍ€Çç2èûXDó"S˜9ö¡yàRhp|vmìÖùs&5Ø%Ì\´C©Ç&1` ]³áFãØŸ‹ü}:Æ0°%×C× ñß´f€ëÞ×ûß#‚ x -Õ©¸iù¢WCÌ®S3ïZÖ63à1µ”Ize₇f¼²9€¶Ëþ¹ìã\’aÈYõØ$Á†€ÓÉÚú$&ý×HÆ0¬ÀAYª÷ߥ·ÎÄ¡g%3î­a—d™…ßÛô$áÔÀ+À9ó k&éÃV&Øf‚&KpÎŒYtÙ2k÷8À9êv.¡6¡\€åÞJ"Ô‡ëÃÿâ¼íþø?9ßzìÙî=4pI4ŽVÇX1Ç*ï¡!Û8"ã!g„Gbó{hæã¿àm>móTP!ĸ@K—BvgFˆpIò!g pD–.Àø:jŒÍætæ0©€ ²T§q±>àÄÞš˜t*›8LŸ~Ðþ=}j)=±¸Ðêìò9Ä,Í.vbA8_ûQé¬ñ ûîëÒ÷¾÷bë°Ëj Ùä>šçpA~àä¿«½¤¿öqécw¤oxç%U `7Ël4Ù¶jûr€ÃòìÕáûÞJÿÕÇ]˜ù+ï–þ•§.«V;©9³Å¿Û¤zn€ÃÔ[é;_>üª 3äéË®ÀÖÆ kZåA†P<:zIÿõ ÒO¿"}ûï‘>@Ï 8n.ÐØâk“ ÓÚŽõl€ÃÒKú®K?E˜Žå(Ȭ 3»—ミþ·—¥?þéåSé'^ž»¹¾ø-—W7€-Õg9ðèyñôÜUé×ÔsW 4à(-ãÍûFÊlj5zjÊ¡d"à8üµßÛ~îÕ³‹«Àu2RýË$_—YEçæA/}ß‹Òúë—]€­Œg9K… c‹ïkÛ¨ñ<€Ãô3¯Iÿío»Þ™¯{ö²k°•e>MóÄ÷s£Ö˜O=>ôÛÒ/¼î&ø¾÷º{hŽP§^É”Í6ÿJg=+ƒ€ãò —¾÷Eéë?&}ò¾ôgŸ“n,3à¨-c` “lZ9ÀqøÆ_–>q_úºç¤¯ú\é7îJÿËKë÷8`]ün“õe豎ϗ<#-;éç^—~ó®ôÖéW.»V;é%ÀcâÏ|®»_æ©¥ôM¿"}ÿ§¥¿òîË®ÀNòi›<Úž»*}ç{¤¿úéßþ½JÿÓïJ+>ÙÇ©“IM¹M 8~xÊõÖ|ùÛ¥ïù”ô-¿qÙ5ØÊ2 'Ö>¬56ÿ¹d&žpXz+ýèg¥|[ºÖI_ö9n¦³ý÷8À겞–QM¥ç¦TîCÏ p˜~ð3ÒwRºµî®¤ÿì×¥_zSzçUéÏÞe×`+ËÑBšûèq‰=>{( À~|øUéO½Mú‹Ÿï~þ ¿*ýÔ+Òûo^n½v°…+’ÈT0 kØ8l¯žJÏ&Ó4¿óªôÒéåÕ`–²IZ±Röó\ôĸËÃáÀX^v\’¯{ÎÍ|pÄ4Àãä‡Wú‡¯Œöªôíï¾øúìhó@SNÀ¼Àqøò·K÷úúsOóÙ8NËY3”M…–©ý ;ÀáøÚg/»{·”©$’0s$¦˜ m‚ € ÷ÐÄSÙ²R/.É0p~´¸¦ÿ†Àà@ ëÐXÿvMˆ!à8KYŸP²`S Ä8@K €cÕ]v`[G‹@àhh-c:“M `me–&p€è¡p´4ŽÖròY†š8`ë{hÌÔ¶0h3ؼ{hLòU>—dúšB €±”©%;ù#‚eµÇņI2W>äÌú¯dÖåò€KäM &>ÑLB €±”-L-°b %½1ŽU}‚ €#Ð^X“PàÀµ 8 €£E p´4ŽÀÑ"Ð8Zy ±bºfGƒG‹@àhh- €£E p´–’˜Ù ÀQ¢‡ÀÑ"Ð8ZG‹@àhmhLñ½imço¿›N1„ë¡!¤8BËÑ#FÓëÒ°f €±õÎf‰nÖx3+ €ƒ3 9³Å¿å÷p`–²•ÔBp¦{hà€- 0ŽUwÙ€mh- €£E p´4ŽÀÑ"Ð8ZG‹@àhh- €£E p´4ŽÀÑ"Ð8ZG‹@àhh- €£E p´4ŽÀÑ"Ð8ZG‹@àhh- €£E p´4ŽÀÑ"Ð8ZG‹@àhh- €£E p´4ŽÀÑ"Ð8ZG‹@àhh- €£E p´4ŽÀÑ"Ð8ZG‹@àhh- €£E p´4ŽÀÑ"Ð8ZG‹@àh-/ëÀÏ=÷Üez–_|qÖvœÇÅxÜÎóÐCàhh­Kr¶/w¿ü–Îþ…ëê>uªkÿðŽ–¿ñ𲫴‘7¾åõ·Ú¹²{­×•Ÿ¹««?wïk5ßêóOôæðôä6‹—VºúSwuòÿÝ¿ Zmîì NtçŸV÷â™n}÷«Õmîýé[zø‡¯éÚOÞÑÕŸ½{Á5@ÍîæÖBæ‡Þ+ýþ²ÿÎG¥ÿçÍ=Tk¾Óùºî~Å“’¤7ÿ£gôô7¾¨k?}<Í{ú–VïXó2|Ó[tó¿U·¾óå‹©ÔVÏtºûÕO­Ýî¿øVÝü[¯êÖwÞ9HRÿö…î~õS:ù¥Í@sú/]×ݯ~R‹ß|¨«?{Á@ÕnæÉ…ÌO¼_ZYéïVæ'ÿ ìŸø§Òÿ{q¡æú¼¡åGèÁ—>¡ô†ÞøÖ·éÚO¿paÇßÕ­ï|YöF»‡æô½Wt÷kžÒ›ßð]ÿ¡ÛZ¾pzµ[oùÛgzê¿ülóy»þ±ºÿ%OèÍo|‹nþw¯Ê¼Ù_` ð(Û>ÐÜÂŒý“‘Þ\ÉœZ™ÿõý²_úO¥ÞÙc5Û®üü=]ùù{ºñ÷oëwþÉ»tö®Ù›ÝÑ4š¯ÿèk·9ýC×tú¾«:û}W.Ðt/¯tã|}r›'~ðuýîÏ¿K«·/töyKüÊq ÀáÚ~R€?û¬ổìw¼ ý«î û­¿%ýÀïÈüÈØWýf3÷­º—V’¤ÕÛ~üóbovêßîrçâÓg—\›íôO/Ô_72oöZþöqžÓæ=4·Ò×®ôɲú¤Ìß{¯ôÄBö«>&ýôkÒ¾%ýúåÜÀnF߇¸®û_þ¤Î>o9~¶zn©þ™…®þÂ=|äpoª—¤;_ó¤îý»ãûiVÏŸÈôÒSÿÉïÈÜ9Ìž3󆫗}‚‰ÿŽÉf&Ü3ó̉ 3ßñ.éé¥t{%Ýée~ì}Rgd¿òcçTÝGÏ?ó”nÇÛ$Iæž•yh³ç»ÏœêƼ¡›zE:Ì,Ù§—Z}ÁIþX'Y?‹Ûƒ/yB×þ‹Џ©å §ÒÊêìùÝû“·Ü,fgùka¯øo®/Ô?Õ©{£?ø×àQ7?Ф÷Ìü…_w=3O/¥7V²ßú[2|ôÊ©ì¿õKÒ«s¬ò£åÞ׸·ü¹Olc®›ßýŠn~÷+£ÇW_p¢—øºû•OêÚ¾¡«¿pxSP›ûV7~ø¶î~ÕSzíƒï˜Üöo~«Þøæ·êíô->uX÷4C˜ÙÐÙó'2oôGf¦,>qª“_¼¯ÕŸ¸©³÷œd ‘¤'ÿògµøø©~ñZ=»”-†.öoYÈÞêÔ½ºrCÔŠ\¼ù=4_t]úŸ_’Þ\I?ñ²ìWÿ²ôÚ™Ìßü½²ÿË҇>uŽÕ|tÙ+FÝýG·aÜ?ÕéánèÁ»!IZþæáöh˜3éæ÷¼&}ÏkÕçoÿÕ·ëÎ×<©'þæ+ºù½Ó3»àbÌ4ößþ¨Ìÿþeö²ßöqé½*óãï“^9•þÎgÎ±Š¾þéNŸþ­÷¬ÝîsþOèäWkÊãä†^ùÁçfm{åïëêÿuØà¸Ìï¡ùèÙ/û%™Ÿ|¿Ì•ÎÍfÖÙ“{f0¡—Ÿ<ÕµßÕÍ¿ñ²[„ØcŒÉZ˜Ö®ip¾ï ™ŸxŸô+we¿âc[‡™çž›÷©þeyñÅgmÇy\ŒÇí<0ÏæëÐ|äŽì»~᪛aAG‹@àhh­Í'€A €£E p´4ŽÀÑ"Ð8ZG‹@àhh- €£õÿÎ`¦;cYÎIEND®B`‚surface.svg000066400000000000000000002070471515526535400132540ustar00rootroot00000000000000 image/svg+xml B.C HOPPR V 1.12.8 ♯ ♯ ♯ ♯ ♯ ? 1 2 3 4 PAN LEVEL pax_global_header00006660000000000000000000000064151516305000014506gustar00rootroot0000000000000052 comment=e04aededd8ddd971d147f5e08da498e127bf4445 src/BWidgets/000077500000000000000000000000001515163050000133515ustar00rootroot00000000000000src/BWidgets/.gitignore000066400000000000000000000000441515163050000153370ustar00rootroot00000000000000/include/** /build/** .tags .clangd src/BWidgets/.gitmodules000066400000000000000000000001071515163050000155240ustar00rootroot00000000000000[submodule "pugl"] path = pugl url = https://github.com/lv2/pugl.git src/BWidgets/AUTHORS000066400000000000000000000000671515163050000144240ustar00rootroot00000000000000Sven Jähnichen Arthur O. Reis Andreas Müller tonilinksrc/BWidgets/BDevices/000077500000000000000000000000001515163050000150355ustar00rootroot00000000000000src/BWidgets/BDevices/Device.hpp000066400000000000000000000073171515163050000167550ustar00rootroot00000000000000/* Device.hpp * Copyright (C) 2022 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DEVICE_HPP_ #define BWIDGETS_DEVICE_HPP_ #include namespace BDevices { /** * @brief Parent class of all devices. Stores information about the device * type and the time of creation (or action). Device objects (including all * objects of child classes) are Comparable by comparison of its device type * (and optionally its device parameter type). * */ class Device { public: /** * Enumeration of mouse buttons as input device for event handling */ enum class DeviceType { keys, mouse // TODO WHEEL }; protected: const DeviceType type_; std::chrono::steady_clock::time_point actionTime_; public: /** * @brief Construct a new Device object. * * @param dev Device type code * classes. */ explicit Device (const DeviceType dev) : type_(dev), actionTime_ (std::chrono::steady_clock::now()) {} public: virtual ~Device() {} Device& operator= (const Device& that) = delete; /** * @brief Creates a clone of this object. * * @return Pointer to the clone. */ virtual Device* clone() const {return new Device(*this);} /** * @brief Get the device type. * * @return Device type */ DeviceType getDeviceType () const {return type_;} /** * @brief Set the time point of the last device action manually * * @param time Time of action */ virtual void setActionTime (const std::chrono::steady_clock::time_point& time) {actionTime_ = time;} /** * @brief Get the time of the last device action * * @return std::chrono::steady_clock::time_point */ std::chrono::steady_clock::time_point getActionTime () const {return actionTime_;} /** * @brief Compares this and another device object. * * @param rhs Other object. * @return True if the device type of this object is less than the * device type of the other object. * * The virtual method @a less() compares this and another object primarily * on the base of their device types. This method can be overridden in * inherriting classes to compare additional parameters. However, * comparing additional parameters is only allowed if (i) both objects * are from the type (class), and (ii) both objects have got the same * device type. */ virtual bool less (const Device& rhs) const {return type_ < rhs.type_;} friend inline bool operator< (const Device& lhs, const Device& rhs) {return lhs.less (rhs);} friend inline bool operator== (const Device& lhs, const Device& rhs) {return !((lhs < rhs) || (rhs < lhs));} friend inline bool operator> (const Device& lhs, const Device& rhs) {return rhs < lhs;} friend inline bool operator<=(const Device& lhs, const Device& rhs) {return !(lhs > rhs);} friend inline bool operator>=(const Device& lhs, const Device& rhs) {return !(lhs < rhs);} friend inline bool operator!=(const Device& lhs, const Device& rhs) {return !(lhs==rhs);} }; } #endif /* BWIDGETS_DEVICE_HPP_ */ src/BWidgets/BDevices/Keys.hpp000066400000000000000000000073051515163050000164660ustar00rootroot00000000000000/* Keys.hpp * Copyright (C) 2022 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_KEYS_HPP_ #define BWIDGETS_KEYS_HPP_ #include "Device.hpp" #include namespace BDevices { /** * @brief Keyboard support * */ class Keys : public Device { public: /** * @brief Enumeration of commonly used keys * * Also see pugl @a PuglKey. */ enum class KeyType : uint32_t { any = 0, backspace = 0x08, enter = 0x0D, escape = 0x1B, del = 0x7F, f1 = 0xE000, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, left, up, right, down, pageUp, pageDown, home, end, insert, shift, shiftL = shift, shiftR, ctrl, ctrlL = ctrl, ctrlR, alt, altL = alt, altR, super, superL = super, superR, menu, capsLock, scrollLock, numLock, printScreen, pause }; protected: KeyType key_; public: /** * @brief Construct a new Keys device object. */ Keys () : Keys (KeyType::any) {} /** * @brief Construct a new Keys device object for a specified key. * * @param key Key type */ explicit Keys (const KeyType key) : Device(DeviceType::keys), key_(key) {} /** * @brief Construct a new Keys device object for a specified key. * * @param key Key code */ explicit Keys (const uint32_t key) : Device(DeviceType::keys), key_(static_cast (key)) {} /** * @brief Creates a clone of this object. * * @return Pointer to the clone. */ virtual Device* clone() const override {return new Keys(*this);} /** * @brief Get the key of the Keys object. * @return KeyType. */ KeyType getKey() const {return key_;} /** * @brief Get the KeyType for a provided key code. * @param keyCode Key code. * @return KeyType. */ constexpr static KeyType key (const uint32_t keyCode) {return static_cast(keyCode);} /** * @brief Get the KeyCode for a provided key. * @param key KeyType. * @return Key code. */ constexpr static uint32_t keyCode (const KeyType key) {return static_cast(key);} /** * @brief Compares this and another device object. * * @param rhs Other object. * @return True if the device type of this object is less than the * device type of the other object. * * The virtual method @a less() compares this and another object primarily * on the base of their device types. This method can be overridden in * inherriting classes to compare additional parameters. However, * comparing additional parameters is only allowed if (i) both objects * are from the type (class), and (ii) both objects have got the same * device type. */ virtual bool less (const Device& rhs) const override { // lhs.type_ != rhs.type_ ? if ((Device::less(rhs) || rhs.Device::less(*this))) return Device::less(rhs); // lhs.type_ == rhs.type_ ? { const Keys* r = dynamic_cast(&rhs); // Same object type : Compare key_ if (r) return getKey() < r->getKey(); // Else return false; } } }; } #endif /* BWIDGETS_KEYS_HPP_ */ src/BWidgets/BDevices/MouseButton.hpp000066400000000000000000000124621515163050000200370ustar00rootroot00000000000000/* MouseButton.hpp * Copyright (C) 2022 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_MOUSEBUTTON_HPP_ #define BWIDGETS_MOUSEBUTTON_HPP_ #include "../BUtilities/Point.hpp" #include "Device.hpp" namespace BDevices { /** * @brief Class to store mouse informations for each button (incl. no button) * like position, and time of action. * @tparam DEVICE Device type code for the respective mouse button. * */ class MouseButton : public Device { public: enum class ButtonType { none = 0, left, right, middle }; protected: ButtonType button_; BUtilities::Point<> position_; public: /** * @brief Construct a new mouse button device object with default data * (position: 0, 0). * * @param but Button type code */ explicit MouseButton (const ButtonType but); /** * @brief Construct a new mouse button device object. * * @param but Button type code * @param pos Position (x, y) * * Although it is allowed to create %MouseButton objects with any real or * fictive position @a pos , @a pos should be passed as an absolute * position as provided by the host system (not relative to a widget * origin). */ MouseButton (const ButtonType but, const BUtilities::Point<>& pos); /** * @brief Creates a clone of this object. * * @return Pointer to the clone. */ virtual Device* clone() const override; /** * @brief Get the button code for this object. * * @return ButtonType Button code. */ ButtonType getButton() const; /** * @brief Compares this and another device object. * * @param rhs Other object. * @return True if the device type of this object is less than the * device type of the other object. * * The virtual method @a less() compares this and another object primarily * on the base of their device types. This method can be overridden in * inherriting classes to compare additional parameters. However, * comparing additional parameters is only allowed if (i) both objects * are from the type (class), and (ii) both objects have got the same * device type. */ virtual bool less (const Device& rhs) const override; /** * @brief Set the position of the mouse button device and the action time * at now. * * @param pos Position (x, y) * * Although it is allowed to set %MouseButton objects with any real or * fictive position @a pos , @a pos should be passed as an absolute * position as provided by the host system (not relative to a widget * origin). */ virtual void setPosition (const BUtilities::Point<>& pos); /** * @brief Set the position of the mouse button device and the action time. * * @param pos Position (x, y) * @param time Time of action * * Although it is allowed to set %MouseButton objects with any real or * fictive position @a pos , @a pos should be passed as an absolute * position as provided by the host system (not relative to a widget * origin). */ virtual void setPosition (const BUtilities::Point<>& pos, const std::chrono::steady_clock::time_point& time); /** * @brief Get the position of the mouse button device * * @return Position (x, y) */ BUtilities::Point<> getPosition () const; }; inline MouseButton::MouseButton(const ButtonType but) : MouseButton (but, BUtilities::Point<>(0, 0)) { } inline MouseButton::MouseButton(const ButtonType but, const BUtilities::Point<>& pos) : Device(DeviceType::mouse), button_(but), position_(pos) { } inline Device* MouseButton::clone() const { return new MouseButton(*this); } inline MouseButton::ButtonType MouseButton::getButton() const { return button_; } inline bool MouseButton::less (const Device& rhs) const { // lhs.type_ != rhs.type_ ? if ((Device::less(rhs) || rhs.Device::less(*this))) return Device::less(rhs); // lhs.type_ == rhs.type_ ? { const MouseButton* r = dynamic_cast(&rhs); // Same object type : Compare button_ if (r) return getButton() < r->getButton(); // Else return false; } } inline void MouseButton::setPosition (const BUtilities::Point<>& pos) { setPosition (pos, std::chrono::steady_clock::now()); } inline void MouseButton::setPosition (const BUtilities::Point<>& pos, const std::chrono::steady_clock::time_point& time) { position_ = pos; actionTime_ = time; } inline BUtilities::Point<> MouseButton::getPosition () const { return position_; } } #endif /* BWIDGETS_MOUSEBUTTON_HPP_ */ src/BWidgets/BDevices/README.md000066400000000000000000000041731515163050000163210ustar00rootroot00000000000000# BDevices Devices store information about its type (e. g., mouse), a parameter type (e. g., left button), and the time point when it has been created or changed. The type and the parameter type are immutable, the time point of action can be accessed with `setActionTime()` and `getActionTime()` Device classes derived from the main class may also store additional data like position. ``` Device ├── Keys ╰── MouseButton ``` Widgets can take control over a device by grabbing it (`Widget::grabDevice()`) and can release control again (`Widget::freeDevice()`). ## Device Main class of devices. Devices are comparable by (only) its type and its parameter type. This means, if two device objects have got the same type and the same parameter type, but may differ in other data stored in the object (like the activation time point), then both objects are interpreted as the same. All other event classes are derived from this class. ## Keys A Keys device object is responsible the keyboard interaction. A Keys device object can be responsible for selected keys or all keys (`KeyType::any`). A Keys object of the `KeyType::any` is grabbed by the widget `EditLabel` and may be gabbed by `BWidgets::Navigatable` widgets upon clicking on it to make all keyboard entries to be passed to the respective widget. ## MouseButton A MouseButton device object is responsible the mouse interaction. They additionally store information where a mouse button action (press / release) has taken place (`setPosition()`, `getPosition()`). Mouse objects with the parameter types ButtonType::left, ButtonType::middle, and ButtonType::right are responsible for the respective mouse buttons. They are automatically grabbed by the respective widgets upon pressing the button until the button is released. These objects are used to store the button information for dragging and clicking (= press + release). In addition, there are Mouse objects with the parameter type ButtonType::none. These objects are automatically grabbed by the respective widget upon moving or resting a mouse pointer over it. These mouse objects enable pointer focusing and hover widgets.src/BWidgets/BEvents/000077500000000000000000000000001515163050000147175ustar00rootroot00000000000000src/BWidgets/BEvents/Event.hpp000066400000000000000000000104451515163050000165150ustar00rootroot00000000000000/* Event.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BEVENTS_EVENT_HPP_ #define BEVENTS_EVENT_HPP_ #include namespace BWidgets { class Widget; // Forward declaration } namespace BEvents { /** * @brief Main class of events. * * Stores the event type and a pointer to the widget that caused the event. * All other event classes are derived from this class. */ class Event { public: /** * @brief Enumeration of %Event types * * Type safe enumration supporting the bitwise operators | & ^ and ~. */ enum class EventType : uint32_t { none = 0x0000, configureRequestEvent = 0x0001, exposeRequestEvent = 0x0002, closeRequestEvent = 0x0004, widgetEvents = configureRequestEvent + exposeRequestEvent + closeRequestEvent, keyPressEvent = 0x0008, keyReleaseEvent = 0x0010, keyEvents = keyPressEvent + keyReleaseEvent, buttonPressEvent = 0x0020, buttonReleaseEvent = 0x0040, buttonClickEvent = 0x0080, buttonEvents = buttonPressEvent + buttonReleaseEvent + buttonClickEvent, pointerDragEvent = 0x0100, pointerMotionEvent = 0x0200, pointerEvents = pointerDragEvent + pointerMotionEvent, wheelScrollEvent = 0x0400, wheelEvents = wheelScrollEvent, mouseEvents = buttonEvents + pointerEvents + wheelEvents, valueChangedEvent = 0x0800, messageEvent = 0x1000, contentEvents = valueChangedEvent + messageEvent, pointerFocusInEvent = 0x2000, pointerFocusOutEvent = 0x4000, pointerFocusEvents = pointerFocusInEvent + pointerFocusOutEvent, all = 0xFFFF }; protected: BWidgets::Widget* eventWidget_; EventType eventType_; public: /** * @brief Creates an empty %Event. */ Event () : Event (nullptr, EventType::none) { } /** * @brief Creates an %Event. * @param widget Pointer to the widget which caused the %Event. * @param type EventType. */ Event (BWidgets::Widget* widget, const EventType type) : eventWidget_ (widget), eventType_ (type) { } virtual ~Event () { } /** * @brief Gets a pointer to the widget which caused the event. * @return Pointer to the widget (read / write). */ BWidgets::Widget* getWidget () { return eventWidget_; } /** * @brief Gets a pointer to the widget which caused the event. * @return Pointer to the widget (read only). */ const BWidgets::Widget* getWidget () const { return eventWidget_; } /** * @brief Gets the type of the event. * @return Event type */ EventType getEventType () const { return eventType_; } }; inline Event::EventType operator& (const Event::EventType lhs, const Event::EventType rhs) { return static_cast(static_cast(lhs) & static_cast(rhs)); } inline Event::EventType operator| (const Event::EventType lhs, const Event::EventType rhs) { return static_cast(static_cast(lhs) | static_cast(rhs)); } inline Event::EventType operator~ (const Event::EventType lhs) { return static_cast(~static_cast(lhs)); } inline Event::EventType operator^ (const Event::EventType lhs, const Event::EventType rhs) { return static_cast(static_cast(lhs) ^ static_cast(rhs)); } } #endif /* BEVENTS_EVENT_HPP_ */ src/BWidgets/BEvents/ExposeEvent.hpp000066400000000000000000000063561515163050000177070ustar00rootroot00000000000000/* ExposeEvent.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BEVENTS_EXPOSEEVENT_HPP_ #define BEVENTS_EXPOSEEVENT_HPP_ #include "WidgetEvent.hpp" #include "../BUtilities/Area.hpp" namespace BEvents { /** * @brief Event to request (re-)visualization of a widget. * * %ExposeEvent is emitted by a parent event widget (or window) if the visual * content of a child (request) widget is requested to be updated. An * %ExposeEvent additionally contains the coordinates (x, y, width and height) * of the output region (relative to the widgets origin) to be updated. */ class ExposeEvent : public WidgetEvent { protected: BUtilities::Area<> exposeArea_; public: /** * @brief Creates an empty %ExposeEvent. */ ExposeEvent () : ExposeEvent (nullptr, nullptr, EventType::none, 0, 0, 0, 0) { } /** * @brief Creates an %ExposeEvent. * @param eventWidget Widget on which the event will be applied. * @param requestWidget Widget which requests the event for another one. * @param type EventType. * @param x Expose area origin x coordinate relative to the widget * origin. * @param y Expose area origin y coordinate relative to the widget * origin. * @param width Area width. * @param heigth Area origin height. */ ExposeEvent (BWidgets::Widget* eventWidget, BWidgets::Widget* requestWidget, const EventType type, const double x, const double y, const double width, const double height) : ExposeEvent (eventWidget, requestWidget, type, BUtilities::Area<> (x, y, width, height)) { } /** * @brief Creates an %ExposeEvent. * @param eventWidget Widget on which the event will be applied. * @param requestWidget Widget which requests the event for another one. * @param type EventType. * @param area Expose area relative to the widget origin. */ ExposeEvent (BWidgets::Widget* eventWidget, BWidgets::Widget* requestWidget, const EventType type, const BUtilities::Area<>& area) : WidgetEvent (eventWidget, requestWidget, type), exposeArea_ (area) { } /** * @brief Redefines the area coordinates of the output region. * @param area Area coordinates relative to the widgets origin. */ virtual void setArea (const BUtilities::Area<>& area) { exposeArea_ = area; } /** * @brief Gets the area coordinates of the output region. * @return Area coordinates relative to the widgets origin. */ BUtilities::Area<> getArea () const { return exposeArea_; } }; } #endif /* BEVENTS_EXPOSEEVENT_HPP_ */ src/BWidgets/BEvents/KeyEvent.hpp000066400000000000000000000074251515163050000171720ustar00rootroot00000000000000/* KeyEvent.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BEVENTS_KEYEVENT_HPP_ #define BEVENTS_KEYEVENT_HPP_ #include #include #include "Event.hpp" #include "../BUtilities/Point.hpp" namespace BEvents { /** * @brief %KeyEvents are emitted by the system if a key is pressed or * released. */ class KeyEvent : public Event { protected: BUtilities::Point<> point_; uint32_t key_; public: /** * @brief Creates an empty %KeyEvent. */ KeyEvent () : KeyEvent (nullptr, EventType::none, 0, 0, 0) { } /** * @brief Creates a %KeyEvent. * @param widget Pointer to the widget which caused the %Event. * @param type EventType. * @param x Pointer x coordinate relative to the widget origin. * @param y Pointer y coordinate relative to the widget origin. * @param unicode Key as four byte unicode. */ KeyEvent (BWidgets::Widget* widget, const EventType type, const double x, const double y, const uint32_t unicode) : KeyEvent (widget, type, BUtilities::Point<> (x, y), unicode) { } /** * @brief Creates a %KeyEvent. * @param widget Pointer to the widget which caused the %Event. * @param type EventType. * @param position Pointer coordinates relative to the widget origin. * @param unicode Key as four byte unicode. */ KeyEvent (BWidgets::Widget* widget, const EventType type, const BUtilities::Point<>& position, const uint32_t unicode) : Event (widget, type), point_ (position), key_ (unicode) { } /** * @brief Redefines the pointer coordinates of the %KeyEvent. * @param coords Pointer coordinates relative to the widgets origin. */ virtual void setPosition (const BUtilities::Point<>& coords) { point_ = coords; } /** * @brief Gets the pointer coordinates of the %KeyEvent. * @return Pointer coordinates relative to the widgets origin. */ BUtilities::Point<> getPosition () const { return point_; } /** * @brief Gets the key that caused of the %KeyEvent. * @return Four byte unicode of the key. */ uint32_t getKey () const { return key_; } /** * @brief Gets the key that caused of the %KeyEvent as UTF8. * @return Key as UTF8 string. */ std::string getKeyUTF8 () const { // Invalide unicode if (key_ > 0x0010ffff) return ""; std::string s = ""; // 7 bit ASCII: utf-8 = unicode if (key_ < 0x80) s += char (key_); // 2/3/4(/5/6) byte utf-8 else { uint32_t steps = 2; for (uint32_t i = 3; i <= 6; ++i) { if (key_ >= (uint32_t (2) << (5 * (i - 1)))) steps = i; } char c = char ((0xFF & (0xFF << (8 - steps))) | (key_ >> (6 * (steps - 1)))); s += c; for (uint32_t i = steps - 1; i >= 1; --i) { char c = char (0x80 | ((key_ >> (6 * (i - 1))) & 0x3f)); s += c; } } return s; } }; } #endif /* BEVENTS_KEYEVENT_HPP_ */ src/BWidgets/BEvents/MessageEvent.hpp000066400000000000000000000047301515163050000200220ustar00rootroot00000000000000/* MessageEvent.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BEVENTS_MESSAGEEVENT_HPP_ #define BEVENTS_MESSAGEEVENT_HPP_ #include "../BUtilities/Any.hpp" #include #include "Event.hpp" namespace BEvents { /** * @brief Ubiquitous event type. */ class MessageEvent : public Event { protected: std::string messageName_; BUtilities::Any messageContent_; public: /** * @brief Creates an empty %MessageEvent. */ MessageEvent () : MessageEvent (nullptr, "", BUtilities::Any ()) { } /** * @brief Creates a %MessageEvent * @param widget Pointer to the widget which caused the %MessageEvent. * @param name Name or identifier (e.g., an URI) for the message. * @param content Message content. */ MessageEvent (BWidgets::Widget* widget, const std::string& name, const BUtilities::Any& content) : Event (widget, EventType::messageEvent), messageName_ (name), messageContent_ (content) { } /** * @brief Changes the name of the message. * @param name Name or identifier (e.g., an URI) for the message. */ virtual void setName (const std::string& name) { messageName_ = name; } /** * @brief Gets the name of the message. * @return Name or identifier (e.g., an URI) for the message. */ std::string getName () const { return messageName_; } /** * @brief Replaces the message content. * @param content Message content. */ virtual void setContent (const BUtilities::Any& content) { messageContent_ = content; } /** * @brief Gets the message content. * @return Copy of the message content. */ BUtilities::Any getContent () const { return messageContent_; } }; } #endif /* BEVENTS_MESSAGEEVENT_HPP_ */ src/BWidgets/BEvents/PointerEvent.hpp000066400000000000000000000235251515163050000200610ustar00rootroot00000000000000/* PointerEvent.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BEVENTS_POINTEREVENT_HPP_ #define BEVENTS_POINTEREVENT_HPP_ #include "Event.hpp" #include "../BDevices/MouseButton.hpp" #include "../BUtilities/Point.hpp" namespace BEvents { /** * @brief Pointer movement and button events. * A %PointerEvent is emitted by the system (via pugl and the main window) * if a button is pressed or released and/or the pointer is moved over a * widget. The %PointerEvent contains data about the position (relative to the * respective widget and the button pressed (or not). %PointerEvents will be * handled by the respective widget and can be redirected to external callback * functions. */ class PointerEvent : public Event { protected: BUtilities::Point<> point_, origin_, delta_, absolutePoint_, absoluteOrigin_; BDevices::MouseButton::ButtonType button_; public: /** * @brief Creates an empty %PointerEvent. */ PointerEvent () : PointerEvent (nullptr, EventType::none, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, BDevices::MouseButton::ButtonType::none) { } /** * @brief Creates a %PointerEvent. * * @param widget Pointer to the widget which caused the %Event. * @param type EventType. * @param x Present pointer x coordinate relative to the widget origin. * @param y Present pointer y coordinate relative to the widget origin. * @param xOrigin Original pointer x coordinate relative to the widget * origin. * @param yOrigin Original pointer y coordinate relative to the widget * origin. * @param deltaX Pointer movement x coordinate. * @param deltaY Pointer movement y coordinate. * @param button ButtonCode. */ PointerEvent (BWidgets::Widget* widget, const EventType type, const double x, const double y, const double xOrigin, const double yOrigin, const double deltaX, const double deltaY, const BDevices::MouseButton::ButtonType button) : PointerEvent (widget, type, BUtilities::Point<> (x, y), BUtilities::Point<> (xOrigin, yOrigin), BUtilities::Point<> (deltaX, deltaY), BUtilities::Point<>(), // TODO Initialize with widget position BUtilities::Point<>(), // TODO Initialize with widget position button) { } /** * @brief Creates a %PointerEvent. * @param widget Pointer to the widget which caused the %Event. * @param type EventType. * @param x Present pointer x coordinate relative to the widget origin. * @param y Present pointer y coordinate relative to the widget origin. * @param xOrigin Original pointer x coordinate relative to the widget * origin. * @param yOrigin Original pointer y coordinate relative to the widget * origin. * @param deltaX Pointer movement x coordinate. * @param deltaY Pointer movement y coordinate. * @param absoluteX Present pointer absolute x coordinate. * @param absoluteY Present pointer absolute y coordinate. * @param absoluteXOrigin Original pointer absolute x coordinate. * @param absoluteYOrigin Original pointer absolute y coordinate. * @param button ButtonCode. */ PointerEvent (BWidgets::Widget* widget, const EventType type, const double x, const double y, const double xOrigin, const double yOrigin, const double deltaX, const double deltaY, const double absoluteX, const double absoluteY, const double absoluteXOrigin, const double absoluteYOrigin, const BDevices::MouseButton::ButtonType button) : PointerEvent (widget, type, BUtilities::Point<> (x, y), BUtilities::Point<> (xOrigin, yOrigin), BUtilities::Point<> (deltaX, deltaY), BUtilities::Point<>(absoluteX, absoluteY), BUtilities::Point<>(absoluteXOrigin, absoluteYOrigin), button) { } /** * @brief Creates a %PointerEvent. * @param widget Pointer to the widget which caused the %Event. * @param type EventType. * @param point Present pointer coordinates relative to the widget * origin. * @param origin Original pointer coordinates relative to the widget * origin. * @param delta Pointer movement coordinates. * @param button ButtonCode. */ PointerEvent (BWidgets::Widget* widget, const EventType type, const BUtilities::Point<>& point, const BUtilities::Point<>& origin, const BUtilities::Point<>& delta, const BDevices::MouseButton::ButtonType button) : PointerEvent (widget, type, point, origin, delta, BUtilities::Point<>() /* TODO Initialize with widget position */, BUtilities::Point<>() /* TODO Initialize with widget position */, button) { } /** * @brief Creates a %PointerEvent. * * @param widget Pointer to the widget which caused the %Event. * @param type EventType. * @param point Present pointer coordinates relative to the widget * origin. * @param origin Original pointer coordinates relative to the widget * origin. * @param delta Pointer movement coordinates. * @param absolutePoint Present pointer absolute position. * @param absoluteOrigin Original pointer absolute position. * @param button ButtonCode. */ PointerEvent (BWidgets::Widget* widget, const EventType type, const BUtilities::Point<>& point, const BUtilities::Point<>& origin, const BUtilities::Point<>& delta, const BUtilities::Point<>& absolutePoint, const BUtilities::Point<>& absoluteOrigin, const BDevices::MouseButton::ButtonType button) : Event (widget, type), point_ (point), origin_ (origin), delta_ (delta), absolutePoint_(absolutePoint), absoluteOrigin_(absoluteOrigin), button_ (button) { } /** * @brief Redefines the pointer coordinates of the %PointerEvent. * @param point Pointer coordinate relative to the widgets origin. */ virtual void setPosition (const BUtilities::Point<>& coords) { point_ = coords; } /** * @brief Gets the pointer coordinates of the %PointerEvent. * @return Pointer coordinate relative to the widgets origin. */ BUtilities::Point<> getPosition () const { return point_; } /** * @brief Redefines the position where the button was initially pressed. * @param origin Original pointer coordinates relative to the widgets * origin. */ virtual void setOrigin (const BUtilities::Point<>& coords) { origin_ = coords; } /** * @brief Gets the position where the respective button was initially * pressed. * @return Position coordinates relative to the widgets origin. * * The returned value is the same as for getPoint() for * BUTTON_PRESS_EVENTs, 0.0 for POINTER_MOTION_EVENTs. */ BUtilities::Point<> getOrigin () const { return origin_; } /** * @brief Redefines the pointer movement. * @param delta Movement coordinates of the pointer. */ virtual void setDelta (const BUtilities::Point<>& coords) { delta_ = coords; } /** * @brief Gets the movement (relative to the last %PointerEvent). * @return Change in coordinates. */ BUtilities::Point<> getDelta () const { return delta_; } /** * @brief Redefines the absolute pointer coordinates of the * %PointerEvent. * @param point Absolute pointer coordinate. */ virtual void setAbsolutePosition (const BUtilities::Point<>& coords) { absolutePoint_ = coords; } /** * @brief Gets the absolute pointer coordinates of the %PointerEvent. * @return Absolute pointer coordinate relative. */ BUtilities::Point<> getAbsolutePosition () const { return absolutePoint_; } /** * @brief Redefines the absolute position where the button was initially * pressed. * @param origin Absolute original pointer coordinate. */ virtual void setAbsoluteOrigin (const BUtilities::Point<>& coords) { absoluteOrigin_ = coords; } /** * @brief Gets the absolute position where the respective button was * initially pressed. * @return Absolute position coordinate. */ BUtilities::Point<> getAbsoluteOrigin () const { return absoluteOrigin_; } /** * @brief Redefines the button pressed of the %PointerEvent. * @param button Button pressed. */ virtual void setButton (const BDevices::MouseButton::ButtonType button) { button_ = button; } /** * @brief Gets the button pressed of the %PointerEvent. * @return Button pressed */ BDevices::MouseButton::ButtonType getButton () const { return button_; } }; } #endif /* BEVENTS_POINTEREVENT_HPP_ */ src/BWidgets/BEvents/PointerFocusEvent.hpp000066400000000000000000000050341515163050000210540ustar00rootroot00000000000000/* PointerFocusEvent.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BEVENTS_POINTERFOCUSEVENT_HPP_ #define BEVENTS_POINTERFOCUSEVENT_HPP_ #include "../BUtilities/Point.hpp" #include "Event.hpp" namespace BEvents { /** * @brief %FocusEvents are emitted by widgets if the pointer rests for a * predefined time over the widget. */ class PointerFocusEvent : public Event { protected: BUtilities::Point<> point_; public: /** * @brief Creates an empty %PointerFocusEvent. */ PointerFocusEvent () : PointerFocusEvent (nullptr, EventType::none, 0, 0) { } /** * @brief Creates a %PointerFocusEvent. * @param widget Pointer to the widget which caused the %Event. * @param type EventType. * @param x Pointer x coordinate relative to the widget origin. * @param y Pointer y coordinate relative to the widget origin. */ PointerFocusEvent (BWidgets::Widget* widget, const EventType type, const double x, const double y) : PointerFocusEvent (widget, type, BUtilities::Point<> (x, y)) { } /** * @brief Creates a %PointerFocusEvent. * @param widget Pointer to the widget which caused the %Event. * @param type EventType. * @param point Coordinates relative to the widget origin. */ PointerFocusEvent (BWidgets::Widget* widget, const EventType type, const BUtilities::Point<>& point) : Event (widget, type), point_ (point) { } /** * @brief Redefines the pointers coordinate. * @param coords Pointer coordinate relative to the widgets origin. */ virtual void setPosition (const BUtilities::Point<>& coords) { point_ = coords; } /** * @brief Gets the pointer coordinate. * @return Pointer coordinate relative to the widgets origin. */ BUtilities::Point<> getPosition () const { return point_; } }; } #endif /* BEVENTS_POINTERFOCUSEVENT_HPP_ */ src/BWidgets/BEvents/README.md000066400000000000000000000055321515163050000162030ustar00rootroot00000000000000# BEvents Events are emitted by a widget (or by the system via the main window) to the main window event queue. The main window is the place for event handling in its `handleEvents()` method. ``` Event ├── WidgetEvent | ╰── ExposeEvent ├── KeyEvent ├── PointerEvent ├── WheelEvent ├── PointerFocusEvent ├── ValueChangedEvent | ╰── ValueChangeTypedEvent ╰── MessageEvent ``` ## Event Main class of events. Stores the event type and a pointer to the widget that caused the event. All other event classes are derived from this class. ## WidgetEvent Widget action request event. Widget events are emitted by an (event) widget if the widget is requested by an other (request) widget. This event class is typically used if opening or closing of a window or an request widget is requested. ## ExposeEvent Event to request (re-)visualization of a widget. ExposeEvent is emitted by a parent event widget (or window) if the visual content of a child (request) widget is requested to be updated. An ExposeEvent additionally contains the coordinates (x, y, width and height) of the output region (relative to the widgets origin) to be updated. ## KeyEvent KeyEvents are emitted by the system if a key is pressed or released. ## PointerEvent Pointer movement and button events. A PointerEvent is emitted by the system (via pugl and the main window) if a button is pressed or released and/or the pointer is moved over a widget. The PointerEvent contains data about the position (relative to the respective widget and the button pressed (or not). PointerEvents will be handled by the respective widget and can be redirected to external callback functions. ## WheelEvent Mouse wheel scrolling event. Wheel events are emitted by the system (via pugl and the main window) if a (mouse) wheel is turned. The WheelEvent contains data about the relative change of the wheel and about the pointer position (relative to the respective widget. WheelEvents will be handled by the respective widget and can be redirected to external callback functions. ## PointerFocusEvent FocusEvents are emitted by widgets if the pointer rests for a predefined time over the widget. ## ValueChangedEvent Event to communicate a changed value of Widgets supporting Valueable. A ValueChangedEvent is emitted by widgets if their respective `setValue()` method is called. ValueChangedEvents can be handled internally (e.g., by composite widgets) and can also be redirected to external callback functions. ValueChangedEvent shoud be specialized by ValueChangeTypedEvent\. ## ValueChangeTypedEvent\ Specialization of ValueChangedEvent. ValueChangeTypedEvent\ additionally contains a copy of the value from the time of emission of the event. ## MessageEvent Ubiquitous event type. Can be used to send messages of any type.src/BWidgets/BEvents/ValueChangeTypedEvent.hpp000066400000000000000000000051241515163050000216240ustar00rootroot00000000000000/* ValueChangeTypedEvent.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BEVENTS_VALUECHANGETYPEDEVENT_HPP_ #define BEVENTS_VALUECHANGETYPEDEVENT_HPP_ #include "Event.hpp" #include "ValueChangedEvent.hpp" namespace BEvents { /** * @brief Event to communicate a changed value of ValueWidgets. * @tparam Value type (default = float) * * Specialization of ValueChangedEvent. %ValueChangeTypedEvent additionally * contains a copy of the value from the time of emission of the event. */ template class ValueChangeTypedEvent : public ValueChangedEvent { protected: T value_; public: /** * @brief Creates an empty %ValueChangeTypedEvent. */ ValueChangeTypedEvent () : ValueChangeTypedEvent (nullptr, 0.0) { } /** * @brief Creates a %ValueChangeTypedEvent. * @param widget Pointer to the widget which caused the %Event. * @param value Value. */ ValueChangeTypedEvent (BWidgets::Widget* widget, const T value) : ValueChangedEvent (widget), value_ (value) { } /** * @brief Redefines the value exposed by the event by the value from * another event. * @param that Other event. * * The value is only redefined if @a that is comaptible to @a this . * Note: This method doesn't change the value within a widget! */ virtual void setValue (Event* that) override { if (dynamic_cast*>(that)) setValue (dynamic_cast*>(that)->value_); } /** * @brief Redefines the value exposed by the event. * @param val New value. * * Note: This method doesn't change the value within a widget! */ virtual void setValue (const T val) { value_ = val; } /** * Gets the value exposed by the event. * @return Value of the event. */ T getValue () const { return value_; } }; } #endif /* BEVENTS_VALUECHANGETYPEDEVENT_HPP_ */ src/BWidgets/BEvents/ValueChangedEvent.hpp000066400000000000000000000037251515163050000207670ustar00rootroot00000000000000/* ValueChangedEvent.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BEVENTS_VALUECHANGEDEVENT_HPP_ #define BEVENTS_VALUECHANGEDEVENT_HPP_ #include "Event.hpp" namespace BEvents { /** * @brief Event to communicate a changed value of ValueWidgets. * * A %ValueChangedEvent is emitted by widgets if their respective * @c setValue() method is called. * * %ValueChangedEvents can be handled internally (e.g., by composite widgets) * and can also be redirected to external callback functions. * * %ValueChangedEvent shoud be specialized by ValueChangeTypedEvent. */ class ValueChangedEvent : public Event { protected: public: /** * @brief Creates an empty %ValueChangedEvent. */ ValueChangedEvent () : ValueChangedEvent (nullptr) { } /** * @brief Creates a %ValueChangedEvent. * @param widget Pointer to the widget which caused the %Event. */ ValueChangedEvent (BWidgets::Widget* widget) : Event (widget, EventType::valueChangedEvent) { } /** * @brief Redefines the value exposed by the event by the value from * another event. * @param that Other event. * * Note: This method doesn't change the value within a widget! */ virtual void setValue (Event* that) { } }; } #endif /* BEVENTS_VALUECHANGEDEVENT_HPP_ */ src/BWidgets/BEvents/WheelEvent.hpp000066400000000000000000000067301515163050000175040ustar00rootroot00000000000000/* WheelEvent.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BEVENTS_WHEELEVENT_HPP_ #define BEVENTS_WHEELEVENT_HPP_ #include "Event.hpp" #include "../BUtilities/Point.hpp" namespace BEvents { /** * @brief Mouse wheel scrolling event. * * Wheel events are emitted by the system (via pugl and the main window) if * a (mouse) wheel is turned. * * The wheel event contains data about the relative change of the wheel and * about the pointer position (relative to the respective widget. * Wheel events will be handled by the respective widget and can be * redirected to external callback functions. */ class WheelEvent : public Event { protected: BUtilities::Point<> point_; BUtilities::Point<> delta_; public: /** * @brief Creates an empty %WheelEvent. */ WheelEvent () : WheelEvent (nullptr, EventType::none, 0, 0, 0, 0) { } /** * @brief Creates a %WheelEvent. * @param widget Pointer to the widget which caused the %Event. * @param type EventType. * @param x Pointer x coordinate relative to the widget origin. * @param y Pointer y coordinate relative to the widget origin. * @param deltaX Wheel x coordinate scroll. * @param deltaY Wheel y coordinate scroll. */ WheelEvent (BWidgets::Widget* widget, const EventType type, const double x, const double y, const double deltaX, const double deltaY) : WheelEvent (widget, type, BUtilities::Point<> (x, y), BUtilities::Point<> (deltaX, deltaY)) { } /** * @brief Creates a %WheelEvent. * @param widget Pointer to the widget which caused the %Event. * @param type EventType. * @param point Pointer coordinates relative to the widget origin. * @param delta Wheel scroll coordinates. */ WheelEvent (BWidgets::Widget* widget, const EventType type, const BUtilities::Point<>& point, const BUtilities::Point<> delta) : Event (widget, type), point_ (point), delta_ (delta) { } /** * @brief Redefines the pointers coordinate. * @param coords Pointer coordinate relative to the widgets origin. */ virtual void setPosition (const BUtilities::Point<>& coords) { point_ = coords; } /** * @brief Gets the pointers coordinate of the wheel event. * @return Pointer coordinate relative to the widgets origin. */ BUtilities::Point<> getPosition () const { return point_; } /** * @brief Redefines the wheels movement * @param delta Movement of the wheel. */ virtual void setDelta (const BUtilities::Point<>& coords) { delta_ = coords; } /** * @brief Gets the movement of the wheel. * @return Movement of the wheel. */ BUtilities::Point<> getDelta () const { return delta_; } }; } #endif /* BEVENTS_WHEELEVENT_HPP_ */ src/BWidgets/BEvents/WidgetEvent.hpp000066400000000000000000000043141515163050000176570ustar00rootroot00000000000000/* WidgetEvent.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BEVENTS_WIDGETEVENT_HPP_ #define BEVENTS_WIDGETEVENT_HPP_ #include "Event.hpp" namespace BEvents { /** * @brief Widget action request event. * * Widget events are emitted by an (event) widget if the widget is requested * by an other (request) widget. This event class is typically used if * opening or closing of a window or an request widget is requested. */ class WidgetEvent : public Event { protected: BWidgets::Widget* requestWidget_; public: /** * @brief Creates an empty %WidgetEvent. */ WidgetEvent () : WidgetEvent (nullptr, nullptr, EventType::none) { } /** * @brief Creates a %WidgetEvent. * @param eventWidget Widget on which the event will be applied. * @param requestWidget Widget which requests the event for another one. * @param type EventType. */ WidgetEvent (BWidgets::Widget* eventWidget, BWidgets::Widget* requestWidget, const EventType type) : Event (eventWidget, type), requestWidget_ (requestWidget) { } /** * @brief Access to the widget which request the event. * @return Pointer to the widget (read / write). */ BWidgets::Widget* getRequestWidget () { return requestWidget_; } /** * @brief Access to the widget which request the event. * @return Pointer to the widget (read only). */ const BWidgets::Widget* getRequestWidget () const { return requestWidget_; } }; } #endif /* BEVENTS_WIDGETEVENT_HPP_ */ src/BWidgets/BMusic/000077500000000000000000000000001515163050000145335ustar00rootroot00000000000000src/BWidgets/BMusic/README.md000066400000000000000000000012341515163050000160120ustar00rootroot00000000000000# BMusic The BMusic namespace contains classes and algorithms for audio processing. ``` () ╰── Sample ``` ## Sample A `Sample` consists of the sound file meta data (format, file name, extension, path), the audio binary data, and the sample meta data (region, loop). Sample uses the sndfile library to load sound files. Thus, all file types supported by sndfiles are supported by Sample too. In addition, Sample supports mp3 using minimp3. To use the minimp3 extension, the symbol MINIMP3_IMPLEMENTATION must be defined by ``` #define MINIMP3_IMPLEMENTATION ``` in exactly one source code file per binary to be created *before* the include of Sample.hpp.src/BWidgets/BMusic/Sample.hpp000066400000000000000000000173321515163050000164730ustar00rootroot00000000000000/* Sample.hpp * Pattern-controlled audio stream / sample re-sequencer LV2 plugin * * Copyright (C) 2020 - 2023 by Sven Jähnichen * * 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, 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. */ #ifndef BMUSIC_SAMPLE_HPP_ #define BMUSIC_SAMPLE_HPP_ #include "sndfile.h" #include #include #include #include #include #ifndef SF_FORMAT_MP3 #ifndef MINIMP3_FLOAT_OUTPUT #define MINIMP3_FLOAT_OUTPUT #endif #include "minimp3/minimp3_ex.h" #endif /* SF_FORMAT_MP3 */ namespace BMusic { /** * @brief Class to load, handle, and process sound (sample) data from sound * files. * * A %Sample consists of the sound file meta data (format, file name, extension, * path), the audio binary data, and the sample meta data (region, loop). * %Sample uses the sndfile library to load sound files. Thus, all file types * supported by sndfiles are supported by %Sample too. In addition, %Sample * supports mp3 using minimp3. * * Note: To support mp3, you must define MINIMP3_IMPLEMENTATION excactly ONCE * in your project, prior the include of %Sample.hpp. */ struct Sample { SF_INFO info; // Info about sample from sndfile float* data; // %Sample data in float char* path; // Path of file bool loop; // Loop playing mode sf_count_t start; // Start frame sf_count_t end; // End frame /** * @brief Constructs a new empty Sample object. */ Sample (); /** * @brief Constructs a new %Sample object from a filename / path. * @param samplepath Path and filename to the sample. */ Sample (const char* samplepath); /** * @brief Copy constructor. Constructs a new %Sample object from * another one. * @param that Other %Sample object. */ Sample (const Sample& that); ~Sample(); /** * @brief Copy assignment operator. Copies the %Sample from another * object. * @param that Other object. * @return Copied %Sample. */ Sample& operator= (const Sample& that); /** * @brief Gets a single sample value. * @param frame Frame number. * @param channel Channel number. * @param rate Frame rate. * @return float Sample value. */ float get (const sf_count_t frame, const int channel, const int rate); }; inline Sample::Sample () : info {0, 0, 0, 0, 0, 0}, data (nullptr), path (nullptr) , loop (false), start (0), end (0) { } inline Sample::Sample (const char* samplepath) : info {0, 0, 0, 0, 0, 0}, data (nullptr), path (nullptr), loop (false), start (0), end (0) { if (!samplepath) return; int len = strlen (samplepath); path = (char*) malloc (len + 1); if (!path) throw std::bad_alloc(); memcpy (path, samplepath, len + 1); if (!len) return; // Extract file name char* name = strrchr (path, '/') + 1; if (!name) name = path; // Extract file extension char ext[16] = {0}; char* extptr = strrchr (name, '.'); if (!extptr) extptr = path + strlen (path); const int extsz = strlen (extptr) + 1; if ((extsz > 1) && (extsz < 16)) memcpy (ext, extptr, extsz); for (char* s = ext; *s; ++s) *s = tolower ((unsigned char)*s); // Check for known non-sndfiles #ifndef SF_FORMAT_MP3 if (!strcmp (ext, ".mp3")) { mp3dec_t mp3dec; mp3dec_file_info_t mp3info; if (mp3dec_load (&mp3dec, path, &mp3info, NULL, NULL)) throw std::invalid_argument ("Can't open " + std::string (name) + "."); info.samplerate = mp3info.hz; info.channels = mp3info.channels; info.frames = mp3info.samples / mp3info.channels; data = (float*) malloc (sizeof(float) * info.frames * info.channels); if (!data) throw std::bad_alloc(); memcpy (data, mp3info.buffer, sizeof(float) * info.frames * info.channels); } else #endif /* !SF_FORMAT_MP3 */ { SNDFILE* sndfile = sf_open (samplepath, SFM_READ, &info); //if (!sndfile) throw std::invalid_argument ("Can't open " + std::string (name) + "."); if (sf_error (sndfile) != SF_ERR_NO_ERROR) throw std::invalid_argument (std::string (sf_strerror (sndfile))); if (!info.frames) throw std::invalid_argument ("Empty sample file " + std::string (name) + "."); // Read & render data data = (float*) malloc (sizeof(float) * info.frames * info.channels); if (!data) { sf_close (sndfile); throw std::bad_alloc(); } sf_seek (sndfile, 0, SEEK_SET); sf_read_float (sndfile, data, info.frames * info.channels); sf_close (sndfile); } end = info.frames; } inline Sample::Sample (const Sample& that) : info (that.info), data (nullptr), path (nullptr), loop (that.loop), start (that.start), end (that.end) { if (that.data) { data = (float*) malloc (sizeof(float) * info.frames * info.channels); if (!data) throw std::bad_alloc(); memcpy (data, that.data, sizeof(float) * info.frames * info.channels); } if (that.path) { int len = strlen (that.path); path = (char*) malloc (len + 1); if (!path) throw std::bad_alloc(); memcpy (path, that.path, len + 1); } } inline Sample::~Sample() { if (data) free (data); if (path) free (path); } inline Sample& Sample::operator= (const Sample& that) { if (data) free (data); if (path) free (path); info = that.info; data = nullptr; path = nullptr; loop = that.loop; start = that.start; end = that.end; if (that.data) { data = (float*) malloc (sizeof(float) * info.frames * info.channels); if (!data) throw std::bad_alloc(); memcpy (data, that.data, sizeof(float) * info.frames * info.channels); } if (that.path) { int len = strlen (that.path); path = (char*) malloc (len + 1); if (!path) throw std::bad_alloc(); memcpy (path, that.path, len + 1); } return *this; } inline float Sample::get (const sf_count_t frame, const int channel, const int rate) { if (!data) return 0.0f; // Direct access if same frame rate if (info.samplerate == rate) { if (frame >= info.frames) return 0.0f; else return data[frame * info.channels + channel]; } // Linear rendering if frame rates differ sf_count_t f = (frame * info.samplerate) / rate; const double frac = fmod (static_cast (f), 1.0); sf_count_t f1 = f; if (f1 >= info.frames) return 0.0f; if (frac == 0.0) return data[f1 * info.channels + channel]; float data1 = data[f1 * info.channels + channel]; float data2 = (f1 + 1 < info.frames ? data[(f1 + 1) * info.channels + channel] : data1); return (1.0 - frac) * data1 + frac * data2; } } #endif /* BMUSIC_SAMPLE_HPP_ */ src/BWidgets/BMusic/minimp3/000077500000000000000000000000001515163050000161075ustar00rootroot00000000000000src/BWidgets/BMusic/minimp3/minimp3.h000066400000000000000000002247051515163050000176460ustar00rootroot00000000000000#ifndef MINIMP3_H #define MINIMP3_H /* https://github.com/lieff/minimp3 To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. This software is distributed without any warranty. See . */ #include #define MINIMP3_MAX_SAMPLES_PER_FRAME (1152*2) typedef struct { int frame_bytes, frame_offset, channels, hz, layer, bitrate_kbps; } mp3dec_frame_info_t; typedef struct { float mdct_overlap[2][9*32], qmf_state[15*2*32]; int reserv, free_format_bytes; unsigned char header[4], reserv_buf[511]; } mp3dec_t; #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ void mp3dec_init(mp3dec_t *dec); #ifndef MINIMP3_FLOAT_OUTPUT typedef int16_t mp3d_sample_t; #else /* MINIMP3_FLOAT_OUTPUT */ typedef float mp3d_sample_t; void mp3dec_f32_to_s16(const float *in, int16_t *out, int num_samples); #endif /* MINIMP3_FLOAT_OUTPUT */ int mp3dec_decode_frame(mp3dec_t *dec, const uint8_t *mp3, int mp3_bytes, mp3d_sample_t *pcm, mp3dec_frame_info_t *info); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* MINIMP3_H */ #if defined(MINIMP3_IMPLEMENTATION) && !defined(_MINIMP3_IMPLEMENTATION_GUARD) #define _MINIMP3_IMPLEMENTATION_GUARD #include #include #define MAX_FREE_FORMAT_FRAME_SIZE 2304 /* more than ISO spec's */ #ifndef MAX_FRAME_SYNC_MATCHES #define MAX_FRAME_SYNC_MATCHES 10 #endif /* MAX_FRAME_SYNC_MATCHES */ #define MAX_L3_FRAME_PAYLOAD_BYTES MAX_FREE_FORMAT_FRAME_SIZE /* MUST be >= 320000/8/32000*1152 = 1440 */ #define MAX_BITRESERVOIR_BYTES 511 #define SHORT_BLOCK_TYPE 2 #define STOP_BLOCK_TYPE 3 #define MODE_MONO 3 #define MODE_JOINT_STEREO 1 #define HDR_SIZE 4 #define HDR_IS_MONO(h) (((h[3]) & 0xC0) == 0xC0) #define HDR_IS_MS_STEREO(h) (((h[3]) & 0xE0) == 0x60) #define HDR_IS_FREE_FORMAT(h) (((h[2]) & 0xF0) == 0) #define HDR_IS_CRC(h) (!((h[1]) & 1)) #define HDR_TEST_PADDING(h) ((h[2]) & 0x2) #define HDR_TEST_MPEG1(h) ((h[1]) & 0x8) #define HDR_TEST_NOT_MPEG25(h) ((h[1]) & 0x10) #define HDR_TEST_I_STEREO(h) ((h[3]) & 0x10) #define HDR_TEST_MS_STEREO(h) ((h[3]) & 0x20) #define HDR_GET_STEREO_MODE(h) (((h[3]) >> 6) & 3) #define HDR_GET_STEREO_MODE_EXT(h) (((h[3]) >> 4) & 3) #define HDR_GET_LAYER(h) (((h[1]) >> 1) & 3) #define HDR_GET_BITRATE(h) ((h[2]) >> 4) #define HDR_GET_SAMPLE_RATE(h) (((h[2]) >> 2) & 3) #define HDR_GET_MY_SAMPLE_RATE(h) (HDR_GET_SAMPLE_RATE(h) + (((h[1] >> 3) & 1) + ((h[1] >> 4) & 1))*3) #define HDR_IS_FRAME_576(h) ((h[1] & 14) == 2) #define HDR_IS_LAYER_1(h) ((h[1] & 6) == 6) #define BITS_DEQUANTIZER_OUT -1 #define MAX_SCF (255 + BITS_DEQUANTIZER_OUT*4 - 210) #define MAX_SCFI ((MAX_SCF + 3) & ~3) #define MINIMP3_MIN(a, b) ((a) > (b) ? (b) : (a)) #define MINIMP3_MAX(a, b) ((a) < (b) ? (b) : (a)) #if !defined(MINIMP3_NO_SIMD) #if !defined(MINIMP3_ONLY_SIMD) && (defined(_M_X64) || defined(_M_ARM64) || defined(__x86_64__) || defined(__aarch64__)) /* x64 always have SSE2, arm64 always have neon, no need for generic code */ #define MINIMP3_ONLY_SIMD #endif /* SIMD checks... */ #if (defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64))) || ((defined(__i386__) || defined(__x86_64__)) && defined(__SSE2__)) #if defined(_MSC_VER) #include #endif /* defined(_MSC_VER) */ #include #define HAVE_SSE 1 #define HAVE_SIMD 1 #define VSTORE _mm_storeu_ps #define VLD _mm_loadu_ps #define VSET _mm_set1_ps #define VADD _mm_add_ps #define VSUB _mm_sub_ps #define VMUL _mm_mul_ps #define VMAC(a, x, y) _mm_add_ps(a, _mm_mul_ps(x, y)) #define VMSB(a, x, y) _mm_sub_ps(a, _mm_mul_ps(x, y)) #define VMUL_S(x, s) _mm_mul_ps(x, _mm_set1_ps(s)) #define VREV(x) _mm_shuffle_ps(x, x, _MM_SHUFFLE(0, 1, 2, 3)) typedef __m128 f4; #if defined(_MSC_VER) || defined(MINIMP3_ONLY_SIMD) #define minimp3_cpuid __cpuid #else /* defined(_MSC_VER) || defined(MINIMP3_ONLY_SIMD) */ static __inline__ __attribute__((always_inline)) void minimp3_cpuid(int CPUInfo[], const int InfoType) { #if defined(__PIC__) __asm__ __volatile__( #if defined(__x86_64__) "push %%rbx\n" "cpuid\n" "xchgl %%ebx, %1\n" "pop %%rbx\n" #else /* defined(__x86_64__) */ "xchgl %%ebx, %1\n" "cpuid\n" "xchgl %%ebx, %1\n" #endif /* defined(__x86_64__) */ : "=a" (CPUInfo[0]), "=r" (CPUInfo[1]), "=c" (CPUInfo[2]), "=d" (CPUInfo[3]) : "a" (InfoType)); #else /* defined(__PIC__) */ __asm__ __volatile__( "cpuid" : "=a" (CPUInfo[0]), "=b" (CPUInfo[1]), "=c" (CPUInfo[2]), "=d" (CPUInfo[3]) : "a" (InfoType)); #endif /* defined(__PIC__)*/ } #endif /* defined(_MSC_VER) || defined(MINIMP3_ONLY_SIMD) */ static int have_simd() { #ifdef MINIMP3_ONLY_SIMD return 1; #else /* MINIMP3_ONLY_SIMD */ static int g_have_simd; int CPUInfo[4]; #ifdef MINIMP3_TEST static int g_counter; if (g_counter++ > 100) return 0; #endif /* MINIMP3_TEST */ if (g_have_simd) goto end; minimp3_cpuid(CPUInfo, 0); g_have_simd = 1; if (CPUInfo[0] > 0) { minimp3_cpuid(CPUInfo, 1); g_have_simd = (CPUInfo[3] & (1 << 26)) + 1; /* SSE2 */ } end: return g_have_simd - 1; #endif /* MINIMP3_ONLY_SIMD */ } #elif defined(__ARM_NEON) || defined(__aarch64__) #include #define HAVE_SSE 0 #define HAVE_SIMD 1 #define VSTORE vst1q_f32 #define VLD vld1q_f32 #define VSET vmovq_n_f32 #define VADD vaddq_f32 #define VSUB vsubq_f32 #define VMUL vmulq_f32 #define VMAC(a, x, y) vmlaq_f32(a, x, y) #define VMSB(a, x, y) vmlsq_f32(a, x, y) #define VMUL_S(x, s) vmulq_f32(x, vmovq_n_f32(s)) #define VREV(x) vcombine_f32(vget_high_f32(vrev64q_f32(x)), vget_low_f32(vrev64q_f32(x))) typedef float32x4_t f4; static int have_simd() { /* TODO: detect neon for !MINIMP3_ONLY_SIMD */ return 1; } #else /* SIMD checks... */ #define HAVE_SSE 0 #define HAVE_SIMD 0 #ifdef MINIMP3_ONLY_SIMD #error MINIMP3_ONLY_SIMD used, but SSE/NEON not enabled #endif /* MINIMP3_ONLY_SIMD */ #endif /* SIMD checks... */ #else /* !defined(MINIMP3_NO_SIMD) */ #define HAVE_SIMD 0 #endif /* !defined(MINIMP3_NO_SIMD) */ #if defined(__ARM_ARCH) && (__ARM_ARCH >= 6) && !defined(__aarch64__) #define HAVE_ARMV6 1 static __inline__ __attribute__((always_inline)) int32_t minimp3_clip_int16_arm(int32_t a) { int32_t x = 0; __asm__ ("ssat %0, #16, %1" : "=r"(x) : "r"(a)); return x; } #endif typedef struct { const uint8_t *buf; int pos, limit; } bs_t; typedef struct { float scf[3*64]; uint8_t total_bands, stereo_bands, bitalloc[64], scfcod[64]; } L12_scale_info; typedef struct { uint8_t tab_offset, code_tab_width, band_count; } L12_subband_alloc_t; typedef struct { const uint8_t *sfbtab; uint16_t part_23_length, big_values, scalefac_compress; uint8_t global_gain, block_type, mixed_block_flag, n_long_sfb, n_short_sfb; uint8_t table_select[3], region_count[3], subblock_gain[3]; uint8_t preflag, scalefac_scale, count1_table, scfsi; } L3_gr_info_t; typedef struct { bs_t bs; uint8_t maindata[MAX_BITRESERVOIR_BYTES + MAX_L3_FRAME_PAYLOAD_BYTES]; L3_gr_info_t gr_info[4]; float grbuf[2][576], scf[40], syn[18 + 15][2*32]; uint8_t ist_pos[2][39]; } mp3dec_scratch_t; static void bs_init(bs_t *bs, const uint8_t *data, int bytes) { bs->buf = data; bs->pos = 0; bs->limit = bytes*8; } static uint32_t get_bits(bs_t *bs, int n) { uint32_t next, cache = 0, s = bs->pos & 7; int shl = n + s; const uint8_t *p = bs->buf + (bs->pos >> 3); if ((bs->pos += n) > bs->limit) return 0; next = *p++ & (255 >> s); while ((shl -= 8) > 0) { cache |= next << shl; next = *p++; } return cache | (next >> -shl); } static int hdr_valid(const uint8_t *h) { return h[0] == 0xff && ((h[1] & 0xF0) == 0xf0 || (h[1] & 0xFE) == 0xe2) && (HDR_GET_LAYER(h) != 0) && (HDR_GET_BITRATE(h) != 15) && (HDR_GET_SAMPLE_RATE(h) != 3); } static int hdr_compare(const uint8_t *h1, const uint8_t *h2) { return hdr_valid(h2) && ((h1[1] ^ h2[1]) & 0xFE) == 0 && ((h1[2] ^ h2[2]) & 0x0C) == 0 && !(HDR_IS_FREE_FORMAT(h1) ^ HDR_IS_FREE_FORMAT(h2)); } static unsigned hdr_bitrate_kbps(const uint8_t *h) { static const uint8_t halfrate[2][3][15] = { { { 0,4,8,12,16,20,24,28,32,40,48,56,64,72,80 }, { 0,4,8,12,16,20,24,28,32,40,48,56,64,72,80 }, { 0,16,24,28,32,40,48,56,64,72,80,88,96,112,128 } }, { { 0,16,20,24,28,32,40,48,56,64,80,96,112,128,160 }, { 0,16,24,28,32,40,48,56,64,80,96,112,128,160,192 }, { 0,16,32,48,64,80,96,112,128,144,160,176,192,208,224 } }, }; return 2*halfrate[!!HDR_TEST_MPEG1(h)][HDR_GET_LAYER(h) - 1][HDR_GET_BITRATE(h)]; } static unsigned hdr_sample_rate_hz(const uint8_t *h) { static const unsigned g_hz[3] = { 44100, 48000, 32000 }; return g_hz[HDR_GET_SAMPLE_RATE(h)] >> (int)!HDR_TEST_MPEG1(h) >> (int)!HDR_TEST_NOT_MPEG25(h); } static unsigned hdr_frame_samples(const uint8_t *h) { return HDR_IS_LAYER_1(h) ? 384 : (1152 >> (int)HDR_IS_FRAME_576(h)); } static int hdr_frame_bytes(const uint8_t *h, int free_format_size) { int frame_bytes = hdr_frame_samples(h)*hdr_bitrate_kbps(h)*125/hdr_sample_rate_hz(h); if (HDR_IS_LAYER_1(h)) { frame_bytes &= ~3; /* slot align */ } return frame_bytes ? frame_bytes : free_format_size; } static int hdr_padding(const uint8_t *h) { return HDR_TEST_PADDING(h) ? (HDR_IS_LAYER_1(h) ? 4 : 1) : 0; } #ifndef MINIMP3_ONLY_MP3 static const L12_subband_alloc_t *L12_subband_alloc_table(const uint8_t *hdr, L12_scale_info *sci) { const L12_subband_alloc_t *alloc; int mode = HDR_GET_STEREO_MODE(hdr); int nbands, stereo_bands = (mode == MODE_MONO) ? 0 : (mode == MODE_JOINT_STEREO) ? (HDR_GET_STEREO_MODE_EXT(hdr) << 2) + 4 : 32; if (HDR_IS_LAYER_1(hdr)) { static const L12_subband_alloc_t g_alloc_L1[] = { { 76, 4, 32 } }; alloc = g_alloc_L1; nbands = 32; } else if (!HDR_TEST_MPEG1(hdr)) { static const L12_subband_alloc_t g_alloc_L2M2[] = { { 60, 4, 4 }, { 44, 3, 7 }, { 44, 2, 19 } }; alloc = g_alloc_L2M2; nbands = 30; } else { static const L12_subband_alloc_t g_alloc_L2M1[] = { { 0, 4, 3 }, { 16, 4, 8 }, { 32, 3, 12 }, { 40, 2, 7 } }; int sample_rate_idx = HDR_GET_SAMPLE_RATE(hdr); unsigned kbps = hdr_bitrate_kbps(hdr) >> (int)(mode != MODE_MONO); if (!kbps) /* free-format */ { kbps = 192; } alloc = g_alloc_L2M1; nbands = 27; if (kbps < 56) { static const L12_subband_alloc_t g_alloc_L2M1_lowrate[] = { { 44, 4, 2 }, { 44, 3, 10 } }; alloc = g_alloc_L2M1_lowrate; nbands = sample_rate_idx == 2 ? 12 : 8; } else if (kbps >= 96 && sample_rate_idx != 1) { nbands = 30; } } sci->total_bands = (uint8_t)nbands; sci->stereo_bands = (uint8_t)MINIMP3_MIN(stereo_bands, nbands); return alloc; } static void L12_read_scalefactors(bs_t *bs, uint8_t *pba, uint8_t *scfcod, int bands, float *scf) { static const float g_deq_L12[18*3] = { #define DQ(x) 9.53674316e-07f/x, 7.56931807e-07f/x, 6.00777173e-07f/x DQ(3),DQ(7),DQ(15),DQ(31),DQ(63),DQ(127),DQ(255),DQ(511),DQ(1023),DQ(2047),DQ(4095),DQ(8191),DQ(16383),DQ(32767),DQ(65535),DQ(3),DQ(5),DQ(9) }; int i, m; for (i = 0; i < bands; i++) { float s = 0; int ba = *pba++; int mask = ba ? 4 + ((19 >> scfcod[i]) & 3) : 0; for (m = 4; m; m >>= 1) { if (mask & m) { int b = get_bits(bs, 6); s = g_deq_L12[ba*3 - 6 + b % 3]*(1 << 21 >> b/3); } *scf++ = s; } } } static void L12_read_scale_info(const uint8_t *hdr, bs_t *bs, L12_scale_info *sci) { static const uint8_t g_bitalloc_code_tab[] = { 0,17, 3, 4, 5,6,7, 8,9,10,11,12,13,14,15,16, 0,17,18, 3,19,4,5, 6,7, 8, 9,10,11,12,13,16, 0,17,18, 3,19,4,5,16, 0,17,18,16, 0,17,18,19, 4,5,6, 7,8, 9,10,11,12,13,14,15, 0,17,18, 3,19,4,5, 6,7, 8, 9,10,11,12,13,14, 0, 2, 3, 4, 5,6,7, 8,9,10,11,12,13,14,15,16 }; const L12_subband_alloc_t *subband_alloc = L12_subband_alloc_table(hdr, sci); int i, k = 0, ba_bits = 0; const uint8_t *ba_code_tab = g_bitalloc_code_tab; for (i = 0; i < sci->total_bands; i++) { uint8_t ba; if (i == k) { k += subband_alloc->band_count; ba_bits = subband_alloc->code_tab_width; ba_code_tab = g_bitalloc_code_tab + subband_alloc->tab_offset; subband_alloc++; } ba = ba_code_tab[get_bits(bs, ba_bits)]; sci->bitalloc[2*i] = ba; if (i < sci->stereo_bands) { ba = ba_code_tab[get_bits(bs, ba_bits)]; } sci->bitalloc[2*i + 1] = sci->stereo_bands ? ba : 0; } for (i = 0; i < 2*sci->total_bands; i++) { sci->scfcod[i] = sci->bitalloc[i] ? HDR_IS_LAYER_1(hdr) ? 2 : get_bits(bs, 2) : 6; } L12_read_scalefactors(bs, sci->bitalloc, sci->scfcod, sci->total_bands*2, sci->scf); for (i = sci->stereo_bands; i < sci->total_bands; i++) { sci->bitalloc[2*i + 1] = 0; } } static int L12_dequantize_granule(float *grbuf, bs_t *bs, L12_scale_info *sci, int group_size) { int i, j, k, choff = 576; for (j = 0; j < 4; j++) { float *dst = grbuf + group_size*j; for (i = 0; i < 2*sci->total_bands; i++) { int ba = sci->bitalloc[i]; if (ba != 0) { if (ba < 17) { int half = (1 << (ba - 1)) - 1; for (k = 0; k < group_size; k++) { dst[k] = (float)((int)get_bits(bs, ba) - half); } } else { unsigned mod = (2 << (ba - 17)) + 1; /* 3, 5, 9 */ unsigned code = get_bits(bs, mod + 2 - (mod >> 3)); /* 5, 7, 10 */ for (k = 0; k < group_size; k++, code /= mod) { dst[k] = (float)((int)(code % mod - mod/2)); } } } dst += choff; choff = 18 - choff; } } return group_size*4; } static void L12_apply_scf_384(L12_scale_info *sci, const float *scf, float *dst) { int i, k; memcpy(dst + 576 + sci->stereo_bands*18, dst + sci->stereo_bands*18, (sci->total_bands - sci->stereo_bands)*18*sizeof(float)); for (i = 0; i < sci->total_bands; i++, dst += 18, scf += 6) { for (k = 0; k < 12; k++) { dst[k + 0] *= scf[0]; dst[k + 576] *= scf[3]; } } } #endif /* MINIMP3_ONLY_MP3 */ static int L3_read_side_info(bs_t *bs, L3_gr_info_t *gr, const uint8_t *hdr) { static const uint8_t g_scf_long[8][23] = { { 6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54,0 }, { 12,12,12,12,12,12,16,20,24,28,32,40,48,56,64,76,90,2,2,2,2,2,0 }, { 6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54,0 }, { 6,6,6,6,6,6,8,10,12,14,16,18,22,26,32,38,46,54,62,70,76,36,0 }, { 6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54,0 }, { 4,4,4,4,4,4,6,6,8,8,10,12,16,20,24,28,34,42,50,54,76,158,0 }, { 4,4,4,4,4,4,6,6,6,8,10,12,16,18,22,28,34,40,46,54,54,192,0 }, { 4,4,4,4,4,4,6,6,8,10,12,16,20,24,30,38,46,56,68,84,102,26,0 } }; static const uint8_t g_scf_short[8][40] = { { 4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,30,30,30,40,40,40,18,18,18,0 }, { 8,8,8,8,8,8,8,8,8,12,12,12,16,16,16,20,20,20,24,24,24,28,28,28,36,36,36,2,2,2,2,2,2,2,2,2,26,26,26,0 }, { 4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,8,8,8,10,10,10,14,14,14,18,18,18,26,26,26,32,32,32,42,42,42,18,18,18,0 }, { 4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,32,32,32,44,44,44,12,12,12,0 }, { 4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,30,30,30,40,40,40,18,18,18,0 }, { 4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,22,22,22,30,30,30,56,56,56,0 }, { 4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,10,10,10,12,12,12,14,14,14,16,16,16,20,20,20,26,26,26,66,66,66,0 }, { 4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,8,8,8,12,12,12,16,16,16,20,20,20,26,26,26,34,34,34,42,42,42,12,12,12,0 } }; static const uint8_t g_scf_mixed[8][40] = { { 6,6,6,6,6,6,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,30,30,30,40,40,40,18,18,18,0 }, { 12,12,12,4,4,4,8,8,8,12,12,12,16,16,16,20,20,20,24,24,24,28,28,28,36,36,36,2,2,2,2,2,2,2,2,2,26,26,26,0 }, { 6,6,6,6,6,6,6,6,6,6,6,6,8,8,8,10,10,10,14,14,14,18,18,18,26,26,26,32,32,32,42,42,42,18,18,18,0 }, { 6,6,6,6,6,6,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,32,32,32,44,44,44,12,12,12,0 }, { 6,6,6,6,6,6,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,24,24,24,30,30,30,40,40,40,18,18,18,0 }, { 4,4,4,4,4,4,6,6,4,4,4,6,6,6,8,8,8,10,10,10,12,12,12,14,14,14,18,18,18,22,22,22,30,30,30,56,56,56,0 }, { 4,4,4,4,4,4,6,6,4,4,4,6,6,6,6,6,6,10,10,10,12,12,12,14,14,14,16,16,16,20,20,20,26,26,26,66,66,66,0 }, { 4,4,4,4,4,4,6,6,4,4,4,6,6,6,8,8,8,12,12,12,16,16,16,20,20,20,26,26,26,34,34,34,42,42,42,12,12,12,0 } }; unsigned tables, scfsi = 0; int main_data_begin, part_23_sum = 0; int sr_idx = HDR_GET_MY_SAMPLE_RATE(hdr); sr_idx -= (sr_idx != 0); int gr_count = HDR_IS_MONO(hdr) ? 1 : 2; if (HDR_TEST_MPEG1(hdr)) { gr_count *= 2; main_data_begin = get_bits(bs, 9); scfsi = get_bits(bs, 7 + gr_count); } else { main_data_begin = get_bits(bs, 8 + gr_count) >> gr_count; } do { if (HDR_IS_MONO(hdr)) { scfsi <<= 4; } gr->part_23_length = (uint16_t)get_bits(bs, 12); part_23_sum += gr->part_23_length; gr->big_values = (uint16_t)get_bits(bs, 9); if (gr->big_values > 288) { return -1; } gr->global_gain = (uint8_t)get_bits(bs, 8); gr->scalefac_compress = (uint16_t)get_bits(bs, HDR_TEST_MPEG1(hdr) ? 4 : 9); gr->sfbtab = g_scf_long[sr_idx]; gr->n_long_sfb = 22; gr->n_short_sfb = 0; if (get_bits(bs, 1)) { gr->block_type = (uint8_t)get_bits(bs, 2); if (!gr->block_type) { return -1; } gr->mixed_block_flag = (uint8_t)get_bits(bs, 1); gr->region_count[0] = 7; gr->region_count[1] = 255; if (gr->block_type == SHORT_BLOCK_TYPE) { scfsi &= 0x0F0F; if (!gr->mixed_block_flag) { gr->region_count[0] = 8; gr->sfbtab = g_scf_short[sr_idx]; gr->n_long_sfb = 0; gr->n_short_sfb = 39; } else { gr->sfbtab = g_scf_mixed[sr_idx]; gr->n_long_sfb = HDR_TEST_MPEG1(hdr) ? 8 : 6; gr->n_short_sfb = 30; } } tables = get_bits(bs, 10); tables <<= 5; gr->subblock_gain[0] = (uint8_t)get_bits(bs, 3); gr->subblock_gain[1] = (uint8_t)get_bits(bs, 3); gr->subblock_gain[2] = (uint8_t)get_bits(bs, 3); } else { gr->block_type = 0; gr->mixed_block_flag = 0; tables = get_bits(bs, 15); gr->region_count[0] = (uint8_t)get_bits(bs, 4); gr->region_count[1] = (uint8_t)get_bits(bs, 3); gr->region_count[2] = 255; } gr->table_select[0] = (uint8_t)(tables >> 10); gr->table_select[1] = (uint8_t)((tables >> 5) & 31); gr->table_select[2] = (uint8_t)((tables) & 31); gr->preflag = HDR_TEST_MPEG1(hdr) ? get_bits(bs, 1) : (gr->scalefac_compress >= 500); gr->scalefac_scale = (uint8_t)get_bits(bs, 1); gr->count1_table = (uint8_t)get_bits(bs, 1); gr->scfsi = (uint8_t)((scfsi >> 12) & 15); scfsi <<= 4; gr++; } while(--gr_count); if (part_23_sum + bs->pos > bs->limit + main_data_begin*8) { return -1; } return main_data_begin; } static void L3_read_scalefactors(uint8_t *scf, uint8_t *ist_pos, const uint8_t *scf_size, const uint8_t *scf_count, bs_t *bitbuf, int scfsi) { int i, k; for (i = 0; i < 4 && scf_count[i]; i++, scfsi *= 2) { int cnt = scf_count[i]; if (scfsi & 8) { memcpy(scf, ist_pos, cnt); } else { int bits = scf_size[i]; if (!bits) { memset(scf, 0, cnt); memset(ist_pos, 0, cnt); } else { int max_scf = (scfsi < 0) ? (1 << bits) - 1 : -1; for (k = 0; k < cnt; k++) { int s = get_bits(bitbuf, bits); ist_pos[k] = (s == max_scf ? -1 : s); scf[k] = s; } } } ist_pos += cnt; scf += cnt; } scf[0] = scf[1] = scf[2] = 0; } static float L3_ldexp_q2(float y, int exp_q2) { static const float g_expfrac[4] = { 9.31322575e-10f,7.83145814e-10f,6.58544508e-10f,5.53767716e-10f }; int e; do { e = MINIMP3_MIN(30*4, exp_q2); y *= g_expfrac[e & 3]*(1 << 30 >> (e >> 2)); } while ((exp_q2 -= e) > 0); return y; } static void L3_decode_scalefactors(const uint8_t *hdr, uint8_t *ist_pos, bs_t *bs, const L3_gr_info_t *gr, float *scf, int ch) { static const uint8_t g_scf_partitions[3][28] = { { 6,5,5, 5,6,5,5,5,6,5, 7,3,11,10,0,0, 7, 7, 7,0, 6, 6,6,3, 8, 8,5,0 }, { 8,9,6,12,6,9,9,9,6,9,12,6,15,18,0,0, 6,15,12,0, 6,12,9,6, 6,18,9,0 }, { 9,9,6,12,9,9,9,9,9,9,12,6,18,18,0,0,12,12,12,0,12, 9,9,6,15,12,9,0 } }; const uint8_t *scf_partition = g_scf_partitions[!!gr->n_short_sfb + !gr->n_long_sfb]; uint8_t scf_size[4], iscf[40]; int i, scf_shift = gr->scalefac_scale + 1, gain_exp, scfsi = gr->scfsi; float gain; if (HDR_TEST_MPEG1(hdr)) { static const uint8_t g_scfc_decode[16] = { 0,1,2,3, 12,5,6,7, 9,10,11,13, 14,15,18,19 }; int part = g_scfc_decode[gr->scalefac_compress]; scf_size[1] = scf_size[0] = (uint8_t)(part >> 2); scf_size[3] = scf_size[2] = (uint8_t)(part & 3); } else { static const uint8_t g_mod[6*4] = { 5,5,4,4,5,5,4,1,4,3,1,1,5,6,6,1,4,4,4,1,4,3,1,1 }; int k, modprod, sfc, ist = HDR_TEST_I_STEREO(hdr) && ch; sfc = gr->scalefac_compress >> ist; for (k = ist*3*4; sfc >= 0; sfc -= modprod, k += 4) { for (modprod = 1, i = 3; i >= 0; i--) { scf_size[i] = (uint8_t)(sfc / modprod % g_mod[k + i]); modprod *= g_mod[k + i]; } } scf_partition += k; scfsi = -16; } L3_read_scalefactors(iscf, ist_pos, scf_size, scf_partition, bs, scfsi); if (gr->n_short_sfb) { int sh = 3 - scf_shift; for (i = 0; i < gr->n_short_sfb; i += 3) { iscf[gr->n_long_sfb + i + 0] += gr->subblock_gain[0] << sh; iscf[gr->n_long_sfb + i + 1] += gr->subblock_gain[1] << sh; iscf[gr->n_long_sfb + i + 2] += gr->subblock_gain[2] << sh; } } else if (gr->preflag) { static const uint8_t g_preamp[10] = { 1,1,1,1,2,2,3,3,3,2 }; for (i = 0; i < 10; i++) { iscf[11 + i] += g_preamp[i]; } } gain_exp = gr->global_gain + BITS_DEQUANTIZER_OUT*4 - 210 - (HDR_IS_MS_STEREO(hdr) ? 2 : 0); gain = L3_ldexp_q2(1 << (MAX_SCFI/4), MAX_SCFI - gain_exp); for (i = 0; i < (int)(gr->n_long_sfb + gr->n_short_sfb); i++) { scf[i] = L3_ldexp_q2(gain, iscf[i] << scf_shift); } } static const float g_pow43[129 + 16] = { 0,-1,-2.519842f,-4.326749f,-6.349604f,-8.549880f,-10.902724f,-13.390518f,-16.000000f,-18.720754f,-21.544347f,-24.463781f,-27.473142f,-30.567351f,-33.741992f,-36.993181f, 0,1,2.519842f,4.326749f,6.349604f,8.549880f,10.902724f,13.390518f,16.000000f,18.720754f,21.544347f,24.463781f,27.473142f,30.567351f,33.741992f,36.993181f,40.317474f,43.711787f,47.173345f,50.699631f,54.288352f,57.937408f,61.644865f,65.408941f,69.227979f,73.100443f,77.024898f,81.000000f,85.024491f,89.097188f,93.216975f,97.382800f,101.593667f,105.848633f,110.146801f,114.487321f,118.869381f,123.292209f,127.755065f,132.257246f,136.798076f,141.376907f,145.993119f,150.646117f,155.335327f,160.060199f,164.820202f,169.614826f,174.443577f,179.305980f,184.201575f,189.129918f,194.090580f,199.083145f,204.107210f,209.162385f,214.248292f,219.364564f,224.510845f,229.686789f,234.892058f,240.126328f,245.389280f,250.680604f,256.000000f,261.347174f,266.721841f,272.123723f,277.552547f,283.008049f,288.489971f,293.998060f,299.532071f,305.091761f,310.676898f,316.287249f,321.922592f,327.582707f,333.267377f,338.976394f,344.709550f,350.466646f,356.247482f,362.051866f,367.879608f,373.730522f,379.604427f,385.501143f,391.420496f,397.362314f,403.326427f,409.312672f,415.320884f,421.350905f,427.402579f,433.475750f,439.570269f,445.685987f,451.822757f,457.980436f,464.158883f,470.357960f,476.577530f,482.817459f,489.077615f,495.357868f,501.658090f,507.978156f,514.317941f,520.677324f,527.056184f,533.454404f,539.871867f,546.308458f,552.764065f,559.238575f,565.731879f,572.243870f,578.774440f,585.323483f,591.890898f,598.476581f,605.080431f,611.702349f,618.342238f,625.000000f,631.675540f,638.368763f,645.079578f }; static float L3_pow_43(int x) { float frac; int sign, mult = 256; if (x < 129) { return g_pow43[16 + x]; } if (x < 1024) { mult = 16; x <<= 3; } sign = 2*x & 64; frac = (float)((x & 63) - sign) / ((x & ~63) + sign); return g_pow43[16 + ((x + sign) >> 6)]*(1.f + frac*((4.f/3) + frac*(2.f/9)))*mult; } static void L3_huffman(float *dst, bs_t *bs, const L3_gr_info_t *gr_info, const float *scf, int layer3gr_limit) { static const int16_t tabs[] = { 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, 785,785,785,785,784,784,784,784,513,513,513,513,513,513,513,513,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256, -255,1313,1298,1282,785,785,785,785,784,784,784,784,769,769,769,769,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,290,288, -255,1313,1298,1282,769,769,769,769,529,529,529,529,529,529,529,529,528,528,528,528,528,528,528,528,512,512,512,512,512,512,512,512,290,288, -253,-318,-351,-367,785,785,785,785,784,784,784,784,769,769,769,769,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,819,818,547,547,275,275,275,275,561,560,515,546,289,274,288,258, -254,-287,1329,1299,1314,1312,1057,1057,1042,1042,1026,1026,784,784,784,784,529,529,529,529,529,529,529,529,769,769,769,769,768,768,768,768,563,560,306,306,291,259, -252,-413,-477,-542,1298,-575,1041,1041,784,784,784,784,769,769,769,769,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,-383,-399,1107,1092,1106,1061,849,849,789,789,1104,1091,773,773,1076,1075,341,340,325,309,834,804,577,577,532,532,516,516,832,818,803,816,561,561,531,531,515,546,289,289,288,258, -252,-429,-493,-559,1057,1057,1042,1042,529,529,529,529,529,529,529,529,784,784,784,784,769,769,769,769,512,512,512,512,512,512,512,512,-382,1077,-415,1106,1061,1104,849,849,789,789,1091,1076,1029,1075,834,834,597,581,340,340,339,324,804,833,532,532,832,772,818,803,817,787,816,771,290,290,290,290,288,258, -253,-349,-414,-447,-463,1329,1299,-479,1314,1312,1057,1057,1042,1042,1026,1026,785,785,785,785,784,784,784,784,769,769,769,769,768,768,768,768,-319,851,821,-335,836,850,805,849,341,340,325,336,533,533,579,579,564,564,773,832,578,548,563,516,321,276,306,291,304,259, -251,-572,-733,-830,-863,-879,1041,1041,784,784,784,784,769,769,769,769,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,-511,-527,-543,1396,1351,1381,1366,1395,1335,1380,-559,1334,1138,1138,1063,1063,1350,1392,1031,1031,1062,1062,1364,1363,1120,1120,1333,1348,881,881,881,881,375,374,359,373,343,358,341,325,791,791,1123,1122,-703,1105,1045,-719,865,865,790,790,774,774,1104,1029,338,293,323,308,-799,-815,833,788,772,818,803,816,322,292,307,320,561,531,515,546,289,274,288,258, -251,-525,-605,-685,-765,-831,-846,1298,1057,1057,1312,1282,785,785,785,785,784,784,784,784,769,769,769,769,512,512,512,512,512,512,512,512,1399,1398,1383,1367,1382,1396,1351,-511,1381,1366,1139,1139,1079,1079,1124,1124,1364,1349,1363,1333,882,882,882,882,807,807,807,807,1094,1094,1136,1136,373,341,535,535,881,775,867,822,774,-591,324,338,-671,849,550,550,866,864,609,609,293,336,534,534,789,835,773,-751,834,804,308,307,833,788,832,772,562,562,547,547,305,275,560,515,290,290, -252,-397,-477,-557,-622,-653,-719,-735,-750,1329,1299,1314,1057,1057,1042,1042,1312,1282,1024,1024,785,785,785,785,784,784,784,784,769,769,769,769,-383,1127,1141,1111,1126,1140,1095,1110,869,869,883,883,1079,1109,882,882,375,374,807,868,838,881,791,-463,867,822,368,263,852,837,836,-543,610,610,550,550,352,336,534,534,865,774,851,821,850,805,593,533,579,564,773,832,578,578,548,548,577,577,307,276,306,291,516,560,259,259, -250,-2107,-2507,-2764,-2909,-2974,-3007,-3023,1041,1041,1040,1040,769,769,769,769,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,-767,-1052,-1213,-1277,-1358,-1405,-1469,-1535,-1550,-1582,-1614,-1647,-1662,-1694,-1726,-1759,-1774,-1807,-1822,-1854,-1886,1565,-1919,-1935,-1951,-1967,1731,1730,1580,1717,-1983,1729,1564,-1999,1548,-2015,-2031,1715,1595,-2047,1714,-2063,1610,-2079,1609,-2095,1323,1323,1457,1457,1307,1307,1712,1547,1641,1700,1699,1594,1685,1625,1442,1442,1322,1322,-780,-973,-910,1279,1278,1277,1262,1276,1261,1275,1215,1260,1229,-959,974,974,989,989,-943,735,478,478,495,463,506,414,-1039,1003,958,1017,927,942,987,957,431,476,1272,1167,1228,-1183,1256,-1199,895,895,941,941,1242,1227,1212,1135,1014,1014,490,489,503,487,910,1013,985,925,863,894,970,955,1012,847,-1343,831,755,755,984,909,428,366,754,559,-1391,752,486,457,924,997,698,698,983,893,740,740,908,877,739,739,667,667,953,938,497,287,271,271,683,606,590,712,726,574,302,302,738,736,481,286,526,725,605,711,636,724,696,651,589,681,666,710,364,467,573,695,466,466,301,465,379,379,709,604,665,679,316,316,634,633,436,436,464,269,424,394,452,332,438,363,347,408,393,448,331,422,362,407,392,421,346,406,391,376,375,359,1441,1306,-2367,1290,-2383,1337,-2399,-2415,1426,1321,-2431,1411,1336,-2447,-2463,-2479,1169,1169,1049,1049,1424,1289,1412,1352,1319,-2495,1154,1154,1064,1064,1153,1153,416,390,360,404,403,389,344,374,373,343,358,372,327,357,342,311,356,326,1395,1394,1137,1137,1047,1047,1365,1392,1287,1379,1334,1364,1349,1378,1318,1363,792,792,792,792,1152,1152,1032,1032,1121,1121,1046,1046,1120,1120,1030,1030,-2895,1106,1061,1104,849,849,789,789,1091,1076,1029,1090,1060,1075,833,833,309,324,532,532,832,772,818,803,561,561,531,560,515,546,289,274,288,258, -250,-1179,-1579,-1836,-1996,-2124,-2253,-2333,-2413,-2477,-2542,-2574,-2607,-2622,-2655,1314,1313,1298,1312,1282,785,785,785,785,1040,1040,1025,1025,768,768,768,768,-766,-798,-830,-862,-895,-911,-927,-943,-959,-975,-991,-1007,-1023,-1039,-1055,-1070,1724,1647,-1103,-1119,1631,1767,1662,1738,1708,1723,-1135,1780,1615,1779,1599,1677,1646,1778,1583,-1151,1777,1567,1737,1692,1765,1722,1707,1630,1751,1661,1764,1614,1736,1676,1763,1750,1645,1598,1721,1691,1762,1706,1582,1761,1566,-1167,1749,1629,767,766,751,765,494,494,735,764,719,749,734,763,447,447,748,718,477,506,431,491,446,476,461,505,415,430,475,445,504,399,460,489,414,503,383,474,429,459,502,502,746,752,488,398,501,473,413,472,486,271,480,270,-1439,-1455,1357,-1471,-1487,-1503,1341,1325,-1519,1489,1463,1403,1309,-1535,1372,1448,1418,1476,1356,1462,1387,-1551,1475,1340,1447,1402,1386,-1567,1068,1068,1474,1461,455,380,468,440,395,425,410,454,364,467,466,464,453,269,409,448,268,432,1371,1473,1432,1417,1308,1460,1355,1446,1459,1431,1083,1083,1401,1416,1458,1445,1067,1067,1370,1457,1051,1051,1291,1430,1385,1444,1354,1415,1400,1443,1082,1082,1173,1113,1186,1066,1185,1050,-1967,1158,1128,1172,1097,1171,1081,-1983,1157,1112,416,266,375,400,1170,1142,1127,1065,793,793,1169,1033,1156,1096,1141,1111,1155,1080,1126,1140,898,898,808,808,897,897,792,792,1095,1152,1032,1125,1110,1139,1079,1124,882,807,838,881,853,791,-2319,867,368,263,822,852,837,866,806,865,-2399,851,352,262,534,534,821,836,594,594,549,549,593,593,533,533,848,773,579,579,564,578,548,563,276,276,577,576,306,291,516,560,305,305,275,259, -251,-892,-2058,-2620,-2828,-2957,-3023,-3039,1041,1041,1040,1040,769,769,769,769,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,-511,-527,-543,-559,1530,-575,-591,1528,1527,1407,1526,1391,1023,1023,1023,1023,1525,1375,1268,1268,1103,1103,1087,1087,1039,1039,1523,-604,815,815,815,815,510,495,509,479,508,463,507,447,431,505,415,399,-734,-782,1262,-815,1259,1244,-831,1258,1228,-847,-863,1196,-879,1253,987,987,748,-767,493,493,462,477,414,414,686,669,478,446,461,445,474,429,487,458,412,471,1266,1264,1009,1009,799,799,-1019,-1276,-1452,-1581,-1677,-1757,-1821,-1886,-1933,-1997,1257,1257,1483,1468,1512,1422,1497,1406,1467,1496,1421,1510,1134,1134,1225,1225,1466,1451,1374,1405,1252,1252,1358,1480,1164,1164,1251,1251,1238,1238,1389,1465,-1407,1054,1101,-1423,1207,-1439,830,830,1248,1038,1237,1117,1223,1148,1236,1208,411,426,395,410,379,269,1193,1222,1132,1235,1221,1116,976,976,1192,1162,1177,1220,1131,1191,963,963,-1647,961,780,-1663,558,558,994,993,437,408,393,407,829,978,813,797,947,-1743,721,721,377,392,844,950,828,890,706,706,812,859,796,960,948,843,934,874,571,571,-1919,690,555,689,421,346,539,539,944,779,918,873,932,842,903,888,570,570,931,917,674,674,-2575,1562,-2591,1609,-2607,1654,1322,1322,1441,1441,1696,1546,1683,1593,1669,1624,1426,1426,1321,1321,1639,1680,1425,1425,1305,1305,1545,1668,1608,1623,1667,1592,1638,1666,1320,1320,1652,1607,1409,1409,1304,1304,1288,1288,1664,1637,1395,1395,1335,1335,1622,1636,1394,1394,1319,1319,1606,1621,1392,1392,1137,1137,1137,1137,345,390,360,375,404,373,1047,-2751,-2767,-2783,1062,1121,1046,-2799,1077,-2815,1106,1061,789,789,1105,1104,263,355,310,340,325,354,352,262,339,324,1091,1076,1029,1090,1060,1075,833,833,788,788,1088,1028,818,818,803,803,561,561,531,531,816,771,546,546,289,274,288,258, -253,-317,-381,-446,-478,-509,1279,1279,-811,-1179,-1451,-1756,-1900,-2028,-2189,-2253,-2333,-2414,-2445,-2511,-2526,1313,1298,-2559,1041,1041,1040,1040,1025,1025,1024,1024,1022,1007,1021,991,1020,975,1019,959,687,687,1018,1017,671,671,655,655,1016,1015,639,639,758,758,623,623,757,607,756,591,755,575,754,559,543,543,1009,783,-575,-621,-685,-749,496,-590,750,749,734,748,974,989,1003,958,988,973,1002,942,987,957,972,1001,926,986,941,971,956,1000,910,985,925,999,894,970,-1071,-1087,-1102,1390,-1135,1436,1509,1451,1374,-1151,1405,1358,1480,1420,-1167,1507,1494,1389,1342,1465,1435,1450,1326,1505,1310,1493,1373,1479,1404,1492,1464,1419,428,443,472,397,736,526,464,464,486,457,442,471,484,482,1357,1449,1434,1478,1388,1491,1341,1490,1325,1489,1463,1403,1309,1477,1372,1448,1418,1433,1476,1356,1462,1387,-1439,1475,1340,1447,1402,1474,1324,1461,1371,1473,269,448,1432,1417,1308,1460,-1711,1459,-1727,1441,1099,1099,1446,1386,1431,1401,-1743,1289,1083,1083,1160,1160,1458,1445,1067,1067,1370,1457,1307,1430,1129,1129,1098,1098,268,432,267,416,266,400,-1887,1144,1187,1082,1173,1113,1186,1066,1050,1158,1128,1143,1172,1097,1171,1081,420,391,1157,1112,1170,1142,1127,1065,1169,1049,1156,1096,1141,1111,1155,1080,1126,1154,1064,1153,1140,1095,1048,-2159,1125,1110,1137,-2175,823,823,1139,1138,807,807,384,264,368,263,868,838,853,791,867,822,852,837,866,806,865,790,-2319,851,821,836,352,262,850,805,849,-2399,533,533,835,820,336,261,578,548,563,577,532,532,832,772,562,562,547,547,305,275,560,515,290,290,288,258 }; static const uint8_t tab32[] = { 130,162,193,209,44,28,76,140,9,9,9,9,9,9,9,9,190,254,222,238,126,94,157,157,109,61,173,205 }; static const uint8_t tab33[] = { 252,236,220,204,188,172,156,140,124,108,92,76,60,44,28,12 }; static const int16_t tabindex[2*16] = { 0,32,64,98,0,132,180,218,292,364,426,538,648,746,0,1126,1460,1460,1460,1460,1460,1460,1460,1460,1842,1842,1842,1842,1842,1842,1842,1842 }; static const uint8_t g_linbits[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,6,8,10,13,4,5,6,7,8,9,11,13 }; #define PEEK_BITS(n) (bs_cache >> (32 - n)) #define FLUSH_BITS(n) { bs_cache <<= (n); bs_sh += (n); } #define CHECK_BITS while (bs_sh >= 0) { bs_cache |= (uint32_t)*bs_next_ptr++ << bs_sh; bs_sh -= 8; } #define BSPOS ((bs_next_ptr - bs->buf)*8 - 24 + bs_sh) float one = 0.0f; int ireg = 0, big_val_cnt = gr_info->big_values; const uint8_t *sfb = gr_info->sfbtab; const uint8_t *bs_next_ptr = bs->buf + bs->pos/8; uint32_t bs_cache = (((bs_next_ptr[0]*256u + bs_next_ptr[1])*256u + bs_next_ptr[2])*256u + bs_next_ptr[3]) << (bs->pos & 7); int pairs_to_decode, np, bs_sh = (bs->pos & 7) - 8; bs_next_ptr += 4; while (big_val_cnt > 0) { int tab_num = gr_info->table_select[ireg]; int sfb_cnt = gr_info->region_count[ireg++]; const int16_t *codebook = tabs + tabindex[tab_num]; int linbits = g_linbits[tab_num]; if (linbits) { do { np = *sfb++ / 2; pairs_to_decode = MINIMP3_MIN(big_val_cnt, np); one = *scf++; do { int j, w = 5; int leaf = codebook[PEEK_BITS(w)]; while (leaf < 0) { FLUSH_BITS(w); w = leaf & 7; leaf = codebook[PEEK_BITS(w) - (leaf >> 3)]; } FLUSH_BITS(leaf >> 8); for (j = 0; j < 2; j++, dst++, leaf >>= 4) { int lsb = leaf & 0x0F; if (lsb == 15) { lsb += PEEK_BITS(linbits); FLUSH_BITS(linbits); CHECK_BITS; *dst = one*L3_pow_43(lsb)*((int32_t)bs_cache < 0 ? -1: 1); } else { *dst = g_pow43[16 + lsb - 16*(bs_cache >> 31)]*one; } FLUSH_BITS(lsb ? 1 : 0); } CHECK_BITS; } while (--pairs_to_decode); } while ((big_val_cnt -= np) > 0 && --sfb_cnt >= 0); } else { do { np = *sfb++ / 2; pairs_to_decode = MINIMP3_MIN(big_val_cnt, np); one = *scf++; do { int j, w = 5; int leaf = codebook[PEEK_BITS(w)]; while (leaf < 0) { FLUSH_BITS(w); w = leaf & 7; leaf = codebook[PEEK_BITS(w) - (leaf >> 3)]; } FLUSH_BITS(leaf >> 8); for (j = 0; j < 2; j++, dst++, leaf >>= 4) { int lsb = leaf & 0x0F; *dst = g_pow43[16 + lsb - 16*(bs_cache >> 31)]*one; FLUSH_BITS(lsb ? 1 : 0); } CHECK_BITS; } while (--pairs_to_decode); } while ((big_val_cnt -= np) > 0 && --sfb_cnt >= 0); } } for (np = 1 - big_val_cnt;; dst += 4) { const uint8_t *codebook_count1 = (gr_info->count1_table) ? tab33 : tab32; int leaf = codebook_count1[PEEK_BITS(4)]; if (!(leaf & 8)) { leaf = codebook_count1[(leaf >> 3) + (bs_cache << 4 >> (32 - (leaf & 3)))]; } FLUSH_BITS(leaf & 7); if (BSPOS > layer3gr_limit) { break; } #define RELOAD_SCALEFACTOR if (!--np) { np = *sfb++/2; if (!np) break; one = *scf++; } #define DEQ_COUNT1(s) if (leaf & (128 >> s)) { dst[s] = ((int32_t)bs_cache < 0) ? -one : one; FLUSH_BITS(1) } RELOAD_SCALEFACTOR; DEQ_COUNT1(0); DEQ_COUNT1(1); RELOAD_SCALEFACTOR; DEQ_COUNT1(2); DEQ_COUNT1(3); CHECK_BITS; } bs->pos = layer3gr_limit; } static void L3_midside_stereo(float *left, int n) { int i = 0; float *right = left + 576; #if HAVE_SIMD if (have_simd()) for (; i < n - 3; i += 4) { f4 vl = VLD(left + i); f4 vr = VLD(right + i); VSTORE(left + i, VADD(vl, vr)); VSTORE(right + i, VSUB(vl, vr)); } #endif /* HAVE_SIMD */ for (; i < n; i++) { float a = left[i]; float b = right[i]; left[i] = a + b; right[i] = a - b; } } static void L3_intensity_stereo_band(float *left, int n, float kl, float kr) { int i; for (i = 0; i < n; i++) { left[i + 576] = left[i]*kr; left[i] = left[i]*kl; } } static void L3_stereo_top_band(const float *right, const uint8_t *sfb, int nbands, int max_band[3]) { int i, k; max_band[0] = max_band[1] = max_band[2] = -1; for (i = 0; i < nbands; i++) { for (k = 0; k < sfb[i]; k += 2) { if (right[k] != 0 || right[k + 1] != 0) { max_band[i % 3] = i; break; } } right += sfb[i]; } } static void L3_stereo_process(float *left, const uint8_t *ist_pos, const uint8_t *sfb, const uint8_t *hdr, int max_band[3], int mpeg2_sh) { static const float g_pan[7*2] = { 0,1,0.21132487f,0.78867513f,0.36602540f,0.63397460f,0.5f,0.5f,0.63397460f,0.36602540f,0.78867513f,0.21132487f,1,0 }; unsigned i, max_pos = HDR_TEST_MPEG1(hdr) ? 7 : 64; for (i = 0; sfb[i]; i++) { unsigned ipos = ist_pos[i]; if ((int)i > max_band[i % 3] && ipos < max_pos) { float kl, kr, s = HDR_TEST_MS_STEREO(hdr) ? 1.41421356f : 1; if (HDR_TEST_MPEG1(hdr)) { kl = g_pan[2*ipos]; kr = g_pan[2*ipos + 1]; } else { kl = 1; kr = L3_ldexp_q2(1, (ipos + 1) >> 1 << mpeg2_sh); if (ipos & 1) { kl = kr; kr = 1; } } L3_intensity_stereo_band(left, sfb[i], kl*s, kr*s); } else if (HDR_TEST_MS_STEREO(hdr)) { L3_midside_stereo(left, sfb[i]); } left += sfb[i]; } } static void L3_intensity_stereo(float *left, uint8_t *ist_pos, const L3_gr_info_t *gr, const uint8_t *hdr) { int max_band[3], n_sfb = gr->n_long_sfb + gr->n_short_sfb; int i, max_blocks = gr->n_short_sfb ? 3 : 1; L3_stereo_top_band(left + 576, gr->sfbtab, n_sfb, max_band); if (gr->n_long_sfb) { max_band[0] = max_band[1] = max_band[2] = MINIMP3_MAX(MINIMP3_MAX(max_band[0], max_band[1]), max_band[2]); } for (i = 0; i < max_blocks; i++) { int default_pos = HDR_TEST_MPEG1(hdr) ? 3 : 0; int itop = n_sfb - max_blocks + i; int prev = itop - max_blocks; ist_pos[itop] = max_band[i] >= prev ? default_pos : ist_pos[prev]; } L3_stereo_process(left, ist_pos, gr->sfbtab, hdr, max_band, gr[1].scalefac_compress & 1); } static void L3_reorder(float *grbuf, float *scratch, const uint8_t *sfb) { int i, len; float *src = grbuf, *dst = scratch; for (;0 != (len = *sfb); sfb += 3, src += 2*len) { for (i = 0; i < len; i++, src++) { *dst++ = src[0*len]; *dst++ = src[1*len]; *dst++ = src[2*len]; } } memcpy(grbuf, scratch, (dst - scratch)*sizeof(float)); } static void L3_antialias(float *grbuf, int nbands) { static const float g_aa[2][8] = { {0.85749293f,0.88174200f,0.94962865f,0.98331459f,0.99551782f,0.99916056f,0.99989920f,0.99999316f}, {0.51449576f,0.47173197f,0.31337745f,0.18191320f,0.09457419f,0.04096558f,0.01419856f,0.00369997f} }; for (; nbands > 0; nbands--, grbuf += 18) { int i = 0; #if HAVE_SIMD if (have_simd()) for (; i < 8; i += 4) { f4 vu = VLD(grbuf + 18 + i); f4 vd = VLD(grbuf + 14 - i); f4 vc0 = VLD(g_aa[0] + i); f4 vc1 = VLD(g_aa[1] + i); vd = VREV(vd); VSTORE(grbuf + 18 + i, VSUB(VMUL(vu, vc0), VMUL(vd, vc1))); vd = VADD(VMUL(vu, vc1), VMUL(vd, vc0)); VSTORE(grbuf + 14 - i, VREV(vd)); } #endif /* HAVE_SIMD */ #ifndef MINIMP3_ONLY_SIMD for(; i < 8; i++) { float u = grbuf[18 + i]; float d = grbuf[17 - i]; grbuf[18 + i] = u*g_aa[0][i] - d*g_aa[1][i]; grbuf[17 - i] = u*g_aa[1][i] + d*g_aa[0][i]; } #endif /* MINIMP3_ONLY_SIMD */ } } static void L3_dct3_9(float *y) { float s0, s1, s2, s3, s4, s5, s6, s7, s8, t0, t2, t4; s0 = y[0]; s2 = y[2]; s4 = y[4]; s6 = y[6]; s8 = y[8]; t0 = s0 + s6*0.5f; s0 -= s6; t4 = (s4 + s2)*0.93969262f; t2 = (s8 + s2)*0.76604444f; s6 = (s4 - s8)*0.17364818f; s4 += s8 - s2; s2 = s0 - s4*0.5f; y[4] = s4 + s0; s8 = t0 - t2 + s6; s0 = t0 - t4 + t2; s4 = t0 + t4 - s6; s1 = y[1]; s3 = y[3]; s5 = y[5]; s7 = y[7]; s3 *= 0.86602540f; t0 = (s5 + s1)*0.98480775f; t4 = (s5 - s7)*0.34202014f; t2 = (s1 + s7)*0.64278761f; s1 = (s1 - s5 - s7)*0.86602540f; s5 = t0 - s3 - t2; s7 = t4 - s3 - t0; s3 = t4 + s3 - t2; y[0] = s4 - s7; y[1] = s2 + s1; y[2] = s0 - s3; y[3] = s8 + s5; y[5] = s8 - s5; y[6] = s0 + s3; y[7] = s2 - s1; y[8] = s4 + s7; } static void L3_imdct36(float *grbuf, float *overlap, const float *window, int nbands) { int i, j; static const float g_twid9[18] = { 0.73727734f,0.79335334f,0.84339145f,0.88701083f,0.92387953f,0.95371695f,0.97629601f,0.99144486f,0.99904822f,0.67559021f,0.60876143f,0.53729961f,0.46174861f,0.38268343f,0.30070580f,0.21643961f,0.13052619f,0.04361938f }; for (j = 0; j < nbands; j++, grbuf += 18, overlap += 9) { float co[9], si[9]; co[0] = -grbuf[0]; si[0] = grbuf[17]; for (i = 0; i < 4; i++) { si[8 - 2*i] = grbuf[4*i + 1] - grbuf[4*i + 2]; co[1 + 2*i] = grbuf[4*i + 1] + grbuf[4*i + 2]; si[7 - 2*i] = grbuf[4*i + 4] - grbuf[4*i + 3]; co[2 + 2*i] = -(grbuf[4*i + 3] + grbuf[4*i + 4]); } L3_dct3_9(co); L3_dct3_9(si); si[1] = -si[1]; si[3] = -si[3]; si[5] = -si[5]; si[7] = -si[7]; i = 0; #if HAVE_SIMD if (have_simd()) for (; i < 8; i += 4) { f4 vovl = VLD(overlap + i); f4 vc = VLD(co + i); f4 vs = VLD(si + i); f4 vr0 = VLD(g_twid9 + i); f4 vr1 = VLD(g_twid9 + 9 + i); f4 vw0 = VLD(window + i); f4 vw1 = VLD(window + 9 + i); f4 vsum = VADD(VMUL(vc, vr1), VMUL(vs, vr0)); VSTORE(overlap + i, VSUB(VMUL(vc, vr0), VMUL(vs, vr1))); VSTORE(grbuf + i, VSUB(VMUL(vovl, vw0), VMUL(vsum, vw1))); vsum = VADD(VMUL(vovl, vw1), VMUL(vsum, vw0)); VSTORE(grbuf + 14 - i, VREV(vsum)); } #endif /* HAVE_SIMD */ for (; i < 9; i++) { float ovl = overlap[i]; float sum = co[i]*g_twid9[9 + i] + si[i]*g_twid9[0 + i]; overlap[i] = co[i]*g_twid9[0 + i] - si[i]*g_twid9[9 + i]; grbuf[i] = ovl*window[0 + i] - sum*window[9 + i]; grbuf[17 - i] = ovl*window[9 + i] + sum*window[0 + i]; } } } static void L3_idct3(float x0, float x1, float x2, float *dst) { float m1 = x1*0.86602540f; float a1 = x0 - x2*0.5f; dst[1] = x0 + x2; dst[0] = a1 + m1; dst[2] = a1 - m1; } static void L3_imdct12(float *x, float *dst, float *overlap) { static const float g_twid3[6] = { 0.79335334f,0.92387953f,0.99144486f, 0.60876143f,0.38268343f,0.13052619f }; float co[3], si[3]; int i; L3_idct3(-x[0], x[6] + x[3], x[12] + x[9], co); L3_idct3(x[15], x[12] - x[9], x[6] - x[3], si); si[1] = -si[1]; for (i = 0; i < 3; i++) { float ovl = overlap[i]; float sum = co[i]*g_twid3[3 + i] + si[i]*g_twid3[0 + i]; overlap[i] = co[i]*g_twid3[0 + i] - si[i]*g_twid3[3 + i]; dst[i] = ovl*g_twid3[2 - i] - sum*g_twid3[5 - i]; dst[5 - i] = ovl*g_twid3[5 - i] + sum*g_twid3[2 - i]; } } static void L3_imdct_short(float *grbuf, float *overlap, int nbands) { for (;nbands > 0; nbands--, overlap += 9, grbuf += 18) { float tmp[18]; memcpy(tmp, grbuf, sizeof(tmp)); memcpy(grbuf, overlap, 6*sizeof(float)); L3_imdct12(tmp, grbuf + 6, overlap + 6); L3_imdct12(tmp + 1, grbuf + 12, overlap + 6); L3_imdct12(tmp + 2, overlap, overlap + 6); } } static void L3_change_sign(float *grbuf) { int b, i; for (b = 0, grbuf += 18; b < 32; b += 2, grbuf += 36) for (i = 1; i < 18; i += 2) grbuf[i] = -grbuf[i]; } static void L3_imdct_gr(float *grbuf, float *overlap, unsigned block_type, unsigned n_long_bands) { static const float g_mdct_window[2][18] = { { 0.99904822f,0.99144486f,0.97629601f,0.95371695f,0.92387953f,0.88701083f,0.84339145f,0.79335334f,0.73727734f,0.04361938f,0.13052619f,0.21643961f,0.30070580f,0.38268343f,0.46174861f,0.53729961f,0.60876143f,0.67559021f }, { 1,1,1,1,1,1,0.99144486f,0.92387953f,0.79335334f,0,0,0,0,0,0,0.13052619f,0.38268343f,0.60876143f } }; if (n_long_bands) { L3_imdct36(grbuf, overlap, g_mdct_window[0], n_long_bands); grbuf += 18*n_long_bands; overlap += 9*n_long_bands; } if (block_type == SHORT_BLOCK_TYPE) L3_imdct_short(grbuf, overlap, 32 - n_long_bands); else L3_imdct36(grbuf, overlap, g_mdct_window[block_type == STOP_BLOCK_TYPE], 32 - n_long_bands); } static void L3_save_reservoir(mp3dec_t *h, mp3dec_scratch_t *s) { int pos = (s->bs.pos + 7)/8u; int remains = s->bs.limit/8u - pos; if (remains > MAX_BITRESERVOIR_BYTES) { pos += remains - MAX_BITRESERVOIR_BYTES; remains = MAX_BITRESERVOIR_BYTES; } if (remains > 0) { memmove(h->reserv_buf, s->maindata + pos, remains); } h->reserv = remains; } static int L3_restore_reservoir(mp3dec_t *h, bs_t *bs, mp3dec_scratch_t *s, int main_data_begin) { int frame_bytes = (bs->limit - bs->pos)/8; int bytes_have = MINIMP3_MIN(h->reserv, main_data_begin); memcpy(s->maindata, h->reserv_buf + MINIMP3_MAX(0, h->reserv - main_data_begin), MINIMP3_MIN(h->reserv, main_data_begin)); memcpy(s->maindata + bytes_have, bs->buf + bs->pos/8, frame_bytes); bs_init(&s->bs, s->maindata, bytes_have + frame_bytes); return h->reserv >= main_data_begin; } static void L3_decode(mp3dec_t *h, mp3dec_scratch_t *s, L3_gr_info_t *gr_info, int nch) { int ch; for (ch = 0; ch < nch; ch++) { int layer3gr_limit = s->bs.pos + gr_info[ch].part_23_length; L3_decode_scalefactors(h->header, s->ist_pos[ch], &s->bs, gr_info + ch, s->scf, ch); L3_huffman(s->grbuf[ch], &s->bs, gr_info + ch, s->scf, layer3gr_limit); } if (HDR_TEST_I_STEREO(h->header)) { L3_intensity_stereo(s->grbuf[0], s->ist_pos[1], gr_info, h->header); } else if (HDR_IS_MS_STEREO(h->header)) { L3_midside_stereo(s->grbuf[0], 576); } for (ch = 0; ch < nch; ch++, gr_info++) { int aa_bands = 31; int n_long_bands = (gr_info->mixed_block_flag ? 2 : 0) << (int)(HDR_GET_MY_SAMPLE_RATE(h->header) == 2); if (gr_info->n_short_sfb) { aa_bands = n_long_bands - 1; L3_reorder(s->grbuf[ch] + n_long_bands*18, s->syn[0], gr_info->sfbtab + gr_info->n_long_sfb); } L3_antialias(s->grbuf[ch], aa_bands); L3_imdct_gr(s->grbuf[ch], h->mdct_overlap[ch], gr_info->block_type, n_long_bands); L3_change_sign(s->grbuf[ch]); } } static void mp3d_DCT_II(float *grbuf, int n) { static const float g_sec[24] = { 10.19000816f,0.50060302f,0.50241929f,3.40760851f,0.50547093f,0.52249861f,2.05778098f,0.51544732f,0.56694406f,1.48416460f,0.53104258f,0.64682180f,1.16943991f,0.55310392f,0.78815460f,0.97256821f,0.58293498f,1.06067765f,0.83934963f,0.62250412f,1.72244716f,0.74453628f,0.67480832f,5.10114861f }; int i, k = 0; #if HAVE_SIMD if (have_simd()) for (; k < n; k += 4) { f4 t[4][8], *x; float *y = grbuf + k; for (x = t[0], i = 0; i < 8; i++, x++) { f4 x0 = VLD(&y[i*18]); f4 x1 = VLD(&y[(15 - i)*18]); f4 x2 = VLD(&y[(16 + i)*18]); f4 x3 = VLD(&y[(31 - i)*18]); f4 t0 = VADD(x0, x3); f4 t1 = VADD(x1, x2); f4 t2 = VMUL_S(VSUB(x1, x2), g_sec[3*i + 0]); f4 t3 = VMUL_S(VSUB(x0, x3), g_sec[3*i + 1]); x[0] = VADD(t0, t1); x[8] = VMUL_S(VSUB(t0, t1), g_sec[3*i + 2]); x[16] = VADD(t3, t2); x[24] = VMUL_S(VSUB(t3, t2), g_sec[3*i + 2]); } for (x = t[0], i = 0; i < 4; i++, x += 8) { f4 x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3], x4 = x[4], x5 = x[5], x6 = x[6], x7 = x[7], xt; xt = VSUB(x0, x7); x0 = VADD(x0, x7); x7 = VSUB(x1, x6); x1 = VADD(x1, x6); x6 = VSUB(x2, x5); x2 = VADD(x2, x5); x5 = VSUB(x3, x4); x3 = VADD(x3, x4); x4 = VSUB(x0, x3); x0 = VADD(x0, x3); x3 = VSUB(x1, x2); x1 = VADD(x1, x2); x[0] = VADD(x0, x1); x[4] = VMUL_S(VSUB(x0, x1), 0.70710677f); x5 = VADD(x5, x6); x6 = VMUL_S(VADD(x6, x7), 0.70710677f); x7 = VADD(x7, xt); x3 = VMUL_S(VADD(x3, x4), 0.70710677f); x5 = VSUB(x5, VMUL_S(x7, 0.198912367f)); /* rotate by PI/8 */ x7 = VADD(x7, VMUL_S(x5, 0.382683432f)); x5 = VSUB(x5, VMUL_S(x7, 0.198912367f)); x0 = VSUB(xt, x6); xt = VADD(xt, x6); x[1] = VMUL_S(VADD(xt, x7), 0.50979561f); x[2] = VMUL_S(VADD(x4, x3), 0.54119611f); x[3] = VMUL_S(VSUB(x0, x5), 0.60134488f); x[5] = VMUL_S(VADD(x0, x5), 0.89997619f); x[6] = VMUL_S(VSUB(x4, x3), 1.30656302f); x[7] = VMUL_S(VSUB(xt, x7), 2.56291556f); } if (k > n - 3) { #if HAVE_SSE #define VSAVE2(i, v) _mm_storel_pi((__m64 *)(void*)&y[i*18], v) #else /* HAVE_SSE */ #define VSAVE2(i, v) vst1_f32((float32_t *)&y[i*18], vget_low_f32(v)) #endif /* HAVE_SSE */ for (i = 0; i < 7; i++, y += 4*18) { f4 s = VADD(t[3][i], t[3][i + 1]); VSAVE2(0, t[0][i]); VSAVE2(1, VADD(t[2][i], s)); VSAVE2(2, VADD(t[1][i], t[1][i + 1])); VSAVE2(3, VADD(t[2][1 + i], s)); } VSAVE2(0, t[0][7]); VSAVE2(1, VADD(t[2][7], t[3][7])); VSAVE2(2, t[1][7]); VSAVE2(3, t[3][7]); } else { #define VSAVE4(i, v) VSTORE(&y[i*18], v) for (i = 0; i < 7; i++, y += 4*18) { f4 s = VADD(t[3][i], t[3][i + 1]); VSAVE4(0, t[0][i]); VSAVE4(1, VADD(t[2][i], s)); VSAVE4(2, VADD(t[1][i], t[1][i + 1])); VSAVE4(3, VADD(t[2][1 + i], s)); } VSAVE4(0, t[0][7]); VSAVE4(1, VADD(t[2][7], t[3][7])); VSAVE4(2, t[1][7]); VSAVE4(3, t[3][7]); } } else #endif /* HAVE_SIMD */ #ifdef MINIMP3_ONLY_SIMD {} #else /* MINIMP3_ONLY_SIMD */ for (; k < n; k++) { float t[4][8], *x, *y = grbuf + k; for (x = t[0], i = 0; i < 8; i++, x++) { float x0 = y[i*18]; float x1 = y[(15 - i)*18]; float x2 = y[(16 + i)*18]; float x3 = y[(31 - i)*18]; float t0 = x0 + x3; float t1 = x1 + x2; float t2 = (x1 - x2)*g_sec[3*i + 0]; float t3 = (x0 - x3)*g_sec[3*i + 1]; x[0] = t0 + t1; x[8] = (t0 - t1)*g_sec[3*i + 2]; x[16] = t3 + t2; x[24] = (t3 - t2)*g_sec[3*i + 2]; } for (x = t[0], i = 0; i < 4; i++, x += 8) { float x0 = x[0], x1 = x[1], x2 = x[2], x3 = x[3], x4 = x[4], x5 = x[5], x6 = x[6], x7 = x[7], xt; xt = x0 - x7; x0 += x7; x7 = x1 - x6; x1 += x6; x6 = x2 - x5; x2 += x5; x5 = x3 - x4; x3 += x4; x4 = x0 - x3; x0 += x3; x3 = x1 - x2; x1 += x2; x[0] = x0 + x1; x[4] = (x0 - x1)*0.70710677f; x5 = x5 + x6; x6 = (x6 + x7)*0.70710677f; x7 = x7 + xt; x3 = (x3 + x4)*0.70710677f; x5 -= x7*0.198912367f; /* rotate by PI/8 */ x7 += x5*0.382683432f; x5 -= x7*0.198912367f; x0 = xt - x6; xt += x6; x[1] = (xt + x7)*0.50979561f; x[2] = (x4 + x3)*0.54119611f; x[3] = (x0 - x5)*0.60134488f; x[5] = (x0 + x5)*0.89997619f; x[6] = (x4 - x3)*1.30656302f; x[7] = (xt - x7)*2.56291556f; } for (i = 0; i < 7; i++, y += 4*18) { y[0*18] = t[0][i]; y[1*18] = t[2][i] + t[3][i] + t[3][i + 1]; y[2*18] = t[1][i] + t[1][i + 1]; y[3*18] = t[2][i + 1] + t[3][i] + t[3][i + 1]; } y[0*18] = t[0][7]; y[1*18] = t[2][7] + t[3][7]; y[2*18] = t[1][7]; y[3*18] = t[3][7]; } #endif /* MINIMP3_ONLY_SIMD */ } #ifndef MINIMP3_FLOAT_OUTPUT static int16_t mp3d_scale_pcm(float sample) { #if HAVE_ARMV6 int32_t s32 = (int32_t)(sample + .5f); s32 -= (s32 < 0); int16_t s = (int16_t)minimp3_clip_int16_arm(s32); #else if (sample >= 32766.5) return (int16_t) 32767; if (sample <= -32767.5) return (int16_t)-32768; int16_t s = (int16_t)(sample + .5f); s -= (s < 0); /* away from zero, to be compliant */ #endif return s; } #else /* MINIMP3_FLOAT_OUTPUT */ static float mp3d_scale_pcm(float sample) { return sample*(1.f/32768.f); } #endif /* MINIMP3_FLOAT_OUTPUT */ static void mp3d_synth_pair(mp3d_sample_t *pcm, int nch, const float *z) { float a; a = (z[14*64] - z[ 0]) * 29; a += (z[ 1*64] + z[13*64]) * 213; a += (z[12*64] - z[ 2*64]) * 459; a += (z[ 3*64] + z[11*64]) * 2037; a += (z[10*64] - z[ 4*64]) * 5153; a += (z[ 5*64] + z[ 9*64]) * 6574; a += (z[ 8*64] - z[ 6*64]) * 37489; a += z[ 7*64] * 75038; pcm[0] = mp3d_scale_pcm(a); z += 2; a = z[14*64] * 104; a += z[12*64] * 1567; a += z[10*64] * 9727; a += z[ 8*64] * 64019; a += z[ 6*64] * -9975; a += z[ 4*64] * -45; a += z[ 2*64] * 146; a += z[ 0*64] * -5; pcm[16*nch] = mp3d_scale_pcm(a); } static void mp3d_synth(float *xl, mp3d_sample_t *dstl, int nch, float *lins) { int i; float *xr = xl + 576*(nch - 1); mp3d_sample_t *dstr = dstl + (nch - 1); static const float g_win[] = { -1,26,-31,208,218,401,-519,2063,2000,4788,-5517,7134,5959,35640,-39336,74992, -1,24,-35,202,222,347,-581,2080,1952,4425,-5879,7640,5288,33791,-41176,74856, -1,21,-38,196,225,294,-645,2087,1893,4063,-6237,8092,4561,31947,-43006,74630, -1,19,-41,190,227,244,-711,2085,1822,3705,-6589,8492,3776,30112,-44821,74313, -1,17,-45,183,228,197,-779,2075,1739,3351,-6935,8840,2935,28289,-46617,73908, -1,16,-49,176,228,153,-848,2057,1644,3004,-7271,9139,2037,26482,-48390,73415, -2,14,-53,169,227,111,-919,2032,1535,2663,-7597,9389,1082,24694,-50137,72835, -2,13,-58,161,224,72,-991,2001,1414,2330,-7910,9592,70,22929,-51853,72169, -2,11,-63,154,221,36,-1064,1962,1280,2006,-8209,9750,-998,21189,-53534,71420, -2,10,-68,147,215,2,-1137,1919,1131,1692,-8491,9863,-2122,19478,-55178,70590, -3,9,-73,139,208,-29,-1210,1870,970,1388,-8755,9935,-3300,17799,-56778,69679, -3,8,-79,132,200,-57,-1283,1817,794,1095,-8998,9966,-4533,16155,-58333,68692, -4,7,-85,125,189,-83,-1356,1759,605,814,-9219,9959,-5818,14548,-59838,67629, -4,7,-91,117,177,-106,-1428,1698,402,545,-9416,9916,-7154,12980,-61289,66494, -5,6,-97,111,163,-127,-1498,1634,185,288,-9585,9838,-8540,11455,-62684,65290 }; float *zlin = lins + 15*64; const float *w = g_win; zlin[4*15] = xl[18*16]; zlin[4*15 + 1] = xr[18*16]; zlin[4*15 + 2] = xl[0]; zlin[4*15 + 3] = xr[0]; zlin[4*31] = xl[1 + 18*16]; zlin[4*31 + 1] = xr[1 + 18*16]; zlin[4*31 + 2] = xl[1]; zlin[4*31 + 3] = xr[1]; mp3d_synth_pair(dstr, nch, lins + 4*15 + 1); mp3d_synth_pair(dstr + 32*nch, nch, lins + 4*15 + 64 + 1); mp3d_synth_pair(dstl, nch, lins + 4*15); mp3d_synth_pair(dstl + 32*nch, nch, lins + 4*15 + 64); #if HAVE_SIMD if (have_simd()) for (i = 14; i >= 0; i--) { #define VLOAD(k) f4 w0 = VSET(*w++); f4 w1 = VSET(*w++); f4 vz = VLD(&zlin[4*i - 64*k]); f4 vy = VLD(&zlin[4*i - 64*(15 - k)]); #define V0(k) { VLOAD(k) b = VADD(VMUL(vz, w1), VMUL(vy, w0)) ; a = VSUB(VMUL(vz, w0), VMUL(vy, w1)); } #define V1(k) { VLOAD(k) b = VADD(b, VADD(VMUL(vz, w1), VMUL(vy, w0))); a = VADD(a, VSUB(VMUL(vz, w0), VMUL(vy, w1))); } #define V2(k) { VLOAD(k) b = VADD(b, VADD(VMUL(vz, w1), VMUL(vy, w0))); a = VADD(a, VSUB(VMUL(vy, w1), VMUL(vz, w0))); } f4 a, b; zlin[4*i] = xl[18*(31 - i)]; zlin[4*i + 1] = xr[18*(31 - i)]; zlin[4*i + 2] = xl[1 + 18*(31 - i)]; zlin[4*i + 3] = xr[1 + 18*(31 - i)]; zlin[4*i + 64] = xl[1 + 18*(1 + i)]; zlin[4*i + 64 + 1] = xr[1 + 18*(1 + i)]; zlin[4*i - 64 + 2] = xl[18*(1 + i)]; zlin[4*i - 64 + 3] = xr[18*(1 + i)]; V0(0) V2(1) V1(2) V2(3) V1(4) V2(5) V1(6) V2(7) { #ifndef MINIMP3_FLOAT_OUTPUT #if HAVE_SSE static const f4 g_max = { 32767.0f, 32767.0f, 32767.0f, 32767.0f }; static const f4 g_min = { -32768.0f, -32768.0f, -32768.0f, -32768.0f }; __m128i pcm8 = _mm_packs_epi32(_mm_cvtps_epi32(_mm_max_ps(_mm_min_ps(a, g_max), g_min)), _mm_cvtps_epi32(_mm_max_ps(_mm_min_ps(b, g_max), g_min))); dstr[(15 - i)*nch] = _mm_extract_epi16(pcm8, 1); dstr[(17 + i)*nch] = _mm_extract_epi16(pcm8, 5); dstl[(15 - i)*nch] = _mm_extract_epi16(pcm8, 0); dstl[(17 + i)*nch] = _mm_extract_epi16(pcm8, 4); dstr[(47 - i)*nch] = _mm_extract_epi16(pcm8, 3); dstr[(49 + i)*nch] = _mm_extract_epi16(pcm8, 7); dstl[(47 - i)*nch] = _mm_extract_epi16(pcm8, 2); dstl[(49 + i)*nch] = _mm_extract_epi16(pcm8, 6); #else /* HAVE_SSE */ int16x4_t pcma, pcmb; a = VADD(a, VSET(0.5f)); b = VADD(b, VSET(0.5f)); pcma = vqmovn_s32(vqaddq_s32(vcvtq_s32_f32(a), vreinterpretq_s32_u32(vcltq_f32(a, VSET(0))))); pcmb = vqmovn_s32(vqaddq_s32(vcvtq_s32_f32(b), vreinterpretq_s32_u32(vcltq_f32(b, VSET(0))))); vst1_lane_s16(dstr + (15 - i)*nch, pcma, 1); vst1_lane_s16(dstr + (17 + i)*nch, pcmb, 1); vst1_lane_s16(dstl + (15 - i)*nch, pcma, 0); vst1_lane_s16(dstl + (17 + i)*nch, pcmb, 0); vst1_lane_s16(dstr + (47 - i)*nch, pcma, 3); vst1_lane_s16(dstr + (49 + i)*nch, pcmb, 3); vst1_lane_s16(dstl + (47 - i)*nch, pcma, 2); vst1_lane_s16(dstl + (49 + i)*nch, pcmb, 2); #endif /* HAVE_SSE */ #else /* MINIMP3_FLOAT_OUTPUT */ static const f4 g_scale = { 1.0f/32768.0f, 1.0f/32768.0f, 1.0f/32768.0f, 1.0f/32768.0f }; a = VMUL(a, g_scale); b = VMUL(b, g_scale); #if HAVE_SSE _mm_store_ss(dstr + (15 - i)*nch, _mm_shuffle_ps(a, a, _MM_SHUFFLE(1, 1, 1, 1))); _mm_store_ss(dstr + (17 + i)*nch, _mm_shuffle_ps(b, b, _MM_SHUFFLE(1, 1, 1, 1))); _mm_store_ss(dstl + (15 - i)*nch, _mm_shuffle_ps(a, a, _MM_SHUFFLE(0, 0, 0, 0))); _mm_store_ss(dstl + (17 + i)*nch, _mm_shuffle_ps(b, b, _MM_SHUFFLE(0, 0, 0, 0))); _mm_store_ss(dstr + (47 - i)*nch, _mm_shuffle_ps(a, a, _MM_SHUFFLE(3, 3, 3, 3))); _mm_store_ss(dstr + (49 + i)*nch, _mm_shuffle_ps(b, b, _MM_SHUFFLE(3, 3, 3, 3))); _mm_store_ss(dstl + (47 - i)*nch, _mm_shuffle_ps(a, a, _MM_SHUFFLE(2, 2, 2, 2))); _mm_store_ss(dstl + (49 + i)*nch, _mm_shuffle_ps(b, b, _MM_SHUFFLE(2, 2, 2, 2))); #else /* HAVE_SSE */ vst1q_lane_f32(dstr + (15 - i)*nch, a, 1); vst1q_lane_f32(dstr + (17 + i)*nch, b, 1); vst1q_lane_f32(dstl + (15 - i)*nch, a, 0); vst1q_lane_f32(dstl + (17 + i)*nch, b, 0); vst1q_lane_f32(dstr + (47 - i)*nch, a, 3); vst1q_lane_f32(dstr + (49 + i)*nch, b, 3); vst1q_lane_f32(dstl + (47 - i)*nch, a, 2); vst1q_lane_f32(dstl + (49 + i)*nch, b, 2); #endif /* HAVE_SSE */ #endif /* MINIMP3_FLOAT_OUTPUT */ } } else #endif /* HAVE_SIMD */ #ifdef MINIMP3_ONLY_SIMD {} #else /* MINIMP3_ONLY_SIMD */ for (i = 14; i >= 0; i--) { #define LOAD(k) float w0 = *w++; float w1 = *w++; float *vz = &zlin[4*i - k*64]; float *vy = &zlin[4*i - (15 - k)*64]; #define S0(k) { int j; LOAD(k); for (j = 0; j < 4; j++) b[j] = vz[j]*w1 + vy[j]*w0, a[j] = vz[j]*w0 - vy[j]*w1; } #define S1(k) { int j; LOAD(k); for (j = 0; j < 4; j++) b[j] += vz[j]*w1 + vy[j]*w0, a[j] += vz[j]*w0 - vy[j]*w1; } #define S2(k) { int j; LOAD(k); for (j = 0; j < 4; j++) b[j] += vz[j]*w1 + vy[j]*w0, a[j] += vy[j]*w1 - vz[j]*w0; } float a[4], b[4]; zlin[4*i] = xl[18*(31 - i)]; zlin[4*i + 1] = xr[18*(31 - i)]; zlin[4*i + 2] = xl[1 + 18*(31 - i)]; zlin[4*i + 3] = xr[1 + 18*(31 - i)]; zlin[4*(i + 16)] = xl[1 + 18*(1 + i)]; zlin[4*(i + 16) + 1] = xr[1 + 18*(1 + i)]; zlin[4*(i - 16) + 2] = xl[18*(1 + i)]; zlin[4*(i - 16) + 3] = xr[18*(1 + i)]; S0(0) S2(1) S1(2) S2(3) S1(4) S2(5) S1(6) S2(7) dstr[(15 - i)*nch] = mp3d_scale_pcm(a[1]); dstr[(17 + i)*nch] = mp3d_scale_pcm(b[1]); dstl[(15 - i)*nch] = mp3d_scale_pcm(a[0]); dstl[(17 + i)*nch] = mp3d_scale_pcm(b[0]); dstr[(47 - i)*nch] = mp3d_scale_pcm(a[3]); dstr[(49 + i)*nch] = mp3d_scale_pcm(b[3]); dstl[(47 - i)*nch] = mp3d_scale_pcm(a[2]); dstl[(49 + i)*nch] = mp3d_scale_pcm(b[2]); } #endif /* MINIMP3_ONLY_SIMD */ } static void mp3d_synth_granule(float *qmf_state, float *grbuf, int nbands, int nch, mp3d_sample_t *pcm, float *lins) { int i; for (i = 0; i < nch; i++) { mp3d_DCT_II(grbuf + 576*i, nbands); } memcpy(lins, qmf_state, sizeof(float)*15*64); for (i = 0; i < nbands; i += 2) { mp3d_synth(grbuf + i, pcm + 32*nch*i, nch, lins + i*64); } #ifndef MINIMP3_NONSTANDARD_BUT_LOGICAL if (nch == 1) { for (i = 0; i < 15*64; i += 2) { qmf_state[i] = lins[nbands*64 + i]; } } else #endif /* MINIMP3_NONSTANDARD_BUT_LOGICAL */ { memcpy(qmf_state, lins + nbands*64, sizeof(float)*15*64); } } static int mp3d_match_frame(const uint8_t *hdr, int mp3_bytes, int frame_bytes) { int i, nmatch; for (i = 0, nmatch = 0; nmatch < MAX_FRAME_SYNC_MATCHES; nmatch++) { i += hdr_frame_bytes(hdr + i, frame_bytes) + hdr_padding(hdr + i); if (i + HDR_SIZE > mp3_bytes) return nmatch > 0; if (!hdr_compare(hdr, hdr + i)) return 0; } return 1; } static int mp3d_find_frame(const uint8_t *mp3, int mp3_bytes, int *free_format_bytes, int *ptr_frame_bytes) { int i, k; for (i = 0; i < mp3_bytes - HDR_SIZE; i++, mp3++) { if (hdr_valid(mp3)) { int frame_bytes = hdr_frame_bytes(mp3, *free_format_bytes); int frame_and_padding = frame_bytes + hdr_padding(mp3); for (k = HDR_SIZE; !frame_bytes && k < MAX_FREE_FORMAT_FRAME_SIZE && i + 2*k < mp3_bytes - HDR_SIZE; k++) { if (hdr_compare(mp3, mp3 + k)) { int fb = k - hdr_padding(mp3); int nextfb = fb + hdr_padding(mp3 + k); if (i + k + nextfb + HDR_SIZE > mp3_bytes || !hdr_compare(mp3, mp3 + k + nextfb)) continue; frame_and_padding = k; frame_bytes = fb; *free_format_bytes = fb; } } if ((frame_bytes && i + frame_and_padding <= mp3_bytes && mp3d_match_frame(mp3, mp3_bytes - i, frame_bytes)) || (!i && frame_and_padding == mp3_bytes)) { *ptr_frame_bytes = frame_and_padding; return i; } *free_format_bytes = 0; } } *ptr_frame_bytes = 0; return mp3_bytes; } void mp3dec_init(mp3dec_t *dec) { dec->header[0] = 0; } int mp3dec_decode_frame(mp3dec_t *dec, const uint8_t *mp3, int mp3_bytes, mp3d_sample_t *pcm, mp3dec_frame_info_t *info) { int i = 0, igr, frame_size = 0, success = 1; const uint8_t *hdr; bs_t bs_frame[1]; mp3dec_scratch_t scratch; if (mp3_bytes > 4 && dec->header[0] == 0xff && hdr_compare(dec->header, mp3)) { frame_size = hdr_frame_bytes(mp3, dec->free_format_bytes) + hdr_padding(mp3); if (frame_size != mp3_bytes && (frame_size + HDR_SIZE > mp3_bytes || !hdr_compare(mp3, mp3 + frame_size))) { frame_size = 0; } } if (!frame_size) { memset(dec, 0, sizeof(mp3dec_t)); i = mp3d_find_frame(mp3, mp3_bytes, &dec->free_format_bytes, &frame_size); if (!frame_size || i + frame_size > mp3_bytes) { info->frame_bytes = i; return 0; } } hdr = mp3 + i; memcpy(dec->header, hdr, HDR_SIZE); info->frame_bytes = i + frame_size; info->frame_offset = i; info->channels = HDR_IS_MONO(hdr) ? 1 : 2; info->hz = hdr_sample_rate_hz(hdr); info->layer = 4 - HDR_GET_LAYER(hdr); info->bitrate_kbps = hdr_bitrate_kbps(hdr); if (!pcm) { return hdr_frame_samples(hdr); } bs_init(bs_frame, hdr + HDR_SIZE, frame_size - HDR_SIZE); if (HDR_IS_CRC(hdr)) { get_bits(bs_frame, 16); } if (info->layer == 3) { int main_data_begin = L3_read_side_info(bs_frame, scratch.gr_info, hdr); if (main_data_begin < 0 || bs_frame->pos > bs_frame->limit) { mp3dec_init(dec); return 0; } success = L3_restore_reservoir(dec, bs_frame, &scratch, main_data_begin); if (success) { for (igr = 0; igr < (HDR_TEST_MPEG1(hdr) ? 2 : 1); igr++, pcm += 576*info->channels) { memset(scratch.grbuf[0], 0, 576*2*sizeof(float)); L3_decode(dec, &scratch, scratch.gr_info + igr*info->channels, info->channels); mp3d_synth_granule(dec->qmf_state, scratch.grbuf[0], 18, info->channels, pcm, scratch.syn[0]); } } L3_save_reservoir(dec, &scratch); } else { #ifdef MINIMP3_ONLY_MP3 return 0; #else /* MINIMP3_ONLY_MP3 */ L12_scale_info sci[1]; L12_read_scale_info(hdr, bs_frame, sci); memset(scratch.grbuf[0], 0, 576*2*sizeof(float)); for (i = 0, igr = 0; igr < 3; igr++) { if (12 == (i += L12_dequantize_granule(scratch.grbuf[0] + i, bs_frame, sci, info->layer | 1))) { i = 0; L12_apply_scf_384(sci, sci->scf + igr, scratch.grbuf[0]); mp3d_synth_granule(dec->qmf_state, scratch.grbuf[0], 12, info->channels, pcm, scratch.syn[0]); memset(scratch.grbuf[0], 0, 576*2*sizeof(float)); pcm += 384*info->channels; } if (bs_frame->pos > bs_frame->limit) { mp3dec_init(dec); return 0; } } #endif /* MINIMP3_ONLY_MP3 */ } return success*hdr_frame_samples(dec->header); } #ifdef MINIMP3_FLOAT_OUTPUT void mp3dec_f32_to_s16(const float *in, int16_t *out, int num_samples) { int i = 0; #if HAVE_SIMD int aligned_count = num_samples & ~7; for(; i < aligned_count; i += 8) { static const f4 g_scale = { 32768.0f, 32768.0f, 32768.0f, 32768.0f }; f4 a = VMUL(VLD(&in[i ]), g_scale); f4 b = VMUL(VLD(&in[i+4]), g_scale); #if HAVE_SSE static const f4 g_max = { 32767.0f, 32767.0f, 32767.0f, 32767.0f }; static const f4 g_min = { -32768.0f, -32768.0f, -32768.0f, -32768.0f }; __m128i pcm8 = _mm_packs_epi32(_mm_cvtps_epi32(_mm_max_ps(_mm_min_ps(a, g_max), g_min)), _mm_cvtps_epi32(_mm_max_ps(_mm_min_ps(b, g_max), g_min))); out[i ] = _mm_extract_epi16(pcm8, 0); out[i+1] = _mm_extract_epi16(pcm8, 1); out[i+2] = _mm_extract_epi16(pcm8, 2); out[i+3] = _mm_extract_epi16(pcm8, 3); out[i+4] = _mm_extract_epi16(pcm8, 4); out[i+5] = _mm_extract_epi16(pcm8, 5); out[i+6] = _mm_extract_epi16(pcm8, 6); out[i+7] = _mm_extract_epi16(pcm8, 7); #else /* HAVE_SSE */ int16x4_t pcma, pcmb; a = VADD(a, VSET(0.5f)); b = VADD(b, VSET(0.5f)); pcma = vqmovn_s32(vqaddq_s32(vcvtq_s32_f32(a), vreinterpretq_s32_u32(vcltq_f32(a, VSET(0))))); pcmb = vqmovn_s32(vqaddq_s32(vcvtq_s32_f32(b), vreinterpretq_s32_u32(vcltq_f32(b, VSET(0))))); vst1_lane_s16(out+i , pcma, 0); vst1_lane_s16(out+i+1, pcma, 1); vst1_lane_s16(out+i+2, pcma, 2); vst1_lane_s16(out+i+3, pcma, 3); vst1_lane_s16(out+i+4, pcmb, 0); vst1_lane_s16(out+i+5, pcmb, 1); vst1_lane_s16(out+i+6, pcmb, 2); vst1_lane_s16(out+i+7, pcmb, 3); #endif /* HAVE_SSE */ } #endif /* HAVE_SIMD */ for(; i < num_samples; i++) { float sample = in[i] * 32768.0f; if (sample >= 32766.5) out[i] = (int16_t) 32767; else if (sample <= -32767.5) out[i] = (int16_t)-32768; else { int16_t s = (int16_t)(sample + .5f); s -= (s < 0); /* away from zero, to be compliant */ out[i] = s; } } } #endif /* MINIMP3_FLOAT_OUTPUT */ #endif /* MINIMP3_IMPLEMENTATION && !_MINIMP3_IMPLEMENTATION_GUARD */ src/BWidgets/BMusic/minimp3/minimp3_ex.h000066400000000000000000001367301515163050000203420ustar00rootroot00000000000000#ifndef MINIMP3_EXT_H #define MINIMP3_EXT_H /* https://github.com/lieff/minimp3 To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. This software is distributed without any warranty. See . */ #include "minimp3.h" #include /* flags for mp3dec_ex_open_* functions */ #define MP3D_SEEK_TO_BYTE 0 /* mp3dec_ex_seek seeks to byte in stream */ #define MP3D_SEEK_TO_SAMPLE 1 /* mp3dec_ex_seek precisely seeks to sample using index (created during duration calculation scan or when mp3dec_ex_seek called) */ #define MP3D_DO_NOT_SCAN 2 /* do not scan whole stream for duration if vbrtag not found, mp3dec_ex_t::samples will be filled only if mp3dec_ex_t::vbr_tag_found == 1 */ /* compile-time config */ #define MINIMP3_PREDECODE_FRAMES 2 /* frames to pre-decode and skip after seek (to fill internal structures) */ /*#define MINIMP3_SEEK_IDX_LINEAR_SEARCH*/ /* define to use linear index search instead of binary search on seek */ #define MINIMP3_IO_SIZE (128*1024) /* io buffer size for streaming functions, must be greater than MINIMP3_BUF_SIZE */ #define MINIMP3_BUF_SIZE (16*1024) /* buffer which can hold minimum 10 consecutive mp3 frames (~16KB) worst case */ #define MINIMP3_ENABLE_RING 0 /* WIP enable hardware magic ring buffer if available, to make less input buffer memmove(s) in callback IO mode */ /* return error codes */ #define MP3D_E_PARAM -1 #define MP3D_E_MEMORY -2 #define MP3D_E_IOERROR -3 #define MP3D_E_USER -4 /* can be used to stop processing from callbacks without indicating specific error */ #define MP3D_E_DECODE -5 /* decode error which can't be safely skipped, such as sample rate, layer and channels change */ typedef struct { mp3d_sample_t *buffer; size_t samples; /* channels included, byte size = samples*sizeof(mp3d_sample_t) */ int channels, hz, layer, avg_bitrate_kbps; } mp3dec_file_info_t; typedef struct { const uint8_t *buffer; size_t size; } mp3dec_map_info_t; typedef struct { uint64_t sample; uint64_t offset; } mp3dec_frame_t; typedef struct { mp3dec_frame_t *frames; size_t num_frames, capacity; } mp3dec_index_t; typedef size_t (*MP3D_READ_CB)(void *buf, size_t size, void *user_data); typedef int (*MP3D_SEEK_CB)(uint64_t position, void *user_data); typedef struct { MP3D_READ_CB read; void *read_data; MP3D_SEEK_CB seek; void *seek_data; } mp3dec_io_t; typedef struct { mp3dec_t mp3d; mp3dec_map_info_t file; mp3dec_io_t *io; mp3dec_index_t index; uint64_t offset, samples, detected_samples, cur_sample, start_offset, end_offset; mp3dec_frame_info_t info; mp3d_sample_t buffer[MINIMP3_MAX_SAMPLES_PER_FRAME]; size_t input_consumed, input_filled; int is_file, flags, vbr_tag_found, indexes_built; int free_format_bytes; int buffer_samples, buffer_consumed, to_skip, start_delay; int last_error; } mp3dec_ex_t; typedef int (*MP3D_ITERATE_CB)(void *user_data, const uint8_t *frame, int frame_size, int free_format_bytes, size_t buf_size, uint64_t offset, mp3dec_frame_info_t *info); typedef int (*MP3D_PROGRESS_CB)(void *user_data, size_t file_size, uint64_t offset, mp3dec_frame_info_t *info); #ifdef __cplusplus extern "C" { #endif /* detect mp3/mpa format */ int mp3dec_detect_buf(const uint8_t *buf, size_t buf_size); int mp3dec_detect_cb(mp3dec_io_t *io, uint8_t *buf, size_t buf_size); /* decode whole buffer block */ int mp3dec_load_buf(mp3dec_t *dec, const uint8_t *buf, size_t buf_size, mp3dec_file_info_t *info, MP3D_PROGRESS_CB progress_cb, void *user_data); int mp3dec_load_cb(mp3dec_t *dec, mp3dec_io_t *io, uint8_t *buf, size_t buf_size, mp3dec_file_info_t *info, MP3D_PROGRESS_CB progress_cb, void *user_data); /* iterate through frames */ int mp3dec_iterate_buf(const uint8_t *buf, size_t buf_size, MP3D_ITERATE_CB callback, void *user_data); int mp3dec_iterate_cb(mp3dec_io_t *io, uint8_t *buf, size_t buf_size, MP3D_ITERATE_CB callback, void *user_data); /* streaming decoder with seeking capability */ int mp3dec_ex_open_buf(mp3dec_ex_t *dec, const uint8_t *buf, size_t buf_size, int flags); int mp3dec_ex_open_cb(mp3dec_ex_t *dec, mp3dec_io_t *io, int flags); void mp3dec_ex_close(mp3dec_ex_t *dec); int mp3dec_ex_seek(mp3dec_ex_t *dec, uint64_t position); size_t mp3dec_ex_read(mp3dec_ex_t *dec, mp3d_sample_t *buf, size_t samples); #ifndef MINIMP3_NO_STDIO /* stdio versions of file detect, load, iterate and stream */ int mp3dec_detect(const char *file_name); int mp3dec_load(mp3dec_t *dec, const char *file_name, mp3dec_file_info_t *info, MP3D_PROGRESS_CB progress_cb, void *user_data); int mp3dec_iterate(const char *file_name, MP3D_ITERATE_CB callback, void *user_data); int mp3dec_ex_open(mp3dec_ex_t *dec, const char *file_name, int flags); #ifdef _WIN32 int mp3dec_detect_w(const wchar_t *file_name); int mp3dec_load_w(mp3dec_t *dec, const wchar_t *file_name, mp3dec_file_info_t *info, MP3D_PROGRESS_CB progress_cb, void *user_data); int mp3dec_iterate_w(const wchar_t *file_name, MP3D_ITERATE_CB callback, void *user_data); int mp3dec_ex_open_w(mp3dec_ex_t *dec, const wchar_t *file_name, int flags); #endif #endif #ifdef __cplusplus } #endif #endif /*MINIMP3_EXT_H*/ #ifdef MINIMP3_IMPLEMENTATION #include static void mp3dec_skip_id3v1(const uint8_t *buf, size_t *pbuf_size) { size_t buf_size = *pbuf_size; #ifndef MINIMP3_NOSKIP_ID3V1 if (buf_size >= 128 && !memcmp(buf + buf_size - 128, "TAG", 3)) { buf_size -= 128; if (buf_size >= 227 && !memcmp(buf + buf_size - 227, "TAG+", 4)) buf_size -= 227; } #endif #ifndef MINIMP3_NOSKIP_APEV2 if (buf_size > 32 && !memcmp(buf + buf_size - 32, "APETAGEX", 8)) { buf_size -= 32; const uint8_t *tag = buf + buf_size + 8 + 4; uint32_t tag_size = (uint32_t)(tag[3] << 24) | (tag[2] << 16) | (tag[1] << 8) | tag[0]; if (buf_size >= tag_size) buf_size -= tag_size; } #endif *pbuf_size = buf_size; } static size_t mp3dec_skip_id3v2(const uint8_t *buf, size_t buf_size) { #define MINIMP3_ID3_DETECT_SIZE 10 #ifndef MINIMP3_NOSKIP_ID3V2 if (buf_size >= MINIMP3_ID3_DETECT_SIZE && !memcmp(buf, "ID3", 3) && !((buf[5] & 15) || (buf[6] & 0x80) || (buf[7] & 0x80) || (buf[8] & 0x80) || (buf[9] & 0x80))) { size_t id3v2size = (((buf[6] & 0x7f) << 21) | ((buf[7] & 0x7f) << 14) | ((buf[8] & 0x7f) << 7) | (buf[9] & 0x7f)) + 10; if ((buf[5] & 16)) id3v2size += 10; /* footer */ return id3v2size; } #endif return 0; } static void mp3dec_skip_id3(const uint8_t **pbuf, size_t *pbuf_size) { uint8_t *buf = (uint8_t *)(*pbuf); size_t buf_size = *pbuf_size; size_t id3v2size = mp3dec_skip_id3v2(buf, buf_size); if (id3v2size) { if (id3v2size >= buf_size) id3v2size = buf_size; buf += id3v2size; buf_size -= id3v2size; } mp3dec_skip_id3v1(buf, &buf_size); *pbuf = (const uint8_t *)buf; *pbuf_size = buf_size; } static int mp3dec_check_vbrtag(const uint8_t *frame, int frame_size, uint32_t *frames, int *delay, int *padding) { static const char g_xing_tag[4] = { 'X', 'i', 'n', 'g' }; static const char g_info_tag[4] = { 'I', 'n', 'f', 'o' }; #define FRAMES_FLAG 1 #define BYTES_FLAG 2 #define TOC_FLAG 4 #define VBR_SCALE_FLAG 8 /* Side info offsets after header: / Mono Stereo / MPEG1 17 32 / MPEG2 & 2.5 9 17*/ bs_t bs[1]; L3_gr_info_t gr_info[4]; bs_init(bs, frame + HDR_SIZE, frame_size - HDR_SIZE); if (HDR_IS_CRC(frame)) get_bits(bs, 16); if (L3_read_side_info(bs, gr_info, frame) < 0) return 0; /* side info corrupted */ const uint8_t *tag = frame + HDR_SIZE + bs->pos/8; if (memcmp(g_xing_tag, tag, 4) && memcmp(g_info_tag, tag, 4)) return 0; int flags = tag[7]; if (!((flags & FRAMES_FLAG))) return -1; tag += 8; *frames = (uint32_t)(tag[0] << 24) | (tag[1] << 16) | (tag[2] << 8) | tag[3]; tag += 4; if (flags & BYTES_FLAG) tag += 4; if (flags & TOC_FLAG) tag += 100; if (flags & VBR_SCALE_FLAG) tag += 4; *delay = *padding = 0; if (*tag) { /* extension, LAME, Lavc, etc. Should be the same structure. */ tag += 21; if (tag - frame + 14 >= frame_size) return 0; *delay = ((tag[0] << 4) | (tag[1] >> 4)) + (528 + 1); *padding = (((tag[1] & 0xF) << 8) | tag[2]) - (528 + 1); } return 1; } int mp3dec_detect_buf(const uint8_t *buf, size_t buf_size) { return mp3dec_detect_cb(0, (uint8_t *)buf, buf_size); } int mp3dec_detect_cb(mp3dec_io_t *io, uint8_t *buf, size_t buf_size) { if (!buf || (size_t)-1 == buf_size || (io && buf_size < MINIMP3_BUF_SIZE)) return MP3D_E_PARAM; size_t filled = buf_size; if (io) { if (io->seek(0, io->seek_data)) return MP3D_E_IOERROR; filled = io->read(buf, MINIMP3_ID3_DETECT_SIZE, io->read_data); if (filled > MINIMP3_ID3_DETECT_SIZE) return MP3D_E_IOERROR; } if (filled < MINIMP3_ID3_DETECT_SIZE) return MP3D_E_USER; /* too small, can't be mp3/mpa */ if (mp3dec_skip_id3v2(buf, filled)) return 0; /* id3v2 tag is enough evidence */ if (io) { size_t readed = io->read(buf + MINIMP3_ID3_DETECT_SIZE, buf_size - MINIMP3_ID3_DETECT_SIZE, io->read_data); if (readed > (buf_size - MINIMP3_ID3_DETECT_SIZE)) return MP3D_E_IOERROR; filled += readed; if (filled < MINIMP3_BUF_SIZE) mp3dec_skip_id3v1(buf, &filled); } else { mp3dec_skip_id3v1(buf, &filled); if (filled > MINIMP3_BUF_SIZE) filled = MINIMP3_BUF_SIZE; } int free_format_bytes, frame_size; mp3d_find_frame(buf, filled, &free_format_bytes, &frame_size); if (frame_size) return 0; /* MAX_FRAME_SYNC_MATCHES consecutive frames found */ return MP3D_E_USER; } int mp3dec_load_buf(mp3dec_t *dec, const uint8_t *buf, size_t buf_size, mp3dec_file_info_t *info, MP3D_PROGRESS_CB progress_cb, void *user_data) { return mp3dec_load_cb(dec, 0, (uint8_t *)buf, buf_size, info, progress_cb, user_data); } int mp3dec_load_cb(mp3dec_t *dec, mp3dec_io_t *io, uint8_t *buf, size_t buf_size, mp3dec_file_info_t *info, MP3D_PROGRESS_CB progress_cb, void *user_data) { if (!dec || !buf || !info || (size_t)-1 == buf_size || (io && buf_size < MINIMP3_BUF_SIZE)) return MP3D_E_PARAM; uint64_t detected_samples = 0; size_t orig_buf_size = buf_size; int to_skip = 0; mp3dec_frame_info_t frame_info; memset(info, 0, sizeof(*info)); memset(&frame_info, 0, sizeof(frame_info)); /* skip id3 */ size_t filled = 0, consumed = 0; int eof = 0, ret = 0; if (io) { if (io->seek(0, io->seek_data)) return MP3D_E_IOERROR; filled = io->read(buf, MINIMP3_ID3_DETECT_SIZE, io->read_data); if (filled > MINIMP3_ID3_DETECT_SIZE) return MP3D_E_IOERROR; if (MINIMP3_ID3_DETECT_SIZE != filled) return 0; size_t id3v2size = mp3dec_skip_id3v2(buf, filled); if (id3v2size) { if (io->seek(id3v2size, io->seek_data)) return MP3D_E_IOERROR; filled = io->read(buf, buf_size, io->read_data); if (filled > buf_size) return MP3D_E_IOERROR; } else { size_t readed = io->read(buf + MINIMP3_ID3_DETECT_SIZE, buf_size - MINIMP3_ID3_DETECT_SIZE, io->read_data); if (readed > (buf_size - MINIMP3_ID3_DETECT_SIZE)) return MP3D_E_IOERROR; filled += readed; } if (filled < MINIMP3_BUF_SIZE) mp3dec_skip_id3v1(buf, &filled); } else { mp3dec_skip_id3((const uint8_t **)&buf, &buf_size); if (!buf_size) return 0; } /* try to make allocation size assumption by first frame or vbr tag */ mp3dec_init(dec); int samples; do { uint32_t frames; int i, delay, padding, free_format_bytes = 0, frame_size = 0; const uint8_t *hdr; if (io) { if (!eof && filled - consumed < MINIMP3_BUF_SIZE) { /* keep minimum 10 consecutive mp3 frames (~16KB) worst case */ memmove(buf, buf + consumed, filled - consumed); filled -= consumed; consumed = 0; size_t readed = io->read(buf + filled, buf_size - filled, io->read_data); if (readed > (buf_size - filled)) return MP3D_E_IOERROR; if (readed != (buf_size - filled)) eof = 1; filled += readed; if (eof) mp3dec_skip_id3v1(buf, &filled); } i = mp3d_find_frame(buf + consumed, filled - consumed, &free_format_bytes, &frame_size); consumed += i; hdr = buf + consumed; } else { i = mp3d_find_frame(buf, buf_size, &free_format_bytes, &frame_size); buf += i; buf_size -= i; hdr = buf; } if (i && !frame_size) continue; if (!frame_size) return 0; frame_info.channels = HDR_IS_MONO(hdr) ? 1 : 2; frame_info.hz = hdr_sample_rate_hz(hdr); frame_info.layer = 4 - HDR_GET_LAYER(hdr); frame_info.bitrate_kbps = hdr_bitrate_kbps(hdr); frame_info.frame_bytes = frame_size; samples = hdr_frame_samples(hdr)*frame_info.channels; if (3 != frame_info.layer) break; int ret = mp3dec_check_vbrtag(hdr, frame_size, &frames, &delay, &padding); if (ret > 0) { padding *= frame_info.channels; to_skip = delay*frame_info.channels; detected_samples = samples*(uint64_t)frames; if (detected_samples >= (uint64_t)to_skip) detected_samples -= to_skip; if (padding > 0 && detected_samples >= (uint64_t)padding) detected_samples -= padding; if (!detected_samples) return 0; } if (ret) { if (io) { consumed += frame_size; } else { buf += frame_size; buf_size -= frame_size; } } break; } while(1); size_t allocated = MINIMP3_MAX_SAMPLES_PER_FRAME*sizeof(mp3d_sample_t); if (detected_samples) allocated += detected_samples*sizeof(mp3d_sample_t); else allocated += (buf_size/frame_info.frame_bytes)*samples*sizeof(mp3d_sample_t); info->buffer = (mp3d_sample_t*)malloc(allocated); if (!info->buffer) return MP3D_E_MEMORY; /* save info */ info->channels = frame_info.channels; info->hz = frame_info.hz; info->layer = frame_info.layer; /* decode all frames */ size_t avg_bitrate_kbps = 0, frames = 0; do { if ((allocated - info->samples*sizeof(mp3d_sample_t)) < MINIMP3_MAX_SAMPLES_PER_FRAME*sizeof(mp3d_sample_t)) { allocated *= 2; mp3d_sample_t *alloc_buf = (mp3d_sample_t*)realloc(info->buffer, allocated); if (!alloc_buf) return MP3D_E_MEMORY; info->buffer = alloc_buf; } if (io) { if (!eof && filled - consumed < MINIMP3_BUF_SIZE) { /* keep minimum 10 consecutive mp3 frames (~16KB) worst case */ memmove(buf, buf + consumed, filled - consumed); filled -= consumed; consumed = 0; size_t readed = io->read(buf + filled, buf_size - filled, io->read_data); if (readed != (buf_size - filled)) eof = 1; filled += readed; if (eof) mp3dec_skip_id3v1(buf, &filled); } samples = mp3dec_decode_frame(dec, buf + consumed, filled - consumed, info->buffer + info->samples, &frame_info); consumed += frame_info.frame_bytes; } else { samples = mp3dec_decode_frame(dec, buf, MINIMP3_MIN(buf_size, (size_t)INT_MAX), info->buffer + info->samples, &frame_info); buf += frame_info.frame_bytes; buf_size -= frame_info.frame_bytes; } if (samples) { if (info->hz != frame_info.hz || info->layer != frame_info.layer) { ret = MP3D_E_DECODE; break; } if (info->channels && info->channels != frame_info.channels) { #ifdef MINIMP3_ALLOW_MONO_STEREO_TRANSITION info->channels = 0; /* mark file with mono-stereo transition */ #else ret = MP3D_E_DECODE; break; #endif } samples *= frame_info.channels; if (to_skip) { size_t skip = MINIMP3_MIN(samples, to_skip); to_skip -= skip; samples -= skip; memmove(info->buffer, info->buffer + skip, samples*sizeof(mp3d_sample_t)); } info->samples += samples; avg_bitrate_kbps += frame_info.bitrate_kbps; frames++; if (progress_cb) { ret = progress_cb(user_data, orig_buf_size, orig_buf_size - buf_size, &frame_info); if (ret) break; } } } while (frame_info.frame_bytes); if (detected_samples && info->samples > detected_samples) info->samples = detected_samples; /* cut padding */ /* reallocate to normal buffer size */ if (allocated != info->samples*sizeof(mp3d_sample_t)) { mp3d_sample_t *alloc_buf = (mp3d_sample_t*)realloc(info->buffer, info->samples*sizeof(mp3d_sample_t)); if (!alloc_buf && info->samples) return MP3D_E_MEMORY; info->buffer = alloc_buf; } if (frames) info->avg_bitrate_kbps = avg_bitrate_kbps/frames; return ret; } int mp3dec_iterate_buf(const uint8_t *buf, size_t buf_size, MP3D_ITERATE_CB callback, void *user_data) { const uint8_t *orig_buf = buf; if (!buf || (size_t)-1 == buf_size || !callback) return MP3D_E_PARAM; /* skip id3 */ mp3dec_skip_id3(&buf, &buf_size); if (!buf_size) return 0; mp3dec_frame_info_t frame_info; memset(&frame_info, 0, sizeof(frame_info)); do { int free_format_bytes = 0, frame_size = 0, ret; int i = mp3d_find_frame(buf, buf_size, &free_format_bytes, &frame_size); buf += i; buf_size -= i; if (i && !frame_size) continue; if (!frame_size) break; const uint8_t *hdr = buf; frame_info.channels = HDR_IS_MONO(hdr) ? 1 : 2; frame_info.hz = hdr_sample_rate_hz(hdr); frame_info.layer = 4 - HDR_GET_LAYER(hdr); frame_info.bitrate_kbps = hdr_bitrate_kbps(hdr); frame_info.frame_bytes = frame_size; if (callback) { if ((ret = callback(user_data, hdr, frame_size, free_format_bytes, buf_size, hdr - orig_buf, &frame_info))) return ret; } buf += frame_size; buf_size -= frame_size; } while (1); return 0; } int mp3dec_iterate_cb(mp3dec_io_t *io, uint8_t *buf, size_t buf_size, MP3D_ITERATE_CB callback, void *user_data) { if (!io || !buf || (size_t)-1 == buf_size || buf_size < MINIMP3_BUF_SIZE || !callback) return MP3D_E_PARAM; size_t filled = io->read(buf, MINIMP3_ID3_DETECT_SIZE, io->read_data), consumed = 0; uint64_t readed = 0; mp3dec_frame_info_t frame_info; int eof = 0; memset(&frame_info, 0, sizeof(frame_info)); if (filled > MINIMP3_ID3_DETECT_SIZE) return MP3D_E_IOERROR; if (MINIMP3_ID3_DETECT_SIZE != filled) return 0; size_t id3v2size = mp3dec_skip_id3v2(buf, filled); if (id3v2size) { if (io->seek(id3v2size, io->seek_data)) return MP3D_E_IOERROR; filled = io->read(buf, buf_size, io->read_data); if (filled > buf_size) return MP3D_E_IOERROR; readed += id3v2size; } else { size_t readed = io->read(buf + MINIMP3_ID3_DETECT_SIZE, buf_size - MINIMP3_ID3_DETECT_SIZE, io->read_data); if (readed > (buf_size - MINIMP3_ID3_DETECT_SIZE)) return MP3D_E_IOERROR; filled += readed; } if (filled < MINIMP3_BUF_SIZE) mp3dec_skip_id3v1(buf, &filled); do { int free_format_bytes = 0, frame_size = 0, ret; int i = mp3d_find_frame(buf + consumed, filled - consumed, &free_format_bytes, &frame_size); if (i && !frame_size) { consumed += i; continue; } if (!frame_size) break; const uint8_t *hdr = buf + consumed + i; frame_info.channels = HDR_IS_MONO(hdr) ? 1 : 2; frame_info.hz = hdr_sample_rate_hz(hdr); frame_info.layer = 4 - HDR_GET_LAYER(hdr); frame_info.bitrate_kbps = hdr_bitrate_kbps(hdr); frame_info.frame_bytes = frame_size; readed += i; if (callback) { if ((ret = callback(user_data, hdr, frame_size, free_format_bytes, filled - consumed, readed, &frame_info))) return ret; } readed += frame_size; consumed += i + frame_size; if (!eof && filled - consumed < MINIMP3_BUF_SIZE) { /* keep minimum 10 consecutive mp3 frames (~16KB) worst case */ memmove(buf, buf + consumed, filled - consumed); filled -= consumed; consumed = 0; size_t readed = io->read(buf + filled, buf_size - filled, io->read_data); if (readed > (buf_size - filled)) return MP3D_E_IOERROR; if (readed != (buf_size - filled)) eof = 1; filled += readed; if (eof) mp3dec_skip_id3v1(buf, &filled); } } while (1); return 0; } static int mp3dec_load_index(void *user_data, const uint8_t *frame, int frame_size, int free_format_bytes, size_t buf_size, uint64_t offset, mp3dec_frame_info_t *info) { mp3dec_frame_t *idx_frame; mp3dec_ex_t *dec = (mp3dec_ex_t *)user_data; if (!dec->index.frames && !dec->start_offset) { /* detect VBR tag and try to avoid full scan */ uint32_t frames; int delay, padding; dec->info = *info; dec->start_offset = dec->offset = offset; dec->end_offset = offset + buf_size; dec->free_format_bytes = free_format_bytes; /* should not change */ if (3 == dec->info.layer) { int ret = mp3dec_check_vbrtag(frame, frame_size, &frames, &delay, &padding); if (ret) dec->start_offset = dec->offset = offset + frame_size; if (ret > 0) { padding *= info->channels; dec->start_delay = dec->to_skip = delay*info->channels; dec->samples = hdr_frame_samples(frame)*info->channels*(uint64_t)frames; if (dec->samples >= (uint64_t)dec->start_delay) dec->samples -= dec->start_delay; if (padding > 0 && dec->samples >= (uint64_t)padding) dec->samples -= padding; dec->detected_samples = dec->samples; dec->vbr_tag_found = 1; return MP3D_E_USER; } else if (ret < 0) return 0; } } if (dec->flags & MP3D_DO_NOT_SCAN) return MP3D_E_USER; if (dec->index.num_frames + 1 > dec->index.capacity) { if (!dec->index.capacity) dec->index.capacity = 4096; else dec->index.capacity *= 2; mp3dec_frame_t *alloc_buf = (mp3dec_frame_t *)realloc((void*)dec->index.frames, sizeof(mp3dec_frame_t)*dec->index.capacity); if (!alloc_buf) return MP3D_E_MEMORY; dec->index.frames = alloc_buf; } idx_frame = &dec->index.frames[dec->index.num_frames++]; idx_frame->offset = offset; idx_frame->sample = dec->samples; if (!dec->buffer_samples && dec->index.num_frames < 256) { /* for some cutted mp3 frames, bit-reservoir not filled and decoding can't be started from first frames */ /* try to decode up to 255 first frames till samples starts to decode */ dec->buffer_samples = mp3dec_decode_frame(&dec->mp3d, frame, MINIMP3_MIN(buf_size, (size_t)INT_MAX), dec->buffer, info); dec->samples += dec->buffer_samples*info->channels; } else dec->samples += hdr_frame_samples(frame)*info->channels; return 0; } int mp3dec_ex_open_buf(mp3dec_ex_t *dec, const uint8_t *buf, size_t buf_size, int flags) { if (!dec || !buf || (size_t)-1 == buf_size || (flags & (~3))) return MP3D_E_PARAM; memset(dec, 0, sizeof(*dec)); dec->file.buffer = buf; dec->file.size = buf_size; dec->flags = flags; mp3dec_init(&dec->mp3d); int ret = mp3dec_iterate_buf(dec->file.buffer, dec->file.size, mp3dec_load_index, dec); if (ret && MP3D_E_USER != ret) return ret; mp3dec_init(&dec->mp3d); dec->buffer_samples = 0; dec->indexes_built = !(dec->vbr_tag_found || (flags & MP3D_DO_NOT_SCAN)); dec->flags &= (~MP3D_DO_NOT_SCAN); return 0; } #ifndef MINIMP3_SEEK_IDX_LINEAR_SEARCH static size_t mp3dec_idx_binary_search(mp3dec_index_t *idx, uint64_t position) { size_t end = idx->num_frames, start = 0, index = 0; while (start <= end) { size_t mid = (start + end) / 2; if (idx->frames[mid].sample >= position) { /* move left side. */ if (idx->frames[mid].sample == position) return mid; end = mid - 1; } else { /* move to right side */ index = mid; start = mid + 1; if (start == idx->num_frames) break; } } return index; } #endif int mp3dec_ex_seek(mp3dec_ex_t *dec, uint64_t position) { size_t i; if (!dec) return MP3D_E_PARAM; if (!(dec->flags & MP3D_SEEK_TO_SAMPLE)) { if (dec->io) { dec->offset = position; } else { dec->offset = MINIMP3_MIN(position, dec->file.size); } dec->cur_sample = 0; goto do_exit; } dec->cur_sample = position; position += dec->start_delay; if (0 == position) { /* optimize seek to zero, no index needed */ seek_zero: dec->offset = dec->start_offset; dec->to_skip = 0; goto do_exit; } if (!dec->indexes_built) { /* no index created yet (vbr tag used to calculate track length or MP3D_DO_NOT_SCAN open flag used) */ dec->indexes_built = 1; dec->samples = 0; dec->buffer_samples = 0; if (dec->io) { if (dec->io->seek(dec->start_offset, dec->io->seek_data)) return MP3D_E_IOERROR; int ret = mp3dec_iterate_cb(dec->io, (uint8_t *)dec->file.buffer, dec->file.size, mp3dec_load_index, dec); if (ret && MP3D_E_USER != ret) return ret; } else { int ret = mp3dec_iterate_buf(dec->file.buffer + dec->start_offset, dec->file.size - dec->start_offset, mp3dec_load_index, dec); if (ret && MP3D_E_USER != ret) return ret; } for (i = 0; i < dec->index.num_frames; i++) dec->index.frames[i].offset += dec->start_offset; dec->samples = dec->detected_samples; } if (!dec->index.frames) goto seek_zero; /* no frames in file - seek to zero */ #ifdef MINIMP3_SEEK_IDX_LINEAR_SEARCH for (i = 0; i < dec->index.num_frames; i++) { if (dec->index.frames[i].sample >= position) break; } #else i = mp3dec_idx_binary_search(&dec->index, position); #endif if (i) { int to_fill_bytes = 511; int skip_frames = MINIMP3_PREDECODE_FRAMES #ifdef MINIMP3_SEEK_IDX_LINEAR_SEARCH + ((dec->index.frames[i].sample == position) ? 0 : 1) #endif ; i -= MINIMP3_MIN(i, (size_t)skip_frames); if (3 == dec->info.layer) { while (i && to_fill_bytes) { /* make sure bit-reservoir is filled when we start decoding */ bs_t bs[1]; L3_gr_info_t gr_info[4]; int frame_bytes, frame_size; const uint8_t *hdr; if (dec->io) { hdr = dec->file.buffer; if (dec->io->seek(dec->index.frames[i - 1].offset, dec->io->seek_data)) return MP3D_E_IOERROR; size_t readed = dec->io->read((uint8_t *)hdr, HDR_SIZE, dec->io->read_data); if (readed != HDR_SIZE) return MP3D_E_IOERROR; frame_size = hdr_frame_bytes(hdr, dec->free_format_bytes) + hdr_padding(hdr); readed = dec->io->read((uint8_t *)hdr + HDR_SIZE, frame_size - HDR_SIZE, dec->io->read_data); if (readed != (size_t)(frame_size - HDR_SIZE)) return MP3D_E_IOERROR; bs_init(bs, hdr + HDR_SIZE, frame_size - HDR_SIZE); } else { hdr = dec->file.buffer + dec->index.frames[i - 1].offset; frame_size = hdr_frame_bytes(hdr, dec->free_format_bytes) + hdr_padding(hdr); bs_init(bs, hdr + HDR_SIZE, frame_size - HDR_SIZE); } if (HDR_IS_CRC(hdr)) get_bits(bs, 16); i--; if (L3_read_side_info(bs, gr_info, hdr) < 0) break; /* frame not decodable, we can start from here */ frame_bytes = (bs->limit - bs->pos)/8; to_fill_bytes -= MINIMP3_MIN(to_fill_bytes, frame_bytes); } } } dec->offset = dec->index.frames[i].offset; dec->to_skip = position - dec->index.frames[i].sample; while ((i + 1) < dec->index.num_frames && !dec->index.frames[i].sample && !dec->index.frames[i + 1].sample) { /* skip not decodable first frames */ const uint8_t *hdr; if (dec->io) { hdr = dec->file.buffer; if (dec->io->seek(dec->index.frames[i].offset, dec->io->seek_data)) return MP3D_E_IOERROR; size_t readed = dec->io->read((uint8_t *)hdr, HDR_SIZE, dec->io->read_data); if (readed != HDR_SIZE) return MP3D_E_IOERROR; } else hdr = dec->file.buffer + dec->index.frames[i].offset; dec->to_skip += hdr_frame_samples(hdr)*dec->info.channels; i++; } do_exit: if (dec->io) { if (dec->io->seek(dec->offset, dec->io->seek_data)) return MP3D_E_IOERROR; } dec->buffer_samples = 0; dec->buffer_consumed = 0; dec->input_consumed = 0; dec->input_filled = 0; dec->last_error = 0; mp3dec_init(&dec->mp3d); return 0; } size_t mp3dec_ex_read(mp3dec_ex_t *dec, mp3d_sample_t *buf, size_t samples) { if (!dec || !buf) return MP3D_E_PARAM; uint64_t end_offset = dec->end_offset ? dec->end_offset : dec->file.size; size_t samples_requested = samples; int eof = 0; mp3dec_frame_info_t frame_info; memset(&frame_info, 0, sizeof(frame_info)); if (dec->detected_samples && dec->cur_sample >= dec->detected_samples) return 0; /* at end of stream */ if (dec->last_error) return 0; /* error eof state, seek can reset it */ if (dec->buffer_consumed < dec->buffer_samples) { size_t to_copy = MINIMP3_MIN((size_t)(dec->buffer_samples - dec->buffer_consumed), samples); if (dec->detected_samples) { /* count decoded samples to properly cut padding */ if (dec->cur_sample + to_copy >= dec->detected_samples) to_copy = dec->detected_samples - dec->cur_sample; } dec->cur_sample += to_copy; memcpy(buf, dec->buffer + dec->buffer_consumed, to_copy*sizeof(mp3d_sample_t)); buf += to_copy; dec->buffer_consumed += to_copy; samples -= to_copy; } while (samples) { if (dec->detected_samples && dec->cur_sample >= dec->detected_samples) break; const uint8_t *dec_buf; if (dec->io) { if (!eof && (dec->input_filled - dec->input_consumed) < MINIMP3_BUF_SIZE) { /* keep minimum 10 consecutive mp3 frames (~16KB) worst case */ memmove((uint8_t*)dec->file.buffer, (uint8_t*)dec->file.buffer + dec->input_consumed, dec->input_filled - dec->input_consumed); dec->input_filled -= dec->input_consumed; dec->input_consumed = 0; size_t readed = dec->io->read((uint8_t*)dec->file.buffer + dec->input_filled, dec->file.size - dec->input_filled, dec->io->read_data); if (readed > (dec->file.size - dec->input_filled)) { dec->last_error = MP3D_E_IOERROR; readed = 0; } if (readed != (dec->file.size - dec->input_filled)) eof = 1; dec->input_filled += readed; if (eof) mp3dec_skip_id3v1((uint8_t*)dec->file.buffer, &dec->input_filled); } dec_buf = dec->file.buffer + dec->input_consumed; if (!(dec->input_filled - dec->input_consumed)) break; dec->buffer_samples = mp3dec_decode_frame(&dec->mp3d, dec_buf, dec->input_filled - dec->input_consumed, dec->buffer, &frame_info); dec->input_consumed += frame_info.frame_bytes; } else { dec_buf = dec->file.buffer + dec->offset; uint64_t buf_size = end_offset - dec->offset; if (!buf_size) break; dec->buffer_samples = mp3dec_decode_frame(&dec->mp3d, dec_buf, MINIMP3_MIN(buf_size, (uint64_t)INT_MAX), dec->buffer, &frame_info); } dec->buffer_consumed = 0; if (dec->info.hz != frame_info.hz || dec->info.layer != frame_info.layer #ifndef MINIMP3_ALLOW_MONO_STEREO_TRANSITION || dec->info.channels != frame_info.channels #endif ) { dec->last_error = MP3D_E_DECODE; break; } if (dec->buffer_samples) { dec->buffer_samples *= frame_info.channels; if (dec->to_skip) { size_t skip = MINIMP3_MIN(dec->buffer_samples, dec->to_skip); dec->buffer_consumed += skip; dec->to_skip -= skip; } size_t to_copy = MINIMP3_MIN((size_t)(dec->buffer_samples - dec->buffer_consumed), samples); if (dec->detected_samples) { /* ^ handle padding */ if (dec->cur_sample + to_copy >= dec->detected_samples) to_copy = dec->detected_samples - dec->cur_sample; } dec->cur_sample += to_copy; memcpy(buf, dec->buffer + dec->buffer_consumed, to_copy*sizeof(mp3d_sample_t)); buf += to_copy; dec->buffer_consumed += to_copy; samples -= to_copy; } else if (dec->to_skip) { /* In mp3 decoding not always can start decode from any frame because of bit reservoir, count skip samples for such frames */ int frame_samples = hdr_frame_samples(dec_buf)*frame_info.channels; dec->to_skip -= MINIMP3_MIN(frame_samples, dec->to_skip); } dec->offset += frame_info.frame_bytes; } return samples_requested - samples; } #ifndef MINIMP3_NO_STDIO #if defined(__linux__) || defined(__FreeBSD__) #include #include #include #include #include #include #if !defined(_GNU_SOURCE) #include #include #endif #if !defined(MAP_POPULATE) && defined(__linux__) #define MAP_POPULATE 0x08000 #elif !defined(MAP_POPULATE) #define MAP_POPULATE 0 #endif static void mp3dec_close_file(mp3dec_map_info_t *map_info) { if (map_info->buffer && MAP_FAILED != map_info->buffer) munmap((void *)map_info->buffer, map_info->size); map_info->buffer = 0; map_info->size = 0; } static int mp3dec_open_file(const char *file_name, mp3dec_map_info_t *map_info) { if (!file_name) return MP3D_E_PARAM; int file; struct stat st; memset(map_info, 0, sizeof(*map_info)); retry_open: file = open(file_name, O_RDONLY); if (file < 0 && (errno == EAGAIN || errno == EINTR)) goto retry_open; if (file < 0 || fstat(file, &st) < 0) { close(file); return MP3D_E_IOERROR; } map_info->size = st.st_size; retry_mmap: map_info->buffer = (const uint8_t *)mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE | MAP_POPULATE, file, 0); if (MAP_FAILED == map_info->buffer && (errno == EAGAIN || errno == EINTR)) goto retry_mmap; close(file); if (MAP_FAILED == map_info->buffer) return MP3D_E_IOERROR; return 0; } #if MINIMP3_ENABLE_RING && defined(__linux__) && defined(_GNU_SOURCE) #define MINIMP3_HAVE_RING static void mp3dec_close_ring(mp3dec_map_info_t *map_info) { #if defined(__linux__) && defined(_GNU_SOURCE) if (map_info->buffer && MAP_FAILED != map_info->buffer) munmap((void *)map_info->buffer, map_info->size*2); #else if (map_info->buffer) { shmdt(map_info->buffer); shmdt(map_info->buffer + map_info->size); } #endif map_info->buffer = 0; map_info->size = 0; } static int mp3dec_open_ring(mp3dec_map_info_t *map_info, size_t size) { int memfd, page_size; #if defined(__linux__) && defined(_GNU_SOURCE) void *buffer; int res; #endif memset(map_info, 0, sizeof(*map_info)); #ifdef _SC_PAGESIZE page_size = sysconf(_SC_PAGESIZE); #else page_size = getpagesize(); #endif map_info->size = (size + page_size - 1)/page_size*page_size; #if defined(__linux__) && defined(_GNU_SOURCE) memfd = memfd_create("mp3_ring", 0); if (memfd < 0) return MP3D_E_MEMORY; retry_ftruncate: res = ftruncate(memfd, map_info->size); if (res && (errno == EAGAIN || errno == EINTR)) goto retry_ftruncate; if (res) goto error; retry_mmap: map_info->buffer = (const uint8_t *)mmap(NULL, map_info->size*2, PROT_NONE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); if (MAP_FAILED == map_info->buffer && (errno == EAGAIN || errno == EINTR)) goto retry_mmap; if (MAP_FAILED == map_info->buffer || !map_info->buffer) goto error; retry_mmap2: buffer = mmap((void *)map_info->buffer, map_info->size, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_SHARED, memfd, 0); if (MAP_FAILED == map_info->buffer && (errno == EAGAIN || errno == EINTR)) goto retry_mmap2; if (MAP_FAILED == map_info->buffer || buffer != (void *)map_info->buffer) goto error; retry_mmap3: buffer = mmap((void *)map_info->buffer + map_info->size, map_info->size, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_SHARED, memfd, 0); if (MAP_FAILED == map_info->buffer && (errno == EAGAIN || errno == EINTR)) goto retry_mmap3; if (MAP_FAILED == map_info->buffer || buffer != (void *)(map_info->buffer + map_info->size)) goto error; close(memfd); return 0; error: close(memfd); mp3dec_close_ring(map_info); return MP3D_E_MEMORY; #else memfd = shmget(IPC_PRIVATE, map_info->size, IPC_CREAT | 0700); if (memfd < 0) return MP3D_E_MEMORY; retry_mmap: map_info->buffer = (const uint8_t *)mmap(NULL, map_info->size*2, PROT_NONE, MAP_PRIVATE, -1, 0); if (MAP_FAILED == map_info->buffer && (errno == EAGAIN || errno == EINTR)) goto retry_mmap; if (MAP_FAILED == map_info->buffer) goto error; if (map_info->buffer != shmat(memfd, map_info->buffer, 0)) goto error; if ((map_info->buffer + map_info->size) != shmat(memfd, map_info->buffer + map_info->size, 0)) goto error; if (shmctl(memfd, IPC_RMID, NULL) < 0) return MP3D_E_MEMORY; return 0; error: shmctl(memfd, IPC_RMID, NULL); mp3dec_close_ring(map_info); return MP3D_E_MEMORY; #endif } #endif /*MINIMP3_ENABLE_RING*/ #elif defined(_WIN32) #include static void mp3dec_close_file(mp3dec_map_info_t *map_info) { if (map_info->buffer) UnmapViewOfFile(map_info->buffer); map_info->buffer = 0; map_info->size = 0; } static int mp3dec_open_file_h(HANDLE file, mp3dec_map_info_t *map_info) { memset(map_info, 0, sizeof(*map_info)); HANDLE mapping = NULL; LARGE_INTEGER s; s.LowPart = GetFileSize(file, (DWORD*)&s.HighPart); if (s.LowPart == INVALID_FILE_SIZE && GetLastError() != NO_ERROR) goto error; map_info->size = s.QuadPart; mapping = CreateFileMapping(file, NULL, PAGE_READONLY, 0, 0, NULL); if (!mapping) goto error; map_info->buffer = (const uint8_t*)MapViewOfFile(mapping, FILE_MAP_READ, 0, 0, s.QuadPart); CloseHandle(mapping); if (!map_info->buffer) goto error; CloseHandle(file); return 0; error: mp3dec_close_file(map_info); CloseHandle(file); return MP3D_E_IOERROR; } static int mp3dec_open_file(const char *file_name, mp3dec_map_info_t *map_info) { if (!file_name) return MP3D_E_PARAM; HANDLE file = CreateFileA(file_name, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0); if (INVALID_HANDLE_VALUE == file) return MP3D_E_IOERROR; return mp3dec_open_file_h(file, map_info); } static int mp3dec_open_file_w(const wchar_t *file_name, mp3dec_map_info_t *map_info) { if (!file_name) return MP3D_E_PARAM; HANDLE file = CreateFileW(file_name, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0); if (INVALID_HANDLE_VALUE == file) return MP3D_E_IOERROR; return mp3dec_open_file_h(file, map_info); } #else #include static void mp3dec_close_file(mp3dec_map_info_t *map_info) { if (map_info->buffer) free((void *)map_info->buffer); map_info->buffer = 0; map_info->size = 0; } static int mp3dec_open_file(const char *file_name, mp3dec_map_info_t *map_info) { if (!file_name) return MP3D_E_PARAM; memset(map_info, 0, sizeof(*map_info)); FILE *file = fopen(file_name, "rb"); if (!file) return MP3D_E_IOERROR; int res = MP3D_E_IOERROR; long size = -1; if (fseek(file, 0, SEEK_END)) goto error; size = ftell(file); if (size < 0) goto error; map_info->size = (size_t)size; if (fseek(file, 0, SEEK_SET)) goto error; map_info->buffer = (uint8_t *)malloc(map_info->size); if (!map_info->buffer) { res = MP3D_E_MEMORY; goto error; } if (fread((void *)map_info->buffer, 1, map_info->size, file) != map_info->size) goto error; fclose(file); return 0; error: mp3dec_close_file(map_info); fclose(file); return res; } #endif static int mp3dec_detect_mapinfo(mp3dec_map_info_t *map_info) { int ret = mp3dec_detect_buf(map_info->buffer, map_info->size); mp3dec_close_file(map_info); return ret; } static int mp3dec_load_mapinfo(mp3dec_t *dec, mp3dec_map_info_t *map_info, mp3dec_file_info_t *info, MP3D_PROGRESS_CB progress_cb, void *user_data) { int ret = mp3dec_load_buf(dec, map_info->buffer, map_info->size, info, progress_cb, user_data); mp3dec_close_file(map_info); return ret; } static int mp3dec_iterate_mapinfo(mp3dec_map_info_t *map_info, MP3D_ITERATE_CB callback, void *user_data) { int ret = mp3dec_iterate_buf(map_info->buffer, map_info->size, callback, user_data); mp3dec_close_file(map_info); return ret; } static int mp3dec_ex_open_mapinfo(mp3dec_ex_t *dec, int flags) { int ret = mp3dec_ex_open_buf(dec, dec->file.buffer, dec->file.size, flags); dec->is_file = 1; if (ret) mp3dec_ex_close(dec); return ret; } int mp3dec_detect(const char *file_name) { int ret; mp3dec_map_info_t map_info; if ((ret = mp3dec_open_file(file_name, &map_info))) return ret; return mp3dec_detect_mapinfo(&map_info); } int mp3dec_load(mp3dec_t *dec, const char *file_name, mp3dec_file_info_t *info, MP3D_PROGRESS_CB progress_cb, void *user_data) { int ret; mp3dec_map_info_t map_info; if ((ret = mp3dec_open_file(file_name, &map_info))) return ret; return mp3dec_load_mapinfo(dec, &map_info, info, progress_cb, user_data); } int mp3dec_iterate(const char *file_name, MP3D_ITERATE_CB callback, void *user_data) { int ret; mp3dec_map_info_t map_info; if ((ret = mp3dec_open_file(file_name, &map_info))) return ret; return mp3dec_iterate_mapinfo(&map_info, callback, user_data); } int mp3dec_ex_open(mp3dec_ex_t *dec, const char *file_name, int flags) { int ret; if (!dec) return MP3D_E_PARAM; if ((ret = mp3dec_open_file(file_name, &dec->file))) return ret; return mp3dec_ex_open_mapinfo(dec, flags); } int mp3dec_ex_open_cb(mp3dec_ex_t *dec, mp3dec_io_t *io, int flags) { if (!dec || !io || (flags & (~3))) return MP3D_E_PARAM; memset(dec, 0, sizeof(*dec)); #ifdef MINIMP3_HAVE_RING int ret; if (ret = mp3dec_open_ring(&dec->file, MINIMP3_IO_SIZE)) return ret; #else dec->file.size = MINIMP3_IO_SIZE; dec->file.buffer = (const uint8_t*)malloc(dec->file.size); if (!dec->file.buffer) return MP3D_E_MEMORY; #endif dec->flags = flags; dec->io = io; mp3dec_init(&dec->mp3d); if (io->seek(0, io->seek_data)) return MP3D_E_IOERROR; int ret = mp3dec_iterate_cb(io, (uint8_t *)dec->file.buffer, dec->file.size, mp3dec_load_index, dec); if (ret && MP3D_E_USER != ret) return ret; if (dec->io->seek(dec->start_offset, dec->io->seek_data)) return MP3D_E_IOERROR; mp3dec_init(&dec->mp3d); dec->buffer_samples = 0; dec->indexes_built = !(dec->vbr_tag_found || (flags & MP3D_DO_NOT_SCAN)); dec->flags &= (~MP3D_DO_NOT_SCAN); return 0; } void mp3dec_ex_close(mp3dec_ex_t *dec) { #ifdef MINIMP3_HAVE_RING if (dec->io) mp3dec_close_ring(&dec->file); #else if (dec->io && dec->file.buffer) free((void*)dec->file.buffer); #endif if (dec->is_file) mp3dec_close_file(&dec->file); if (dec->index.frames) free(dec->index.frames); memset(dec, 0, sizeof(*dec)); } #ifdef _WIN32 int mp3dec_detect_w(const wchar_t *file_name) { int ret; mp3dec_map_info_t map_info; if ((ret = mp3dec_open_file_w(file_name, &map_info))) return ret; return mp3dec_detect_mapinfo(&map_info); } int mp3dec_load_w(mp3dec_t *dec, const wchar_t *file_name, mp3dec_file_info_t *info, MP3D_PROGRESS_CB progress_cb, void *user_data) { int ret; mp3dec_map_info_t map_info; if ((ret = mp3dec_open_file_w(file_name, &map_info))) return ret; return mp3dec_load_mapinfo(dec, &map_info, info, progress_cb, user_data); } int mp3dec_iterate_w(const wchar_t *file_name, MP3D_ITERATE_CB callback, void *user_data) { int ret; mp3dec_map_info_t map_info; if ((ret = mp3dec_open_file_w(file_name, &map_info))) return ret; return mp3dec_iterate_mapinfo(&map_info, callback, user_data); } int mp3dec_ex_open_w(mp3dec_ex_t *dec, const wchar_t *file_name, int flags) { int ret; if ((ret = mp3dec_open_file_w(file_name, &dec->file))) return ret; return mp3dec_ex_open_mapinfo(dec, flags); } #endif #else /* MINIMP3_NO_STDIO */ void mp3dec_ex_close(mp3dec_ex_t *dec) { if (dec->index.frames) free(dec->index.frames); memset(dec, 0, sizeof(*dec)); } #endif #endif /*MINIMP3_IMPLEMENTATION*/ src/BWidgets/BStyles/000077500000000000000000000000001515163050000147365ustar00rootroot00000000000000src/BWidgets/BStyles/README.md000066400000000000000000000055131515163050000162210ustar00rootroot00000000000000# BStyles The BStyles namespace contain classes to describe a widget style. ## Types Basic types to describe a Property. It can be a Color, or a Font, or anything else. Like an `int` value. ``` () ├── Color ├── ColorMap ├── Line ├── Border ├── Fill ╰── Font ``` ## StyleProperties A Property is data structure containing an identifier and the data. Properties realized as `std::pair`. In the case of a StyleProperty, the data structure contain an URID and the style [Type](#Types) data. Thus, StyleProperty objects describe widget element style properties. Like a foreground color or a widget border. ## Styles Style objects describe a whole widget style. Styles may take up multiple [StyleProperties](#StyleProperties) within a `std::map`. Like a widget foreground and a widget background and a widget border. Styles may also take up other Styles within its StyleProperty elements (nested styles). The Style subset within another Style is then pushed to the child widgets with the same URID. This can be used to describe composite widgets. Note: In contrast to Theme styles which are visible over the whole widget tree, a Style within a Style is only visible for the widget (and its child widgets) where it has been pushed too. Example: ``` ┌───────────────────────────────────────────────────────┠│TEXTBUTTONSTYLE │ │┌────────────────────────────────┠│ ││LABELSTYLE │ │ ││┌──────────â”┌───────â”┌─────────â”│ │ │││FONT ││TXCOLOR││BGCOLOR ││┌─────────â”┌────────â”│ │││sans, 12pt││white ││invisible│││FGCOLOR ││BGCOLOR ││ ││╰──────────┘╰───────┘╰─────────┘││lightgrey││darkgrey││ │╰────────────────────────────────┘╰─────────┘╰────────┘│ ╰───────────────────────────────────────────────────────┘ ``` ## Themes A Theme is a collection of Styles realized as a `std::map` with the widget URID as th key and the Style as value. The Styles of a Theme associated to a widget can be pushed to the respective child widgets (same URID) all over the widget tree. Themes are recommended to describe a larger part or a whole user interface.src/BWidgets/BStyles/Status.hpp000066400000000000000000000017051515163050000167350ustar00rootroot00000000000000/* Status.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BSTYLES_STATUS_HPP_ #define BSTYLES_STATUS_HPP_ namespace BStyles { /** * @brief Enumeration of object states. */ enum class Status { normal, active, inactive, off, userDefined }; } #endif /* BSTYLES_STATUS_HPP_ */src/BWidgets/BStyles/Style.hpp000066400000000000000000000311501515163050000165470ustar00rootroot00000000000000/* Style.hpp * Copyright (C) 2021 - 2023 Sven Jähnichen * * 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 . */ #ifndef BSTYLES_STYLE_HPP_ #define BSTYLES_STYLE_HPP_ #include "StyleProperty.hpp" #include "Types/Border.hpp" #include "Types/Fill.hpp" #include "Types/Font.hpp" #include "Types/ColorMap.hpp" #include "../BUtilities/Urid.hpp" #include #define BSTYLES_STYLE_URI "https://github.com/sjaehn/BWidgets/BStyles/Style.hpp" namespace BStyles { /** * @brief Styles recursive containers for StyleProperty data. * * A %Style is a std::map container for StyleProperties. Thus, each element * has got an identifier (URID) and a data block. * The data block contains either: * * a %Style, or * * Property data of Any type. * * The result is a tree of styles with their properties. * * Example: * @code * ┌───────────────────────────────────────────────────────┠* │TEXTBUTTONSTYLE │ * │┌────────────────────────────────┠│ * ││LABELSTYLE │ │ * ││┌──────────â”┌───────â”┌─────────â”│ │ * │││FONT ││TXCOLOR││BGCOLOR ││┌─────────â”┌────────â”│ * │││sans, 12pt││white ││invisible│││FGCOLOR ││BGCOLOR ││ * ││╰──────────┘╰───────┘╰─────────┘││lightgrey││darkgrey││ * │╰────────────────────────────────┘╰─────────┘╰────────┘│ * ╰───────────────────────────────────────────────────────┘ * @endcode */ class Style : public std::map { public: typedef std::map::iterator iterator; typedef std::map::const_iterator const_iterator; typedef std::map::reverse_iterator reverse_iterator; typedef std::map::const_reverse_iterator const_reverse_iterator; typedef std::map::reference reference; typedef std::map::const_reference const_reference; typedef std::map::key_type key_type; typedef std::map::value_type value_type; typedef std::map::mapped_type mapped_type; Style () = default; /** * @brief Constructs a %Style with its @a urid and @a data of Any type. * @param urid URID. * @param data Data of Any type. */ Style (const uint32_t urid, BUtilities::Any data); /** * @brief Constructs a %Style from a single StyleProperty. * @param property StyleProperty. */ Style (const StyleProperty& property); /** * @brief Constructs a %Style from a Property vector and an @a urid. * @param urid URID. * @param properties Initializer list of properties. */ explicit Style (const std::initializer_list& properties); /** * @brief Checks if an included element with the provided @a urid exists * at the base level of the tree. * @param urid Property URID. * @return True if the @a urid exists, otherwise false. * * Search for an included element with the provided @a urid. Use this * method to check for a missing @a urid prior element access using * operator[], if you don't want to create a new (sub-)style with * operator[]. */ bool contains (const uint32_t urid) const; /** * @brief Tests if an element is a %Style too. * @param it Iterator for the element. * @return True, if the element is a %Style, otherwise false. * * %isStyle shall be called to test if the element is a %Style element * of the tree or if it is a data end point. */ bool isStyle (const_iterator it) const; /** * @brief Tests if an element is a %Style too. * @param urid URID. * @return True, if the element is a %Style, otherwise false. * * %isStyle shall be called to test if the element is a %Style element * of the tree or if it is a data end point. */ bool isStyle (const uint32_t urid) const; using std::map::begin; using std::map::cbegin; using std::map::end; using std::map::cend; using std::map::rbegin; using std::map::crbegin; using std::map::rend; using std::map::crend; using std::map::empty; using std::map::size; using std::map::find; using std::map::operator[]; using std::map::insert; using std::map::erase; /** * @brief Gets the border Property from the base level. * @return Border. * * Gets the base level border Property using the default border URID. * Returns noBorder if the default border URID is not set. */ Border getBorder() const; /** * @brief Sets the border Property at the base level. * @param border Border. * * Sets the base level border Property using the default border URID. */ void setBorder(const Border& border); /** * @brief Gets the background Property from the base level. * @return Background. * * Gets the base level background Property using the default background * URID. Returns noFill if the default background URID is not set. */ Fill getBackground() const; /** * @brief Sets the background Property at the base level. * @param fill Background. * * Sets the base level background Property using the default background * URID. */ void setBackground (const Fill& fill); /** * @brief Gets the font Property from the base level. * @return Font. * * Gets the base level font property using the default font URID. * Returns sans12pt if the default font URID is not set. */ Font getFont() const; /** * @brief Sets the font property at the base level. * @param font Font. * * Sets the base level font Property using the default font URID. */ void setFont (const Font& font); /** * @brief Gets the foreground colors Property from the base level. * @return Foreground ColorMap. * * Gets the base level foreground colors Property using the default * foreground colors URID. Returns whites if the default foreground * colors URID is not set. */ ColorMap getFgColors() const; /** * @brief Sets the foreground colors Property at the base level. * @param colors Foreground ColorMap. * * Sets the base level foreground colors Property using the default * foreground colors URID. */ void setFgColors (const ColorMap& colors); /** * @brief Gets the background colors Property from the base level. * @return Background ColorMap. * * Gets the base level background colors Property using the default * background colors URID. Returns darks if the default background colors * URID is not set. */ ColorMap getBgColors() const; /** * @brief Sets the background colors Property at the base level. * @param colors Background ColorMap. * * Sets the base level background colors Property using the default * background colors URID. */ void setBgColors (const ColorMap& colors); /** * @brief Gets the text colors Property from the base level. * @return Text ColorMap. * * Gets the base level text colors Property using the default text colors * URID. Returns whites if the default text colors URID is not set. */ ColorMap getTxColors() const; /** * @brief Sets the text colors Property at the base level. * @param colors Text ColorMap. * * Sets the base level text colors Property using the default text * colors URID. */ void setTxColors (const ColorMap& colors); }; inline Style::Style (const uint32_t urid, BUtilities::Any data) : std::map () { insert (value_type (urid, data)); } inline Style::Style (const StyleProperty& property) : std::map () { insert (property); } inline Style::Style (const std::initializer_list& properties) : std::map () { for (const StyleProperty& s : properties) insert (s); } inline bool Style::contains (const uint32_t urid) const { return (find (urid) != end()); } inline bool Style::isStyle (const_iterator it) const { return (it->second.dataTypeHash() == typeid(Style).hash_code()); } inline bool Style::isStyle (const uint32_t urid) const { const_iterator it = find (urid); return ((it != end()) && isStyle (it)); } inline Border Style::getBorder() const { const_iterator it = find (BUtilities::Urid::urid (BSTYLES_STYLEPROPERTY_BORDER_URI)); if ((it == end()) || isStyle (it)) return noBorder; else return it->second.get(); } inline void Style::setBorder(const Border& border) { operator[] (BUtilities::Urid::urid (BSTYLES_STYLEPROPERTY_BORDER_URI)) = BUtilities::makeAny (border); } inline Fill Style::getBackground() const { const_iterator it = find (BUtilities::Urid::urid (BSTYLES_STYLEPROPERTY_BACKGROUND_URI)); if ((it == end()) || isStyle (it)) return noFill; else return it->second.get(); } inline void Style::setBackground(const Fill& fill) { operator[] (BUtilities::Urid::urid (BSTYLES_STYLEPROPERTY_BACKGROUND_URI)) = BUtilities::makeAny (fill); } inline Font Style::getFont() const { const_iterator it = find (BUtilities::Urid::urid (BSTYLES_STYLEPROPERTY_FONT_URI)); if ((it == end()) || isStyle (it)) return sans12pt; else return it->second.get(); } inline void Style::setFont(const Font& font) { operator[] (BUtilities::Urid::urid (BSTYLES_STYLEPROPERTY_FONT_URI)) = BUtilities::makeAny (font); } inline ColorMap Style::getFgColors() const { const_iterator it = find (BUtilities::Urid::urid (BSTYLES_STYLEPROPERTY_FGCOLORS_URI)); if ((it == end()) || isStyle (it)) return greens; else return it->second.get(); } inline void Style::setFgColors (const ColorMap& colors) { operator[] (BUtilities::Urid::urid (BSTYLES_STYLEPROPERTY_FGCOLORS_URI)) = BUtilities::makeAny (colors); } inline ColorMap Style::getBgColors() const { const_iterator it = find (BUtilities::Urid::urid (BSTYLES_STYLEPROPERTY_BGCOLORS_URI)); if ((it == end()) || isStyle (it)) return darks; else return it->second.get(); } inline void Style::setBgColors (const ColorMap& colors) { operator[] (BUtilities::Urid::urid (BSTYLES_STYLEPROPERTY_BGCOLORS_URI)) = BUtilities::makeAny (colors); } inline ColorMap Style::getTxColors() const { const_iterator it = find (BUtilities::Urid::urid (BSTYLES_STYLEPROPERTY_TXCOLORS_URI)); if ((it == end()) || isStyle (it)) return whites; else return it->second.get(); } inline void Style::setTxColors (const ColorMap& colors) { operator[] (BUtilities::Urid::urid (BSTYLES_STYLEPROPERTY_TXCOLORS_URI)) = BUtilities::makeAny (colors); } } #endif /* BSTYLES_STYLE_HPP_ */src/BWidgets/BStyles/StyleProperty.hpp000066400000000000000000000045301515163050000203160ustar00rootroot00000000000000/* StyleProperty.hpp * Copyright (C) 2021 - 2023 Sven Jähnichen * * 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 . */ #ifndef BSTYLES_STYLEPROPERTY_HPP_ #define BSTYLES_STYLEPROPERTY_HPP_ #include #include "../BUtilities/Property.hpp" #include "../BUtilities/Any.hpp" #define BSTYLES_STYLEPROPERTY_URI "https://github.com/sjaehn/BWidgets/BStyles/StyleProperty.hpp" #define BSTYLES_STYLEPROPERTY_BACKGROUND_URI BSTYLES_STYLEPROPERTY_URI "#Backgound" #define BSTYLES_STYLEPROPERTY_BORDER_URI BSTYLES_STYLEPROPERTY_URI "#Border" #define BSTYLES_STYLEPROPERTY_FONT_URI BSTYLES_STYLEPROPERTY_URI "#Font" #define BSTYLES_STYLEPROPERTY_FGCOLORS_URI BSTYLES_STYLEPROPERTY_URI "#FgColors" #define BSTYLES_STYLEPROPERTY_BGCOLORS_URI BSTYLES_STYLEPROPERTY_URI "#BgColors" #define BSTYLES_STYLEPROPERTY_TXCOLORS_URI BSTYLES_STYLEPROPERTY_URI "#TxColors" namespace BStyles { /** * @brief %StyleProperty objects are data assigned to an URID. * * A StyleProperty is a Property that consists of a constant @a URID and the * assigned @a data of Any type. It can only be set upon construction. No * change, no assignment of the object. Only its member @a data. */ class StyleProperty : public BUtilities::Property { public: /** * @brief Constructs a %StyleProperty based on its URID and its data. * @param urid Unique identifier value. * @param data %StyleProperty @a data of Any type. * * Note: There's NO default constructor for StyleProperty! */ StyleProperty (const uint32_t urid, const BUtilities::Any& data) : BUtilities::Property (urid, data) { } StyleProperty& operator= (const StyleProperty&) = delete; }; } #endif /* BSTYLES_STYLEPROPERTY_HPP_ */src/BWidgets/BStyles/Theme.hpp000066400000000000000000000062001515163050000165070ustar00rootroot00000000000000/* Theme.hpp * Copyright (C) 2022 Sven Jähnichen * * 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 . */ #ifndef BSTYLES_THEME_HPP_ #define BSTYLES_THEME_HPP_ #include "Style.hpp" #define BSTYLES_THEME_URI "https://github.com/sjaehn/BWidgets/BStyles/Theme.hpp" namespace BStyles { /** * @brief Themes containers for Style data. * * A %Theme is a std::map container for Styles with the widget * URID as th key and the Style as value. */ class Theme : public std::map { public: typedef std::map::iterator iterator; typedef std::map::const_iterator const_iterator; typedef std::map::reverse_iterator reverse_iterator; typedef std::map::const_reverse_iterator const_reverse_iterator; typedef std::map::reference reference; typedef std::map::const_reference const_reference; typedef std::map::key_type key_type; typedef std::map::value_type value_type; typedef std::map::mapped_type mapped_type; Theme () = default; /** * @brief Constructs a %Theme from an initializer list of URIDs and * Styles. * @param list Initializer list of URIDs and Styles. */ explicit Theme (const std::initializer_list>& list); /** * @brief Checks if a URID exists within the Theme. * @param urid Property URID. * @return True if the @a urid exists, otherwise false. */ bool contains (const uint32_t urid) const; using std::map::begin; using std::map::cbegin; using std::map::end; using std::map::cend; using std::map::rbegin; using std::map::crbegin; using std::map::rend; using std::map::crend; using std::map::empty; using std::map::size; using std::map::find; using std::map::operator[]; using std::map::insert; using std::map::erase; }; inline Theme::Theme (const std::initializer_list>& list) : std::map () { for (const std::pair& l : list) operator[](l.first) = l.second; } inline bool Theme::contains (const uint32_t urid) const { return (find (urid) != end()); } } #endif /* BSTYLES_THEME_HPP_ */src/BWidgets/BStyles/Types/000077500000000000000000000000001515163050000160425ustar00rootroot00000000000000src/BWidgets/BStyles/Types/Border.hpp000066400000000000000000000044211515163050000177710ustar00rootroot00000000000000/* Border.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BSTYLES_BORDER_HPP_ #define BSTYLES_BORDER_HPP_ #include "Line.hpp" namespace BStyles { /** * @brief A %Border, defined by a line style, padding, margin, and corner * radius. * and its width. */ struct Border { Line line; double margin; double padding; double radius; /** * @brief Creates an "empty" (= invisible, 0pt) %Border. */ constexpr Border () :Border (Line ()) {} /** * @brief Creates a %Border from the passed parameters. * @param line Line style. * @param margin Optional, in pts. * @param padding Optional, in pts. * @param radius Optional, corner radius in pts. */ constexpr Border (const Line& line, double margin = 0.0, double padding = 0.0, double radius = 0.0) : line (line), margin (margin), padding (padding), radius (radius) {} bool operator== (const Border& that) const { return (line == that.line) && (margin == that.margin) && (padding == that.padding) && (radius == that.radius); } bool operator!= (const Border& that) const {return !operator== (that);} }; constexpr Border blackBorder1pt = Border (blackLine1pt); constexpr Border whiteBorder1pt = Border (whiteLine1pt); constexpr Border greyBorder1pt = Border (greyLine1pt); constexpr Border lightgreyBorder1pt = Border (lightgreyLine1pt); constexpr Border noBorder = Border (noLine); constexpr Border shadow80Border2pt = Border (shadow80Line2pt); constexpr Border shadow50Border2pt = Border (shadow50Line2pt); constexpr Border shadow20Border2pt = Border (shadow20Line2pt); } #endif /* BSTYLES_BORDER_HPP_ */ src/BWidgets/BStyles/Types/Color.hpp000066400000000000000000000155701515163050000176410ustar00rootroot00000000000000/* Color.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BSTYLES_COLOR_HPP_ #define BSTYLES_COLOR_HPP_ #include #include #define CAIRO_RGB(col) (col).red, (col).green, (col).blue #define CAIRO_RGBA(col) (col).red, (col).green, (col).blue, (col).alpha namespace BStyles { /** * @brief RGBA colors represented by values ranging from 0.0 to 1.0, each. */ struct Color { static constexpr double normalLighted = 0.0; static constexpr double highLighted = 0.5; static constexpr double illuminated = 0.333; static constexpr double shadowed = -0.333; static constexpr double darkened = -0.5; double red, green, blue, alpha; /** * @brief Creates an "empty" %Color representing invisible black. */ constexpr Color () : Color (0.0, 0.0, 0.0, 0.0) {} /** * @brief Creates a %Color from the passed RGB(A) values. * @param red Red value [0,1] of RGB(A). * @param green Green value [0,1] of RGB(A). * @param blue Blue value [0,1] of RGB(A). * @param alpha Optional, alpha value [0,1] of RGBA. Default = 1.0. */ constexpr Color (const double red, const double green, const double blue, double alpha = 1.0) : red (red), green (green), blue (blue), alpha (alpha) { } //constexpr Color (const Color& that) = default; bool operator== (const Color& that) const { return (red == that.red) && (green == that.green) && (blue == that.blue) && (alpha == that.alpha); } bool operator!= (const Color& that) const {return !operator== (that);} /** * @brief Sets colors from HSV. * @param hue Hue [0,1]. * @param saturation Saturation [0,1]. * @param value Value [0,1]. */ void setHSV (const double hue, const double saturation, const double value) { const double hi = floor (6.0 * hue); const double f = 6.0 * hue - hi; const double p = value * (1.0 - saturation); const double q = value * (1.0 - f * saturation); const double t = value * (1.0 - (1.0 - f) * saturation); switch (static_cast(hi)) { case 6: case 0: red = value; green = t; blue = p; break; case 1: red = q; green = value; blue = p; break; case 2: red = p; green = value; blue = t; break; case 3: red = p; green = q; blue = value; break; case 4: red = t; green = p; blue = value; break; case 5: red = value; green = p; blue = q; break; }; } /** * @brief Sets colors from HSV. * @param hue Hue [0,1]. * @param saturation Saturation [0,1]. * @param value Value [0,1]. * @param alpha Optional, alpha value [0,1]. Default = 1.0. */ void setHSV (const double hue, const double saturation, const double value, double alpha) { setHSV (hue, saturation, value); this->alpha = alpha; } /** * @brief Gets the hue for this %Color. * @return Hue [0,1]. */ double hue () const { const double mx = std::max ({red, green, blue}); const double mn = std::min ({red, green, blue}); if (mx == mn) return 0.0; if (mx == red) return ((green - blue) / (mx - mn) + (blue > green) * 6.0) / 6.0; if (mx == green) return (2.0 + (blue - red) / (mx - mn)) / 6.0; return (4.0 + (red - green) / (mx - mn)) / 6.0; } /** * @brief Gets the saturation for this %Color. * @return Saturation [0,1]. */ double saturation () const { const double mx = std::max ({red, green, blue}); const double mn = std::min ({red, green, blue}); if (mx == 0.0) return 0.0; return (mx - mn) / mx; } /** * @brief Gets the value (HSV) for this %Color. * @return Value [0,1]. */ double value () const { return std::max ({red, green, blue}); } /** * @brief Changes the red, green and blue values of the by a given brightness. * @param brightness Brightness ranging from -1.0 (full darkness => black * over 0.0 (normal => unchanged) to 1.0 (full brightness => white) * @return %Color after illumination. */ Color illuminate (const double brightness) const { const double b = (brightness < -1.0 ? -1.0 : (brightness > 1.0 ? 1.0 : brightness)); if (b < 0) return Color (red * (b + 1.0), green * (b + 1.0), blue * (b + 1.0), alpha); else if (b > 0) return Color (red + (1.0 - red) * b, green + (1.0 - green) * b, blue + (1.0 - blue) * b, alpha); else return *this; } }; constexpr Color white = Color (1.0, 1.0, 1.0, 1.0); constexpr Color black = Color (0.0, 0.0, 0.0, 1.0); constexpr Color red = Color (1.0, 0.0, 0.0, 1.0); constexpr Color green = Color (0.0, 1.0, 0.0, 1.0); constexpr Color blue = Color (0.0, 0.0, 1.0, 1.0); constexpr Color yellow = Color (1.0, 1.0, 0.0, 1.0); constexpr Color grey = Color (0.5, 0.5, 0.5, 1.0); constexpr Color lightred = Color (1.0, 0.5, 0.5, 1.0); constexpr Color darkred = Color (0.5, 0.0, 0.0, 1.0); constexpr Color lightyellow = Color (1.0, 1.0, 0.5, 1.0); constexpr Color darkyellow = Color (0.5, 0.5, 0.0, 1.0); constexpr Color lightgreen = Color (0.5, 1.0, 0.5, 1.0); constexpr Color darkgreen = Color (0.0, 0.5, 0.0, 1.0); constexpr Color lightblue = Color (0.5, 0.5, 1.0, 1.0); constexpr Color darkblue = Color (0.0, 0.0, 0.5, 1.0); constexpr Color lightlightgrey = Color (0.9, 0.9, 0.9, 1.0); constexpr Color lightgrey = Color (0.75, 0.75, 0.75, 1.0); constexpr Color darkgrey = Color (0.25, 0.25, 0.25, 1.0); constexpr Color darkdarkgrey = Color (0.1, 0.1, 0.1, 1.0); constexpr Color grey80 = Color (0.8, 0.8, 0.8, 1.0); constexpr Color grey60 = Color (0.6, 0.6, 0.6, 1.0); constexpr Color grey40 = Color (0.4, 0.4, 0.4, 1.0); constexpr Color grey20 = Color (0.2, 0.2, 0.2, 1.0); constexpr Color invisible = Color (0.0, 0.0, 0.0, 0.0); } #endif /* BSTYLES_COLOR_HPP_ */ src/BWidgets/BStyles/Types/ColorMap.hpp000066400000000000000000000047211515163050000202730ustar00rootroot00000000000000/* ColorMap.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BSTYLES_COLORMAP_HPP_ #define BSTYLES_COLORMAP_HPP_ #include #include #include "Color.hpp" #include "../Status.hpp" namespace BStyles { /** * @brief Map of BStyles::Color, indexed by BStyles::Status * * A %ColorMap is derived from std::map and all its methods can be used here * too. A %ColorMap can additionally be initialized from a * @c std::vector. */ class ColorMap : public std::map { public: /** * @brief Creates a %ColorMap with no elements. */ ColorMap () = default; /** * @brief Creates a %ColorMap from a std::vector of BStyles::Color. * @param colors Initializer list of BStyles::Color containing a * continuous dataset of colors starting with BStyles::NORMAL. * * Data from the @a colors vector are copy construted. */ explicit ColorMap (const std::initializer_list& colors) { size_t i = 0; for (const Color& c : colors) { operator[](static_cast(i)) = c; ++i; } } }; inline const ColorMap reds = ColorMap ({red, lightred, darkred, black}); inline const ColorMap yellows = ColorMap ({yellow, lightyellow, darkyellow, black}); inline const ColorMap greens = ColorMap ({green, lightgreen, darkgreen, black}); inline const ColorMap blues = ColorMap ({blue, lightblue, darkblue, black}); inline const ColorMap greys = ColorMap ({grey, lightgrey, darkgrey, black}); inline const ColorMap whites = ColorMap ({lightlightgrey, white, lightgrey, black}); inline const ColorMap darks = ColorMap ({darkgrey, grey, darkdarkgrey, black}); inline const ColorMap lights = ColorMap ({lightgrey, lightlightgrey, grey, darkgrey}); } #endif /* BSTYLES_COLORMAP_HPP_ */src/BWidgets/BStyles/Types/Fill.hpp000066400000000000000000000153171515163050000174500ustar00rootroot00000000000000/* Fill.hpp * Copyright (C) 2021 - 2023 Sven Jähnichen * * 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 . */ #ifndef BSTYLES_FILL_HPP_ #define BSTYLES_FILL_HPP_ #include "cairo/cairo.h" #include "../../BUtilities/cairoplus.h" #include "Color.hpp" #include namespace BStyles { /** * @brief %Fill base properties. * * A %Fill may either be a color or an image. */ class Fill { protected: enum class FillType { color, image }; Color color_; cairo_surface_t* surface_; FillType type_; public: /** * @brief Creates an invisible %Fill. */ Fill () : color_ (), surface_ (nullptr), type_ (FillType::color) { } /** * @brief Creates a plain single color %Fill. * @param color %Fill @a color. */ explicit Fill (const Color& color) : color_ (color), surface_ (nullptr), type_ (FillType::color) { } /** * @brief Creates an image %Fill from a Cairo surface. * @param surface Cairo image surface. * * The constructor creates a copy of the Cairo image surface. */ explicit Fill (cairo_surface_t* surface) : color_ (), surface_ (surface && (cairo_surface_status (surface) == CAIRO_STATUS_SUCCESS) ? cairoplus_image_surface_clone_from_image_surface (surface) : nullptr), type_ (FillType::image) { } /** * @brief Creates an image %Fill from a png file. * @param filename png file name. */ explicit Fill (const std::string& filename) : color_ (), surface_ (cairo_image_surface_create_from_png (filename.c_str())), type_ (FillType::image) { } /** * @brief Copy constructs a new %Fill from another one. * @param that %Fill to copy from. */ Fill (const Fill& that) : color_ (that.color_), surface_ (that.surface_ && (cairo_surface_status (that.surface_) == CAIRO_STATUS_SUCCESS) ? cairoplus_image_surface_clone_from_image_surface (that.surface_) : nullptr), type_ (that.type_) { } ~Fill () { if (surface_ && (cairo_surface_status (surface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (surface_); } /** * @brief Sets the %Fill by copying from another one. * @param that Source %Fill. * * Sets the %Fill by copying from another one. Frees the * previously stored image source (if exists) first. */ Fill& operator= (const Fill& that) { color_ = that.color_; type_ = that.type_; if (surface_ != that.surface_) { if (surface_ && (cairo_surface_status (surface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (surface_); if (that.surface_) surface_ = cairoplus_image_surface_clone_from_image_surface (that.surface_); else surface_ = nullptr; } return *this; } bool operator== (const Fill& that) const { return (type_ == that.type_) && (type_ == FillType::color ? color_ == that.color_ : surface_ == that.surface_); } bool operator!= (const Fill& that) const {return !operator== (that);} /** * @brief Sets the %Fill to a Color. * @param color Color. * * Sets the %Fill to a Color and sets the fill type to FillType::color. Frees * a previously stored image surface first. */ void set (const Color& color) { if (surface_ && (cairo_surface_status (surface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (surface_); surface_ = nullptr; color_ = color; type_ = FillType::color; } /** * @brief Sets the %Fill by copying an image @a surface from a Cairo * surface. * @param surface Pointer to a Cairo surface. * * Sets the %Fill by copying an image @a surface from a Cairo surface * and sets the fill type to FillType::image. Frees the previously stored * image surface first. */ void set (cairo_surface_t* surface) { if (surface_ != surface) { if (surface_ && (cairo_surface_status (surface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (surface_); if (surface) surface_ = cairoplus_image_surface_clone_from_image_surface (surface); else surface_ = nullptr; } type_ = FillType::image; } /** * @brief Sets the %Fill to an image by loading png file. * @param filename Name / path to a png file. * * Loads the %Fill from a png fileand sets the fill type to FillType::image. * Frees the previously stored image surface first. */ void set (const std::string& filename) { if (surface_ && (cairo_surface_status (surface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (surface_); if (filename != "") surface_ = cairo_image_surface_create_from_png (filename.c_str()); else surface_ = nullptr; type_ = FillType::image; } /** * @brief Sets the %Fill souce to a Cairo context. * @param cr Cairo context. */ void setCairoSource (cairo_t* cr) const { switch (type_) { case FillType::color: cairo_set_source_rgba (cr, CAIRO_RGBA (color_)); break; case FillType::image: if (surface_) cairo_set_source_surface (cr, surface_, 0.0, 0.0); break; }; } }; inline const Fill blackFill = Fill (black); inline const Fill whiteFill = Fill (white); inline const Fill redFill = Fill (red); inline const Fill greenFill = Fill (green); inline const Fill blueFill = Fill (blue); inline const Fill greyFill = Fill (grey); inline const Fill darkgreyFill = Fill (darkgrey); inline const Fill grey20Fill = Fill (grey20); inline const Fill noFill = Fill (invisible); inline const Fill shadow80Fill = Fill (Color (0.0, 0.0, 0.0, 0.8)); inline const Fill shadow50Fill = Fill (Color (0.0, 0.0, 0.0, 0.5)); inline const Fill shadow20Fill = Fill (Color (0.0, 0.0, 0.0, 0.2)); } #endif /* BSTYLES_FILL_HPP_ */ src/BWidgets/BStyles/Types/Font.hpp000066400000000000000000000067761515163050000175010ustar00rootroot00000000000000/* Font.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BSTYLES_FONT_HPP_ #define BSTYLES_FONT_HPP_ #include #include namespace BStyles { /** * @brief A %Font class, compatible to Cairo. */ struct Font { enum class TextAlign { left, center, right, }; enum class TextVAlign { top, middle, bottom }; std::string family; cairo_font_slant_t slant; cairo_font_weight_t weight; double size; TextAlign align; TextVAlign valign; double lineSpacing; /** * @brief Creates a default %Font (12 pt sans). */ Font () : Font ("Sans") {} /** * @brief Creates a %Font from the passed parameters. * @param family %Font @a family. * @param slant Optional, Cairo %Font @a slant. * @param weight Optional, Cairo %Font @a weight. * @param size Optional, %Font size in pts. * @param align Optional, horizontal text alignment. * @param valign Optional, vertical text alignment. * @param lineSpacing Optional, line spacing factor. */ Font (const std::string& family, cairo_font_slant_t slant = CAIRO_FONT_SLANT_NORMAL, cairo_font_weight_t weight = CAIRO_FONT_WEIGHT_NORMAL, double size = 12.0, TextAlign align = TextAlign::left, TextVAlign valign = TextVAlign::top, double lineSpacing = 1.25) : family (family), slant (slant), weight (weight), size (size), align (align), valign (valign), lineSpacing(lineSpacing) {} /** * @brief Calculates the output dimensions of a text by passing to Cairo. * @param cr Pointer to a Cairo context. * @param text Text to calculate output dimensions for. * @return Output dimensions as Cairo text extents. */ cairo_text_extents_t getCairoTextExtents (cairo_t* cr, const std::string& text) const; bool operator== (const Font& that) const { return (family == that.family) && (slant == that.slant) && (weight == that.weight) && (size == that.size) && (align == that.align) && (valign == that.valign) && (lineSpacing == that.lineSpacing); } bool operator!= (const Font& that) const {return !operator== (that);} }; inline Font sans12pt = BStyles::Font ("Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL, 12.0); inline cairo_text_extents_t Font::getCairoTextExtents (cairo_t* cr, const std::string& text) const { if (cr && (! cairo_status (cr))) { cairo_save (cr); cairo_text_extents_t ext; cairo_select_font_face (cr, family.c_str (), slant, weight); cairo_set_font_size (cr, size); cairo_text_extents (cr, text.c_str(), &ext); cairo_restore (cr); return ext; } else { return {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; } } } #endif /* BSTYLES_BORDER_HPP_ */ src/BWidgets/BStyles/Types/Line.hpp000066400000000000000000000040231515163050000174410ustar00rootroot00000000000000/* Line.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BSTYLES_LINE_HPP_ #define BSTYLES_LINE_HPP_ #include "Color.hpp" namespace BStyles { /** * @brief A %Line, defined by its color and its width. * * Line styles are used for borders, tables, ... */ struct Line { Color color; int width; /** * @brief Creates an "empty" (= invisible, 0pt) %Line. */ constexpr Line () : Line (Color(), 0.0) {} /** * @brief Creates a %Line from the passed @a color and @a width. * @param color Color of the %Line. * @param width Width of the %Line in pts. */ constexpr Line (const Color& color, const double width) : color (color), width (width) {} bool operator== (const Line& that) const { return (color == that.color) && (width == that.width); } bool operator!= (const Line& that) const {return !operator== (that);} }; constexpr Line blackLine1pt = Line (black, 1.0); constexpr Line whiteLine1pt = Line (white, 1.0); constexpr Line greyLine1pt = Line (grey, 1.0); constexpr Line lightgreyLine1pt = Line (lightgrey, 1.0); constexpr Line noLine = Line (invisible, 0.0); constexpr Line shadow80Line2pt = Line (Color (0.0, 0.0, 0.0, 0.8), 2.0); constexpr Line shadow50Line2pt = Line (Color (0.0, 0.0, 0.0, 0.5), 2.0); constexpr Line shadow20Line2pt = Line (Color (0.0, 0.0, 0.0, 0.2), 2.0); } #endif /* BSTYLES_LINE_HPP_ */ src/BWidgets/BUtilities/000077500000000000000000000000001515163050000154265ustar00rootroot00000000000000src/BWidgets/BUtilities/Any.hpp000066400000000000000000000074301515163050000166720ustar00rootroot00000000000000/* Any.hpp * Copyright (C) 2019 - 2023 Sven Jähnichen * * 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 . */ #ifndef BUTILITIES_ANY_HPP_ #define BUTILITIES_ANY_HPP_ #include #include namespace BUtilities { /** * @brief Container to type-safely take up the content of any copy * constructible type. * * @note Similar classes are in the std (C++>=17) and boost. */ class Any { protected: struct Envelope { virtual ~Envelope () {} virtual Envelope* clone () {return new Envelope (*this);} }; template struct Data : Envelope { Data (const T& t) : data (t) {} virtual ~Data () {} virtual Envelope* clone () override {return new Data (*this);} T data; }; Envelope* dataptr_ = nullptr; size_t dataTypeHash_ = typeid (void).hash_code (); Envelope* clone () const { if (dataptr_ == nullptr) return nullptr; return dataptr_->clone (); } public: /** * @brief Constructs an empty Any object. * */ Any () {} /** * @brief Constructs a new Any object from another object. * @param that Other object. */ Any (const Any& that) : dataTypeHash_ (that.dataTypeHash_) {dataptr_ = that.clone ();} ~Any () {if (dataptr_) delete dataptr_;} /** * @brief Copy assigns to the content of another object. * @param that Other object. * @return Content of this object. */ Any& operator= (const Any& that) { if (dataptr_) delete dataptr_; dataptr_ = that.clone (); dataTypeHash_ = that.dataTypeHash_; return *this; } /** * @brief Gets the hash code of the containing data. * @return Hash code. */ size_t dataTypeHash () const {return dataTypeHash_;} /** * @brief Sets the content of this Any object. * @tparam T Data type of the content. * @param t Data. */ template void set (const T& t) { if (dataptr_) delete dataptr_; dataptr_ = new Data (t); dataTypeHash_ = typeid (T).hash_code (); } /** * @brief Gets the content of this Any object. * @tparam T Data type of the content. * @return Containing data or default constructed data object if * data types don't match. */ template T get () const { if ((!dataptr_) || (typeid (T).hash_code () != dataTypeHash_)) return T (); // Return () better throw exception return ((Data*)dataptr_)->data; } }; /** * @brief Creates and defines an Any object. * @tparam T Data type. * @param t Data. * @return Content of the created object. */ template Any makeAny (const T& t) { Any a; a.set (t); return a; } } #endif /* BUTILITIES_ANY_HPP_ */ src/BWidgets/BUtilities/Area.hpp000066400000000000000000000143271515163050000170160ustar00rootroot00000000000000/* Area.hpp * Beat / envelope shaper LV2 plugin * * Copyright (C) 2019 by Sven Jähnichen * * 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, 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. */ #ifndef BUTILITIES_AREA_HPP_ #define BUTILITIES_AREA_HPP_ #include "Point.hpp" namespace BUtilities { /** * @brief 2D coordinates of a rectangular area. * @tparam T Data type of the coordinates. */ template class Area { protected: Point p1, p2; public: /** * @brief Constructs a new %Area object with default (origin) * coordinates. */ Area () : Area (Point (), Point ()) {} /** * @brief Constructs a new %Area object from the provided coordinates * and extends. * @param x1 X origin. * @param y1 Y origin. * @param width %Area width. * @param height %Area height. */ Area (const T x1, const T y1, const T width, const T height) : Area (Point (x1, y1), Point (x1 + width, y1 + height)) {} /** * @brief Constructs a new %Area object from two provided Point * coordinates. * @param p1 First point. * @param p2 Second point. */ Area (const Point& p1, const Point& p2) : p1 (Point ((p1.x < p2.x ? p1.x : p2.x), (p1.y < p2.y ? p1.y : p2.y))), p2 (Point ((p1.x > p2.x ? p1.x : p2.x), (p1.y > p2.y ? p1.y : p2.y))) {} /** * @brief Gets the position of the %Area. * @return Position as Point coordinates. */ Point getPosition () const {return p1;} T getX () const {return p1.x;} T getY () const {return p1.y;} /** * @brief Gets the extends of the %Area. * @return Extends as Point extends. */ Point getExtends () const {return Point (p2.x - p1.x, p2.y - p1.y);} /** * @brief Gets the width of the %Area. * @return Width. */ T getWidth () const {return (p2.x - p1.x);} /** * @brief Gets the height of the %Area. * @return Height. */ T getHeight () const {return (p2.y - p1.y);} /** * @brief Moves the %Area horizontally. * @param x New X position. */ void setX (const T x) {moveTo (x, getY());} /** * @brief Moves the %Area vertically. * @param y New Y position. */ void setY (const T y) {moveTo (getX(), y);} /** * @brief Moves the %Area. * @param x New X position. * @param y New Y position. */ void moveTo (const T x, const T y) {moveTo (Point (x, y));} /** * @brief Moves the %Area. * @param position New position. */ void moveTo (const Point& position) { p2 = p2 - p1 + position; p1 = position; } /** * @brief Resizes the %Area horizontally. * @param width New width. */ void setWidth (const T width) {resize (width, getHeight());} /** * @brief Resizes the %Area vertically. * @param height New height. */ void setHeight (const T height) {resize (getWidth(), height);} /** * @brief Resizes the %Area. * @param width New width. * @param height New height. */ void resize (const T width, const T height) {resize (Point (width, height));} /** * @brief Resizes the %Area. * @param extends New extends. */ void resize (const Point& extends) {p2 = p1 + extends;} /** * @brief Tests if a Point is inside the %Area. * @param p Point. * @return True, if @a p is inside the %Area, otherwise false. */ bool contains (const Point& p) const { return ((p.x >= p1.x) && (p.x <= p2.x) && (p.y >= p1.y) && (p.y <= p2.y)); } /** * @brief Tests if another %Area is fully included this %Area. * @param ra Other %Area. * @return True, if @a ra is included this %Area, otherwise false. */ bool includes (const Area& ra) const { return ((ra.p1.x >= p1.x) && (ra.p1.y >= p1.y) && (ra.p2.x <= p2.x) && (ra.p2.y <= p2.y)); } /** * @brief Tests if another %Area overlaps this %Area. * @param ra Other %Area. * @return True, if @a ra overlaps this %Area, otherwise false. */ bool overlaps (const Area& ra) const { return !((ra.p2.x < p1.x) || (ra.p2.y < p1.y) || (ra.p1.x > p2.x) || (ra.p1.y > p2.y)); } /** * @brief Resizes this %Area to fully include another %Area. * @param ra Other %Area. */ void extend (const Area& ra) { if (ra != Area ()) { p1 = Point ((p1.x < ra.p1.x ? p1.x : ra.p1.x), (p1.y < ra.p1.y ? p1.y : ra.p1.y)); p2 = Point ((p2.x > ra.p2.x ? p2.x : ra.p2.x), (p2.y > ra.p2.y ? p2.y : ra.p2.y)); } } /** * @brief Changes this %Area to the intersaction of this and another * %Area. * @param ra Other %Area. */ void intersect (const Area& ra) { if ((*this == Area ()) || (ra == Area ()) || (!overlaps (ra))) *this = Area (); else { T x1 = (ra.p1.x < p1.x ? p1.x : ra.p1.x); T y1 = (ra.p1.y < p1.y ? p1.y : ra.p1.y); T x2 = (ra.p2.x > p2.x ? p2.x : ra.p2.x); T y2 = (ra.p2.y > p2.y ? p2.y : ra.p2.y); p1 = Point (x1, y1); p2 = Point (x2, y2); } } /** * @brief Resizes this %Area to fully include another %Area. * @param rhs Other %Area. * @return Result of %Area extention. */ Area& operator+= (const Area& rhs) { this->extend (rhs); return *this; } /** * @brief Changes this %Area to intersect with another %Area. * @param rhs Other %Area. * @return Result of %Area intersection. */ Area& operator*= (const Area& rhs) { this->intersect (rhs); return *this; } friend bool operator== (const Area& lhs, const Area& rhs) { return ((lhs.p1 == rhs.p1) && (lhs.p2 == rhs.p2)); } friend bool operator!= (const Area& lhs, const Area& rhs) {return !(lhs == rhs);} friend Area operator+ (Area lhs, const Area& rhs) {return (lhs += rhs);} friend Area operator* (Area lhs, const Area& rhs) {return (lhs *= rhs);} }; } #endif /* BUTILITIES_AREA_HPP_ */ src/BWidgets/BUtilities/Dictionary.cpp000066400000000000000000000116361515163050000202460ustar00rootroot00000000000000/* Dictionary.cpp * Copyright (C) 2022 - 2023 Sven Jähnichen * * 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 . */ #include "Dictionary.hpp" #include #include #include #include namespace BUtilities { //std::mutex Dictionary::mx_; void Dictionary::setLanguage (const std::string& language) { Dict& d = getDict(); //mx_.lock(); d.lang_ = language; //mx_.unlock(); } void Dictionary::add (const std::string& word, const std::string& language, const std::string& translation) { Dict& d = getDict(); //mx_.lock(); d.map_[word][language] = translation; //mx_.unlock(); } void Dictionary::add (const std::string& word, const std::vector>& translations) { Dict& d = getDict(); //mx_.lock(); for (const std::pair& t : translations) d.map_[word][t.first] = t.second; //mx_.unlock(); } void Dictionary::add (const std::vector>>>& translations) { Dict& d = getDict(); //mx_.lock(); for (const std::pair>>& w : translations) { for (const std::pair& t : w.second) d.map_[w.first][t.first] = t.second; } //mx_.unlock(); } void Dictionary::alsoUseCatalogue (const std::string& cat) { Dict& d = getDict(); //mx_.lock(); d.catalog_ = cat; //mx_.unlock(); } std::string Dictionary::get (const std::string& word) { Dict& d = getDict(); //mx_.lock(); std::string translation = ""; // Dictionary translation using full locale symbol std::map>::const_iterator it = d.map_.find (word); if (it != d.map_.end ()) { std::map::const_iterator it2 = (*it).second.find (d.lang_); if (it2 != (it)->second.end()) translation = (*it2).second; // Dictionary translation using language_territory from locale symbol if (translation == "") { const std::string lang_terr = d.lang_.substr(0, d.lang_.find_first_of(".")); for (std::map::const_iterator it3 = (*it).second.begin(); it3 !=(*it).second.end(); ++it3) { if (it3->first.find (lang_terr) == 0) { translation = (*it3).second; break; } } } // Dictionary translation using language only from locale symbol if (translation == "") { const std::string lang = d.lang_.substr(0, d.lang_.find_first_of("_")); for (std::map::const_iterator it4 = (*it).second.begin(); it4 !=(*it).second.end(); ++it4) { if (it4->first.find (lang) == 0) { translation = (*it4).second; break; } } } } // Full locale symbol-based dictionary translation if ((translation == "") && (d.catalog_ != "")) { std::locale loc (d.lang_); std::cout.imbue (loc); const std::messages& facet = std::use_facet>(loc); std::messages_base::catalog cat = facet.open (d.catalog_, loc); if (cat >= 0) translation = facet.get(cat, 0, 0, word); facet.close(cat); } // No translation found if (translation == "") translation = word; //mx_.unlock(); return translation; } std::map> Dictionary::makeMap () { std::vector>>> il = #ifdef BUTILITIES_DICTIONARY_DATAFILE #include BUTILITIES_DICTIONARY_DATAFILE #else {} #endif ; std::map> m; for (const std::pair>>& w : il) { for (const std::pair& t : w.second) m[w.first][t.first] = t.second; } return m; } Dictionary::Dict& Dictionary::getDict() { static Dict dictionaryDict_ = {Dictionary::makeMap(), BUTILITIES_DICTIONARY_LANGUAGE, BUTILITIES_DICTIONARY_EXTERNAL_CATALOGUE}; return dictionaryDict_; } }src/BWidgets/BUtilities/Dictionary.data000066400000000000000000000324361515163050000203760ustar00rootroot00000000000000{ { "All files", { {"de_DE", "Alle Dateien"}, {"es_ES", "Todos los archivos"}, {"fr_FR", "Tous les fichiers"}, {"it_IT", "Tutti i file"}, {"nl_NL", "Alle bestanden"}, {"pl_PL", "Wszystkie pliki"}, {"pt_BR", "Todos os arquivos"}, {"pt_PT", "Todos os ficheiros"}, {"ru_RU", "Ð’Ñе файлы"} } }, { "Apply", { {"de_DE", "Anwenden"}, {"es_ES", "Aplicar"}, {"fr_FR", "Appliquer"}, {"it_IT", "Applica"}, {"nl_NL", "Toepassen"}, {"pl_PL", "Zastosuj"}, {"pt_BR", "Aplicar"}, {"pt_PT", "Aplicar"}, {"ru_RU", "Применить"} } }, { "Cancel", { {"de_DE", "Abbrechen"}, {"es_ES", "Cancelar"}, {"fr_FR", "Annuler"}, {"it_IT", "Annulla"}, {"nl_NL", "Annuleren"}, {"pl_PL", "Anuluj"}, {"pt_BR", "Cancelar"}, {"pt_PT", "Cancelar"}, {"ru_RU", "Отмена"} } }, { "Can't create new folder", { {"de_DE", "Kann kein neues Verzeichnis erstellen"}, {"es_ES", "No se pudo crear carpeta"}, {"fr_FR", "Impossible de créer le nouveau dossier"}, {"it_IT", "Impossibile creare una nuova cartella"}, {"nl_NL", "Kan geen nieuwe map aanmaken"}, {"pl_PL", "Nie można utworzyć nowego folderu"}, {"pt_BR", "Não é possível criar nova pasta"}, {"ru_RU", "Ðе могу Ñоздать новую папку"} } }, { "Close", { {"de_DE", "Schließen"}, {"es_ES", "Cerrar"}, {"fr_FR", "Fermer"}, {"it_IT", "Chiudi"}, {"nl_NL", "Sluiten"}, {"pl_PL", "Zamknij"}, {"pt_BR", "Fechar"}, {"pt_PT", "Fechar"}, {"ru_RU", "Закрыть"} } }, { "Continue", { {"de_DE", "Weiter"}, {"es_ES", "Continuar"}, {"fr_FR", "Continuer"}, {"it_IT", "Procedere"}, {"nl_NL", "Doorgaan"}, {"pl_PL", "Kontynuować"}, {"pt_BR", "Continuar"}, {"pt_PT", "Continuar"}, {"ru_RU", "Продолжить"} } }, { "Copy", { {"de_DE", "Kopieren"}, {"es_ES", "Copiar"}, {"fr_FR", "Copier"}, {"it_IT", "Copia"}, {"nl_NL", "Kopiëren"}, {"pl_PL", "Kopiuj"}, {"pt_BR", "Copiar"}, {"pt_PT", "Copiar"}, {"ru_RU", "Копировать"} } }, { "Create", { {"de_DE", "Erstellen"}, {"es_ES", "Crear"}, {"fr_FR", "Créer"}, {"it_IT", "Crea"}, {"nl_NL", "Aanmaken"}, {"pl_PL", "Utwórz"}, {"pt_BR", "Criar"}, {"pt_PT", "Criar"}, {"ru_RU", "Создать"} } }, { "Create new folder", { {"de_DE", "Neues Verzeichnis erstellen"}, {"es_ES", "Crear carpeta"}, {"fr_FR", "Créer un nouveau dossier"}, {"it_IT", "Crea una nuova cartella"}, {"nl_NL", "Nieuwe map aanmaken"}, {"pl_PL", "Utwórz nowy folder"}, {"pt_BR", "Criar nova pasta"}, {"ru_RU", "Создать новую папку"} } }, { "Cut", { {"de_DE", "Ausschneiden"}, {"es_ES", "Cortar"}, {"fr_FR", "Couper"}, {"it_IT", "Taglia"}, {"nl_NL", "Knippen"}, {"pl_PL", "Wytnij"}, {"pt_BR", "Cortar"}, {"pt_PT", "Cortar"}, {"ru_RU", "Вырезать"} } }, { "C/C++ files", { {"de_DE", "C/C++-Dateien"}, {"es_ES", "Archivos C/C++"}, {"fr_FR", "Fichier C/C++"}, {"it_IT", "File C/C++"}, {"nl_NL", "C/C++ bestanden"}, {"pl_PL", "Pliki C/C++"}, {"pt_BR", "Arquivos C/C++"}, {"ru_RU", "C/С++ файлы "} } }, { "Delete", { {"de_DE", "Löschen"}, {"es_ES", "Borrar"}, {"fr_FR", "Supprimer"}, {"it_IT", "Elimina"}, {"nl_NL", "Verwijderen"}, {"pl_PL", "UsuÅ„"}, {"pt_BR", "Remover"}, {"pt_PT", "Excluir"}, {"ru_RU", "Удалить"} } }, { "Discard", { {"de_DE", "Verwerfen"}, {"es_ES", "Descartar"}, {"fr_FR", "Annuler"}, {"it_IT", "Scarta"}, {"nl_NL", "Negeren"}, {"pl_PL", "Odrzuć"}, {"pt_BR", "Descartar"}, {"pt_PT", "Rejeitar"}, {"ru_RU", "ОтказатьÑÑ"} } }, { "Discard changes", { {"de_DE", "Änderungen verwerfen"}, {"es_ES", "Descartar cambios"}, {"fr_FR", "Annuler les changements"}, {"it_IT", "Scarta le modifiche"}, {"nl_NL", "Wijzigingen negeren"}, {"pl_PL", "Odrzuć zmiany i połącz ponownie"}, {"pt_BR", "Descartar mudanças"}, {"pt_PT", "Rejeitar mudanças"}, {"ru_RU", "ОтказатьÑÑ Ð¾Ñ‚ изменений"} } }, { "Done", { {"de_DE", "Fertig"}, {"es_ES", "Hecho"}, {"fr_FR", "Termine"}, {"it_IT", "Fatto"}, {"nl_NL", "Klaar"}, {"pl_PL", "Gotowe"}, {"pt_BR", "Concluído"}, {"pt_PT", "Concluído"}, {"ru_RU", "Готово"} } }, { "Edit", { {"de_DE", "Bearbeiten"}, {"es_ES", "Editar"}, {"fr_FR", "Modifier"}, {"it_IT", "Modifica"}, {"nl_NL", "Bewerken"}, {"pl_PL", "Edytuj"}, {"pt_BR", "Editar"}, {"pt_PT", "Editar"}, {"ru_RU", "Правка"} } }, { "Error", { {"de_DE", "Fehler"}, {"es_ES", "Error"}, {"fr_FR", "Erreur"}, {"it_IT", "Errore"}, {"nl_NL", "Fout"}, {"pl_PL", "Błąd"}, {"pt_BR", "Erro"}, {"pt_PT", "Erro"}, {"ru_RU", "Ошибка"} } }, { "Exit", { {"de_DE", "Beenden"}, {"es_ES", "Salir"}, {"fr_FR", "Quitter"}, {"it_IT", "Esci"}, {"nl_NL", "Afsluiten"}, {"pl_PL", "Wyjdź"}, {"pt_BR", "Sair"}, {"pt_PT", "Sair"}, {"ru_RU", "Выйти"} } }, { "File", { {"de_DE", "Datei"}, {"es_ES", "Archivo"}, {"fr_FR", "Fichier"}, {"it_IT", "File"}, {"nl_NL", "Bestand"}, {"pl_PL", "Plik"}, {"pt_BR", "Arquivo"}, {"pt_PT", "Ficheiro"}, {"ru_RU", "Файл"} } }, { "File already exists", { {"de_DE", "Datei existiert bereits"}, {"es_ES", "El archivo ya existe"}, {"fr_FR", "Le fichier existe déjà"}, {"it_IT", "Il file esiste già"}, {"nl_NL", "Bestand bestaat al"}, {"pl_PL", "Plik już istnieje"}, {"pt_BR", "Arquivo já existe"}, {"pt_PT", "Ficheiro já existente"}, {"ru_RU", "Файл уже ÑущеÑтвует"} } }, { "File not found", { {"de_DE", "Datei nicht gefunden"}, {"es_ES", "Archivo no encontrado"}, {"fr_FR", "Fichier non trouvé"}, {"it_IT", "File non trovato"}, {"nl_NL", "Bestand niet gevonden"}, {"pl_PL", "Plik nie zostaÅ‚ odnaleziony"}, {"pt_BR", "Arquivo não encontrado"}, {"pt_PT", "Ficheiro não encontrado"}, {"ru_RU", "Файл не найден"} } }, { "frames", { {"pl_PL", "ramek"}, {"pt_BR", "quadros"} } }, { "Image files", { {"de_DE", "Bilddateien"}, {"es_ES", "Archivos de imágenes"}, {"fr_FR", "Fichier d'images"}, {"it_IT", "File di immagine"}, {"nl_NL", "Afbeeldingsbestanden"}, {"pl_PL", "Pliki obrazów"}, {"pt_BR", "Arquivos de imagem"}, {"ru_RU", "Файлы изображений"} } }, { "No", { {"de_DE", "Nein"}, {"es_ES", "No"}, {"fr_FR", "Non"}, {"it_IT", "No"}, {"nl_NL", "Nee"}, {"pl_PL", "Nie"}, {"pt_BR", "Não"}, {"pt_PT", "Não"}, {"ru_RU", "Ðет"} } }, { "No audio file selected", { {"de_DE", "Keine Audiodatei ausgewählt"}, {"es_ES", "Ningún archivo de audio seleccionado"}, {"fr_FR", "Aucun fichier audio sélectionné "}, {"it_IT", "Nessun file audio selezionato"}, {"nl_NL", "Geen audiobestand geselecteerd"}, {"pl_PL", "Nie wybrano pliku audio"}, {"pt_BR", "Nenhum arquivo de áudio selecionado"}, {"ru_RU", "Ðудиофайл не выбран"} } }, { "No preview", { {"de_DE", "Keine Vorschau"}, {"es_ES", "No hay vista previa"}, {"fr_FR", "Pas d'aperçu"}, {"it_IT", "Nessuna anteprima"}, {"nl_NL", "Geen voorbeeldweergave"}, {"pl_PL", "Brak podglÄ…du"}, {"pt_BR", "Sem prévia"}, {"pt_PT", "Nenhuma antevisão"}, {"ru_RU", "Ðет предпроÑмотра"} } }, { "OK", { } }, { "Open", { {"de_DE", "Öffnen"}, {"es_ES", "Abrir"}, {"fr_FR", "Ouvrir"}, {"it_IT", "Apri"}, {"nl_NL", "Openen"}, {"pl_PL", "Otwórz"}, {"pt_br", "Abrir"}, {"pt_PT", "Abrir"}, {"ru_RU", "Открыть"} } }, { "Overwrite", { {"de_DE", "Überschreiben"}, {"es_ES", "Sobrescribir"}, {"fr_FR", "Ecraser"}, {"it_IT", "Sovrascrivi"}, {"nl_NL", "Overschrijven"}, {"pl_PL", "Nadpisz"}, {"pt_BR", "Sobrescrever"}, {"pt_PT", "Sobrepor"}, {"ru_RU", "Заменить"} } }, { "Play selection as loop", { {"de_DE", "Auswahl als Schleife spielen"}, {"es_ES", "Reproducir selección en bucle"}, {"fr_FR", "Jouer la sélection en boucle"}, {"it_IT", "Riproduci la selezione in un ciclo"}, {"nl_NL", "Selectie in een lus afspelen"}, {"pl_PL", "Odtwarzaj zaznaczenie w pÄ™tli"}, {"pt_BR", "Tocar seleção como loop"}, {"ru_RU", "ВоÑпроизведение Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð² цикле"} } }, { "Selection end", { {"de_DE", "Ende Auswahl"}, {"es_ES", "Final de la selección"}, {"fr_FR", "Fin de la sélection"}, {"it_IT", "Fine selezione"}, {"nl_NL", "Selectie einde"}, {"pl_PL", "Koniec zaznaczenia"}, {"pt_BR", "Final da seleção"}, {"pt_PT", "Fim da Seleção"}, {"ru_RU", "Конец выделениÑ"} } }, { "Selection start", { {"de_DE", "Anfang Auswahl"}, {"es_ES", "Inicio de la selección"}, {"fr_FR", "Début de la sélection"}, {"it_IT", "Inizio selezione"}, {"nl_NL", "Selectie begin"}, {"pl_PL", "PoczÄ…tek zaznaczenia"}, {"pt_BR", "Início da seleção"}, {"pt_PT", "Início da Seleção"}, {"ru_RU", "Ðачало выделениÑ"} } }, { "Sound files", { {"de_DE", "Sounddateien"}, {"es_ES", "Archivos de audio"}, {"fr_FR", "Fichier sons"}, {"it_IT", "File audio"}, {"nl_NL", "Geluidsbestanden"}, {"pl_PL", "Pliki dźwiÄ™kowe"}, {"pt_BR", "Arquivos de áudio"}, {"ru_RU", "Ðудиофайлы"} } }, { "Yes", { {"de_DE", "Ja"}, {"es_ES", "Sí"}, {"de_FR", "Oui"}, {"it_IT", "Sì"}, {"nl_NL", "Ja"}, {"pl_PL", "Tak"}, {"pt_BR", "Sim"}, {"pt_PT", "Sim"}, {"ru_RU", "Да"} } } } src/BWidgets/BUtilities/Dictionary.hpp000066400000000000000000000122651515163050000202520ustar00rootroot00000000000000/* Dictionary.hpp * Copyright (C) 2022 - 2023 Sven Jähnichen * * 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 . */ #ifndef BUTILITIES_DICTIONARY_HPP_ #define BUTILITIES_DICTIONARY_HPP_ #include #include #include #include #include #ifndef BUTILITIES_DICTIONARY_DATAFILE #define BUTILITIES_DICTIONARY_DATAFILE "Dictionary.data" #endif #ifndef BUTILITIES_DICTIONARY_LANGUAGE #define BUTILITIES_DICTIONARY_LANGUAGE std::locale("").name() #endif #ifndef BUTILITIES_DICTIONARY_EXTERNAL_CATALOGUE #define BUTILITIES_DICTIONARY_EXTERNAL_CATALOGUE "" #endif #ifndef BDICT #define BDICT(x) (BUtilities::Dictionary::get(x)) #endif namespace BUtilities { /** * @brief Map class to store and translate words for any language. * * Dictionary provides an addition and a shortcut to the system locale / * messages. It may store additional words and translations but it also allows * fallback access to the system provided vocabulary and translations. * * Additional vocabulary can be stored in the * @c BUTILITIES_DICTIONARY_DATAFILE (default "Dictionary.data") in the format: * @code {.cpp} * { { "Word or phrase1", { {"language_code1", "Translation1"}, {"language_code2", "Translation2"}, {...} } }, { ... } } * @endcode * with the language_code is represented as the full or partial POSIX locale * (language[_territory][.codeset][@modifier], e. g. "en_US.utf8"). * * To use an alternative dictionary, define the * @c BUTILITIES_DICTIONARY_DATAFILE variable prior the include of * %Dictionary. */ class Dictionary { protected: struct Dict { std::map> map_; std::string lang_; std::string catalog_; }; //static std::mutex mx_; public: Dictionary() = delete; /** * @brief Set the language for the global scope. * @param language Full or partial POSIX locale * (language[_territory][.codeset][@modifier], e. g. "en_US.utf8"). */ static void setLanguage (const std::string& language); /** * @brief Adds a word or a phrase to the dictionary. * @param word Word or phrase in english or word symbol. * @param language Full or partial POSIX locale * (language[_territory][.codeset][@modifier], e. g. "en_US.utf8"). * @param translation Translated word. */ static void add (const std::string& word, const std::string& language, const std::string& translation); /** * @brief Adds a word or a phrase to a dictionary. * @param word Word or phrase in english or word symbol. * @param translation Vector containing translations (language, * translation) for the @a word. */ static void add (const std::string& word, const std::vector>& translations); /** * @brief Adds a list of words or phrases to a dictionary. * @param translation Vector containing words (word or phrase in * english or word symbol, (language, translation)). */ static void add (const std::vector>>>& translations); /** * @brief Additionally use a GNU gettext message catalogue. * @param cat Catalogue name. * * Defines a GNU gettext message catalogue as a fallback if no * translation is provided in the dictionary. */ static void alsoUseCatalogue (const std::string& cat); /** * @brief Translates a word or a phrase from the dictionary to the * language of the globlal scope. * @param word Word or phrase in english or word symbol to be translated. * @return Translation. * * 1. Returns the translation for the full locale symbol stored * (e. g. "de_AT.utf8") if it exists, otherwise * 2. Returns the translation for the first matching language and * territory from the locale symbol (e. g. "de_AT") if it exists, * otherwise * 3. Returns the translation for the first matching language from the * locale symbol (e. g. any "de") if it exists, otherwise * 4. TODO: Return the system-provided translation for the full language * symbol, otherwise * 5. Returns @a word. */ static std::string get (const std::string& uri); private: static std::map> makeMap (); static Dict& getDict (); }; } #endif /* BUTILITIES_DICTIONARY_HPP_ */src/BWidgets/BUtilities/Path.hpp000066400000000000000000000053301515163050000170340ustar00rootroot00000000000000/* Path.hpp * Copyright (C) 2021 - 2023 Sven Jähnichen * * 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 PATH 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 . */ #ifndef BUTILITIES_PATH_HPP_ #define BUTILITIES_PATH_HPP_ #include #ifdef _WIN32 #define BUTILITIES_PATH_SLASH "\\" #else #define BUTILITIES_PATH_SLASH "/" #endif namespace BUtilities { class Path { public: Path () : dir_(), file_(), ext_() {} explicit Path (const std::string& path) {split (path);} Path& operator= (const std::string& path) { split (path); return *this; } operator std::string() const {return (dir().empty() || (dir() == BUTILITIES_PATH_SLASH) ? dir() : dir() + BUTILITIES_PATH_SLASH) + filename();} std::string dir() const {return dir_;} std::string filename() const {return file_ + (ext_.empty() ? "" : "." + ext_);} std::string ext() const {return ext_;} protected: std::string dir_; std::string file_; std::string ext_; void split (const std::string& path) { const size_t spos = path.find_last_of (BUTILITIES_PATH_SLASH); if (spos == std::string::npos) dir_ = ""; else if (spos == 0) dir_ = BUTILITIES_PATH_SLASH; else dir_ = path.substr (0, spos); file_ = path.substr (spos + 1); if (file_ == "") ext_ = ""; else if ((file_ == ".") || (file_ == "..")) { dir_ = (dir_.empty() || (dir_ == BUTILITIES_PATH_SLASH) ? dir_ : dir_ + BUTILITIES_PATH_SLASH) + file_; file_ = ""; ext_ = ""; } else { const size_t dpos = file_.find_last_of ("."); if ((dpos != std::string::npos) && (dpos != 0)) { ext_ = file_.substr (dpos + 1); file_ = file_.substr (0, dpos); } else ext_ = ""; } } }; } #endif /* BUTILITIES_PATH_HPP_ */ src/BWidgets/BUtilities/Point.hpp000066400000000000000000000070571515163050000172410ustar00rootroot00000000000000/* Point.hpp * Beat / envelope shaper LV2 plugin * * Copyright (C) 2019 by Sven Jähnichen * * 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, 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. */ #ifndef BUTILITIES_POINT_HPP_ #define BUTILITIES_POINT_HPP_ #include namespace BUtilities { /** * @brief 2D %Point coordinates. * @tparam T Data type of the coordinates. */ template struct Point { T x, y; /** * @brief Constructs a new %Point object with default (origin) * coordinates. */ constexpr Point () : Point (T(), T()) {} /** * @brief Constructs a new %Point object from provided coordinates. * @param x X coordninate. * @param y Y coordninate. */ constexpr Point (const T x, const T y) : x (x), y (y) {} /** * @brief 2D Vector addition of %Point coordinates. * @param rhs Other point. * @return Result of 2D vector addition. */ Point& operator+= (const Point& rhs) { this->x += rhs.x; this->y += rhs.y; return *this; } /** * @brief 2D Vector subtraction of %Point coordinates. * @param rhs Other point. * @return Result of 2D vector subtraction. */ Point& operator-= (const Point& rhs) { this->x -= rhs.x; this->y -= rhs.y; return *this; } /** * @brief Scalar multiplication of %Point coordinates. * @param rhs Factor. * @return Result of scalar multiplication. */ Point& operator*= (const T rhs) { this->x *= rhs; this->y *= rhs; return *this; } /** * @brief Scalar division of %Point coordinates. * @param rhs Divisor. * @return Result of scalar division. */ Point& operator/= (const T rhs) { this->x /= rhs; this->y /= rhs; return *this; } friend bool operator== (const Point& lhs, const Point& rhs) {return ((lhs.x == rhs.x) && (lhs.y == rhs.y));} friend bool operator!= (const Point& lhs, const Point& rhs) {return !(lhs == rhs);} friend Point operator+ (Point lhs, const Point& rhs) {return (lhs += rhs);} friend Point operator- (Point lhs, const Point& rhs) {return (lhs -= rhs);} friend Point operator* (Point lhs, const T rhs) {return (lhs *= rhs);} friend Point operator* (const T lhs, Point rhs) {return (rhs *= lhs);} friend Point operator/ (Point lhs, const T rhs) {return (lhs /= rhs);} /** * @brief Gets the length of an (Euklidean) vector from the origin (0, 0) * to this %Point. * @return Length. */ constexpr T length () const { return sqrt (this->x * this->x + this->y * this->y); } /** * @brief Gets a normalized %Point with a distance from origin (0, 0) of * 1. * @return Normalized %Point. */ Point normalize () const { return *this / length (); } /** * @brief Gets a normalized %Point with a distance from origin (0, 0) of * @a dist. * @param dist Distance from origin. * @return Normalized %Point. */ Point normalize (const T dist) const { return *this * dist / length (); } }; } #endif /* BUTILITIES_POINT_HPP_ */ src/BWidgets/BUtilities/Property.hpp000066400000000000000000000043641515163050000177720ustar00rootroot00000000000000/* Property.hpp * Copyright (C) 2021 - 2023 Sven Jähnichen * * 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 . */ #ifndef BUTILITIES_PROPERTY_HPP_ #define BUTILITIES_PROPERTY_HPP_ #include namespace BUtilities { /** * @brief %Properties are data assigned to an identifier. * @tparam Tid Type of the identifier. * @tparam Tdata Type of the assigned @a data. * * A property is a data pair and consists of a constant @a ID and the assigned * @a data. It can only be set upon construction. No change, no assignment. */ template class Property : public std::pair { protected: public: /** * @brief Creates a %Property. * @param id Unique identifier for the @a data. * @param data New @a data to be stored inside the %Property. Data * MUST be copy assignable. * * Properties can only be created. Not assigned. Once a %Property is * created, its @a id can't be changed anymore. */ constexpr Property (const Tid& id, const Tdata& data) : std::pair (id, data) { } Property& operator= (const Property& that) = delete; /** * @brief Access to the %Property @a data. * @return %Property data. */ virtual Tdata& data () {return std::pair::second;} virtual const Tdata& data () const {return std::pair::second;} /** * @brief Returns the %Property identifier. * @return %Property identifier. */ virtual Tid getId () const {return std::pair::first;} }; } #endif /* BUTILITIES_PROPERTY_HPP_ */src/BWidgets/BUtilities/README.md000066400000000000000000000045461515163050000167160ustar00rootroot00000000000000# BUtilities Contains a collection of different useful C and C++ tools. ## Classes ``` () ├── Any ├── Area ├── cairoplus | ├── cairoplus_rgba | ╰── cairoplus_text_decorations ├── Dictionary ├── Point ├── Property ╰── URID ``` ### Any Container to type-safely take up the content of any copy constructible type. Similar classes are in the std (C++>=17) and boost. ### Area \ 2D coordinates of a rectangular area. ### cairoplus C extension to the Cairo package. ### cairoplus_rgba RGBA colors. ### cairoplus_text_decorations Contains the font family, the font size, the font slant and the font weight. ### Dictionary Dictionary provides an addition and a shortcut to the system locale / messages. It may store additional words and translations but it also allows fallback access to the system provided vocabulary and translations. Additional vocabulary can be stored in the `BUTILITIES_DICTIONARY_DATAFILE` (default "Dictionary.data") in the format (example): ``` { { "Yes", { {"de_DE", "Ja"}, {"fr_FR", "Oui"} } }, { "No", { {"de_DE", "Nein"}, {"fr_FR", "Non"} } } } ``` with the language_code is represented as the full or partial POSIX locale (language[_territory][.codeset][@modifier], e. g. "en_US.utf8"). To use an alternative dictionary, define the `BUTILITIES_DICTIONARY_DATAFILE` variable prior to the *compiling* of the Dictionary. Or add translations at runtime using `add()`. Or include a GNU gettext message catalogue (.mo) as fallback using `alsoUseCatalogue()`. ### Point \ 2D Point coordinates. ### Property \ A Property is a data pair and consists of a constant @a ID and the assigned @a data. It can only be set upon construction. No change, no assignment. ### URID Map class to store and convert URIs. ## Functions ### stof Converts a floating point number-containing string to a float value. Similar to std::stof. But this method is tolerant over different types of decimal signs (point / comma). ### to_string Converts a floaing point number into a string output with a defined format. Similar to std::to_string. But the format specifier @a format allows a formatted value output. ### mix Mixes two values in a given ratio.src/BWidgets/BUtilities/Urid.cpp000066400000000000000000000040551515163050000170410ustar00rootroot00000000000000/* Urid.cpp * Copyright (C) 2021 - 2023 Sven Jähnichen * * 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 . */ #include "Urid.hpp" #include #include #include #include namespace BUtilities { uint32_t Urid::add (const std::string& uri) { UridMap& uridMap = getUridMap (); //mx_.lock(); if (uri != "") uridMap.map_[uri] = uridMap.count_; else uridMap.map_[std::string (BUTILITIES_URID_ANONYMOUS_URI) + "_" + std::to_string (uridMap.count_)] = uridMap.count_; //mx_.unlock(); return uridMap.count_++; } std::string Urid::uri (const uint32_t urid) { UridMap& uridMap = getUridMap (); //mx_.lock(); std::string uristr = ""; for (std::map::const_iterator it = uridMap.map_.begin(); it != uridMap.map_.end(); ++it) { if (it->second == urid) { uristr = it->first; break; } } //mx_.unlock(); return uristr; } uint32_t Urid::urid (const std::string& uri) { UridMap& uridMap = getUridMap (); //mx_.lock(); std::map::const_iterator it = uridMap.map_.find (uri); if (it != uridMap.map_.end ()) { const uint32_t id = it->second; //mx_.unlock(); return id; } //mx_.unlock(); return add (uri); } Urid::UridMap& Urid::getUridMap () { static UridMap uridMap_ = {{{BUTILITIES_URID_UNKNOWN_URI, BUTILITIES_URID_UNKNOWN_URID}}, 1}; return uridMap_; } }src/BWidgets/BUtilities/Urid.hpp000066400000000000000000000052401515163050000170430ustar00rootroot00000000000000/* Urid.hpp * Copyright (C) 2021 - 2023 Sven Jähnichen * * 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 . */ #ifndef BUTILITIES_URID_HPP_ #define BUTILITIES_URID_HPP_ #include #include #include #include #ifndef BUTILITIES_URID_URI #define BUTILITIES_URID_URI "https://github.com/sjaehn/BWidgets/BUtilities/Urid.hpp" #endif #ifndef BUTILITIES_URID_UNKNOWN_URI #define BUTILITIES_URID_UNKNOWN_URI BUTILITIES_URID_URI "#Unknown" #endif #ifndef BUTILITIES_URID_UNKNOWN_URID #define BUTILITIES_URID_UNKNOWN_URID 0 #endif #ifndef BUTILITIES_URID_ANONYMOUS_URI #define BUTILITIES_URID_ANONYMOUS_URI BUTILITIES_URID_URI "#Anonymous" #endif #ifndef BURI #define BURI(x) (BUtilities::Urid::uri (x)) #endif #ifndef BURID #define BURID(x) (BUtilities::Urid::urid (x)) #endif namespace BUtilities { /** * @brief Map class to store and convert URIs. */ class Urid { protected: struct UridMap { std::map map_; uint32_t count_; }; //static std::mutex mx_; public: Urid() = delete; /** * @brief Adds an URI (if not exists before). * @param uri URI. * @return URID. */ static uint32_t add (const std::string& uri); /** * @brief Converts an URI to an URID. * @param uri URI. * @return URID. * * Adds the URI if not exists before. * If no URI is provided (uri = ""), then BUTILITIES_URID_ANONYMOUS_URI + "_" and * the next free URID number is used. */ static uint32_t urid (const std::string& uri); /** * @brief Converts an URID to an URI. * @param urid URID. * @return URI, or an empty string if the URID didn't exist before. */ static std::string uri (const uint32_t urid); private: /** * @brief Get the internal (static) URID map as a reference. * * @return Reference to the internal static UridMap_ object. * * Also initializes the internal static UridMap_ object. */ static UridMap& getUridMap (); }; } #endif /* BUTILITIES_URID_HPP_ */src/BWidgets/BUtilities/cairoplus.c000066400000000000000000000111331515163050000175720ustar00rootroot00000000000000/* cairoplus.c * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #include "cairoplus.h" #ifndef PI #define PI 3.14159265 #endif #ifndef FABS #define FABS(x) (x < 0 ? -x : x) #endif void cairoplus_rectangle_rounded (cairo_t* cr, double x, double y, double width, double height, double radius, uint8_t corners) { if (radius == 0.0) { cairo_rectangle (cr, x, y, width, height); } else { radius = FABS (radius); if (width < 0) { width = FABS (width); x = x - width; } if (height < 0) { height = FABS (height); y = y - height; } cairo_new_sub_path (cr); if (corners & 1) cairo_arc (cr, x + radius, y + radius, radius, -PI, -0.5 * PI); else cairo_move_to (cr, x, y); if (corners & 2) cairo_arc (cr, x + width - radius, y + radius, radius, -0.5 * PI, 0); else cairo_line_to (cr, x + width, y); if (corners & 4) cairo_arc (cr, x + width - radius, y + height - radius, radius, 0, 0.5 * PI); else cairo_line_to (cr, x + width, y + height); if (corners & 8) cairo_arc (cr, x + radius, y + height - radius, radius, 0.5 * PI, PI); else cairo_line_to (cr, x, y + height); cairo_close_path (cr); } } cairo_surface_t* cairoplus_image_surface_clone_from_image_surface (cairo_surface_t* sourceSurface) { cairo_surface_t* targetSurface = NULL; if (sourceSurface && (cairo_surface_status (sourceSurface) == CAIRO_STATUS_SUCCESS)) { cairo_format_t format = cairo_image_surface_get_format (sourceSurface); int width = cairo_image_surface_get_width (sourceSurface); int height = cairo_image_surface_get_height (sourceSurface); targetSurface = cairo_image_surface_create (format, width, height); cairo_t* cr = cairo_create (targetSurface); if (targetSurface && (cairo_surface_status (targetSurface) == CAIRO_STATUS_SUCCESS)) { if (cr && (cairo_status (cr) == CAIRO_STATUS_SUCCESS)) { cairo_set_source_surface (cr, sourceSurface, 0, 0); cairo_paint (cr); cairo_destroy (cr); } } } return targetSurface; } void cairoplus_surface_clear (cairo_surface_t* surface) { cairo_t* cr = cairo_create (surface); if (cr && (cairo_status (cr) == CAIRO_STATUS_SUCCESS)) { cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.0); cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); cairo_paint (cr); cairo_destroy (cr); } } char cairo_nil_text[1] = ""; char* cairoplus_create_text_fitted (cairo_t* cr, double width, cairoplus_text_decorations decorations, char* text) { size_t text_len = strlen (text); if (text_len) { char* output = (char*) malloc (text_len + 1); if (output) { if (cr && (! cairo_status (cr))) { cairo_save (cr); cairo_text_extents_t ext; cairo_select_font_face (cr, decorations.family, decorations.slant, decorations.weight); cairo_set_font_size (cr, decorations.size); // First look for \n (or end of string) size_t pos = strcspn (text, "\n"); // Text stupidly starts with \n? if (pos == 0) output[0] = '\0'; else { strncpy (output, text, pos); output[pos] = '\0'; cairo_text_extents (cr, output, &ext); // Text too long? Scan for spaces. if (ext.width > width) { while ((ext.width > width) && strrchr(output, ' ')) { pos = (size_t) (strrchr(output, ' ') - output); output[pos] = '\0'; cairo_text_extents (cr, output, &ext); } // Still too long? Hard break within a word. At least one char. if (ext.width > width) { while ((ext.width > width) && (strlen (output) > 1)) { pos = strlen (output) - 1; output[pos] = '\0'; cairo_text_extents (cr, output, &ext); } // Fix: Don't loose the first char after line break. pos = pos - 1; } } } cairo_restore (cr); if (pos < text_len) memmove (text, text + pos + 1, text_len - pos); else text[0] = '\0'; return output; } else free (output); } } return cairo_nil_text; } void cairoplus_text_destroy (char* text) { if (text && (text != cairo_nil_text)) free (text); } src/BWidgets/BUtilities/cairoplus.h000066400000000000000000000056111515163050000176030ustar00rootroot00000000000000/* cairoplus.h * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BUTILITIES_CAIROPLUS_H_ #define BUTILITIES_CAIROPLUS_H_ #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ typedef struct { double red; double green; double blue; double alpha; } cairoplus_rgba; typedef struct { char family[64]; double size; cairo_font_slant_t slant; cairo_font_weight_t weight; } cairoplus_text_decorations; /** * @brief Draws a rectangle with selected rounded edges. * @param cr Cairo context. * @param x X coordinate upper right. * @param y Y coordinate upper right. * @param width Rectangle width. * @param height Rectangle height. * @param radius Radius of edges. * @param corners Optional, bits set for the corners with rounded edges in * clockwise direction starting with upper right. */ void cairoplus_rectangle_rounded (cairo_t* cr, double x, double y, double width, double height, double radius, uint8_t corners); /** * @brief Creates a new Cairo image surface and copies the content from a * source Cairo image surface. * @param sourceSurface Source Cairo (image) surface. * @return Created new Cairo image surface. */ cairo_surface_t* cairoplus_image_surface_clone_from_image_surface (cairo_surface_t* sourceSurface); /** * @brief Clears a Cairo surface. * @param surface Cairo surface. */ void cairoplus_surface_clear (cairo_surface_t* surface); /** * @brief Splits off a text that fits within an output area defined by its * width. * @param cr Cairo context. * @param decorations Cairo plus font decorations. * @param text Text to be parsed. The output text will be clipped off * and thus the text will be shortened. * @return New created output text. Note, it will never return NULL. * If memory allocation fails, a pointer to a nil text will be returned. */ char* cairoplus_create_text_fitted (cairo_t* cr, double width, cairoplus_text_decorations decorations, char* text); /** * @brief Destroys a Cairo plus text and frees memory. * @param text Cairo plus text. */ void cairoplus_text_destroy (char* text); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* BUTILITIES_CAIROPLUS_H_ */ src/BWidgets/BUtilities/mix.hpp000066400000000000000000000022031515163050000167310ustar00rootroot00000000000000/* mix.hpp * Copyright (C) 2020 - 2023 Sven Jähnichen * * 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 . */ #ifndef BUTILITIES_MIX_HPP_ #define BUTILITIES_MIX_HPP_ namespace BUtilities { /** * @brief Mixes two values in a given ratio. * @tparam T Value type. * @param t0 First value. * @param t1 Second value. * @param ratio Ratio. * @return T Mixed value. */ template inline T mix (const T& t0, const T& t1, const double ratio) { return t1 * ratio + t0 * (1.0 - ratio); } } #endif /* BUTILITIES_MIX_HPP_ */ src/BWidgets/BUtilities/sto.hpp000066400000000000000000000056071515163050000167540ustar00rootroot00000000000000/* sto.hpp * Copyright (C) 2020 - 2026 Sven Jähnichen * * 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 . */ #ifndef BUTILITIES_STO_HPP_ #define BUTILITIES_STO_HPP_ #include #include namespace BUtilities { /** * @brief Converts a floating point number-containing string to a * foloating point value of the respective type. * @param str Floating point number-containing string. * @param idx Index of the first character after the converted floating * point number. * @return Converted floating point value. * @throw std::invalid_argument Throws an exception if @a str doesn't start * with a number. * * Similar to std::sto(f/d/...). But this method is tolerant over different * types of decimal signs (point / comma). */ template inline T sto (const std::string& str, size_t* idx = 0); template inline T sto (const std::string& str, size_t* idx) { const std::string numbers = "0123456789"; bool isNumber = false; T sign = 1.0f; T predec = 0.0f; T dec = 0.0f; T decfac = 0.1f; size_t i = 0; // Ignore spaces before while (str[i] == ' ') ++i; // Check sign if ((str[i] == '+') || (str[i] == '-')) { if (str[i] == '-') sign = -1.0; ++i; } // Interpret pre-decimal digits while ((str[i] != 0) && (numbers.find_first_of (str[i]) != std::string::npos)) { predec = predec * 10.0 + str[i] - '0'; ++i; isNumber = true; } // Check decimal sign if ((str[i] == '.') || (str[i] == ',')) { ++i; // Interpret decimal digits while ((str[i] != 0) && (numbers.find_first_of (str[i]) != std::string::npos)) { dec += (str[i] - '0') * decfac; decfac *= 0.1; ++i; isNumber = true; } } // Communicate next position if (idx != nullptr) *idx = i; // Not a number: invalid argument exception if (!isNumber) throw std::invalid_argument (str + " is not a number"); return sign * (predec + dec); } } #endif /* BUTILITIES_STO_HPP_ */ src/BWidgets/BUtilities/stof.hpp000066400000000000000000000055131515163050000171160ustar00rootroot00000000000000/* stof.hpp * Copyright (C) 2020 - 2023 Sven Jähnichen * * 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 . */ #ifndef BUTILITIES_STOF_HPP_ #define BUTILITIES_STOF_HPP_ #include #include namespace BUtilities { /** * @brief Converts a floating point number-containing string to a float * value. * @param str Floating point number-containing string. * @param idx Index of the first character after the converted floating * point number. * @return Converted float value. * @throw std::invalid_argument Throws an exception if @a str doesn't start * with a number. * * Similar to std::stof. But this method is tolerant over different types * of decimal signs (point / comma). */ float stof (const std::string& str, size_t* idx = 0); inline float stof (const std::string& str, size_t* idx) { const std::string numbers = "0123456789"; bool isNumber = false; float sign = 1.0f; float predec = 0.0f; float dec = 0.0f; float decfac = 0.1f; size_t i = 0; // Ignore spaces before while (str[i] == ' ') ++i; // Check sign if ((str[i] == '+') || (str[i] == '-')) { if (str[i] == '-') sign = -1.0f; ++i; } // Interpret pre-decimal digits while ((str[i] != 0) && (numbers.find_first_of (str[i]) != std::string::npos)) { predec = predec * 10.0f + str[i] - '0'; ++i; isNumber = true; } // Check decimal sign if ((str[i] == '.') || (str[i] == ',')) { ++i; // Interpret decimal digits while ((str[i] != 0) && (numbers.find_first_of (str[i]) != std::string::npos)) { dec += (str[i] - '0') * decfac; decfac *= 0.1f; ++i; isNumber = true; } } // Communicate next position if (idx != nullptr) *idx = i; // Not a number: invalid argument exception if (!isNumber) throw std::invalid_argument (str + " is not a number"); return sign * (predec + dec); } } #endif /* BUTILITIES_STOF_HPP_ */ src/BWidgets/BUtilities/strip.hpp000066400000000000000000000031361515163050000173030ustar00rootroot00000000000000/* strip.hpp * Copyright (C) 2020 - 2026 Sven Jähnichen * * 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 . */ #ifndef BUTILITIES_STRIP_HPP_ #define BUTILITIES_STRIP_HPP_ #include #include namespace BUtilities { /** * @brief Strips all leading whitespaces. * @param s String. */ inline void lstrip(std::string& s) { s.erase ( s.begin(), std::find_if(s.begin(), s.end(), [](unsigned char ch) {return !std::isspace(ch); })); } /** * @brief Strips all tailing whitespaces. * @param s String. */ inline void rstrip(std::string& s) { s.erase ( std::find_if(s.rbegin(), s.rend(), [](unsigned char ch) {return !std::isspace(ch); }).base(), s.end()); } /** * @brief Strips whitespaces from both sides. * @param s String. */ inline void strip(std::string& s) { lstrip(s); rstrip(s); } } #endif /* BUTILITIES_STRIP_HPP_ */ src/BWidgets/BUtilities/to_string.hpp000066400000000000000000000026741515163050000201600ustar00rootroot00000000000000/* to_string.hpp * Copyright (C) 2019 - 2023 Sven Jähnichen * * 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 . */ #ifndef BUTILITIES_TO_STRING_HPP_ #define BUTILITIES_TO_STRING_HPP_ #include #include namespace BUtilities { /** * @brief Converts a floaing point number into a string output with a * defined format. * @param value Floating point number. * @param format Format specifier, see printf. * @return Converted number as a string. * * Similar to std::to_string. But the format specifier @a format allows a * formatted value output. */ std::string to_string (const double value, std::string format = "%f"); inline std::string to_string (const double value, std::string format) { char c[64]; snprintf (c, 64, format.c_str (), value); std::string str = c; return c; } } #endif /* BUTILITIES_TO_STRING_HPP_ */ src/BWidgets/BUtilities/vsystem.cpp000066400000000000000000000020541515163050000176450ustar00rootroot00000000000000/* vsystem.cpp * Copyright (C) 2021 - 2023 Sven Jähnichen * * 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 . */ #include "vsystem.hpp" #include #include namespace BUtilities { [[noreturn]] static void vexec (char* argv[]) { execvp (argv[0], argv); perror ("execvp"); _exit (1); } int vsystem (char* argv[]) { pid_t pid = vfork(); if (pid != 0) return pid; vexec (argv); return 0; } } src/BWidgets/BUtilities/vsystem.hpp000066400000000000000000000015521515163050000176540ustar00rootroot00000000000000/* vsystem.hpp * Copyright (C) 2021 - 2023 Sven Jähnichen * * 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 . */ #ifndef BUTILITIES_VSYSTEM_HPP_ #define BUTILITIES_VSYSTEM_HPP_ namespace BUtilities { int vsystem (char* argv[]); } #endif /* BUTILITIES_VSYSTEM_HPP_ */ src/BWidgets/BWidgets/000077500000000000000000000000001515163050000150615ustar00rootroot00000000000000src/BWidgets/BWidgets/Box.hpp000066400000000000000000000444231515163050000163310ustar00rootroot00000000000000/* Box.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_BOX_HPP_ #define BWIDGETS_BOX_HPP_ #include "Frame.hpp" #include "TextButton.hpp" #include "../BDevices/Keys.hpp" #include "../BEvents/KeyEvent.hpp" #include "Supports/KeyPressable.hpp" #include "Supports/ValueableTyped.hpp" #include "Supports/Closeable.hpp" #include "Supports/Clickable.hpp" #include "Supports/Navigatable.hpp" #include #include #include #include #ifndef BWIDGETS_DEFAULT_BOX_WIDTH #define BWIDGETS_DEFAULT_BOX_WIDTH 200.0 #endif #ifndef BWIDGETS_DEFAULT_BOX_HEIGHT #define BWIDGETS_DEFAULT_BOX_HEIGHT 60.0 #endif #ifndef BWIDGETS_DEFAULT_MENU_PADDING #define BWIDGETS_DEFAULT_MENU_PADDING 20.0 #endif namespace BWidgets { /** * @brief Composite widget with buttons. * * %Box is a composite Widget based on Frame and contains TextButtons. It * also supports Valueable, KeyPressable, Clickable and Closeable. The default * value of the Box is 0 and changes upon pressing one of the containing text * buttons. On pressing one of the buttons, the widget value is set to the * button index (starting) with 1 and a CloseRequestEvent is emitted. */ class Box : public Frame, public ValueableTyped, public KeyPressable, public Closeable, public Clickable, public Navigatable { protected: TextButton okButton_; std::vector buttons_; public: /** * @brief Constructs a default %Box object. */ Box (); /** * @brief Construct a default %Box object. * @param URID URID. * @param title %Widget title. * * The box only hosts an OK button if no button labels are provided. */ Box (const uint32_t urid, const std::string& title); /** * @brief Construct a %Box object with default size. * @param buttonlabels Initializer list with butten label strings. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). * * The box only hosts an OK button if no button labels are provided. */ Box (const std::initializer_list& buttonlabels, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Construct a %Box object. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param buttonlabels Initializer list with butten label strings. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). * * The box only hosts an OK button if no button labels are provided. */ Box (const double x, const double y, const double width, const double height, const std::initializer_list& buttons = {}, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); virtual ~Box (); /** * @brief Creates a clone of the %Box. * @return Pointer to the new %Box. * * Creates a clone of this %Box by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %Box. * @param that Other %Box. * * Copies all properties from another %Box. But NOT its linkage. */ void copy (const Box* that); /** * @brief Optimizes the %Box widget extends. */ virtual void resize () override; /** * @brief Resizes the object. * @param width New object width. * @param height New object height. */ virtual void resize (const double width, const double height) override; /** * @brief Resizes the object. * @param extends New object extends. */ virtual void resize (const BUtilities::Point<> extends) override; /** * @brief Creates and adds a TextButton to the message box. * @param label Label text string of the new button. * * Buttons are added in the order left to right. */ virtual void addButton (const std::string& label); /** * @brief Creates and adds a series of TextButtons to the message box. * @param label Initializer list with label text strings of the new * buttons. * * Buttons are added in the order left to right. */ virtual void addButton (std::initializer_list labels); /** * @brief Removes and deletes a button. * @param label Label text of the button to be removed. * * If there is more than one button with this label text, only the first * one will be removed and deleted. The internal OK button can only be * removed but not deleted. Removing may cause renumbering of the buttons. */ virtual void removeButton (const std::string& label); /** * @brief Removes and deletes a button. * @param index Index of the button to be removed. * * The internal OK button can only be removed but not deleted. Removing * may cause renumbering of the buttons. */ virtual void removeButton (const size_t index); /** * @brief Gets the index of the button. * @param label Label text string of the button. * @return Number of the first button with the same label text string * as @a label. * * The index is the button number from left to right starting with 1. 0 is * returned, if there is no button with this label text. */ size_t getButtonIndex (const std::string& label) const; /** * @brief Gets the text of a button. * @param index Index of the button. * @return Button label string. * * The index is the button number from left to right starting with 1. */ std::string getButtonText (const size_t index) const; /** * @brief Sets the background colors Property. * @param colors Background ColorMap. * * Sets the base level background colors Property using the default * background colors URID. */ virtual void setBgColors (const BStyles::ColorMap& colors) override; /** * @brief Enters this %Box. * * Activates this %Box, takes over keyboard control, and calls to leave * all other widgets linked to the main Window to become the only entered * Widget. */ virtual void enter () override; /** * @brief Leaves this %Box * * De-activates this %Box, resets navigation and release keyboard conrol. */ virtual void leave () override; /** * @brief Method to be called following an object state change. */ virtual void update () override; /** * @brief Method called when pointer button clicked (pressed and * released). * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button cklicked. By default, it enters this %Box and * calls its static callback function. */ virtual void onButtonClicked (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyPressEvent is * received. * @param event Passed Event. * * Method called from the main window event scheduler if a * key is pressed. It activates the previous previous / next button and * calls its static callback function. */ virtual void onKeyPressed (BEvents::Event* event) override; protected: static void buttonClickCallback (BEvents::Event* event); }; inline Box::Box () : Box (0.0, 0.0, BWIDGETS_DEFAULT_BOX_WIDTH, BWIDGETS_DEFAULT_BOX_HEIGHT, {}, BUTILITIES_URID_UNKNOWN_URID, "") { } inline Box::Box (const uint32_t urid, const std::string& title) : Box (0.0, 0.0, BWIDGETS_DEFAULT_BOX_WIDTH, BWIDGETS_DEFAULT_BOX_HEIGHT, {}, urid, title) { } inline Box::Box (const std::initializer_list& buttonlabels, uint32_t urid, std::string title) : Box (0, 0, BWIDGETS_DEFAULT_BOX_WIDTH, BWIDGETS_DEFAULT_BOX_HEIGHT, buttonlabels, urid, title) { } inline Box::Box (const double x, const double y, const double width, const double height, const std::initializer_list& buttonlabels, uint32_t urid, std::string title) : Frame (x, y, width, height, urid, title), ValueableTyped (0), KeyPressable(), Closeable(), Clickable(), Navigatable(), okButton_ ("OK", false, false, BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/button")), buttons_() { setActivatable(true); setEnterable(true); setKeyPressable(false); if (buttonlabels.begin() != buttonlabels.end()) addButton (buttonlabels); // Fallback default OK button if (buttons_.empty()) { okButton_.setActivatable(true); okButton_.setEnterable(true); okButton_.setCallbackFunction (BEvents::Event::EventType::valueChangedEvent, Box::buttonClickCallback); buttons_.push_back (&okButton_); add (&okButton_); } // Default decoration setBackground (BStyles::Fill(getBgColors()[BStyles::Status::normal].illuminate (-0.75))); setBorder (BStyles::Border (BStyles::Line (getBgColors()[BStyles::Status::normal].illuminate (BStyles::Color::highLighted), 1.0), 0.0, 0.0)); } inline Box::~Box () { while (!buttons_.empty ()) { TextButton* b = buttons_.back (); if (b && (b != &okButton_)) delete b; else release (b); buttons_.pop_back (); } } inline Widget* Box::clone () const { Widget* f = new Box (urid_, title_); f->copy (this); return f; } inline void Box::copy (const Box* that) { okButton_.copy (&that->okButton_); // Remove / delete buttons while (!buttons_.empty ()) { TextButton* b = buttons_.back (); if (b && (b != &okButton_)) delete b; else release (b); buttons_.pop_back (); } // Copy buttons // Fallback default OK button if (that->buttons_.empty()) { buttons_.push_back (&okButton_); add (&okButton_); } else { for (const TextButton* t : that->buttons_) { if (t == &that->okButton_) { buttons_.push_back (&okButton_); add (&okButton_); } else addButton (t->label.getText()); } } Navigatable::operator= (*that); Clickable::operator= (*that); Closeable::operator= (*that); KeyPressable::operator=(*that); ValueableTyped::operator= (*that); Frame::copy (that); } inline void Box::resize () { // Cleanup for (std::vector::iterator it = buttons_.begin (); it != buttons_.end (); ++it) { TextButton* b = static_cast(*it); if (!b) buttons_.erase (it); } const double nrbuttons = buttons_.size(); double totalbuttonwidth = 0.0; BUtilities::Area<> ba = BUtilities::Area<>(); if (nrbuttons) { // Resize all buttons and calculate max button size for (TextButton* b : buttons_) { if (b) { b->moveTo (0,0); b->resize(); ba += b->getArea(); } } // Resize all buttons to the same extends and calculate total width for (TextButton* b : buttons_) { if (b) { b->resize (ba.getExtends()); totalbuttonwidth += b->getWidth (); } } } // At least default extends BUtilities::Area<> a = BUtilities::Area<> (0, 0, BWIDGETS_DEFAULT_BOX_WIDTH - BWIDGETS_DEFAULT_MENU_PADDING - getXOffset(), BWIDGETS_DEFAULT_BOX_HEIGHT - BWIDGETS_DEFAULT_MENU_PADDING + getYOffset()); // Other content for (Linkable* l : children_) { Widget* w = dynamic_cast(l); if (w && (w != focus_) && std::find (buttons_.begin(), buttons_.end(), dynamic_cast (w)) == buttons_.end()) { a += w->getArea(); } } // Add button area to other area a += BUtilities::Area<> (a.getX(), a.getY() + a.getHeight(), getXOffset() + totalbuttonwidth + nrbuttons * BWIDGETS_DEFAULT_MENU_PADDING, getYOffset() + ba.getHeight() + BWIDGETS_DEFAULT_MENU_PADDING); // Add menu padding and widget border a.setWidth (a.getWidth() + BWIDGETS_DEFAULT_MENU_PADDING + getXOffset()); a.setHeight (a.getHeight() + BWIDGETS_DEFAULT_MENU_PADDING + getYOffset()); resize (a.getExtends()); } inline void Box::resize (const double width, const double height) { resize (BUtilities::Point<> (width, height)); } inline void Box::resize (const BUtilities::Point<> extends) { Frame::resize (extends); } inline void Box::addButton (const std::string& label) { TextButton* b = new TextButton (label, false, false, BUtilities::Urid::urid (BUtilities::Urid::uri (getUrid()) + "/button")); b->setActivatable(true); b->setEnterable(true); b->setCallbackFunction (BEvents::Event::EventType::buttonClickEvent, Box::buttonClickCallback); buttons_.push_back (b); add (b); } inline void Box::addButton (std::initializer_list labels) { for (std::string label : labels) addButton (label); } inline void Box::removeButton (const std::string& label) { for (std::vector::iterator it = buttons_.begin (); it != buttons_.end (); ++it) { TextButton* b = static_cast(*it); if (b && (b->label.getText () == label)) { if (b != &okButton_) delete b; buttons_.erase (it); update(); return; } } } inline void Box::removeButton (const size_t index) { if (buttons_.size() >= index) return; std::vector::iterator it = buttons_.begin() + index; TextButton* b = static_cast(*it); if (b != &okButton_) delete b; buttons_.erase (it); update(); } inline size_t Box::getButtonIndex (const std::string& label) const { for (size_t nr = 0; nr < buttons_.size(); ++nr) { const TextButton* b = buttons_[nr]; if (b && (b->label.getText () == label)) return nr + 1; } return 0; } inline std::string Box::getButtonText (const size_t index) const { if ((index < 1) || (index > buttons_.size ()) || (!buttons_[index - 1])) return ""; return buttons_[index - 1]->label.getText (); } inline void Box::setBgColors (const BStyles::ColorMap& colors) { Widget::setBgColors(colors); setBackground (BStyles::Fill(getBgColors()[getStatus()].illuminate (-0.75))); setBorder (BStyles::Border (BStyles::Line (getBgColors()[getStatus()].illuminate (BStyles::Color::highLighted), 1.0), 0.0, 0.0)); } inline void Box::enter () { if (isEnterable() && (!isEntered())) { setKeyPressable(true); grabDevice (BDevices::Keys()); Widget::enter(); } } inline void Box::leave () { if (isEnterable() && isEntered()) { setKeyPressable(false); if (isDeviceGrabbed(BDevices::Keys())) freeDevice(BDevices::Keys ()); resetNavigation(); Widget::leave(); } } inline void Box::update () { // Update super widget first setBackground (BStyles::Fill(getBgColors()[getStatus()].illuminate (-0.75))); setBorder (BStyles::Border (BStyles::Line (getBgColors()[getStatus()].illuminate (BStyles::Color::highLighted), 1.0), 0.0, 0.0)); Frame::update (); // Cleanup for (std::vector::iterator it = buttons_.begin (); it != buttons_.end (); /* empty */) { TextButton* b = static_cast(*it); if (!b) it = buttons_.erase (it); else ++it; } const double nrbuttons = buttons_.size(); if (!nrbuttons) return; // Resize all buttons and calculate max button size BUtilities::Area<> a = BUtilities::Area<>(); for (TextButton* b : buttons_) { if (b) { b->moveTo (0,0); b->resize(); a += b->getArea(); } } // Resize all buttons to the same extends and calculate total width double totalbuttonwidth = 0.0; for (TextButton* b : buttons_) { if (b) { b->resize (a.getExtends()); totalbuttonwidth += b->getWidth (); } } // Calculate spaces and offset const double buttonspace = std::max ((getEffectiveWidth() - totalbuttonwidth) / (nrbuttons + 1.0), 1.0); double buttonxpos = getXOffset() + ( totalbuttonwidth + (nrbuttons + 1) * buttonspace < getEffectiveWidth() ? buttonspace : getEffectiveWidth() / 2 - (totalbuttonwidth + (nrbuttons - 1) * buttonspace) / 2); // Rearrange for (TextButton* b : buttons_) { b->moveTo (buttonxpos, getYOffset() + getEffectiveHeight() - BWIDGETS_DEFAULT_MENU_PADDING - BWIDGETS_DEFAULT_BUTTON_HEIGHT); buttonxpos = buttonxpos + buttonspace + b->getWidth (); } // Update, even if not resized !!! for (TextButton* b : buttons_) b->update(); } inline void Box::onButtonClicked (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast(event); if (!pev) return; if (getStatus() == BStyles::Status::normal) enter(); else if ((getStatus() == BStyles::Status::active) && (pev->getDelta() == BUtilities::Point<>())) leave(); Clickable::onButtonClicked(event); } inline void Box::onKeyPressed (BEvents::Event* event) { BEvents::KeyEvent* kev = dynamic_cast(event); if (!kev) return; if ( getMainWindow() && (kev->getWidget () == this) && isDeviceGrabbed(BDevices::Keys()) ) { BDevices::Keys::KeyType key = static_cast(kev->getKey ()); switch (key) { case BDevices::Keys::KeyType::left: navigateBackward(); break; case BDevices::Keys::KeyType::right: navigateForward(); break; case BDevices::Keys::KeyType::escape: if (isNavigated ()) resetNavigation(); else leave(); break; case BDevices::Keys::KeyType::enter: enterNavigated(); break; default: enterByKey(key); } } KeyPressable::onKeyPressed(event); } inline void Box::buttonClickCallback (BEvents::Event* event) { if (event && ((event->getEventType () & BEvents::Event::EventType::buttonClickEvent) != BEvents::Event::EventType::none)) { BEvents::PointerEvent* ev = dynamic_cast (event); if (!ev) return; TextButton* w = dynamic_cast (ev->getWidget ()); if (!w) return; Box* p = dynamic_cast(w->getParent ()); if (!p) return; if (w && w->getParent ()) { const std::string label = w->label.getText (); if (p->getMainWindow ()) { const size_t v = p->getButtonIndex (label); // Emit value changed event and close (hide) message box if (v) { p->setValue (v); p->postCloseRequest (); } } } } } } #endif /* BWIDGETS_BOX_HPP_ */ src/BWidgets/BWidgets/Button.hpp000066400000000000000000000267021515163050000170540ustar00rootroot00000000000000/* Button.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_BUTTON_HPP_ #define BWIDGETS_BUTTON_HPP_ #include "Supports/KeyPressable.hpp" #include "Supports/Clickable.hpp" #include "Supports/ValueableTyped.hpp" #include "Supports/Toggleable.hpp" #include "../BEvents/PointerEvent.hpp" #include BWIDGETS_DEFAULT_DRAWBUTTON_PATH #ifndef BWIDGETS_DEFAULT_BUTTON_WIDTH #define BWIDGETS_DEFAULT_BUTTON_WIDTH 20.0 #endif #ifndef BWIDGETS_DEFAULT_BUTTON_HEIGHT #define BWIDGETS_DEFAULT_BUTTON_HEIGHT 20.0 #endif namespace BWidgets { /** * @brief Base Widget for drawing a %button. * * %Button is a Clickable Valueable Widget. It also supports Toggleable and * KeyPressable. The value represents its two * possible conditions: on (true) or off (false). The visualble content of * the %Button is represented by its background and its border. The border * color itself is represented by the BgColor and is changed upon changing * the %Button condition (on: highLighted, off: darkened). */ class Button : public Widget, public Clickable, public KeyPressable, public ValueableTyped, public Toggleable { public: /** * @brief Constructs a new Button object with default parameters. */ Button (); /** * @brief Constructs a new Button object with default parameters. * @param urid URID. * @param title %Widget title. */ Button (const uint32_t, const std::string& title); /** * @brief Creates a %Button with default size. * @param toggleable Support of button toggling. * @param clicked Default click status. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ Button (bool toggleable, bool clicked = false, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %Button. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param toggleable Support of button toggling. * @param clicked Default click status. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ Button (const double x, const double y, const double width, const double height, bool toggleable = false, bool clicked = false, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %Button. * @return Pointer to the new %Button. * * Creates a clone of this %Button by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %Button. * @param that Other %Button. * * Copies all properties from another %Button. But NOT its linkage. */ void copy (const Button* that); /** * @brief Optimizes the widget extends. * * Resizes the widget to include all direct children into the widget * area. Resizes the widget to its standard size if this widget doesn't * have any children. */ virtual void resize () override; /** * @brief Resizes the widget extends. * @param width New widget width. * @param height New widget height. */ virtual void resize (const double width, const double height) override; /** * @brief Resizes the widget extends. * @param extends New widget extends. */ virtual void resize (const BUtilities::Point<> extends) override; /** * @brief Enters this %Button. * * Activates this %Button, simulates a button click and calls to leave all * other widgets linked to the main Window to become the only entered * Widget. */ virtual void enter () override; /** * @brief Method called when pointer button pressed. * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button pressed. Sets the %Button value to true (or inverts * the value if @c isToggleable() ), and calls its static callback * function. */ virtual void onButtonPressed (BEvents::Event* event) override; /** * @brief Method called when pointer button released. * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button released. Sets the %Button value to back to false * (if not @c isToggleable() ), and calls its static callback function. */ virtual void onButtonReleased (BEvents::Event* event) override; /** * @brief Method called when pointer button clicked (pressed and * released). * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button cklicked. Inverts the %Button value (if * @c isToggleable() ) and calls its static callback function. */ virtual void onButtonClicked (BEvents::Event* event) override; protected: /** * @brief Unclipped draw a %Button to the surface. */ virtual void draw () override; /** * @brief Clipped draw a %Button to the surface. * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped draw a %Button to the surface. * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline Button::Button () : Button (0.0, 0.0, BWIDGETS_DEFAULT_BUTTON_WIDTH, BWIDGETS_DEFAULT_BUTTON_HEIGHT, false, false, BUTILITIES_URID_UNKNOWN_URID, "") {} inline Button::Button (const uint32_t urid, const std::string& title) : Button (0.0, 0.0, BWIDGETS_DEFAULT_BUTTON_WIDTH, BWIDGETS_DEFAULT_BUTTON_HEIGHT, false, false, urid, title) {} inline Button::Button (bool toggleable, bool clicked, uint32_t urid, std::string title) : Button (0.0, 0.0, BWIDGETS_DEFAULT_BUTTON_WIDTH, BWIDGETS_DEFAULT_BUTTON_HEIGHT, toggleable, clicked, urid, title) {} inline Button::Button (const double x, const double y, const double width, const double height, bool toggleable, bool clicked, uint32_t urid, std::string title) : Widget (x, y, width, height, urid, title), Clickable (), KeyPressable(), ValueableTyped (clicked), Toggleable () { setKeyPressable (false), // not implemented yet setToggleable (toggleable); setFocusText([](const Widget* w) {return w->getTitle() + ": " + BUtilities::Dictionary::get ((dynamic_cast(w) && dynamic_cast(w)->getValue()) ? "on" : "off");}); } inline Widget* Button::clone () const { Widget* f = new Button (urid_, title_); f->copy (this); return f; } inline void Button::copy (const Button* that) { KeyPressable::operator=(*that); Clickable::operator= (*that); ValueableTyped::operator= (*that); Toggleable::operator= (*that); Widget::copy (that); } inline void Button::resize () { BUtilities::Area<> a = (children_.empty()? BUtilities::Area<>(0, 0, BWIDGETS_DEFAULT_BUTTON_WIDTH, BWIDGETS_DEFAULT_BUTTON_HEIGHT) : BUtilities::Area<>()); for (Linkable* c : children_) { Widget* w = dynamic_cast(c); if (w) a.extend (BUtilities::Area<>(w->getPosition(), w->getPosition() + w->getExtends())); } resize (a.getExtends()); } inline void Button::resize (const double width, const double height) { resize (BUtilities::Point<> (width, height)); } inline void Button::resize (const BUtilities::Point<> extends) { Widget::resize (extends); } inline void Button::enter () { if (isEnterable() && (!isEntered())) { // Step 1 : Simulate button click Clickable* c = dynamic_cast(this); if (!c) return; if (!c->isClickable()) return; Widget* w = dynamic_cast (this); if (!w) return; Linkable* m = w->getMain(); if (!m) return; EventQueueable* q = dynamic_cast(m); // Press BEvents::PointerEvent* press = new BEvents::PointerEvent ( w, BEvents::Event::EventType::buttonPressEvent, w->getPosition() * 0.5, w->getPosition() * 0.5, BUtilities::Point<> (), BDevices::MouseButton::ButtonType::left ); q->addEventToQueue (press); // Release BEvents::PointerEvent* release = new BEvents::PointerEvent ( w, BEvents::Event::EventType::buttonReleaseEvent, w->getPosition() * 0.5, w->getPosition() * 0.5, BUtilities::Point<> (), BDevices::MouseButton::ButtonType::left ); q->addEventToQueue (release); // Click BEvents::PointerEvent* click = new BEvents::PointerEvent ( w, BEvents::Event::EventType::buttonClickEvent, w->getPosition() * 0.5, w->getPosition() * 0.5, BUtilities::Point<> (), BDevices::MouseButton::ButtonType::left ); q->addEventToQueue (click); // Step 2: Activate this widget and leave all other widgets Widget::enter(); } } inline void Button::onButtonPressed (BEvents::Event* event) { if (!isToggleable()) setValue (true); Clickable::onButtonPressed (event); } inline void Button::onButtonReleased (BEvents::Event* event) { if (!isToggleable()) setValue (false); Clickable::onButtonReleased (event); } inline void Button::onButtonClicked (BEvents::Event* event) { if (isToggleable()) setValue (!getValue()); Clickable::onButtonClicked (event); } inline void Button::draw () { draw (0, 0, getWidth(), getHeight()); } inline void Button::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void Button::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; // Draw super class widget elements first Widget::draw (area); const double x0 = getXOffset(); const double y0 = getYOffset(); const double heff = getEffectiveHeight (); const double weff = getEffectiveWidth (); // Draw Button // only if minimum requirements satisfied if ((heff >= 1) && (weff >= 1)) { cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); drawButton (cr, x0, y0, weff, heff, getValue(), getFgColors()[getStatus()], getBgColors()[getStatus()]); } cairo_destroy (cr); } } } #endif /* BWIDGETS_BUTTON_HPP_ */ src/BWidgets/BWidgets/CheckBox.hpp000066400000000000000000000151351515163050000172650ustar00rootroot00000000000000/* CheckBox.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_CHECKBOX_HPP_ #define BWIDGETS_CHECKBOX_HPP_ #include "Button.hpp" #ifndef BWIDGETS_DEFAULT_CHECKBOX_WIDTH #define BWIDGETS_DEFAULT_CHECKBOX_WIDTH 20.0 #endif #ifndef BWIDGETS_DEFAULT_CHECKBOX_HEIGHT #define BWIDGETS_DEFAULT_CHECKBOX_HEIGHT BWIDGETS_DEFAULT_CHECKBOX_WIDTH #endif namespace BWidgets { /** * @brief %CheckBox Button widget. * * %CheckBox is a Button Widget. Its appearance is defined by the BgColors * parameter (frame) and by the FgColors parameter (active state, symbol). */ class CheckBox : public Button { protected: public: /** * @brief Constructs a default %CheckBox object. * */ CheckBox (); /** * @brief Constructs a default %CheckBox object. * @param URID URID. * @param title %Widget title. */ CheckBox (const uint32_t urid, const std::string& title); /** * @brief Creates a %CheckBox with default size. * @param toggleable Support of button toggling. * @param clicked Default click status. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ CheckBox (bool toggleable, bool clicked = false, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %CheckBox. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param toggleable Support of button toggling. * @param clicked Default click status. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ CheckBox (const double x, const double y, const double width, const double height, bool toggleable = false, bool clicked = false, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %CheckBox. * @return Pointer to the new %CheckBox. * * Creates a clone of this %CheckBox by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %CheckBox. * @param that Other %CheckBox. * * Copies all properties from another %CheckBox. But NOT its linkage. */ void copy (const CheckBox* that); protected: /** * @brief Unclipped draw a %CheckBox to the surface. */ virtual void draw () override; /** * @brief Clipped draw a %CheckBox to the surface. * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped draw a %CheckBox to the surface. * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline CheckBox::CheckBox () : CheckBox (0.0, 0.0, BWIDGETS_DEFAULT_CHECKBOX_WIDTH, BWIDGETS_DEFAULT_CHECKBOX_HEIGHT, false, false, BUTILITIES_URID_UNKNOWN_URID, "") { } inline CheckBox::CheckBox (const uint32_t urid, const std::string& title) : CheckBox (0.0, 0.0, BWIDGETS_DEFAULT_CHECKBOX_WIDTH, BWIDGETS_DEFAULT_CHECKBOX_HEIGHT, false, false, urid, title) { } inline CheckBox::CheckBox (bool toggleable, bool clicked, uint32_t urid, std::string title) : CheckBox (0.0, 0.0, BWIDGETS_DEFAULT_CHECKBOX_WIDTH, BWIDGETS_DEFAULT_CHECKBOX_HEIGHT, toggleable, clicked, urid, title) { } inline CheckBox::CheckBox (const double x, const double y, const double width, const double height, bool toggleable, bool clicked, uint32_t urid, std::string title) : Button (x, y, width, height, toggleable, clicked, urid, title) { setBackground (BStyles::noFill); setBorder (BStyles::noBorder); } inline Widget* CheckBox::clone () const { Widget* f = new CheckBox (urid_, title_); f->copy (this); return f; } inline void CheckBox::copy (const CheckBox* that) { Widget::copy (that); } inline void CheckBox::draw () { draw (0, 0, getWidth(), getHeight()); } inline void CheckBox::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void CheckBox::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; // Draw super class widget elements first Widget::draw (area); const double x0 = getXOffset(); const double y0 = getYOffset(); const double heff = getEffectiveHeight (); const double weff = getEffectiveWidth (); // Draw knob // only if minimum requirements satisfied if ((heff >= 1) && (weff >= 1)) { cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); // Calculate aspect ratios first const double size = (heff < weff ? heff : weff) - 1; const double xc = x0 + 0.5 * weff; const double yc = y0 + 0.5 * heff; // Frame const BStyles::Color bg = getBgColors() [getStatus()]; cairo_set_line_width (cr, 2.0); cairo_set_source_rgba (cr, CAIRO_RGBA (bg)); cairo_rectangle (cr, xc - 0.5 * size, yc - 0.5 * size, size, size); cairo_stroke (cr); // Symbol if (getValue()) { const BStyles::Color fg = getFgColors() [getStatus()]; cairo_set_line_width (cr, 2.0); cairo_set_source_rgba (cr, CAIRO_RGBA (fg)); cairo_move_to (cr, xc - 0.3 * size, yc); cairo_line_to (cr, xc - 0.1 * size, yc + 0.3 * size); cairo_line_to (cr, xc + 0.3 * size, yc - 0.3 * size); cairo_stroke (cr); } } cairo_destroy (cr); } } } #endif /* BWIDGETS_CHECKBOX_HPP_ */ src/BWidgets/BWidgets/ComboBox.hpp000066400000000000000000000331471515163050000173120ustar00rootroot00000000000000/* ComboBox.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_COMBOBOX_HPP_ #define BWIDGETS_COMBOBOX_HPP_ #include "ListBox.hpp" #include "SymbolButton.hpp" #ifndef BWIDGETS_DEFAULT_COMBOBOX_WIDTH #define BWIDGETS_DEFAULT_COMBOBOX_WIDTH BWIDGETS_DEFAULT_SPINBOX_WIDTH #endif #ifndef BWIDGETS_DEFAULT_COMBOBOX_HEIGHT #define BWIDGETS_DEFAULT_COMBOBOX_HEIGHT BWIDGETS_DEFAULT_SPINBOX_HEIGHT #endif #ifndef BWIDGETS_DEFAULT_COMBOBOX_LISTBOX_HEIGHT #define BWIDGETS_DEFAULT_COMBOBOX_LISTBOX_HEIGHT BWIDGETS_DEFAULT_LISTBOX_HEIGHT #endif namespace BWidgets { /** * @brief Widget showing a combo box. * * %ComboBox is Valueable widget derived from SpinBox. It shows a SpinBox * with a single button. It opens a ListBox with the same content upon * clicking on the button. * * @todo Resize() * @todo Import item widgets. */ class ComboBox : public SpinBox { protected: Widget* listBox_; BUtilities::Area<> listBoxArea_; public: /** * @brief Constructs a new ComboBox object with default parameters. */ ComboBox (); /** * @brief Constructs a new ComboBox object with default parameters. * @param URID URID. * @param title %Widget title. */ ComboBox (const uint32_t urid, const std::string& title); /** * @brief Creates a %ComboBox with default size. * @param items Initializer list of item strings. * @param value Optional, list index of the selected item starting with * 1 (default = 0 = unselected). * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ ComboBox (const std::initializer_list items, size_t value = 0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %ComboBox with default ListBox size. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param items Optional, initializer list of item strings. * @param value Optional, list index of the selected item starting with * 1 (default = 0 = unselected). * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ ComboBox (const double x, const double y, const double width, const double height, std::initializer_list items = {}, size_t value = 0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %ComboBox. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param listBoxX ListBox X origin relative to the SpinBox origin. * @param listBoxY ListBox Y origin relative to the SpinBox origin. * @param listBoxWidth ListBox width. * @param listBoxHeight ListBox height. * @param items Optional, initializer list of item strings. * @param value Optional, list index of the selected item starting with * 1 (default = 0 = unselected). * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ ComboBox (const double x, const double y, const double width, const double height, const double listBoxX, const double listBoxY, const double listBoxWidth, const double listBoxHeight, std::initializer_list items = {}, size_t value = 0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); virtual ~ComboBox(); /** * @brief Creates a clone of the %ComboBox. * @return Pointer to the new %ComboBox. * * Creates a clone of this %ComboBox by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %ComboBox. * @param that Other %ComboBox. * * Copies all properties from another %ComboBox. But NOT its linkage. */ void copy (const ComboBox* that); /** * @brief Changes the value. * @param value Value. * * Also closes the ListBox andemits a ValueChangeTyped event. */ virtual void setValue (const size_t& value) override; /** * @brief Changes the value if the item text is part of the items. * @param item Item text. */ virtual void setValue (const std::string& value) override; /** * @brief Changes the position of the ListBox. * @param position New position. */ virtual void moveListBox (const BUtilities::Point<> position); /** * @brief Changes the position of the ListBox. * @param x New x coordinate. * @param y New y coordinate. */ virtual void moveListBox (const double x, const double y); /** * @brief Gets the ListBox position. * @return ListBox position. */ BUtilities::Point<> getListBoxPosition () const; /** * @brief Changes the extends of the ListBox. * @param extends New extends. */ virtual void resizeListBox (const BUtilities::Point<> extends); /** * @brief Changes the extends of the ListBox. * @param width New ListBox width. * @param height New ListBox height. */ virtual void resizeListBox (const double width, const double height); /** * @brief Gets the ListBox extends. * @return ListBox extends. */ BUtilities::Point<> getListBoxExtends () const; /** * @brief Enters this %ComboBox. * * Activates this %ComboBox, takes over keyboard control, and calls to * leave all other widgets linked to the main Window to become the only * entered Widget. */ virtual void enter () override; /** * @brief Leaves this %ComboBox * * De-activates this %ComboBox, resets navigation and release keyboard * conrol. */ virtual void leave () override; /** * @brief Method to be called following an object state change. */ virtual void update () override; /** * @brief Method called when pointer button pressed. * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button pressed. */ virtual void onButtonPressed (BEvents::Event* event) override; protected: /** * @brief Creates and shows the listbox. */ virtual void showListbox (); /** * @brief Hides and deletes the listbox. */ virtual void hideListbox (); /** * @brief Callback function which handles and forwards * VALUE_CHANGED_EVENTs from the button. * @param event Event of the type ValueChangedEvent . */ static void buttonChangedCallback (BEvents::Event* event); /** * @brief Callback function which handles and forwards * buttonPressEvents from the listBox. * @param event Event of the type ButtonPressEvent . */ static void listBoxChangedCallback (BEvents::Event* event); }; inline ComboBox::ComboBox () : ComboBox (0.0, 0.0, BWIDGETS_DEFAULT_COMBOBOX_WIDTH, BWIDGETS_DEFAULT_COMBOBOX_HEIGHT, 0.0, BWIDGETS_DEFAULT_COMBOBOX_HEIGHT, BWIDGETS_DEFAULT_COMBOBOX_WIDTH, BWIDGETS_DEFAULT_COMBOBOX_LISTBOX_HEIGHT, {}, 0, BUTILITIES_URID_UNKNOWN_URID, "") {} inline ComboBox::ComboBox (const uint32_t urid, const std::string& title) : ComboBox (0.0, 0.0, BWIDGETS_DEFAULT_COMBOBOX_WIDTH, BWIDGETS_DEFAULT_COMBOBOX_HEIGHT, 0.0, BWIDGETS_DEFAULT_COMBOBOX_HEIGHT, BWIDGETS_DEFAULT_COMBOBOX_WIDTH, BWIDGETS_DEFAULT_COMBOBOX_LISTBOX_HEIGHT, {}, 0, urid, title) {} inline ComboBox::ComboBox (const std::initializer_list items, size_t value, uint32_t urid, std::string title) : ComboBox (0.0, 0.0, BWIDGETS_DEFAULT_COMBOBOX_WIDTH, BWIDGETS_DEFAULT_COMBOBOX_HEIGHT, 0.0, BWIDGETS_DEFAULT_COMBOBOX_HEIGHT, BWIDGETS_DEFAULT_COMBOBOX_WIDTH, BWIDGETS_DEFAULT_COMBOBOX_LISTBOX_HEIGHT, items, value, urid, title) {} inline ComboBox::ComboBox (const double x, const double y, const double width, const double height, std::initializer_list items, size_t value, uint32_t urid, std::string title) : ComboBox (x, y, width, height, 0.0, height, width, BWIDGETS_DEFAULT_COMBOBOX_LISTBOX_HEIGHT, items, value, urid, title) {} inline ComboBox::ComboBox (const double x, const double y, const double width, const double height, const double listBoxX, const double listBoxY, const double listBoxWidth, const double listBoxHeight, std::initializer_list items, size_t value, uint32_t urid, std::string title) : SpinBox (x, y, width, height, items, value, urid, title), listBox_ (nullptr), listBoxArea_(listBoxX, listBoxY, listBoxWidth, listBoxHeight) { if (button_) delete button_; button_ = new SymbolButton (x + width - buttonWidth_, y, buttonWidth_, height, Symbol::SymbolType::down, false, false, BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/button"), ""); button_->setCallbackFunction(BEvents::Event::EventType::valueChangedEvent, ComboBox::buttonChangedCallback); add (button_); for (Widget* w : items_) w->setHeight (itemHeight_); } inline ComboBox::~ComboBox() { if (listBox_) delete listBox_; } inline Widget* ComboBox::clone () const { Widget* f = new ComboBox (urid_, title_); f->copy (this); return f; } inline void ComboBox::copy (const ComboBox* that) { if (listBox_) delete listBox_; listBox_ = that->listBox_->clone(); if (listBox_) add (listBox_); listBoxArea_ = that->listBoxArea_; SpinBox::copy (that); } inline void ComboBox::setValue (const size_t& value) { if (value == getValue()) return; if (listBox_ && (listBox_->getStatus() != BStyles::Status::active)) { delete listBox_; listBox_ = nullptr; } SpinBox::setValue (value); } inline void ComboBox::setValue (const std::string& item) { SpinBox::setValue (item); } inline void ComboBox::moveListBox (const BUtilities::Point<> position) { listBoxArea_.moveTo (position); if (listBox_) listBox_->moveTo (position); } inline void ComboBox::moveListBox (const double x, const double y) { moveListBox (BUtilities::Point<> (x, y)); } inline BUtilities::Point<> ComboBox::getListBoxPosition () const { return listBoxArea_.getPosition(); } inline void ComboBox::resizeListBox (const BUtilities::Point<> extends) { listBoxArea_.resize (extends); if (listBox_) listBox_->resize (extends); } inline void ComboBox::resizeListBox (const double width, const double height) { resizeListBox (BUtilities::Point<> (width, height)); } inline BUtilities::Point<> ComboBox::getListBoxExtends () const { return listBoxArea_.getExtends(); } inline void ComboBox::enter () { SpinBox::enter(); if (!listBox_) showListbox(); } inline void ComboBox::leave () { if (listBox_) hideListbox(); SpinBox::leave(); } inline void ComboBox::update() { ListBox* l = dynamic_cast(listBox_); if (l) { l->setValue(getValue()); } SpinBox::update(); } inline void ComboBox::onButtonPressed (BEvents::Event* event) { //if (listBox_) hideListbox(); //else showListbox(); SpinBox::onButtonPressed (event); } inline void ComboBox::showListbox() { listBox_ = new ListBox (listBoxArea_.getX(), listBoxArea_.getY(), listBoxArea_.getWidth(), listBoxArea_.getHeight(), {}, 0, BUtilities::Urid::urid (BUtilities::Urid::uri (getUrid()) + "/listbox"), ""); ListBox* l = dynamic_cast(listBox_); if (l) { if (!items_.empty()) { for (std::list::iterator it = std::next (items_.begin()); it != items_.end(); ++it) { Label* wl = dynamic_cast(*it); if (wl) { l->addItem (wl->getText()); } } } l->setAutoDeactivate(false); l->activate(); l->setCallbackFunction(BEvents::Event::EventType::buttonPressEvent, ComboBox::listBoxChangedCallback); l->setStacking (StackingType::escape); l->setValue (getValue()); l->setTop(getValue() == 0 ? 0 : 1); raiseToFront(); add (l); } } inline void ComboBox::hideListbox() { delete listBox_; listBox_ = nullptr; } inline void ComboBox::buttonChangedCallback (BEvents::Event* event) { BEvents::ValueChangeTypedEvent* vev = dynamic_cast*>(event); if (!vev) return; SymbolButton* w = dynamic_cast(vev->getWidget()); if (!w) return; ComboBox* p = dynamic_cast(w->getParentWidget()); if (!p) return; if (!vev->getValue()) return; if (w != p->button_) return; if (p->listBox_) p->hideListbox(); else p->showListbox(); } inline void ComboBox::listBoxChangedCallback (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast(event); if (!pev) return; ListBox* w = dynamic_cast(pev->getWidget()); if (!w) return; ComboBox* p = dynamic_cast(w->getParentWidget()); if (!p) return; if (w != p->listBox_) return; p->setValue (w->getValue()); // Warning w / p->listBox_ may be deleted in setValue(), // thus always check for validity of w / p->listBox_ if (p->listBox_) p->listBox_->leave(); p->hideListbox(); p->leave(); } } #endif /* BWIDGETS_COMBOBOX_HPP_ */ src/BWidgets/BWidgets/ConditionalImage.hpp000066400000000000000000000452641515163050000210130ustar00rootroot00000000000000/* ConditionalImage.hpp * Copyright (C) 2019 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_IMAGECONDITIONAL_HPP_ #define BWIDGETS_IMAGECONDITIONAL_HPP_ #include "Widget.hpp" #include #include "Supports/ValueableTyped.hpp" #include "Supports/ValidatableRange.hpp" #include "Supports/ValueTransferable.hpp" #include "Supports/Clickable.hpp" #include "Supports/Draggable.hpp" #include "Supports/Scrollable.hpp" #include "../BEvents/WheelEvent.hpp" #ifndef BWIDGETS_DEFAULT_IMAGECONDITIONAL_WIDTH #define BWIDGETS_DEFAULT_IMAGECONDITIONAL_WIDTH 60 #endif #ifndef BWIDGETS_DEFAULT_IMAGECONDITIONAL_HEIGHT #define BWIDGETS_DEFAULT_IMAGECONDITIONAL_HEIGHT 60 #endif namespace BWidgets { /** * @brief Widget displaying an image depending on a condition. * * %ConditionalImage is a Valueable widget which may take up multiple images * each linked to a specific value. The widget shows the image(s) depending * on its value. By default, the widget shows the image whos value is the * closest to the widget value. * * %ConditionalImage supports user interaction via Clickable, Draggable, and * Scrollable. */ class ConditionalImage : public Widget, public ValueableTyped, public ValidatableRange, public ValueTransferable, public Clickable, public Draggable, public Scrollable { protected: std::map imageSurfaces_; std::function showFunc_; public: /** * @brief Construct an empty default %ConditionalImage. */ ConditionalImage (); /** * @brief Construct an empty default %ConditionalImage. * @param URID URID. * @param title %Widget title. */ ConditionalImage (const uint32_t urid, const std::string& title); /** * @brief Creates a multi Status %ConditionalImage with defined * coordinates and size from an image file. * @param filenames Initializer list of pairs of values and filenames. * Supported file types are: PNG. * @param value Optional, initial value. * @param min Optional, lower value limit. * @param max Optional, upper value limit. * @param step Optional, value increment steps. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ ConditionalImage (const std::initializer_list>& filenames, double value = 0.0, double min = 0.0, double max = 1.0, double step = 0.0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a multi Status %ConditionalImage with defined * coordinates and size from an image file. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param filenames Initializer list of pairs of values and filenames. * Supported file types are: PNG. * @param value Optional, initial value. * @param min Optional, lower value limit. * @param max Optional, upper value limit. * @param step Optional, value increment steps. * @param transferFunc Optinonal, function to transfer a value from an * external context to the internal context. * @param reTransferFunc Optinonal, function to transfer a value from the * internal context to an external context. * @param showFunc Optinonal, function to test if an image represented * by its value will be shown or not. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ ConditionalImage (const double x, const double y, const double width, const double height, const std::initializer_list>& filenames, double value = 0.0, double min = 0.0, double max = 1.0, double step = 0.0, std::function transferFunc = ValueTransferable::noTransfer, std::function reTransferFunc = ValueTransferable::noTransfer, std::function showFunc = isClosestToValue, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); virtual ~ConditionalImage(); /** * @brief Creates a clone of the %ConditionalImage. * @return Pointer to the new %ConditionalImage. * * Creates a clone of this %ConditionalImage by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %ConditionalImage. * @param that Other %ConditionalImage. * * Copies all properties from another %ConditionalImage. But NOT its linkage. */ void copy (const ConditionalImage* that); /** * @brief Clears all visual content. */ virtual void clear (); /** * @brief Clears the visual content for a value. * @param value Value (exact match). */ virtual void clear (const double value); /** * @brief Optimizes the object extends. * * Resizes the widget to fit all images which are currently visualized. * Resizes to first image if no image is currently visualized. * Resizes to (0, 0) if no image is stored. */ virtual void resize () override; /** * @brief Resizes the object extends. * @param width New object width. * @param height New object height. */ virtual void resize (const double width, const double height) override; /** * @brief Resizes the object extends. * @param extends New object extends. */ virtual void resize (const BUtilities::Point<> extends) override; /** * @brief Loads an image from a Cairo surface or an image file. * @param value Value for the image to be loaded. * @param surface Cairo surface with the image. */ virtual void loadImage (const double value, cairo_surface_t* surface); /** * @brief Loads an image from a Cairo surface or an image file. * @param value Value for the image to be loaded. * @param filename Image file name. */ virtual void loadImage (const double value, const std::string& filename); /** * @brief Access to the Cairo image surface. * @param value Value (exact match). * @return Pointer to the Cairo surface or nullptr if no surface for * the passed value is stored. */ cairo_surface_t* getImageSurface (const double value); static bool isClosestToValue (ConditionalImage* widget, const double& value); /** * @brief Method called when pointer button pressed. * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button pressed. Sets the value and calls the widget static * callback function. */ virtual void onButtonPressed (BEvents::Event* event) override; /** * @brief Method called upon pointer drag. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a pointer drag. Changes the value and calls the widget static callback * function. */ virtual void onPointerDragged (BEvents::Event* event) override; /** * @brief Method called upon (mouse) wheel scroll. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a (mouse) wheel scroll. Increases or decreases the value and calls the * widget static callback function. */ virtual void onWheelScrolled (BEvents::Event* event) override; protected: /** * @brief Unclipped draw an %ConditionalImage to the surface. */ virtual void draw () override; /** * @brief Clipped draw an %ConditionalImage to the surface. * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped draw an %ConditionalImage to the surface. * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline ConditionalImage::ConditionalImage () : ConditionalImage (0.0, 0.0, BWIDGETS_DEFAULT_IMAGECONDITIONAL_WIDTH, BWIDGETS_DEFAULT_IMAGECONDITIONAL_HEIGHT, {}, 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, isClosestToValue, BUTILITIES_URID_UNKNOWN_URID, "") { } inline ConditionalImage::ConditionalImage (const uint32_t urid, const std::string& title) : ConditionalImage (0.0, 0.0, BWIDGETS_DEFAULT_IMAGECONDITIONAL_WIDTH, BWIDGETS_DEFAULT_IMAGECONDITIONAL_HEIGHT, {}, 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, isClosestToValue, urid, title) { } inline ConditionalImage::ConditionalImage (const std::initializer_list>& filenames, double value, double min, double max, double step, uint32_t urid, std::string title) : ConditionalImage (0.0, 0.0, BWIDGETS_DEFAULT_IMAGECONDITIONAL_WIDTH, BWIDGETS_DEFAULT_IMAGECONDITIONAL_HEIGHT, filenames, value, min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, isClosestToValue, urid, title) { } inline ConditionalImage::ConditionalImage (const double x, const double y, const double width, const double height, const std::initializer_list>& filenames, double value, double min, double max, double step, std::function transferFunc, std::function reTransferFunc, std::function showFunc, uint32_t urid, std::string title) : Widget (x, y, width, height, urid, title), ValueableTyped (value), ValidatableRange (min, max, step), ValueTransferable (transferFunc, reTransferFunc), Clickable(), Draggable(), Scrollable(), imageSurfaces_(), showFunc_ (showFunc) { for (std::initializer_list>::const_reference f : filenames) { imageSurfaces_[f.first] = cairo_image_surface_create_from_png (f.second.c_str()); } setFocusText([](const Widget* w) {return w->getTitle() + ": " + (dynamic_cast(w) ? std::to_string (dynamic_cast(w)->getValue()) : "");}); } inline ConditionalImage::~ConditionalImage () { while (!imageSurfaces_.empty()) { std::map::iterator it = imageSurfaces_.begin(); if (it->second && (cairo_surface_status(it->second) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (it->second); imageSurfaces_.erase (it); } } inline Widget* ConditionalImage::clone () const { Widget* f = new ConditionalImage (urid_, title_); f->copy (this); return f; } inline void ConditionalImage::copy (const ConditionalImage* that) { clear(); for (std::map::const_reference t : that->imageSurfaces_) loadImage (t.first, t.second); showFunc_ = that->showFunc_; Scrollable::operator= (*that); Draggable::operator= (*that); Clickable::operator= (*that); ValueTransferable::operator= (*that); ValidatableRange::operator= (*that); ValueableTyped::operator= (*that); Widget::copy (that); } inline void ConditionalImage::clear() { while (!imageSurfaces_.empty()) { std::map::iterator it = imageSurfaces_.begin(); if (it->second && (cairo_surface_status(it->second) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (it->second); imageSurfaces_.erase (it); } update(); } inline void ConditionalImage::clear (const double value) { std::map::iterator it = imageSurfaces_.find (value); if (it != imageSurfaces_.end()) { if (it->second && (cairo_surface_status(it->second) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (it->second); imageSurfaces_.erase (it); update(); } } inline void ConditionalImage::resize () { // Resize to the surface covered by the visible images BUtilities::Area<> a = BUtilities::Area<>(); for (std::map::const_reference i : imageSurfaces_) { if (showFunc_ (this,i.first) && i.second && (cairo_surface_status (i.second) == CAIRO_STATUS_SUCCESS)) { a += BUtilities::Area<> (0, 0, cairo_image_surface_get_width (i.second), cairo_image_surface_get_height (i.second)); } } // Otherwise resize to the first image if ((a == BUtilities::Area<>()) && (!imageSurfaces_.empty()) && (imageSurfaces_.begin()->second) && (cairo_surface_status (imageSurfaces_.begin()->second) == CAIRO_STATUS_SUCCESS)) { a = BUtilities::Area<> (0, 0, cairo_image_surface_get_width (imageSurfaces_.begin()->second), cairo_image_surface_get_height (imageSurfaces_.begin()->second)); } // Or use embedded widgets size, if bigger for (Linkable* l : children_) { Widget* w = dynamic_cast(l); if (w) a += w->getArea(); } resize (a.getExtends()); } inline void ConditionalImage::resize (const double width, const double height) { resize (BUtilities::Point<> (width, height)); } inline void ConditionalImage::resize (const BUtilities::Point<> extends) { Widget::resize (extends); } inline void ConditionalImage::loadImage (const double value, cairo_surface_t* surface) { clear (value); imageSurfaces_[value] = cairoplus_image_surface_clone_from_image_surface (surface); update (); } inline void ConditionalImage::loadImage (const double value, const std::string& filename) { clear (value); imageSurfaces_[value] = cairo_image_surface_create_from_png (filename.c_str()); update (); } inline cairo_surface_t* ConditionalImage::getImageSurface (const double value) { if (imageSurfaces_.find(value) == imageSurfaces_.end()) return nullptr; return imageSurfaces_[value]; } inline bool ConditionalImage::isClosestToValue (ConditionalImage* widget, const double& value) { if (!widget) return false; // No images: invalid / false if (widget->imageSurfaces_.empty()) return false; // No image for this value: false map::const_iterator it = widget->imageSurfaces_.find (value); if (it == widget->imageSurfaces_.end()) return false; // Only one image: always the closest if (std::next (widget->imageSurfaces_.begin()) == widget->imageSurfaces_.end()) return true; const double x = widget->getRatioFromValue (widget->getValue()); const double rval = widget->getRatioFromValue (value); if (x < rval) { if (it == widget->imageSurfaces_.begin()) return true; const double prval = widget->getRatioFromValue (std::prev (it)->first); if (x < prval) return false; return (x - prval >= rval - x); } else { if (std::next (it) == widget->imageSurfaces_.end()) return true; const double nrval = widget->getRatioFromValue (std::next (it)->first); if (x > nrval) return false; return (nrval - x > x - rval); } } inline void ConditionalImage::onButtonPressed (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast (event); if (!pev) return; Clickable::onButtonPressed (event); } inline void ConditionalImage::onPointerDragged (BEvents::Event* event) { //if (isClickable()) onButtonPressed (event); //else { BEvents::PointerEvent* pev = dynamic_cast (event); if (!pev) return; const double h = getEffectiveHeight(); if (h >= 1.0) { if (getStep() != 0.0) setValue (getValue() - pev->getDelta().y * getStep ()); else setValue (getValueFromRatio (getRatioFromValue(getValue()) - pev->getDelta().y / (h))); } } Draggable::onPointerDragged (event); } inline void ConditionalImage::onWheelScrolled (BEvents::Event* event) { BEvents::WheelEvent* wev = dynamic_cast (event); if (!wev) return; const double h = getEffectiveHeight(); if (h >= 1.0) { if (getStep() != 0.0) setValue (getValue() + wev->getDelta().y * getStep ()); else setValue (getValueFromRatio (getRatioFromValue(getValue()) + wev->getDelta().y / (h))); } Scrollable::onWheelScrolled (event); } inline void ConditionalImage::draw () { draw (0, 0, getWidth(), getHeight()); } inline void ConditionalImage::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void ConditionalImage::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; if ((getWidth () >= 1) && (getHeight () >= 1)) { // Draw super class widget elements first Widget::draw (area); cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); const double x0 = getXOffset(); const double y0 = getYOffset(); const double w = getEffectiveWidth(); const double h = getEffectiveHeight(); for (std::map::const_reference i : imageSurfaces_) { if (showFunc_ (this,i.first) && i.second && (cairo_surface_status (i.second) == CAIRO_STATUS_SUCCESS)) { const double ws = cairo_image_surface_get_width (i.second); const double hs = cairo_image_surface_get_height (i.second); if ((ws >= 1.0) && (hs >= 1.0)) { const double szs = ((w / ws < h / hs) ? (w / ws) : (h / hs)); const double x0s = x0 + 0.5 * w - 0.5 * ws * szs; const double y0s = y0 + 0.5 * h - 0.5 * hs * szs; cairo_save (cr); cairo_translate(cr, x0s, y0s); cairo_scale (cr, szs, szs); cairo_set_source_surface(cr, i.second, 0, 0); cairo_paint (cr); cairo_restore (cr); } } } } cairo_destroy (cr); } } } #endif /* BWIDGETS_IMAGECONDITIONAL_HPP_ */ src/BWidgets/BWidgets/Dial.hpp000066400000000000000000000401351515163050000164460ustar00rootroot00000000000000/* Dial.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DIAL_HPP_ #define BWIDGETS_DIAL_HPP_ #include "RadialMeter.hpp" #include "Supports/Clickable.hpp" #include "Supports/Draggable.hpp" #include "Supports/Scrollable.hpp" #include "Supports/KeyPressable.hpp" #include "../BEvents/WheelEvent.hpp" #include "../BEvents/KeyEvent.hpp" #include BWIDGETS_DEFAULT_DRAWARC_PATH #include BWIDGETS_DEFAULT_DRAWKNOB_PATH #include BWIDGETS_DEFAULT_DRAWARCHANDLE_PATH #ifndef BWIDGETS_DEFAULT_DIAL_WIDTH #define BWIDGETS_DEFAULT_DIAL_WIDTH 40.0 #endif #ifndef BWIDGETS_DEFAULT_DIAL_HEIGHT #define BWIDGETS_DEFAULT_DIAL_HEIGHT BWIDGETS_DEFAULT_DIAL_WIDTH #endif namespace BWidgets { /** * @brief %Dial widget. * * %Dial is a Valueable Widget derived from RadialMeter. It displays a pseudo * 3D dial consisting of a knob and an arc scale. It supports user * interaction via Clickable, Draggable, Scrollable, and KeyPressable. Its * appearance is defined by the BgColors parameter (static elements) and by * the FgColors parameter (value). */ class Dial : public RadialMeter, public Clickable, public Draggable, public Scrollable, public KeyPressable { protected: bool fineTuned_; public: /** * @brief Constructs a default %Dial object. */ Dial (); /** * @brief Constructs a default %Dial object. * @param URID URID. * @param title %Widget title. */ Dial (const uint32_t urid, const std::string& title); /** * @brief Creates a %Dial with default size. * @param value Initial value. * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ Dial (const double value, const double min, const double max, double step = 0.0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %Dial. * @param x %Dial X origin coordinate. * @param y %Dial Y origin coordinate. * @param width %Dial width. * @param height %Dial height. * @param value Initial value. * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param transferFunc Optinonal, function to transfer a value from an * external context to the internal context. * @param reTransferFunc Optinonal, function to transfer a value from the * internal context to an external context. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Dial title (default = ""). */ Dial (const double x, const double y, const double width, const double height, const double value, const double min, const double max, double step = 0.0, std::function transferFunc = ValueTransferable::noTransfer, std::function reTransferFunc = ValueTransferable::noTransfer, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %Dial. * @return Pointer to the new %Dial. * * Creates a clone of this %Dial by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %Dial. * @param that Other %Dial. * * Copies all properties from another %Dial. But NOT its linkage. */ void copy (const Dial* that); /** * @brief Sets the range step size. * @param step Step size. * * Also sets the number of sub steps to BWIDGETS_DEFAULT_NR_SUBSTEPS if * step size is 0.0. */ virtual void setStep (const double& step) override; /** * @brief Enters this %Dial. * * Activates this %Dial, takes over keyboard control, and calls to leave * all other widgets linked to the main Window to become the only entered * Widget. */ virtual void enter () override; /** * @brief Leaves this %Dial * * De-activates this %Dial and release keyboard conrol. */ virtual void leave () override; /** * @brief Method called when pointer button pressed. * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button pressed. Sets the value and calls the widget static * callback function. */ virtual void onButtonPressed (BEvents::Event* event) override; /** * @brief Method called upon pointer drag. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a pointer drag. Changes the value and calls the widget static callback * function. */ virtual void onPointerDragged (BEvents::Event* event) override; /** * @brief Method called upon (mouse) wheel scroll. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a (mouse) wheel scroll. Increases or decreases the value and calls the * widget static callback function. */ virtual void onWheelScrolled (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyPressEvent is * received. * @param event Passed Event. * * Overridable method called from the main window event scheduler if a * key is pressed. By default, it calls its static callback function. */ virtual void onKeyPressed (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyReleaseEvent is * received. * @param event Passed Event. * * Overridable method called from the main window event scheduler if a * key is released. By default, it calls its static callback function. */ virtual void onKeyReleased (BEvents::Event* event) override; protected: /** * @brief Unclipped draw a %Dial to the surface. */ virtual void draw () override; /** * @brief Clipped draw a %Dial to the surface. * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped draw a %Dial to the surface. * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline Dial::Dial () : Dial (0.0, 0.0, BWIDGETS_DEFAULT_DIAL_WIDTH, BWIDGETS_DEFAULT_DIAL_HEIGHT, 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, BUTILITIES_URID_UNKNOWN_URID, "") { } inline Dial::Dial (const uint32_t urid, const std::string& title) : Dial (0.0, 0.0, BWIDGETS_DEFAULT_DIAL_WIDTH, BWIDGETS_DEFAULT_DIAL_HEIGHT, 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline Dial::Dial (const double value, const double min, const double max, double step, uint32_t urid, std::string title) : Dial (0.0, 0.0, BWIDGETS_DEFAULT_DIAL_WIDTH, BWIDGETS_DEFAULT_DIAL_HEIGHT, value, min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline Dial::Dial (const double x, const double y, const double width, const double height, double value, const double min, const double max, double step, std::function transferFunc, std::function reTransferFunc, uint32_t urid, std::string title) : RadialMeter (x, y, width, height, value, min, max, step, transferFunc, reTransferFunc, urid, title), Clickable(), Draggable(), Scrollable(), KeyPressable(), fineTuned_(false) { setActivatable(true); setEnterable(true); setKeyPressable(true); grabDevice(BDevices::Keys(BDevices::Keys::KeyType::shiftL)); grabDevice(BDevices::Keys(BDevices::Keys::KeyType::shiftR)); if (step == 0.0) setNrSubs(BWIDGETS_DEFAULT_NR_SUBSTEPS); } inline Widget* Dial::clone () const { Widget* f = new Dial (urid_, title_); f->copy (this); return f; } inline void Dial::copy (const Dial* that) { fineTuned_ = that->fineTuned_; KeyPressable::operator=(*that); Scrollable::operator= (*that); Draggable::operator= (*that); Clickable::operator= (*that); RadialMeter::copy (that); } inline void Dial::setStep (const double &step) { ValidatableRange::setStep(step); if (step == 0.0) setNrSubs(BWIDGETS_DEFAULT_NR_SUBSTEPS); } inline void Dial::enter () { if (isEnterable() && (!isEntered())) { grabDevice (BDevices::Keys()); Widget::enter(); } } inline void Dial::leave () { if (isEnterable() && isEntered()) { if (isDeviceGrabbed(BDevices::Keys())) freeDevice(BDevices::Keys ()); Widget::leave(); } } inline void Dial::onButtonPressed (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast (event); if (!pev) return; enter(); if (scale_.getWidth() > 0) { const double xc = scale_.getX() + 0.5 * scale_.getWidth(); const double yc = scale_.getY() + 0.5 * scale_.getHeight(); const double dist = sqrt ((pev->getPosition().x - xc) * (pev->getPosition().x - xc) + (pev->getPosition().y - yc) * (pev->getPosition().y - yc)); if (dist > 0.1 * scale_.getWidth()) { double ang = ( pev->getPosition().y >= yc ? acos ((pev->getPosition().x - xc) / dist) : 2.0 * M_PI - acos ((pev->getPosition().x - xc) / dist) ); if (ang < BWIDGETS_DEFAULT_DRAWARC_START) ang += 2.0 * M_PI; if (ang <= BWIDGETS_DEFAULT_DRAWARC_END) { const double rval = (ang - BWIDGETS_DEFAULT_DRAWARC_START) / BWIDGETS_DEFAULT_DRAWARC_SIZE; if (getStep() >= 0) setValue (getValueFromRatio (rval)); else setValue (getValueFromRatio (1.0 - rval)); } } } Clickable::onButtonPressed (event); } inline void Dial::onPointerDragged (BEvents::Event* event) { if (isClickable()) onButtonPressed (event); else { BEvents::PointerEvent* pev = dynamic_cast (event); if (!pev) return; enter(); if (scale_.getWidth() > 0) { if (getStep() != 0.0) setValue (getValue() - pev->getDelta().y * (fineTuned_ ? getSubStep() : getStep())); else { const double step = (fineTuned_ ? 1.0 / ((static_cast(getNrSubs() + 1.0)) * 0.5 * scale_.getWidth() * BWIDGETS_DEFAULT_DRAWARC_SIZE) : 1.0 / (0.5 * scale_.getWidth() * BWIDGETS_DEFAULT_DRAWARC_SIZE)); setValue (getValueFromRatio (getRatioFromValue (getValue()) - pev->getDelta().y * step)); } } } Draggable::onPointerDragged (event); } inline void Dial::onWheelScrolled (BEvents::Event* event) { BEvents::WheelEvent* wev = dynamic_cast (event); if (!wev) return; if (scale_.getWidth() > 0) { if (getStep() != 0.0) setValue (getValue() + wev->getDelta().y * (fineTuned_ ? getSubStep() : getStep())); else { const double step = (fineTuned_ ? 1.0 / ((static_cast(getNrSubs() + 1.0)) * 0.5 * scale_.getWidth() * BWIDGETS_DEFAULT_DRAWARC_SIZE) : 1.0 / (0.5 * scale_.getWidth() * BWIDGETS_DEFAULT_DRAWARC_SIZE)); setValue (getValueFromRatio (getRatioFromValue (getValue()) + wev->getDelta().y * step)); } } Scrollable::onWheelScrolled (event); } inline void Dial::onKeyPressed (BEvents::Event* event) { BEvents::KeyEvent* kev = dynamic_cast(event); if (!kev) return; if (kev->getWidget() != this) return; //BDevices::Keys::KeyType key = static_cast(kev->getKey ()); switch (kev->getKey ()) { case BDevices::Keys::keyCode(BDevices::Keys::KeyType::shiftL): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::shiftR): fineTuned_ = true; break; case '-': case BDevices::Keys::keyCode(BDevices::Keys::KeyType::down): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::left): { BEvents::WheelEvent wev = BEvents::WheelEvent(this, BEvents::Event::EventType::wheelScrollEvent, 0.5 * getWidth(), 0.5 * getHeight(), 0, 1); onWheelScrolled(&wev); } break; case '+': case BDevices::Keys::keyCode(BDevices::Keys::KeyType::up): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::right): { BEvents::WheelEvent wev = BEvents::WheelEvent(this, BEvents::Event::EventType::wheelScrollEvent, 0.5 * getWidth(), 0.5 * getHeight(), 0, -1); onWheelScrolled(&wev); } break; case BDevices::Keys::keyCode(BDevices::Keys::KeyType::escape): leave(); break; default: break; } KeyPressable::onKeyPressed(event); } inline void Dial::onKeyReleased (BEvents::Event* event) { BEvents::KeyEvent* kev = dynamic_cast(event); if (!kev) return; if (kev->getWidget() != this) return; BDevices::Keys::KeyType key = static_cast(kev->getKey ()); switch (key) { case BDevices::Keys::KeyType::shiftL: case BDevices::Keys::KeyType::shiftR: fineTuned_ = false; break; default: break; } KeyPressable::onKeyReleased(event); } inline void Dial::draw () { draw (0, 0, getWidth(), getHeight()); } inline void Dial::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void Dial::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; // Draw super class widget elements first Widget::draw (area); // Draw only if minimum requirements satisfied if ((getHeight () >= 1) && (getWidth () >= 1)) { cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); const double rval = getRatioFromValue (getValue()); const double rad = 0.5 * (scale_.getWidth() < scale_.getHeight() ? scale_.getWidth() : scale_.getHeight()); if (step_ >= 0.0) { drawArc (cr, scale_.getX() + 0.5 * scale_.getWidth(), scale_.getY() + 0.5 * scale_.getHeight(), rad - 1.0, 0.0, rval, BWIDGETS_DEFAULT_DIAL_ARC_FGCOLOR, BWIDGETS_DEFAULT_DIAL_ARC_BGCOLOR); drawKnob(cr, scale_.getX() + 0.5 * scale_.getWidth(), scale_.getY() + 0.5 * scale_.getHeight(), BWIDGETS_DEFAULT_DIAL_KNOB_REL_SIZE * (rad - 1.0), 1.0, BWIDGETS_DEFAULT_DIAL_KNOB_COLOR, BWIDGETS_DEFAULT_DIAL_KNOB_COLOR); drawArcHandle (cr, scale_.getX() + 0.5 * scale_.getWidth(), scale_.getY() + 0.5 * scale_.getHeight(), rad - 1.0, rval, BWIDGETS_DEFAULT_DIAL_ARC_FGCOLOR, BWIDGETS_DEFAULT_DIAL_ARC_BGCOLOR); } else { drawArc (cr, scale_.getX() + 0.5 * scale_.getWidth(), scale_.getY() + 0.5 * scale_.getHeight(), rad - 1.0, 1.0 - rval, 1.0, BWIDGETS_DEFAULT_DIAL_ARC_FGCOLOR, BWIDGETS_DEFAULT_DIAL_ARC_BGCOLOR); drawKnob(cr, scale_.getX() + 0.5 * scale_.getWidth(), scale_.getY() + 0.5 * scale_.getHeight(), BWIDGETS_DEFAULT_DIAL_KNOB_REL_SIZE * (rad - 1.0), 1.0, BWIDGETS_DEFAULT_DIAL_KNOB_COLOR, BWIDGETS_DEFAULT_DIAL_KNOB_COLOR); drawArcHandle (cr, scale_.getX() + 0.5 * scale_.getWidth(), scale_.getY() + 0.5 * scale_.getHeight(), rad - 1.0, 1.0 - rval, BWIDGETS_DEFAULT_DIAL_ARC_FGCOLOR, BWIDGETS_DEFAULT_DIAL_ARC_BGCOLOR); } } cairo_destroy (cr); } } } #endif /* BWIDGETS_DIAL_HPP_ */ src/BWidgets/BWidgets/Draws/000077500000000000000000000000001515163050000161415ustar00rootroot00000000000000src/BWidgets/BWidgets/Draws/Ergo/000077500000000000000000000000001515163050000170355ustar00rootroot00000000000000src/BWidgets/BWidgets/Draws/Ergo/definitions.hpp000066400000000000000000000064451515163050000220720ustar00rootroot00000000000000#ifndef BWIDGETS_DEFAULT_DRAWARC_PATH #define BWIDGETS_DEFAULT_DRAWARC_PATH "Draws/Ergo/drawArc.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWKNOB_PATH #define BWIDGETS_DEFAULT_DRAWKNOB_PATH "Draws/Ergo/drawKnob.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWARCHANDLE_PATH #define BWIDGETS_DEFAULT_DRAWARCHANDLE_PATH "Draws/Ergo/drawArcHandle.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWHBAR_PATH #define BWIDGETS_DEFAULT_DRAWHBAR_PATH "Draws/Ergo/drawHBar.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWHMETER_PATH #define BWIDGETS_DEFAULT_DRAWHMETER_PATH "Draws/Ergo/drawHMeter.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWBUTTON_PATH #define BWIDGETS_DEFAULT_DRAWBUTTON_PATH "Draws/Ergo/drawButton.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWPAD_PATH #define BWIDGETS_DEFAULT_DRAWPAD_PATH "Draws/Ergo/drawPad.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWRMETER_PATH #define BWIDGETS_DEFAULT_DRAWRMETER_PATH "Draws/Ergo/drawRMeter.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWVBAR_PATH #define BWIDGETS_DEFAULT_DRAWVBAR_PATH "Draws/Ergo/drawVBar.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWVMETER_PATH #define BWIDGETS_DEFAULT_DRAWVMETER_PATH "Draws/Ergo/drawVMeter.hpp" #endif #ifndef BWIDGETS_DEFAULT_DIAL_ARC_FGCOLOR #define BWIDGETS_DEFAULT_DIAL_ARC_FGCOLOR getFgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_DIAL_ARC_BGCOLOR #define BWIDGETS_DEFAULT_DIAL_ARC_BGCOLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_DIAL_KNOB_REL_SIZE #define BWIDGETS_DEFAULT_DIAL_KNOB_REL_SIZE 0.6 #endif #ifndef BWIDGETS_DEFAULT_DIAL_KNOB_COLOR #define BWIDGETS_DEFAULT_DIAL_KNOB_COLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SLIDER_BAR_REL_SIZE #define BWIDGETS_DEFAULT_SLIDER_BAR_REL_SIZE 0.5 #endif #ifndef BWIDGETS_DEFAULT_SLIDER_BAR_FGCOLOR #define BWIDGETS_DEFAULT_SLIDER_BAR_FGCOLOR getFgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SLIDER_BAR_BGCOLOR #define BWIDGETS_DEFAULT_SLIDER_BAR_BGCOLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SLIDER_KNOB_REL_SIZE #define BWIDGETS_DEFAULT_SLIDER_KNOB_REL_SIZE 1.0 #endif #ifndef BWIDGETS_DEFAULT_SLIDER_KNOB_COLOR #define BWIDGETS_DEFAULT_SLIDER_KNOB_COLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SWITCH_BAR_REL_SIZE #define BWIDGETS_DEFAULT_SWITCH_BAR_REL_SIZE 1.0 #endif #ifndef BWIDGETS_DEFAULT_SWITCH_BAR_FGCOLOR #define BWIDGETS_DEFAULT_SWITCH_BAR_FGCOLOR getFgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SWITCH_BAR_BGCOLOR #define BWIDGETS_DEFAULT_SWITCH_BAR_BGCOLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SWITCH_KNOB_REL_SIZE #define BWIDGETS_DEFAULT_SWITCH_KNOB_REL_SIZE 0.95 #endif #ifndef BWIDGETS_DEFAULT_SWITCH_KNOB_COLOR #define BWIDGETS_DEFAULT_SWITCH_KNOB_COLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_BAR_REL_SIZE #define BWIDGETS_DEFAULT_SCROLLBAR_BAR_REL_SIZE 1.0 #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_BAR_FGCOLOR #define BWIDGETS_DEFAULT_SCROLLBAR_BAR_FGCOLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_BAR_BGCOLOR #define BWIDGETS_DEFAULT_SCROLLBAR_BAR_BGCOLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_KNOB_REL_SIZE #define BWIDGETS_DEFAULT_SCROLLBAR_KNOB_REL_SIZE 0.25 #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_KNOB_COLOR #define BWIDGETS_DEFAULT_SCROLLBAR_KNOB_COLOR getBgColors()[getStatus()] #endifsrc/BWidgets/BWidgets/Draws/Ergo/drawArc.hpp000066400000000000000000000146121515163050000211350ustar00rootroot00000000000000/* drawArc.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWARC_HPP_ #define BWIDGETS_DRAWARC_HPP_ #include #include "../../../BUtilities/cairoplus.h" #include #include "../../../BStyles/Types/Color.hpp" #ifndef BWIDGETS_DEFAULT_DRAWARC_START #define BWIDGETS_DEFAULT_DRAWARC_START (M_PI * 0.75) #endif #ifndef BWIDGETS_DEFAULT_DRAWARC_END #define BWIDGETS_DEFAULT_DRAWARC_END (M_PI * 2.25) #endif #ifndef BWIDGETS_DEFAULT_DRAWARC_SIZE #define BWIDGETS_DEFAULT_DRAWARC_SIZE (BWIDGETS_DEFAULT_DRAWARC_END - BWIDGETS_DEFAULT_DRAWARC_START) #endif /** * @brief Draws a pseudo 3d arc in a Cairo context. * @param cr Cairo context. * @param xc X center position. * @param y0 Y center position. * @param radius Arc radius. * @param min Start of activated (highlighted) part of the arc. Relative * value [0..1]. * @param max End of activated (highlighted) part of the arc. Relative * value [0..1]. * @param fgColor RGBA color for the activated part. * @param bgColor Bar RGBA color. */ inline void drawArc (cairo_t* cr, const double xc, const double yc, const double radius, const double min, const double max, const BStyles::Color fgColor, const BStyles::Color bgColor) { cairo_save (cr); cairo_set_line_width (cr, 0.0); // Colors used const BStyles::Color fgHi = fgColor.illuminate (BStyles::Color::illuminated); //const BStyles::Color fgMid = fgColor.illuminate (0.5 * BStyles::Color::illuminated); const BStyles::Color fgLo = fgColor; //const BStyles::Color bgLo = bgColor; const BStyles::Color bgHi = bgColor.illuminate (BStyles::Color::illuminated); const BStyles::Color bgSh = bgColor.illuminate (BStyles::Color::shadowed); // Arc cairo_set_source_rgba (cr, CAIRO_RGBA(bgSh)); cairo_arc (cr, xc, yc, 0.96 * radius, BWIDGETS_DEFAULT_DRAWARC_START, BWIDGETS_DEFAULT_DRAWARC_END); cairo_arc_negative (cr, xc, yc, 0.70 * radius, BWIDGETS_DEFAULT_DRAWARC_END, BWIDGETS_DEFAULT_DRAWARC_START); cairo_close_path (cr); cairo_fill (cr); // Illumination arc top left cairo_pattern_t* pat = cairo_pattern_create_linear (xc + radius, yc + radius, xc - radius, yc - radius); if (pat && (cairo_pattern_status (pat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (pat, 1, CAIRO_RGBA(bgHi)); cairo_pattern_add_color_stop_rgba (pat, 0, CAIRO_RGBA(bgSh)); cairo_arc (cr, xc, yc, 0.96 * radius, BWIDGETS_DEFAULT_DRAWARC_START, M_PI * 1.75); cairo_arc_negative (cr, xc + 1.0, yc + 1.0, 0.96 * radius, M_PI * 1.75, BWIDGETS_DEFAULT_DRAWARC_START); cairo_close_path (cr); cairo_set_source (cr, pat); cairo_fill (cr); cairo_pattern_destroy (pat); } // Illumination arc bottom right pat = cairo_pattern_create_linear (xc + radius, yc + radius, xc - radius, yc - radius); if (pat && (cairo_pattern_status (pat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (pat, 1, CAIRO_RGBA(bgHi)); cairo_pattern_add_color_stop_rgba (pat, 0, CAIRO_RGBA(bgSh)); cairo_arc_negative (cr, xc, yc, 0.70 * radius, BWIDGETS_DEFAULT_DRAWARC_END, M_PI * 1.75); cairo_arc (cr, xc + 1.0, yc + 1.0, 0.70 * radius, M_PI * 1.75, BWIDGETS_DEFAULT_DRAWARC_END); cairo_close_path (cr); cairo_set_source (cr, pat); cairo_fill (cr); cairo_pattern_destroy (pat); } // Fill pat = cairo_pattern_create_linear (xc - radius, yc - radius, xc + radius, yc + radius); if (pat && (cairo_pattern_status (pat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (pat, 0.0, CAIRO_RGBA(fgHi)); cairo_pattern_add_color_stop_rgba (pat, 1, CAIRO_RGBA(fgLo)); cairo_arc (cr, xc, yc, 0.96 * radius - 0.2, BWIDGETS_DEFAULT_DRAWARC_START + min * BWIDGETS_DEFAULT_DRAWARC_SIZE, BWIDGETS_DEFAULT_DRAWARC_START + max * BWIDGETS_DEFAULT_DRAWARC_SIZE); cairo_arc_negative (cr, xc, yc, 0.7 * radius - 0.2, BWIDGETS_DEFAULT_DRAWARC_START + max * BWIDGETS_DEFAULT_DRAWARC_SIZE, BWIDGETS_DEFAULT_DRAWARC_START + min * BWIDGETS_DEFAULT_DRAWARC_SIZE); cairo_close_path (cr); cairo_set_source (cr, pat); cairo_fill (cr); cairo_pattern_destroy (pat); } // Edges of the arc pat = cairo_pattern_create_linear (xc + radius, yc + radius, xc - radius, yc - radius); if (pat && (cairo_pattern_status (pat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (pat, 1, CAIRO_RGBA(bgHi)); cairo_pattern_add_color_stop_rgba (pat, 0, CAIRO_RGBA(bgSh)); cairo_set_line_width (cr, 0.2); cairo_arc_negative (cr, xc, yc , 0.70 * radius, BWIDGETS_DEFAULT_DRAWARC_END, BWIDGETS_DEFAULT_DRAWARC_START); cairo_line_to (cr, xc + 0.96 * radius * cos (BWIDGETS_DEFAULT_DRAWARC_START), yc + 0.96 * radius * sin (BWIDGETS_DEFAULT_DRAWARC_START)); cairo_set_source (cr, pat); cairo_stroke (cr); cairo_pattern_destroy (pat); } pat = cairo_pattern_create_linear (xc + radius, yc + radius, xc - radius, yc - radius); if (pat && (cairo_pattern_status (pat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (pat, 1, CAIRO_RGBA(bgHi)); cairo_pattern_add_color_stop_rgba (pat, 0, CAIRO_RGBA(bgSh)); cairo_set_line_width (cr, 0.2); cairo_arc (cr, xc, yc, 0.96 * radius, BWIDGETS_DEFAULT_DRAWARC_START, BWIDGETS_DEFAULT_DRAWARC_END); cairo_line_to (cr, xc + 0.70 * radius * cos (BWIDGETS_DEFAULT_DRAWARC_END), yc + 0.70 * radius * sin (BWIDGETS_DEFAULT_DRAWARC_END)); cairo_set_source (cr, pat); cairo_stroke (cr); cairo_pattern_destroy (pat); } cairo_restore(cr); } #endif /* BWIDGETS_DRAWARC_HPP_ */src/BWidgets/BWidgets/Draws/Ergo/drawArcHandle.hpp000066400000000000000000000047151515163050000222540ustar00rootroot00000000000000/* drawArcHandle.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWARCHANDLE_HPP_ #define BWIDGETS_DRAWARCHANDLE_HPP_ #include #include "../../../BUtilities/cairoplus.h" #include #include "../../../BStyles/Types/Color.hpp" #ifndef BWIDGETS_DEFAULT_DRAWARC_START #define BWIDGETS_DEFAULT_DRAWARC_START (M_PI * 0.75) #endif #ifndef BWIDGETS_DEFAULT_DRAWARC_END #define BWIDGETS_DEFAULT_DRAWARC_END (M_PI * 2.25) #endif #ifndef BWIDGETS_DEFAULT_DRAWARC_SIZE #define BWIDGETS_DEFAULT_DRAWARC_SIZE (BWIDGETS_DEFAULT_DRAWARC_END - BWIDGETS_DEFAULT_DRAWARC_START) #endif /** * @brief Draws a knob spot as a handle for pseudo 3d arc in a Cairo * context. * @param cr Cairo context. * @param xc X center position. * @param y0 Y center position. * @param radius Arc radius. * @param min Start of activated (highlighted) part of the arc. Relative * value [0..1]. * @param max End of activated (highlighted) part of the arc. Relative * value [0..1]. * @param fgColor RGBA color for the activated part. * @param bgColor Bar RGBA color. */ inline void drawArcHandle (cairo_t* cr, const double xc, const double yc, const double radius, const double rval, const BStyles::Color fgColor, const BStyles::Color bgColor) { cairo_save (cr); cairo_set_source_rgba(cr, CAIRO_RGBA(fgColor)); cairo_set_line_width(cr, 0.0); cairo_arc ( cr, xc + 0.4 * radius * cos (BWIDGETS_DEFAULT_DRAWARC_START + rval * BWIDGETS_DEFAULT_DRAWARC_SIZE), yc + 0.4 * radius * sin (BWIDGETS_DEFAULT_DRAWARC_START + rval * BWIDGETS_DEFAULT_DRAWARC_SIZE), 0.075 * radius, 0.0, 2.0 * M_PI ); cairo_fill (cr); cairo_restore(cr); } #endif /* BWIDGETS_DRAWARCHANDLE_HPP_ */src/BWidgets/BWidgets/Draws/Ergo/drawButton.hpp000066400000000000000000000037761515163050000217140ustar00rootroot00000000000000/* drawButton.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWBUTTON_HPP_ #define BWIDGETS_DRAWBUTTON_HPP_ #include #include "../../../BStyles/Types/Color.hpp" #include "../../../BUtilities/cairoplus.h" /** * @brief Draws a pseudo 3d button in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param clicked True, if button clicked. Otherwise false. * @param fgColor RGBA color for the activated elements. * @param bgColor Bar RGBA color. */ inline void drawButton (cairo_t* cr, const double x0, const double y0, const double width, const double height, const bool clicked, const BStyles::Color fgColor, const BStyles::Color bgColor) { const BStyles::Color frameColor = bgColor.illuminate (clicked ? BStyles::Color::highLighted : BStyles::Color::darkened); cairo_save (cr); cairoplus_rectangle_rounded(cr, x0 + 0.5, y0 + 0.5, width - 1.0, height - 1.0, 0.15 * std::min (width, height), 0b1111); cairo_set_source_rgba(cr, CAIRO_RGBA(bgColor)); cairo_fill_preserve(cr); cairo_set_line_width(cr, 1.0); cairo_set_source_rgba(cr, CAIRO_RGBA(frameColor)); cairo_stroke (cr); cairo_restore (cr); } #endif /* BWIDGETS_DRAWBUTTON_HPP_ */src/BWidgets/BWidgets/Draws/Ergo/drawHBar.hpp000066400000000000000000000102761515163050000212460ustar00rootroot00000000000000/* drawHBar.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWHBAR_HPP_ #define BWIDGETS_DRAWHBAR_HPP_ #include #include "../../../BUtilities/cairoplus.h" #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a horizontal pseudo 3d bar in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param min Start of activated (highlighted) part of the bar. Relative * value [0..1]. * @param max End of activated (highlighted) part of the bar. Relative * value [0..1]. * @param fgColor RGBA color for the activated part. * @param bgColor Bar RGBA color. */ inline void drawHBar (cairo_t* cr, const double x0, const double y0, const double width, const double height, const double min, const double max, const BStyles::Color fgColor, const BStyles::Color bgColor) { const double x2 = x0 + min * width; const double x3 = x0 + max * width; //const double x4 = x0 + width; const double y4 = y0 + height; // Colors used const BStyles::Color fgHi = fgColor.illuminate (BStyles::Color::illuminated); const BStyles::Color fgLo = fgColor; const BStyles::Color bgLo = bgColor; const BStyles::Color bgHi = bgColor.illuminate (BStyles::Color::illuminated); const BStyles::Color bgSh = bgColor.illuminate (BStyles::Color::shadowed); cairo_save (cr); // Background cairo_set_line_width (cr, 0.0); cairo_pattern_t* pat = cairo_pattern_create_linear (x0, y0, x0, y4); if (pat && (cairo_pattern_status (pat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (pat, 0, CAIRO_RGBA(bgLo)); cairo_pattern_add_color_stop_rgba (pat, 1, CAIRO_RGBA(bgHi)); cairoplus_rectangle_rounded (cr, x0, y0, width, height, 0.5 * height, 0b1111); cairo_set_source (cr, pat); cairo_fill (cr); cairo_pattern_destroy (pat); } cairoplus_rectangle_rounded (cr, x0, y0, width, height, 0.5 * height, 0b1111); cairo_set_source_rgba (cr, CAIRO_RGBA(bgSh)); cairo_fill (cr); // Foreground pat = cairo_pattern_create_linear (x0, y0, x0, y4); if (pat && (cairo_pattern_status (pat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (pat, 0, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (pat, 0.25, CAIRO_RGBA(fgHi)); cairo_pattern_add_color_stop_rgba (pat, 1.0, CAIRO_RGBA(fgLo)); cairo_save (cr); cairoplus_rectangle_rounded (cr, x0 + 0.1 * height, y0 + 0.1 * height, std::max (width - 0.2 * height, 0.0), 0.8 * height, 0.5 * 0.8 * height, 0b1111); cairo_clip (cr); cairoplus_rectangle_rounded (cr, x2, y0 + 0.1 * height, x3 - x2, 0.8 * height, 0.5 * 0.8 * height, 0b1111); cairo_set_source (cr, pat); cairo_fill (cr); cairo_restore (cr); cairo_pattern_destroy (pat); } //Frame pat = cairo_pattern_create_linear (x0, y0, x0, y4); if (pat && (cairo_pattern_status (pat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (pat, 0, CAIRO_RGBA(bgLo)); cairo_pattern_add_color_stop_rgba (pat, 1, CAIRO_RGBA(bgHi)); cairoplus_rectangle_rounded (cr, x0, y0, width, height, 0.5 * height, 0b1111); cairo_set_source (cr, pat); cairo_set_line_width (cr, 0.05 * height); cairo_stroke (cr); cairo_pattern_destroy (pat); } cairo_restore (cr); } #endif /* BWIDGETS_DRAWHBAR_HPP_ */src/BWidgets/BWidgets/Draws/Ergo/drawHMeter.hpp000066400000000000000000000144301515163050000216120ustar00rootroot00000000000000/* drawHMeter.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWHMETER_HPP_ #define BWIDGETS_DRAWHMETER_HPP_ #include "../../../BUtilities/cairoplus.h" #include #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a segmented two colors horizontal pseudo 3d meter bar in a * Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param min Start of activated (highlighted) part of the meter. Relative * value [0..1]. * @param max End of activated (highlighted) part of the meter. Relative * value [0..1]. * @param step Size of each segment. * @param loColor RGBA color for the low values of the activated part. * @param hiColor RGBA color for the high values of the activated part. * @param gradient Color gradient function. * @param bgColor Bar RGBA color. */ inline void drawHMeter (cairo_t* cr, const double x0, const double y0, const double width, const double height, const double min, const double max, const double step, const BStyles::Color loColor, const BStyles::Color hiColor, std::function gradient, const BStyles::Color bgColor) { const int nrSteps = (step > 0 ? std::ceil (1.0 / step) : 10); const double dx = (width - 0.2 * height) * step; const BStyles::Color fgHi = loColor.illuminate (BStyles::Color::illuminated); const BStyles::Color fgLo = loColor; const BStyles::Color hiHi = hiColor.illuminate (BStyles::Color::illuminated); const BStyles::Color hiLo = hiColor; const BStyles::Color bgLo = bgColor.illuminate (BStyles::Color::shadowed); const BStyles::Color bgHi = bgColor; const BStyles::Color bgDk = bgColor.illuminate (-0.75); cairo_save (cr); // Background fill cairo_set_line_width (cr, 0.0); cairo_set_source_rgba (cr, CAIRO_RGBA(bgDk)); cairoplus_rectangle_rounded (cr, x0, y0, width, height, 0.2 * height, 0b1111); cairo_fill (cr); // Border cairo_pattern_t* pat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); if (pat && (cairo_pattern_status (pat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (pat, 0, CAIRO_RGBA(bgLo)); cairo_pattern_add_color_stop_rgba (pat, 1, CAIRO_RGBA(bgHi)); cairoplus_rectangle_rounded (cr, x0, y0, width, height, 0.2 * height, 0b1111); cairo_set_source (cr, pat); cairo_set_line_width (cr, 1.0); cairo_stroke (cr); cairo_pattern_destroy (pat); } // Fill cairo_set_line_width (cr, 0.0); cairo_pattern_t* fgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); cairo_pattern_t* bgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); if (fgPat && bgPat && (cairo_pattern_status (fgPat) == CAIRO_STATUS_SUCCESS) && (cairo_pattern_status (bgPat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(fgHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0, CAIRO_RGBA(bgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0.25, CAIRO_RGBA(bgHi)); cairo_pattern_add_color_stop_rgba (bgPat, 1, CAIRO_RGBA(bgLo)); const double dv = 0.5 / static_cast(nrSteps); for (int i = 0; i < nrSteps; ++i) { const double v = static_cast(i) / static_cast(nrSteps); if ((v + dv >= min) && (v + dv < max)) { if ((fgHi != hiHi) || (fgLo != hiLo)) { fgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); BStyles::Color cLo; cLo.setHSV ( fgLo.hue() * (1.0 - gradient (v)) + hiLo.hue() * gradient (v), fgLo.saturation() * (1.0 - gradient (v)) + hiLo.saturation() * gradient (v), fgLo.value() * (1.0 - gradient (v)) + hiLo.value() * gradient (v), fgLo.alpha * (1.0 - gradient (v)) + hiLo.alpha * gradient (v) ); BStyles::Color cHi; cHi.setHSV ( fgHi.hue() * (1.0 - gradient (v)) + hiHi.hue() * gradient (v), fgHi.saturation() * (1.0 - gradient (v)) + hiHi.saturation() * gradient (v), fgHi.value() * (1.0 - gradient (v)) + hiHi.value() * gradient (v), fgHi.alpha * (1.0 - gradient (v)) + hiHi.alpha * gradient (v) ); cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(cLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(cHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(cLo)); } cairo_set_source (cr, fgPat); } else cairo_set_source (cr, bgPat); const double x = v * (width - 0.2 * height); if (dx < 3.0) cairo_rectangle (cr, x0 + 0.1 * height + x, y0 + 0.1 * height, dx, height - 0.2 * height); else cairo_rectangle (cr, x0 + 0.1 * height + x + 1.0, y0 + 0.1 * height, dx - 2.0, height - 0.2 * height); cairo_fill (cr); } cairo_pattern_destroy (bgPat); cairo_pattern_destroy (fgPat); } cairo_restore (cr); } #endif /* BWIDGETS_DRAWHMETER_HPP_ */src/BWidgets/BWidgets/Draws/Ergo/drawKnob.hpp000066400000000000000000000075771515163050000213350ustar00rootroot00000000000000/* drawKnob.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWKNOB_HPP_ #define BWIDGETS_DRAWKNOB_HPP_ #include #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a pseudo 3D knob in a Cairo context. * @param cr Cairo context. * @param xc X center position. * @param yc Y center position. * @param radius Knob radius. * @param height Knob pseudo 3D height. * @param fgColor RGBA color for the knob top. * @param bgColor Knob body RGBA color. */ inline void drawKnob (cairo_t* cr, const double xc, const double yc, const double radius, const double height, const BStyles::Color fgColor, const BStyles::Color bgColor) { const BStyles::Color fgLo = fgColor; const BStyles::Color fgHi = fgColor.illuminate (BStyles::Color::illuminated); const BStyles::Color bgLo = bgColor; const BStyles::Color bgHi = bgColor.illuminate (BStyles::Color::illuminated); const BStyles::Color bgSg = bgColor.illuminate (BStyles::Color::shadowed); cairo_save (cr); cairo_set_line_width (cr, 0.0); // Knob top cairo_pattern_t* pat = cairo_pattern_create_radial (xc - 0.5 * radius - height, yc - 0.5 * radius - height, 0.1 * radius, xc + height, yc + height, 1.5 * radius); if (pat && (cairo_pattern_status (pat) == CAIRO_STATUS_SUCCESS)) { cairo_arc (cr, xc - 0.5 * height, yc - 0.5 * height, radius, 0, 2 * M_PI); cairo_close_path (cr); cairo_pattern_add_color_stop_rgba (pat, 0.0, CAIRO_RGBA (fgHi)); cairo_pattern_add_color_stop_rgba (pat, 1.0, CAIRO_RGBA (fgLo)); cairo_set_source (cr, pat); cairo_fill (cr); cairo_pattern_destroy (pat); } // Knob side pat = cairo_pattern_create_linear (xc - radius - height, yc - radius, xc + radius, yc - radius); if (pat && (cairo_pattern_status (pat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (pat, 1.00, CAIRO_RGBA (bgLo)); cairo_pattern_add_color_stop_rgba (pat, 0.825, CAIRO_RGBA (bgSg)); cairo_pattern_add_color_stop_rgba (pat, 0.0, CAIRO_RGBA (bgLo)); cairo_arc (cr, xc - 0.5 * height, yc - 0.5 * height, radius, -0.25 * M_PI, 0.75 * M_PI); cairo_arc_negative (cr, xc + 0.5 * height, yc + 0.5 * height, radius, 0.75 * M_PI, -0.25 * M_PI); cairo_close_path (cr); cairo_set_line_width (cr, 0.5); cairo_set_source (cr, pat); cairo_fill (cr); cairo_pattern_destroy (pat); } // Knob edge pat = cairo_pattern_create_linear ( xc + radius * cos (0.25 * M_PI) - height, yc + radius * sin (0.25 * M_PI) - height, xc - radius * cos (0.25 * M_PI) - height, yc - radius * sin (0.25 * M_PI) - height ); if (pat && (cairo_pattern_status (pat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (pat, 1.0, CAIRO_RGBA (bgHi)); cairo_pattern_add_color_stop_rgba (pat, 0.0, CAIRO_RGBA (bgSg)); cairo_arc (cr, xc - 0.5 * height, yc - 0.5 * height, radius, 0, 2 * M_PI); cairo_set_line_width (cr, 0.2 * height); cairo_set_source (cr, pat); cairo_stroke (cr); cairo_pattern_destroy (pat); } cairo_restore (cr); } #endif /* BWIDGETS_DRAWKNOB_HPP_ */src/BWidgets/BWidgets/Draws/Ergo/drawPad.hpp000066400000000000000000000040011515163050000211230ustar00rootroot00000000000000/* drawPad.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWPAD_HPP_ #define BWIDGETS_DRAWPAD_HPP_ #include #include "../../../BUtilities/cairoplus.h" #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws someting like an LED pad in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Pad width. * @param height Pad height. * @param fgColor RGBA color. */ inline void drawPad (cairo_t* cr, double x, double y, double width, double height, const BStyles::Color fgColor) { if ((width <= 0) || (height <= 0)) return; cairo_save(cr); // Draw button BStyles::Color illuminated = fgColor.illuminate (0.05); BStyles::Color darkened = fgColor.illuminate (-0.33); cairo_pattern_t* pat = cairo_pattern_create_radial (x + width / 2, y + height / 2, 0.125 * width, x + width / 2, y + height / 2, 0.5 * width); cairo_pattern_add_color_stop_rgba (pat, 0.0, CAIRO_RGBA (illuminated)); cairo_pattern_add_color_stop_rgba (pat, 1.0, CAIRO_RGBA (darkened)); double rad = ((width < 20) || (height < 20) ? (width < height ? width : height) / 4 : 5); cairoplus_rectangle_rounded (cr, x, y, width, height, rad, 0b1111); cairo_set_source (cr, pat); cairo_fill (cr); cairo_pattern_destroy (pat); cairo_restore (cr); } #endif /* BWIDGETS_DRAWPAD_HPP_ */ src/BWidgets/BWidgets/Draws/Ergo/drawRMeter.hpp000066400000000000000000000160141515163050000216240ustar00rootroot00000000000000/* drawRMeter.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWRMETER_HPP_ #define BWIDGETS_DRAWRMETER_HPP_ #include #include "../../../BUtilities/cairoplus.h" #include #include #include "../../../BStyles/Types/Color.hpp" #ifndef BWIDGETS_DEFAULT_DRAWRMETER_START #define BWIDGETS_DEFAULT_DRAWRMETER_START (M_PI * 0.75) #endif #ifndef BWIDGETS_DEFAULT_DRAWRMETER_END #define BWIDGETS_DEFAULT_DRAWRMETER_END (M_PI * 2.25) #endif #ifndef BWIDGETS_DEFAULT_DRAWRMETER_SIZE #define BWIDGETS_DEFAULT_DRAWRMETER_SIZE (BWIDGETS_DEFAULT_DRAWRMETER_END - BWIDGETS_DEFAULT_DRAWRMETER_START) #endif /** * @brief Draws a segmented two colors pseudo 3d arc in a Cairo context. * @param cr Cairo context. * @param xc X center position. * @param y0 Y center position. * @param radius Arc radius. * @param min Start of activated (highlighted) part of the arc. Relative * value [0..1]. * @param max End of activated (highlighted) part of the arc. Relative * value [0..1]. * @param step Size of each segment. * @param loColor RGBA color for the low values of the activated part. * @param hiColor RGBA color for the high values of the activated part. * @param gradient Color gradient function. * @param bgColor Bar RGBA color. */ inline void drawRMeter (cairo_t* cr, const double xc, const double yc, const double radius, const double min, const double max, const double step, const BStyles::Color loColor, const BStyles::Color hiColor, std::function gradient, const BStyles::Color bgColor) { // Colors used const int nrSteps = (step > 0 ? std::ceil (1.0 / step) : 10); const double da = (1.5 * M_PI) * step; const double sa = 1.0 / radius; const BStyles::Color fgHi = loColor.illuminate (BStyles::Color::illuminated); const BStyles::Color fgLo = loColor; const BStyles::Color hiHi = hiColor.illuminate (BStyles::Color::illuminated); const BStyles::Color hiLo = hiColor; const BStyles::Color bgLo = bgColor.illuminate (BStyles::Color::shadowed); const BStyles::Color bgHi = bgColor; const BStyles::Color bgDk = bgColor.illuminate (-0.75); cairo_save(cr); // Background fill cairo_set_line_width (cr, 0.0); cairo_set_source_rgba (cr, CAIRO_RGBA(bgDk)); cairo_arc (cr, xc, yc, 0.96 * radius, 0.75 * M_PI, 2.25 * M_PI); cairo_arc_negative (cr, xc, yc, 0.5 * radius, 2.25 * M_PI, 0.75 * M_PI); cairo_fill (cr); // Border cairo_pattern_t* pat = cairo_pattern_create_linear (xc - radius, yc - radius, xc + radius, yc + radius); if (pat && (cairo_pattern_status (pat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (pat, 0, CAIRO_RGBA(bgLo)); cairo_pattern_add_color_stop_rgba (pat, 1, CAIRO_RGBA(bgHi)); cairo_arc (cr, xc, yc, 0.96 * radius, 0.75 * M_PI, 2.25 * M_PI); cairo_arc_negative (cr, xc, yc, 0.5 * radius, 2.25 * M_PI, 0.75 * M_PI); cairo_set_source (cr, pat); cairo_set_line_width (cr, 1.0); cairo_stroke (cr); cairo_pattern_destroy (pat); } // Fill cairo_set_line_width (cr, 0.0); cairo_pattern_t* fgPat = cairo_pattern_create_linear (xc - radius, yc - radius, xc + radius, yc + radius); cairo_pattern_t* bgPat = cairo_pattern_create_linear (xc - radius, yc - radius, xc + radius, yc + radius); if (fgPat && bgPat && (cairo_pattern_status (fgPat) == CAIRO_STATUS_SUCCESS) && (cairo_pattern_status (bgPat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(fgHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0, CAIRO_RGBA(bgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0.25, CAIRO_RGBA(bgHi)); cairo_pattern_add_color_stop_rgba (bgPat, 1, CAIRO_RGBA(bgLo)); const double dv = 0.5 / static_cast(nrSteps); for (int i = 0; i < nrSteps; ++i) { const double v = static_cast(i) / static_cast(nrSteps); if ((v + dv >= min) && (v + dv < max)) { if ((fgHi != hiHi) || (fgLo != hiLo)) { fgPat = cairo_pattern_create_linear (xc - radius, yc - radius, xc + radius, yc + radius); BStyles::Color cLo; cLo.setHSV ( fgLo.hue() * (1.0 - gradient (v)) + hiLo.hue() * gradient (v), fgLo.saturation() * (1.0 - gradient (v)) + hiLo.saturation() * gradient (v), fgLo.value() * (1.0 - gradient (v)) + hiLo.value() * gradient (v), fgLo.alpha * (1.0 - gradient (v)) + hiLo.alpha * gradient (v) ); BStyles::Color cHi; cHi.setHSV ( fgHi.hue() * (1.0 - gradient (v)) + hiHi.hue() * gradient (v), fgHi.saturation() * (1.0 - gradient (v)) + hiHi.saturation() * gradient (v), fgHi.value() * (1.0 - gradient (v)) + hiHi.value() * gradient (v), fgHi.alpha * (1.0 - gradient (v)) + hiHi.alpha * gradient (v) ); cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(cLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(cHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(cLo)); } cairo_set_source (cr, fgPat); } else cairo_set_source (cr, bgPat); const double a = 0.75 * M_PI + v * (1.5 * M_PI); if (da < 3.0 * sa) { cairo_arc (cr, xc, yc, 0.91 * radius, a, a + da); cairo_arc_negative (cr, xc, yc, 0.55 * radius, a + da, a); } else { cairo_arc (cr, xc, yc, 0.91 * radius, a + sa, a + da - sa); cairo_arc_negative (cr, xc, yc, 0.55 * radius, a + da - sa, a + sa); } cairo_fill (cr); } cairo_pattern_destroy (bgPat); cairo_pattern_destroy (fgPat); } cairo_restore(cr); } #endif /* BWIDGETS_DRAWRMETER_HPP_ */src/BWidgets/BWidgets/Draws/Ergo/drawVBar.hpp000066400000000000000000000102231515163050000212540ustar00rootroot00000000000000/* drawVBar.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWVBAR_HPP_ #define BWIDGETS_DRAWVBAR_HPP_ #include #include "../../../BUtilities/cairoplus.h" #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a vertical pseudo 3d bar in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param min Start of activated (highlighted) part of the bar. Relative * value [0..1]. * @param max End of activated (highlighted) part of the bar. Relative * value [0..1]. * @param fgColor RGBA color for the activated part. * @param bgColor Bar RGBA color. */ inline void drawVBar (cairo_t* cr, const double x0, const double y0, const double width, const double height, const double min, const double max, const BStyles::Color fgColor, const BStyles::Color bgColor) { const double y2 = y0 + min * height; const double y3 = y0 + max * height; const double x4 = x0 + width; //const double y4 = y0 + height; cairo_save(cr); // Colors used BStyles::Color fgHi = fgColor.illuminate (BStyles::Color::illuminated); BStyles::Color fgLo = fgColor; BStyles::Color bgLo = bgColor; BStyles::Color bgHi = bgColor.illuminate (BStyles::Color::illuminated); BStyles::Color bgSh = bgColor.illuminate (BStyles::Color::shadowed); // Background cairo_set_line_width (cr, 0.0); cairo_pattern_t* pat = cairo_pattern_create_linear (x0, y0, x4, y0); if (pat && (cairo_pattern_status (pat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (pat, 0, CAIRO_RGBA(bgLo)); cairo_pattern_add_color_stop_rgba (pat, 1, CAIRO_RGBA(bgHi)); cairoplus_rectangle_rounded (cr, x0, y0, width, height, 0.5 * width, 0b1111); cairo_set_source (cr, pat); cairo_fill (cr); cairo_pattern_destroy (pat); } cairoplus_rectangle_rounded (cr, x0, y0, width, height, 0.5 * width, 0b1111); cairo_set_source_rgba (cr, CAIRO_RGBA(bgSh)); cairo_fill (cr); // Foreground pat = cairo_pattern_create_linear (x0, y0, x4, y0); if (pat && (cairo_pattern_status (pat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (pat, 0, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (pat, 0.25, CAIRO_RGBA(fgHi)); cairo_pattern_add_color_stop_rgba (pat, 1.0, CAIRO_RGBA(fgLo)); cairo_save (cr); cairoplus_rectangle_rounded (cr, x0 + 0.1 * width, y0 + 0.1 * width, 0.8 * width, std::max (height - 0.2 * width, 0.0), 0.5 * 0.8 * width, 0b1111); cairo_clip (cr); cairoplus_rectangle_rounded (cr, x0 + 0.1 * width, y2, 0.8 * width, y3 - y2, 0.5 * 0.8 * width, 0b1111); cairo_set_source (cr, pat); cairo_fill (cr); cairo_restore (cr); cairo_pattern_destroy (pat); } //Frame pat = cairo_pattern_create_linear (x0, y0, x4, y0); if (pat && (cairo_pattern_status (pat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (pat, 0, CAIRO_RGBA(bgLo)); cairo_pattern_add_color_stop_rgba (pat, 1, CAIRO_RGBA(bgHi)); cairoplus_rectangle_rounded (cr, x0, y0, width, height, 0.5 * width, 0b1111); cairo_set_source (cr, pat); cairo_set_line_width (cr, 0.05 * width); cairo_stroke (cr); cairo_pattern_destroy (pat); } cairo_restore(cr); } #endif /* BWIDGETS_DRAWVBAR_HPP_ */src/BWidgets/BWidgets/Draws/Ergo/drawVMeter.hpp000066400000000000000000000144461515163050000216370ustar00rootroot00000000000000/* drawVMeter.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWVMETER_HPP_ #define BWIDGETS_DRAWVMETER_HPP_ #include "../../../BUtilities/cairoplus.h" #include #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a segmented two colors vertical pseudo 3d meter bar in a * Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param min Start of activated (highlighted) part of the meter. Relative * value [0..1]. * @param max End of activated (highlighted) part of the meter. Relative * value [0..1]. * @param step Size of each segment. * @param loColor RGBA color for the low values of the activated part. * @param hiColor RGBA color for the high values of the activated part. * @param gradient Color gradient function. * @param bgColor Bar RGBA color. */ inline void drawVMeter (cairo_t* cr, const double x0, const double y0, const double width, const double height, const double min, const double max, const double step, const BStyles::Color loColor, const BStyles::Color hiColor, std::function gradient, const BStyles::Color bgColor) { const int nrSteps = (step > 0 ? std::ceil (1.0 / step) : 10); const double dy = (height - 0.2 * width) * step; const BStyles::Color fgHi = loColor.illuminate (BStyles::Color::illuminated); const BStyles::Color fgLo = loColor; const BStyles::Color hiHi = hiColor.illuminate (BStyles::Color::illuminated); const BStyles::Color hiLo = hiColor; const BStyles::Color bgLo = bgColor.illuminate (BStyles::Color::shadowed); const BStyles::Color bgHi = bgColor; const BStyles::Color bgDk = bgColor.illuminate (-0.75); cairo_save(cr); // Background fill cairo_set_line_width (cr, 0.0); cairo_set_source_rgba (cr, CAIRO_RGBA(bgDk)); cairoplus_rectangle_rounded (cr, x0, y0, width, height, 0.2 * width, 0b1111); cairo_fill (cr); // Border cairo_pattern_t* pat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); if (pat && (cairo_pattern_status (pat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (pat, 0, CAIRO_RGBA(bgLo)); cairo_pattern_add_color_stop_rgba (pat, 1, CAIRO_RGBA(bgHi)); cairoplus_rectangle_rounded (cr, x0, y0, width, height, 0.2 * width, 0b1111); cairo_set_source (cr, pat); cairo_set_line_width (cr, 1.0); cairo_stroke (cr); cairo_pattern_destroy (pat); } // Fill cairo_set_line_width (cr, 0.0); cairo_pattern_t* fgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); cairo_pattern_t* bgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); if (fgPat && bgPat && (cairo_pattern_status (fgPat) == CAIRO_STATUS_SUCCESS) && (cairo_pattern_status (bgPat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(fgHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0, CAIRO_RGBA(bgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0.25, CAIRO_RGBA(bgHi)); cairo_pattern_add_color_stop_rgba (bgPat, 1, CAIRO_RGBA(bgLo)); const double dv = 0.5 / static_cast(nrSteps); for (int i = 0; i < nrSteps; ++i) { const double v = static_cast(i) / static_cast(nrSteps); if ((v + dv >= min) && (v + dv < max)) { if ((fgHi != hiHi) || (fgLo != hiLo)) { fgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); BStyles::Color cLo; cLo.setHSV ( fgLo.hue() * (1.0 - gradient (v)) + hiLo.hue() * gradient (v), fgLo.saturation() * (1.0 - gradient (v)) + hiLo.saturation() * gradient (v), fgLo.value() * (1.0 - gradient (v)) + hiLo.value() * gradient (v), fgLo.alpha * (1.0 - gradient (v)) + hiLo.alpha * gradient (v) ); BStyles::Color cHi; cHi.setHSV ( fgHi.hue() * (1.0 - gradient (v)) + hiHi.hue() * gradient (v), fgHi.saturation() * (1.0 - gradient (v)) + hiHi.saturation() * gradient (v), fgHi.value() * (1.0 - gradient (v)) + hiHi.value() * gradient (v), fgHi.alpha * (1.0 - gradient (v)) + hiHi.alpha * gradient (v) ); cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(cLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(cHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(cLo)); } cairo_set_source (cr, fgPat); } else cairo_set_source (cr, bgPat); const double y = v * (height - 0.2 * width); if (dy < 3.0) cairo_rectangle (cr, x0 + 0.1 * width , y0 + height - 0.1 * width - y - dy, width - 0.2 * width, dy); else cairo_rectangle (cr, x0 + 0.1 * width, y0 + height - 0.1 * width - y - dy + 1.0, width - 0.2 * width, dy - 2.0); cairo_fill (cr); } cairo_pattern_destroy (bgPat); cairo_pattern_destroy (fgPat); } cairo_restore(cr); } #endif /* BWIDGETS_DRAWVMETER_HPP_ */src/BWidgets/BWidgets/Draws/Flow/000077500000000000000000000000001515163050000170505ustar00rootroot00000000000000src/BWidgets/BWidgets/Draws/Flow/definitions.hpp000066400000000000000000000065641515163050000221070ustar00rootroot00000000000000#ifndef BWIDGETS_DEFAULT_DRAWARC_PATH #define BWIDGETS_DEFAULT_DRAWARC_PATH "Draws/Flow/drawArc.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWKNOB_PATH #define BWIDGETS_DEFAULT_DRAWKNOB_PATH "Draws/Flow/drawKnob.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWARCHANDLE_PATH #define BWIDGETS_DEFAULT_DRAWARCHANDLE_PATH "Draws/Flow/drawArcHandle.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWHBAR_PATH #define BWIDGETS_DEFAULT_DRAWHBAR_PATH "Draws/Flow/drawHBar.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWVBAR_PATH #define BWIDGETS_DEFAULT_DRAWVBAR_PATH "Draws/Flow/drawVBar.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWHMETER_PATH #define BWIDGETS_DEFAULT_DRAWHMETER_PATH "Draws/Flow/drawHMeter.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWVMETER_PATH #define BWIDGETS_DEFAULT_DRAWVMETER_PATH "Draws/Flow/drawVMeter.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWRMETER_PATH #define BWIDGETS_DEFAULT_DRAWRMETER_PATH "Draws/Flow/drawRMeter.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWBUTTON_PATH #define BWIDGETS_DEFAULT_DRAWBUTTON_PATH "Draws/Flow/drawButton.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWPAD_PATH #define BWIDGETS_DEFAULT_DRAWPAD_PATH "Draws/Flow/drawPad.hpp" #endif #ifndef BWIDGETS_DEFAULT_DIAL_ARC_FGCOLOR #define BWIDGETS_DEFAULT_DIAL_ARC_FGCOLOR getFgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_DIAL_ARC_BGCOLOR #define BWIDGETS_DEFAULT_DIAL_ARC_BGCOLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_DIAL_KNOB_REL_SIZE #define BWIDGETS_DEFAULT_DIAL_KNOB_REL_SIZE 0.8 #endif #ifndef BWIDGETS_DEFAULT_DIAL_KNOB_COLOR #define BWIDGETS_DEFAULT_DIAL_KNOB_COLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SLIDER_BAR_REL_SIZE #define BWIDGETS_DEFAULT_SLIDER_BAR_REL_SIZE 0.25 #endif #ifndef BWIDGETS_DEFAULT_SLIDER_BAR_FGCOLOR #define BWIDGETS_DEFAULT_SLIDER_BAR_FGCOLOR getFgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SLIDER_BAR_BGCOLOR #define BWIDGETS_DEFAULT_SLIDER_BAR_BGCOLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SLIDER_KNOB_REL_SIZE #define BWIDGETS_DEFAULT_SLIDER_KNOB_REL_SIZE 1.0 #endif #ifndef BWIDGETS_DEFAULT_SLIDER_KNOB_COLOR #define BWIDGETS_DEFAULT_SLIDER_KNOB_COLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SWITCH_BAR_REL_SIZE #define BWIDGETS_DEFAULT_SWITCH_BAR_REL_SIZE 0.9 #endif #ifndef BWIDGETS_DEFAULT_SWITCH_BAR_FGCOLOR #define BWIDGETS_DEFAULT_SWITCH_BAR_FGCOLOR getFgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SWITCH_BAR_BGCOLOR #define BWIDGETS_DEFAULT_SWITCH_BAR_BGCOLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SWITCH_KNOB_REL_SIZE #define BWIDGETS_DEFAULT_SWITCH_KNOB_REL_SIZE 1.0 #endif #ifndef BWIDGETS_DEFAULT_SWITCH_KNOB_COLOR #define BWIDGETS_DEFAULT_SWITCH_KNOB_COLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_BAR_REL_SIZE #define BWIDGETS_DEFAULT_SCROLLBAR_BAR_REL_SIZE 1.0 #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_BAR_FGCOLOR #define BWIDGETS_DEFAULT_SCROLLBAR_BAR_FGCOLOR getBgColors()[getStatus()].illuminate(BStyles::Color::illuminated) #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_BAR_BGCOLOR #define BWIDGETS_DEFAULT_SCROLLBAR_BAR_BGCOLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_KNOB_REL_SIZE #define BWIDGETS_DEFAULT_SCROLLBAR_KNOB_REL_SIZE 0.25 #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_KNOB_COLOR #define BWIDGETS_DEFAULT_SCROLLBAR_KNOB_COLOR getBgColors()[getStatus()].illuminate(BStyles::Color::illuminated) #endifsrc/BWidgets/BWidgets/Draws/Flow/drawArc.hpp000066400000000000000000000050431515163050000211460ustar00rootroot00000000000000/* drawArc.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWARC_HPP_ #define BWIDGETS_DRAWARC_HPP_ #include #include #include "../../../BStyles/Types/Color.hpp" #ifndef BWIDGETS_DEFAULT_DRAWARC_START #define BWIDGETS_DEFAULT_DRAWARC_START (M_PI * 0.75) #endif #ifndef BWIDGETS_DEFAULT_DRAWARC_END #define BWIDGETS_DEFAULT_DRAWARC_END (M_PI * 2.25) #endif #ifndef BWIDGETS_DEFAULT_DRAWARC_SIZE #define BWIDGETS_DEFAULT_DRAWARC_SIZE (BWIDGETS_DEFAULT_DRAWARC_END - BWIDGETS_DEFAULT_DRAWARC_START) #endif /** * @brief Draws an arc in a Cairo context. * @param cr Cairo context. * @param xc X center position. * @param y0 Y center position. * @param radius Arc radius. * @param min Start of activated (highlighted) part of the arc. Relative * value [0..1]. * @param max End of activated (highlighted) part of the arc. Relative * value [0..1]. * @param fgColor RGBA color for the activated part. * @param bgColor Bar RGBA color. */ inline void drawArc (cairo_t* cr, const double xc, const double yc, const double radius, const double min, const double max, const BStyles::Color fgColor, const BStyles::Color bgColor) { cairo_save (cr); cairo_set_line_width (cr, 0.05 * radius); cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); // Arc cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor.illuminate(BStyles::Color::shadowed))); cairo_arc (cr, xc, yc, 0.9 * radius, BWIDGETS_DEFAULT_DRAWARC_START, BWIDGETS_DEFAULT_DRAWARC_END); cairo_stroke (cr); // Fill cairo_set_source_rgba (cr, CAIRO_RGBA(fgColor)); cairo_arc (cr, xc, yc, 0.9 * radius, BWIDGETS_DEFAULT_DRAWARC_START + min * BWIDGETS_DEFAULT_DRAWARC_SIZE, BWIDGETS_DEFAULT_DRAWARC_START + max * BWIDGETS_DEFAULT_DRAWARC_SIZE); cairo_stroke (cr); cairo_restore (cr); } #endif /* BWIDGETS_DRAWARC_HPP_ */src/BWidgets/BWidgets/Draws/Flow/drawArcHandle.hpp000066400000000000000000000053131515163050000222620ustar00rootroot00000000000000/* drawArcHandle.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWARCHANDLE_HPP_ #define BWIDGETS_DRAWARCHANDLE_HPP_ #include #include #include "../../../BStyles/Types/Color.hpp" #ifndef BWIDGETS_DEFAULT_DRAWARC_START #define BWIDGETS_DEFAULT_DRAWARC_START (M_PI * 0.75) #endif #ifndef BWIDGETS_DEFAULT_DRAWARC_END #define BWIDGETS_DEFAULT_DRAWARC_END (M_PI * 2.25) #endif #ifndef BWIDGETS_DEFAULT_DRAWARC_SIZE #define BWIDGETS_DEFAULT_DRAWARC_SIZE (BWIDGETS_DEFAULT_DRAWARC_END - BWIDGETS_DEFAULT_DRAWARC_START) #endif /** * @brief Draws a knob spot as a handle for an arc in a Cairo * context. * @param cr Cairo context. * @param xc X center position. * @param y0 Y center position. * @param radius Arc radius. * @param min Start of activated (highlighted) part of the arc. Relative * value [0..1]. * @param max End of activated (highlighted) part of the arc. Relative * value [0..1]. * @param fgColor RGBA color for the activated part. * @param bgColor Bar RGBA color. */ inline void drawArcHandle (cairo_t* cr, const double xc, const double yc, const double radius, const double rval, const BStyles::Color fgColor, const BStyles::Color bgColor) { cairo_save (cr); cairo_set_source_rgba(cr, CAIRO_RGBA(bgColor.illuminate(BStyles::Color::highLighted))); cairo_set_line_width(cr, 0.1 * radius); cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); cairo_move_to ( cr, xc + 0.75 * radius * cos (BWIDGETS_DEFAULT_DRAWARC_START + rval * BWIDGETS_DEFAULT_DRAWARC_SIZE), yc + 0.75 * radius * sin (BWIDGETS_DEFAULT_DRAWARC_START + rval * BWIDGETS_DEFAULT_DRAWARC_SIZE) ); cairo_line_to ( cr, xc + 0.5 * radius * cos (BWIDGETS_DEFAULT_DRAWARC_START + rval * BWIDGETS_DEFAULT_DRAWARC_SIZE), yc + 0.5 * radius * sin (BWIDGETS_DEFAULT_DRAWARC_START + rval * BWIDGETS_DEFAULT_DRAWARC_SIZE) ); cairo_stroke (cr); cairo_restore (cr); } #endif /* BWIDGETS_DRAWARCHANDLE_HPP_ */src/BWidgets/BWidgets/Draws/Flow/drawButton.hpp000066400000000000000000000037651515163050000217250ustar00rootroot00000000000000/* drawButton.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWBUTTON_HPP_ #define BWIDGETS_DRAWBUTTON_HPP_ #include #include "../../../BStyles/Types/Color.hpp" #include "../../../BUtilities/cairoplus.h" /** * @brief Draws a button in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param clicked True, if button clicked. Otherwise false. * @param fgColor RGBA color for the activated elements. * @param bgColor Bar RGBA color. */ inline void drawButton (cairo_t* cr, const double x0, const double y0, const double width, const double height, const bool clicked, const BStyles::Color fgColor, const BStyles::Color bgColor) { const BStyles::Color frameColor = bgColor.illuminate (clicked ? BStyles::Color::highLighted : BStyles::Color::darkened); cairo_save (cr); cairoplus_rectangle_rounded(cr, x0 + 0.5, y0 + 0.5, width - 1.0, height - 1.0, 0.15 * std::min (width, height), 0b1111); cairo_set_source_rgba(cr, CAIRO_RGBA(bgColor)); cairo_fill_preserve(cr); cairo_set_line_width(cr, 1.0); cairo_set_source_rgba(cr, CAIRO_RGBA(frameColor)); cairo_stroke (cr); cairo_restore (cr); } #endif /* BWIDGETS_DRAWBUTTON_HPP_ */src/BWidgets/BWidgets/Draws/Flow/drawHBar.hpp000066400000000000000000000061301515163050000212530ustar00rootroot00000000000000/* drawHBar.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWHBAR_HPP_ #define BWIDGETS_DRAWHBAR_HPP_ #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a horizontal bar in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param min Start of activated (highlighted) part of the bar. Relative * value [0..1]. * @param max End of activated (highlighted) part of the bar. Relative * value [0..1]. * @param fgColor RGBA color for the activated part. * @param bgColor Bar RGBA color. */ inline void drawHBar (cairo_t* cr, const double x0, const double y0, const double width, const double height, const double min, const double max, const BStyles::Color fgColor, const BStyles::Color bgColor) { const double x2 = x0 + std::min (min, max) * width; const double x3 = x0 + std::max (min, max) * width; cairo_save (cr); // Frame cairo_set_line_width (cr, 0.9 * height); cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); cairo_move_to (cr, x0 + 0.45 * height, y0 + 0.45 * height); cairo_line_to (cr, x0 + 0.45 * height < x0 + width - 0.55 * height ? x0 + width - 0.55 * height : x0 + 0.45 * height, y0 + 0.45 * height); cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor.illuminate(BStyles::Color::darkened))); cairo_stroke (cr); cairo_move_to (cr, x0 + 0.55 * height, y0 + 0.55 * height); cairo_line_to (cr, x0 + 0.55 * height < x0 + width - 0.45 * height ? x0 + width - 0.45 * height : x0 + 0.55 * height, y0 + 0.55 * height); cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor.illuminate(BStyles::Color::illuminated))); cairo_stroke (cr); // Background cairo_move_to (cr, x0 + 0.5 * height, y0 + 0.5 * height); cairo_line_to (cr, x0 + 0.5 * height < x0 + width - 0.5 * height ? x0 + width - 0.5 * height : x0 + 0.5 * height, y0 + 0.5 * height); cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor.illuminate(BStyles::Color::shadowed))); cairo_stroke (cr); // Foreground cairo_move_to (cr, x2 + 0.5 * height, y0 + 0.5 * height); cairo_line_to (cr, x2 + 0.5 * height < x3 - 0.5 * height ? x3 - 0.5 * height : x2 + 0.5 * height, y0 + 0.5 * height); cairo_set_source_rgba (cr, CAIRO_RGBA(fgColor)); cairo_stroke (cr); cairo_restore (cr); } #endif /* BWIDGETS_DRAWHBAR_HPP_ */src/BWidgets/BWidgets/Draws/Flow/drawHMeter.hpp000066400000000000000000000103401515163050000216210ustar00rootroot00000000000000/* drawHMeter.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWHMETER_HPP_ #define BWIDGETS_DRAWHMETER_HPP_ #include "../../../BUtilities/cairoplus.h" #include #include #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a segmented two colors horizontal meter bar in a Cairo * context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param min Start of activated (highlighted) part of the meter. Relative * value [0..1]. * @param max End of activated (highlighted) part of the meter. Relative * value [0..1]. * @param step Size of each segment. * @param loColor RGBA color for the low values of the activated part. * @param hiColor RGBA color for the high values of the activated part. * @param gradient Color gradient function. * @param bgColor Bar RGBA color. */ inline void drawHMeter (cairo_t* cr, const double x0, const double y0, const double width, const double height, const double min, const double max, const double step, const BStyles::Color loColor, const BStyles::Color hiColor, std::function gradient, const BStyles::Color bgColor) { const int nrSteps = (step > 0 ? std::ceil (1.0 / step) : 10); cairo_save (cr); // Background cairo_set_line_width (cr, 0.0); cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor.illuminate(BStyles::Color::shadowed))); cairo_rectangle (cr, x0, y0, width, height); cairo_fill (cr); // Fill cairo_set_line_width (cr, 0.0); cairo_pattern_t* fgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0); if (fgPat && (cairo_pattern_status (fgPat) == CAIRO_STATUS_SUCCESS)) { for (int i = 0; i <= nrSteps; ++i) { const double v = static_cast(i) / static_cast(nrSteps); BStyles::Color col; col.setHSV ( loColor.hue() * (1.0 - gradient (v)) + hiColor.hue() * gradient (v), loColor.saturation() * (1.0 - gradient (v)) + hiColor.saturation() * gradient (v), loColor.value() * (1.0 - gradient (v)) + hiColor.value() * gradient (v), loColor.alpha * (1.0 - gradient (v)) + hiColor.alpha * gradient (v) ); cairo_pattern_add_color_stop_rgba (fgPat, v, CAIRO_RGBA(col)); } cairo_set_source (cr, fgPat); cairo_rectangle (cr, x0 + min * width, y0, (max - min) * width, height); cairo_fill (cr); cairo_pattern_destroy (fgPat); } // Scale cairo_set_line_width (cr, 1.0); cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor)); for (int i = 0; i <= nrSteps; ++i) { const double v = static_cast(i) / static_cast(nrSteps); cairo_move_to (cr, x0 + v * width, y0); cairo_line_to (cr, x0 + v * width, y0 + height); } cairo_stroke (cr); // Frame cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor.illuminate(BStyles::Color::shadowed))); cairo_move_to (cr, x0, y0 + height); cairo_line_to (cr, x0, y0); cairo_line_to (cr, x0 + width, y0); cairo_stroke (cr); cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor.illuminate(BStyles::Color::illuminated))); cairo_move_to (cr, x0, y0 + height); cairo_line_to (cr, x0 + width, y0 + height); cairo_line_to (cr, x0 + width, y0); cairo_stroke (cr); cairo_restore (cr); } #endif /* BWIDGETS_DRAWHMETER_HPP_ */src/BWidgets/BWidgets/Draws/Flow/drawKnob.hpp000066400000000000000000000047041515163050000213350ustar00rootroot00000000000000/* drawKnob.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWKNOB_HPP_ #define BWIDGETS_DRAWKNOB_HPP_ #include #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a knob in a Cairo context. * @param cr Cairo context. * @param xc X center position. * @param yc Y center position. * @param radius Knob radius. * @param height Knob pseudo 3D height. * @param fgColor RGBA color for the knob top. * @param bgColor Knob body RGBA color. */ inline void drawKnob (cairo_t* cr, const double xc, const double yc, const double radius, const double height, const BStyles::Color fgColor, const BStyles::Color bgColor) { cairo_save (cr); // Bottom cairo_set_line_width (cr, 0.0); cairo_arc (cr, xc + 0.5 * height, yc + 0.5 * height, radius, 0.0, 2.0 * M_PI); cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor.illuminate(BStyles::Color::darkened))); cairo_fill (cr); // Top cairo_arc (cr, xc - 0.5 * height, yc - 0.5 * height, radius, 0.0, 2.0 * M_PI); cairo_set_source_rgba (cr, CAIRO_RGBA(fgColor)); cairo_fill_preserve (cr); // Ring cairo_pattern_t* pat = cairo_pattern_create_linear (xc - radius - 0.5 * height, yc - radius - 0.5 * height, xc + radius + 0.5 * height, yc + radius + 0.5 * height); if (pat && (cairo_pattern_status (pat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (pat, 0.0, CAIRO_RGBA (bgColor.illuminate(BStyles::Color::illuminated))); cairo_pattern_add_color_stop_rgba (pat, 1.0, CAIRO_RGBA (bgColor.illuminate(BStyles::Color::shadowed))); cairo_set_source (cr, pat); cairo_set_line_width (cr, 0.0); cairo_stroke (cr); cairo_pattern_destroy (pat); } cairo_restore (cr); } #endif /* BWIDGETS_DRAWKNOB_HPP_ */src/BWidgets/BWidgets/Draws/Flow/drawPad.hpp000066400000000000000000000040001515163050000211350ustar00rootroot00000000000000/* drawPad.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWPAD_HPP_ #define BWIDGETS_DRAWPAD_HPP_ #include #include "../../../BUtilities/cairoplus.h" #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws someting like an LED pad in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Pad width. * @param height Pad height. * @param fgColor RGBA color. */ inline void drawPad (cairo_t* cr, double x, double y, double width, double height, const BStyles::Color fgColor) { if ((width <= 0) || (height <= 0)) return; cairo_save(cr); // Draw button BStyles::Color illuminated = fgColor.illuminate (0.05); BStyles::Color darkened = fgColor.illuminate (-0.33); cairo_pattern_t* pat = cairo_pattern_create_radial (x + width / 2, y + height / 2, 0.125 * width, x + width / 2, y + height / 2, 0.5 * width); cairo_pattern_add_color_stop_rgba (pat, 0.0, CAIRO_RGBA (illuminated)); cairo_pattern_add_color_stop_rgba (pat, 1.0, CAIRO_RGBA (darkened)); double rad = ((width < 20) || (height < 20) ? (width < height ? width : height) / 4 : 5); cairoplus_rectangle_rounded (cr, x, y, width, height, rad, 0b1111); cairo_set_source (cr, pat); cairo_fill (cr); cairo_pattern_destroy (pat); cairo_restore(cr); } #endif /* BWIDGETS_DRAWPAD_HPP_ */ src/BWidgets/BWidgets/Draws/Flow/drawRMeter.hpp000066400000000000000000000146671515163050000216530ustar00rootroot00000000000000/* drawRMeter.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWRMETER_HPP_ #define BWIDGETS_DRAWRMETER_HPP_ #include #include "../../../BUtilities/cairoplus.h" #include #include #include "../../../BStyles/Types/Color.hpp" #ifndef BWIDGETS_DEFAULT_DRAWRMETER_START #define BWIDGETS_DEFAULT_DRAWRMETER_START (M_PI * 0.75) #endif #ifndef BWIDGETS_DEFAULT_DRAWRMETER_END #define BWIDGETS_DEFAULT_DRAWRMETER_END (M_PI * 2.25) #endif #ifndef BWIDGETS_DEFAULT_DRAWRMETER_SIZE #define BWIDGETS_DEFAULT_DRAWRMETER_SIZE (BWIDGETS_DEFAULT_DRAWRMETER_END - BWIDGETS_DEFAULT_DRAWRMETER_START) #endif /** * @brief Draws a segmented two colors pseudo 3d arc in a Cairo context. * @param cr Cairo context. * @param xc X center position. * @param y0 Y center position. * @param radius Arc radius. * @param min Start of activated (highlighted) part of the arc. Relative * value [0..1]. * @param max End of activated (highlighted) part of the arc. Relative * value [0..1]. * @param step Size of each segment. * @param loColor RGBA color for the low values of the activated part. * @param hiColor RGBA color for the high values of the activated part. * @param gradient Color gradient function. * @param bgColor Bar RGBA color. */ inline void drawRMeter (cairo_t* cr, const double xc, const double yc, const double radius, const double min, const double max, const double step, const BStyles::Color loColor, const BStyles::Color hiColor, std::function gradient, const BStyles::Color bgColor) { // Colors used const int nrSteps = (step > 0 ? std::ceil (1.0 / step) : 10); const double da = (1.5 * M_PI) * step; const double sa = 1.0 / radius; const BStyles::Color fgHi = loColor.illuminate (BStyles::Color::illuminated); const BStyles::Color fgLo = loColor; const BStyles::Color hiHi = hiColor.illuminate (BStyles::Color::illuminated); const BStyles::Color hiLo = hiColor; const BStyles::Color bgLo = bgColor.illuminate (BStyles::Color::shadowed); const BStyles::Color bgHi = bgColor; //const BStyles::Color bgDk = bgColor.illuminate (-0.75); cairo_save (cr); // Fill cairo_set_line_width (cr, 0.0); cairo_pattern_t* fgPat = cairo_pattern_create_linear (xc - radius, yc - radius, xc + radius, yc + radius); cairo_pattern_t* bgPat = cairo_pattern_create_linear (xc - radius, yc - radius, xc + radius, yc + radius); if (fgPat && bgPat && (cairo_pattern_status (fgPat) == CAIRO_STATUS_SUCCESS) && (cairo_pattern_status (bgPat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(fgHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0, CAIRO_RGBA(bgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0.25, CAIRO_RGBA(bgHi)); cairo_pattern_add_color_stop_rgba (bgPat, 1, CAIRO_RGBA(bgLo)); const double dv = 0.5 / static_cast(nrSteps); for (int i = 0; i < nrSteps; ++i) { const double v = static_cast(i) / static_cast(nrSteps); if ((v + dv >= min) && (v + dv < max)) { if ((fgHi != hiHi) || (fgLo != hiLo)) { fgPat = cairo_pattern_create_linear (xc - radius, yc - radius, xc + radius, yc + radius); BStyles::Color cLo; cLo.setHSV ( fgLo.hue() * (1.0 - gradient (v)) + hiLo.hue() * gradient (v), fgLo.saturation() * (1.0 - gradient (v)) + hiLo.saturation() * gradient (v), fgLo.value() * (1.0 - gradient (v)) + hiLo.value() * gradient (v), fgLo.alpha * (1.0 - gradient (v)) + hiLo.alpha * gradient (v) ); BStyles::Color cHi; cHi.setHSV ( fgHi.hue() * (1.0 - gradient (v)) + hiHi.hue() * gradient (v), fgHi.saturation() * (1.0 - gradient (v)) + hiHi.saturation() * gradient (v), fgHi.value() * (1.0 - gradient (v)) + hiHi.value() * gradient (v), fgHi.alpha * (1.0 - gradient (v)) + hiHi.alpha * gradient (v) ); cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(cLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(cHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(cLo)); } cairo_set_source (cr, fgPat); } else cairo_set_source (cr, bgPat); const double a = BWIDGETS_DEFAULT_DRAWRMETER_START + v * BWIDGETS_DEFAULT_DRAWRMETER_SIZE; cairo_arc (cr, xc, yc, 0.91 * radius, a, a + da + 0.5 * sa); cairo_arc_negative (cr, xc, yc, 0.5 * radius, a + da + 0.5 * sa, a); cairo_fill (cr); } cairo_pattern_destroy (bgPat); cairo_pattern_destroy (fgPat); } // Scale cairo_set_line_width (cr, 1.0); cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor)); for (int i = 0; i < nrSteps; ++i) { const double v = static_cast(i) / static_cast(nrSteps); const double a = BWIDGETS_DEFAULT_DRAWRMETER_START + v * BWIDGETS_DEFAULT_DRAWRMETER_SIZE; cairo_move_to (cr, xc + 0.91 * cos(a) * radius, yc + 0.91 * sin(a) * radius); cairo_line_to (cr, xc + 0.5 * cos(a) * radius, yc + 0.5 * sin(a) * radius); cairo_stroke(cr); } cairo_restore (cr); } #endif /* BWIDGETS_DRAWRMETER_HPP_ */src/BWidgets/BWidgets/Draws/Flow/drawVBar.hpp000066400000000000000000000060741515163050000213000ustar00rootroot00000000000000/* drawVBar.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWVBAR_HPP_ #define BWIDGETS_DRAWVBAR_HPP_ #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a vertical bar in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param min Start of activated (highlighted) part of the bar. Relative * value [0..1]. * @param max End of activated (highlighted) part of the bar. Relative * value [0..1]. * @param fgColor RGBA color for the activated part. * @param bgColor Bar RGBA color. */ inline void drawVBar (cairo_t* cr, const double x0, const double y0, const double width, const double height, const double min, const double max, const BStyles::Color fgColor, const BStyles::Color bgColor) { const double y2 = y0 + std::min (min, max) * height; const double y3 = y0 + std::max (min, max) * height; cairo_save (cr); // Frame cairo_set_line_width (cr, 0.9 * width); cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); cairo_move_to (cr, x0 + 0.45 * width, y0 + 0.45 * width); cairo_line_to (cr, x0 + 0.45 * width, y0 + 0.45 * width < y0 + height - 0.55 * width ? y0 + height - 0.55 * width : y0 + 0.45 * width); cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor.illuminate(BStyles::Color::darkened))); cairo_stroke (cr); cairo_move_to (cr, x0 + 0.55 * width, y0 + 0.55 * width); cairo_line_to (cr, x0 + 0.55 * width, y0 + 0.55 * width < y0 + height - 0.45 * width ? y0 + height - 0.45 * width : y0 + 0.55 * width); cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor.illuminate(BStyles::Color::illuminated))); cairo_stroke (cr); // Frame cairo_move_to (cr, x0 + 0.5 * width, y0 + 0.5 * width); cairo_line_to (cr, x0 + 0.5 * width, y0 + 0.5 * width < y0 + height - 0.5 * width ? y0 + height - 0.5 * width : y0 + 0.5 * width); cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor.illuminate(BStyles::Color::shadowed))); cairo_stroke (cr); // Foreground cairo_move_to (cr, x0 + 0.5 * width, y2 + 0.5 * width); cairo_line_to (cr, x0 + 0.5 * width, y2 + 0.5 * width < y3 - 0.5 * width ? y3 - 0.5 * width : y2 + 0.5 * width); cairo_set_source_rgba (cr, CAIRO_RGBA(fgColor)); cairo_stroke (cr); cairo_restore (cr); } #endif /* BWIDGETS_DRAWVBAR_HPP_ */src/BWidgets/BWidgets/Draws/Flow/drawVMeter.hpp000066400000000000000000000103331515163050000216410ustar00rootroot00000000000000/* drawVMeter.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWVMETER_HPP_ #define BWIDGETS_DRAWVMETER_HPP_ #include "../../../BUtilities/cairoplus.h" #include #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a segmented two colors vertical meter bar in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param min Start of activated (highlighted) part of the meter. Relative * value [0..1]. * @param max End of activated (highlighted) part of the meter. Relative * value [0..1]. * @param step Size of each segment. * @param loColor RGBA color for the low values of the activated part. * @param hiColor RGBA color for the high values of the activated part. * @param gradient Color gradient function. * @param bgColor Bar RGBA color. */ inline void drawVMeter (cairo_t* cr, const double x0, const double y0, const double width, const double height, const double min, const double max, const double step, const BStyles::Color loColor, const BStyles::Color hiColor, std::function gradient, const BStyles::Color bgColor) { const int nrSteps = (step > 0 ? std::ceil (1.0 / step) : 10); cairo_save (cr); // Background cairo_set_line_width (cr, 0.0); cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor.illuminate(BStyles::Color::shadowed))); cairo_rectangle (cr, x0, y0, width, height); cairo_fill (cr); // Fill cairo_set_line_width (cr, 0.0); cairo_pattern_t* fgPat = cairo_pattern_create_linear (x0, y0 + height, x0, y0); if (fgPat && (cairo_pattern_status (fgPat) == CAIRO_STATUS_SUCCESS)) { for (int i = 0; i <= nrSteps; ++i) { const double v = static_cast(i) / static_cast(nrSteps); BStyles::Color col; col.setHSV ( loColor.hue() * (1.0 - gradient (v)) + hiColor.hue() * gradient (v), loColor.saturation() * (1.0 - gradient (v)) + hiColor.saturation() * gradient (v), loColor.value() * (1.0 - gradient (v)) + hiColor.value() * gradient (v), loColor.alpha * (1.0 - gradient (v)) + hiColor.alpha * gradient (v) ); cairo_pattern_add_color_stop_rgba (fgPat, v, CAIRO_RGBA(col)); } cairo_set_source (cr, fgPat); cairo_rectangle (cr, x0, y0 + (1.0 - min) * height, width, (min - max) * height); cairo_fill (cr); cairo_pattern_destroy (fgPat); } // Scale cairo_set_line_width (cr, 1.0); cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor)); for (int i = 0; i <= nrSteps; ++i) { const double v = static_cast(i) / static_cast(nrSteps); cairo_move_to (cr, x0, y0 + (1.0 - v) * height); cairo_line_to (cr, x0 + width, y0 + (1.0 - v) * height); } cairo_stroke (cr); // Frame cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor.illuminate(BStyles::Color::shadowed))); cairo_move_to (cr, x0, y0 + height); cairo_line_to (cr, x0, y0); cairo_line_to (cr, x0 + width, y0); cairo_stroke (cr); cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor.illuminate(BStyles::Color::illuminated))); cairo_move_to (cr, x0, y0 + height); cairo_line_to (cr, x0 + width, y0 + height); cairo_line_to (cr, x0 + width, y0); cairo_stroke (cr); cairo_restore (cr); } #endif /* BWIDGETS_DRAWVMETER_HPP_ */src/BWidgets/BWidgets/Draws/Lolly/000077500000000000000000000000001515163050000172345ustar00rootroot00000000000000src/BWidgets/BWidgets/Draws/Lolly/definitions.hpp000066400000000000000000000066041515163050000222660ustar00rootroot00000000000000#ifndef BWIDGETS_DEFAULT_DRAWARC_PATH #define BWIDGETS_DEFAULT_DRAWARC_PATH "Draws/Lolly/drawArc.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWKNOB_PATH #define BWIDGETS_DEFAULT_DRAWKNOB_PATH "Draws/Lolly/drawKnob.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWARCHANDLE_PATH #define BWIDGETS_DEFAULT_DRAWARCHANDLE_PATH "Draws/Lolly/drawArcHandle.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWHBAR_PATH #define BWIDGETS_DEFAULT_DRAWHBAR_PATH "Draws/Lolly/drawHBar.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWVBAR_PATH #define BWIDGETS_DEFAULT_DRAWVBAR_PATH "Draws/Lolly/drawVBar.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWHMETER_PATH #define BWIDGETS_DEFAULT_DRAWHMETER_PATH "Draws/Lolly/drawHMeter.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWVMETER_PATH #define BWIDGETS_DEFAULT_DRAWVMETER_PATH "Draws/Lolly/drawVMeter.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWRMETER_PATH #define BWIDGETS_DEFAULT_DRAWRMETER_PATH "Draws/Lolly/drawRMeter.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWBUTTON_PATH #define BWIDGETS_DEFAULT_DRAWBUTTON_PATH "Draws/Lolly/drawButton.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWPAD_PATH #define BWIDGETS_DEFAULT_DRAWPAD_PATH "Draws/Lolly/drawPad.hpp" #endif #ifndef BWIDGETS_DEFAULT_DIAL_ARC_FGCOLOR #define BWIDGETS_DEFAULT_DIAL_ARC_FGCOLOR getFgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_DIAL_ARC_BGCOLOR #define BWIDGETS_DEFAULT_DIAL_ARC_BGCOLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_DIAL_KNOB_REL_SIZE #define BWIDGETS_DEFAULT_DIAL_KNOB_REL_SIZE 0.0 #endif #ifndef BWIDGETS_DEFAULT_DIAL_KNOB_COLOR #define BWIDGETS_DEFAULT_DIAL_KNOB_COLOR getFgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SLIDER_BAR_REL_SIZE #define BWIDGETS_DEFAULT_SLIDER_BAR_REL_SIZE 0.25 #endif #ifndef BWIDGETS_DEFAULT_SLIDER_BAR_FGCOLOR #define BWIDGETS_DEFAULT_SLIDER_BAR_FGCOLOR getFgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SLIDER_BAR_BGCOLOR #define BWIDGETS_DEFAULT_SLIDER_BAR_BGCOLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SLIDER_KNOB_REL_SIZE #define BWIDGETS_DEFAULT_SLIDER_KNOB_REL_SIZE 1.0 #endif #ifndef BWIDGETS_DEFAULT_SLIDER_KNOB_COLOR #define BWIDGETS_DEFAULT_SLIDER_KNOB_COLOR getFgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SWITCH_BAR_REL_SIZE #define BWIDGETS_DEFAULT_SWITCH_BAR_REL_SIZE 0.5 #endif #ifndef BWIDGETS_DEFAULT_SWITCH_BAR_FGCOLOR #define BWIDGETS_DEFAULT_SWITCH_BAR_FGCOLOR getFgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SWITCH_BAR_BGCOLOR #define BWIDGETS_DEFAULT_SWITCH_BAR_BGCOLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SWITCH_KNOB_REL_SIZE #define BWIDGETS_DEFAULT_SWITCH_KNOB_REL_SIZE 1.0 #endif #ifndef BWIDGETS_DEFAULT_SWITCH_KNOB_COLOR #define BWIDGETS_DEFAULT_SWITCH_KNOB_COLOR getFgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_BAR_REL_SIZE #define BWIDGETS_DEFAULT_SCROLLBAR_BAR_REL_SIZE 1.0 #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_BAR_FGCOLOR #define BWIDGETS_DEFAULT_SCROLLBAR_BAR_FGCOLOR getBgColors()[getStatus()].illuminate(BStyles::Color::illuminated) #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_BAR_BGCOLOR #define BWIDGETS_DEFAULT_SCROLLBAR_BAR_BGCOLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_KNOB_REL_SIZE #define BWIDGETS_DEFAULT_SCROLLBAR_KNOB_REL_SIZE 0.25 #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_KNOB_COLOR #define BWIDGETS_DEFAULT_SCROLLBAR_KNOB_COLOR getBgColors()[getStatus()].illuminate(0.5 * BStyles::Color::illuminated) #endifsrc/BWidgets/BWidgets/Draws/Lolly/drawArc.hpp000066400000000000000000000047731515163050000213430ustar00rootroot00000000000000/* drawArc.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWARC_HPP_ #define BWIDGETS_DRAWARC_HPP_ #include #include #include "../../../BStyles/Types/Color.hpp" #ifndef BWIDGETS_DEFAULT_DRAWARC_START #define BWIDGETS_DEFAULT_DRAWARC_START (M_PI * 0.75) #endif #ifndef BWIDGETS_DEFAULT_DRAWARC_END #define BWIDGETS_DEFAULT_DRAWARC_END (M_PI * 2.25) #endif #ifndef BWIDGETS_DEFAULT_DRAWARC_SIZE #define BWIDGETS_DEFAULT_DRAWARC_SIZE (BWIDGETS_DEFAULT_DRAWARC_END - BWIDGETS_DEFAULT_DRAWARC_START) #endif /** * @brief Draws an arc in a Cairo context. * @param cr Cairo context. * @param xc X center position. * @param y0 Y center position. * @param radius Arc radius. * @param min Start of activated (highlighted) part of the arc. Relative * value [0..1]. * @param max End of activated (highlighted) part of the arc. Relative * value [0..1]. * @param fgColor RGBA color for the activated part. * @param bgColor Bar RGBA color. */ inline void drawArc (cairo_t* cr, const double xc, const double yc, const double radius, const double min, const double max, const BStyles::Color fgColor, const BStyles::Color bgColor) { cairo_save(cr); cairo_set_line_width (cr, 0.1 * radius); cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); // Arc cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor)); cairo_arc (cr, xc, yc, 0.8 * radius, BWIDGETS_DEFAULT_DRAWARC_START, BWIDGETS_DEFAULT_DRAWARC_END); cairo_stroke (cr); // Fill cairo_set_source_rgba (cr, CAIRO_RGBA(fgColor)); cairo_arc (cr, xc, yc, 0.8 * radius, BWIDGETS_DEFAULT_DRAWARC_START + min * BWIDGETS_DEFAULT_DRAWARC_SIZE, BWIDGETS_DEFAULT_DRAWARC_START + max * BWIDGETS_DEFAULT_DRAWARC_SIZE); cairo_stroke (cr); cairo_restore(cr); } #endif /* BWIDGETS_DRAWARC_HPP_ */src/BWidgets/BWidgets/Draws/Lolly/drawArcHandle.hpp000066400000000000000000000046301515163050000224470ustar00rootroot00000000000000/* drawArcHandle.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWARCHANDLE_HPP_ #define BWIDGETS_DRAWARCHANDLE_HPP_ #include #include #include "../../../BStyles/Types/Color.hpp" #ifndef BWIDGETS_DEFAULT_DRAWARC_START #define BWIDGETS_DEFAULT_DRAWARC_START (M_PI * 0.75) #endif #ifndef BWIDGETS_DEFAULT_DRAWARC_END #define BWIDGETS_DEFAULT_DRAWARC_END (M_PI * 2.25) #endif #ifndef BWIDGETS_DEFAULT_DRAWARC_SIZE #define BWIDGETS_DEFAULT_DRAWARC_SIZE (BWIDGETS_DEFAULT_DRAWARC_END - BWIDGETS_DEFAULT_DRAWARC_START) #endif /** * @brief Draws a knob spot as a handle for an arc in a Cairo * context. * @param cr Cairo context. * @param xc X center position. * @param y0 Y center position. * @param radius Arc radius. * @param min Start of activated (highlighted) part of the arc. Relative * value [0..1]. * @param max End of activated (highlighted) part of the arc. Relative * value [0..1]. * @param fgColor RGBA color for the activated part. * @param bgColor Bar RGBA color. */ inline void drawArcHandle (cairo_t* cr, const double xc, const double yc, const double radius, const double rval, const BStyles::Color fgColor, const BStyles::Color bgColor) { cairo_save(cr); cairo_set_source_rgba(cr, CAIRO_RGBA(fgColor)); cairo_set_line_width(cr, 0.0); cairo_arc ( cr, xc + 0.8 * radius * cos (BWIDGETS_DEFAULT_DRAWARC_START + rval * BWIDGETS_DEFAULT_DRAWARC_SIZE), yc + 0.8 * radius * sin (BWIDGETS_DEFAULT_DRAWARC_START + rval * BWIDGETS_DEFAULT_DRAWARC_SIZE), 0.2 * radius, 0.0, 2.0 * M_PI ); cairo_fill (cr); cairo_restore(cr); } #endif /* BWIDGETS_DRAWARCHANDLE_HPP_ */src/BWidgets/BWidgets/Draws/Lolly/drawButton.hpp000066400000000000000000000037651515163050000221110ustar00rootroot00000000000000/* drawButton.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWBUTTON_HPP_ #define BWIDGETS_DRAWBUTTON_HPP_ #include #include "../../../BStyles/Types/Color.hpp" #include "../../../BUtilities/cairoplus.h" /** * @brief Draws a button in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param clicked True, if button clicked. Otherwise false. * @param fgColor RGBA color for the activated elements. * @param bgColor Bar RGBA color. */ inline void drawButton (cairo_t* cr, const double x0, const double y0, const double width, const double height, const bool clicked, const BStyles::Color fgColor, const BStyles::Color bgColor) { const BStyles::Color frameColor = bgColor.illuminate (clicked ? BStyles::Color::highLighted : BStyles::Color::darkened); cairo_save (cr); cairoplus_rectangle_rounded(cr, x0 + 0.5, y0 + 0.5, width - 1.0, height - 1.0, 0.15 * std::min (width, height), 0b1111); cairo_set_source_rgba(cr, CAIRO_RGBA(bgColor)); cairo_fill_preserve(cr); cairo_set_line_width(cr, 1.0); cairo_set_source_rgba(cr, CAIRO_RGBA(frameColor)); cairo_stroke (cr); cairo_restore (cr); } #endif /* BWIDGETS_DRAWBUTTON_HPP_ */src/BWidgets/BWidgets/Draws/Lolly/drawHBar.hpp000066400000000000000000000046261515163050000214470ustar00rootroot00000000000000/* drawHBar.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWHBAR_HPP_ #define BWIDGETS_DRAWHBAR_HPP_ #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a horizontal bar in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param min Start of activated (highlighted) part of the bar. Relative * value [0..1]. * @param max End of activated (highlighted) part of the bar. Relative * value [0..1]. * @param fgColor RGBA color for the activated part. * @param bgColor Bar RGBA color. */ inline void drawHBar (cairo_t* cr, const double x0, const double y0, const double width, const double height, const double min, const double max, const BStyles::Color fgColor, const BStyles::Color bgColor) { const double x2 = x0 + std::min (min, max) * width; const double x3 = x0 + std::max (min, max) * width; cairo_save (cr); cairo_set_line_width (cr, height); cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); // Frame cairo_move_to (cr, x0 + 0.5 * height, y0 + 0.5 * height); cairo_line_to (cr, x0 + 0.5 * height < x0 + width - 0.5 * height ? x0 + width - 0.5 * height : x0 + 0.5 * height, y0 + 0.5 * height); cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor)); cairo_stroke (cr); // Foreground cairo_move_to (cr, x2 + 0.5 * height, y0 + 0.5 * height); cairo_line_to (cr, x2 + 0.5 * height < x3 - 0.5 * height ? x3 - 0.5 * height : x2 + 0.5 * height, y0 + 0.5 * height); cairo_set_source_rgba (cr, CAIRO_RGBA(fgColor)); cairo_stroke (cr); cairo_restore (cr); } #endif /* BWIDGETS_DRAWHBAR_HPP_ */src/BWidgets/BWidgets/Draws/Lolly/drawHMeter.hpp000066400000000000000000000126501515163050000220130ustar00rootroot00000000000000/* drawHMeter.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWHMETER_HPP_ #define BWIDGETS_DRAWHMETER_HPP_ #include "../../../BUtilities/cairoplus.h" #include #include #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a segmented two colors horizontal meter bar in a Cairo * context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param min Start of activated (highlighted) part of the meter. Relative * value [0..1]. * @param max End of activated (highlighted) part of the meter. Relative * value [0..1]. * @param step Size of each segment. * @param loColor RGBA color for the low values of the activated part. * @param hiColor RGBA color for the high values of the activated part. * @param gradient Color gradient function. * @param bgColor Bar RGBA color. */ inline void drawHMeter (cairo_t* cr, const double x0, const double y0, const double width, const double height, const double min, const double max, const double step, const BStyles::Color loColor, const BStyles::Color hiColor, std::function gradient, const BStyles::Color bgColor) { const int nrSteps = (step > 0 ? std::ceil (1.0 / step) : 10); const double dx = (width - 0.2 * height) * step; const BStyles::Color fgHi = loColor.illuminate (BStyles::Color::illuminated); const BStyles::Color fgLo = loColor; const BStyles::Color hiHi = hiColor.illuminate (BStyles::Color::illuminated); const BStyles::Color hiLo = hiColor; const BStyles::Color bgLo = bgColor.illuminate (BStyles::Color::shadowed); const BStyles::Color bgHi = bgColor; //const BStyles::Color bgDk = bgColor.illuminate (-0.75); cairo_save(cr); // Fill cairo_set_line_width (cr, 0.0); cairo_pattern_t* fgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); cairo_pattern_t* bgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); if (fgPat && bgPat && (cairo_pattern_status (fgPat) == CAIRO_STATUS_SUCCESS) && (cairo_pattern_status (bgPat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(fgHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0, CAIRO_RGBA(bgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0.25, CAIRO_RGBA(bgHi)); cairo_pattern_add_color_stop_rgba (bgPat, 1, CAIRO_RGBA(bgLo)); const double dv = 0.5 / static_cast(nrSteps); for (int i = 0; i < nrSteps; ++i) { const double v = static_cast(i) / static_cast(nrSteps); if ((v + dv >= min) && (v + dv < max)) { if ((fgHi != hiHi) || (fgLo != hiLo)) { fgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); BStyles::Color cLo; cLo.setHSV ( fgLo.hue() * (1.0 - gradient (v)) + hiLo.hue() * gradient (v), fgLo.saturation() * (1.0 - gradient (v)) + hiLo.saturation() * gradient (v), fgLo.value() * (1.0 - gradient (v)) + hiLo.value() * gradient (v), fgLo.alpha * (1.0 - gradient (v)) + hiLo.alpha * gradient (v) ); BStyles::Color cHi; cHi.setHSV ( fgHi.hue() * (1.0 - gradient (v)) + hiHi.hue() * gradient (v), fgHi.saturation() * (1.0 - gradient (v)) + hiHi.saturation() * gradient (v), fgHi.value() * (1.0 - gradient (v)) + hiHi.value() * gradient (v), fgHi.alpha * (1.0 - gradient (v)) + hiHi.alpha * gradient (v) ); cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(cLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(cHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(cLo)); } cairo_set_source (cr, fgPat); } else cairo_set_source (cr, bgPat); const double x = v * (width - 0.2 * height); cairo_rectangle (cr, x0 + 0.1 * height + x, y0 + 0.1 * height, dx + 0.5, height - 0.2 * height); cairo_fill (cr); } cairo_pattern_destroy (bgPat); cairo_pattern_destroy (fgPat); } cairo_restore(cr); } #endif /* BWIDGETS_DRAWHMETER_HPP_ */src/BWidgets/BWidgets/Draws/Lolly/drawKnob.hpp000066400000000000000000000031111515163050000215100ustar00rootroot00000000000000/* drawKnob.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWKNOB_HPP_ #define BWIDGETS_DRAWKNOB_HPP_ #include #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a knob in a Cairo context. * @param cr Cairo context. * @param xc X center position. * @param yc Y center position. * @param radius Knob radius. * @param height Knob pseudo 3D height. * @param fgColor RGBA color for the knob top. * @param bgColor Knob body RGBA color. */ inline void drawKnob (cairo_t* cr, const double xc, const double yc, const double radius, const double height, const BStyles::Color fgColor, const BStyles::Color bgColor) { cairo_save (cr); cairo_set_line_width (cr, 0.0); cairo_arc (cr, xc, yc, radius, 0.0, 2.0 * M_PI); cairo_set_source_rgba (cr, CAIRO_RGBA(fgColor)); cairo_fill (cr); cairo_restore (cr); } #endif /* BWIDGETS_DRAWKNOB_HPP_ */src/BWidgets/BWidgets/Draws/Lolly/drawPad.hpp000066400000000000000000000040001515163050000213210ustar00rootroot00000000000000/* drawPad.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWPAD_HPP_ #define BWIDGETS_DRAWPAD_HPP_ #include #include "../../../BUtilities/cairoplus.h" #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws someting like an LED pad in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Pad width. * @param height Pad height. * @param fgColor RGBA color. */ inline void drawPad (cairo_t* cr, double x, double y, double width, double height, const BStyles::Color fgColor) { if ((width <= 0) || (height <= 0)) return; cairo_save(cr); // Draw button BStyles::Color illuminated = fgColor.illuminate (0.05); BStyles::Color darkened = fgColor.illuminate (-0.33); cairo_pattern_t* pat = cairo_pattern_create_radial (x + width / 2, y + height / 2, 0.125 * width, x + width / 2, y + height / 2, 0.5 * width); cairo_pattern_add_color_stop_rgba (pat, 0.0, CAIRO_RGBA (illuminated)); cairo_pattern_add_color_stop_rgba (pat, 1.0, CAIRO_RGBA (darkened)); double rad = ((width < 20) || (height < 20) ? (width < height ? width : height) / 4 : 5); cairoplus_rectangle_rounded (cr, x, y, width, height, rad, 0b1111); cairo_set_source (cr, pat); cairo_fill (cr); cairo_pattern_destroy (pat); cairo_restore(cr); } #endif /* BWIDGETS_DRAWPAD_HPP_ */ src/BWidgets/BWidgets/Draws/Lolly/drawRMeter.hpp000066400000000000000000000136451515163050000220320ustar00rootroot00000000000000/* drawRMeter.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWRMETER_HPP_ #define BWIDGETS_DRAWRMETER_HPP_ #include #include "../../../BUtilities/cairoplus.h" #include #include #include "../../../BStyles/Types/Color.hpp" #ifndef BWIDGETS_DEFAULT_DRAWRMETER_START #define BWIDGETS_DEFAULT_DRAWRMETER_START (M_PI * 0.75) #endif #ifndef BWIDGETS_DEFAULT_DRAWRMETER_END #define BWIDGETS_DEFAULT_DRAWRMETER_END (M_PI * 2.25) #endif #ifndef BWIDGETS_DEFAULT_DRAWRMETER_SIZE #define BWIDGETS_DEFAULT_DRAWRMETER_SIZE (BWIDGETS_DEFAULT_DRAWRMETER_END - BWIDGETS_DEFAULT_DRAWRMETER_START) #endif /** * @brief Draws a segmented two colors pseudo 3d arc in a Cairo context. * @param cr Cairo context. * @param xc X center position. * @param y0 Y center position. * @param radius Arc radius. * @param min Start of activated (highlighted) part of the arc. Relative * value [0..1]. * @param max End of activated (highlighted) part of the arc. Relative * value [0..1]. * @param step Size of each segment. * @param loColor RGBA color for the low values of the activated part. * @param hiColor RGBA color for the high values of the activated part. * @param gradient Color gradient function. * @param bgColor Bar RGBA color. */ inline void drawRMeter (cairo_t* cr, const double xc, const double yc, const double radius, const double min, const double max, const double step, const BStyles::Color loColor, const BStyles::Color hiColor, std::function gradient, const BStyles::Color bgColor) { // Colors used const int nrSteps = (step > 0 ? std::ceil (1.0 / step) : 10); const double da = (1.5 * M_PI) * step; const double sa = 1.0 / radius; const BStyles::Color fgHi = loColor.illuminate (BStyles::Color::illuminated); const BStyles::Color fgLo = loColor; const BStyles::Color hiHi = hiColor.illuminate (BStyles::Color::illuminated); const BStyles::Color hiLo = hiColor; const BStyles::Color bgLo = bgColor.illuminate (BStyles::Color::shadowed); const BStyles::Color bgHi = bgColor; //const BStyles::Color bgDk = bgColor.illuminate (-0.75); cairo_save(cr); // Fill cairo_set_line_width (cr, 0.0); cairo_pattern_t* fgPat = cairo_pattern_create_linear (xc - radius, yc - radius, xc + radius, yc + radius); cairo_pattern_t* bgPat = cairo_pattern_create_linear (xc - radius, yc - radius, xc + radius, yc + radius); if (fgPat && bgPat && (cairo_pattern_status (fgPat) == CAIRO_STATUS_SUCCESS) && (cairo_pattern_status (bgPat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(fgHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0, CAIRO_RGBA(bgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0.25, CAIRO_RGBA(bgHi)); cairo_pattern_add_color_stop_rgba (bgPat, 1, CAIRO_RGBA(bgLo)); const double dv = 0.5 / static_cast(nrSteps); for (int i = 0; i < nrSteps; ++i) { const double v = static_cast(i) / static_cast(nrSteps); if ((v + dv >= min) && (v + dv < max)) { if ((fgHi != hiHi) || (fgLo != hiLo)) { fgPat = cairo_pattern_create_linear (xc - radius, yc - radius, xc + radius, yc + radius); BStyles::Color cLo; cLo.setHSV ( fgLo.hue() * (1.0 - gradient (v)) + hiLo.hue() * gradient (v), fgLo.saturation() * (1.0 - gradient (v)) + hiLo.saturation() * gradient (v), fgLo.value() * (1.0 - gradient (v)) + hiLo.value() * gradient (v), fgLo.alpha * (1.0 - gradient (v)) + hiLo.alpha * gradient (v) ); BStyles::Color cHi; cHi.setHSV ( fgHi.hue() * (1.0 - gradient (v)) + hiHi.hue() * gradient (v), fgHi.saturation() * (1.0 - gradient (v)) + hiHi.saturation() * gradient (v), fgHi.value() * (1.0 - gradient (v)) + hiHi.value() * gradient (v), fgHi.alpha * (1.0 - gradient (v)) + hiHi.alpha * gradient (v) ); cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(cLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(cHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(cLo)); } cairo_set_source (cr, fgPat); } else cairo_set_source (cr, bgPat); const double a = BWIDGETS_DEFAULT_DRAWRMETER_START + v * BWIDGETS_DEFAULT_DRAWRMETER_SIZE; cairo_arc (cr, xc, yc, 0.91 * radius, a, a + da + 0.5 * sa); cairo_arc_negative (cr, xc, yc, 0.7 * radius, a + da + 0.5 * sa, a); cairo_fill (cr); } cairo_pattern_destroy (bgPat); cairo_pattern_destroy (fgPat); } cairo_restore(cr); } #endif /* BWIDGETS_DRAWRMETER_HPP_ */src/BWidgets/BWidgets/Draws/Lolly/drawVBar.hpp000066400000000000000000000046111515163050000214570ustar00rootroot00000000000000/* drawVBar.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWVBAR_HPP_ #define BWIDGETS_DRAWVBAR_HPP_ #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a vertical bar in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param min Start of activated (highlighted) part of the bar. Relative * value [0..1]. * @param max End of activated (highlighted) part of the bar. Relative * value [0..1]. * @param fgColor RGBA color for the activated part. * @param bgColor Bar RGBA color. */ inline void drawVBar (cairo_t* cr, const double x0, const double y0, const double width, const double height, const double min, const double max, const BStyles::Color fgColor, const BStyles::Color bgColor) { const double y2 = y0 + std::min (min, max) * height; const double y3 = y0 + std::max (min, max) * height; cairo_save (cr); cairo_set_line_width (cr, width); cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); // Frame cairo_move_to (cr, x0 + 0.5 * width, y0 + 0.5 * width); cairo_line_to (cr, x0 + 0.5 * width, y0 + 0.5 * width < y0 + height - 0.5 * width ? y0 + height - 0.5 * width : y0 + 0.5 * width); cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor)); cairo_stroke (cr); // Foreground cairo_move_to (cr, x0 + 0.5 * width, y2 + 0.5 * width); cairo_line_to (cr, x0 + 0.5 * width, y2 + 0.5 * width < y3 - 0.5 * width ? y3 - 0.5 * width : y2 + 0.5 * width); cairo_set_source_rgba (cr, CAIRO_RGBA(fgColor)); cairo_stroke (cr); cairo_restore (cr); } #endif /* BWIDGETS_DRAWVBAR_HPP_ */src/BWidgets/BWidgets/Draws/Lolly/drawVMeter.hpp000066400000000000000000000126221515163050000220300ustar00rootroot00000000000000/* drawVMeter.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWVMETER_HPP_ #define BWIDGETS_DRAWVMETER_HPP_ #include "../../../BUtilities/cairoplus.h" #include #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a segmented two colors vertical meter bar in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param min Start of activated (highlighted) part of the meter. Relative * value [0..1]. * @param max End of activated (highlighted) part of the meter. Relative * value [0..1]. * @param step Size of each segment. * @param loColor RGBA color for the low values of the activated part. * @param hiColor RGBA color for the high values of the activated part. * @param gradient Color gradient function. * @param bgColor Bar RGBA color. */ inline void drawVMeter (cairo_t* cr, const double x0, const double y0, const double width, const double height, const double min, const double max, const double step, const BStyles::Color loColor, const BStyles::Color hiColor, std::function gradient, const BStyles::Color bgColor) { const int nrSteps = (step > 0 ? std::ceil (1.0 / step) : 10); const double dy = (height - 0.2 * width) * step; const BStyles::Color fgHi = loColor.illuminate (BStyles::Color::illuminated); const BStyles::Color fgLo = loColor; const BStyles::Color hiHi = hiColor.illuminate (BStyles::Color::illuminated); const BStyles::Color hiLo = hiColor; const BStyles::Color bgLo = bgColor.illuminate (BStyles::Color::shadowed); const BStyles::Color bgHi = bgColor; //const BStyles::Color bgDk = bgColor.illuminate (-0.75); cairo_save(cr); // Fill cairo_set_line_width (cr, 0.0); cairo_pattern_t* fgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); cairo_pattern_t* bgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); if (fgPat && bgPat && (cairo_pattern_status (fgPat) == CAIRO_STATUS_SUCCESS) && (cairo_pattern_status (bgPat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(fgHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0, CAIRO_RGBA(bgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0.25, CAIRO_RGBA(bgHi)); cairo_pattern_add_color_stop_rgba (bgPat, 1, CAIRO_RGBA(bgLo)); const double dv = 0.5 / static_cast(nrSteps); for (int i = 0; i < nrSteps; ++i) { const double v = static_cast(i) / static_cast(nrSteps); if ((v + dv >= min) && (v + dv < max)) { if ((fgHi != hiHi) || (fgLo != hiLo)) { fgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); BStyles::Color cLo; cLo.setHSV ( fgLo.hue() * (1.0 - gradient (v)) + hiLo.hue() * gradient (v), fgLo.saturation() * (1.0 - gradient (v)) + hiLo.saturation() * gradient (v), fgLo.value() * (1.0 - gradient (v)) + hiLo.value() * gradient (v), fgLo.alpha * (1.0 - gradient (v)) + hiLo.alpha * gradient (v) ); BStyles::Color cHi; cHi.setHSV ( fgHi.hue() * (1.0 - gradient (v)) + hiHi.hue() * gradient (v), fgHi.saturation() * (1.0 - gradient (v)) + hiHi.saturation() * gradient (v), fgHi.value() * (1.0 - gradient (v)) + hiHi.value() * gradient (v), fgHi.alpha * (1.0 - gradient (v)) + hiHi.alpha * gradient (v) ); cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(cLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(cHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(cLo)); } cairo_set_source (cr, fgPat); } else cairo_set_source (cr, bgPat); const double y = v * (height - 0.2 * width); cairo_rectangle (cr, x0 + 0.1 * width , y0 + height - 0.1 * width - y - dy, width - 0.2 * width, dy + 0.5); cairo_fill (cr); } cairo_pattern_destroy (bgPat); cairo_pattern_destroy (fgPat); } cairo_restore(cr); } #endif /* BWIDGETS_DRAWVMETER_HPP_ */src/BWidgets/BWidgets/Draws/Oops/000077500000000000000000000000001515163050000170615ustar00rootroot00000000000000src/BWidgets/BWidgets/Draws/Oops/definitions.hpp000066400000000000000000000067021515163050000221120ustar00rootroot00000000000000#ifndef BWIDGETS_DEFAULT_DRAWARC_PATH #define BWIDGETS_DEFAULT_DRAWARC_PATH "Draws/Oops/drawArc.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWKNOB_PATH #define BWIDGETS_DEFAULT_DRAWKNOB_PATH "Draws/Oops/drawKnob.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWARCHANDLE_PATH #define BWIDGETS_DEFAULT_DRAWARCHANDLE_PATH "Draws/Oops/drawArcHandle.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWHBAR_PATH #define BWIDGETS_DEFAULT_DRAWHBAR_PATH "Draws/Oops/drawHBar.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWVBAR_PATH #define BWIDGETS_DEFAULT_DRAWVBAR_PATH "Draws/Oops/drawVBar.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWHMETER_PATH #define BWIDGETS_DEFAULT_DRAWHMETER_PATH "Draws/Oops/drawHMeter.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWVMETER_PATH #define BWIDGETS_DEFAULT_DRAWVMETER_PATH "Draws/Oops/drawVMeter.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWRMETER_PATH #define BWIDGETS_DEFAULT_DRAWRMETER_PATH "Draws/Oops/drawRMeter.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWBUTTON_PATH #define BWIDGETS_DEFAULT_DRAWBUTTON_PATH "Draws/Oops/drawButton.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWPAD_PATH #define BWIDGETS_DEFAULT_DRAWPAD_PATH "Draws/Oops/drawPad.hpp" #endif #ifndef BWIDGETS_DEFAULT_DIAL_ARC_FGCOLOR #define BWIDGETS_DEFAULT_DIAL_ARC_FGCOLOR getFgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_DIAL_ARC_BGCOLOR #define BWIDGETS_DEFAULT_DIAL_ARC_BGCOLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_DIAL_KNOB_REL_SIZE #define BWIDGETS_DEFAULT_DIAL_KNOB_REL_SIZE 0.0 #endif #ifndef BWIDGETS_DEFAULT_DIAL_KNOB_COLOR #define BWIDGETS_DEFAULT_DIAL_KNOB_COLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SLIDER_BAR_REL_SIZE #define BWIDGETS_DEFAULT_SLIDER_BAR_REL_SIZE 0.5 #endif #ifndef BWIDGETS_DEFAULT_SLIDER_BAR_FGCOLOR #define BWIDGETS_DEFAULT_SLIDER_BAR_FGCOLOR getFgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SLIDER_BAR_BGCOLOR #define BWIDGETS_DEFAULT_SLIDER_BAR_BGCOLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SWITCH_BAR_REL_SIZE #define BWIDGETS_DEFAULT_SWITCH_BAR_REL_SIZE 1.0 #endif #ifndef BWIDGETS_DEFAULT_SLIDER_KNOB_REL_SIZE #define BWIDGETS_DEFAULT_SLIDER_KNOB_REL_SIZE 0.5 #endif #ifndef BWIDGETS_DEFAULT_SLIDER_KNOB_COLOR #define BWIDGETS_DEFAULT_SLIDER_KNOB_COLOR getBgColors()[getStatus()].illuminate(BStyles::Color::illuminated) #endif #ifndef BWIDGETS_DEFAULT_SWITCH_BAR_FGCOLOR #define BWIDGETS_DEFAULT_SWITCH_BAR_FGCOLOR getFgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SWITCH_BAR_BGCOLOR #define BWIDGETS_DEFAULT_SWITCH_BAR_BGCOLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SWITCH_KNOB_REL_SIZE #define BWIDGETS_DEFAULT_SWITCH_KNOB_REL_SIZE 1.0 #endif #ifndef BWIDGETS_DEFAULT_SWITCH_KNOB_COLOR #define BWIDGETS_DEFAULT_SWITCH_KNOB_COLOR getBgColors()[getStatus()].illuminate(BStyles::Color::illuminated) #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_BAR_REL_SIZE #define BWIDGETS_DEFAULT_SCROLLBAR_BAR_REL_SIZE 1.0 #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_BAR_FGCOLOR #define BWIDGETS_DEFAULT_SCROLLBAR_BAR_FGCOLOR getBgColors()[getStatus()].illuminate(BStyles::Color::illuminated) #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_BAR_BGCOLOR #define BWIDGETS_DEFAULT_SCROLLBAR_BAR_BGCOLOR getBgColors()[getStatus()] #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_KNOB_REL_SIZE #define BWIDGETS_DEFAULT_SCROLLBAR_KNOB_REL_SIZE 0.5 #endif #ifndef BWIDGETS_DEFAULT_SCROLLBAR_KNOB_COLOR #define BWIDGETS_DEFAULT_SCROLLBAR_KNOB_COLOR getBgColors()[getStatus()].illuminate(BStyles::Color::illuminated) #endifsrc/BWidgets/BWidgets/Draws/Oops/drawArc.hpp000066400000000000000000000056471515163050000211710ustar00rootroot00000000000000/* drawArc.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWARC_HPP_ #define BWIDGETS_DRAWARC_HPP_ #include #include #include "../../../BStyles/Types/Color.hpp" #ifndef BWIDGETS_DEFAULT_DRAWARC_START #define BWIDGETS_DEFAULT_DRAWARC_START (M_PI * 0.55) #endif #ifndef BWIDGETS_DEFAULT_DRAWARC_END #define BWIDGETS_DEFAULT_DRAWARC_END (M_PI * 2.45) #endif #ifndef BWIDGETS_DEFAULT_DRAWARC_SIZE #define BWIDGETS_DEFAULT_DRAWARC_SIZE (BWIDGETS_DEFAULT_DRAWARC_END - BWIDGETS_DEFAULT_DRAWARC_START) #endif /** * @brief Draws an arc in a Cairo context. * @param cr Cairo context. * @param xc X center position. * @param y0 Y center position. * @param radius Arc radius. * @param min Start of activated (highlighted) part of the arc. Relative * value [0..1]. * @param max End of activated (highlighted) part of the arc. Relative * value [0..1]. * @param fgColor RGBA color for the activated part. * @param bgColor Bar RGBA color. */ inline void drawArc (cairo_t* cr, const double xc, const double yc, const double radius, const double min, const double max, const BStyles::Color fgColor, const BStyles::Color bgColor) { cairo_save(cr); cairo_set_line_width (cr, 0.0); // Arc cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor)); cairo_arc (cr, xc, yc, 0.96 * radius, BWIDGETS_DEFAULT_DRAWARC_START, BWIDGETS_DEFAULT_DRAWARC_END); cairo_arc_negative (cr, xc, yc, 0.70 * radius, BWIDGETS_DEFAULT_DRAWARC_END, BWIDGETS_DEFAULT_DRAWARC_START); cairo_close_path (cr); cairo_fill (cr); // Center cairo_set_source_rgba (cr, CAIRO_RGBA(fgColor)); cairo_arc (cr, xc, yc, 0.1 * radius, 0, 2 * M_PI); cairo_close_path (cr); cairo_fill (cr); // Fill cairo_arc (cr, xc, yc, 0.96 * radius - 0.2, BWIDGETS_DEFAULT_DRAWARC_START + min * BWIDGETS_DEFAULT_DRAWARC_SIZE, BWIDGETS_DEFAULT_DRAWARC_START + max * BWIDGETS_DEFAULT_DRAWARC_SIZE); cairo_arc_negative (cr, xc, yc, 0.7 * radius - 0.2, BWIDGETS_DEFAULT_DRAWARC_START + max * BWIDGETS_DEFAULT_DRAWARC_SIZE, BWIDGETS_DEFAULT_DRAWARC_START + min * BWIDGETS_DEFAULT_DRAWARC_SIZE); cairo_close_path (cr); cairo_fill (cr); cairo_restore(cr); } #endif /* BWIDGETS_DRAWARC_HPP_ */src/BWidgets/BWidgets/Draws/Oops/drawArcHandle.hpp000066400000000000000000000037231515163050000222760ustar00rootroot00000000000000/* drawArcHandle.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWARCHANDLE_HPP_ #define BWIDGETS_DRAWARCHANDLE_HPP_ #include #include #include "../../../BStyles/Types/Color.hpp" #ifndef BWIDGETS_DEFAULT_DRAWARC_START #define BWIDGETS_DEFAULT_DRAWARC_START (M_PI * 0.55) #endif #ifndef BWIDGETS_DEFAULT_DRAWARC_END #define BWIDGETS_DEFAULT_DRAWARC_END (M_PI * 2.45) #endif #ifndef BWIDGETS_DEFAULT_DRAWARC_SIZE #define BWIDGETS_DEFAULT_DRAWARC_SIZE (BWIDGETS_DEFAULT_DRAWARC_END - BWIDGETS_DEFAULT_DRAWARC_START) #endif /** * @brief Draws a knob spot as a handle for an arc in a Cairo * context. * @param cr Cairo context. * @param xc X center position. * @param y0 Y center position. * @param radius Arc radius. * @param min Start of activated (highlighted) part of the arc. Relative * value [0..1]. * @param max End of activated (highlighted) part of the arc. Relative * value [0..1]. * @param fgColor RGBA color for the activated part. * @param bgColor Bar RGBA color. */ inline void drawArcHandle (cairo_t* cr, const double xc, const double yc, const double radius, const double rval, const BStyles::Color fgColor, const BStyles::Color bgColor) { } #endif /* BWIDGETS_DRAWARCHANDLE_HPP_ */src/BWidgets/BWidgets/Draws/Oops/drawButton.hpp000066400000000000000000000036251515163050000217310ustar00rootroot00000000000000/* drawButton.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWBUTTON_HPP_ #define BWIDGETS_DRAWBUTTON_HPP_ #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a button in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param clicked True, if button clicked. Otherwise false. * @param fgColor RGBA color for the activated elements. * @param bgColor Bar RGBA color. */ inline void drawButton (cairo_t* cr, const double x0, const double y0, const double width, const double height, const bool clicked, const BStyles::Color fgColor, const BStyles::Color bgColor) { const BStyles::Color frameColor = bgColor.illuminate (clicked ? BStyles::Color::highLighted : BStyles::Color::darkened); cairo_save (cr); cairo_rectangle(cr, x0 + 0.5, y0 + 0.5, width - 1.0, height - 1.0); cairo_set_source_rgba(cr, CAIRO_RGBA(bgColor)); cairo_fill_preserve(cr); cairo_set_line_width(cr, 1.0); cairo_set_source_rgba(cr, CAIRO_RGBA(frameColor)); cairo_stroke (cr); cairo_restore (cr); } #endif /* BWIDGETS_DRAWBUTTON_HPP_ */src/BWidgets/BWidgets/Draws/Oops/drawHBar.hpp000066400000000000000000000041651515163050000212720ustar00rootroot00000000000000/* drawHBar.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWHBAR_HPP_ #define BWIDGETS_DRAWHBAR_HPP_ #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a horizontal bar in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param min Start of activated (highlighted) part of the bar. Relative * value [0..1]. * @param max End of activated (highlighted) part of the bar. Relative * value [0..1]. * @param fgColor RGBA color for the activated part. * @param bgColor Bar RGBA color. */ inline void drawHBar (cairo_t* cr, const double x0, const double y0, const double width, const double height, const double min, const double max, const BStyles::Color fgColor, const BStyles::Color bgColor) { const double x2 = x0 + min * width; const double x3 = x0 + max * width; cairo_save (cr); // Frame cairo_set_line_width (cr, 1.0); cairo_rectangle (cr, x0, y0, width, height); cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor)); cairo_fill (cr); // Foreground cairo_rectangle (cr, x0 + 1, y0 + 1, width - 2, height - 2); cairo_clip (cr); cairo_rectangle (cr, x2, y0, x3 - x2, height); cairo_set_source_rgba (cr, CAIRO_RGBA(fgColor)); cairo_fill (cr); cairo_restore (cr); } #endif /* BWIDGETS_DRAWHBAR_HPP_ */src/BWidgets/BWidgets/Draws/Oops/drawHMeter.hpp000066400000000000000000000130501515163050000216330ustar00rootroot00000000000000/* drawHMeter.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWHMETER_HPP_ #define BWIDGETS_DRAWHMETER_HPP_ #include "../../../BUtilities/cairoplus.h" #include #include #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a segmented two colors horizontal meter bar in a Cairo * context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param min Start of activated (highlighted) part of the meter. Relative * value [0..1]. * @param max End of activated (highlighted) part of the meter. Relative * value [0..1]. * @param step Size of each segment. * @param loColor RGBA color for the low values of the activated part. * @param hiColor RGBA color for the high values of the activated part. * @param gradient Color gradient function. * @param bgColor Bar RGBA color. */ inline void drawHMeter (cairo_t* cr, const double x0, const double y0, const double width, const double height, const double min, const double max, const double step, const BStyles::Color loColor, const BStyles::Color hiColor, std::function gradient, const BStyles::Color bgColor) { const int nrSteps = (step > 0 ? std::ceil (1.0 / step) : 10); const double dx = (width - 0.2 * height) * step; const BStyles::Color fgHi = loColor.illuminate (BStyles::Color::illuminated); const BStyles::Color fgLo = loColor; const BStyles::Color hiHi = hiColor.illuminate (BStyles::Color::illuminated); const BStyles::Color hiLo = hiColor; const BStyles::Color bgLo = bgColor.illuminate (BStyles::Color::shadowed); const BStyles::Color bgHi = bgColor; //const BStyles::Color bgDk = bgColor.illuminate (-0.75); cairo_save(cr); // Fill cairo_set_line_width (cr, 0.0); cairo_pattern_t* fgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); cairo_pattern_t* bgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); if (fgPat && bgPat && (cairo_pattern_status (fgPat) == CAIRO_STATUS_SUCCESS) && (cairo_pattern_status (bgPat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(fgHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0, CAIRO_RGBA(bgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0.25, CAIRO_RGBA(bgHi)); cairo_pattern_add_color_stop_rgba (bgPat, 1, CAIRO_RGBA(bgLo)); const double dv = 0.5 / static_cast(nrSteps); for (int i = 0; i < nrSteps; ++i) { const double v = static_cast(i) / static_cast(nrSteps); if ((v + dv >= min) && (v + dv < max)) { if ((fgHi != hiHi) || (fgLo != hiLo)) { fgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); BStyles::Color cLo; cLo.setHSV ( fgLo.hue() * (1.0 - gradient (v)) + hiLo.hue() * gradient (v), fgLo.saturation() * (1.0 - gradient (v)) + hiLo.saturation() * gradient (v), fgLo.value() * (1.0 - gradient (v)) + hiLo.value() * gradient (v), fgLo.alpha * (1.0 - gradient (v)) + hiLo.alpha * gradient (v) ); BStyles::Color cHi; cHi.setHSV ( fgHi.hue() * (1.0 - gradient (v)) + hiHi.hue() * gradient (v), fgHi.saturation() * (1.0 - gradient (v)) + hiHi.saturation() * gradient (v), fgHi.value() * (1.0 - gradient (v)) + hiHi.value() * gradient (v), fgHi.alpha * (1.0 - gradient (v)) + hiHi.alpha * gradient (v) ); cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(cLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(cHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(cLo)); } cairo_set_source (cr, fgPat); } else cairo_set_source (cr, bgPat); const double x = v * (width - 0.2 * height); if (dx < 3.0) cairo_rectangle (cr, x0 + 0.1 * height + x, y0 + 0.1 * height, dx, height - 0.2 * height); else cairo_rectangle (cr, x0 + 0.1 * height + x + 1.0, y0 + 0.1 * height, dx - 2.0, height - 0.2 * height); cairo_fill (cr); } cairo_pattern_destroy (bgPat); cairo_pattern_destroy (fgPat); } cairo_restore(cr); } #endif /* BWIDGETS_DRAWHMETER_HPP_ */src/BWidgets/BWidgets/Draws/Oops/drawKnob.hpp000066400000000000000000000033351515163050000213450ustar00rootroot00000000000000/* drawKnob.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWKNOB_HPP_ #define BWIDGETS_DRAWKNOB_HPP_ #include #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a knob in a Cairo context. * @param cr Cairo context. * @param xc X center position. * @param yc Y center position. * @param radius Knob radius. * @param height Knob pseudo 3D height. * @param fgColor RGBA color for the knob top. * @param bgColor Knob body RGBA color. */ inline void drawKnob (cairo_t* cr, const double xc, const double yc, const double radius, const double height, const BStyles::Color fgColor, const BStyles::Color bgColor) { cairo_save (cr); cairo_set_line_width (cr, 1.0); cairo_rectangle (cr, xc - radius, yc - radius, 2.0 * radius, 2.0 * radius); cairo_set_source_rgba (cr, CAIRO_RGBA(fgColor)); cairo_fill_preserve (cr); cairo_set_source_rgba (cr, CAIRO_RGBA(fgColor.illuminate(BStyles::Color::darkened))); cairo_stroke (cr); cairo_restore (cr); } #endif /* BWIDGETS_DRAWKNOB_HPP_ */src/BWidgets/BWidgets/Draws/Oops/drawPad.hpp000066400000000000000000000036131515163050000211570ustar00rootroot00000000000000/* drawPad.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWPAD_HPP_ #define BWIDGETS_DRAWPAD_HPP_ #include #include "../../../BUtilities/cairoplus.h" #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws someting like an LED pad in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Pad width. * @param height Pad height. * @param fgColor RGBA color. */ inline void drawPad (cairo_t* cr, double x, double y, double width, double height, const BStyles::Color fgColor) { if ((width <= 0) || (height <= 0)) return; cairo_save(cr); // Draw button BStyles::Color illuminated = fgColor.illuminate (0.05); BStyles::Color darkened = fgColor.illuminate (-0.33); cairo_pattern_t* pat = cairo_pattern_create_radial (x + width / 2, y + height / 2, 0.125 * width, x + width / 2, y + height / 2, 0.5 * width); cairo_pattern_add_color_stop_rgba (pat, 0.0, CAIRO_RGBA (illuminated)); cairo_pattern_add_color_stop_rgba (pat, 1.0, CAIRO_RGBA (darkened)); cairo_rectangle (cr, x, y, width, height); cairo_set_source (cr, pat); cairo_fill (cr); cairo_pattern_destroy (pat); cairo_restore(cr); } #endif /* BWIDGETS_DRAWPAD_HPP_ */ src/BWidgets/BWidgets/Draws/Oops/drawRMeter.hpp000066400000000000000000000142411515163050000216500ustar00rootroot00000000000000/* drawRMeter.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWRMETER_HPP_ #define BWIDGETS_DRAWRMETER_HPP_ #include #include "../../../BUtilities/cairoplus.h" #include #include #include "../../../BStyles/Types/Color.hpp" #ifndef BWIDGETS_DEFAULT_DRAWRMETER_START #define BWIDGETS_DEFAULT_DRAWRMETER_START (M_PI * 0.55) #endif #ifndef BWIDGETS_DEFAULT_DRAWRMETER_END #define BWIDGETS_DEFAULT_DRAWRMETER_END (M_PI * 2.45) #endif #ifndef BWIDGETS_DEFAULT_DRAWRMETER_SIZE #define BWIDGETS_DEFAULT_DRAWRMETER_SIZE (BWIDGETS_DEFAULT_DRAWRMETER_END - BWIDGETS_DEFAULT_DRAWRMETER_START) #endif /** * @brief Draws a segmented two colors pseudo 3d arc in a Cairo context. * @param cr Cairo context. * @param xc X center position. * @param y0 Y center position. * @param radius Arc radius. * @param min Start of activated (highlighted) part of the arc. Relative * value [0..1]. * @param max End of activated (highlighted) part of the arc. Relative * value [0..1]. * @param step Size of each segment. * @param loColor RGBA color for the low values of the activated part. * @param hiColor RGBA color for the high values of the activated part. * @param gradient Color gradient function. * @param bgColor Bar RGBA color. */ inline void drawRMeter (cairo_t* cr, const double xc, const double yc, const double radius, const double min, const double max, const double step, const BStyles::Color loColor, const BStyles::Color hiColor, std::function gradient, const BStyles::Color bgColor) { // Colors used const int nrSteps = (step > 0 ? std::ceil (1.0 / step) : 10); const double da = (1.5 * M_PI) * step; const double sa = 1.0 / radius; const BStyles::Color fgHi = loColor.illuminate (BStyles::Color::illuminated); const BStyles::Color fgLo = loColor; const BStyles::Color hiHi = hiColor.illuminate (BStyles::Color::illuminated); const BStyles::Color hiLo = hiColor; const BStyles::Color bgLo = bgColor.illuminate (BStyles::Color::shadowed); const BStyles::Color bgHi = bgColor; //const BStyles::Color bgDk = bgColor.illuminate (-0.75); cairo_save(cr); // Fill cairo_set_line_width (cr, 0.0); cairo_pattern_t* fgPat = cairo_pattern_create_linear (xc - radius, yc - radius, xc + radius, yc + radius); cairo_pattern_t* bgPat = cairo_pattern_create_linear (xc - radius, yc - radius, xc + radius, yc + radius); if (fgPat && bgPat && (cairo_pattern_status (fgPat) == CAIRO_STATUS_SUCCESS) && (cairo_pattern_status (bgPat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(fgHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0, CAIRO_RGBA(bgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0.25, CAIRO_RGBA(bgHi)); cairo_pattern_add_color_stop_rgba (bgPat, 1, CAIRO_RGBA(bgLo)); const double dv = 0.5 / static_cast(nrSteps); for (int i = 0; i < nrSteps; ++i) { const double v = static_cast(i) / static_cast(nrSteps); if ((v + dv >= min) && (v + dv < max)) { if ((fgHi != hiHi) || (fgLo != hiLo)) { fgPat = cairo_pattern_create_linear (xc - radius, yc - radius, xc + radius, yc + radius); BStyles::Color cLo; cLo.setHSV ( fgLo.hue() * (1.0 - gradient (v)) + hiLo.hue() * gradient (v), fgLo.saturation() * (1.0 - gradient (v)) + hiLo.saturation() * gradient (v), fgLo.value() * (1.0 - gradient (v)) + hiLo.value() * gradient (v), fgLo.alpha * (1.0 - gradient (v)) + hiLo.alpha * gradient (v) ); BStyles::Color cHi; cHi.setHSV ( fgHi.hue() * (1.0 - gradient (v)) + hiHi.hue() * gradient (v), fgHi.saturation() * (1.0 - gradient (v)) + hiHi.saturation() * gradient (v), fgHi.value() * (1.0 - gradient (v)) + hiHi.value() * gradient (v), fgHi.alpha * (1.0 - gradient (v)) + hiHi.alpha * gradient (v) ); cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(cLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(cHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(cLo)); } cairo_set_source (cr, fgPat); } else cairo_set_source (cr, bgPat); const double a = BWIDGETS_DEFAULT_DRAWRMETER_START + v * BWIDGETS_DEFAULT_DRAWRMETER_SIZE; if (da < 3.0 * sa) { cairo_arc (cr, xc, yc, 0.91 * radius, a, a + da); cairo_arc_negative (cr, xc, yc, 0.7 * radius, a + da, a); } else { cairo_arc (cr, xc, yc, 0.91 * radius, a + sa, a + da - sa); cairo_arc_negative (cr, xc, yc, 0.7 * radius, a + da - sa, a + sa); } cairo_fill (cr); } cairo_pattern_destroy (bgPat); cairo_pattern_destroy (fgPat); } cairo_restore(cr); } #endif /* BWIDGETS_DRAWRMETER_HPP_ */src/BWidgets/BWidgets/Draws/Oops/drawVBar.hpp000066400000000000000000000041641515163050000213070ustar00rootroot00000000000000/* drawVBar.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWVBAR_HPP_ #define BWIDGETS_DRAWVBAR_HPP_ #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a vertical bar in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param min Start of activated (highlighted) part of the bar. Relative * value [0..1]. * @param max End of activated (highlighted) part of the bar. Relative * value [0..1]. * @param fgColor RGBA color for the activated part. * @param bgColor Bar RGBA color. */ inline void drawVBar (cairo_t* cr, const double x0, const double y0, const double width, const double height, const double min, const double max, const BStyles::Color fgColor, const BStyles::Color bgColor) { const double y2 = y0 + min * height; const double y3 = y0 + max * height; cairo_save (cr); // Frame cairo_set_line_width (cr, 1.0); cairo_rectangle (cr, x0, y0, width, height); cairo_set_source_rgba (cr, CAIRO_RGBA(bgColor)); cairo_fill (cr); // Foreground cairo_rectangle (cr, x0 + 1, y0 + 1, width - 2, height - 2); cairo_clip (cr); cairo_rectangle (cr, x0, y2, width, y3 - y2); cairo_set_source_rgba (cr, CAIRO_RGBA(fgColor)); cairo_fill (cr); cairo_restore (cr); } #endif /* BWIDGETS_DRAWVBAR_HPP_ */src/BWidgets/BWidgets/Draws/Oops/drawVMeter.hpp000066400000000000000000000130401515163050000216500ustar00rootroot00000000000000/* drawVMeter.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_DRAWVMETER_HPP_ #define BWIDGETS_DRAWVMETER_HPP_ #include "../../../BUtilities/cairoplus.h" #include #include #include "../../../BStyles/Types/Color.hpp" /** * @brief Draws a segmented two colors vertical meter bar in a Cairo context. * @param cr Cairo context. * @param x0 X position. * @param y0 Y position. * @param width Bar width. * @param height Bar height. * @param min Start of activated (highlighted) part of the meter. Relative * value [0..1]. * @param max End of activated (highlighted) part of the meter. Relative * value [0..1]. * @param step Size of each segment. * @param loColor RGBA color for the low values of the activated part. * @param hiColor RGBA color for the high values of the activated part. * @param gradient Color gradient function. * @param bgColor Bar RGBA color. */ inline void drawVMeter (cairo_t* cr, const double x0, const double y0, const double width, const double height, const double min, const double max, const double step, const BStyles::Color loColor, const BStyles::Color hiColor, std::function gradient, const BStyles::Color bgColor) { const int nrSteps = (step > 0 ? std::ceil (1.0 / step) : 10); const double dy = (height - 0.2 * width) * step; const BStyles::Color fgHi = loColor.illuminate (BStyles::Color::illuminated); const BStyles::Color fgLo = loColor; const BStyles::Color hiHi = hiColor.illuminate (BStyles::Color::illuminated); const BStyles::Color hiLo = hiColor; const BStyles::Color bgLo = bgColor.illuminate (BStyles::Color::shadowed); const BStyles::Color bgHi = bgColor; //const BStyles::Color bgDk = bgColor.illuminate (-0.75); cairo_save (cr); // Fill cairo_set_line_width (cr, 0.0); cairo_pattern_t* fgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); cairo_pattern_t* bgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); if (fgPat && bgPat && (cairo_pattern_status (fgPat) == CAIRO_STATUS_SUCCESS) && (cairo_pattern_status (bgPat) == CAIRO_STATUS_SUCCESS)) { cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(fgHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(fgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0, CAIRO_RGBA(bgLo)); cairo_pattern_add_color_stop_rgba (bgPat, 0.25, CAIRO_RGBA(bgHi)); cairo_pattern_add_color_stop_rgba (bgPat, 1, CAIRO_RGBA(bgLo)); const double dv = 0.5 / static_cast(nrSteps); for (int i = 0; i < nrSteps; ++i) { const double v = static_cast(i) / static_cast(nrSteps); if ((v + dv >= min) && (v + dv < max)) { if ((fgHi != hiHi) || (fgLo != hiLo)) { fgPat = cairo_pattern_create_linear (x0, y0, x0 + width, y0 + height); BStyles::Color cLo; cLo.setHSV ( fgLo.hue() * (1.0 - gradient (v)) + hiLo.hue() * gradient (v), fgLo.saturation() * (1.0 - gradient (v)) + hiLo.saturation() * gradient (v), fgLo.value() * (1.0 - gradient (v)) + hiLo.value() * gradient (v), fgLo.alpha * (1.0 - gradient (v)) + hiLo.alpha * gradient (v) ); BStyles::Color cHi; cHi.setHSV ( fgHi.hue() * (1.0 - gradient (v)) + hiHi.hue() * gradient (v), fgHi.saturation() * (1.0 - gradient (v)) + hiHi.saturation() * gradient (v), fgHi.value() * (1.0 - gradient (v)) + hiHi.value() * gradient (v), fgHi.alpha * (1.0 - gradient (v)) + hiHi.alpha * gradient (v) ); cairo_pattern_add_color_stop_rgba (fgPat, 0, CAIRO_RGBA(cLo)); cairo_pattern_add_color_stop_rgba (fgPat, 0.25, CAIRO_RGBA(cHi)); cairo_pattern_add_color_stop_rgba (fgPat, 1, CAIRO_RGBA(cLo)); } cairo_set_source (cr, fgPat); } else cairo_set_source (cr, bgPat); const double y = v * (height - 0.2 * width); if (dy < 3.0) cairo_rectangle (cr, x0 + 0.1 * width , y0 + height - 0.1 * width - y - dy, width - 0.2 * width, dy); else cairo_rectangle (cr, x0 + 0.1 * width, y0 + height - 0.1 * width - y - dy + 1.0, width - 0.2 * width, dy - 2.0); cairo_fill (cr); } cairo_pattern_destroy (bgPat); cairo_pattern_destroy (fgPat); } cairo_restore (cr); } #endif /* BWIDGETS_DRAWVMETER_HPP_ */src/BWidgets/BWidgets/EditLabel.hpp000066400000000000000000000511111515163050000174160ustar00rootroot00000000000000/* EditLabel.hpp * Copyright (C) 2018, 2019 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_EDITLABEL_HPP_ #define BWIDGETS_EDITLABEL_HPP_ #include "Label.hpp" #include "Supports/Clickable.hpp" #include "Supports/KeyPressable.hpp" #include "Supports/Draggable.hpp" #include "Supports/ValueableTyped.hpp" #include "../BDevices/Keys.hpp" #include "../BEvents/KeyEvent.hpp" #include "Window.hpp" #include #include #include #ifndef BWIDGETS_DEFAULT_EDITLABEL_WIDTH #define BWIDGETS_DEFAULT_EDITLABEL_WIDTH BWIDGETS_DEFAULT_LABEL_WIDTH #endif #ifndef BWIDGETS_DEFAULT_EDITLABEL_HEIGHT #define BWIDGETS_DEFAULT_EDITLABEL_HEIGHT BWIDGETS_DEFAULT_LABEL_HEIGHT #endif namespace BWidgets { /** * @brief Single line text edit widget. * * %EditLabel allows the user to: * * set the edit cursor by clicking on the text (Clickable), * * select a text region by dragging (Draggable), * * change the text via the keyboard (KeyPressable), * * keep the new text and emit it as a ValueChangedEvent (Valueable) once * the edit is confirmed (), or to discard changes (). */ class EditLabel : public Label, public Clickable, public Draggable, public KeyPressable, public ValueableTyped { protected: bool editMode_; size_t cursorFrom_; size_t cursorTo_; public: /** * @brief Constructs an empty default %EditLabel object. */ EditLabel (); /** * @brief Constructs an empty default %EditLabel object. * @param URID URID. * @param title %Widget title. */ EditLabel (const uint32_t urid, const std::string& title); /** * @brief Constructs a %EditLabel object at the origin with optimized * extends. * @param text Text. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %EditLabel title (default = ""). */ EditLabel (const std::string& text, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Constructs a %EditLabel object at the origin. * @param x %Label X origin coordinate. * @param y %Label Y origin coordinate. * @param width %Label width. * @param height %Label height. * @param text Text. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %EditLabel title (default = ""). */ EditLabel (const double x, const double y, const double width, const double height, const std::string& text, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %EditLabel. * @return Pointer to the new %EditLabel. * * Creates a clone of this %EditLabel by copying all properties. But NOT * its linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %EditLabel. * @param that Other %EditLabel. * * Copies all properties from another %Label. But NOT its linkage. */ void copy (const EditLabel* that); /** * @brief Sets the label text (= value). * @param value Label text (= value). * * Also emits a ValueChangeTyped event. */ virtual void setValue (const std::string& text) override; /** * @brief Sets the label text. * @param text Label text. * * Equivalent to setValue(). */ virtual void setText (const std::string& text) override; /** * @brief Gets the (stored) label text (= value). * @return Label text (= value). * * Equivalent to getValue(). * If the EditLabel is currently edited, then %getText() returns the last * stored text. */ virtual std::string getText () const override; /** * @brief Changes the edit mode. * @param mode True for entering the edit mode, otherwise false. * * The edit mode allows editing the text. The edit mode is entered by * clicking on the text. And it is leaved by pressing or . */ virtual void setEditMode (const bool mode); /** * @brief Gets the edit mode. * @return True for the edit mode, otherwise false. * * The edit mode allows editing the text. The edit mode is entered by * clicking on the text. And it is leaved by pressing or . */ bool getEditMode () const; /** * @brief Sets the cursor position. * @param pos Cursor position starting from 0 (before the first char) to * text_.size() (behind the last char). */ virtual void setCursor (const size_t pos); /** * @brief Sets a selection range between two cursor positions. * @param from First cursor position. * @param to Second cursor position. * * Cursor positions start from 0 (before the first char) to text_.size() * (behind the last char). */ virtual void setCursor (const size_t from, const size_t to); /** * @brief Applies the changes of the text, leaves the edit mode and emits * a ValueChangedEvent. */ virtual void applyEdit (); /** * @brief Discards the changes of the text, restores the previously stored * text and leaves the edit mode. */ virtual void discardEdit (); /** * @brief Enters this %EditLabel. * * Activates this %EditLabel, takes over keyboard control, switches on * editMode_ the and calls to leave all other widgets linked to the main * Window to become the only entered Widget. */ virtual void enter () override; /** * @brief Leaves this %EditLabel. * * De-activates this %EditLabel, applies text changes and release keyboard * conrol. */ virtual void leave () override; /** * @brief Leaves this %EditLabel. * @param apply True, if text changes shall be applied, otherwise false. * * De-activates this %EditLabel, applies or discards text changes and * release keyboard conrol. */ virtual void leave (const bool apply); /** * @brief Method called when pointer button clicked (pressed and * released). * @param event Passed Event. * * Method called from the main window event scheduler when * pointer button cklicked. By default, it calls its static callback * function. */ virtual void onButtonClicked (BEvents::Event* event) override; /** * @brief Method called upon pointer drag. * @param event Passed Event. * * Method called from the main window event scheduler upon * a pointer drag. By default, it calls its static callback function. */ virtual void onPointerDragged (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyPressEvent is * received. * @param event Passed Event. * * Method called from the main window event scheduler if a * key is pressed. By default, it calls its static callback function. */ virtual void onKeyPressed (BEvents::Event* event) override; protected: /** * @brief Calculates the char position (= cursor position) from the * mouse pointer position. * @param position Mouse pointer position. * @return Cursor position. */ size_t getCursorFromCoords (const BUtilities::Point<>& position); /** * @brief Unclipped draw to the surface (if is visualizable). */ virtual void draw () override; /** * @brief Clipped Draw to the surface (if is visualizable). * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped Draw to the surface (if is visualizable). * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline EditLabel::EditLabel () : EditLabel (0.0, 0.0, BWIDGETS_DEFAULT_EDITLABEL_WIDTH, BWIDGETS_DEFAULT_EDITLABEL_HEIGHT, "", BUTILITIES_URID_UNKNOWN_URID, "") { } inline EditLabel::EditLabel (const uint32_t urid, const std::string& title) : EditLabel (0.0, 0.0, BWIDGETS_DEFAULT_EDITLABEL_WIDTH, BWIDGETS_DEFAULT_EDITLABEL_HEIGHT, "", urid, title) { } inline EditLabel::EditLabel (const std::string& text, uint32_t urid, std::string title) : EditLabel (0.0, 0.0, BWIDGETS_DEFAULT_EDITLABEL_WIDTH, BWIDGETS_DEFAULT_EDITLABEL_HEIGHT, text, urid, title) { Label::resize(); } inline EditLabel::EditLabel (const double x, const double y, const double width, const double height, const std::string& text, uint32_t urid, std::string title) : Label (x, y, width, height, text, urid, title), Clickable(), Draggable(), KeyPressable(), ValueableTyped (text), editMode_ (false), cursorFrom_ (0), cursorTo_ (0) { setActivatable(true); setEnterable (true); } inline Widget* EditLabel::clone () const { Widget* f = new EditLabel (urid_, title_); f->copy (this); return f; } inline void EditLabel::copy (const EditLabel* that) { Clickable::operator= (*that); Draggable::operator= (*that); KeyPressable::operator= (*that); ValueableTyped::operator= (*that); editMode_ = that->editMode_; cursorFrom_ = that->cursorFrom_; cursorTo_ = that->cursorTo_; Label::copy (that); } inline void EditLabel::setValue (const std::string& text) { // Set displayed text if (text != Label::getText()) { setEditMode (false); text_ = text; setCursor (0); update (); } // Set value too ValueableTyped::setValue (text); } inline void EditLabel::setText (const std::string& text) { setValue (text); } inline std::string EditLabel::getText () const { return getValue(); } inline void EditLabel::setEditMode (const bool mode) { if (mode != editMode_) { editMode_ = mode; update (); } } inline bool EditLabel::getEditMode () const { return editMode_; } inline void EditLabel::setCursor (const size_t pos) { setCursor (pos, pos); } inline void EditLabel::setCursor (const size_t from, const size_t to) { // Check limits std::wstring_convert, char32_t> convert; std::u32string u32labelText = convert.from_bytes (text_); const size_t s32 = u32labelText.length (); const size_t cf = std::min (from, s32); const size_t ct = std::min (to, s32); // Apply changes if ((cf != cursorFrom_) || (ct != cursorTo_)) { cursorFrom_ = cf; cursorTo_ = ct; update (); } } inline void EditLabel::applyEdit () { freeDevice (BDevices::Keys ()); setEditMode (false); if (text_ != getValue()) setValue (text_); } inline void EditLabel::discardEdit () { freeDevice (BDevices::Keys ()); setEditMode (false); setValue (getValue()); } inline void EditLabel::enter () { if (isEnterable() && (!isEntered())) { setKeyPressable(true); grabDevice (BDevices::Keys()); setEditMode(true); Widget::enter(); } } inline void EditLabel::leave () { leave (true); } inline void EditLabel::leave (const bool apply) { if (isEnterable() && isEntered()) { if (apply) applyEdit(); else discardEdit(); Widget::leave(); } } inline void EditLabel::onButtonClicked (BEvents::Event* event) { if ( isValueable() && isEnterable() && dynamic_cast(event) && (dynamic_cast(event)->getWidget () == this) && (dynamic_cast(event)->getPosition() == dynamic_cast(event)->getOrigin()) && dynamic_cast(main_) ) { enter(); size_t cursor = getCursorFromCoords (dynamic_cast(event)->getPosition ()); setCursor (cursor, cursor); } Clickable::onButtonClicked (event); } inline void EditLabel::onPointerDragged (BEvents::Event* event) { if ( isValueable() && editMode_ && dynamic_cast(event) && (dynamic_cast(event)->getWidget () == this) && isDeviceGrabbed(BDevices::Keys()) ) { size_t cursor = getCursorFromCoords (dynamic_cast(event)->getPosition ()); setCursor (cursorFrom_, cursor); } Draggable::onPointerDragged (event); } inline void EditLabel::onKeyPressed (BEvents::Event* event) { if ( dynamic_cast(event) && (event->getWidget () == this) && dynamic_cast(main_) && isDeviceGrabbed(BDevices::Keys()) ) { uint32_t key = dynamic_cast(event)->getKey (); switch (key) { // Backspace case 8: { std::wstring_convert, char32_t> convert; std::u32string u32labelText = convert.from_bytes (text_); const size_t s32 = u32labelText.length (); size_t cf = std::min (cursorFrom_, s32); size_t ct = std::min (cursorTo_, s32); if (ct < cf) std::swap (ct, cf); if (cf != ct) u32labelText.erase (cf, ct - cf); else if (cf > 0) { u32labelText.erase (cf - 1, 1); --cf; } text_ = convert.to_bytes (u32labelText); setCursor (cf); // update() done via setCursor() } break; // Enter case 13: leave (); break; // Escape case 27: leave (false); break; // Delete case 127: { std::wstring_convert, char32_t> convert; std::u32string u32labelText = convert.from_bytes (text_); const size_t s32 = u32labelText.length (); size_t cf = std::min (cursorFrom_, s32); size_t ct = std::min (cursorTo_, s32); if (ct < cf) std::swap (ct, cf); if (cf != ct) u32labelText.erase (cf, ct - cf); else if (cf < u32labelText.size ()) u32labelText.erase (cf, 1); text_ = convert.to_bytes (u32labelText); setCursor (cf); update (); } break; case PUGL_KEY_LEFT : if (cursorFrom_ > 0) setCursor (cursorFrom_ - 1); break; case PUGL_KEY_RIGHT : setCursor (cursorFrom_ + 1); break; default: { if ((key >= 0x20) && (key < 0x7F)) { std::wstring_convert, char32_t> convert; std::u32string u32labelText = convert.from_bytes (text_); const size_t s32 = u32labelText.length (); size_t cf = std::min (cursorFrom_, s32); size_t ct = std::min (cursorTo_, s32); if (ct < cf) std::swap (ct, cf); if (cf != ct) u32labelText.erase (cf, ct - cf); u32labelText.insert (u32labelText.begin () + cf, key); text_ = convert.to_bytes (u32labelText); setCursor (cf + 1); // update() done via setCursor() } } break; } } KeyPressable::onKeyPressed(event); } inline size_t EditLabel::getCursorFromCoords (const BUtilities::Point<>& position) { std::wstring_convert, char32_t> convert; const std::u32string u32labelText = convert.from_bytes (text_); size_t cursor = u32labelText.length (); if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return 0; cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { std::wstring_convert, char32_t> convert; const double xoff = getXOffset (); const double w = getEffectiveWidth (); const BStyles::Font font = getFont(); const cairo_text_extents_t ext = font.getCairoTextExtents (cr, "|" + text_ + "|"); const cairo_text_extents_t ext0 = font.getCairoTextExtents(cr, "|"); double x0; switch (font.align) { case BStyles::Font::TextAlign::left: x0 = - ext.x_bearing; break; case BStyles::Font::TextAlign::center: x0 = w / 2 - (ext.width - 2 * ext0.width - 2 * ext0.x_bearing) / 2; break; case BStyles::Font::TextAlign::right: x0 = w - (ext.width - 2 * ext0.width - 2 * ext0.x_bearing); break; default: x0 = 0; } std::u32string u32fragment = U""; for (size_t i = 0; i < u32labelText.length (); ++i) { u32fragment += u32labelText[i]; const std::string fragment = convert.to_bytes (u32fragment); const cairo_text_extents_t ext1 = font.getCairoTextExtents(cr, "|" + fragment + "|"); if (position.x < xoff + x0 + ext1.width - 2 * ext0.width - 2 * ext0.x_bearing) { cursor = i; break; } } cairo_destroy (cr); } return cursor; } inline void EditLabel::draw () { draw (0, 0, getWidth(), getHeight()); } inline void EditLabel::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void EditLabel::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; // Draw super class widget elements first Widget::draw (area); cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); const double xoff = getXOffset (); const double yoff = getYOffset (); const double w = getEffectiveWidth (); const double h = getEffectiveHeight (); const BStyles::Font font = getFont(); const cairo_text_extents_t ext = font.getCairoTextExtents (cr, "|" + text_ + "|"); const cairo_text_extents_t ext0 = font.getCairoTextExtents(cr, "|"); cairo_select_font_face (cr, font.family.c_str (), font.slant, font.weight); cairo_set_font_size (cr, font.size); double x0, y0; switch (font.align) { case BStyles::Font::TextAlign::left: x0 = 0; break; case BStyles::Font::TextAlign::center: x0 = w / 2 - (ext.width - 2 * ext0.width - 2 * ext0.x_bearing) / 2; break; case BStyles::Font::TextAlign::right: x0 = w - (ext.width - 2 * ext0.width - 2 * ext0.x_bearing); break; default: x0 = 0; } switch (font.valign) { case BStyles::Font::TextVAlign::top: y0 = - ext.y_bearing; break; case BStyles::Font::TextVAlign::middle: y0 = h / 2 - ext.height / 2 - ext.y_bearing; break; case BStyles::Font::TextVAlign::bottom: y0 = h - ext.height - ext.y_bearing; break; default: y0 = 0; } if (isValueable() && editMode_) { std::wstring_convert, char32_t> convert; std::u32string u32labelText = convert.from_bytes (text_); const size_t s32 = u32labelText.length (); size_t cf = std::min (cursorFrom_, s32); size_t ct = std::min (cursorTo_, s32); if (ct < cf) std::swap (ct, cf); const std::string s1 = convert.to_bytes (u32labelText.substr (0, cf)); const std::string s2 = convert.to_bytes (u32labelText.substr (cf, ct - cf)); const std::string s3 = convert.to_bytes (u32labelText.substr (ct, std::u32string::npos)); const cairo_text_extents_t ext1 = font.getCairoTextExtents(cr, "|" + s1 + "|"); const cairo_text_extents_t ext2 = font.getCairoTextExtents(cr, "|" + s2 + "|"); double w1 = ext1.width - 2 * ext0.width - 2 * ext0.x_bearing; double w2 = ext2.width - 2 * ext0.width - 2 * ext0.x_bearing; const BStyles::Color lc = getTxColors () [getStatus()].illuminate(BStyles::Color::highLighted); cairo_set_source_rgba (cr, CAIRO_RGBA (lc)); cairo_set_line_width (cr, 1.0); cairo_rectangle (cr, xoff + x0 + w1, yoff + y0, w2, -ext0.height); cairo_stroke_preserve (cr); cairo_fill (cr); cairo_set_source_rgba (cr, CAIRO_RGBA (lc)); cairo_move_to (cr, xoff + x0, yoff + y0); cairo_show_text (cr, s1.c_str ()); cairo_set_source_rgba (cr, 1 - lc.red, 1 - lc.green, 1 - lc.blue, lc.alpha); cairo_move_to (cr, xoff + x0 + w1, yoff + y0); cairo_show_text (cr, s2.c_str ()); cairo_set_source_rgba (cr, CAIRO_RGBA (lc)); cairo_move_to (cr, xoff + x0 + w1 + w2, yoff + y0); cairo_show_text (cr, s3.c_str ()); } else { const BStyles::Color lc = getTxColors () [getStatus()]; cairo_set_source_rgba (cr, CAIRO_RGBA (lc)); cairo_move_to (cr, xoff + x0, yoff + y0); cairo_show_text (cr, text_.c_str ()); } } cairo_destroy (cr); } } #endif /* BWIDGETS_EDITLABEL_HPP_ */ src/BWidgets/BWidgets/FileChooser.hpp000066400000000000000000000737641515163050000200150ustar00rootroot00000000000000/* FileChooser.hpp * Copyright (C) 2019 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_FILECHOOSER_HPP_ #define BWIDGETS_FILECHOOSER_HPP_ #include #include #include #include #include #include #include "Box.hpp" #include "Frame.hpp" #include "Supports/Clickable.hpp" #include "Supports/KeyPressable.hpp" #include "Supports/ValueableTyped.hpp" #include "Supports/Closeable.hpp" #include "Supports/Navigatable.hpp" #include "Symbol.hpp" #include "TextButton.hpp" #include "EditLabel.hpp" #include "ComboBox.hpp" #include "MessageBox.hpp" #ifndef BWIDGETS_DEFAULT_FILECHOOSER_WIDTH #define BWIDGETS_DEFAULT_FILECHOOSER_WIDTH 400 #endif #ifndef BWIDGETS_DEFAULT_FILECHOOSER_HEIGHT #define BWIDGETS_DEFAULT_FILECHOOSER_HEIGHT 320 #endif #ifndef PATH_SEPARATOR #define PATH_SEPARATOR "/" #endif namespace BWidgets { /** * @brief Menu widget for selection of a file. * * The %FileChooser is a Valueable Widget based on Frame. It consists of: * * a Label to display the current path, * * a new folder SymbolButton, * * a ListBox with the (filtered) content of the current path, * * a EditLabel to display or edit the selected filename, * * a ComboBox to select filename filter options, * * a "Cancel" button, * * an "OK" / "Open" button, * * The ListBox fascilitates selection of files and the navigation through * the file system. A selected file is also shown in the EditLabel. * * Clicking on the new folder SymbolButton opens a dialog and the user is * asked to enter a new folder name. The new folder is created within the * current path shown in the Label. * * Clicking on "Cancel" will set the widget value to "" and a * CloseRequestEvent is emitted. * * Clicking on "OK" / "Open" will set the widget value to path + filename * and a CloseRequestEvent is emitted. */ class FileChooser : public Frame, public ValueableTyped, public KeyPressable, public Clickable, public Navigatable, public Closeable { public: /** * @brief Filter data type consisting of a regex and a name. */ typedef std::pair Filter; protected: std::map filters_; std::vector dirs_; std::vector files_; public: Label pathNameBox; SymbolButton newFolderButton; ListBox fileListBox; Label fileNameLabel; EditLabel fileNameBox; ComboBox filterComboBox; TextButton cancelButton; TextButton okButton; Label fileListBoxFileLabel; Label fileListBoxDirLabel; Label filterComboBoxFilterLabel; MessageBox confirmBox; Box createBox; Label createLabel; EditLabel createInput; Label createError; bool confirmIfExists; bool confirmIfNotExists; /** * @brief Constructs a default FileChooser object. * */ FileChooser (); /** * @brief Constructs a default FileChooser object. * @param URID URID. * @param title %Widget title. */ FileChooser (const uint32_t urid, const std::string& title); /** * @brief Constructs a FileChooser object with default size * @param path File path. * @param filters Optional, initializer list with filename search * filters. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %FileChooser title. */ FileChooser (const std::string& path, std::initializer_list filters = {}, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Constructs a FileChooser object with default size * @param x %FileChooser X origin coordinate. * @param y %FileChooser Y origin coordinate. * @param width %FileChooser width. * @param height %FileChooser height. * @param path File path. * @param filters Optional, initializer list with filename search * filters. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %FileChooser title. */ FileChooser (const double x, const double y, const double width, const double height, std::string path = ".", std::initializer_list filters = {Filter {BUtilities::Dictionary::get ("All files"), std::regex (".*")}}, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %FileChooser. * @return Pointer to the new %FileChooser. * * Creates a clone of this widget by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %FileChooser. * @param that Other %FileChooser. * * Copies all properties from another %FileChooser. But NOT its linkage. */ void copy (const FileChooser* that); /** * @brief Sets the current file path. * @param path File path. */ virtual void setPath (const std::string& path); /** * @brief Gets the current file path. * @return Current file path. */ std::string getPath () const; /** * @brief Sets the file name. * @param filename File name. */ virtual void setFileName (const std::string& filename); /** * @brief Gets the selected file name. * @return Selected file name. */ std::string getFileName () const; /** * @brief Sets the map of filename search filters. * @param filters std::map with filter name and regex filter. */ void setFilter (const std::map& filters); /** * @brief Gets the map of filename search filters. * @return std::map with filter name and regex filter. */ std::map getFilters () const; /** * @brief Selects and activates a filter. * @param name Filter name */ virtual void selectFilter (const std::string& name); /** * @brief Optimizes the widget extends. * * Resizes the widget to include all direct children into the widget * area. Resizes the widget to its standard size if this widget doesn't * have any additional children (execept the built-in child widgets). */ virtual void resize () override; /** * @brief Resizes the widget extends. * @param width New widget width. * @param height New widget height. */ virtual void resize (const double width, const double height) override; /** * @brief Resizes the widget extends. * @param extends New widget extends. */ virtual void resize (const BUtilities::Point<> extends) override; /** * @brief Enters this %FileChooser. * * Activates this %FileChooses, takes over keyboard control, and calls to * leave all other widgets linked to the main Window to become the only * entered Widget. */ virtual void enter () override; /** * @brief Leaves this %FileChooser. * * De-activates this %FileChooser, resets navigation and release keyboard * conrol. */ virtual void leave () override; /** * @brief Method to be called following an object state change. */ virtual void update () override; /** * @brief Method called when pointer button clicked (pressed and * released). * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button cklicked. By default, it switches the %FileChooser * status between `BStyles::Status::normal` and `BStyles::Status::active` * and calls its static callback function. */ virtual void onButtonClicked (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyPressEvent is * received. * @param event Passed Event. * * Method called from the main window event scheduler if a * key is pressed. It activates the previous previous / next button and * calls its static callback function. */ virtual void onKeyPressed (BEvents::Event* event) override; protected: static void fileListBoxChangedCallback (BEvents::Event* event); static void filterComboBoxChangedCallback (BEvents::Event* event); static void cancelButtonClickedCallback (BEvents::Event* event); static void okButtonClickedCallback (BEvents::Event* event); static void confirmClickedCallback (BEvents::Event* event); static void createClickedCallback (BEvents::Event* event); static void newFolderButtonClickedCallback (BEvents::Event* event); void enterDir (); void processFileSelected(); virtual std::function getFileListBoxClickedCallback(); bool isDir (const std::string& path, const std::string& name) const; }; inline FileChooser::FileChooser () : FileChooser (0.0, 0.0, BWIDGETS_DEFAULT_FILECHOOSER_WIDTH, BWIDGETS_DEFAULT_FILECHOOSER_HEIGHT, "", {}, BUTILITIES_URID_UNKNOWN_URID, "") { } inline FileChooser::FileChooser (const uint32_t urid, const std::string& title) : FileChooser (0, 0, BWIDGETS_DEFAULT_FILECHOOSER_WIDTH, BWIDGETS_DEFAULT_FILECHOOSER_HEIGHT, "", {}, urid, title) { } inline FileChooser::FileChooser (const std::string& path, std::initializer_list filters, uint32_t urid, std::string title) : FileChooser (0, 0, BWIDGETS_DEFAULT_FILECHOOSER_WIDTH, BWIDGETS_DEFAULT_FILECHOOSER_HEIGHT, path, filters, urid, title) { } inline FileChooser::FileChooser (const double x, const double y, const double width, const double height, std::string path, std::initializer_list filters, uint32_t urid, std::string title) : Frame (x, y, width, height, urid, title), ValueableTyped (path), KeyPressable(), Clickable(), Navigatable(), Closeable (), filters_ (), dirs_ (), files_ (), pathNameBox ("", BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/textbox"), ""), newFolderButton (Symbol::SymbolType::newFolder, false, false, BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/button"), ""), fileListBox ({}, 0, BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/listbox"), ""), fileNameLabel (BUtilities::Dictionary::get ("File") + ":", BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/label"), ""), fileNameBox ("", BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/textbox"), ""), filterComboBox ({}, 0, BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/combobox"), ""), cancelButton (BUtilities::Dictionary::get ("Cancel"), false, false, BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/button"), ""), okButton (BUtilities::Dictionary::get ("OK"), false, false, BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/button"), ""), fileListBoxFileLabel ("", BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/listbox/item/file"), ""), fileListBoxDirLabel ("", BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/listbox/item/dir"), ""), filterComboBoxFilterLabel ("", BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "combobox/listbox/item"), ""), confirmBox (Symbol::SymbolType::warn, "", "", {BUtilities::Dictionary::get ("Cancel"), BUtilities::Dictionary::get ("OK")}, BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/box"), ""), createBox ({BUtilities::Dictionary::get ("Cancel"), BUtilities::Dictionary::get ("OK")}, BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/box"), ""), createLabel ("", BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/label"), ""), createInput ("", BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/textbox"), ""), createError ("", BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/label"), ""), confirmIfExists(true), confirmIfNotExists(true) { setActivatable(true); setEnterable(true); setKeyPressable(false); setPath (path); enterDir(); pathNameBox.setBorder (BStyles::Border (BStyles::greyLine1pt, 0.0, 3.0)); fileNameBox.setBorder (BStyles::Border (BStyles::greyLine1pt, 0.0, 3.0)); createInput.setBorder (BStyles::Border (BStyles::greyLine1pt, 0.0, 3.0)); fileNameLabel.setBorder(BStyles::Border (BStyles::noLine, 0.0, 4.0)); createBox.setStacking (StackingType::escape); confirmBox.setStacking (StackingType::escape); setBackground (BStyles::Fill(getBgColors()[BStyles::Status::normal].illuminate (-0.75))); setBorder (BStyles::Border (BStyles::Line (getBgColors()[BStyles::Status::normal].illuminate (BStyles::Color::highLighted), 1.0), 0.0, 0.0)); fileListBox.setCallbackFunction (BEvents::Event::EventType::valueChangedEvent, fileListBoxChangedCallback); filterComboBox.setCallbackFunction (BEvents::Event::EventType::valueChangedEvent, filterComboBoxChangedCallback); cancelButton.setCallbackFunction (BEvents::Event::EventType::valueChangedEvent, cancelButtonClickedCallback); okButton.setCallbackFunction (BEvents::Event::EventType::valueChangedEvent, okButtonClickedCallback); confirmBox.setCallbackFunction (BEvents::Event::EventType::valueChangedEvent, confirmClickedCallback); newFolderButton.setCallbackFunction (BEvents::Event::EventType::valueChangedEvent, newFolderButtonClickedCallback); createBox.setCallbackFunction (BEvents::Event::EventType::valueChangedEvent, createClickedCallback); for (const Filter& f : filters) { filters_[f.first] = f.second; filterComboBox.addItem (f.first); } filterComboBox.setValue (1); pathNameBox.setActivatable(true); pathNameBox.setEnterable(true); fileListBox.setActivatable(true); fileListBox.setEnterable(true); fileNameLabel.setActivatable(true); fileNameBox.setEnterable(true); cancelButton.setActivatable(true); cancelButton.setEnterable(true); okButton.setActivatable(true); okButton.setEnterable(true); newFolderButton.setActivatable(true); newFolderButton.setEnterable(true); createBox.add (&createLabel); createBox.add (&createInput); createBox.add (&createError); add (&pathNameBox); add (&fileListBox); add (&fileNameLabel); add (&fileNameBox); add (&filterComboBox); add (&cancelButton); add (&okButton); add (&newFolderButton); } inline Widget* FileChooser::clone () const { Widget* f = new FileChooser (urid_, title_); f->copy (this); return f; } inline void FileChooser::copy (const FileChooser* that) { filters_ = that->filters_; dirs_ = that->dirs_; files_ = that->files_; pathNameBox.copy (&that->pathNameBox); newFolderButton.copy (&that->newFolderButton); fileListBox.copy (&that->fileListBox); fileNameLabel.copy (&that->fileNameLabel); fileNameBox.copy (&that->fileNameBox); filterComboBox.copy (&that->filterComboBox); cancelButton.copy (&that->cancelButton); okButton.copy (&that->okButton); fileListBoxFileLabel.copy (&that->fileListBoxFileLabel); fileListBoxDirLabel.copy (&that->fileListBoxDirLabel); filterComboBoxFilterLabel.copy (&that->filterComboBoxFilterLabel); release (&confirmBox); confirmBox.copy (&that->confirmBox); if (that->contains (&that->confirmBox)) add (&confirmBox); release (&createBox); createBox.copy (&that->createBox); if (that->contains (&that->createBox)) add (&createBox); createLabel.copy (&that->createLabel); createInput.copy (&that->createInput); createError.copy (&that->createError); Closeable::operator= (*that); Navigatable::operator= (*that); Clickable::operator= (*that); KeyPressable::operator=(*that); ValueableTyped::operator= (*that); Frame::copy (that); } inline void FileChooser::setPath (const std::string& path) { if (path != pathNameBox.getText()) { char buf[PATH_MAX]; char *rp = realpath(path.c_str(), buf); if (rp) pathNameBox.setText (rp); else pathNameBox.setText (path); update(); } } inline std::string FileChooser::getPath () const { return pathNameBox.getText(); } inline void FileChooser::setFileName (const std::string& filename) { if (filename != fileNameBox.getText()) { fileNameBox.setText (filename); fileListBox.setValue (filename); } } inline std::string FileChooser::getFileName () const { return fileNameBox.getText(); } inline void FileChooser::setFilter (const std::map& filters) { this->filters_ = filters; filterComboBox.deleteItem(); for (Filter f : filters) filterComboBox.addItem (f.first); filterComboBox.setValue (1); enterDir(); update (); } inline std::map FileChooser::getFilters () const { return filters_; } inline void FileChooser::selectFilter (const std::string& name) { filterComboBox.setValue (name); enterDir(); update(); } inline void FileChooser::resize () { // Resize to default size first resize (BWIDGETS_DEFAULT_FILECHOOSER_WIDTH, BWIDGETS_DEFAULT_FILECHOOSER_HEIGHT); // Resize to fit all children widgets BUtilities::Area<> a = BUtilities::Area<>(); for (Linkable* c : children_) { Widget* w = dynamic_cast(c); if (w) a.extend (BUtilities::Area<>(w->getPosition(), w->getPosition() + w->getExtends())); } resize (a.getExtends() + BUtilities::Point<> (BWIDGETS_DEFAULT_MENU_PADDING + getXOffset(), BWIDGETS_DEFAULT_MENU_PADDING + getYOffset())); } inline void FileChooser::resize (const double width, const double height) { resize (BUtilities::Point<> (width, height)); } inline void FileChooser::resize (const BUtilities::Point<> extends) { Widget::resize (extends); } inline void FileChooser::enter () { if (isEnterable() && (!isEntered())) { setKeyPressable(true); grabDevice (BDevices::Keys()); Widget::enter(); } } inline void FileChooser::leave () { if (isEnterable() && isEntered()) { setKeyPressable(false); if (isDeviceGrabbed(BDevices::Keys())) freeDevice(BDevices::Keys ()); resetNavigation(); Widget::leave(); } } inline void FileChooser::update () { setBackground (BStyles::Fill(getBgColors()[getStatus()].illuminate (-0.75))); setBorder (BStyles::Border (BStyles::Line (getBgColors()[getStatus()].illuminate (BStyles::Color::highLighted), 1.0), 0.0, 0.0)); const double x0 = getXOffset(); const double y0 = getYOffset(); const double w = getEffectiveWidth(); const double h = getEffectiveHeight(); if ((w >= 40) && (h >= 20)) { const size_t val = fileListBox.getValue(); if ((val == 0) || (val > dirs_.size())) okButton.label.setText (BUtilities::Dictionary::get ("OK")); else okButton.label.setText (BUtilities::Dictionary::get ("Open")); //cancelButton.label.setText(BUtilities::Dictionary::get ("Cancel")); // Get extends first okButton.resize(); cancelButton.resize (); double okWidth = (okButton.getWidth() > cancelButton.getWidth() ? okButton.getWidth() : cancelButton.getWidth()) + 4; double okHeight = (okButton.getHeight() > cancelButton.getHeight() ? okButton.getHeight() : cancelButton.getHeight()) + 4; pathNameBox.resize(); double pathNameHeight = pathNameBox.getHeight(); fileNameBox.resize(); double fileNameHeight = fileNameBox.getHeight(); fileNameLabel.resize(); double fileNameWidth = fileNameLabel.getWidth(); pathNameBox.moveTo (x0 + 10, y0 + 10); pathNameBox.resize (w - pathNameHeight - 30, pathNameHeight); newFolderButton.moveTo (x0 + w - 12 - pathNameHeight, y0 + 8); newFolderButton.resize (pathNameHeight + 4, pathNameHeight + 4); okButton.moveTo (x0 + w - okWidth - 10, y0 + h - okHeight - 10); okButton.resize (okWidth, okHeight); cancelButton.moveTo (x0 + w - 2 * okWidth - 20, y0 + h - okHeight - 10); cancelButton.resize (okWidth, okHeight); fileNameLabel.moveTo (x0 + 10, y0 + h - okHeight - fileNameHeight - 20); fileNameLabel.resize (fileNameWidth, fileNameHeight); fileNameBox.moveTo (x0 + fileNameWidth + 30, y0 + h - okHeight - fileNameHeight - 20); fileNameBox.resize (w - fileNameWidth - 40, fileNameHeight); filterComboBox.moveTo (x0 + 10, y0 + h - okHeight - 10); filterComboBox.resize (w - 2 * okWidth - 40, okHeight); filterComboBox.setItemHeight (okHeight); filterComboBox.resizeItems(); filterComboBox.resizeListBox (BUtilities::Point<> (w - 2 * okWidth - 40, filters_.size() * okHeight + 20)); okButton.show(); cancelButton.show(); fileNameLabel.show(); fileNameBox.show(); filterComboBox.show (); if (h > pathNameHeight + okHeight + fileNameHeight + 50) { fileListBox.moveTo (x0 + 10, y0 + pathNameHeight + 20); fileListBox.resize (w - 20, h - pathNameHeight - okHeight - fileNameHeight - 50); fileListBox.setItemHeight (20); fileListBox.resizeItems(); fileListBox.show(); } else fileListBox.hide(); confirmBox.resize(); confirmBox.moveTo (0.5 * getWidth() - 0.5 * confirmBox.getWidth(), 0.5 * getHeight() - 0.5 * confirmBox.getHeight()); confirmBox.show(); createLabel.resize(); createInput.resize(); createError.resize(); const double createLabelsWidth = (createLabel.getWidth() > createError.getWidth() ? createLabel.getWidth() : createError.getWidth()); const double createBoxWidth = (createLabelsWidth + 40 > 2 * okWidth + 60 ? createLabelsWidth + 40 : 2 * okWidth + 60); const double createBoxHeight = createLabel.getHeight() + createInput.getHeight() + createError.getHeight() + okHeight + 80; createBox.resize (createBoxWidth, createBoxHeight); createBox.moveTo (0.5 * getWidth() - 0.5 * createBoxWidth, 0.5 * getHeight() - 0.5 * createBoxHeight); createLabel.moveTo (20, 20); createInput.resize (createBoxWidth - 40, createInput.getHeight()); createInput.moveTo (20, 30 + createLabel.getHeight()); createError.moveTo (20, 40 + createLabel.getHeight() + createInput.getHeight()); createBox.show(); } else { okButton.hide(); cancelButton.hide(); fileListBox.hide(); fileNameLabel.hide(); fileNameBox.hide(); filterComboBox.hide (); confirmBox.hide(); createBox.hide(); } Widget::update(); } inline void FileChooser::onButtonClicked (BEvents::Event* event) { if (getStatus() == BStyles::Status::normal) enter(); else if (getStatus() == BStyles::Status::active) leave(); Clickable::onButtonClicked(event); } inline void FileChooser::onKeyPressed (BEvents::Event* event) { BEvents::KeyEvent* kev = dynamic_cast(event); if (!kev) return; if ( getMainWindow() && (kev->getWidget () == this) && isDeviceGrabbed(BDevices::Keys()) ) { BDevices::Keys::KeyType key = static_cast(kev->getKey ()); switch (key) { case BDevices::Keys::KeyType::left: navigateBackward(); break; case BDevices::Keys::KeyType::right: navigateForward(); break; case BDevices::Keys::KeyType::escape: if (isNavigated ()) resetNavigation(); else leave(); break; case BDevices::Keys::KeyType::enter: enterNavigated(); break; default: enterByKey(key); } } KeyPressable::onKeyPressed(event); } inline void FileChooser::fileListBoxChangedCallback (BEvents::Event* event) { if (!event) return; ListBox* w = dynamic_cast(event->getWidget()); if (!w) return; FileChooser* fc = dynamic_cast(w->getParent()); if (!fc) return; const size_t val = w->getValue(); if ((val != 0) && (!fc->fileNameBox.getEditMode())) { // Directory selected -> one click chdir if (val <= fc->dirs_.size()) { fc->fileNameBox.setText (""); BEvents::ValueChangeTypedEvent dummyEvent = BEvents::ValueChangeTypedEvent (&fc->okButton, true); fc->okButtonClickedCallback (&dummyEvent); } // File selected else { Label* l = dynamic_cast(w->getItem (val)); if (l) fc->setFileName (l->getText()); } fc->update(); } } inline void FileChooser::filterComboBoxChangedCallback (BEvents::Event* event) { if (!event) return; ComboBox* w = dynamic_cast(event->getWidget()); if (!w) return; FileChooser* fc = (FileChooser*)w->getParent(); if (!fc) return; fc->enterDir(); fc->update(); } inline void FileChooser::cancelButtonClickedCallback (BEvents::Event* event) { if (!event) return; TextButton* w = dynamic_cast(event->getWidget()); if (!w) return; FileChooser* fc = dynamic_cast(w->getParent()); if (!fc) return; fc->setValue (""); fc->postCloseRequest(); } inline void FileChooser::okButtonClickedCallback (BEvents::Event* event) { BEvents::ValueChangeTypedEvent* vev = dynamic_cast*>(event); if (!vev) return; if (!vev->getValue()) return; TextButton* w = dynamic_cast(event->getWidget()); if (!w) return; FileChooser* fc = dynamic_cast(w->getParent()); if (!fc) return; const size_t lb = fc->fileListBox.getValue(); if (lb != 0) { // Dircectory selected: Open directory if (lb <= fc->dirs_.size()) { Label* l = dynamic_cast(fc->fileListBox.getItem (lb)); if (l) { std::string newPath = fc->getPath() + PATH_SEPARATOR + l->getText(); char buf[PATH_MAX]; char *rp = realpath(newPath.c_str(), buf); if (rp) fc->setPath (rp); fc->enterDir(); fc->update(); } } // File selected: OK on file else fc->processFileSelected(); } // File name set: OK on file else if (fc->fileNameBox.getText() != "") fc->processFileSelected(); } inline void FileChooser::confirmClickedCallback (BEvents::Event* event) { if (!event) return; MessageBox* w = dynamic_cast(event->getWidget()); if (!w) return; FileChooser* fc = dynamic_cast(w->getParentWidget()); if (!fc) return; const size_t button = fc->confirmBox.getValue(); w->setValue (0.0); fc->release (&fc->confirmBox); // OK if (button == 2.0) { w->setValue (0.0); fc->setValue (fc->getPath() + PATH_SEPARATOR + fc->getFileName()); fc->postCloseRequest(); } } inline void FileChooser::createClickedCallback (BEvents::Event* event) { if (!event) return; Box* w = dynamic_cast(event->getWidget()); if (!w) return; FileChooser* fc = dynamic_cast(w->getParentWidget()); if (!fc) return; const size_t button = fc->createBox.getValue(); // Cancel if (button == 1.0) { w->setValue (0.0); fc->release (&fc->createBox); } // OK else if (button == 2.0) { w->setValue (0.0); const std::string newPath = fc->getPath() + PATH_SEPARATOR + fc->createInput.getText(); if (!mkdir (newPath.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)) { fc->createError.hide(); fc->enterDir(); fc->release (&fc->createBox); } else { fc->createError.setText (BUtilities::Dictionary::get ("Error") + ": " + BUtilities::Dictionary::get ("Can't create new folder") + "."); fc->createError.show(); } fc->update (); } } inline void FileChooser::newFolderButtonClickedCallback (BEvents::Event* event) { if (!event) return; TextButton* w = (TextButton*)event->getWidget(); if (!w) return; FileChooser* fc = (FileChooser*)w->getParent(); if (!fc) return; if (!fc->contains (&fc->createBox)) { fc->createLabel.setText (BUtilities::Dictionary::get ("Create new folder") + ":"); fc->createInput.setText (""); fc->createError.setText (BUtilities::Dictionary::get ("Error") + ": " + BUtilities::Dictionary::get ("Can't create new folder") + "."); fc->createError.hide(); fc->add (&fc->createBox); fc->update(); } } inline bool FileChooser::isDir (const std::string& path, const std::string& name) const { std::string full = (path == PATH_SEPARATOR ? path : path + PATH_SEPARATOR) + name; struct stat sb; if (stat (full.c_str(), &sb)) return false; if (S_ISDIR(sb.st_mode)) return true; return false; } inline void FileChooser::enterDir () { std::vector newFiles; std::vector newDirs; DIR *dir = opendir (getPath().c_str()); // Scan directory // TODO Use C++17 for future versions if (dir) { for (struct dirent* entry = readdir(dir); entry ; entry = readdir(dir)) { if (isDir (getPath(), entry->d_name)) { std::string s = entry->d_name; if ((std::regex_match (s, std::regex ("(\\.{1,2})|([^\\.].*)")))) // Exclude hidden { newDirs.push_back (entry->d_name); } } else { std::string s = entry->d_name; if (!std::regex_match (s, std::regex ("\\..*"))) // Exclude hidden { if (filters_.empty()) newFiles.push_back (s); else { Label* l = dynamic_cast(filterComboBox.getItem (filterComboBox.getValue())); if (l && (std::regex_match (s, filters_[l->getText()]))) newFiles.push_back (s); } } } } closedir (dir); } std::sort (newFiles.begin(), newFiles.end()); std::sort (newDirs.begin(), newDirs.end()); if ((files_ != newFiles) || (dirs_ != newDirs)) { files_ = newFiles; dirs_ = newDirs; fileListBox.deleteItem(); // Directories for (std::string const& d : dirs_) { fileListBox.addItem (d); Label* l = dynamic_cast(fileListBox.getItem (d)); if (l) { BStyles::Font f = l->getFont(); f.weight = CAIRO_FONT_WEIGHT_BOLD; l->setFont (f); } } // Files for (std::string const& f : files_) fileListBox.addItem (f); fileListBox.setTop (1); } } inline void FileChooser::processFileSelected() { struct stat buffer; const std::string fileName = getPath() + PATH_SEPARATOR + getFileName(); const bool fileExists = (stat (fileName.c_str(), &buffer) == 0); // Open file exists dialog if (fileExists && confirmIfExists) { confirmBox.text.setText (BUtilities::Dictionary::get ("File already exists") + ". " + BUtilities::Dictionary::get ("Overwrite") + "?"); update(); if (!contains (&confirmBox)) add (&confirmBox); } // Open file not exists dialog else if ((!fileExists) && confirmIfNotExists) { confirmBox.text.setText (BUtilities::Dictionary::get ("File not found") + "."); update(); if (!contains (&confirmBox)) add (&confirmBox); } // Otherwise finish directly else { setValue (getPath() + PATH_SEPARATOR + getFileName()); postCloseRequest(); } } inline std::function FileChooser::getFileListBoxClickedCallback() { return fileListBoxChangedCallback; } } #endif /* BWIDGETS_FILECHOOSER_HPP_ */ src/BWidgets/BWidgets/Frame.hpp000066400000000000000000000074521515163050000166340ustar00rootroot00000000000000/* Frame.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_FRAME_HPP_ #define BWIDGETS_FRAME_HPP_ #include "Widget.hpp" #include "Supports/Draggable.hpp" #ifndef BWIDGETS_DEFAULT_FRAME_WIDTH #define BWIDGETS_DEFAULT_FRAME_WIDTH BWIDGETS_DEFAULT_WIDGET_WIDTH #endif #ifndef BWIDGETS_DEFAULT_FRAME_HEIGHT #define BWIDGETS_DEFAULT_FRAME_HEIGHT BWIDGETS_DEFAULT_WIDGET_HEIGHT #endif namespace BWidgets { /** * @brief Widgets with drag & drop support. * */ class Frame : public Widget, public Draggable { public: /** * @brief Creates a %Frame. * * Creates a Frame with default dimensions * (BWIDGETS_DEFAULT_WIDTH, BWIDGETS_DEFAULT_HEIGHT). */ Frame (); /** * @brief Creates a %Frame. * @param URID URID. * @param title %Widget title. */ Frame (const uint32_t urid, const std::string& title); /** * @brief Creates a %Frame. * @param x %Frame X origin coordinate. * @param y %Frame Y origin coordinate. * @param width %Frame width. * @param height %Frame height. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Frame title. */ Frame (const double x, const double y, const double width, const double height, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %Frame. * @return Pointer to the new frame. * * Creates a clone of this frame by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %Frame. * @param that Other %Frame. * * Copies all properties from another %Frame. But NOT its linkage. */ void copy (const Frame* that); /** * @brief Method called upon pointer drag. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a pointer drag. Enables drag & drop and calls its static callback * function. */ virtual void onPointerDragged (BEvents::Event* event) override; }; inline Frame::Frame () : Frame (0.0, 0.0, BWIDGETS_DEFAULT_FRAME_WIDTH, BWIDGETS_DEFAULT_FRAME_HEIGHT) { } inline Frame::Frame (const uint32_t urid, const std::string& title) : Widget (0.0, 0.0, BWIDGETS_DEFAULT_FRAME_WIDTH, BWIDGETS_DEFAULT_FRAME_HEIGHT, urid, title), Draggable () { } inline Frame::Frame (const double x, const double y, const double width, const double height, uint32_t urid, std::string title) : Widget (x, y, width, height, urid, title), Draggable () { } inline Widget* Frame::clone () const { Widget* f = new Frame (urid_, title_); f->copy (this); return f; } inline void Frame::copy (const Frame* that) { Draggable::operator= (*that); Widget::copy (that); } inline void Frame::onPointerDragged (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast (event); if (pev) { raiseToFront(); moveTo (getPosition () + pev->getDelta ()); } Draggable::onPointerDragged (event); } } #endif /* BWIDGETS_FRAME_HPP_ */src/BWidgets/BWidgets/HMeter.hpp000066400000000000000000000276711515163050000167730ustar00rootroot00000000000000/* HMeter.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_HMETER_HPP_ #define BWIDGETS_HMETER_HPP_ #include "Widget.hpp" #include "Label.hpp" #include "Supports/Validatable.hpp" #include "Supports/ValueableTyped.hpp" #include "Supports/ValidatableRange.hpp" #include "Supports/ValueTransferable.hpp" #include #include BWIDGETS_DEFAULT_DRAWHMETER_PATH #ifndef BWIDGETS_DEFAULT_HMETER_WIDTH #define BWIDGETS_DEFAULT_HMETER_WIDTH 80.0 #endif #ifndef BWIDGETS_DEFAULT_HMETER_HEIGHT #define BWIDGETS_DEFAULT_HMETER_HEIGHT 20.0 #endif #ifndef BSTYLES_STYLEPROPERTY_HICOLORS_URI #define BSTYLES_STYLEPROPERTY_HICOLORS_URI BSTYLES_STYLEPROPERTY_URI "#HiColors" #endif namespace BWidgets { /** * @brief %HMeter widget. * * %HMeter is a Valueable Widget and displays a value as a horizontal * meter without user interaction. The value is kept within a defined range * and displayed in blocks defined by the parameter @a step . Its appearance * is defined by the parameters BgColors (static elements), FgColors (value, * low range), and HiColors (value, high range). * * Advanced settings allow a %HMeter to display a value in a non-linear * manner (e.g. for levels and frequencies) using transfer functions and / or * to use non-line color gradients for display using gradient functions. */ class HMeter : public Widget, public ValueableTyped, public ValidatableRange, public ValueTransferable { protected: BUtilities::Area<> scale_; std::function gradient_ = noTransfer; public: /** * @brief Constructs a default %HMeter object. */ HMeter (); /** * @brief Constructs a default %HMeter object. * @param URID URID. * @param title %Widget title. */ HMeter (const uint32_t urid, const std::string& title); /** * @brief Creates a %HMeter with default size. * @param value Initial value. * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ HMeter (const double value, const double min, const double max, double step = 0.0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %HMeter. * @param x %HMeter X origin coordinate. * @param y %HMeter Y origin coordinate. * @param width %HMeter width. * @param height %HMeter height. * @param value Initial value. * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param transferFunc Optinonal, function to transfer a value from an * external context to the internal context. * @param reTransferFunc Optinonal, function to transfer a value from the * internal context to an external context. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %HMeter title (default = ""). */ HMeter (const double x, const double y, const double width, const double height, const double value, const double min, const double max, double step = 0.0, std::function transferFunc = ValueTransferable::noTransfer, std::function reTransferFunc = ValueTransferable::noTransfer, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %HMeter. * @return Pointer to the new %HMeter. * * Creates a clone of this %HMeter by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %HMeter. * @param that Other %HMeter. * * Copies all properties from another %HMeter. But NOT its linkage. */ void copy (const HMeter* that); /** * @brief Optimizes the widget extends. * * Resizes the widget to include all direct children into the widget * area. Resizes the widget to its standard size if this widget doesn't * have any children. */ virtual void resize () override; /** * @brief Resizes the widget extends. * @param width New widget width. * @param height New widget height. */ virtual void resize (const double width, const double height) override; /** * @brief Resizes the widget extends. * @param extends New widget extends. */ virtual void resize (const BUtilities::Point<> extends) override; /** * @brief Method to be called following an object state change. */ virtual void update () override; /** * @brief Gets the high range value colors Property from the base level. * @return High range value ColorMap. * * Gets the base level high range value colors Property using the default * high range value colors URID. Returns FgColors if the default high * range value colors URID is not set. */ BStyles::ColorMap getHiColors() const; /** * @brief Sets the high range value colors Property from the base level. * @param colors High range value ColorMap. * * Sets the base level high range value colors Property using the default * high range value colors URID. */ virtual void setHiColors (const BStyles::ColorMap& colors); /** * @brief Set the color gradient function. * @param gradientFunc Color gradient function. * * The color gradient function is responsible for the (optional) color * transition from FgColors to HiColors (if defined). By default, the * gradient is a linear function ([] (const double& x) {return x;}). */ virtual void setGradientFunction (std::function gradientFunc) { gradient_ = gradientFunc; } protected: /** * @brief Unclipped draw a %HMeter to the surface. */ virtual void draw () override; /** * @brief Clipped draw a %HMeter to the surface. * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped draw a %HMeter to the surface. * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline HMeter::HMeter () : HMeter (0.0, 0.0, BWIDGETS_DEFAULT_HMETER_WIDTH, BWIDGETS_DEFAULT_HMETER_HEIGHT, 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, BUTILITIES_URID_UNKNOWN_URID, "") { } inline HMeter::HMeter (const uint32_t urid, const std::string& title) : HMeter (0.0, 0.0, BWIDGETS_DEFAULT_HMETER_WIDTH, BWIDGETS_DEFAULT_HMETER_HEIGHT, 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline HMeter::HMeter (const double value, const double min, const double max, double step, uint32_t urid, std::string title) : HMeter (0.0, 0.0, BWIDGETS_DEFAULT_HMETER_WIDTH, BWIDGETS_DEFAULT_HMETER_HEIGHT, value, min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline HMeter::HMeter (const double x, const double y, const double width, const double height, const double value, const double min, const double max, double step, std::function transferFunc, std::function reTransferFunc, uint32_t urid, std::string title) : Widget (x, y, width, height, urid, title), ValueableTyped (value), ValidatableRange (min, max, step), ValueTransferable (transferFunc, reTransferFunc), scale_ (0, 0, width, height) { setFocusText([](const Widget* w) {return w->getTitle() + ": " + (dynamic_cast(w) ? std::to_string (dynamic_cast(w)->getValue()) : "");}); } inline Widget* HMeter::clone () const { Widget* f = new HMeter (urid_, title_); f->copy (this); return f; } inline void HMeter::copy (const HMeter* that) { scale_ = that->scale_; gradient_ = that->gradient_; ValueTransferable::operator= (*that); ValidatableRange::operator= (*that); ValueableTyped::operator= (*that); Widget::copy (that); } inline void HMeter::resize () { BUtilities::Area<> a = (children_.empty()? BUtilities::Area<>(0, 0, BWIDGETS_DEFAULT_HMETER_WIDTH, BWIDGETS_DEFAULT_HMETER_HEIGHT) : BUtilities::Area<>()); for (Linkable* c : children_) { Widget* w = dynamic_cast(c); if (w) a.extend (BUtilities::Area<>(w->getPosition(), w->getPosition() + w->getExtends())); } resize (a.getExtends()); } inline void HMeter::resize (const double width, const double height) { resize (BUtilities::Point<> (width, height)); } inline void HMeter::resize (const BUtilities::Point<> extends) { Widget::resize (extends); } inline void HMeter::update () { scale_ = BUtilities::Area<> (getXOffset(), getYOffset(), getEffectiveWidth(), getEffectiveHeight()); Widget::update(); } inline BStyles::ColorMap HMeter::getHiColors() const { BStyles::Style::const_iterator it = style_.find (BUtilities::Urid::urid (BSTYLES_STYLEPROPERTY_HICOLORS_URI)); if ((it == style_.end()) || style_.isStyle (it)) return getFgColors(); else return it->second.get(); } inline void HMeter::setHiColors (const BStyles::ColorMap& colors) { style_[BUtilities::Urid::urid (BSTYLES_STYLEPROPERTY_HICOLORS_URI)] = BUtilities::makeAny (colors); } inline void HMeter::draw () { draw (0, 0, getWidth(), getHeight()); } inline void HMeter::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void HMeter::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; // Draw super class widget elements first Widget::draw (area); // Draw only if minimum requirements satisfied if ((getHeight () >= 1) && (getWidth () >= 1) && (getMin() < getMax())) { cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); const double rval = getRatioFromValue (getValue()); const double drv = (std::fabs (getStep()) > 1.0 / scale_.getWidth() ? std::fabs (getStep() / (getMax() - getMin())) : 1.0 / scale_.getWidth()); if (step_ >= 0.0) { drawHMeter (cr, scale_.getX(), scale_.getY(), scale_.getWidth(), scale_.getHeight(), 0.0, rval, drv, getFgColors()[getStatus()], getHiColors()[getStatus()], gradient_, getBgColors()[getStatus()]); } else { drawHMeter (cr, scale_.getX(), scale_.getY(), scale_.getWidth(), scale_.getHeight(), 1.0 - rval, 1.0, drv, getFgColors()[getStatus()], getHiColors()[getStatus()], gradient_, getBgColors()[getStatus()]); } } cairo_destroy (cr); } } } #endif /* BWIDGETS_HMETER_HPP_ */ src/BWidgets/BWidgets/HPianoRoll.hpp000066400000000000000000000612451515163050000176110ustar00rootroot00000000000000/* HPianoRoll.hpp * Copyright (C) 2019 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_HPIANOROLL_HPP_ #define BWIDGETS_HPIANOROLL_HPP_ #include "Widget.hpp" #include "Supports/ValueableTyped.hpp" #include "Supports/Clickable.hpp" #include "Supports/Draggable.hpp" #include "Supports/Toggleable.hpp" #include "Supports/KeyPressable.hpp" #include "../BEvents/WheelEvent.hpp" #include #include #include #include #ifndef BWIDGETS_DEFAULT_HPIANOROLL_WIDTH #define BWIDGETS_DEFAULT_HPIANOROLL_WIDTH 400.0 #endif #ifndef BWIDGETS_DEFAULT_HPIANOROLL_HEIGHT #define BWIDGETS_DEFAULT_HPIANOROLL_HEIGHT 40.0 #endif namespace BWidgets { /* * @brief Horizontal piano roll widget. * * %HPianoRoll is a Valueable Widget displaying a horizontal piano roll. * It supports user interaction via Clickable, Draggable, Toggleable, and * KeyPressable. Its appearance is defined by the BgColors parameter * (inactive keys) and by the FgColors parameter (active keys). */ class HPianoRoll : public Widget, public ValueableTyped>, public Clickable, public Draggable, public Toggleable, public KeyPressable { protected: uint8_t startMidiKey_; uint8_t endMidiKey_; uint8_t defaultVelocity_; public: /** * @brief Constructs a default %HPianoRoll object. */ HPianoRoll (); /** * @brief Constructs a default %HPianoRoll object. * @param URID URID. * @param title %Widget title. */ HPianoRoll (const uint32_t urid, const std::string& title); /** * @brief Creates a %HPianoRoll with default size and initialized key * velocities. * @param startMidiKey First MIDI key number of the roll. * @param endMidiKey Last MIDI key number of the roll. * @param keys Map containing active keys (key_value) and their * respective velocities (mapped_value). * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ HPianoRoll (const uint8_t startMidiKey, uint8_t endMidiKey = 127, std::map keys = {}, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %HPianoRoll with keys in the default (released) * state. * @param x %HPianoRoll X origin coordinate. * @param y %HPianoRoll Y origin coordinate. * @param width %HPianoRoll width. * @param height %HPianoRoll height. * @param startMidiKey First MIDI key number of the roll. * @param endMidiKey Last MIDI key number of the roll. * @param keys Vector containing active keys. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ HPianoRoll (const double x, const double y, const double width, const double height, uint8_t startMidiKey = 0, uint8_t endMidiKey = 127, std::vector keys = {}, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %HPianoRoll with initialized key velocities. * @param x %HPianoRoll X origin coordinate. * @param y %HPianoRoll Y origin coordinate. * @param width %HPianoRoll width. * @param height %HPianoRoll height. * @param startMidiKey First MIDI key number of the roll. * @param endMidiKey Last MIDI key number of the roll. * @param keys Map containing active keys (key_value) and their * respective velocities (mapped_value). * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ HPianoRoll (const double x, const double y, const double width, const double height, const uint8_t startMidiKey, const uint8_t endMidiKey, const std::map& keys, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %HPianoRoll. * @return Pointer to the new %HPianoRoll. * * Creates a clone of this %HPianoRoll by copying all properties. But NOT * its linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %HPianoRoll. * @param that Other %HPianoRoll. * * Copies all properties from another %HPianoRoll. But NOT its linkage. */ void copy (const HPianoRoll* that); /** * @brief Optimizes the widget extends. * * Resizes the widget to include all direct children into the widget * area. Resizes the widget to its standard size if this widget doesn't * have any children. */ virtual void resize () override; /** * @brief Resizes the widget extends. * @param width New widget width. * @param height New widget height. */ virtual void resize (const double width, const double height) override; /** * @brief Resizes the widget extends. * @param extends New widget extends. */ virtual void resize (const BUtilities::Point<> extends) override; /** * @brief Sets the MIDI key range of the HPianoRoll. * @param startMidiKey First MIDI key number of the roll. * @param endMidiKey Last MIDI key number of the roll. */ virtual void setRange (const uint8_t startMidiKey, const uint8_t endMidiKey); /** * @brief Gets the start of the MIDI key range of the HPianoRoll. * @return First MIDI key number of the roll. */ uint8_t getStart () const; /** * @brief Gets the end of the MIDI key range of the HPianoRoll. * @return Last MIDI key number of the roll. */ uint8_t getEnd () const; /** * @brief Activates (or inactivates) this widget (if activatable) * and all keys (independent from activatable). * @param active True if active (default), otherwise false. */ virtual void activate (bool active = true) override; /** * @brief Activates (or inactivates) a single key and keeps the * activation status of the remaining keys. * @param key MIDI key number. * @param active True if active (default), otherwise false. */ virtual void activate (const uint8_t key, bool active = true); /** * @brief Activates (or inactivates) a range of keys and keeps the * activation status of the remaining keys. * @param from MIDI key number of the range start. * @param to MIDI key number of the range end. * @param active True if active (default), otherwise false. */ virtual void activate (const uint8_t from, const uint8_t to, bool active = true); /** * @brief Activates all passed keys and inactivates the remaining keys. * @param keys Vector containing the MIDI key numbers of the keys to be * activated. */ virtual void activate (const std::vector& keys); /** * @brief Checks if the key is active. * @param key MIDI key number. * @return True if active, otherwise false. */ bool isActive (const uint8_t key) const; /** * @brief Gets a vector of MIDI key numbers for all active keys. * @return Vector of MIDI key numbers for all active keys. */ std::vector getActive () const; /** * @brief Presses (or releases) a single key (if active), and keeps the * remaining keys. * @param key MIDI key number. * @param velocity MIDI velocity of pressed keys. 0 for release. */ virtual void setKey (const uint8_t key, uint8_t velocity); /** * @brief Gets the velosity of a single key. * @param key MIDI key number. * @return MIDI velocity for pressed keys. 0 for released (or invalid). */ uint8_t getKey (const uint8_t key) const; /** * @brief Presses all passed keys, and releases the remaining keys (if * active). * @param keys Vector containing keys with std::pairs of key number * (first) and velocity (second). * @param velocity MIDI velocity of pressed keys. 0 for release. */ virtual void setKeys (const std::vector& keys, uint8_t velocity); /** * @brief Presses all passed keys, and releases the remaining keys (if * active). * @param keys Map containing key number (key_value) and velocity * (mapped_value). */ virtual void setKeys (const std::map& keys); /** * @brief Gets a map for all active keys. * @return Map containing key number (key_value) and velocity * (mapped_value). */ std::map getKeys () const; /** * @brief Sets the velocity to be applied upon clicking on a key. * @param velocity MIDI velocity [0,127]. */ virtual void setVelocity (const uint8_t velocity); /** * @brief Gets the velocity which is applied upon clicking on a key. * @param return MIDI velocity [0,127]. */ uint8_t getVelocity () const; /** * @brief Method called when pointer button pressed. * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button pressed. Sets the key velocity to the default velocity * if the key is active. Also sets the widget value to (key number, * default velocity) and calls the widget static callback function. */ virtual void onButtonPressed (BEvents::Event* event) override; /** * @brief Method called when pointer button released. * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button released. Sets the key velocity to 0 if the key is * active. Also sets the widget value to (key number, 0) and calls the * widget static callback function. */ virtual void onButtonReleased (BEvents::Event* event) override; /** * @brief Method called upon pointer drag. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a pointer drag. Changes the value and calls the widget static callback * function. */ virtual void onPointerDragged (BEvents::Event* event) override; protected: /** * @brief Gets the key number for a position within the widget. * @param position Position within the widget. * @return MIDI key number (or 255 for invalid). */ virtual uint8_t getKey (const BUtilities::Point<>& position); /** * @brief Unclipped draw a %HPianoRoll to the surface. */ virtual void draw () override; /** * @brief Clipped draw a %HPianoRoll to the surface. * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped draw a %HPianoRoll to the surface. * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; struct PianoKeyCoords { bool whiteKey; double x; double dx1; double dx2; double width; }; constexpr std::array keyCoords= {{ {true, 0.0, 0.0, 0.4167, 1.0}, {false, 0.5833, 0.0, 0.0, 0.6667}, {true, 1.0, 0.25, 0.25, 1.0}, {false, 1.75, 0, 0, 0.6667}, {true, 2, 0.4167, 0, 1}, {true, 3, 0, 0.5, 1}, {false, 3.5, 0, 0, 0.6667}, {true, 4, 0.1667, 0.3333, 1}, {false, 4.6667, 0, 0, 0.6667}, {true, 5, 0.3333, 0.1667, 1}, {false, 5.8333, 0, 0, 0.6667}, {true, 6, 0.5, 0, 1} }}; inline HPianoRoll::HPianoRoll () : HPianoRoll (0, 0, BWIDGETS_DEFAULT_HPIANOROLL_WIDTH, BWIDGETS_DEFAULT_HPIANOROLL_HEIGHT, 0, 127, std::map(), BUTILITIES_URID_UNKNOWN_URID, "") { } inline HPianoRoll::HPianoRoll (const uint32_t urid, const std::string& title) : HPianoRoll (0, 0, BWIDGETS_DEFAULT_HPIANOROLL_WIDTH, BWIDGETS_DEFAULT_HPIANOROLL_HEIGHT, 0, 127, std::map(), urid, title) { } inline HPianoRoll::HPianoRoll (const uint8_t startMidiKey, uint8_t endMidiKey, std::map keys, uint32_t urid, std::string title) : HPianoRoll (0, 0, BWIDGETS_DEFAULT_HPIANOROLL_WIDTH, BWIDGETS_DEFAULT_HPIANOROLL_HEIGHT, startMidiKey, endMidiKey, keys, urid, title) { } inline HPianoRoll::HPianoRoll (const double x, const double y, const double width, const double height, uint8_t startMidiKey, uint8_t endMidiKey, std::vector keys, uint32_t urid, std::string title) : Widget (x, y, width, height, urid, title), ValueableTyped> (), Clickable(), Draggable(), Toggleable(), KeyPressable(), startMidiKey_(startMidiKey), endMidiKey_ (endMidiKey), defaultVelocity_ (64) { setToggleable (false); activate (keys); } inline HPianoRoll::HPianoRoll (const double x, const double y, const double width, const double height, const uint8_t startMidiKey, const uint8_t endMidiKey, const std::map& keys, uint32_t urid, std::string title) : Widget (x, y, width, height, urid, title), ValueableTyped> (keys), Clickable(), Draggable(), Toggleable(), KeyPressable(), startMidiKey_(startMidiKey), endMidiKey_ (endMidiKey), defaultVelocity_ (64) { setKeyPressable(false); // Not supported yet setToggleable (false); } inline Widget* HPianoRoll::clone () const { Widget* f = new HPianoRoll (urid_, title_); f->copy (this); return f; } inline void HPianoRoll::copy (const HPianoRoll* that) { startMidiKey_ = that->startMidiKey_; endMidiKey_ = that->endMidiKey_; defaultVelocity_ = that->defaultVelocity_; KeyPressable::operator=(*that); Toggleable::operator= (*that); Draggable::operator= (*that); Clickable::operator= (*that); ValueableTyped>::operator= (*that); Widget::copy (that); } inline void HPianoRoll::resize () { BUtilities::Area<> a = (children_.empty()? BUtilities::Area<>(0, 0, BWIDGETS_DEFAULT_HPIANOROLL_WIDTH, BWIDGETS_DEFAULT_HPIANOROLL_HEIGHT) : BUtilities::Area<>()); for (Linkable* c : children_) { Widget* w = dynamic_cast(c); if (w) a.extend (BUtilities::Area<>(w->getPosition(), w->getPosition() + w->getExtends())); } resize (a.getExtends()); } inline void HPianoRoll::resize (const double width, const double height) { resize (BUtilities::Point<> (width, height)); } inline void HPianoRoll::resize (const BUtilities::Point<> extends) { Widget::resize (extends); } inline void HPianoRoll::setRange (const uint8_t startMidiKey, const uint8_t endMidiKey) { if ((startMidiKey != startMidiKey_) || (endMidiKey != endMidiKey_)) { startMidiKey_ = startMidiKey; endMidiKey_ = endMidiKey; update(); } } inline uint8_t HPianoRoll::getStart () const { return startMidiKey_; } inline uint8_t HPianoRoll::getEnd () const { return endMidiKey_; } inline void HPianoRoll::activate (bool active) { Widget::activate(active); std::map keys = getValue(); for (uint8_t i = startMidiKey_; i <= endMidiKey_; ++i) { std::map::iterator it = keys.find (i); // Add new active keys if (active && (it == keys.end())) keys[i] = 0; // Remove existing inactive keys else if ((!active) && (it != keys.end())) keys.erase (it); } setValue (keys); } inline void HPianoRoll::activate (const uint8_t key, bool active) { if (key > endMidiKey_) return; std::map keys = getValue(); std::map::iterator it = keys.find (key); // Add new active keys if (active && (it == keys.end())) { keys[key] = 0; setValue (keys); } // Remove existing inactive keys else if ((!active) && (it != keys.end())) { keys.erase (it); setValue (keys); } } inline void HPianoRoll::activate (const uint8_t from, const uint8_t to, bool active) { std::map keys = getValue(); for (uint8_t i = from; i <= to; ++i) { std::map::iterator it = keys.find (i); // Add new active keys if (active && (it == keys.end())) keys[i] = 0; // Remove existing inactive keys else if ((!active) && (it != keys.end())) keys.erase (it); } setValue (keys); } inline void HPianoRoll::activate (const std::vector& keys) { std::map k1 = getValue(); std::vector k2 = keys; // Remove entries from keys_ missing in keys for (std::map::iterator it1 = k1.begin(); it1 != k1.end(); /* empty */) { std::vector::const_iterator it2 = std::find (k2.begin(), k2.end(), it1->first); if (it2 == k2.cend()) { it1 = k1.erase (it1); k2.erase (it2); } else ++it1; } // Add new entries for (const uint8_t k : k2) { if (k <= 127) k1[k] = 0; } setValue (k1); } inline bool HPianoRoll::isActive (const uint8_t key) const { return (value_.find(key) != value_.end()); } inline std::vector HPianoRoll::getActive () const { std::vector k2 {}; for (std::map::const_reference k : value_) k2.push_back(k.first); return k2; } inline void HPianoRoll::setKey (const uint8_t key, uint8_t velocity) { std::map keys = getValue(); std::map::iterator it = keys.find(key); if ((it != keys.end()) && (it->second != velocity)) { it->second = velocity; setValue(keys); } } inline uint8_t HPianoRoll::getKey (const uint8_t key) const { std::map::const_iterator it = value_.find(key); return (it != value_.end() ? it->second : 0); } inline void HPianoRoll::setKeys (const std::vector& keys, uint8_t velocity) { std::map k2 = getValue(); for (const uint8_t k : keys) { std::map::iterator it = k2.find(k); if (it != k2.end()) it->second = velocity; } setValue (k2); } inline void HPianoRoll::setKeys (const std::map& keys) { std::map k2 = getValue(); for (std::map::const_reference k : keys) { std::map::iterator it = k2.find (k.first); if (it != k2.end()) it->second = k.second; } setValue (k2); } inline std::map HPianoRoll::getKeys () const { return value_; } inline void HPianoRoll::setVelocity (const uint8_t velocity) { defaultVelocity_ = velocity; } inline uint8_t HPianoRoll::getVelocity () const { return defaultVelocity_; } inline void HPianoRoll::onButtonPressed (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast(event); if (pev) { const uint8_t keyNr = getKey (pev->getPosition()); if (isActive (keyNr)) { if (isToggleable()) setKey (keyNr, getKey (keyNr) ? 0 : defaultVelocity_); else setKey (keyNr, defaultVelocity_); } } Clickable::onButtonPressed (event); } inline void HPianoRoll::onButtonReleased (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast(event); if (pev) { const uint8_t keyNr = getKey (pev->getPosition()); if (isActive (keyNr) && (!isToggleable())) setKey (keyNr, 0); } Clickable::onButtonReleased (event); } inline void HPianoRoll::onPointerDragged (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast(event); if (pev) { const uint8_t keyNr = getKey (pev->getPosition()); const uint8_t lastKeyNr = getKey (pev->getPosition() - pev->getDelta()); // Check if new key entered if (keyNr != lastKeyNr) { // Release last key if (isActive (lastKeyNr) && (!isToggleable())) setKey (lastKeyNr, 0); // Press new key if (isToggleable()) setKey (keyNr, getKey (keyNr) ? 0 : defaultVelocity_); else setKey (keyNr, defaultVelocity_); } } Draggable::onPointerDragged (event); } inline uint8_t HPianoRoll::getKey (const BUtilities::Point<>& position) { double x0 = getXOffset(); double y0 = getYOffset(); double w = getEffectiveWidth(); double h = getEffectiveHeight(); if ((w >= 2) && (h >= 2) && (endMidiKey_ >= startMidiKey_)) { uint8_t startKeyNrOffset = startMidiKey_ % 12; uint8_t endKeyNrOffset = endMidiKey_ % 12; double startKeyX = keyCoords[startKeyNrOffset].x + (int (startMidiKey_ / 12)) * 7; double endKeyX = keyCoords[endKeyNrOffset].x + keyCoords[endKeyNrOffset].width + (int(endMidiKey_ / 12)) * 7; double xs = w / (endKeyX - startKeyX); double keyX = position.x / xs - x0; int keyXOctave = keyX / 7; double keyXOffset = keyX - keyXOctave * 7; // The blacks first for (int i = 0; i < 12; ++i) { if (!keyCoords[i].whiteKey) { if ( (position.y >= y0) && (position.y <= y0 + 0.6667 * h) && (keyXOffset >= keyCoords[i].x) && (keyXOffset <= keyCoords[i].x + keyCoords[i].width) ) { return keyXOctave * 12 + i + startMidiKey_; } } } // Then the whites for (int i = 0; i < 12; ++i) { if (keyCoords[i].whiteKey) { if ( (position.y >= y0) && (position.y <= y0 + h) && (keyXOffset >= keyCoords[i].x) && (keyXOffset <= keyCoords[i].x + keyCoords[i].width) ) { return keyXOctave * 12 + i + startMidiKey_; } } } } return 255; } inline void HPianoRoll::draw () { draw (0, 0, getWidth(), getHeight()); } inline void HPianoRoll::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void HPianoRoll::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; double x0 = getXOffset(); double y0 = getYOffset(); double w = getEffectiveWidth(); double h = getEffectiveHeight(); if ((w >= 2) && (h >= 2) && (endMidiKey_ >= startMidiKey_)) { // Draw widget class elements first Widget::draw (area); cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); cairo_set_line_width (cr, 0.0); uint8_t startKeyNrOffset = startMidiKey_ % 12; uint8_t endKeyNrOffset = endMidiKey_ % 12; double startKeyX = keyCoords[startKeyNrOffset].x + (int (startMidiKey_ / 12)) * 7; double endKeyX = keyCoords[endKeyNrOffset].x + keyCoords[endKeyNrOffset].width + (int (endMidiKey_ / 12)) * 7; double xs = w / (endKeyX - startKeyX); for (uint8_t i = 0; i <= endMidiKey_ - startMidiKey_; ++i) { const uint8_t keyNrOffset = (i + startMidiKey_) % 12; const double keyX = keyCoords[keyNrOffset].x + (int ((startMidiKey_ + i) / 12)) * 7 - startKeyX; if (keyCoords[keyNrOffset].whiteKey) { const BStyles::Color color = ( isActive(i) ? ( getKey(i) != 0 ? getFgColors()[getStatus()].illuminate (0.333) : getBgColors()[getStatus()].illuminate (0.75) ) : getBgColors()[getStatus()].illuminate (0) ); cairo_set_source_rgba (cr, CAIRO_RGBA (color)); cairo_move_to (cr, x0 + (keyX + keyCoords[keyNrOffset].dx1 + 0.025) * xs, y0); cairo_line_to (cr, x0 + (keyX + keyCoords[keyNrOffset].dx1 + 0.025) * xs, y0 + 0.667 * h); cairo_line_to (cr, x0 + (keyX + 0.025) * xs, y0 + 0.667 * h); cairo_line_to (cr, x0 + (keyX + 0.025) * xs, y0 + h - 0.05 * xs); cairo_arc_negative (cr, x0 + (keyX + 0.125) * xs, y0 + h - 0.1 * xs, 0.1 * xs, M_PI, M_PI / 2); cairo_line_to (cr, x0 + (keyX + keyCoords[keyNrOffset].width - 0.125) * xs, y0 + h); cairo_arc_negative (cr, x0 + (keyX + keyCoords[keyNrOffset].width - 0.125) * xs, y0 + h - 0.1 * xs, 0.1 * xs, M_PI / 2, 0); cairo_line_to (cr, x0 + (keyX + keyCoords[keyNrOffset].width - 0.025) * xs, y0 + 0.667 * h); cairo_line_to (cr, x0 + (keyX + keyCoords[keyNrOffset].width - keyCoords[keyNrOffset].dx2 - 0.025) * xs, y0 + 0.667 * h); cairo_line_to (cr, x0 + (keyX + keyCoords[keyNrOffset].width - keyCoords[keyNrOffset].dx2 - 0.025) * xs, y0); cairo_close_path (cr); cairo_fill (cr); } else { const BStyles::Color color = ( isActive(i) ? ( getKey(i) != 0 ? getFgColors()[getStatus()].illuminate (-0.5) : getBgColors()[getStatus()].illuminate (-0.75) ) : getBgColors()[getStatus()].illuminate (-0.5) ); cairo_set_source_rgba (cr, CAIRO_RGBA (color)); cairoplus_rectangle_rounded (cr, x0 + keyX * xs, y0, keyCoords[keyNrOffset].width * xs, 0.6667 * h, 0.1 * xs, 0b1100); cairo_fill (cr); } } cairo_destroy (cr); } } } } #endif /* BWIDGETS_HPIANOROLL_HPP_ */ src/BWidgets/BWidgets/HRangeScrollBar.hpp000066400000000000000000000604411515163050000205470ustar00rootroot00000000000000/* HRangeScrollBar.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_HRANGESCROLLBAR_HPP_ #define BWIDGETS_HRANGESCROLLBAR_HPP_ #include "HScrollBar.hpp" #include "Frame.hpp" #include "Symbol.hpp" #include "Supports/ValueableTyped.hpp" #include "Supports/ValidatableRange.hpp" #include "Supports/ValueTransferable.hpp" #include "Supports/Scrollable.hpp" #include "Supports/KeyPressable.hpp" #include "../BEvents/WheelEvent.hpp" #include "../BEvents/KeyEvent.hpp" #include BWIDGETS_DEFAULT_DRAWKNOB_PATH #ifndef BWIDGETS_DEFAULT_HRANGESCROLLBAR_WIDTH #define BWIDGETS_DEFAULT_HRANGESCROLLBAR_WIDTH BWIDGETS_DEFAULT_HSCROLLBAR_WIDTH #endif #ifndef BWIDGETS_DEFAULT_HRANGESCROLLBAR_HEIGHT #define BWIDGETS_DEFAULT_HRANGESCROLLBAR_HEIGHT BWIDGETS_DEFAULT_HSCROLLBAR_HEIGHT #endif namespace BWidgets { /** * @brief %Horizontal scroll bar widget with the option to resize on both * ends. * * %HRangeScrollBar is a Valueable Widget similiar to HScrollbar. It displays * a value constisting of a std::pair with its min and its max value as a * horizontal scrollbar and supports user interaction via Scrollable to resize * the range value. In addition, it supports dragging to move the value range * or to move the ends (min, max). Its appearance is defined by the BgColors * parameter. */ class HRangeScrollBar : public Widget, public ValueableTyped>, public ValidatableRange>, public ValueTransferable>, public Scrollable, public KeyPressable { protected: bool fineTuned_; public: HScrollBar scrollbar; Frame button1; Frame button2; Symbol symbol1; Symbol symbol2; /** * @brief Constructs a default %HRangeScrollBar object. */ HRangeScrollBar (); /** * @brief Constructs a default %HRangeScrollBar object. * @param URID URID. * @param title %Widget title. */ HRangeScrollBar (const uint32_t urid, const std::string& title); /** * @brief Creates a %HRangeScrollBar with default size. * @param value1 Initial value (range min). * @param value2 Initial value (range max). * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param vsize Optional, range covered by the value. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ HRangeScrollBar (const double value1, const double value2, const double min, const double max, double step = 0.0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %HRangeScrollBar with default size. * @param value Initial value (range min, range max). * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param vsize Optional, range covered by the value. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ HRangeScrollBar (const value_type value, const double min, const double max, double step = 0.0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %HRangeScrollBar. * @param x %HRangeScrollBar X origin coordinate. * @param y %HRangeScrollBar Y origin coordinate. * @param width %HRangeScrollBar width. * @param height %HRangeScrollBar height. * @param value1 Initial value (range min). * @param value2 Initial value (range max). * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param transferFunc Optinonal, function to transfer a value from an * external context to the internal context. * @param reTransferFunc Optinonal, function to transfer a value from the * internal context to an external context. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %HRangeScrollBar title (default = ""). */ HRangeScrollBar (const double x, const double y, const double width, const double height, const double value1, const double value2, const double min, const double max, double step = 0.0, std::function transferFunc = ValueTransferable::noTransfer, std::function reTransferFunc = ValueTransferable::noTransfer, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %HRangeScrollBar. * @param x %HRangeScrollBar X origin coordinate. * @param y %HRangeScrollBar Y origin coordinate. * @param width %HRangeScrollBar width. * @param height %HRangeScrollBar height. * @param value Initial value (range min, range max). * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param transferFunc Optinonal, function to transfer a value from an * external context to the internal context. * @param reTransferFunc Optinonal, function to transfer a value from the * internal context to an external context. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %HRangeScrollBar title (default = ""). */ HRangeScrollBar (const double x, const double y, const double width, const double height, const value_type value, const double min, const double max, double step = 0.0, std::function transferFunc = ValueTransferable::noTransfer, std::function reTransferFunc = ValueTransferable::noTransfer, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %HRangeScrollBar. * @return Pointer to the new %HRangeScrollBar. * * Creates a clone of this %HRangeScrollBar by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %HRangeScrollBar. * @param that Other %HRangeScrollBar. * * Copies all properties from another %HRangeScrollBar. But NOT its linkage. */ void copy (const HRangeScrollBar* that); /** * @brief Sets the range step size. * @param step Step size. * * Also sets the number of sub steps to BWIDGETS_DEFAULT_NR_SUBSTEPS if * step size is 0.0. */ virtual void setStep (const value_type& step) override; /** * @brief Optimizes the widget extends. * * Resizes the widget to include all direct children into the widget * area. Resizes the widget to its standard size if this widget doesn't * have any children (except its scrollbar and its buttons). */ virtual void resize () override; /** * @brief Resizes the widget extends. * @param width New widget width. * @param height New widget height. */ virtual void resize (const double width, const double height) override; /** * @brief Resizes the widget extends. * @param extends New widget extends. */ virtual void resize (const BUtilities::Point<> extends) override; /** * @brief Method to be called following an object state change. */ virtual void update () override; /** * @brief Method called upon (mouse) wheel scroll. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a (mouse) wheel scroll. Increases or decreases the value and calls the * widget static callback function. */ virtual void onWheelScrolled (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyPressEvent is * received. * @param event Passed Event. * * Overridable method called from the main window event scheduler if a * key is pressed. By default, it calls its static callback function. */ virtual void onKeyPressed (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyReleaseEvent is * received. * @param event Passed Event. * * Overridable method called from the main window event scheduler if a * key is released. By default, it calls its static callback function. */ virtual void onKeyReleased (BEvents::Event* event) override; /** * @brief Sets the transfer function. * @param func Transfer function. * * The transfer function is used * to transfer a value from an external context (e. g., frequencies with a * logarithmic distribution) to an internal context (e. g., a slider with * linear distribution). In this case a possible transfer function would be: * @code * [] (const std::pair& x) * {return std::pair(log10 (x), log10 (x));} * @endcode * * The transfer function (and its re-transfer function) MUST be biunique. * Also, it's strongly recommended that both pair members (first and * second) are handled in the same way. * * Better use the double to double transfer function * setTransferFunction (std::function func). */ virtual void setTransferFunction (std::function func) override; /** * @brief Sets the transfer function. * @param func Transfer function. * * The transfer function is used * to transfer a value from an external context (e. g., frequencies with a * logarithmic distribution) to an internal context (e. g., a slider with * linear distribution). In this case a possible transfer function would be: * @code * [] (const double& x) {return log10 (x);} * @endcode * * The transfer function (and its re-transfer function) MUST be biunique. */ virtual void setTransferFunction (std::function func); /** * @brief Sets the re-transfer function. * @param func Re-transfer function. * * The re-transfer function is used to transfer a value from an internal * context (e. g., a * position within a slider with linear distribution) to an external * context (e. g., frequencies with a logarithmic distribution). In this * case a possible re-transfer function would be: * @code * [] (const std::pair& x) * {return std::pair(pow (10, x), pow (10, x));} * @endcode * * The transfer function (and its re-transfer function) MUST be biunique. * Also, it's strongly recommended that both pair members (first and * second) are handled in the same way. * * Better use the double to double re-transfer function * setTransferFunction (std::function func). */ virtual void setReTransferFunction (std::function func) override; /** * @brief Sets the re-transfer function. * @param func Re-transfer function. * * The re-transfer function is used to transfer a value from an internal * context (e. g., a * position within a slider with linear distribution) to an external * context (e. g., frequencies with a logarithmic distribution). In this * case a possible re-transfer function would be: * @code * [] [] (const double& x) {return pow (10, x);} * @endcode * * The transfer function (and its re-transfer function) MUST be biunique. */ virtual void setReTransferFunction (std::function func); protected: static void buttonDraggedCallback (BEvents::Event* event); static void scrollbarChangedCallback (BEvents::Event* event); }; inline HRangeScrollBar::HRangeScrollBar () : HRangeScrollBar (0.0, 0.0, BWIDGETS_DEFAULT_HRANGESCROLLBAR_WIDTH, BWIDGETS_DEFAULT_HRANGESCROLLBAR_HEIGHT, value_type (0.0, 0.0), 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, BUTILITIES_URID_UNKNOWN_URID, "") { } inline HRangeScrollBar::HRangeScrollBar (const uint32_t urid, const std::string& title) : HRangeScrollBar (0.0, 0.0, BWIDGETS_DEFAULT_HRANGESCROLLBAR_WIDTH, BWIDGETS_DEFAULT_HRANGESCROLLBAR_HEIGHT, value_type (0.0, 0.0), 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline HRangeScrollBar::HRangeScrollBar (const double value1, const double value2, const double min, const double max, double step, uint32_t urid, std::string title) : HRangeScrollBar (0.0, 0.0, BWIDGETS_DEFAULT_HRANGESCROLLBAR_WIDTH, BWIDGETS_DEFAULT_HRANGESCROLLBAR_HEIGHT, value_type (value1, value2), min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline HRangeScrollBar::HRangeScrollBar (const value_type value, const double min, const double max, double step, uint32_t urid, std::string title) : HRangeScrollBar (0.0, 0.0, BWIDGETS_DEFAULT_HRANGESCROLLBAR_WIDTH, BWIDGETS_DEFAULT_HRANGESCROLLBAR_HEIGHT, value, min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline HRangeScrollBar::HRangeScrollBar (const double x, const double y, const double width, const double height, const double value1, const double value2, const double min, const double max, double step, std::function transferFunc, std::function reTransferFunc, uint32_t urid, std::string title) : HRangeScrollBar (x, y, width, height, value_type (value1, value2), min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline HRangeScrollBar::HRangeScrollBar (const double x, const double y, const double width, const double height, const value_type value, const double min, const double max, double step, std::function transferFunc, std::function reTransferFunc, uint32_t urid, std::string title) : Widget (x, y, width, height, urid, title), ValueableTyped (value), ValidatableRange (value_type (min, min), value_type (max, max), value_type (step, step)), ValueTransferable ([transferFunc] (const value_type& x) {return value_type (transferFunc (x.first), transferFunc (x.second));}, [reTransferFunc] (const value_type& x) {return value_type (reTransferFunc (x.first), reTransferFunc (x.second));}), Scrollable (), KeyPressable(), fineTuned_(false), scrollbar (urid, title), button1 (urid, title), button2 (urid, title), symbol1 (Symbol::SymbolType::minus, urid, title), symbol2 (Symbol::SymbolType::add, urid, title) { setKeyPressable(true); grabDevice(BDevices::Keys(BDevices::Keys::KeyType::shiftL)); grabDevice(BDevices::Keys(BDevices::Keys::KeyType::shiftR)); if (step == 0.0) setNrSubs(BWIDGETS_DEFAULT_NR_SUBSTEPS); setFocusText([](const Widget* w) {return w->getTitle() + ": " + (dynamic_cast(w) ? std::to_string (dynamic_cast(w)->getValue().first) + " - " + std::to_string (dynamic_cast(w)->getValue().second): "");}); scrollbar.setTransferFunction(transferFunc); scrollbar.setReTransferFunction(reTransferFunc); scrollbar.setFocusable(false); scrollbar.setEventPassable(BEvents::Event::EventType::pointerFocusEvents | BEvents::Event::EventType::wheelScrollEvent); scrollbar.setCallbackFunction(BEvents::Event::EventType::valueChangedEvent, scrollbarChangedCallback); scrollbar.setScrollable (false); button1.setFocusable(false); button1.setEventPassable(BEvents::Event::EventType::pointerFocusEvents | BEvents::Event::EventType::wheelScrollEvent); button1.setCallbackFunction(BEvents::Event::EventType::pointerDragEvent, buttonDraggedCallback); button2.setFocusable(false); button2.setEventPassable(BEvents::Event::EventType::pointerFocusEvents | BEvents::Event::EventType::wheelScrollEvent); button2.setCallbackFunction(BEvents::Event::EventType::pointerDragEvent, buttonDraggedCallback); symbol1.setFocusable(false); symbol1.setEventPassable(BEvents::Event::EventType::pointerFocusEvents | BEvents::Event::EventType::mouseEvents); symbol2.setFocusable(false); symbol2.setEventPassable(BEvents::Event::EventType::pointerFocusEvents | BEvents::Event::EventType::mouseEvents); button1.add(&symbol1); button2.add(&symbol2); add (&scrollbar); add (&button1); add (&button2); } inline Widget* HRangeScrollBar::clone () const { Widget* f = new HRangeScrollBar (urid_, title_); f->copy (this); return f; } inline void HRangeScrollBar::copy (const HRangeScrollBar* that) { scrollbar.copy (&that->scrollbar); button1.copy (&that->button1); button2.copy (&that->button2); symbol1.copy (&that->symbol1); symbol2.copy (&that->symbol2); fineTuned_ = that->fineTuned_; KeyPressable::operator=(*that); Scrollable::operator= (*that); ValueTransferable::operator= (*that); ValidatableRange::operator= (*that); ValueableTyped::operator= (*that); Widget::copy (that); } inline void HRangeScrollBar::setStep (const value_type& step) { ValidatableRange::setStep(step); if ((step.first == 0.0) || (step.second == 0.0)) setNrSubs(BWIDGETS_DEFAULT_NR_SUBSTEPS); } inline void HRangeScrollBar::resize () { if (children_.size() <= 3) resize (BUtilities::Point<> (BWIDGETS_DEFAULT_HRANGESCROLLBAR_WIDTH, BWIDGETS_DEFAULT_HRANGESCROLLBAR_HEIGHT)); else { button1.resize (0,0); button1.moveTo (getXOffset(), getYOffset()); button2.resize (0,0); button2.moveTo (getXOffset(), getYOffset()); scrollbar.resize(); scrollbar.moveTo (getXOffset(), getYOffset()); Widget::resize(); } } inline void HRangeScrollBar::resize (const double width, const double height) { resize (BUtilities::Point<> (width, height)); } inline void HRangeScrollBar::resize (const BUtilities::Point<> extends) { Widget::resize (extends); } inline void HRangeScrollBar::update () { if ((getEffectiveWidth () > 0) && (getEffectiveHeight () > 0)) { const double x = getXOffset (); const double y = getYOffset (); const double w = getEffectiveWidth (); const double h = getEffectiveHeight (); const value_type v = getValue(); const value_type rv = getRatioFromValue (v); scrollbar.moveTo (x, y); scrollbar.resize (w, h); scrollbar.setRange (getMin().first, getMax().first, getStep().first); scrollbar.setValue (v.first); scrollbar.setValueSize(v.second - v.first); symbol1.moveTo (0.25 * h, 0.25 * h); symbol1.resize (0.5 * h, 0.5 * h); symbol2.moveTo (0.25 * h, 0.25 * h); symbol2.resize (0.5 * h, 0.5 * h); button1.moveTo (x + (w - h) * (step_.first >= 0.0 ? rv.first : 1.0 - rv.first), y); button1.resize (h, h); button2.moveTo (x + (w - h) * (step_.second >= 0.0 ? rv.second : 1.0 - rv.second), y); button2.resize (h, h); cairo_t* cr1 = cairo_create (button1.cairoSurface()); drawKnob (cr1, 0.5 * h, 0.5 * h, BWIDGETS_DEFAULT_SCROLLBAR_KNOB_REL_SIZE * h, 0.0, BWIDGETS_DEFAULT_SCROLLBAR_KNOB_COLOR, BWIDGETS_DEFAULT_SCROLLBAR_KNOB_COLOR); cairo_destroy (cr1); cairo_t* cr2 = cairo_create (button2.cairoSurface()); drawKnob (cr2, 0.5 * h, 0.5 * h, BWIDGETS_DEFAULT_SCROLLBAR_KNOB_REL_SIZE * h, 0.0, BWIDGETS_DEFAULT_SCROLLBAR_KNOB_COLOR, BWIDGETS_DEFAULT_SCROLLBAR_KNOB_COLOR); cairo_destroy (cr2); } Widget::update(); } inline void HRangeScrollBar::onWheelScrolled (BEvents::Event* event) { BEvents::WheelEvent* wev = dynamic_cast (event); if (!wev) return; if (getEffectiveWidth() >= 1) { value_type v = getValue(); const double step = (fineTuned_ ? 1.0 / ((static_cast(getNrSubs() + 1.0)) * getEffectiveWidth()) : 1.0 / getEffectiveWidth()); if (getStep().first != 0.0) v.first -= wev->getDelta().y * (fineTuned_ ? getSubStep ().first : getStep ().first); else v.first = getValueFromRatio (value_type (getRatioFromValue (v).first - wev->getDelta().y * step, v.second)).first; if (getStep().second != 0.0) v.second += wev->getDelta().y * (fineTuned_ ? getSubStep ().second : getStep ().second); else v.second = getValueFromRatio (value_type (v.first, getRatioFromValue (v).second + wev->getDelta().y * step)).second; const value_type vr = getRatioFromValue (v); if (vr.first <= vr.second) setValue (v); } Scrollable::onWheelScrolled (event); } inline void HRangeScrollBar::onKeyPressed (BEvents::Event* event) { BEvents::KeyEvent* kev = dynamic_cast(event); if (!kev) return; if (kev->getWidget() == this) fineTuned_ = true; KeyPressable::onKeyPressed(event); } inline void HRangeScrollBar::onKeyReleased (BEvents::Event* event) { BEvents::KeyEvent* kev = dynamic_cast(event); if (!kev) return; if (kev->getWidget() == this) fineTuned_ = false; KeyPressable::onKeyReleased(event); } inline void HRangeScrollBar::setTransferFunction (std::function func) { scrollbar.setTransferFunction([func] (const double& x) {return func(value_type(x, x)).first;}); ValueTransferable::setTransferFunction(func); update(); } inline void HRangeScrollBar::setTransferFunction (std::function func) { scrollbar.setTransferFunction(func); ValueTransferable::setTransferFunction([func] (const value_type& x) {return value_type (func (x.first), func (x.second));}); update(); } inline void HRangeScrollBar::setReTransferFunction (std::function func) { scrollbar.setReTransferFunction([func] (const double& x) {return func(value_type(x, x)).first;}); ValueTransferable::setReTransferFunction(func); update(); } inline void HRangeScrollBar::setReTransferFunction (std::function func) { scrollbar.setReTransferFunction(func); ValueTransferable::setReTransferFunction([func] (const value_type& x) {return value_type (func (x.first), func (x.second));}); update(); } inline void HRangeScrollBar::buttonDraggedCallback (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast(event); if (!pev) return; Frame* w = dynamic_cast(pev->getWidget()); if (!w) return; HRangeScrollBar* p = dynamic_cast(w->getParentWidget()); if (!p) return; const double x0 = p->getXOffset (); const double width = p->getEffectiveWidth (); const double height = p->getEffectiveHeight (); const double px = std::max (std::min (w->getPosition().x, x0 + width - height), x0); const double rv = (p->step_.first >= 0.0 ? (px - x0) / (width - height) : 1.0 - (px - x0) / (width - height)); value_type v = p->getValue(); const value_type rv0 = p->getRatioFromValue (v); if ((w ==&p->button1) && (rv <= rv0.second)) v.first = p->getValueFromRatio (value_type (rv, rv0.second)).first; else if ((w ==&p->button2) && (rv >= rv0.first)) v.second = p->getValueFromRatio (value_type (rv0.first, rv)).second; p->setValue (v); p->update(); } inline void HRangeScrollBar::scrollbarChangedCallback (BEvents::Event* event) { BEvents::ValueChangeTypedEvent* vev = dynamic_cast*>(event); if (!vev) return; HScrollBar* w = dynamic_cast(vev->getWidget()); if (!w) return; HRangeScrollBar* p = dynamic_cast(w->getParentWidget()); if (!p) return; p->setValue (value_type (w->getValue(), p->getValue().second + w->getValue() - p->getValue().first)); p->update(); } } #endif /* BWIDGETS_HRANGESCROLLBAR_HPP_ */ src/BWidgets/BWidgets/HScale.hpp000066400000000000000000000346001515163050000167340ustar00rootroot00000000000000/* HScale.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_HSCALE_HPP_ #define BWIDGETS_HSCALE_HPP_ #include "HMeter.hpp" #include "Supports/Clickable.hpp" #include "Supports/Draggable.hpp" #include "Supports/Scrollable.hpp" #include "Supports/KeyPressable.hpp" #include "../BEvents/WheelEvent.hpp" #include "../BEvents/KeyEvent.hpp" #include BWIDGETS_DEFAULT_DRAWHBAR_PATH #ifndef BWIDGETS_DEFAULT_HSCALE_WIDTH #define BWIDGETS_DEFAULT_HSCALE_WIDTH 80.0 #endif #ifndef BWIDGETS_DEFAULT_HSCALE_HEIGHT #define BWIDGETS_DEFAULT_HSCALE_HEIGHT 10.0 #endif namespace BWidgets { /** * @brief %HScale widget. * * %HScale is a Valueable Widget derived from HMeter. It displays a value as * a horizontal scale and supports user interaction via Clickable, Draggable, * Scrollable, and KeyPressable. Its appearance is defined by the BgColors * parameter (static elements) and by the FgColors parameter (value). */ class HScale : public HMeter, public Clickable, public Draggable, public Scrollable, public KeyPressable { protected: bool fineTuned_; public: /** * @brief Constructs a default %HScale object. */ HScale (); /** * @brief Constructs a default %HScale object. * @param URID URID. * @param title %Widget title. */ HScale (const uint32_t urid, const std::string& title); /** * @brief Creates a %HScale with default size. * @param value Initial value. * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ HScale (const double value, const double min, const double max, double step = 0.0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %HScale. * @param x %HScale X origin coordinate. * @param y %HScale Y origin coordinate. * @param width %HScale width. * @param height %HScale height. * @param value Initial value. * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param transferFunc Optinonal, function to transfer a value from an * external context to the internal context. * @param reTransferFunc Optinonal, function to transfer a value from the * internal context to an external context. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %HScale title (default = ""). */ HScale (const double x, const double y, const double width, const double height, const double value, const double min, const double max, double step = 0.0, std::function transferFunc = ValueTransferable::noTransfer, std::function reTransferFunc = ValueTransferable::noTransfer, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %HScale. * @return Pointer to the new %HScale. * * Creates a clone of this %HScale by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %HScale. * @param that Other %HScale. * * Copies all properties from another %HScale. But NOT its linkage. */ void copy (const HScale* that); /** * @brief Sets the range step size. * @param step Step size. * * Also sets the number of sub steps to BWIDGETS_DEFAULT_NR_SUBSTEPS if * step size is 0.0. */ virtual void setStep (const double& step) override; /** * @brief Enters this %HScale. * * Activates this %HScale, takes over keyboard control, and calls to leave * all other widgets linked to the main Window to become the only entered * Widget. */ virtual void enter () override; /** * @brief Leaves this %HScale * * De-activates this %HScale and release keyboard conrol. */ virtual void leave () override; /** * @brief Method called when pointer button pressed. * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button pressed. Sets the value and calls the widget static * callback function. */ virtual void onButtonPressed (BEvents::Event* event) override; /** * @brief Method called upon pointer drag. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a pointer drag. Changes the value and calls the widget static callback * function. */ virtual void onPointerDragged (BEvents::Event* event) override; /** * @brief Method called upon (mouse) wheel scroll. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a (mouse) wheel scroll. Increases or decreases the value and calls the * widget static callback function. */ virtual void onWheelScrolled (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyPressEvent is * received. * @param event Passed Event. * * Overridable method called from the main window event scheduler if a * key is pressed. By default, it calls its static callback function. */ virtual void onKeyPressed (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyReleaseEvent is * received. * @param event Passed Event. * * Overridable method called from the main window event scheduler if a * key is released. By default, it calls its static callback function. */ virtual void onKeyReleased (BEvents::Event* event) override; protected: /** * @brief Unclipped draw a %HScale to the surface. */ virtual void draw () override; /** * @brief Clipped draw a %HScale to the surface. * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped draw a %HScale to the surface. * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline HScale::HScale () : HScale (0.0, 0.0, BWIDGETS_DEFAULT_HSCALE_WIDTH, BWIDGETS_DEFAULT_HSCALE_HEIGHT, 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, BUTILITIES_URID_UNKNOWN_URID, "") { } inline HScale::HScale (const uint32_t urid, const std::string& title) : HScale (0.0, 0.0, BWIDGETS_DEFAULT_HSCALE_WIDTH, BWIDGETS_DEFAULT_HSCALE_HEIGHT, 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline HScale::HScale (const double value, const double min, const double max, double step, uint32_t urid, std::string title) : HScale (0.0, 0.0, BWIDGETS_DEFAULT_HSCALE_WIDTH, BWIDGETS_DEFAULT_HSCALE_HEIGHT, value, min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline HScale::HScale (const double x, const double y, const double width, const double height, const double value, const double min, const double max, double step, std::function transferFunc, std::function reTransferFunc, uint32_t urid, std::string title) : HMeter (x, y, width, height, value, min, max, step, transferFunc, reTransferFunc, urid, title), Clickable(), Draggable(), Scrollable(), KeyPressable(), fineTuned_(false) { setActivatable(true); setEnterable(true); setKeyPressable(true); grabDevice(BDevices::Keys(BDevices::Keys::KeyType::shiftL)); grabDevice(BDevices::Keys(BDevices::Keys::KeyType::shiftR)); if (step == 0.0) setNrSubs(BWIDGETS_DEFAULT_NR_SUBSTEPS); } inline Widget* HScale::clone () const { Widget* f = new HScale (urid_, title_); f->copy (this); return f; } inline void HScale::copy (const HScale* that) { fineTuned_ = that->fineTuned_; KeyPressable::operator=(*that); Scrollable::operator= (*that); Draggable::operator= (*that); Clickable::operator= (*that); HMeter::copy (that); } inline void HScale::setStep (const double &step) { ValidatableRange::setStep(step); if (step == 0.0) setNrSubs(BWIDGETS_DEFAULT_NR_SUBSTEPS); } inline void HScale::enter () { if (isEnterable() && (!isEntered())) { grabDevice (BDevices::Keys()); Widget::enter(); } } inline void HScale::leave () { if (isEnterable() && isEntered()) { if (isDeviceGrabbed(BDevices::Keys())) freeDevice(BDevices::Keys ()); Widget::leave(); } } inline void HScale::onButtonPressed (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast (event); if (!pev) return; enter(); if (scale_.getWidth()) { if (step_ >= 0) setValue (getValueFromRatio ((pev->getPosition().x - scale_.getX()) / scale_.getWidth())); else setValue (getValueFromRatio ((scale_.getWidth() - (pev->getPosition().x - scale_.getX())) / scale_.getWidth())); } Clickable::onButtonPressed (event); } inline void HScale::onPointerDragged (BEvents::Event* event) { if (isClickable()) onButtonPressed (event); else { BEvents::PointerEvent* pev = dynamic_cast (event); if (!pev) return; enter(); if (scale_.getWidth()) { if (getStep() != 0.0) setValue (getValue() - pev->getDelta().y * (fineTuned_ ? getSubStep() : getStep())); else { const double step = (fineTuned_ ? 1.0 / ((static_cast(getNrSubs() + 1.0)) * scale_.getWidth()) : 1.0 / scale_.getWidth()); setValue (getValueFromRatio (getRatioFromValue (getValue()) - pev->getDelta().y * step)); } } } Draggable::onPointerDragged (event); } inline void HScale::onWheelScrolled (BEvents::Event* event) { BEvents::WheelEvent* wev = dynamic_cast (event); if (!wev) return; if (scale_.getWidth()) { if (getStep() != 0.0) setValue (getValue() + wev->getDelta().y * (fineTuned_ ? getSubStep() : getStep())); else { const double step = (fineTuned_ ? 1.0 / ((static_cast(getNrSubs() + 1.0)) * scale_.getWidth()) : 1.0 / scale_.getWidth()); setValue (getValueFromRatio (getRatioFromValue (getValue()) + wev->getDelta().y * step)); } } Scrollable::onWheelScrolled (event); } inline void HScale::onKeyPressed (BEvents::Event* event) { BEvents::KeyEvent* kev = dynamic_cast(event); if (!kev) return; if (kev->getWidget() != this) return; //BDevices::Keys::KeyType key = static_cast(kev->getKey ()); switch (kev->getKey ()) { case BDevices::Keys::keyCode(BDevices::Keys::KeyType::shiftL): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::shiftR): fineTuned_ = true; break; case '-': case BDevices::Keys::keyCode(BDevices::Keys::KeyType::down): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::left): { BEvents::WheelEvent wev = BEvents::WheelEvent(this, BEvents::Event::EventType::wheelScrollEvent, 0.5 * getWidth(), 0.5 * getHeight(), 0, 1); onWheelScrolled(&wev); } break; case '+': case BDevices::Keys::keyCode(BDevices::Keys::KeyType::up): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::right): { BEvents::WheelEvent wev = BEvents::WheelEvent(this, BEvents::Event::EventType::wheelScrollEvent, 0.5 * getWidth(), 0.5 * getHeight(), 0, -1); onWheelScrolled(&wev); } break; case BDevices::Keys::keyCode(BDevices::Keys::KeyType::escape): leave(); break; default: break; } KeyPressable::onKeyPressed(event); } inline void HScale::onKeyReleased (BEvents::Event* event) { BEvents::KeyEvent* kev = dynamic_cast(event); if (!kev) return; if (kev->getWidget() != this) return; BDevices::Keys::KeyType key = static_cast(kev->getKey ()); switch (key) { case BDevices::Keys::KeyType::shiftL: case BDevices::Keys::KeyType::shiftR: fineTuned_ = false; break; default: break; } KeyPressable::onKeyReleased(event); } inline void HScale::draw () { draw (0, 0, getWidth(), getHeight()); } inline void HScale::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void HScale::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; // Draw super class widget elements first Widget::draw (area); // Draw only if minimum requirements satisfied if ((getHeight () >= 1) && (getWidth () >= 1)) { cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); const double rval = getRatioFromValue (getValue()); if (step_ >= 0.0) { drawHBar(cr, scale_.getX(), scale_.getY(), scale_.getWidth(), scale_.getHeight(), 0.0, rval, BWIDGETS_DEFAULT_SLIDER_BAR_FGCOLOR, BWIDGETS_DEFAULT_SLIDER_BAR_BGCOLOR); } else { drawHBar(cr, scale_.getX(), scale_.getY(), scale_.getWidth(), scale_.getHeight(), 1.0 - rval, 1.0, BWIDGETS_DEFAULT_SLIDER_BAR_FGCOLOR, BWIDGETS_DEFAULT_SLIDER_BAR_BGCOLOR); } } cairo_destroy (cr); } } } #endif /* BWIDGETS_HSCALE_HPP_ */ src/BWidgets/BWidgets/HScrollBar.hpp000066400000000000000000000233461515163050000175750ustar00rootroot00000000000000/* HScrollBar.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_HSCROLLBAR_HPP_ #define BWIDGETS_HSCROLLBAR_HPP_ #include "HScale.hpp" #ifndef BWIDGETS_DEFAULT_HSCROLLBAR_WIDTH #define BWIDGETS_DEFAULT_HSCROLLBAR_WIDTH BWIDGETS_DEFAULT_HSCALE_WIDTH #endif #ifndef BWIDGETS_DEFAULT_HSCROLLBAR_HEIGHT #define BWIDGETS_DEFAULT_HSCROLLBAR_HEIGHT BWIDGETS_DEFAULT_HSCALE_HEIGHT #endif namespace BWidgets { /** * @brief %Horizontal scroll bar widget. * * %HScrollBar is a Valueable Widget derived from HScale. It displays a value * as a horizontal scrollbar and supports user interaction via Draggable, and * Scrollable. Its appearance is defined by the BgColors parameter. * * The value can be point value (vsize = 0) or a range value (start value * = widget value; end value = start value + vsize). */ class HScrollBar : public HScale { protected: double vsize_; public: /** * @brief Constructs a default %HScrollBar object. */ HScrollBar (); /** * @brief Constructs a default %HScrollBar object. * @param URID URID. * @param title %Widget title. */ HScrollBar (const uint32_t urid, const std::string& title); /** * @brief Creates a %HScrollBar with default size. * @param value Initial value. * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param vsize Optional, range covered by the value. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ HScrollBar (const double value, const double min, const double max, double step = 0.0, double vsize = 0.0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %HScrollBar. * @param x %HScrollBar X origin coordinate. * @param y %HScrollBar Y origin coordinate. * @param width %HScrollBar width. * @param height %HScrollBar height. * @param value Initial value. * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param vsize Optional, range covered by the value. * @param transferFunc Optinonal, function to transfer a value from an * external context to the internal context. * @param reTransferFunc Optinonal, function to transfer a value from the * internal context to an external context. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %HScrollBar title (default = ""). */ HScrollBar (const double x, const double y, const double width, const double height, const double value, const double min, const double max, double step = 0.0, double vsize = 0.0, std::function transferFunc = ValueTransferable::noTransfer, std::function reTransferFunc = ValueTransferable::noTransfer, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %HScrollBar. * @return Pointer to the new %HScrollBar. * * Creates a clone of this %HScrollBar by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %HScrollBar. * @param that Other %HScrollBar. * * Copies all properties from another %HScrollBar. But NOT its linkage. */ void copy (const HScrollBar* that); /** * @brief Sets the size of the value range. * @param vsize Scrollbar value range size. * * The value can be point value (vsize = 0) or a range value (start value * = widget value; end value = start value + vsize). */ virtual void setValueSize (const double& vsize); /** * @brief Method called when pointer button pressed. * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button pressed. Sets the value and calls the widget static * callback function. */ virtual void onButtonPressed (BEvents::Event* event) override; /** * @brief Method called upon pointer drag. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a pointer drag. Changes the value and calls the widget static callback * function. */ virtual void onPointerDragged (BEvents::Event* event) override; protected: /** * @brief Unclipped draw a %HScrollBar to the surface. */ virtual void draw () override; /** * @brief Clipped draw a %HScrollBar to the surface. * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped draw a %HScrollBar to the surface. * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline HScrollBar::HScrollBar () : HScrollBar (0.0, 0.0, BWIDGETS_DEFAULT_HSCROLLBAR_WIDTH, BWIDGETS_DEFAULT_HSCROLLBAR_HEIGHT, 0.0, 0.0, 1.0, 0.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, BUTILITIES_URID_UNKNOWN_URID, "") { } inline HScrollBar::HScrollBar (const uint32_t urid, const std::string& title) : HScrollBar (0.0, 0.0, BWIDGETS_DEFAULT_HSCROLLBAR_WIDTH, BWIDGETS_DEFAULT_HSCROLLBAR_HEIGHT, 0.0, 0.0, 1.0, 0.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline HScrollBar::HScrollBar (const double value, const double min, const double max, double step, double vsize, uint32_t urid, std::string title) : HScrollBar (0.0, 0.0, BWIDGETS_DEFAULT_HSCROLLBAR_WIDTH, BWIDGETS_DEFAULT_HSCROLLBAR_HEIGHT, value, min, max, step, vsize, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline HScrollBar::HScrollBar (const double x, const double y, const double width, const double height, const double value, const double min, const double max, double step, double vsize, std::function transferFunc, std::function reTransferFunc, uint32_t urid, std::string title) : HScale (x, y, width, height, value, min, max, step, transferFunc, reTransferFunc, urid, title), vsize_ (vsize) { } inline Widget* HScrollBar::clone () const { Widget* f = new HScrollBar (urid_, title_); f->copy (this); return f; } inline void HScrollBar::copy (const HScrollBar* that) { vsize_ = that->vsize_; HScale::copy (that); } inline void HScrollBar::setValueSize (const double& vsize) { if (vsize_ != vsize) { vsize_ = vsize; update(); } } inline void HScrollBar::onButtonPressed (BEvents::Event* event) { // Bypass HScale::onButtonPressed() Clickable::onButtonPressed (event); enter(); } inline void HScrollBar::onPointerDragged (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast (event); if (!pev) return; enter(); if (scale_.getWidth()) { if (getStep() != 0.0) setValue (getValue() + pev->getDelta().x * getStep ()); else setValue (getValueFromRatio (getRatioFromValue(getValue()) + pev->getDelta().x / scale_.getWidth())); } Draggable::onPointerDragged (event); } inline void HScrollBar::draw () { draw (0, 0, getWidth(), getHeight()); } inline void HScrollBar::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void HScrollBar::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; // Draw super class widget elements first Widget::draw (area); // Draw only if minimum requirements satisfied if ((getHeight () >= 1) && (getWidth () >= 1)) { cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); const double rval1 = (step_ >= 0.0 ? getRatioFromValue (getValue()) : 1.0 - getRatioFromValue (getValue() + vsize_)); const double rval2 = (step_ >= 0.0 ? getRatioFromValue (getValue() + vsize_) : 1.0 - getRatioFromValue (getValue())); drawHBar ( cr, scale_.getX(), scale_.getY() + 0.5 * (1.0 - BWIDGETS_DEFAULT_SCROLLBAR_BAR_REL_SIZE) * scale_.getHeight(), scale_.getWidth(), BWIDGETS_DEFAULT_SCROLLBAR_BAR_REL_SIZE * scale_.getHeight(), rval1 * (1.0 - scale_.getHeight() / scale_.getWidth()), rval2 * (1.0 - scale_.getHeight() / scale_.getWidth()) + scale_.getHeight() / scale_.getWidth(), BWIDGETS_DEFAULT_SCROLLBAR_BAR_FGCOLOR, BWIDGETS_DEFAULT_SCROLLBAR_BAR_BGCOLOR ); } cairo_destroy (cr); } } } #endif /* BWIDGETS_HSCROLLBAR_HPP_ */ src/BWidgets/BWidgets/HSlider.hpp000066400000000000000000000202221515163050000171220ustar00rootroot00000000000000/* HSlider.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_HSLIDER_HPP_ #define BWIDGETS_HSLIDER_HPP_ #include "HScale.hpp" #include BWIDGETS_DEFAULT_DRAWKNOB_PATH #ifndef BWIDGETS_DEFAULT_HSLIDER_WIDTH #define BWIDGETS_DEFAULT_HSLIDER_WIDTH 80.0 #endif #ifndef BWIDGETS_DEFAULT_HSLIDER_HEIGHT #define BWIDGETS_DEFAULT_HSLIDER_HEIGHT 20.0 #endif namespace BWidgets { /** * @brief %HSlider widget. * * %HSlider is a HScale Widget. It displays a value as a horizontal * slider and supports user interaction via Clickable, Draggable, and * Scrollable. Its appearance is defined by the BgColors parameter (static * elements, knob) and by the FgColors parameter (value). */ class HSlider : public HScale { public: /** * @brief Constructs a default %HSlider object. */ HSlider (); /** * @brief Constructs a default %HSlider object. * @param URID URID. * @param title %Widget title. */ HSlider (const uint32_t urid, const std::string& title); /** * @brief Creates a %HSlider with default size. * @param value Initial value. * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ HSlider (const double value, const double min, const double max, double step = 0.0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %HSlider. * @param x %HSlider X origin coordinate. * @param y %HSlider Y origin coordinate. * @param width %HSlider width. * @param height %HSlider height. * @param value Initial value. * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param transferFunc Optinonal, function to transfer a value from an * external context to the internal context. * @param reTransferFunc Optinonal, function to transfer a value from the * internal context to an external context. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %HSlider title (default = ""). */ HSlider (const double x, const double y, const double width, const double height, const double value, const double min, const double max, double step = 0.0, std::function transferFunc = ValueTransferable::noTransfer, std::function reTransferFunc = ValueTransferable::noTransfer, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %HSlider. * @return Pointer to the new %HSlider. * * Creates a clone of this %HSlider by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %HSlider. * @param that Other %HSlider. * * Copies all properties from another %HSlider. But NOT its linkage. */ void copy (const HSlider* that); /** * @brief Method to be called following an object state change. */ virtual void update () override; protected: /** * @brief Unclipped draw a %HSlider to the surface. */ virtual void draw () override; /** * @brief Clipped draw a %HSlider to the surface. * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped draw a %HSlider to the surface. * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline HSlider::HSlider () : HSlider (0.0, 0.0, BWIDGETS_DEFAULT_HSLIDER_WIDTH, BWIDGETS_DEFAULT_HSLIDER_HEIGHT, 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, BUTILITIES_URID_UNKNOWN_URID, "") { } inline HSlider::HSlider (const uint32_t urid, const std::string& title) : HSlider (0.0, 0.0, BWIDGETS_DEFAULT_HSLIDER_WIDTH, BWIDGETS_DEFAULT_HSLIDER_HEIGHT, 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline HSlider::HSlider (const double value, const double min, const double max, double step, uint32_t urid, std::string title) : HSlider (0.0, 0.0, BWIDGETS_DEFAULT_HSLIDER_WIDTH, BWIDGETS_DEFAULT_HSLIDER_HEIGHT, value, min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline HSlider::HSlider (const double x, const double y, const double width, const double height, const double value, const double min, const double max, double step, std::function transferFunc, std::function reTransferFunc, uint32_t urid, std::string title) : HScale (x, y, width, height, value, min, max, step, transferFunc, reTransferFunc, urid, title) { scale_ = BUtilities::Area<> (0.5 * height, 0.25 * height, width - height, 0.5 * height); } inline Widget* HSlider::clone () const { Widget* f = new HSlider (urid_, title_); f->copy (this); return f; } inline void HSlider::copy (const HSlider* that) { HScale::copy (that); } inline void HSlider::update () { scale_ = BUtilities::Area<> ( getXOffset() + 0.5 * getEffectiveHeight(), getYOffset() + (0.5 - 0.5 * BWIDGETS_DEFAULT_SLIDER_BAR_REL_SIZE) * getEffectiveHeight(), getEffectiveWidth() - getEffectiveHeight(), BWIDGETS_DEFAULT_SLIDER_BAR_REL_SIZE * getEffectiveHeight() ); Widget::update(); } inline void HSlider::draw () { draw (0, 0, getWidth(), getHeight()); } inline void HSlider::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void HSlider::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; // Draw super class widget elements first HScale::draw (area); // Draw only if minimum requirements satisfied if ((getHeight () >= 1) && (getWidth () >= 1)) { cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); const double rval = getRatioFromValue (getValue()); if (step_ >= 0.0) drawKnob (cr, scale_.getX() + rval * scale_.getWidth(), scale_.getY() + 0.5 * scale_.getHeight(), 0.5 * (BWIDGETS_DEFAULT_SLIDER_KNOB_REL_SIZE / BWIDGETS_DEFAULT_SLIDER_BAR_REL_SIZE) * (scale_.getHeight() - 1.0), 1.0, BWIDGETS_DEFAULT_SLIDER_KNOB_COLOR, BWIDGETS_DEFAULT_SLIDER_KNOB_COLOR); else drawKnob (cr, scale_.getX() + (1.0 - rval) * scale_.getWidth(), scale_.getY() + 0.5 * scale_.getHeight(), 0.5 * (BWIDGETS_DEFAULT_SLIDER_KNOB_REL_SIZE / BWIDGETS_DEFAULT_SLIDER_BAR_REL_SIZE) * (scale_.getHeight() - 1.0), 1.0, BWIDGETS_DEFAULT_SLIDER_KNOB_COLOR, BWIDGETS_DEFAULT_SLIDER_KNOB_COLOR); } cairo_destroy (cr); } } } #endif /* BWIDGETS_HSLIDER_HPP_ */ src/BWidgets/BWidgets/HSwitch.hpp000066400000000000000000000217301515163050000171460ustar00rootroot00000000000000/* HSwitch.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_HSWITCH_HPP_ #define BWIDGETS_HSWITCH_HPP_ #ifndef BWIDGETS_DEFAULT_DRAWHBAR_PATH #define BWIDGETS_DEFAULT_DRAWHBAR_PATH "Draws/Ergo/drawHBar.hpp" #endif #ifndef BWIDGETS_DEFAULT_DRAWKNOB_PATH #define BWIDGETS_DEFAULT_DRAWKNOB_PATH "Draws/Ergo/drawKnob.hpp" #endif #include "Button.hpp" #include "Supports/Draggable.hpp" #include "Supports/Scrollable.hpp" #include "../BEvents/WheelEvent.hpp" #include BWIDGETS_DEFAULT_DRAWHBAR_PATH #include BWIDGETS_DEFAULT_DRAWKNOB_PATH #include "Widget.hpp" #ifndef BWIDGETS_DEFAULT_HSWITCH_WIDTH #define BWIDGETS_DEFAULT_HSWITCH_WIDTH 40.0 #endif #ifndef BWIDGETS_DEFAULT_HSWITCH_HEIGHT #define BWIDGETS_DEFAULT_HSWITCH_HEIGHT 20.0 #endif namespace BWidgets { /** * @brief %HSwitch Button widget. * * %HSwitch is a Button Widget. It displays its status (represented by its * bool value) as a horizontal switch. It supports user interaction via * Clickable, Draggable, and Scrollable. Its appearance is defined by the * BgColors parameter (static elements, false) and by the FgColors parameter * (active elements, true). */ class HSwitch : public Button, public Draggable, public Scrollable { public: /** * @brief Constructs a default %HSwitch object. */ HSwitch (); /** * @brief Constructs a default %HSwitch object. * @param URID URID. * @param title %Widget title. */ HSwitch (const uint32_t urid, const std::string& title); /** * @brief Creates a %HSwitch with default size. * @param toggleable Support of button toggling. * @param clicked Default click status. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ HSwitch (bool toggleable, bool clicked = false, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %HSwitch. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param toggleable Support of button toggling. * @param clicked Default click status. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ HSwitch (const double x, const double y, const double width, const double height, bool toggleable = true, bool clicked = false, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %HSwitch. * @return Pointer to the new %HSwitch. * * Creates a clone of this %HSwitch by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %HSwitch. * @param that Other %HSwitch. * * Copies all properties from another %HSwitch. But NOT its linkage. */ void copy (const HSwitch* that); /** * @brief Method called when pointer button clicked (pressed and * released). * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button cklicked. Inverts the %Button value (if * @c isToggleable() and the pointer hasn't been dragged) and calls its * static callback function. */ virtual void onButtonClicked (BEvents::Event* event) override; /** * @brief Method called upon pointer drag. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a pointer drag. Changes the %Button value and calls its static callback * function. */ virtual void onPointerDragged (BEvents::Event* event) override; /** * @brief Method called upon (mouse) wheel scroll. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a (mouse) wheel scroll. Sets or unsets the %Button value and calls its * static callback function. */ virtual void onWheelScrolled (BEvents::Event* event) override; protected: /** * @brief Unclipped draw a %HSwitch to the surface. */ virtual void draw () override; /** * @brief Clipped draw a %HSwitch to the surface. * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped draw a %HSwitch to the surface. * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline HSwitch::HSwitch () : HSwitch (0.0, 0.0, BWIDGETS_DEFAULT_HSWITCH_WIDTH, BWIDGETS_DEFAULT_HSWITCH_HEIGHT, true, false, BUTILITIES_URID_UNKNOWN_URID, "") { } inline HSwitch::HSwitch (const uint32_t urid, const std::string& title) : HSwitch (0.0, 0.0, BWIDGETS_DEFAULT_HSWITCH_WIDTH, BWIDGETS_DEFAULT_HSWITCH_HEIGHT, true, false, urid, title) { } inline HSwitch::HSwitch (bool toggleable, bool clicked, uint32_t urid, std::string title) : HSwitch (0.0, 0.0, BWIDGETS_DEFAULT_HSWITCH_WIDTH, BWIDGETS_DEFAULT_HSWITCH_HEIGHT, toggleable, clicked, urid, title) { } inline HSwitch::HSwitch (const double x, const double y, const double width, const double height, bool toggleable, bool clicked, uint32_t urid, std::string title) : Button (x, y, width, height, toggleable, clicked, urid, title), Draggable(), Scrollable() { setBackground (BStyles::noFill); setBorder (BStyles::noBorder); } inline Widget* HSwitch::clone () const { Widget* f = new HSwitch (urid_, title_); f->copy (this); return f; } inline void HSwitch::copy (const HSwitch* that) { Scrollable::operator= (*that); Draggable::operator= (*that); Widget::copy (that); } inline void HSwitch::onButtonClicked (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast (event); if (!pev) return; if (isToggleable() && (pev->getPosition() == pev->getOrigin())) setValue (!getValue()); Clickable::onButtonClicked (event); } inline void HSwitch::onPointerDragged (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast (event); if (!pev) return; setValue (pev->getPosition().x > 0.5 * getWidth()); Draggable::onPointerDragged (event); } inline void HSwitch::onWheelScrolled (BEvents::Event* event) { BEvents::WheelEvent* wev = dynamic_cast (event); if (!wev) return; if (wev->getDelta().y != 0) setValue (wev->getDelta().y > 0); Scrollable::onWheelScrolled (event); } inline void HSwitch::draw () { draw (0, 0, getWidth(), getHeight()); } inline void HSwitch::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void HSwitch::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; // Draw super class widget elements first Widget::draw (area); const double x0 = getXOffset(); const double y0 = getYOffset(); const double heff = getEffectiveHeight (); const double weff = getEffectiveWidth (); // Draw only if minimum requirements satisfied if ((heff >= 1) && (weff >= 1)) { cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); // Calculate aspect ratios first const double radius = BWIDGETS_DEFAULT_SWITCH_KNOB_REL_SIZE * (0.5 * heff - 1.0); const double max = (getValue() ? 1.0 : 0.0); const double xc = x0 + 1.0 + radius + max * (weff - 2.0 * radius); const double yc = y0 + 0.5 * heff; drawHBar(cr, x0, y0 + 0.5 * (1.0 - BWIDGETS_DEFAULT_SWITCH_BAR_REL_SIZE) * heff, weff, BWIDGETS_DEFAULT_SWITCH_BAR_REL_SIZE * heff, 0.0, max, BWIDGETS_DEFAULT_SWITCH_BAR_FGCOLOR, BWIDGETS_DEFAULT_SWITCH_BAR_BGCOLOR); drawKnob(cr, xc, yc, radius, 1.0, BWIDGETS_DEFAULT_SWITCH_KNOB_COLOR, BWIDGETS_DEFAULT_SWITCH_KNOB_COLOR); } cairo_destroy (cr); } } } #endif /* BWIDGETS_HSWITCH_HPP_ */ src/BWidgets/BWidgets/Image.hpp000066400000000000000000000452461515163050000166270ustar00rootroot00000000000000/* Image.hpp * Copyright (C) 2019 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_IMAGE_HPP_ #define BWIDGETS_IMAGE_HPP_ #include "Widget.hpp" #include #include #include #ifndef BWIDGETS_DEFAULT_IMAGE_WIDTH #define BWIDGETS_DEFAULT_IMAGE_WIDTH BWIDGETS_DEFAULT_WIDGET_WIDTH #endif #ifndef BWIDGETS_DEFAULT_IMAGE_HEIGHT #define BWIDGETS_DEFAULT_IMAGE_HEIGHT BWIDGETS_DEFAULT_WIDGET_HEIGHT #endif namespace BWidgets { /** * @brief %Image displaying Widget. * * Supports one image for each Status. No user interaction. */ class Image : public Widget { protected: std::map imageSurfaces_; public: /** * @brief Construct an empty default %Image. */ Image (); /** * @brief Construct an empty default %Image. * @param URID URID. * @param title %Widget title. */ Image (const uint32_t urid, const std::string& title); /** * @brief Creates an empty %Image with defined coordinates and size. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ Image (const double x, const double y, const double width, const double height, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a single status %Image with defined coordinates and * size from a Cairo surface. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param surface Pointer to a Cairo surface. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). * * Most simple case of an %Image. The visual content provided by the * @a surface is displayed independently from the Widget Status. Until * a new visual content is added by loadImage(). */ Image (const double x, const double y, const double width, const double height, cairo_surface_t* surface, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a single status %Image with defined coordinates and * size from an image file. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param filename Filename, supported file types are: PNG. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). * * Most simple case of an %Image. The visual content provided by the * @a filename is displayed independently from the Widget Status. Until * a new visual content is added by loadImage(). */ Image (const double x, const double y, const double width, const double height, const std::string& filename, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a multi Status %Image with defined coordinates and * size from a Cairo surface. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param surfaces Initializer list of pointers to Cairo surfaces. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). * * Creates an %Image with visual contents for each Widget Status as * defined by @a surfaces in the order Status::normal, STATUS_ACTIVE, * STATUS_INACTIVE, STATUS_OFF, STATUS_USER_DEFINED. The %Image behaves * like an empty %Image if an empty initializer list of @a surfaces is * provided. And it behaves like a single status %Image if an initializer * list with only one element is passed. Status::normal also acts for * missing states. */ Image (const double x, const double y, const double width, const double height, const std::initializer_list& surfaces, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a multi Status %Image with defined coordinates and * size from a Cairo surface. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param surfaces Map of pointer to Cairo surfaces for each Status. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). * * Creates an %Image with visual contents for each Widget Status as * defined by @a surfaces. The %Image behaves like an empty %Image if an * empty map is provided. Otherwise at least an image for Status::normal * should be provided to behave at least like a single status %Image. * Status::normal also acts for missing states. */ Image (const double x, const double y, const double width, const double height, const std::map& surfaces, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a multi Status %Image with defined coordinates and * size from an image file. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param filenames Initializer list of filenames. Supported file types * are: PNG. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). * * Creates an %Image with visual contents for each Widget Status as * defined by @a filenames in the order Status::normal, STATUS_ACTIVE, * STATUS_INACTIVE, STATUS_OFF, STATUS_USER_DEFINED. The %Image behaves * like an empty %Image if an empty initializer list of @a filenames is * provided. And it behaves like a single status %Image if an initializer * list with only one element is passed. Status::normal also acts for * missing states. */ Image (const double x, const double y, const double width, const double height, const std::initializer_list& filenames, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a multi Status %Image with defined coordinates and * size from an image file. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param filenames Map of filenames for each Status. Supported file * types are: PNG. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). * * Creates an %Image with visual contents for each Widget Status as * defined by @a filenames. The %Image behaves like an empty %Image if an * empty map is provided. Otherwise at least an image for Status::normal * should be provided to behave at least like a single status %Image. * Status::normal also acts for missing states. */ Image (const double x, const double y, const double width, const double height, const std::map& filenames, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); virtual ~Image(); /** * @brief Creates a clone of the %Image. * @return Pointer to the new %Image. * * Creates a clone of this %Image by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %Image. * @param that Other %Image. * * Copies all properties from another %Image. But NOT its linkage. */ void copy (const Image* that); /** * @brief Clears all visual content. */ virtual void clear (); /** * @brief Clears the visual content for a status. * @param status Status. */ virtual void clear (const BStyles::Status status); /** * @brief Optimizes the object extends. * * Resizes the %Image to fit to the visual content for the present * Status. Resizes to the visual content extends of Status::normal if no * visual content for the present status is defined. Resizes to (0, 0) if * neither the visual content for the present status nor the visual * content for Status::normal is defined. */ virtual void resize () override; /** * @brief Resizes the object extends. * @param width New object width. * @param height New object height. */ virtual void resize (const double width, const double height) override; /** * @brief Resizes the object extends. * @param extends New object extends. */ virtual void resize (const BUtilities::Point<> extends) override; /** * @brief Creates an empty image. * @param status Widget status for the image to be created. */ virtual void createImage (const BStyles::Status status); /** * @brief Loads an image from a Cairo surface or an image file. * @param status Widget status for the image to be loaded. * @param surface Cairo surface with the image. */ virtual void loadImage (const BStyles::Status status, cairo_surface_t* surface); /** * @brief Loads an image from a Cairo surface or an image file. * @param status Widget status for the image to be loaded. * @param filename Image file name. */ virtual void loadImage (const BStyles::Status status, const std::string& filename); /** * @brief Access to the Cairo image surface. * @param status Widget status. * @return Pointer to the Cairo surface. */ cairo_surface_t* getImageSurface (const BStyles::Status status); protected: /** * @brief Unclipped draw an %Image to the surface. */ virtual void draw () override; /** * @brief Clipped draw an %Image to the surface. * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped draw an %Image to the surface. * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline Image::Image () : Image (0.0, 0.0, BWIDGETS_DEFAULT_IMAGE_WIDTH, BWIDGETS_DEFAULT_IMAGE_HEIGHT) { } inline Image::Image (const uint32_t urid, const std::string& title) : Widget (0.0, 0.0, BWIDGETS_DEFAULT_IMAGE_WIDTH, BWIDGETS_DEFAULT_IMAGE_HEIGHT, urid, title), imageSurfaces_() { } inline Image::Image (const double x, const double y, const double width, const double height, uint32_t urid, std::string title) : Widget (x, y, width, height, urid, title), imageSurfaces_() { } inline Image::Image (const double x, const double y, const double width, const double height, cairo_surface_t* surface, uint32_t urid, std::string title) : Widget (x, y, width, height, urid, title), imageSurfaces_() { loadImage (BStyles::Status::normal, surface); } inline Image::Image (const double x, const double y, const double width, const double height, const std::string& filename, uint32_t urid, std::string title) : Image (x, y, width, height, urid, title) { loadImage (BStyles::Status::normal, filename); } inline Image::Image (const double x, const double y, const double width, const double height, const std::initializer_list& surfaces, uint32_t urid, std::string title) : Image (x, y, width, height, urid, title) { size_t i = 0; for (cairo_surface_t* s : surfaces) { loadImage (BStyles::Status (i), s); ++i; } } inline Image::Image (const double x, const double y, const double width, const double height, const std::map& surfaces, uint32_t urid, std::string title) : Image (x, y, width, height, urid, title) { for (std::map::const_reference s : surfaces) loadImage (s.first, s.second); } inline Image::Image (const double x, const double y, const double width, const double height, const std::initializer_list& filenames, uint32_t urid, std::string title) : Image (x, y, width, height, urid, title) { size_t i = 0; for (const std::string& f : filenames) { loadImage (BStyles::Status (i), f); ++i; } } inline Image::Image (const double x, const double y, const double width, const double height, const std::map& filenames, uint32_t urid, std::string title) : Image (x, y, width, height, urid, title) { for (std::map::const_reference f : filenames) loadImage (f.first, f.second); } inline Image::~Image () { while (!imageSurfaces_.empty()) { std::map::iterator it = imageSurfaces_.begin(); if (it->second && (cairo_surface_status(it->second) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (it->second); imageSurfaces_.erase (it); } } inline Widget* Image::clone () const { Widget* f = new Image (urid_, title_); f->copy (this); return f; } inline void Image::copy (const Image* that) { clear(); for (std::map::const_reference t : that->imageSurfaces_) loadImage (t.first, t.second); Widget::copy (that); } inline void Image::clear() { while (!imageSurfaces_.empty()) { std::map::iterator it = imageSurfaces_.begin(); if (it->second && (cairo_surface_status(it->second) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (it->second); imageSurfaces_.erase (it); } update(); } inline void Image::resize () { // Get surface extends for the present Status BUtilities::Point<> contExt = {0.0, 0.0}; if (!imageSurfaces_.empty()) { std::map::iterator it = imageSurfaces_.find (getStatus()); if (it == imageSurfaces_.end()) it = imageSurfaces_.find (BStyles::Status::normal); // Fallback if (it != imageSurfaces_.end()) { cairo_surface_t* stateSurface = it->second; if (stateSurface && (cairo_surface_status (stateSurface) == CAIRO_STATUS_SUCCESS)) { contExt = BUtilities::Point<> (cairo_image_surface_get_width (stateSurface), cairo_image_surface_get_height (stateSurface)) + BUtilities::Point<> (2.0 * getXOffset(), 2.0 * getYOffset()); } } } // Or use embedded widgets size, if bigger for (Linkable* l : children_) { Widget* w = dynamic_cast(l); if (!w) continue; if (w->getPosition ().x + w->getWidth () > contExt.x) contExt.x = w->getPosition ().x + w->getWidth(); if (w->getPosition ().y + w->getHeight () > contExt.y) contExt.y = w->getPosition ().y + w->getHeight(); } resize (contExt); } inline void Image::resize (const double width, const double height) { resize (BUtilities::Point<> (width, height)); } inline void Image::resize (const BUtilities::Point<> extends) { Widget::resize (extends); } inline void Image::clear (const BStyles::Status status) { std::map::iterator it = imageSurfaces_.find (status); if (it != imageSurfaces_.end()) { if (it->second && (cairo_surface_status(it->second) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (it->second); imageSurfaces_.erase (it); if (status == getStatus()) update(); } } inline void Image::createImage (const BStyles::Status status) { clear (status); imageSurfaces_[status] = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, getEffectiveWidth(), getEffectiveHeight()); update (); } inline void Image::loadImage (const BStyles::Status status, cairo_surface_t* surface) { clear (status); imageSurfaces_[status] = cairoplus_image_surface_clone_from_image_surface (surface); update (); } inline void Image::loadImage (const BStyles::Status status, const std::string& filename) { clear (status); imageSurfaces_[status] = cairo_image_surface_create_from_png (filename.c_str()); update (); } inline cairo_surface_t* Image::getImageSurface (const BStyles::Status status) { return imageSurfaces_[status]; } inline void Image::draw () { draw (0, 0, getWidth(), getHeight()); } inline void Image::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void Image::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; if ((getWidth () >= 1) && (getHeight () >= 1)) { // Draw super class widget elements first Widget::draw (area); double w = getEffectiveWidth (); double h = getEffectiveHeight (); if (!imageSurfaces_.empty()) { std::map::iterator it = imageSurfaces_.find (getStatus()); if (it == imageSurfaces_.end()) it = imageSurfaces_.find (BStyles::Status::normal); // Fallback if (it != imageSurfaces_.end()) { cairo_surface_t* stateSurface = it->second; if (stateSurface && (cairo_surface_status (stateSurface) == CAIRO_STATUS_SUCCESS) && (w > 0) && (h > 0)) { cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); //TODO also clip to inner borders double oriw = cairo_image_surface_get_width (stateSurface); double orih = cairo_image_surface_get_height (stateSurface); double sz = ((w / oriw < h / orih) ? (w / oriw) : (h / orih)); double x0 = getXOffset () + w / 2 - oriw * sz / 2; double y0 = getYOffset () + h / 2 - orih * sz / 2; cairo_translate (cr, x0, y0); cairo_scale (cr, sz, sz); cairo_set_source_surface (cr, stateSurface, 0, 0); cairo_paint (cr); } cairo_destroy (cr); } } } } } } #endif /* BWIDGETS_IMAGE_HPP_ */ src/BWidgets/BWidgets/ImageButton.hpp000066400000000000000000000314501515163050000200130ustar00rootroot00000000000000/* ImageButton.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_IMAGEBUTTON_HPP_ #define BWIDGETS_IMAGEBUTTON_HPP_ #include "Button.hpp" #include "Image.hpp" #ifndef BWIDGETS_DEFAULT_IMAGEBUTTON_WIDTH #define BWIDGETS_DEFAULT_IMAGEBUTTON_WIDTH BWIDGETS_DEFAULT_BUTTON_WIDTH #endif #ifndef BWIDGETS_DEFAULT_IMAGEBUTTON_HEIGHT #define BWIDGETS_DEFAULT_IMAGEBUTTON_HEIGHT BWIDGETS_DEFAULT_BUTTON_HEIGHT #endif namespace BWidgets { /** * @brief Composite Button Widget containing an Image. * * %ImageButton is a Button containing an Image. A %ImageButton changes its * Image status (and thus its visual content) in addition to the change of * its Border Color upon changing the condition. */ class ImageButton : public Button { public: Image image; /** * @brief Constructs a new %ImageButton object with default parameters. */ ImageButton (); /** * @brief Constructs a new %ImageButton object with default parameters. * @param URID URID. * @param title %Widget title. */ ImageButton (const uint32_t urid, const std::string& title); /** * @brief Creates a %ImageButton. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param surface Pointer to a Cairo surface. * @param toggleable Support of button toggling. * @param clicked Default click status. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ ImageButton (const double x, const double y, const double width, const double height, cairo_surface_t* surface, bool toggleable = false, bool clicked = false, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %ImageButton. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param filename Filename, supported file types are: PNG. * @param toggleable Support of button toggling. * @param clicked Default click status. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ ImageButton (const double x, const double y, const double width, const double height, const std::string& filename, bool toggleable = false, bool clicked = false, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %ImageButton. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param surfaces Initializer list of pointers to Cairo surfaces. * @param toggleable Support of button toggling. * @param clicked Default click status. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ ImageButton (const double x, const double y, const double width, const double height, const std::initializer_list& surfaces, bool toggleable = false, bool clicked = false, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %ImageButton. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param surfaces Map of pointer to Cairo surfaces for each Status. * @param toggleable Support of button toggling. * @param clicked Default click status. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ ImageButton (const double x, const double y, const double width, const double height, const std::map& surfaces, bool toggleable = false, bool clicked = false, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %ImageButton. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param filenames Initializer list of filenames. Supported file types are: PNG. * @param toggleable Support of button toggling. * @param clicked Default click status. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ ImageButton (const double x, const double y, const double width, const double height, const std::initializer_list& filenames, bool toggleable = false, bool clicked = false, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %ImageButton. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param surface Pointer to a Cairo surface. * @param toggleable Support of button toggling. * @param clicked Default click status. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ ImageButton (const double x, const double y, const double width, const double height, const std::map& filenames, bool toggleable = false, bool clicked = false, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %ImageButton. * @return Pointer to the new %ImageButton. * * Creates a clone of this %ImageButton by copying all properties. But NOT * its linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %ImageButton. * @param that Other %ImageButton. * * Copies all properties from another %ImageButton. But NOT its linkage. */ void copy (const ImageButton* that); /** * @brief Optimizes the widget extends. * * Firstly optimizes its image size. Then resizes the widget to include * all direct children (including the image) into the widget area. */ virtual void resize () override; /** * @brief Resizes the widget extends. * @param width New widget width. * @param height New widget height. */ virtual void resize (const double width, const double height) override; /** * @brief Resizes the widget extends. * @param extends New widget extends. */ virtual void resize (const BUtilities::Point<> extends) override; /** * @brief Method to be called following an object state change. */ virtual void update () override; }; inline ImageButton::ImageButton () : ImageButton (0.0, 0.0, BWIDGETS_DEFAULT_IMAGEBUTTON_WIDTH, BWIDGETS_DEFAULT_IMAGEBUTTON_HEIGHT, std::map(), false, false, BUTILITIES_URID_UNKNOWN_URID, "") { } inline ImageButton::ImageButton (const uint32_t urid, const std::string& title) : ImageButton (0.0, 0.0, BWIDGETS_DEFAULT_IMAGEBUTTON_WIDTH, BWIDGETS_DEFAULT_IMAGEBUTTON_HEIGHT, std::map(), false, false, urid, title) { } inline ImageButton::ImageButton (const double x, const double y, const double width, const double height, cairo_surface_t* surface, bool toggleable, bool clicked, uint32_t urid, std::string title) : Button (x, y, width, height, toggleable, clicked, urid, title), image (0, 0, width, height, surface, BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/image")) { image.setFocusable(false); image.setEventPassable (BEvents::Event::EventType::pointerFocusEvents | BEvents::Event::EventType::buttonPressEvent | BEvents::Event::EventType::buttonClickEvent); add (&image); image.moveTo (image.center(), image.middle()); } inline ImageButton::ImageButton (const double x, const double y, const double width, const double height, const std::string& filename, bool toggleable, bool clicked, uint32_t urid, std::string title) : Button (x, y, width, height, toggleable, clicked, urid, title), image (0, 0, width, height, filename, BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/image")) { image.setFocusable(false); image.setEventPassable (BEvents::Event::EventType::pointerFocusEvents | BEvents::Event::EventType::buttonPressEvent | BEvents::Event::EventType::buttonClickEvent); add (&image); image.moveTo (image.center(), image.middle()); } inline ImageButton::ImageButton (const double x, const double y, const double width, const double height, const std::initializer_list& surfaces, bool toggleable, bool clicked, uint32_t urid, std::string title) : Button (x, y, width, height, toggleable, clicked, urid, title), image (0, 0, width, height, surfaces, BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/image")) { image.setFocusable(false); image.setEventPassable (BEvents::Event::EventType::pointerFocusEvents | BEvents::Event::EventType::buttonPressEvent | BEvents::Event::EventType::buttonClickEvent); add (&image); image.moveTo (image.center(), image.middle()); } inline ImageButton::ImageButton (const double x, const double y, const double width, const double height, const std::map& surfaces, bool toggleable, bool clicked, uint32_t urid, std::string title) : Button (x, y, width, height, toggleable, clicked, urid, title), image (0, 0, width, height, surfaces, BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/image")) { image.setFocusable(false); image.setEventPassable (BEvents::Event::EventType::pointerFocusEvents | BEvents::Event::EventType::buttonPressEvent | BEvents::Event::EventType::buttonClickEvent); add (&image); image.moveTo (image.center(), image.middle()); } inline ImageButton::ImageButton (const double x, const double y, const double width, const double height, const std::initializer_list& filenames, bool toggleable, bool clicked, uint32_t urid, std::string title) : Button (x, y, width, height, toggleable, clicked, urid, title), image (0, 0, width, height, filenames, BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/image")) { image.setFocusable(false); image.setEventPassable (BEvents::Event::EventType::pointerFocusEvents | BEvents::Event::EventType::buttonPressEvent | BEvents::Event::EventType::buttonClickEvent); add (&image); image.moveTo (image.center(), image.middle()); } inline ImageButton::ImageButton (const double x, const double y, const double width, const double height, const std::map& filenames, bool toggleable, bool clicked, uint32_t urid, std::string title) : Button (x, y, width, height, toggleable, clicked, urid, title), image (0, 0, width, height, filenames, BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/image")) { image.setFocusable(false); image.setEventPassable (BEvents::Event::EventType::pointerFocusEvents | BEvents::Event::EventType::buttonPressEvent | BEvents::Event::EventType::buttonClickEvent); add (&image); image.moveTo (image.center(), image.middle()); } inline Widget* ImageButton::clone () const { Widget* f = new ImageButton (urid_, title_); f->copy (this); return f; } inline void ImageButton::copy (const ImageButton* that) { image.copy (&that->image); Button::copy (that); } inline void ImageButton::resize () { image.resize (); image.moveTo (getXOffset(), getYOffset()); Button::resize(); } inline void ImageButton::resize (const double width, const double height) { resize (BUtilities::Point<> (width, height)); } inline void ImageButton::resize (const BUtilities::Point<> extends) { Button::resize (extends); } inline void ImageButton::update () { image.setStatus (getValue() ? BStyles::Status::active : BStyles::Status::normal); image.resize (getEffectiveWidth(), getEffectiveHeight()); image.moveTo (image.center(), image.middle()); Button::update (); } } #endif /* BWIDGETS_IMAGEBUTTON_HPP_ */ src/BWidgets/BWidgets/ImageDial.hpp000066400000000000000000000435241515163050000174160ustar00rootroot00000000000000/* ImageDial.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_IMAGEDIAL_HPP_ #define BWIDGETS_IMAGEDIAL_HPP_ #include "ImageRadialMeter.hpp" #include "Supports/Clickable.hpp" #include "Supports/Draggable.hpp" #include "Supports/Scrollable.hpp" #include "Supports/KeyPressable.hpp" #include "../BEvents/WheelEvent.hpp" #include "../BEvents/KeyEvent.hpp" #ifndef BWIDGETS_DEFAULT_IMAGEDIAL_WIDTH #define BWIDGETS_DEFAULT_IMAGEDIAL_WIDTH BWIDGETS_DEFAULT_IMAGERADIALMETER_WIDTH #endif #ifndef BWIDGETS_DEFAULT_IMAGEDIAL_HEIGHT #define BWIDGETS_DEFAULT_IMAGEDIAL_HEIGHT BWIDGETS_DEFAULT_IMAGERADIALMETER_HEIGHT #endif namespace BWidgets { /** * @brief %ImageDial widget. * * %ImageDial is a Valueable widget derived from ImageRadialMeter. It displays * a value in a radial representation in the same way as ImageRadialMeter and * additionally supports user interaction via Clickable, Draggable, * Scrollable, and KeyPressable. */ class ImageDial : public ImageRadialMeter, public Clickable, public Draggable, public Scrollable, public KeyPressable { protected: bool fineTuned_; public: /** * @brief Constructs an empty %ImageDial object. * */ ImageDial (); /** * @brief Constructs an empty %ImageDial object. * @param URID URID. * @param title %Widget title. */ ImageDial (const uint32_t urid, const std::string& title); /** * @brief Creates a %ImageDial with default size. * @param staticImage Filename of the static passive content image. * @param staticAnchor Anchor point of the static active content which * also represents the center of rotation * @param staticMinAngle Angle for the min value. * @param staticMaxAngle Angle for the max value. * @param activeImage Optional, filename of the static active content * image. * @param activeAnchor Optional, anchor point of the static active * content which fits to center of rotation. * @param dynamicImage Optional, filename of the dynamic content image. * @param dynamicAnchor Optional, anchor point of the dynamic content * which fits to center of rotation. * @param value Optional, initial value. * @param min Optional, lower value limit. * @param max Optional, upper value limit. * @param step Optional, value increment steps. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). * * Note: It's mandatory to provide an image for the static passive content * @a staticImage (background, labels, ...) and its anchor points for the * min value and the max value. The image area of @a staticImage MUST * cover ALL possible positions of the static active content * @a activeImage and the dynamic content @a dynamicImage. */ ImageDial (const std::string staticImage, const BUtilities::Point<> staticAnchor, const double staticMinAngle, const double staticMaxAngle, std::string activeImage = "", BUtilities::Point<> activeAnchor = {0,0}, std::string dynamicImage = "", BUtilities::Point<> dynamicAnchor = {0,0}, double value = 0.0, double min = 0.0, double max = 1.0, double step = 0.0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %ImageDial. * @param x %ImageDial X origin coordinate. * @param y %ImageDial Y origin coordinate. * @param width %ImageDial width. * @param height %ImageDial height. * @param staticImage Filename of the static passive content image. * @param staticAnchor Anchor point of the static active content which * also represents the center of rotation * @param staticMinAngle Angle for the min value. * @param staticMaxAngle Angle for the max value. * @param activeImage Optional, filename of the static active content * image. * @param activeAnchor Optional, anchor point of the static active * content which fits to center of rotation. * @param dynamicImage Optional, filename of the dynamic content image. * @param dynamicAnchor Optional, anchor point of the dynamic content * which fits to center of rotation. * @param value Optional, initial value. * @param min Optional, lower value limit. * @param max Optional, upper value limit. * @param step Optional, value increment steps. * @param transferFunc Optinonal, function to transfer a value from an * external context to the internal context. * @param reTransferFunc Optinonal, function to transfer a value from the * internal context to an external context. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %ImageDial title (default = ""). * * Note: It's mandatory to provide an image for the static passive content * @a staticImage (background, labels, ...) and its anchor points for the * min value and the max value. The image area of @a staticImage MUST * cover ALL possible positions of the static active content * @a activeImage and the dynamic content @a dynamicImage. */ ImageDial (const double x, const double y, const double width, const double height, const std::string staticImage, const BUtilities::Point<> staticAnchor, const double staticMinAngle, const double staticMaxAngle, std::string activeImage = "", BUtilities::Point<> activeAnchor = {0,0}, std::string dynamicImage = "", BUtilities::Point<> dynamicAnchor = {0,0}, double value = 0.0, double min = 0.0, double max = 1.0, double step = 0.0, std::function transferFunc = ValueTransferable::noTransfer, std::function reTransferFunc = ValueTransferable::noTransfer, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %ImageDial. * @return Pointer to the new %ImageDial. * * Creates a clone of this %ImageDial by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %ImageDial. * @param that Other %ImageDial. * * Copies all properties from another %ImageDial. But NOT its linkage. */ void copy (const ImageDial* that); /** * @brief Sets the range step size. * @param step Step size. * * Also sets the number of sub steps to BWIDGETS_DEFAULT_NR_SUBSTEPS if * step size is 0.0. */ virtual void setStep (const double& step) override; /** * @brief Enters this %ImageDial. * * Activates this %ImageDial, takes over keyboard control, and calls to leave * all other widgets linked to the main Window to become the only entered * Widget. */ virtual void enter () override; /** * @brief Leaves this %ImageDial * * De-activates this %ImageDial and release keyboard conrol. */ virtual void leave () override; /** * @brief Method called when pointer button pressed. * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button pressed. Sets the value and calls the widget static * callback function. */ virtual void onButtonPressed (BEvents::Event* event) override; /** * @brief Method called upon pointer drag. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a pointer drag. Changes the value and calls the widget static callback * function. */ virtual void onPointerDragged (BEvents::Event* event) override; /** * @brief Method called upon (mouse) wheel scroll. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a (mouse) wheel scroll. Increases or decreases the value and calls the * widget static callback function. */ virtual void onWheelScrolled (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyPressEvent is * received. * @param event Passed Event. * * Overridable method called from the main window event scheduler if a * key is pressed. By default, it calls its static callback function. */ virtual void onKeyPressed (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyReleaseEvent is * received. * @param event Passed Event. * * Overridable method called from the main window event scheduler if a * key is released. By default, it calls its static callback function. */ virtual void onKeyReleased (BEvents::Event* event) override; }; inline ImageDial::ImageDial () : ImageDial (0.0, 0.0, BWIDGETS_DEFAULT_IMAGERADIALMETER_WIDTH, BWIDGETS_DEFAULT_IMAGERADIALMETER_HEIGHT, "", BUtilities::Point<>(0,0), 0.0, 2.0 * M_PI, "", BUtilities::Point<> (0,0), "", BUtilities::Point<> (0,0), 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, BUTILITIES_URID_UNKNOWN_URID, "") { } inline ImageDial::ImageDial (const uint32_t urid, const std::string& title) : ImageDial (0.0, 0.0, BWIDGETS_DEFAULT_IMAGERADIALMETER_WIDTH, BWIDGETS_DEFAULT_IMAGERADIALMETER_HEIGHT, "", BUtilities::Point<>(0,0), 0.0, 2.0 * M_PI, "", BUtilities::Point<> (0,0), "", BUtilities::Point<> (0,0), 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline ImageDial::ImageDial (const std::string staticImage, const BUtilities::Point<> staticAnchor, const double staticMinAngle, const double staticMaxAngle, std::string activeImage, BUtilities::Point<> activeAnchor, std::string dynamicImage, BUtilities::Point<> dynamicAnchor, double value, const double min, const double max, double step, uint32_t urid, std::string title) : ImageDial (0.0, 0.0, BWIDGETS_DEFAULT_IMAGERADIALMETER_WIDTH, BWIDGETS_DEFAULT_IMAGERADIALMETER_HEIGHT, staticImage, staticAnchor, staticMinAngle, staticMaxAngle, activeImage, activeAnchor, dynamicImage, dynamicAnchor, value, min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline ImageDial::ImageDial (const double x, const double y, const double width, const double height, const std::string staticImage, const BUtilities::Point<> staticAnchor, const double staticMinAngle, const double staticMaxAngle, std::string activeImage, BUtilities::Point<> activeAnchor, std::string dynamicImage, BUtilities::Point<> dynamicAnchor, double value, const double min, const double max, double step, std::function transferFunc, std::function reTransferFunc, uint32_t urid, std::string title) : ImageRadialMeter (x, y, width, height, staticImage, staticAnchor, staticMinAngle, staticMaxAngle, activeImage, activeAnchor, dynamicImage, dynamicAnchor, value, min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title), Clickable(), Draggable(), Scrollable(), KeyPressable(), fineTuned_(false) { setActivatable(true); setEnterable(true); setKeyPressable(true); grabDevice(BDevices::Keys(BDevices::Keys::KeyType::shiftL)); grabDevice(BDevices::Keys(BDevices::Keys::KeyType::shiftR)); if (step == 0.0) setNrSubs(BWIDGETS_DEFAULT_NR_SUBSTEPS); } inline Widget* ImageDial::clone () const { Widget* f = new ImageDial (urid_, title_); f->copy (this); return f; } inline void ImageDial::copy (const ImageDial* that) { fineTuned_ = that->fineTuned_; KeyPressable::operator=(*that); Scrollable::operator= (*that); Draggable::operator= (*that); Clickable::operator= (*that); ImageRadialMeter::copy (that); } inline void ImageDial::setStep (const double &step) { ValidatableRange::setStep(step); if (step == 0.0) setNrSubs(BWIDGETS_DEFAULT_NR_SUBSTEPS); } inline void ImageDial::enter () { if (isEnterable() && (!isEntered())) { grabDevice (BDevices::Keys()); Widget::enter(); } } inline void ImageDial::leave () { if (isEnterable() && isEntered()) { if (isDeviceGrabbed(BDevices::Keys())) freeDevice(BDevices::Keys ()); Widget::leave(); } } inline void ImageDial::onButtonPressed (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast (event); if (!pev) return; enter(); if (staticMinAngle_ != staticMaxAngle_) { const double x0 = getXOffset(); const double y0 = getYOffset(); const double w = getEffectiveWidth(); const double h = getEffectiveHeight(); const double ws = cairo_image_surface_get_width (staticImageSurface_); const double hs = cairo_image_surface_get_height (staticImageSurface_); if ((ws >= 1.0) && (hs >= 1.0) && (w >= 1) && (h >= 1)) { const double szs = ((w / ws < h / hs) ? (w / ws) : (h / hs)); const double xc = x0 + 0.5 * w - 0.5 * ws * szs + staticAnchor_.x * szs; const double yc = y0 + 0.5 * h - 0.5 * hs * szs + staticAnchor_.y * szs; const double r = sqrt (pow (pev->getPosition().x - xc, 2.0) + pow (pev->getPosition().y - yc, 2.0)); if (r >= 1.0) { double a = (pev->getPosition().y < yc ? 2.0 * M_PI - acos ((pev->getPosition().x - xc) / r) : acos ((pev->getPosition().x - xc) / r)); if (a < staticMinAngle_) a += 2.0 * M_PI; if (a > staticMaxAngle_) a -= 2.0 * M_PI; if ((a >= staticMinAngle_) && (a <= staticMaxAngle_)) { if (step_ < 0.0) a = staticMaxAngle_ - (a - staticMinAngle_); setValue (getValueFromRatio ((a - staticMinAngle_) / (staticMaxAngle_ - staticMinAngle_))); } } } } Clickable::onButtonPressed (event); } inline void ImageDial::onPointerDragged (BEvents::Event* event) { if (isClickable()) onButtonPressed (event); else { BEvents::PointerEvent* pev = dynamic_cast (event); if (!pev) return; enter(); const double w = getEffectiveWidth(); const double h = getEffectiveHeight(); const double r = 0.5 * std::min (w, h); if ((staticMinAngle_ != staticMaxAngle_) && (r >= 1.0)) { if (getStep() != 0.0) setValue (getValue() - pev->getDelta().y * (fineTuned_ ? getSubStep() : getStep())); else { const double step = (fineTuned_ ? 1.0 / ((static_cast(getNrSubs() + 1.0)) * ((staticMaxAngle_ - staticMinAngle_) * r)) : 1.0 / ((staticMaxAngle_ - staticMinAngle_) * r)); setValue (getValueFromRatio (getRatioFromValue(getValue()) - pev->getDelta().y * step)); } } } Draggable::onPointerDragged (event); } inline void ImageDial::onWheelScrolled (BEvents::Event* event) { BEvents::WheelEvent* wev = dynamic_cast (event); if (!wev) return; const double w = getEffectiveWidth(); const double h = getEffectiveHeight(); const double r = 0.5 * std::min (w, h); if ((staticMinAngle_ != staticMaxAngle_) && (r >= 1.0)) { if (getStep() != 0.0) setValue (getValue() + wev->getDelta().y * (fineTuned_ ? getSubStep() : getStep())); else { const double step = (fineTuned_ ? 1.0 / ((static_cast(getNrSubs() + 1.0)) * ((staticMaxAngle_ - staticMinAngle_) * r)) : 1.0 / ((staticMaxAngle_ - staticMinAngle_) * r)); setValue (getValueFromRatio (getRatioFromValue(getValue()) + wev->getDelta().y * step)); } } Scrollable::onWheelScrolled (event); } inline void ImageDial::onKeyPressed (BEvents::Event* event) { BEvents::KeyEvent* kev = dynamic_cast(event); if (!kev) return; if (kev->getWidget() != this) return; BDevices::Keys::KeyType key = static_cast(kev->getKey ()); switch (kev->getKey ()) { case BDevices::Keys::keyCode(BDevices::Keys::KeyType::shiftL): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::shiftR): fineTuned_ = true; break; case '-': case BDevices::Keys::keyCode(BDevices::Keys::KeyType::down): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::left): { BEvents::WheelEvent wev = BEvents::WheelEvent(this, BEvents::Event::EventType::wheelScrollEvent, 0.5 * getWidth(), 0.5 * getHeight(), 0, 1); onWheelScrolled(&wev); } break; case '+': case BDevices::Keys::keyCode(BDevices::Keys::KeyType::up): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::right): { BEvents::WheelEvent wev = BEvents::WheelEvent(this, BEvents::Event::EventType::wheelScrollEvent, 0.5 * getWidth(), 0.5 * getHeight(), 0, -1); onWheelScrolled(&wev); } break; case BDevices::Keys::keyCode(BDevices::Keys::KeyType::escape): leave(); break; default: break; } KeyPressable::onKeyPressed(event); } inline void ImageDial::onKeyReleased (BEvents::Event* event) { BEvents::KeyEvent* kev = dynamic_cast(event); if (!kev) return; if (kev->getWidget() != this) return; BDevices::Keys::KeyType key = static_cast(kev->getKey ()); switch (key) { case BDevices::Keys::KeyType::shiftL: case BDevices::Keys::KeyType::shiftR: fineTuned_ = false; break; default: break; } KeyPressable::onKeyReleased(event); } } #endif /* BWIDGETS_IMAGEDIAL_HPP_ */ src/BWidgets/BWidgets/ImageHMeter.hpp000066400000000000000000000426271515163050000177340ustar00rootroot00000000000000/* ImageHMeter.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_IMAGEHMETER_HPP_ #define BWIDGETS_IMAGEHMETER_HPP_ #include "Widget.hpp" #include "Label.hpp" #include "Supports/Validatable.hpp" #include "Supports/ValueableTyped.hpp" #include "Supports/ValidatableRange.hpp" #include "Supports/ValueTransferable.hpp" #include #include #ifndef BWIDGETS_DEFAULT_IMAGEHMETER_WIDTH #define BWIDGETS_DEFAULT_IMAGEHMETER_WIDTH 20.0 #endif #ifndef BWIDGETS_DEFAULT_IMAGEHMETER_HEIGHT #define BWIDGETS_DEFAULT_IMAGEHMETER_HEIGHT 80.0 #endif namespace BWidgets { /** * @brief %ImageHMeter widget. * * %ImageHMeter is a Valueable Widget and displays a value as a horizontal * meter based on images. The visual output is constructed using three * freely selectable images along the provided anchor points: * * static: All static elements in a passive state (background, labels, * scales, ...). * * active: All static elements in an active state (LEDs, ...). * * dynamic: The dymacic element (sliding contoller, ...). * * %ImageHMeter itself doesn't possess any user interaction. The value is * kept within a defined range and is displayed by the value-dependently * cropped active image and by the position of the dynamic image. * * Advanced settings allow an %ImageHMeter to display a value in a non-linear * manner (e.g. for levels and frequencies) using transfer functions and / or * to use non-line color gradients for display using gradient functions. */ class ImageHMeter : public Widget, public ValueableTyped, public ValidatableRange, public ValueTransferable { protected: std::pair, BUtilities::Point<>> staticAnchors_; BUtilities::Point<> activeAnchor_; BUtilities::Point<> dynamicAnchor_; cairo_surface_t* staticImageSurface_; cairo_surface_t* activeImageSurface_; cairo_surface_t* dynamicImageSurface_; public: /** * @brief Constructs an empty %ImageHMeter object. * */ ImageHMeter (); /** * @brief Constructs an empty %ImageHMeter object. * @param URID URID. * @param title %Widget title. */ ImageHMeter (const uint32_t urid, const std::string& title); /** * @brief Creates a %ImageHMeter with default size. * @param staticImage Filename of the static passive content image. * @param staticAnchors Anchor points of the static passive content * (std::pair of position for the min value and position of the max * value). * @param activeImage Optional, filename of the static active content * image. * @param activeAnchor Optional, anchor point of the static active * content which fits to the min value. * @param dynamicImage Optional, filename of the dynamic content image. * @param dynamicAnchor Optional, anchor point of the dynamic content * (position anchored along the min value to max value line). * @param value Optional, initial value. * @param min Optional, lower value limit. * @param max Optional, upper value limit. * @param step Optional, value increment steps. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). * * Note: It's mandatory to provide an image for the static passive content * @a staticImage (background, labels, ...) and its anchor points for the * min value and the max value. The image area of @a staticImage MUST * cover ALL possible positions of the static active content * @a activeImage and the dynamic content @a dynamicImage. */ ImageHMeter (const std::string staticImage, const std::pair, BUtilities::Point<>> staticAnchors, std::string activeImage = "", BUtilities::Point<> activeAnchor = {0,0}, std::string dynamicImage = "", BUtilities::Point<> dynamicAnchor = {0,0}, double value = 0.0, double min = 0.0, double max = 1.0, double step = 0.0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %ImageHMeter. * @param x %ImageHMeter X origin coordinate. * @param y %ImageHMeter Y origin coordinate. * @param width %ImageHMeter width. * @param height %ImageHMeter height. * @param staticImage Filename of the static passive content image. * @param staticAnchors Anchor points of the static passive content * (std::pair of position for the min value and position of the max * value). * @param activeImage Optional, filename of the static active content * image. * @param activeAnchor Optional, anchor point of the static active * content which fits to the min value. * @param dynamicImage Optional, filename of the dynamic content image. * @param dynamicAnchor Optional, anchor point of the dynamic content * (position anchored along the min value to max value line). * @param value Optional, initial value. * @param min Optional, lower value limit. * @param max Optional, upper value limit. * @param step Optional, value increment steps. * @param transferFunc Optinonal, function to transfer a value from an * external context to the internal context. * @param reTransferFunc Optinonal, function to transfer a value from the * internal context to an external context. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %ImageHMeter title (default = ""). * * Note: It's mandatory to provide an image for the static passive content * @a staticImage (background, labels, ...) and its anchor points for the * min value and the max value. The image area of @a staticImage MUST * cover ALL possible positions of the static active content * @a activeImage and the dynamic content @a dynamicImage. */ ImageHMeter (const double x, const double y, const double width, const double height, const std::string staticImage, const std::pair, BUtilities::Point<>> staticAnchors, std::string activeImage = "", BUtilities::Point<> activeAnchor = {0,0}, std::string dynamicImage = "", BUtilities::Point<> dynamicAnchor = {0,0}, double value = 0.0, double min = 0.0, double max = 1.0, double step = 0.0, std::function transferFunc = ValueTransferable::noTransfer, std::function reTransferFunc = ValueTransferable::noTransfer, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); virtual ~ImageHMeter(); /** * @brief Creates a clone of the %ImageHMeter. * @return Pointer to the new %ImageHMeter. * * Creates a clone of this %ImageHMeter by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %ImageHMeter. * @param that Other %ImageHMeter. * * Copies all properties from another %ImageHMeter. But NOT its linkage. */ void copy (const ImageHMeter* that); /** * @brief Optimizes the object extends. * * Resizes the widget to fit the static passive image. Resizes to (0, 0) * if no image is stored. */ virtual void resize () override; /** * @brief Resizes the object extends. * @param width New object width. * @param height New object height. */ virtual void resize (const double width, const double height) override; /** * @brief Resizes the object extends. * @param extends New object extends. */ virtual void resize (const BUtilities::Point<> extends) override; protected: /** * @brief Unclipped draw a %ImageHMeter to the surface. */ virtual void draw () override; /** * @brief Clipped draw a %ImageHMeter to the surface. * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped draw a %ImageHMeter to the surface. * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline ImageHMeter::ImageHMeter () : ImageHMeter (0.0, 0.0, BWIDGETS_DEFAULT_IMAGEHMETER_WIDTH, BWIDGETS_DEFAULT_IMAGEHMETER_HEIGHT, "", std::pair, BUtilities::Point<>> ({0,0}, {0,0}), "", BUtilities::Point<> (0,0), "", BUtilities::Point<> (0,0), 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, BUTILITIES_URID_UNKNOWN_URID, "") { } inline ImageHMeter::ImageHMeter (const uint32_t urid, const std::string& title) : ImageHMeter (0.0, 0.0, BWIDGETS_DEFAULT_IMAGEHMETER_WIDTH, BWIDGETS_DEFAULT_IMAGEHMETER_HEIGHT, "", std::pair, BUtilities::Point<>> ({0,0}, {0,0}), "", BUtilities::Point<> (0,0), "", BUtilities::Point<> (0,0), 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline ImageHMeter::ImageHMeter (const std::string staticImage, const std::pair, BUtilities::Point<>> staticAnchors, std::string activeImage, BUtilities::Point<> activeAnchor, std::string dynamicImage, BUtilities::Point<> dynamicAnchor, double value, const double min, const double max, double step, uint32_t urid, std::string title) : ImageHMeter (0.0, 0.0, BWIDGETS_DEFAULT_IMAGEHMETER_WIDTH, BWIDGETS_DEFAULT_IMAGEHMETER_HEIGHT, staticImage, staticAnchors, activeImage, activeAnchor, dynamicImage, dynamicAnchor, value, min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline ImageHMeter::ImageHMeter (const double x, const double y, const double width, const double height, const std::string staticImage, const std::pair, BUtilities::Point<>> staticAnchors, std::string activeImage, BUtilities::Point<> activeAnchor, std::string dynamicImage, BUtilities::Point<> dynamicAnchor, double value, const double min, const double max, double step, std::function transferFunc, std::function reTransferFunc, uint32_t urid, std::string title) : Widget (x, y, width, height, urid, title), ValueableTyped (value), ValidatableRange (min, max, step), ValueTransferable (transferFunc, reTransferFunc), staticAnchors_(staticAnchors), activeAnchor_(activeAnchor), dynamicAnchor_(dynamicAnchor), staticImageSurface_(staticImage != "" ? cairo_image_surface_create_from_png (staticImage.c_str()) : nullptr), activeImageSurface_(staticImage != "" ? cairo_image_surface_create_from_png (activeImage.c_str()) : nullptr), dynamicImageSurface_(staticImage != "" ? cairo_image_surface_create_from_png (dynamicImage.c_str()) : nullptr) { setFocusText([](const Widget* w) {return w->getTitle() + ": " + (dynamic_cast(w) ? std::to_string (dynamic_cast(w)->getValue()) : "");}); } inline ImageHMeter::~ImageHMeter() { if (staticImageSurface_ && (cairo_surface_status(staticImageSurface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (staticImageSurface_); if (activeImageSurface_ && (cairo_surface_status(activeImageSurface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (activeImageSurface_); if (dynamicImageSurface_ && (cairo_surface_status(dynamicImageSurface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (dynamicImageSurface_); } inline Widget* ImageHMeter::clone () const { Widget* f = new ImageHMeter (urid_, title_); f->copy (this); return f; } inline void ImageHMeter::copy (const ImageHMeter* that) { staticAnchors_ = that->staticAnchors_; activeAnchor_ = that->activeAnchor_; dynamicAnchor_ = that->dynamicAnchor_; if (staticImageSurface_ && (cairo_surface_status(staticImageSurface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (staticImageSurface_); staticImageSurface_ = cairoplus_image_surface_clone_from_image_surface (that->staticImageSurface_); if (activeImageSurface_ && (cairo_surface_status(activeImageSurface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (activeImageSurface_); activeImageSurface_ = cairoplus_image_surface_clone_from_image_surface (that->activeImageSurface_); if (dynamicImageSurface_ && (cairo_surface_status(dynamicImageSurface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (dynamicImageSurface_); dynamicImageSurface_ = cairoplus_image_surface_clone_from_image_surface (that->dynamicImageSurface_); ValueTransferable::operator= (*that); ValidatableRange::operator= (*that); ValueableTyped::operator= (*that); Widget::copy (that); } inline void ImageHMeter::resize () { BUtilities::Area<> a = (staticImageSurface_ && (cairo_surface_status(staticImageSurface_) == CAIRO_STATUS_SUCCESS) ? BUtilities::Area<> (0.0, 0.0, cairo_image_surface_get_width (staticImageSurface_) + 2.0 * getXOffset(), cairo_image_surface_get_height (staticImageSurface_) + 2.0 * getYOffset()) : BUtilities::Area<> ()); for (Linkable* l : children_) { Widget* w = dynamic_cast(l); if (w) a += w->getArea(); } resize (a.getExtends()); } inline void ImageHMeter::resize (const double width, const double height) { resize (BUtilities::Point<> (width, height)); } inline void ImageHMeter::resize (const BUtilities::Point<> extends) { Widget::resize (extends); } inline void ImageHMeter::draw () { draw (0, 0, getWidth(), getHeight()); } inline void ImageHMeter::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void ImageHMeter::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; // Draw super class widget elements first Widget::draw (area); // Draw only if minimum requirements satisfied if ((getHeight () >= 1) && (getWidth () >= 1) && (getMin() < getMax())) { cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); const double x0 = getXOffset(); const double y0 = getYOffset(); const double w = getEffectiveWidth(); const double h = getEffectiveHeight(); const double rval = getRatioFromValue (getValue()); const double ws = cairo_image_surface_get_width (staticImageSurface_); const double hs = cairo_image_surface_get_height (staticImageSurface_); if (staticImageSurface_ && (cairo_surface_status (staticImageSurface_) == CAIRO_STATUS_SUCCESS) && (ws >= 1.0) && (hs >= 1.0)) { const double szs = ((w / ws < h / hs) ? (w / ws) : (h / hs)); const double x0s = x0 + 0.5 * w - 0.5 * ws * szs; const double y0s = y0 + 0.5 * h - 0.5 * hs * szs; const BUtilities::Point<> anchorv = BUtilities::Point<> ( staticAnchors_.first != staticAnchors_.second ? staticAnchors_.first + (step_ >= 0.0 ? rval : 1.0 - rval) * (staticAnchors_.second - staticAnchors_.first) : staticAnchors_.first ); cairo_save (cr); cairo_translate(cr, x0s, y0s); cairo_scale (cr, szs, szs); cairo_set_source_surface(cr, staticImageSurface_, 0, 0); cairo_paint (cr); cairo_restore (cr); if (activeImageSurface_ && (cairo_surface_status (activeImageSurface_) == CAIRO_STATUS_SUCCESS)) { const double x0a = x0s + (staticAnchors_.first.x - activeAnchor_.x) * szs; const double y0a = y0s + (staticAnchors_.first.y - activeAnchor_.y) * szs; const double x0a0 = x0s + (step_ >= 0.0 ? staticAnchors_.first.x : anchorv.x) * szs; const double x0av = x0s + (step_ >= 0.0 ? anchorv.x : staticAnchors_.second.x) * szs; cairo_save (cr); cairo_rectangle (cr, x0a0, y0, x0av - x0a0, h); cairo_translate(cr, x0a, y0a); cairo_scale (cr, szs, szs); cairo_set_source_surface(cr, activeImageSurface_, 0, 0); cairo_set_line_width (cr, 0.0); cairo_fill (cr); cairo_restore (cr); } if (dynamicImageSurface_ && (cairo_surface_status (dynamicImageSurface_) == CAIRO_STATUS_SUCCESS)) { const double x0d = x0s + (anchorv.x - dynamicAnchor_.x) * szs; const double y0d = y0s + (anchorv.y - dynamicAnchor_.y) * szs; cairo_save (cr); cairo_translate(cr, x0d, y0d); cairo_scale (cr, szs, szs); cairo_set_source_surface(cr, dynamicImageSurface_, 0, 0); cairo_paint (cr); cairo_restore (cr); } } } cairo_destroy (cr); } } } #endif /* BWIDGETS_IMAGEHMETER_HPP_ */ src/BWidgets/BWidgets/ImageHSlider.hpp000066400000000000000000000437231515163050000201000ustar00rootroot00000000000000/* ImageHSlider.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_IMAGEHSLIDER_HPP_ #define BWIDGETS_IMAGEHSLIDER_HPP_ #include "ImageHMeter.hpp" #include "Supports/Clickable.hpp" #include "Supports/Draggable.hpp" #include "Supports/Scrollable.hpp" #include "Supports/KeyPressable.hpp" #include "../BEvents/WheelEvent.hpp" #include "../BEvents/KeyEvent.hpp" #ifndef BWIDGETS_DEFAULT_IMAGEHSLIDER_WIDTH #define BWIDGETS_DEFAULT_IMAGEHSLIDER_WIDTH BWIDGETS_DEFAULT_IMAGEHMETER_WIDTH #endif #ifndef BWIDGETS_DEFAULT_IMAGEHSLIDER_HEIGHT #define BWIDGETS_DEFAULT_IMAGEHSLIDER_HEIGHT BWIDGETS_DEFAULT_IMAGEHMETER_HEIGHT #endif namespace BWidgets { /** * @brief %ImageHSlider widget. * * %ImageHSlider is a Valueable widget derived from ImageHMeter. It displays * a value as a horizontal scale in the same way as ImageHMeter and * additionally supports user interaction via Clickable, Draggable, * Scrollable, and KeyPressable. */ class ImageHSlider : public ImageHMeter, public Clickable, public Draggable, public Scrollable, public KeyPressable { protected: bool fineTuned_; public: /** * @brief Constructs an empty %ImageHSlider object. * */ ImageHSlider (); /** * @brief Constructs an empty %ImageHSlider object. * @param URID URID. * @param title %Widget title. */ ImageHSlider (const uint32_t urid, const std::string& title); /** * @brief Creates a %ImageHSlider with default size. * @param staticImage Filename of the static passive content image. * @param staticAnchors Anchor points of the static passive content * (std::pair of position for the min value and position of the max * value). * @param activeImage Optional, filename of the static active content * image. * @param activeAnchor Optional, anchor point of the static active * content which fits to the min value. * @param dynamicImage Optional, filename of the dynamic content image. * @param dynamicAnchor Optional, anchor point of the dynamic content * (position anchored along the min value to max value line). * @param value Optional, initial value. * @param min Optional, lower value limit. * @param max Optional, upper value limit. * @param step Optional, value increment steps. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). * * Note: It's mandatory to provide an image for the static passive content * @a staticImage (background, labels, ...) and its anchor points for the * min value and the max value. The image area of @a staticImage MUST * cover ALL possible positions of the static active content * @a activeImage and the dynamic content @a dynamicImage. */ ImageHSlider (const std::string staticImage, const std::pair, BUtilities::Point<>> staticAnchors, std::string activeImage = "", BUtilities::Point<> activeAnchor = {0,0}, std::string dynamicImage = "", BUtilities::Point<> dynamicAnchor = {0,0}, double value = 0.0, double min = 0.0, double max = 1.0, double step = 0.0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %ImageHSlider. * @param x %ImageHSlider X origin coordinate. * @param y %ImageHSlider Y origin coordinate. * @param width %ImageHSlider width. * @param height %ImageHSlider height. * @param staticImage Filename of the static passive content image. * @param staticAnchors Anchor points of the static passive content * (std::pair of position for the min value and position of the max * value). * @param activeImage Optional, filename of the static active content * image. * @param activeAnchor Optional, anchor point of the static active * content which fits to the min value. * @param dynamicImage Optional, filename of the dynamic content image. * @param dynamicAnchor Optional, anchor point of the dynamic content * (position anchored along the min value to max value line). * @param value Optional, initial value. * @param min Optional, lower value limit. * @param max Optional, upper value limit. * @param step Optional, value increment steps. * @param transferFunc Optinonal, function to transfer a value from an * external context to the internal context. * @param reTransferFunc Optinonal, function to transfer a value from the * internal context to an external context. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %ImageHSlider title (default = ""). * * Note: It's mandatory to provide an image for the static passive content * @a staticImage (background, labels, ...) and its anchor points for the * min value and the max value. The image area of @a staticImage MUST * cover ALL possible positions of the static active content * @a activeImage and the dynamic content @a dynamicImage. */ ImageHSlider (const double x, const double y, const double width, const double height, const std::string staticImage, const std::pair, BUtilities::Point<>> staticAnchors, std::string activeImage = "", BUtilities::Point<> activeAnchor = {0,0}, std::string dynamicImage = "", BUtilities::Point<> dynamicAnchor = {0,0}, double value = 0.0, double min = 0.0, double max = 1.0, double step = 0.0, std::function transferFunc = ValueTransferable::noTransfer, std::function reTransferFunc = ValueTransferable::noTransfer, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %ImageHSlider. * @return Pointer to the new %ImageHSlider. * * Creates a clone of this %ImageHSlider by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %ImageHSlider. * @param that Other %ImageHSlider. * * Copies all properties from another %ImageHSlider. But NOT its linkage. */ void copy (const ImageHSlider* that); /** * @brief Sets the range step size. * @param step Step size. * * Also sets the number of sub steps to BWIDGETS_DEFAULT_NR_SUBSTEPS if * step size is 0.0. */ virtual void setStep (const double& step) override; /** * @brief Enters this %ImageHSlider. * * Activates this %ImageHSlider, takes over keyboard control, and calls to leave * all other widgets linked to the main Window to become the only entered * Widget. */ virtual void enter () override; /** * @brief Leaves this %ImageHSlider * * De-activates this %ImageHSlider and release keyboard conrol. */ virtual void leave () override; /** * @brief Method called when pointer button pressed. * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button pressed. Sets the value and calls the widget static * callback function. */ virtual void onButtonPressed (BEvents::Event* event) override; /** * @brief Method called upon pointer drag. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a pointer drag. Changes the value and calls the widget static callback * function. */ virtual void onPointerDragged (BEvents::Event* event) override; /** * @brief Method called upon (mouse) wheel scroll. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a (mouse) wheel scroll. Increases or decreases the value and calls the * widget static callback function. */ virtual void onWheelScrolled (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyPressEvent is * received. * @param event Passed Event. * * Overridable method called from the main window event scheduler if a * key is pressed. By default, it calls its static callback function. */ virtual void onKeyPressed (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyReleaseEvent is * received. * @param event Passed Event. * * Overridable method called from the main window event scheduler if a * key is released. By default, it calls its static callback function. */ virtual void onKeyReleased (BEvents::Event* event) override; }; inline ImageHSlider::ImageHSlider () : ImageHSlider (0.0, 0.0, BWIDGETS_DEFAULT_IMAGEHSLIDER_WIDTH, BWIDGETS_DEFAULT_IMAGEHSLIDER_HEIGHT, "", std::pair, BUtilities::Point<>> ({0,0}, {0,0}), "", BUtilities::Point<> (0,0), "", BUtilities::Point<> (0,0), 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, BUTILITIES_URID_UNKNOWN_URID, "") { } inline ImageHSlider::ImageHSlider (const uint32_t urid, const std::string& title) : ImageHSlider (0.0, 0.0, BWIDGETS_DEFAULT_IMAGEHSLIDER_WIDTH, BWIDGETS_DEFAULT_IMAGEHSLIDER_HEIGHT, "", std::pair, BUtilities::Point<>> ({0,0}, {0,0}), "", BUtilities::Point<> (0,0), "", BUtilities::Point<> (0,0), 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline ImageHSlider::ImageHSlider (const std::string staticImage, const std::pair, BUtilities::Point<>> staticAnchors, std::string activeImage, BUtilities::Point<> activeAnchor, std::string dynamicImage, BUtilities::Point<> dynamicAnchor, double value, const double min, const double max, double step, uint32_t urid, std::string title) : ImageHSlider (0.0, 0.0, BWIDGETS_DEFAULT_IMAGEHSLIDER_WIDTH, BWIDGETS_DEFAULT_IMAGEHSLIDER_HEIGHT, staticImage, staticAnchors, activeImage, activeAnchor, dynamicImage, dynamicAnchor, value, min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline ImageHSlider::ImageHSlider (const double x, const double y, const double width, const double height, const std::string staticImage, const std::pair, BUtilities::Point<>> staticAnchors, std::string activeImage, BUtilities::Point<> activeAnchor, std::string dynamicImage, BUtilities::Point<> dynamicAnchor, double value, const double min, const double max, double step, std::function transferFunc, std::function reTransferFunc, uint32_t urid, std::string title) : ImageHMeter (x, y, width, height, staticImage, staticAnchors, activeImage, activeAnchor, dynamicImage, dynamicAnchor, value, min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title), Clickable(), Draggable(), Scrollable(), KeyPressable(), fineTuned_(false) { setActivatable(true); setEnterable(true); setKeyPressable(true); grabDevice(BDevices::Keys(BDevices::Keys::KeyType::shiftL)); grabDevice(BDevices::Keys(BDevices::Keys::KeyType::shiftR)); if (step == 0.0) setNrSubs(BWIDGETS_DEFAULT_NR_SUBSTEPS); } inline Widget* ImageHSlider::clone () const { Widget* f = new ImageHSlider (urid_, title_); f->copy (this); return f; } inline void ImageHSlider::copy (const ImageHSlider* that) { fineTuned_ = that->fineTuned_; KeyPressable::operator=(*that); Scrollable::operator= (*that); Draggable::operator= (*that); Clickable::operator= (*that); ImageHMeter::copy (that); } inline void ImageHSlider::setStep (const double &step) { ValidatableRange::setStep(step); if (step == 0.0) setNrSubs(BWIDGETS_DEFAULT_NR_SUBSTEPS); } inline void ImageHSlider::enter () { if (isEnterable() && (!isEntered())) { grabDevice (BDevices::Keys()); Widget::enter(); } } inline void ImageHSlider::leave () { if (isEnterable() && isEntered()) { if (isDeviceGrabbed(BDevices::Keys())) freeDevice(BDevices::Keys ()); Widget::leave(); } } inline void ImageHSlider::onButtonPressed (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast (event); if (!pev) return; enter(); if (staticAnchors_.first.x != staticAnchors_.second.x) { const double x0 = getXOffset(); const double w = getEffectiveWidth(); const double h = getEffectiveHeight(); const double ws = cairo_image_surface_get_width (staticImageSurface_); const double hs = cairo_image_surface_get_height (staticImageSurface_); if ((ws >= 1.0) && (hs >= 1.0) && (w >= 1) && (h >= 1)) { const double szs = ((w / ws < h / hs) ? (w / ws) : (h / hs)); const double x0s = x0 + 0.5 * w - 0.5 * ws * szs; if (step_ >= 0) { setValue (getValueFromRatio ((pev->getPosition().x - x0s - staticAnchors_.first.x * szs) / ((staticAnchors_.second.x - staticAnchors_.first.x) * szs))); } else { setValue (getValueFromRatio (1.0 - (pev->getPosition().x - x0s - staticAnchors_.first.x * szs) / ((staticAnchors_.second.x - staticAnchors_.first.x) * szs))); } } } Clickable::onButtonPressed (event); } inline void ImageHSlider::onPointerDragged (BEvents::Event* event) { if (isClickable()) onButtonPressed (event); else { BEvents::PointerEvent* pev = dynamic_cast (event); if (!pev) return; enter(); if (staticAnchors_.first.x != staticAnchors_.second.x) { const double w = getEffectiveWidth(); const double h = getEffectiveHeight(); const double ws = cairo_image_surface_get_width (staticImageSurface_); const double hs = cairo_image_surface_get_height (staticImageSurface_); if ((ws >= 1.0) && (hs >= 1.0) && (w >= 1) && (h >= 1)) { const double szs = ((w / ws < h / hs) ? (w / ws) : (h / hs)); if (getStep() != 0.0) setValue (getValue() - pev->getDelta().y * (fineTuned_ ? getSubStep() : getStep())); else { const double step = (fineTuned_ ? 1.0 / ((static_cast(getNrSubs() + 1.0)) * ((staticAnchors_.second.x - staticAnchors_.first.x) * szs)) : 1.0 / ((staticAnchors_.second.x - staticAnchors_.first.x) * szs)); setValue (getValueFromRatio (getRatioFromValue(getValue()) - pev->getDelta().y * step)); } } } } Draggable::onPointerDragged (event); } inline void ImageHSlider::onWheelScrolled (BEvents::Event* event) { BEvents::WheelEvent* wev = dynamic_cast (event); if (!wev) return; if (staticAnchors_.first.x != staticAnchors_.second.x) { const double w = getEffectiveWidth(); const double h = getEffectiveHeight(); const double ws = cairo_image_surface_get_width (staticImageSurface_); const double hs = cairo_image_surface_get_height (staticImageSurface_); if ((ws >= 1.0) && (hs >= 1.0) && (w >= 1) && (h >= 1)) { const double szs = ((w / ws < h / hs) ? (w / ws) : (h / hs)); if (getStep() != 0.0) setValue (getValue() + wev->getDelta().y * (fineTuned_ ? getSubStep() : getStep())); else { const double step = (fineTuned_ ? 1.0 / ((static_cast(getNrSubs() + 1.0)) * ((staticAnchors_.second.x - staticAnchors_.first.x) * szs)) : 1.0 / ((staticAnchors_.second.x - staticAnchors_.first.x) * szs)); setValue (getValueFromRatio (getRatioFromValue(getValue()) + wev->getDelta().y * step)); } } } Scrollable::onWheelScrolled (event); } inline void ImageHSlider::onKeyPressed (BEvents::Event* event) { BEvents::KeyEvent* kev = dynamic_cast(event); if (!kev) return; if (kev->getWidget() != this) return; BDevices::Keys::KeyType key = static_cast(kev->getKey ()); switch (kev->getKey ()) { case BDevices::Keys::keyCode(BDevices::Keys::KeyType::shiftL): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::shiftR): fineTuned_ = true; break; case '-': case BDevices::Keys::keyCode(BDevices::Keys::KeyType::down): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::left): { BEvents::WheelEvent wev = BEvents::WheelEvent(this, BEvents::Event::EventType::wheelScrollEvent, 0.5 * getWidth(), 0.5 * getHeight(), 0, 1); onWheelScrolled(&wev); } break; case '+': case BDevices::Keys::keyCode(BDevices::Keys::KeyType::up): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::right): { BEvents::WheelEvent wev = BEvents::WheelEvent(this, BEvents::Event::EventType::wheelScrollEvent, 0.5 * getWidth(), 0.5 * getHeight(), 0, -1); onWheelScrolled(&wev); } break; case BDevices::Keys::keyCode(BDevices::Keys::KeyType::escape): leave(); break; default: break; } KeyPressable::onKeyPressed(event); } inline void ImageHSlider::onKeyReleased (BEvents::Event* event) { BEvents::KeyEvent* kev = dynamic_cast(event); if (!kev) return; if (kev->getWidget() != this) return; BDevices::Keys::KeyType key = static_cast(kev->getKey ()); switch (key) { case BDevices::Keys::KeyType::shiftL: case BDevices::Keys::KeyType::shiftR: fineTuned_ = false; break; default: break; } KeyPressable::onKeyReleased(event); } } #endif /* BWIDGETS_IMAGEHSLIDER_HPP_ */ src/BWidgets/BWidgets/ImageRadialMeter.hpp000066400000000000000000000453521515163050000207370ustar00rootroot00000000000000/* ImageRadialMeter.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_IMAGERADIALMETER_HPP_ #define BWIDGETS_IMAGERADIALMETER_HPP_ #include "Widget.hpp" #include "Label.hpp" #include "Supports/Validatable.hpp" #include "Supports/ValueableTyped.hpp" #include "Supports/ValidatableRange.hpp" #include "Supports/ValueTransferable.hpp" #include #include #include #ifndef BWIDGETS_DEFAULT_IMAGERADIALMETER_WIDTH #define BWIDGETS_DEFAULT_IMAGERADIALMETER_WIDTH 60.0 #endif #ifndef BWIDGETS_DEFAULT_IMAGERADIALMETER_HEIGHT #define BWIDGETS_DEFAULT_IMAGERADIALMETER_HEIGHT 60.0 #endif namespace BWidgets { /** * @brief %ImageRadialMeter widget. * * %ImageRadialMeter is a Valueable Widget and displays a value as a radial * meter based on images. The visual output is constructed using three * freely selectable images by rotation around the provided anchor points: * * static: All static elements in a passive state (background, labels, * scales, ...). * * active: All static elements in an active state (LEDs, ...). * * dynamic: The dymacic element (sliding contoller, ...). * * %ImageRadialMeter itself doesn't possess any user interaction. The value is * kept within a defined range and is displayed by the value-dependently * cropped active image (pie sliced) and by the position of the dynamic image * (rotated around the anchor). * * Advanced settings allow an %ImageRadialMeter to display a value in a non-linear * manner (e.g. for levels and frequencies) using transfer functions and / or * to use non-line color gradients for display using gradient functions. */ class ImageRadialMeter : public Widget, public ValueableTyped, public ValidatableRange, public ValueTransferable { protected: BUtilities::Point<> staticAnchor_; double staticMinAngle_; double staticMaxAngle_; BUtilities::Point<> activeAnchor_; BUtilities::Point<> dynamicAnchor_; cairo_surface_t* staticImageSurface_; cairo_surface_t* activeImageSurface_; cairo_surface_t* dynamicImageSurface_; public: /** * @brief Constructs an empty %ImageRadialMeter object. * */ ImageRadialMeter (); /** * @brief Constructs an empty %ImageRadialMeter object. * @param URID URID. * @param title %Widget title. */ ImageRadialMeter (const uint32_t urid, const std::string& title); /** * @brief Creates a %ImageRadialMeter with default size. * @param staticImage Filename of the static passive content image. * @param staticAnchor Anchor point of the static active content which * also represents the center of rotation * @param staticMinAngle Angle for the min value. * @param staticMaxAngle Angle for the max value. * @param activeImage Optional, filename of the static active content * image. * @param activeAnchor Optional, anchor point of the static active * content which fits to center of rotation. * @param dynamicImage Optional, filename of the dynamic content image. * @param dynamicAnchor Optional, anchor point of the dynamic content * which fits to center of rotation. * @param value Optional, initial value. * @param min Optional, lower value limit. * @param max Optional, upper value limit. * @param step Optional, value increment steps. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). * * Note: It's mandatory to provide an image for the static passive content * @a staticImage (background, labels, ...) and its anchor points for the * min value and the max value. The image area of @a staticImage MUST * cover ALL possible positions of the static active content * @a activeImage and the dynamic content @a dynamicImage. */ ImageRadialMeter (const std::string staticImage, const BUtilities::Point<> staticAnchor, const double staticMinAngle, const double staticMaxAngle, std::string activeImage = "", BUtilities::Point<> activeAnchor = {0,0}, std::string dynamicImage = "", BUtilities::Point<> dynamicAnchor = {0,0}, double value = 0.0, double min = 0.0, double max = 1.0, double step = 0.0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %ImageRadialMeter. * @param x %ImageRadialMeter X origin coordinate. * @param y %ImageRadialMeter Y origin coordinate. * @param width %ImageRadialMeter width. * @param height %ImageRadialMeter height. * @param staticImage Filename of the static passive content image. * @param staticAnchor Anchor point of the static active content which * also represents the center of rotation * @param staticMinAngle Angle for the min value. * @param staticMaxAngle Angle for the max value. * @param activeImage Optional, filename of the static active content * image. * @param activeAnchor Optional, anchor point of the static active * content which fits to center of rotation. * @param dynamicImage Optional, filename of the dynamic content image. * @param dynamicAnchor Optional, anchor point of the dynamic content * which fits to center of rotation. * @param value Optional, initial value. * @param min Optional, lower value limit. * @param max Optional, upper value limit. * @param step Optional, value increment steps. * @param transferFunc Optinonal, function to transfer a value from an * external context to the internal context. * @param reTransferFunc Optinonal, function to transfer a value from the * internal context to an external context. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %ImageRadialMeter title (default = ""). * * Note: It's mandatory to provide an image for the static passive content * @a staticImage (background, labels, ...) and its anchor points for the * min value and the max value. The image area of @a staticImage MUST * cover ALL possible positions of the static active content * @a activeImage and the dynamic content @a dynamicImage. */ ImageRadialMeter (const double x, const double y, const double width, const double height, const std::string staticImage, const BUtilities::Point<> staticAnchor, const double staticMinAngle, const double staticMaxAngle, std::string activeImage = "", BUtilities::Point<> activeAnchor = {0,0}, std::string dynamicImage = "", BUtilities::Point<> dynamicAnchor = {0,0}, double value = 0.0, double min = 0.0, double max = 1.0, double step = 0.0, std::function transferFunc = ValueTransferable::noTransfer, std::function reTransferFunc = ValueTransferable::noTransfer, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); virtual ~ImageRadialMeter(); /** * @brief Creates a clone of the %ImageRadialMeter. * @return Pointer to the new %ImageRadialMeter. * * Creates a clone of this %ImageRadialMeter by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %ImageRadialMeter. * @param that Other %ImageRadialMeter. * * Copies all properties from another %ImageRadialMeter. But NOT its linkage. */ void copy (const ImageRadialMeter* that); /** * @brief Optimizes the object extends. * * Resizes the widget to fit the static passive image. Resizes to (0, 0) * if no image is stored. */ virtual void resize () override; /** * @brief Resizes the object extends. * @param width New object width. * @param height New object height. */ virtual void resize (const double width, const double height) override; /** * @brief Resizes the object extends. * @param extends New object extends. */ virtual void resize (const BUtilities::Point<> extends) override; protected: /** * @brief Unclipped draw a %ImageRadialMeter to the surface. */ virtual void draw () override; /** * @brief Clipped draw a %ImageRadialMeter to the surface. * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped draw a %ImageRadialMeter to the surface. * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline ImageRadialMeter::ImageRadialMeter () : ImageRadialMeter (0.0, 0.0, BWIDGETS_DEFAULT_IMAGERADIALMETER_WIDTH, BWIDGETS_DEFAULT_IMAGERADIALMETER_HEIGHT, "", BUtilities::Point<>(0,0), 0.0, 2.0 * M_PI, "", BUtilities::Point<> (0,0), "", BUtilities::Point<> (0,0), 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, BUTILITIES_URID_UNKNOWN_URID, "") { } inline ImageRadialMeter::ImageRadialMeter (const uint32_t urid, const std::string& title) : ImageRadialMeter (0.0, 0.0, BWIDGETS_DEFAULT_IMAGERADIALMETER_WIDTH, BWIDGETS_DEFAULT_IMAGERADIALMETER_HEIGHT, "", BUtilities::Point<>(0,0), 0.0, 2.0 * M_PI, "", BUtilities::Point<> (0,0), "", BUtilities::Point<> (0,0), 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline ImageRadialMeter::ImageRadialMeter (const std::string staticImage, const BUtilities::Point<> staticAnchor, const double staticMinAngle, const double staticMaxAngle, std::string activeImage, BUtilities::Point<> activeAnchor, std::string dynamicImage, BUtilities::Point<> dynamicAnchor, double value, const double min, const double max, double step, uint32_t urid, std::string title) : ImageRadialMeter (0.0, 0.0, BWIDGETS_DEFAULT_IMAGERADIALMETER_WIDTH, BWIDGETS_DEFAULT_IMAGERADIALMETER_HEIGHT, staticImage, staticAnchor, staticMinAngle, staticMaxAngle, activeImage, activeAnchor, dynamicImage, dynamicAnchor, value, min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline ImageRadialMeter::ImageRadialMeter (const double x, const double y, const double width, const double height, const std::string staticImage, const BUtilities::Point<> staticAnchor, const double staticMinAngle, const double staticMaxAngle, std::string activeImage, BUtilities::Point<> activeAnchor, std::string dynamicImage, BUtilities::Point<> dynamicAnchor, double value, const double min, const double max, double step, std::function transferFunc, std::function reTransferFunc, uint32_t urid, std::string title) : Widget (x, y, width, height, urid, title), ValueableTyped (value), ValidatableRange (min, max, step), ValueTransferable (transferFunc, reTransferFunc), staticAnchor_(staticAnchor), staticMinAngle_(staticMinAngle), staticMaxAngle_(staticMaxAngle), activeAnchor_(activeAnchor), dynamicAnchor_(dynamicAnchor), staticImageSurface_(staticImage != "" ? cairo_image_surface_create_from_png (staticImage.c_str()) : nullptr), activeImageSurface_(staticImage != "" ? cairo_image_surface_create_from_png (activeImage.c_str()) : nullptr), dynamicImageSurface_(staticImage != "" ? cairo_image_surface_create_from_png (dynamicImage.c_str()) : nullptr) { setFocusText([](const Widget* w) {return w->getTitle() + ": " + (dynamic_cast(w) ? std::to_string (dynamic_cast(w)->getValue()) : "");}); } inline ImageRadialMeter::~ImageRadialMeter() { if (staticImageSurface_ && (cairo_surface_status(staticImageSurface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (staticImageSurface_); if (activeImageSurface_ && (cairo_surface_status(activeImageSurface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (activeImageSurface_); if (dynamicImageSurface_ && (cairo_surface_status(dynamicImageSurface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (dynamicImageSurface_); } inline Widget* ImageRadialMeter::clone () const { Widget* f = new ImageRadialMeter (urid_, title_); f->copy (this); return f; } inline void ImageRadialMeter::copy (const ImageRadialMeter* that) { staticAnchor_ = that->staticAnchor_; staticMinAngle_ = that->staticMinAngle_; staticMaxAngle_ = that->staticMaxAngle_; activeAnchor_ = that->activeAnchor_; dynamicAnchor_ = that->dynamicAnchor_; if (staticImageSurface_ && (cairo_surface_status(staticImageSurface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (staticImageSurface_); staticImageSurface_ = cairoplus_image_surface_clone_from_image_surface (that->staticImageSurface_); if (activeImageSurface_ && (cairo_surface_status(activeImageSurface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (activeImageSurface_); activeImageSurface_ = cairoplus_image_surface_clone_from_image_surface (that->activeImageSurface_); if (dynamicImageSurface_ && (cairo_surface_status(dynamicImageSurface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (dynamicImageSurface_); dynamicImageSurface_ = cairoplus_image_surface_clone_from_image_surface (that->dynamicImageSurface_); ValueTransferable::operator= (*that); ValidatableRange::operator= (*that); ValueableTyped::operator= (*that); Widget::copy (that); } inline void ImageRadialMeter::resize () { BUtilities::Area<> a = (staticImageSurface_ && (cairo_surface_status(staticImageSurface_) == CAIRO_STATUS_SUCCESS) ? BUtilities::Area<> (0.0, 0.0, cairo_image_surface_get_width (staticImageSurface_) + 2.0 * getXOffset(), cairo_image_surface_get_height (staticImageSurface_) + 2.0 * getYOffset()) : BUtilities::Area<> ()); for (Linkable* l : children_) { Widget* w = dynamic_cast(l); if (w) a += w->getArea(); } resize (a.getExtends()); } inline void ImageRadialMeter::resize (const double width, const double height) { resize (BUtilities::Point<> (width, height)); } inline void ImageRadialMeter::resize (const BUtilities::Point<> extends) { Widget::resize (extends); } inline void ImageRadialMeter::draw () { draw (0, 0, getWidth(), getHeight()); } inline void ImageRadialMeter::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void ImageRadialMeter::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; // Draw super class widget elements first Widget::draw (area); // Draw only if minimum requirements satisfied if ((getHeight () >= 1) && (getWidth () >= 1) && (getMin() < getMax())) { cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); const double x0 = getXOffset(); const double y0 = getYOffset(); const double w = getEffectiveWidth(); const double h = getEffectiveHeight(); const double rval = getRatioFromValue (getValue()); const double ws = cairo_image_surface_get_width (staticImageSurface_); const double hs = cairo_image_surface_get_height (staticImageSurface_); if (staticImageSurface_ && (cairo_surface_status (staticImageSurface_) == CAIRO_STATUS_SUCCESS) && (ws >= 1.0) && (hs >= 1.0)) { const double szs = ((w / ws < h / hs) ? (w / ws) : (h / hs)); const double x0s = x0 + 0.5 * w - 0.5 * ws * szs; const double y0s = y0 + 0.5 * h - 0.5 * hs * szs; cairo_save (cr); cairo_translate(cr, x0s, y0s); cairo_scale (cr, szs, szs); cairo_set_source_surface(cr, staticImageSurface_, 0, 0); cairo_paint (cr); cairo_restore (cr); if (activeImageSurface_ && (cairo_surface_status (activeImageSurface_) == CAIRO_STATUS_SUCCESS)) { const double x0a = x0s + (staticAnchor_.x - activeAnchor_.x) * szs; const double y0a = y0s + (staticAnchor_.y - activeAnchor_.y) * szs; const double xca = x0a + activeAnchor_.x * szs; const double yca = y0a + activeAnchor_.y * szs; const double rad = ( xca > x0a + 0.5 * ws * szs ? ( yca > y0a + 0.5 * hs * szs ? sqrt (pow (xca - x0a, 2.0) + pow (yca - y0a, 2.0)) : sqrt (pow (xca - x0a, 2.0) + pow (yca - (y0a + hs * szs), 2.0)) ) : ( yca > y0a + 0.5 * hs * szs ? sqrt (pow (xca - (x0a + ws * szs), 2.0) + pow (yca - y0a, 2.0)) : sqrt (pow (xca - (x0a + ws * szs), 2.0) + pow (yca - (y0a + hs * szs), 2.0)) ) ); cairo_save (cr); cairo_move_to (cr, xca, yca); if (step_ >= 0) cairo_arc (cr, xca, yca, rad, staticMinAngle_, staticMinAngle_ + (staticMaxAngle_ - staticMinAngle_) * rval); else cairo_arc (cr, xca, yca, rad, staticMinAngle_ + (staticMaxAngle_ - staticMinAngle_) * (1.0 - rval), staticMaxAngle_); cairo_close_path (cr); cairo_translate(cr, x0a, y0a); cairo_scale (cr, szs, szs); cairo_set_source_surface(cr, activeImageSurface_, 0, 0); cairo_set_line_width (cr, 0.0); cairo_fill (cr); cairo_restore (cr); } if (dynamicImageSurface_ && (cairo_surface_status (dynamicImageSurface_) == CAIRO_STATUS_SUCCESS)) { const double ad = (staticMaxAngle_ - staticMinAngle_) * (step_ >= 0 ? rval : 1.0 - rval); cairo_save (cr); cairo_translate (cr, x0s + staticAnchor_.x * szs, y0s + staticAnchor_.y * szs); cairo_scale (cr, szs, szs); cairo_rotate (cr, ad); cairo_translate (cr, -dynamicAnchor_.x, -dynamicAnchor_.y); cairo_set_source_surface(cr, dynamicImageSurface_, 0, 0); cairo_paint (cr); cairo_restore (cr); } } } cairo_destroy (cr); } } } #endif /* BWIDGETS_IMAGERADIALMETER_HPP_ */ src/BWidgets/BWidgets/ImageVMeter.hpp000066400000000000000000000426311515163050000177450ustar00rootroot00000000000000/* ImageVMeter.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_IMAGEVMETER_HPP_ #define BWIDGETS_IMAGEVMETER_HPP_ #include "Widget.hpp" #include "Label.hpp" #include "Supports/Validatable.hpp" #include "Supports/ValueableTyped.hpp" #include "Supports/ValidatableRange.hpp" #include "Supports/ValueTransferable.hpp" #include #include #ifndef BWIDGETS_DEFAULT_IMAGEVMETER_WIDTH #define BWIDGETS_DEFAULT_IMAGEVMETER_WIDTH 20.0 #endif #ifndef BWIDGETS_DEFAULT_IMAGEVMETER_HEIGHT #define BWIDGETS_DEFAULT_IMAGEVMETER_HEIGHT 80.0 #endif namespace BWidgets { /** * @brief %ImageVMeter widget. * * %ImageVMeter is a Valueable Widget and displays a value as a vertical * meter based on images. The visual output is constructed using three * freely selectable images along the provided anchor points: * * static: All static elements in a passive state (background, labels, * scales, ...). * * active: All static elements in an active state (LEDs, ...). * * dynamic: The dymacic element (sliding contoller, ...). * * %ImageVMeter itself doesn't possess any user interaction. The value is * kept within a defined range and is displayed by the value-dependently * cropped active image and by the position of the dynamic image. * * Advanced settings allow an %ImageVMeter to display a value in a non-linear * manner (e.g. for levels and frequencies) using transfer functions and / or * to use non-line color gradients for display using gradient functions. */ class ImageVMeter : public Widget, public ValueableTyped, public ValidatableRange, public ValueTransferable { protected: std::pair, BUtilities::Point<>> staticAnchors_; BUtilities::Point<> activeAnchor_; BUtilities::Point<> dynamicAnchor_; cairo_surface_t* staticImageSurface_; cairo_surface_t* activeImageSurface_; cairo_surface_t* dynamicImageSurface_; public: /** * @brief Constructs an empty %ImageVMeter object. * */ ImageVMeter (); /** * @brief Constructs an empty %ImageVMeter object. * @param URID URID. * @param title %Widget title. */ ImageVMeter (const uint32_t urid, const std::string& title); /** * @brief Creates a %ImageVMeter with default size. * @param staticImage Filename of the static passive content image. * @param staticAnchors Anchor points of the static passive content * (std::pair of position for the min value and position of the max * value). * @param activeImage Optional, filename of the static active content * image. * @param activeAnchor Optional, anchor point of the static active * content which fits to the min value. * @param dynamicImage Optional, filename of the dynamic content image. * @param dynamicAnchor Optional, anchor point of the dynamic content * (position anchored along the min value to max value line). * @param value Optional, initial value. * @param min Optional, lower value limit. * @param max Optional, upper value limit. * @param step Optional, value increment steps. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). * * Note: It's mandatory to provide an image for the static passive content * @a staticImage (background, labels, ...) and its anchor points for the * min value and the max value. The image area of @a staticImage MUST * cover ALL possible positions of the static active content * @a activeImage and the dynamic content @a dynamicImage. */ ImageVMeter (const std::string staticImage, const std::pair, BUtilities::Point<>> staticAnchors, std::string activeImage = "", BUtilities::Point<> activeAnchor = {0,0}, std::string dynamicImage = "", BUtilities::Point<> dynamicAnchor = {0,0}, double value = 0.0, double min = 0.0, double max = 1.0, double step = 0.0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %ImageVMeter. * @param x %ImageVMeter X origin coordinate. * @param y %ImageVMeter Y origin coordinate. * @param width %ImageVMeter width. * @param height %ImageVMeter height. * @param staticImage Filename of the static passive content image. * @param staticAnchors Anchor points of the static passive content * (std::pair of position for the min value and position of the max * value). * @param activeImage Optional, filename of the static active content * image. * @param activeAnchor Optional, anchor point of the static active * content which fits to the min value. * @param dynamicImage Optional, filename of the dynamic content image. * @param dynamicAnchor Optional, anchor point of the dynamic content * (position anchored along the min value to max value line). * @param value Optional, initial value. * @param min Optional, lower value limit. * @param max Optional, upper value limit. * @param step Optional, value increment steps. * @param transferFunc Optinonal, function to transfer a value from an * external context to the internal context. * @param reTransferFunc Optinonal, function to transfer a value from the * internal context to an external context. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %ImageVMeter title (default = ""). * * Note: It's mandatory to provide an image for the static passive content * @a staticImage (background, labels, ...) and its anchor points for the * min value and the max value. The image area of @a staticImage MUST * cover ALL possible positions of the static active content * @a activeImage and the dynamic content @a dynamicImage. */ ImageVMeter (const double x, const double y, const double width, const double height, const std::string staticImage, const std::pair, BUtilities::Point<>> staticAnchors, std::string activeImage = "", BUtilities::Point<> activeAnchor = {0,0}, std::string dynamicImage = "", BUtilities::Point<> dynamicAnchor = {0,0}, double value = 0.0, double min = 0.0, double max = 1.0, double step = 0.0, std::function transferFunc = ValueTransferable::noTransfer, std::function reTransferFunc = ValueTransferable::noTransfer, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); virtual ~ImageVMeter(); /** * @brief Creates a clone of the %ImageVMeter. * @return Pointer to the new %ImageVMeter. * * Creates a clone of this %ImageVMeter by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %ImageVMeter. * @param that Other %ImageVMeter. * * Copies all properties from another %ImageVMeter. But NOT its linkage. */ void copy (const ImageVMeter* that); /** * @brief Optimizes the object extends. * * Resizes the widget to fit the static passive image. Resizes to (0, 0) * if no image is stored. */ virtual void resize () override; /** * @brief Resizes the object extends. * @param width New object width. * @param height New object height. */ virtual void resize (const double width, const double height) override; /** * @brief Resizes the object extends. * @param extends New object extends. */ virtual void resize (const BUtilities::Point<> extends) override; protected: /** * @brief Unclipped draw a %ImageVMeter to the surface. */ virtual void draw () override; /** * @brief Clipped draw a %ImageVMeter to the surface. * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped draw a %ImageVMeter to the surface. * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline ImageVMeter::ImageVMeter () : ImageVMeter (0.0, 0.0, BWIDGETS_DEFAULT_IMAGEVMETER_WIDTH, BWIDGETS_DEFAULT_IMAGEVMETER_HEIGHT, "", std::pair, BUtilities::Point<>> ({0,0}, {0,0}), "", BUtilities::Point<> (0,0), "", BUtilities::Point<> (0,0), 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, BUTILITIES_URID_UNKNOWN_URID, "") { } inline ImageVMeter::ImageVMeter (const uint32_t urid, const std::string& title) : ImageVMeter (0.0, 0.0, BWIDGETS_DEFAULT_IMAGEVMETER_WIDTH, BWIDGETS_DEFAULT_IMAGEVMETER_HEIGHT, "", std::pair, BUtilities::Point<>> ({0,0}, {0,0}), "", BUtilities::Point<> (0,0), "", BUtilities::Point<> (0,0), 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline ImageVMeter::ImageVMeter (const std::string staticImage, const std::pair, BUtilities::Point<>> staticAnchors, std::string activeImage, BUtilities::Point<> activeAnchor, std::string dynamicImage, BUtilities::Point<> dynamicAnchor, double value, const double min, const double max, double step, uint32_t urid, std::string title) : ImageVMeter (0.0, 0.0, BWIDGETS_DEFAULT_IMAGEVMETER_WIDTH, BWIDGETS_DEFAULT_IMAGEVMETER_HEIGHT, staticImage, staticAnchors, activeImage, activeAnchor, dynamicImage, dynamicAnchor, value, min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline ImageVMeter::ImageVMeter (const double x, const double y, const double width, const double height, const std::string staticImage, const std::pair, BUtilities::Point<>> staticAnchors, std::string activeImage, BUtilities::Point<> activeAnchor, std::string dynamicImage, BUtilities::Point<> dynamicAnchor, double value, const double min, const double max, double step, std::function transferFunc, std::function reTransferFunc, uint32_t urid, std::string title) : Widget (x, y, width, height, urid, title), ValueableTyped (value), ValidatableRange (min, max, step), ValueTransferable (transferFunc, reTransferFunc), staticAnchors_(staticAnchors), activeAnchor_(activeAnchor), dynamicAnchor_(dynamicAnchor), staticImageSurface_(staticImage != "" ? cairo_image_surface_create_from_png (staticImage.c_str()) : nullptr), activeImageSurface_(staticImage != "" ? cairo_image_surface_create_from_png (activeImage.c_str()) : nullptr), dynamicImageSurface_(staticImage != "" ? cairo_image_surface_create_from_png (dynamicImage.c_str()) : nullptr) { setFocusText([](const Widget* w) {return w->getTitle() + ": " + (dynamic_cast(w) ? std::to_string (dynamic_cast(w)->getValue()) : "");}); } inline ImageVMeter::~ImageVMeter() { if (staticImageSurface_ && (cairo_surface_status(staticImageSurface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (staticImageSurface_); if (activeImageSurface_ && (cairo_surface_status(activeImageSurface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (activeImageSurface_); if (dynamicImageSurface_ && (cairo_surface_status(dynamicImageSurface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (dynamicImageSurface_); } inline Widget* ImageVMeter::clone () const { Widget* f = new ImageVMeter (urid_, title_); f->copy (this); return f; } inline void ImageVMeter::copy (const ImageVMeter* that) { staticAnchors_ = that->staticAnchors_; activeAnchor_ = that->activeAnchor_; dynamicAnchor_ = that->dynamicAnchor_; if (staticImageSurface_ && (cairo_surface_status(staticImageSurface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (staticImageSurface_); staticImageSurface_ = cairoplus_image_surface_clone_from_image_surface (that->staticImageSurface_); if (activeImageSurface_ && (cairo_surface_status(activeImageSurface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (activeImageSurface_); activeImageSurface_ = cairoplus_image_surface_clone_from_image_surface (that->activeImageSurface_); if (dynamicImageSurface_ && (cairo_surface_status(dynamicImageSurface_) == CAIRO_STATUS_SUCCESS)) cairo_surface_destroy (dynamicImageSurface_); dynamicImageSurface_ = cairoplus_image_surface_clone_from_image_surface (that->dynamicImageSurface_); ValueTransferable::operator= (*that); ValidatableRange::operator= (*that); ValueableTyped::operator= (*that); Widget::copy (that); } inline void ImageVMeter::resize () { BUtilities::Area<> a = (staticImageSurface_ && (cairo_surface_status(staticImageSurface_) == CAIRO_STATUS_SUCCESS) ? BUtilities::Area<> (0.0, 0.0, cairo_image_surface_get_width (staticImageSurface_) + 2.0 * getXOffset(), cairo_image_surface_get_height (staticImageSurface_) + 2.0 * getYOffset()) : BUtilities::Area<> ()); for (Linkable* l : children_) { Widget* w = dynamic_cast(l); if (w) a += w->getArea(); } resize (a.getExtends()); } inline void ImageVMeter::resize (const double width, const double height) { resize (BUtilities::Point<> (width, height)); } inline void ImageVMeter::resize (const BUtilities::Point<> extends) { Widget::resize (extends); } inline void ImageVMeter::draw () { draw (0, 0, getWidth(), getHeight()); } inline void ImageVMeter::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void ImageVMeter::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; // Draw super class widget elements first Widget::draw (area); // Draw only if minimum requirements satisfied if ((getHeight () >= 1) && (getWidth () >= 1) && (getMin() < getMax())) { cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); const double x0 = getXOffset(); const double y0 = getYOffset(); const double w = getEffectiveWidth(); const double h = getEffectiveHeight(); const double rval = getRatioFromValue (getValue()); const double ws = cairo_image_surface_get_width (staticImageSurface_); const double hs = cairo_image_surface_get_height (staticImageSurface_); if (staticImageSurface_ && (cairo_surface_status (staticImageSurface_) == CAIRO_STATUS_SUCCESS) && (ws >= 1.0) && (hs >= 1.0)) { const double szs = ((w / ws < h / hs) ? (w / ws) : (h / hs)); const double x0s = x0 + 0.5 * w - 0.5 * ws * szs; const double y0s = y0 + 0.5 * h - 0.5 * hs * szs; const BUtilities::Point<> anchorv = BUtilities::Point<> ( staticAnchors_.first != staticAnchors_.second ? staticAnchors_.first + (step_ >= 0 ? rval : 1.0 - rval) * (staticAnchors_.second - staticAnchors_.first) : staticAnchors_.first ); cairo_save (cr); cairo_translate(cr, x0s, y0s); cairo_scale (cr, szs, szs); cairo_set_source_surface(cr, staticImageSurface_, 0, 0); cairo_paint (cr); cairo_restore (cr); if (activeImageSurface_ && (cairo_surface_status (activeImageSurface_) == CAIRO_STATUS_SUCCESS)) { const double x0a = x0s + (staticAnchors_.first.x - activeAnchor_.x) * szs; const double y0a = y0s + (staticAnchors_.first.y - activeAnchor_.y) * szs; const double y0a0 = y0s + (step_ >= 0 ? staticAnchors_.first.y : anchorv.y) * szs; const double y0av = y0s + (step_ >= 0 ? anchorv.y : staticAnchors_.second.y) * szs; cairo_save (cr); cairo_rectangle (cr, x0, y0a0, w, y0av - y0a0); cairo_translate(cr, x0a, y0a); cairo_scale (cr, szs, szs); cairo_set_source_surface(cr, activeImageSurface_, 0, 0); cairo_set_line_width (cr, 0.0); cairo_fill (cr); cairo_restore (cr); } if (dynamicImageSurface_ && (cairo_surface_status (dynamicImageSurface_) == CAIRO_STATUS_SUCCESS)) { const double x0d = x0s + (anchorv.x - dynamicAnchor_.x) * szs; const double y0d = y0s + (anchorv.y - dynamicAnchor_.y) * szs; cairo_save (cr); cairo_translate(cr, x0d, y0d); cairo_scale (cr, szs, szs); cairo_set_source_surface(cr, dynamicImageSurface_, 0, 0); cairo_paint (cr); cairo_restore (cr); } } } cairo_destroy (cr); } } } #endif /* BWIDGETS_IMAGEVMETER_HPP_ */ src/BWidgets/BWidgets/ImageVSlider.hpp000066400000000000000000000436531515163050000201200ustar00rootroot00000000000000/* ImageVSlider.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_IMAGEVSLIDER_HPP_ #define BWIDGETS_IMAGEVSLIDER_HPP_ #include "ImageVMeter.hpp" #include "Supports/Clickable.hpp" #include "Supports/Draggable.hpp" #include "Supports/Scrollable.hpp" #include "Supports/KeyPressable.hpp" #include "../BEvents/WheelEvent.hpp" #include "../BEvents/KeyEvent.hpp" #ifndef BWIDGETS_DEFAULT_IMAGEVSLIDER_WIDTH #define BWIDGETS_DEFAULT_IMAGEVSLIDER_WIDTH BWIDGETS_DEFAULT_IMAGEVMETER_WIDTH #endif #ifndef BWIDGETS_DEFAULT_IMAGEVSLIDER_HEIGHT #define BWIDGETS_DEFAULT_IMAGEVSLIDER_HEIGHT BWIDGETS_DEFAULT_IMAGEVMETER_HEIGHT #endif namespace BWidgets { /** * @brief %ImageVSlider widget. * * %ImageVSlider is a Valueable widget derived from ImageVMeter. It displays * a value as a vertical scale in the same way as ImageVMeter and * additionally supports user interaction via Clickable, Draggable, * Scrollable, and KeyPressable. */ class ImageVSlider : public ImageVMeter, public Clickable, public Draggable, public Scrollable, public KeyPressable { protected: bool fineTuned_; public: /** * @brief Constructs an empty %ImageVSlider object. * */ ImageVSlider (); /** * @brief Constructs an empty %ImageVSlider object. * @param URID URID. * @param title %Widget title. */ ImageVSlider (const uint32_t urid, const std::string& title); /** * @brief Creates a %ImageVSlider with default size. * @param staticImage Filename of the static passive content image. * @param staticAnchors Anchor points of the static passive content * (std::pair of position for the min value and position of the max * value). * @param activeImage Optional, filename of the static active content * image. * @param activeAnchor Optional, anchor point of the static active * content which fits to the min value. * @param dynamicImage Optional, filename of the dynamic content image. * @param dynamicAnchor Optional, anchor point of the dynamic content * (position anchored along the min value to max value line). * @param value Optional, initial value. * @param min Optional, lower value limit. * @param max Optional, upper value limit. * @param step Optional, value increment steps. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). * * Note: It's mandatory to provide an image for the static passive content * @a staticImage (background, labels, ...) and its anchor points for the * min value and the max value. The image area of @a staticImage MUST * cover ALL possible positions of the static active content * @a activeImage and the dynamic content @a dynamicImage. */ ImageVSlider (const std::string staticImage, const std::pair, BUtilities::Point<>> staticAnchors, std::string activeImage = "", BUtilities::Point<> activeAnchor = {0,0}, std::string dynamicImage = "", BUtilities::Point<> dynamicAnchor = {0,0}, double value = 0.0, double min = 0.0, double max = 1.0, double step = 0.0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %ImageVSlider. * @param x %ImageVSlider X origin coordinate. * @param y %ImageVSlider Y origin coordinate. * @param width %ImageVSlider width. * @param height %ImageVSlider height. * @param staticImage Filename of the static passive content image. * @param staticAnchors Anchor points of the static passive content * (std::pair of position for the min value and position of the max * value). * @param activeImage Optional, filename of the static active content * image. * @param activeAnchor Optional, anchor point of the static active * content which fits to the min value. * @param dynamicImage Optional, filename of the dynamic content image. * @param dynamicAnchor Optional, anchor point of the dynamic content * (position anchored along the min value to max value line). * @param value Optional, initial value. * @param min Optional, lower value limit. * @param max Optional, upper value limit. * @param step Optional, value increment steps. * @param transferFunc Optinonal, function to transfer a value from an * external context to the internal context. * @param reTransferFunc Optinonal, function to transfer a value from the * internal context to an external context. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %ImageVSlider title (default = ""). * * Note: It's mandatory to provide an image for the static passive content * @a staticImage (background, labels, ...) and its anchor points for the * min value and the max value. The image area of @a staticImage MUST * cover ALL possible positions of the static active content * @a activeImage and the dynamic content @a dynamicImage. */ ImageVSlider (const double x, const double y, const double width, const double height, const std::string staticImage, const std::pair, BUtilities::Point<>> staticAnchors, std::string activeImage = "", BUtilities::Point<> activeAnchor = {0,0}, std::string dynamicImage = "", BUtilities::Point<> dynamicAnchor = {0,0}, double value = 0.0, double min = 0.0, double max = 1.0, double step = 0.0, std::function transferFunc = ValueTransferable::noTransfer, std::function reTransferFunc = ValueTransferable::noTransfer, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %ImageVSlider. * @return Pointer to the new %ImageVSlider. * * Creates a clone of this %ImageVSlider by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %ImageVSlider. * @param that Other %ImageVSlider. * * Copies all properties from another %ImageVSlider. But NOT its linkage. */ void copy (const ImageVSlider* that); /** * @brief Sets the range step size. * @param step Step size. * * Also sets the number of sub steps to BWIDGETS_DEFAULT_NR_SUBSTEPS if * step size is 0.0. */ virtual void setStep (const double& step) override; /** * @brief Enters this %ImageVSlider. * * Activates this %ImageVSlider, takes over keyboard control, and calls to leave * all other widgets linked to the main Window to become the only entered * Widget. */ virtual void enter () override; /** * @brief Leaves this %ImageVSlider * * De-activates this %ImageVSlider and release keyboard conrol. */ virtual void leave () override; /** * @brief Method called when pointer button pressed. * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button pressed. Sets the value and calls the widget static * callback function. */ virtual void onButtonPressed (BEvents::Event* event) override; /** * @brief Method called upon pointer drag. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a pointer drag. Changes the value and calls the widget static callback * function. */ virtual void onPointerDragged (BEvents::Event* event) override; /** * @brief Method called upon (mouse) wheel scroll. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a (mouse) wheel scroll. Increases or decreases the value and calls the * widget static callback function. */ virtual void onWheelScrolled (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyPressEvent is * received. * @param event Passed Event. * * Overridable method called from the main window event scheduler if a * key is pressed. By default, it calls its static callback function. */ virtual void onKeyPressed (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyReleaseEvent is * received. * @param event Passed Event. * * Overridable method called from the main window event scheduler if a * key is released. By default, it calls its static callback function. */ virtual void onKeyReleased (BEvents::Event* event) override; }; inline ImageVSlider::ImageVSlider () : ImageVSlider (0.0, 0.0, BWIDGETS_DEFAULT_IMAGEVSLIDER_WIDTH, BWIDGETS_DEFAULT_IMAGEVSLIDER_HEIGHT, "", std::pair, BUtilities::Point<>> ({0,0}, {0,0}), "", BUtilities::Point<> (0,0), "", BUtilities::Point<> (0,0), 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, BUTILITIES_URID_UNKNOWN_URID, "") { } inline ImageVSlider::ImageVSlider (const uint32_t urid, const std::string& title) : ImageVSlider (0.0, 0.0, BWIDGETS_DEFAULT_IMAGEVSLIDER_WIDTH, BWIDGETS_DEFAULT_IMAGEVSLIDER_HEIGHT, "", std::pair, BUtilities::Point<>> ({0,0}, {0,0}), "", BUtilities::Point<> (0,0), "", BUtilities::Point<> (0,0), 0.0, 0.0, 1.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline ImageVSlider::ImageVSlider (const std::string staticImage, const std::pair, BUtilities::Point<>> staticAnchors, std::string activeImage, BUtilities::Point<> activeAnchor, std::string dynamicImage, BUtilities::Point<> dynamicAnchor, double value, const double min, const double max, double step, uint32_t urid, std::string title) : ImageVSlider (0.0, 0.0, BWIDGETS_DEFAULT_IMAGEVSLIDER_WIDTH, BWIDGETS_DEFAULT_IMAGEVSLIDER_HEIGHT, staticImage, staticAnchors, activeImage, activeAnchor, dynamicImage, dynamicAnchor, value, min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } inline ImageVSlider::ImageVSlider (const double x, const double y, const double width, const double height, const std::string staticImage, const std::pair, BUtilities::Point<>> staticAnchors, std::string activeImage, BUtilities::Point<> activeAnchor, std::string dynamicImage, BUtilities::Point<> dynamicAnchor, double value, const double min, const double max, double step, std::function transferFunc, std::function reTransferFunc, uint32_t urid, std::string title) : ImageVMeter (x, y, width, height, staticImage, staticAnchors, activeImage, activeAnchor, dynamicImage, dynamicAnchor, value, min, max, step, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title), Clickable(), Draggable(), Scrollable(), KeyPressable(), fineTuned_(false) { setActivatable(true); setEnterable(true); setKeyPressable(true); grabDevice(BDevices::Keys(BDevices::Keys::KeyType::shiftL)); grabDevice(BDevices::Keys(BDevices::Keys::KeyType::shiftR)); if (step == 0.0) setNrSubs(BWIDGETS_DEFAULT_NR_SUBSTEPS); } inline Widget* ImageVSlider::clone () const { Widget* f = new ImageVSlider (urid_, title_); f->copy (this); return f; } inline void ImageVSlider::copy (const ImageVSlider* that) { fineTuned_ = that->fineTuned_; KeyPressable::operator=(*that); Scrollable::operator= (*that); Draggable::operator= (*that); Clickable::operator= (*that); ImageVMeter::copy (that); } inline void ImageVSlider::setStep (const double &step) { ValidatableRange::setStep(step); if (step == 0.0) setNrSubs(BWIDGETS_DEFAULT_NR_SUBSTEPS); } inline void ImageVSlider::enter () { if (isEnterable() && (!isEntered())) { grabDevice (BDevices::Keys()); Widget::enter(); } } inline void ImageVSlider::leave () { if (isEnterable() && isEntered()) { if (isDeviceGrabbed(BDevices::Keys())) freeDevice(BDevices::Keys ()); Widget::leave(); } } inline void ImageVSlider::onButtonPressed (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast (event); if (!pev) return; enter(); if (staticAnchors_.first.y != staticAnchors_.second.y) { const double x0 = getXOffset(); const double w = getEffectiveWidth(); const double h = getEffectiveHeight(); const double ws = cairo_image_surface_get_width (staticImageSurface_); const double hs = cairo_image_surface_get_height (staticImageSurface_); if ((ws >= 1.0) && (hs >= 1.0) && (w >= 1) && (h >= 1)) { const double szs = ((w / ws < h / hs) ? (w / ws) : (h / hs)); const double y0s = x0 + 0.5 * h - 0.5 * hs * szs; if (step_ >= 0) { setValue (getValueFromRatio ((pev->getPosition().y - y0s - staticAnchors_.first.y * szs) / ((staticAnchors_.second.y - staticAnchors_.first.y) * szs))); } else { setValue (getValueFromRatio (1.0 - (pev->getPosition().y - y0s - staticAnchors_.first.y * szs) / ((staticAnchors_.second.y - staticAnchors_.first.y) * szs))); } } } Clickable::onButtonPressed (event); } inline void ImageVSlider::onPointerDragged (BEvents::Event* event) { if (isClickable()) onButtonPressed (event); else { BEvents::PointerEvent* pev = dynamic_cast (event); if (!pev) return; enter(); if (staticAnchors_.first.y != staticAnchors_.second.y) { const double w = getEffectiveWidth(); const double h = getEffectiveHeight(); const double ws = cairo_image_surface_get_width (staticImageSurface_); const double hs = cairo_image_surface_get_height (staticImageSurface_); if ((ws >= 1.0) && (hs >= 1.0) && (w >= 1) && (h >= 1)) { const double szs = ((w / ws < h / hs) ? (w / ws) : (h / hs)); if (getStep() != 0.0) setValue (getValue() - pev->getDelta().y * (fineTuned_ ? getSubStep() : getStep())); else { const double step = (fineTuned_ ? 1.0 / ((static_cast(getNrSubs() + 1.0)) * ((staticAnchors_.second.y - staticAnchors_.first.y) * szs)) : 1.0 / ((staticAnchors_.second.y - staticAnchors_.first.y) * szs)); setValue (getValueFromRatio (getRatioFromValue (getValue()) + pev->getDelta().y * step)); } } } } Draggable::onPointerDragged (event); } inline void ImageVSlider::onWheelScrolled (BEvents::Event* event) { BEvents::WheelEvent* wev = dynamic_cast (event); if (!wev) return; if (staticAnchors_.first.y != staticAnchors_.second.y) { const double w = getEffectiveWidth(); const double h = getEffectiveHeight(); const double ws = cairo_image_surface_get_width (staticImageSurface_); const double hs = cairo_image_surface_get_height (staticImageSurface_); if ((ws >= 1.0) && (hs >= 1.0) && (w >= 1) && (h >= 1)) { const double szs = ((w / ws < h / hs) ? (w / ws) : (h / hs)); if (getStep() != 0.0) setValue (getValue() - wev->getDelta().y * (fineTuned_ ? getSubStep() : getStep())); else { const double step = (fineTuned_ ? 1.0 / ((static_cast(getNrSubs() + 1.0)) * ((staticAnchors_.second.y - staticAnchors_.first.y) * szs)) : 1.0 / ((staticAnchors_.second.y - staticAnchors_.first.y) * szs)); setValue (getValueFromRatio (getRatioFromValue (getValue()) - wev->getDelta().y * step)); } } } Scrollable::onWheelScrolled (event); } inline void ImageVSlider::onKeyPressed (BEvents::Event* event) { BEvents::KeyEvent* kev = dynamic_cast(event); if (!kev) return; if (kev->getWidget() != this) return; BDevices::Keys::KeyType key = static_cast(kev->getKey ()); switch (kev->getKey ()) { case BDevices::Keys::keyCode(BDevices::Keys::KeyType::shiftL): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::shiftR): fineTuned_ = true; break; case '-': case BDevices::Keys::keyCode(BDevices::Keys::KeyType::down): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::left): { BEvents::WheelEvent wev = BEvents::WheelEvent(this, BEvents::Event::EventType::wheelScrollEvent, 0.5 * getWidth(), 0.5 * getHeight(), 0, 1); onWheelScrolled(&wev); } break; case '+': case BDevices::Keys::keyCode(BDevices::Keys::KeyType::up): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::right): { BEvents::WheelEvent wev = BEvents::WheelEvent(this, BEvents::Event::EventType::wheelScrollEvent, 0.5 * getWidth(), 0.5 * getHeight(), 0, -1); onWheelScrolled(&wev); } break; case BDevices::Keys::keyCode(BDevices::Keys::KeyType::escape): leave(); break; default: break; } KeyPressable::onKeyPressed(event); } inline void ImageVSlider::onKeyReleased (BEvents::Event* event) { BEvents::KeyEvent* kev = dynamic_cast(event); if (!kev) return; if (kev->getWidget() != this) return; BDevices::Keys::KeyType key = static_cast(kev->getKey ()); switch (key) { case BDevices::Keys::KeyType::shiftL: case BDevices::Keys::KeyType::shiftR: fineTuned_ = false; break; default: break; } KeyPressable::onKeyReleased(event); } } #endif /* BWIDGETS_IMAGEVSLIDER_HPP_ */ src/BWidgets/BWidgets/Knob.hpp000066400000000000000000000157541515163050000164770ustar00rootroot00000000000000/* Knob.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_KNOB_HPP_ #define BWIDGETS_KNOB_HPP_ #ifndef BWIDGETS_DEFAULT_DRAWKNOB_PATH #define BWIDGETS_DEFAULT_DRAWKNOB_PATH "Draws/Ergo/drawKnob.hpp" #endif #include "Button.hpp" #include BWIDGETS_DEFAULT_DRAWKNOB_PATH #ifndef BWIDGETS_DEFAULT_KNOB_WIDTH #define BWIDGETS_DEFAULT_KNOB_WIDTH 20.0 #endif #ifndef BWIDGETS_DEFAULT_KNOB_HEIGHT #define BWIDGETS_DEFAULT_KNOB_HEIGHT BWIDGETS_DEFAULT_KNOB_WIDTH #endif namespace BWidgets { /** * @brief %Knob Button widget. * * %Knob is a Button Widget. It is a pseudo 3D visualization of a knob which * can change its status (bool value) upon user interaction via Clickable. * Its appearance is defined by the BgColors parameter (static elements, * false) and by the FgColors parameter (active elements, true). */ class Knob : public Button { protected: double depth_; public: /** * @brief Constructs a default %Knob object. * */ Knob (); /** * @brief Constructs a default %Knob object. * @param URID URID. * @param title %Widget title. */ Knob (const uint32_t urid, const std::string& title); /** * @brief Creates a %Knob with default size. * @param depth Pseudo 3D %Knob depth. * @param toggleable Support of button toggling. * @param clicked Default click status. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ Knob (const double depth, bool toggleable = false, bool clicked = false, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %Knob. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param depth Pseudo 3D %Knob depth. * @param toggleable Support of button toggling. * @param clicked Default click status. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ Knob (const double x, const double y, const double width, const double height, const double depth = 1.0, bool toggleable = false, bool clicked = false, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %Knob. * @return Pointer to the new %Knob. * * Creates a clone of this %Knob by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %Knob. * @param that Other %Knob. * * Copies all properties from another %Knob. But NOT its linkage. */ void copy (const Knob* that); /** * @brief Sets the pseudo 3D depth of the knob. * @param depth Pseudo 3D depth. */ virtual void setDepth (const double depth); /** * @brief Gets the pseudo 3D depth of the knob. * @return Pseudo 3D depth. */ double getDepth () const; protected: /** * @brief Unclipped draw a %Knob to the surface. */ virtual void draw () override; /** * @brief Clipped draw a %Knob to the surface. * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped draw a %Knob to the surface. * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline Knob::Knob () : Knob (0.0, 0.0, BWIDGETS_DEFAULT_KNOB_WIDTH, BWIDGETS_DEFAULT_KNOB_HEIGHT, 1.0, false, false, BUTILITIES_URID_UNKNOWN_URID, "") { } inline Knob::Knob (const uint32_t urid, const std::string& title) : Knob (0.0, 0.0, BWIDGETS_DEFAULT_KNOB_WIDTH, BWIDGETS_DEFAULT_KNOB_HEIGHT, 1.0, false, false, urid, title) { } inline Knob::Knob (const double depth, bool toggleable, bool clicked, uint32_t urid, std::string title) : Knob (0.0, 0.0, BWIDGETS_DEFAULT_KNOB_WIDTH, BWIDGETS_DEFAULT_KNOB_HEIGHT, depth, toggleable, clicked, urid, title) { } inline Knob::Knob (const double x, const double y, const double width, const double height, double depth, bool toggleable, bool clicked, uint32_t urid, std::string title) : Button (x, y, width, height, toggleable, clicked, urid, title), depth_ (depth) { setBackground (BStyles::noFill); setBorder (BStyles::noBorder); } inline Widget* Knob::clone () const { Widget* f = new Knob (urid_, title_); f->copy (this); return f; } inline void Knob::copy (const Knob* that) { depth_ = that->depth_; Widget::copy (that); } inline void Knob::setDepth (const double depth) { if (depth != depth_) { depth_ = depth; update (); } } inline double Knob::getDepth () const { return depth_; } inline void Knob::draw () { draw (0, 0, getWidth(), getHeight()); } inline void Knob::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void Knob::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; // Draw super class widget elements first Widget::draw (area); const double x0 = getXOffset(); const double y0 = getYOffset(); const double heff = getEffectiveHeight (); const double weff = getEffectiveWidth (); // Draw knob // only if minimum requirements satisfied if ((heff >= 1) && (weff >= 1)) { cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); // Calculate aspect ratios first const double radius = (heff < weff ? 0.5 * heff : 0.5 * weff) - depth_; const double xc = x0 + 0.5 * weff ; const double yc = y0 + 0.5 * heff; const BStyles::Color color = (getValue() ? getFgColors() : getBgColors()) [getStatus()]; const double depth = (getValue() ? 0.5 * depth_ : depth_); drawKnob(cr, xc, yc, radius, depth, color, getBgColors()[getStatus()]); } cairo_destroy (cr); } } } #endif /* BWIDGETS_KNOB_HPP_ */ src/BWidgets/BWidgets/Label.hpp000066400000000000000000000253351515163050000166210ustar00rootroot00000000000000/* Label.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_LABEL_HPP_ #define BWIDGETS_LABEL_HPP_ #include #include "Supports/Visualizable.hpp" #include "Widget.hpp" #ifndef BWIDGETS_DEFAULT_LABEL_WIDTH #define BWIDGETS_DEFAULT_LABEL_WIDTH 80 #endif #ifndef BWIDGETS_DEFAULT_LABEL_HEIGHT #define BWIDGETS_DEFAULT_LABEL_HEIGHT 20 #endif #ifndef BWIDGETS_DEFAULT_LABEL_ALIGN #define BWIDGETS_DEFAULT_LABEL_ALIGN BStyles::Font::TextAlign::center #endif #ifndef BWIDGETS_DEFAULT_LABEL_VALIGN #define BWIDGETS_DEFAULT_LABEL_VALIGN BStyles::Font::TextVAlign::middle #endif namespace BWidgets { /** * @brief Simple single line text widget. * * Label widgets can be decorated by setting a font and a text color in * addtion to the StyleProperty settings supported by Widget. */ class Label : public Widget { protected: std::string text_; public: /** * @brief Constructs an empty default %Label object. */ Label (); /** * @brief Constructs an empty default %Label object. * @param URID URID. * @param title %Widget title. */ Label (const uint32_t urid, const std::string& title); /** * @brief Constructs a %Label object at the origin with optimized extends. * @param text Text. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Label title (default = ""). */ Label (const std::string& text, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Constructs a %Label object at the origin. * @param x %Label X origin coordinate. * @param y %Label Y origin coordinate. * @param width %Label width. * @param height %Label height. * @param text Text. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Label title (default = ""). */ Label (const double x, const double y, const double width, const double height, const std::string& text, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %Label. * @return Pointer to the new %Label. * * Creates a clone of this %Label by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %Label. * @param that Other %Label. * * Copies all properties from another %Label. But NOT its linkage. */ void copy (const Label* that); /** * @brief Sets the %Label text. * @param text %Label text. */ virtual void setText (const std::string& text); /** * @brief Gets the %Label text. * @return %Label text. */ virtual std::string getText () const; /** * @brief Calculates the width of a text. * @param text Text string. * @param return Text extends. */ BUtilities::Point<> getTextExtends (std::string& text) const; /** * @brief Optimizes the %Label widget extends. * * Resizes the %Label widget to the size of the text extends and all * direct children. */ virtual void resize () override; /** * @brief Resizes the object. * @param width New object width. * @param height New object height. */ virtual void resize (const double width, const double height) override; /** * @brief Resizes the object. * @param extends New object extends. */ virtual void resize (const BUtilities::Point<> extends) override; /** * @brief Gets the %Label width. * @return %Label width. */ virtual double getWidth () const override; /** * @brief Gets the optimized %Label width for a provided text. * @param text Text sting. * @return %Label width. */ virtual double getWidth (const std::string& text) const; /** * @brief Gets the %Label height. * @return %Label height. */ virtual double getHeight () const override; /** * @brief Gets the optimized %Label height for a provided text. * @param text Text sting. * @return %Label height. */ virtual double getHeight (const std::string& text) const; /** * @brief Gets the %Label extends. * @return Point<> data containing width and height. */ virtual BUtilities::Point<> getExtends () const override; /** * @brief Gets the optimized %Label extends for a provided text. * @param text Text sting. * @return Point<> data containing width and height. */ virtual BUtilities::Point<> getExtends (const std::string& text) const; protected: /** * @brief Unclipped draw to the surface (if is visualizable). */ virtual void draw () override; /** * @brief Clipped Draw to the surface (if is visualizable). * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped Draw to the surface (if is visualizable). * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; inline Label::Label () : Label (0.0, 0.0, BWIDGETS_DEFAULT_LABEL_WIDTH, BWIDGETS_DEFAULT_LABEL_HEIGHT, "", BUTILITIES_URID_UNKNOWN_URID, "") { } inline Label::Label (const uint32_t urid, const std::string& title) : Label (0.0, 0.0, BWIDGETS_DEFAULT_LABEL_WIDTH, BWIDGETS_DEFAULT_LABEL_HEIGHT, "", urid, title) { } inline Label::Label (const std::string& text, uint32_t urid, std::string title) : Label (0.0, 0.0, BWIDGETS_DEFAULT_LABEL_WIDTH, BWIDGETS_DEFAULT_LABEL_HEIGHT, text, urid, title) { Label::resize(); } inline Label::Label (const double x, const double y, const double width, const double height, const std::string& text, uint32_t urid, std::string title) : Widget (x, y, width, height, urid, title), text_ (text) { } inline Widget* Label::clone () const { Widget* f = new Label (urid_, title_); f->copy (this); return f; } inline void Label::copy (const Label* that) { text_ = that->text_; Widget::copy (that); } inline void Label::setText (const std::string& text) { if (text != text_) { text_ = text; update (); } } inline std::string Label::getText () const { return text_; } inline BUtilities::Point<> Label::getTextExtends (std::string& text) const { cairo_t* cr = cairo_create (cairoSurface()); cairo_text_extents_t ext = getFont().getCairoTextExtents(cr, text.c_str ()); cairo_destroy (cr); return BUtilities::Point<> (ext.width, ext.height); } inline void Label::resize () { resize (getExtends(text_)); } inline void Label::resize (const double width, const double height) { resize (BUtilities::Point<> (width, height)); } inline void Label::resize (const BUtilities::Point<> extends) { Widget::resize (extends); } inline double Label::getWidth () const { return Visualizable::getWidth(); } inline double Label::getWidth (const std::string& text) const { return getExtends(text).y; } inline double Label::getHeight () const { return Visualizable::getHeight(); } inline double Label::getHeight (const std::string& text) const { return getExtends(text).y; } inline BUtilities::Point<> Label::getExtends () const { return Visualizable::getExtends(); } inline BUtilities::Point<> Label::getExtends (const std::string& text) const { // Get label text size cairo_t* cr = cairo_create (cairoSurface()); BStyles::Font font = getFont(); cairo_text_extents_t ext = font.getCairoTextExtents(cr, text.c_str ()); double w = ext.width; double h = (ext.height > font.size ? ext.height : font.size); BUtilities::Point<> contExt = BUtilities::Point<> (w + 2 * getXOffset () + 2, h + 2 * getYOffset () + 2); cairo_destroy (cr); // Or use embedded widgets size, if bigger for (Linkable* l : children_) { Widget* w = dynamic_cast(l); if (!w) continue; if (w->getPosition ().x + w->getWidth () > contExt.x) contExt.x = w->getPosition ().x + w->getWidth(); if (w->getPosition ().y + w->getHeight () > contExt.y) contExt.y = w->getPosition ().y + w->getHeight(); } return contExt; } inline void Label::draw () { draw (0, 0, getWidth(), getHeight()); } inline void Label::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } inline void Label::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; // Draw super class widget elements first Widget::draw (area); cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); double xoff = getXOffset (); double yoff = getYOffset (); double w = getEffectiveWidth (); double h = getEffectiveHeight (); BStyles::Font font = getFont(); cairo_text_extents_t ext = font.getCairoTextExtents(cr, text_); cairo_select_font_face (cr, font.family.c_str (), font.slant, font.weight); cairo_set_font_size (cr, font.size); double x0, y0; switch (font.align) { case BStyles::Font::TextAlign::left: x0 = 0; break; case BStyles::Font::TextAlign::center: x0 = w / 2 - ext.width / 2; break; case BStyles::Font::TextAlign::right: x0 = w - ext.width; break; default: x0 = 0; } switch (font.valign) { case BStyles::Font::TextVAlign::top: y0 = - ext.y_bearing; break; case BStyles::Font::TextVAlign::middle: y0 = h / 2 - ext.height / 2 - ext.y_bearing; break; case BStyles::Font::TextVAlign::bottom: y0 = h - ext.height - ext.y_bearing; break; default: y0 = 0; } BStyles::Color color = getTxColors()[getStatus()]; cairo_set_source_rgba (cr, CAIRO_RGBA (color)); cairo_move_to (cr, xoff + x0, yoff + y0); cairo_show_text (cr, text_.c_str ()); } cairo_destroy (cr); } } #endif /* BWIDGETS_LABEL_HPP_ */ src/BWidgets/BWidgets/ListBox.hpp000066400000000000000000000270261515163050000171650ustar00rootroot00000000000000/* ListBox.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_LISTBOX_HPP_ #define BWIDGETS_LISTBOX_HPP_ #include "SpinBox.hpp" #include "Supports/Clickable.hpp" #include "../BEvents/PointerEvent.hpp" #include "VScrollBar.hpp" #ifndef BWIDGETS_DEFAULT_LISTBOX_WIDTH #define BWIDGETS_DEFAULT_LISTBOX_WIDTH 80.0 #endif #ifndef BWIDGETS_DEFAULT_LISTBOX_HEIGHT #define BWIDGETS_DEFAULT_LISTBOX_HEIGHT 200.0 #endif namespace BWidgets { /** * @brief Widget showing a scrollable list content and allows to select an * item. * * %ListBox is Valueable widget derived from SpinBox. In contrast to SpinBox, * it shows its content in multiple lines and allow selection by clicking on * an item by the support of Clickable. The selected item is turned in its * active state. * * @todo Resize() * @todo Import item widgets. */ class ListBox : public SpinBox { public: /** * @brief Constructs a new ListBox object with default parameters. */ ListBox (); /** * @brief Constructs a new ListBox object with default parameters. * @param URID URID. * @param title %Widget title. */ ListBox (const uint32_t urid, const std::string& title); /** * @brief Creates a %ListBox with default size. * @param items Initializer list of item strings. * @param value Optional, list index of the selected item starting with * 1 (default = 0 = unselected). * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ ListBox (const std::initializer_list items, size_t value = 0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %ListBox. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param items Optional, initializer list of item strings. * @param value Optional, list index of the selected item starting with * 1 (default = 0 = unselected). * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ ListBox (const double x, const double y, const double width, const double height, std::initializer_list items = {}, size_t value = 0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %ListBox. * @return Pointer to the new %ListBox. * * Creates a clone of this %ListBox by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %ListBox. * @param that Other %ListBox. * * Copies all properties from another %ListBox. But NOT its linkage. */ void copy (const ListBox* that); /** * @brief Method to be called following an object state change. */ virtual void update () override; /** * @brief Scrolls the list and sets the visualized list top index. * @param pos Index of the item to be on %Listbox top position. */ virtual void setTop (const size_t pos); /** * @brief Gets the index of the item actually displayed on top of the * %Listbox. * @return Index of the item on %Listbox top position. */ size_t getTop () const; /** * @brief Method called when pointer button pressed. * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button pressed. Selects an item, sets the widget value and * calls the static callback function. */ virtual void onButtonPressed (BEvents::Event* event) override; /** * @brief Method called upon (mouse) wheel scroll. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a (mouse) wheel scroll. Scrolls the list and calls the * widget static callback function. */ virtual void onWheelScrolled (BEvents::Event* event) override; protected: /** * @brief Gets the sum of the heights of all items within the index * range [start, start + count). * * @param start Index of the first item. * @param count Number of items to be included. * @return Sum of heights. */ double getItemsHeight (size_t start = 0, size_t count = std::numeric_limits::max()); /** * @brief Callback function which handles and forwards * VALUE_CHANGED_EVENTs from the SpinButton. * @param event Event of the type ValueChangedEvent . */ static void valueChangedCallback (BEvents::Event* event); }; inline ListBox::ListBox () : ListBox (0.0, 0.0, BWIDGETS_DEFAULT_LISTBOX_WIDTH, BWIDGETS_DEFAULT_LISTBOX_HEIGHT, {}, 0, BUTILITIES_URID_UNKNOWN_URID, "") {} inline ListBox::ListBox (const uint32_t urid, const std::string& title) : ListBox (0.0, 0.0, BWIDGETS_DEFAULT_LISTBOX_WIDTH, BWIDGETS_DEFAULT_LISTBOX_HEIGHT, {}, 0, urid, title) {} inline ListBox::ListBox (const std::initializer_list items, size_t value, uint32_t urid, std::string title) : ListBox (0.0, 0.0, BWIDGETS_DEFAULT_LISTBOX_WIDTH, BWIDGETS_DEFAULT_LISTBOX_HEIGHT, items, value, urid, title) {} inline ListBox::ListBox (const double x, const double y, const double width, const double height, std::initializer_list items, size_t value, uint32_t urid, std::string title) : SpinBox (x, y, width, height, items, value, urid, title) { buttonWidth_ = 0.5 * BWIDGETS_DEFAULT_SPINBOX_BUTTON_WIDTH; if (button_) delete button_; button_ = new VScrollBar (x + width - buttonWidth_, y, buttonWidth_, height, 0.3, 0.0, 1.0, 0.0, 0.0, ValueTransferable::noTransfer, ValueTransferable::noTransfer, BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/button")); button_->setCallbackFunction(BEvents::Event::EventType::valueChangedEvent, ListBox::valueChangedCallback); add (button_); itemHeight_ = BWIDGETS_DEFAULT_SPINBOX_ITEM_HEIGHT; for (Widget* w : items_) w->setHeight (itemHeight_); } inline Widget* ListBox::clone () const { Widget* f = new ListBox (urid_, title_); f->copy (this); return f; } inline void ListBox::copy (const ListBox* that) { SpinBox::copy (that); } inline void ListBox::setTop (const size_t pos) { if (pos != top_) { top_ = pos; update(); } } inline size_t ListBox::getTop() const {return top_;} inline void ListBox::update () { size_t count = 0; double tHeight = 0.0; double lHeight = 0.0; for (std::list::iterator it = items_.begin(); it != items_.end(); ++it) { Widget* w = *it; if (w) { // Items before top_ // Set negative y positions if ((count == top_) && (it != items_.begin())) { double mtHeight = 0.0; for (std::list::iterator it2 = std::prev (it); /* empty */; --it2) { Widget* w2 = *it2; mtHeight -= w2->getHeight(); w2->moveTo (getXOffset(), getYOffset() + mtHeight); w2->setWidth(getEffectiveWidth() - buttonWidth_); if (it2 == items_.begin()) break; } } // Items from top_ to the end of the ListBox area if (count >= top_) { w->moveTo (getXOffset(), getYOffset() + tHeight); w->setWidth(getEffectiveWidth() - buttonWidth_); if (tHeight < getEffectiveHeight()) { w->show(); lHeight = w->getPosition().y + w->getHeight(); } else w->hide(); tHeight += w->getHeight(); } // Items outside the ListBox area else w->hide(); if (getValue() == count) { w->activate(); w->setBackground (BStyles::Fill (getBgColors()[getStatus()].illuminate (BStyles::Color::darkened))); } else w->setBackground (BStyles::noFill); } ++count; } button_->moveTo (getEffectiveWidth() + getXOffset() - buttonWidth_, getYOffset()); button_->resize (buttonWidth_, getEffectiveHeight()); const double y0 = items_.front()->getPosition().y; const double ye = items_.back()->getPosition().y + items_.back()->getHeight(); std::list::iterator it = std::next (items_.begin(), top_); const double y = (*it)->getPosition().y + 0.5 * (*it)->getHeight(); VScrollBar* vs = dynamic_cast(button_); if (vs && (ye > y0)) { vs->setValue ((y - y0) / (ye - y0)); vs->setValueSize ((lHeight - y) / (ye - y0)); }; Widget::update(); } inline void ListBox::onButtonPressed (BEvents::Event* event) { if (getStatus() == BStyles::Status::normal) enter(); BEvents::PointerEvent* pev = dynamic_cast(event); if (!pev) return; if (pev->getWidget() != this) return; size_t count = top_; for (std::list::iterator it = std::next(items_.begin(), top_); it != items_.end(); ++it) { Widget* w = *it; const double bottom = getYOffset() + w->getPosition().y + w->getHeight(); if (pev->getPosition().y < bottom) { setValue (count); break; } if (bottom > getYOffset() + getEffectiveHeight()) break; ++count; } Clickable::onButtonPressed(event); } inline void ListBox::onWheelScrolled (BEvents::Event* event) { BEvents::WheelEvent* wev = dynamic_cast(event); if (!wev) return; if (wev->getWidget() != this) return; if (((wev->getDelta().y > 0) && (top_ > 1)) || ((wev->getDelta().y < 0) && (top_ + 1 < items_.size()) && (getItemsHeight(top_) > getEffectiveHeight()))) { setTop (top_ - (wev->getDelta().y < 0 ? -1 : 1)); } Scrollable::onWheelScrolled(event); } inline double ListBox::getItemsHeight (size_t start, size_t count) { if (start >= items_.size()) return 0.0; double h = 0.0; for (std::list::iterator it = std::next (items_.begin(), top_); (it != items_.end()) && count; ++it) { Widget* w = *it; if (w) h += w->getHeight(); --count; } return h; } inline void ListBox::valueChangedCallback (BEvents::Event* event) { BEvents::ValueChangeTypedEvent* vev = dynamic_cast*>(event); if (!vev) return; VScrollBar* w = dynamic_cast(vev->getWidget()); if (!w) return; ListBox* p = dynamic_cast(w->getParentWidget()); if (!p) return; if (w == p->button_) { std::list::iterator bit = (p->items_.size() > 1 ? std::next (p->items_.begin()) : p->items_.begin()); const double y0 = p->items_.front()->getPosition().y; const double ye = p->items_.back()->getPosition().y + p->items_.back()->getHeight(); if (y0 < ye) { const double y = y0 + w->getValue() * (ye - y0); size_t count = (p->items_.size() > 1 ? 1 : 0); for (std::list::iterator it = bit; it != p->items_.end(); ++it) { Widget* w2 = (*it); if (y <= w2->getPosition().y + w2->getHeight()) { if ((count < p->getTop()) || (p->getItemsHeight() > p->getEffectiveHeight())) { w->setValueable (false); p->setTop (count); w->setValueable (true); } break; } ++count; } } } } } #endif /* BWIDGETS_LISTBOX_HPP_ */ src/BWidgets/BWidgets/MessageBox.hpp000066400000000000000000000226641515163050000176410ustar00rootroot00000000000000/* MessageBox.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_MESSAGEBOX_HPP_ #define BWIDGETS_MESSAGEBOX_HPP_ #include "TextBox.hpp" #include "Symbol.hpp" #include #ifndef BWIDGETS_DEFAULT_MESSAGEBOX_WIDTH #define BWIDGETS_DEFAULT_MESSAGEBOX_WIDTH (BWIDGETS_DEFAULT_TEXTBOX_WIDTH + 100.0) #endif #ifndef BWIDGETS_DEFAULT_MESSAGEBOX_HEIGHT #define BWIDGETS_DEFAULT_MESSAGEBOX_HEIGHT (BWIDGETS_DEFAULT_TEXTBOX_HEIGHT + 40.0) #endif namespace BWidgets { /** * @brief Composite widget with a symbol, a headline, a text and buttons. * * %MessageBox is a composite Widget based on TextBox and additionally * contains a symbol and a headline. */ class MessageBox : public TextBox { public: Symbol symbol; Text headline; /** * @brief Constructs an empty default %MessageBox object. */ MessageBox (); /** * @brief Constructs an empty default %MessageBox object. * @param URID URID. * @param title %Widget title. */ MessageBox (const uint32_t urid, const std::string& title); /** * @brief Construct a %MessageBox object with default size. * @param symbol Symbol index. * @param headline Headline sting. * @param text Optional, text string. * @param buttonlabels Optional, initializer list with butten label * strings. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). * * The box only hosts an OK button if no button labels are provided. */ MessageBox (const Symbol::SymbolType symbol, const std::string& headline, std::string text = "", std::initializer_list buttonlabels = {}, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Construct a %MessageBox object. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param symbol Symbol index. * @param headline Headline sting. * @param text Optional, text string. * @param buttonlabels Optional, initializer list with button label * strings. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). * * The box only hosts an OK button if no button labels are provided. */ MessageBox (const double x, const double y, const double width, const double height, const Symbol::SymbolType symbol, const std::string& headline, std::string text = "", std::initializer_list buttons = {}, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %MessageBox. * @return Pointer to the new %MessageBox. * * Creates a clone of this %MessageBox by copying all properties. But NOT its * linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %MessageBox. * @param that Other %MessageBox. * * Copies all properties from another %MessageBox. But NOT its linkage. */ void copy (const MessageBox* that); /** * @brief Optimizes the %MessageBox widget extends. */ virtual void resize () override; /** * @brief Resizes the object. * @param width New object width. * @param height New object height. */ virtual void resize (const double width, const double height) override; /** * @brief Resizes the object. * @param extends New object extends. */ virtual void resize (const BUtilities::Point<> extends) override; /** * @brief Method to be called following an object state change. */ virtual void update () override; }; inline MessageBox::MessageBox () : MessageBox (0.0, 0.0, BWIDGETS_DEFAULT_MESSAGEBOX_WIDTH, BWIDGETS_DEFAULT_MESSAGEBOX_HEIGHT, Symbol::SymbolType::none, "", "", {}, BUTILITIES_URID_UNKNOWN_URID, "") { } inline MessageBox::MessageBox (const uint32_t urid, const std::string& title) : MessageBox (0, 0, BWIDGETS_DEFAULT_MESSAGEBOX_WIDTH, BWIDGETS_DEFAULT_MESSAGEBOX_HEIGHT, Symbol::SymbolType::none, "", "", {}, urid, title) { } inline MessageBox::MessageBox (const Symbol::SymbolType symbol, const std::string& headline, std::string text, std::initializer_list buttonlabels, uint32_t urid, std::string title) : MessageBox (0, 0, BWIDGETS_DEFAULT_MESSAGEBOX_WIDTH, BWIDGETS_DEFAULT_MESSAGEBOX_HEIGHT, symbol, headline, text, buttonlabels, urid, title) { } inline MessageBox::MessageBox (const double x, const double y, const double width, const double height, const Symbol::SymbolType symbol, const std::string& headline, std::string text, std::initializer_list buttonlabels, uint32_t urid, std::string title) : TextBox (x, y, width, height, text, buttonlabels, urid, title), symbol (symbol, BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/symbol")), headline (headline, BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/title")) { BStyles::Font hFont = this->headline.getFont(); hFont.weight = CAIRO_FONT_WEIGHT_BOLD; this->headline.setFont (hFont); this->symbol.setEventPassable(BEvents::Event::EventType::buttonPressEvent | BEvents::Event::EventType::pointerDragEvent); this->headline.setEventPassable(BEvents::Event::EventType::buttonPressEvent | BEvents::Event::EventType::pointerDragEvent); add (&this->symbol); add (&this->headline); } inline Widget* MessageBox::clone () const { Widget* f = new MessageBox (urid_, title_); f->copy (this); return f; } inline void MessageBox::copy (const MessageBox* that) { symbol.copy (&that->symbol); headline.copy (&that->headline); TextBox::copy (that); } inline void MessageBox::resize () { // Symbol if (symbol.getSymbol() == Symbol::SymbolType::none) { symbol.moveTo (getXOffset(), getYOffset()); symbol.resize (0, 0); } else { symbol.moveTo (getXOffset() + BWIDGETS_DEFAULT_MENU_PADDING, getYOffset() + BWIDGETS_DEFAULT_MENU_PADDING); symbol.resize (4.0 * text.getFont().size, 4.0 * text.getFont().size); } // Headline if (headline.getText() == "") { headline.moveTo (symbol.getPosition().x + symbol.getWidth() + BWIDGETS_DEFAULT_MENU_PADDING, getYOffset()); headline.resize (0, 0); } else { headline.moveTo (symbol.getPosition().x + symbol.getWidth() + BWIDGETS_DEFAULT_MENU_PADDING, getYOffset() + BWIDGETS_DEFAULT_MENU_PADDING); headline.resize (BWIDGETS_DEFAULT_MESSAGEBOX_WIDTH - symbol.getPosition().x - symbol.getWidth() - 2.0 * BWIDGETS_DEFAULT_MENU_PADDING - getXOffset(), getEffectiveHeight() - 3.0 * BWIDGETS_DEFAULT_MENU_PADDING - BWIDGETS_DEFAULT_BUTTON_HEIGHT); // Set width headline.resize (); // Optimize Height } // Text text.moveTo (headline.getPosition().x, headline.getPosition().y + headline.getHeight() + BWIDGETS_DEFAULT_MENU_PADDING); text.resize (BWIDGETS_DEFAULT_MESSAGEBOX_WIDTH - symbol.getPosition().x - symbol.getWidth() - 2.0 * BWIDGETS_DEFAULT_MENU_PADDING - getXOffset(), getHeight() - headline.getPosition().y - headline.getHeight() - 4.0 * BWIDGETS_DEFAULT_MENU_PADDING - getYOffset()); // Set width text.resize (); // Optimize Height Box::resize(); } inline void MessageBox::resize (const double width, const double height) { resize (BUtilities::Point<> (width, height)); } inline void MessageBox::resize (const BUtilities::Point<> extends) { Box::resize (extends); } inline void MessageBox::update () { // Symbol if (symbol.getSymbol() == Symbol::SymbolType::none) { symbol.moveTo (getXOffset(), getYOffset()); symbol.resize (0, 0); } else { symbol.moveTo (getXOffset() + BWIDGETS_DEFAULT_MENU_PADDING, getYOffset() + BWIDGETS_DEFAULT_MENU_PADDING); symbol.resize (4.0 * text.getFont().size, 4.0 * text.getFont().size); } // Headline if (headline.getText() == "") { headline.moveTo (symbol.getPosition().x + symbol.getWidth() + BWIDGETS_DEFAULT_MENU_PADDING, getYOffset()); headline.resize (0, 0); } else { headline.moveTo (symbol.getPosition().x + symbol.getWidth() + BWIDGETS_DEFAULT_MENU_PADDING, getYOffset() + BWIDGETS_DEFAULT_MENU_PADDING); headline.resize (getWidth() - symbol.getPosition().x - symbol.getWidth() - 2.0 * BWIDGETS_DEFAULT_MENU_PADDING - getXOffset(), getEffectiveHeight() - 3.0 * BWIDGETS_DEFAULT_MENU_PADDING - BWIDGETS_DEFAULT_BUTTON_HEIGHT); // Set width headline.resize (); // Optimize Height } // Text text.moveTo (headline.getPosition().x, headline.getPosition().y + headline.getHeight() + BWIDGETS_DEFAULT_MENU_PADDING); text.resize (getWidth() - symbol.getPosition().x - symbol.getWidth() - 2.0 * BWIDGETS_DEFAULT_MENU_PADDING - getXOffset(), getHeight() - headline.getPosition().y - headline.getHeight() - 4.0 * BWIDGETS_DEFAULT_MENU_PADDING - getYOffset()); // Buttons Box::update (); } } #endif /* BWIDGETS_MESSAGEBOX_HPP_ */ src/BWidgets/BWidgets/Pad.hpp000066400000000000000000000370761515163050000163130ustar00rootroot00000000000000/* Pad.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_PAD_HPP_ #define BWIDGETS_PAD_HPP_ #include "Widget.hpp" #include "Supports/Clickable.hpp" #include "Supports/Scrollable.hpp" #include "Supports/ValueableTyped.hpp" #include "Supports/ValidatableRange.hpp" #include "Supports/ValueTransferable.hpp" #include "Supports/KeyPressable.hpp" #include "../BEvents/WheelEvent.hpp" #include "../BEvents/PointerEvent.hpp" #include "../BEvents/KeyEvent.hpp" #include BWIDGETS_DEFAULT_DRAWPAD_PATH #ifndef BWIDGETS_DEFAULT_PAD_WIDTH #define BWIDGETS_DEFAULT_PAD_WIDTH 20 #endif #ifndef BWIDGETS_DEFAULT_PAD_HEIGHT #define BWIDGETS_DEFAULT_PAD_HEIGHT 20 #endif namespace BWidgets { /** * @brief Widget imitating an LED pad. * @tparam T Value type. * * %Pad is a Valueable widget imitating an LED pad. Its value is represented * by its color from dark to bright. It supports user interaction via * Clickable (switch on / off), Scrollable (increase / decrease value), and * KeyPressable (to be implemented). * The visualble content of the %Pad is represented by FgColors. * * The value type @a T can be used to specialize %Pad (e. g., by writing * specialized @c draw() methods). @a T MUST support the standard comparison * operators and MUST also support the standard arithmetic operators. It * also MUST be compatible with ValueableTyped, ValidatableRange, and * ValueTransferable. */ template class Pad : public Widget, public ValueableTyped, public ValidatableRange, public ValueTransferable, public Clickable, public Scrollable, public KeyPressable { protected: T storedValue_; bool fineTuned_; public: /** * @brief Constructs a new %Pad object with default parameters. */ Pad (); /** * @brief Constructs a new %Pad object with default parameters. * @param URID URID. * @param title %Widget title. */ Pad (const uint32_t urid, const std::string& title); /** * @brief Creates a %Pad with default size. * @param value Initial value. * @param min Lower value limit. * @param max Upper value limit. * @param step Optional, value increment steps. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ Pad (const T value, const T min, const T max, T step = 0.0, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %Pad. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param value Initial value. * @param min Lower value limit. * @param max Upper value limit. * @param transferFunc Optinonal, function to transfer a value from an * external context to the internal context. * @param reTransferFunc Optinonal, function to transfer a value from the * internal context to an external context. * @param step Optional, value increment steps. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ Pad (const double x, const double y, const double width, const double height, const T value, const T min, const T max, T step = 0.0, std::function transferFunc = ValueTransferable::noTransfer, std::function reTransferFunc = ValueTransferable::noTransfer, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a clone of the %Pad. * @return Pointer to the new %Pad. * * Creates a clone of this %Pad by copying all properties. But NOT * its linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %Pad. * @param that Other %Pad. * * Copies all properties from another %Pad. But NOT its linkage. */ void copy (const Pad* that); /** * @brief Sets the range step size. * @param step Step size. * * Also sets the number of sub steps to BWIDGETS_DEFAULT_NR_SUBSTEPS if * step size is 0.0. */ virtual void setStep (const double& step) override; /** * @brief Enters this %Pad. * * Activates this %Pad, takes over keyboard control, and calls to leave * all other widgets linked to the main Window to become the only entered * Widget. */ virtual void enter () override; /** * @brief Leaves this %Pad * * De-activates this %Pad and release keyboard conrol. */ virtual void leave () override; /** * @brief Method called when pointer button pressed. * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button pressed. By default, it calls its static callback * function. */ virtual void onButtonPressed (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyPressEvent is * received. * @param event Passed Event. * * Overridable method called from the main window event scheduler if a * key is pressed. By default, it calls its static callback function. */ virtual void onKeyPressed (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyReleaseEvent is * received. * @param event Passed Event. * * Overridable method called from the main window event scheduler if a * key is released. By default, it calls its static callback function. */ virtual void onKeyReleased (BEvents::Event* event) override; /** * @brief Optimizes the widget extends. * * Resizes the widget to include all direct children into the widget * area. Resizes the widget to its standard size if this widget doesn't * have any children. */ virtual void resize () override; /** * @brief Resizes the widget extends. * @param width New widget width. * @param height New widget height. */ virtual void resize (const double width, const double height) override; /** * @brief Resizes the widget extends. * @param extends New widget extends. */ virtual void resize (const BUtilities::Point<> extends) override; /** * @brief Method called upon (mouse) wheel scroll. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a (mouse) wheel scroll. Increases or decreases the value and calls the * widget static callback function. */ virtual void onWheelScrolled (BEvents::Event* event) override; protected: /** * @brief Unclipped draw to the surface (if is visualizable). */ virtual void draw () override; /** * @brief Clipped Draw to the surface (if is visualizable). * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped Draw to the surface (if is visualizable). * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; template inline Pad::Pad () : Pad (0.0, 0.0, BWIDGETS_DEFAULT_PAD_WIDTH, BWIDGETS_DEFAULT_PAD_HEIGHT, T(), T(), T() + 1.0, T(), ValueTransferable::noTransfer, ValueTransferable::noTransfer, BUTILITIES_URID_UNKNOWN_URID, "") { } template inline Pad::Pad (const uint32_t urid, const std::string& title) : Pad (0.0, 0.0, BWIDGETS_DEFAULT_PAD_WIDTH, BWIDGETS_DEFAULT_PAD_HEIGHT, T(), T(), T() + 1.0, T(), ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } template inline Pad::Pad (const T value, const T min, const T max, T step, uint32_t urid, std::string title) : Pad (0.0, 0.0, BWIDGETS_DEFAULT_PAD_WIDTH, BWIDGETS_DEFAULT_PAD_HEIGHT, min, max, step, urid, ValueTransferable::noTransfer, ValueTransferable::noTransfer, urid, title) { } template inline Pad::Pad (const double x, const double y, const double width, const double height, const T value, const T min, const T max, T step, std::function transferFunc, std::function reTransferFunc, uint32_t urid, std::string title) : Widget (x, y, width, height, urid, title), ValueableTyped (value), ValidatableRange (min, max, step), ValueTransferable (transferFunc, reTransferFunc), Clickable(), Scrollable(), KeyPressable(), storedValue_ (value == min ? max : min), fineTuned_(false) { setActivatable(true); setEnterable(true); setKeyPressable(true); grabDevice(BDevices::Keys(BDevices::Keys::KeyType::shiftL)); grabDevice(BDevices::Keys(BDevices::Keys::KeyType::shiftR)); if (step == 0.0) ValidatableRange::setNrSubs(BWIDGETS_DEFAULT_NR_SUBSTEPS); setFocusText([](const Widget* w) {return w->getTitle() + ": " + (dynamic_cast*> (w) ? std::to_string (dynamic_cast*> (w)->getValue()) : "");}); } template inline Widget* Pad::clone () const { Widget* f = new Pad (urid_, title_); f->copy (this); return f; } template inline void Pad::copy (const Pad* that) { fineTuned_ = that->fineTuned_; storedValue_ = that->storedValue_; Scrollable::operator= (*that); Clickable::operator= (*that); ValueTransferable::operator= (*that); ValidatableRange::operator= (*that); ValueableTyped::operator= (*that); KeyPressable::operator=(*that); Widget::copy (that); } template inline void Pad::setStep (const double &step) { ValidatableRange::setStep(step); if (step == 0.0) ValidatableRange::setNrSubs(BWIDGETS_DEFAULT_NR_SUBSTEPS); } template inline void Pad::enter () { if (isEnterable() && (!isEntered())) { grabDevice (BDevices::Keys()); Widget::enter(); } } template inline void Pad::leave () { if (isEnterable() && isEntered()) { if (isDeviceGrabbed(BDevices::Keys())) freeDevice(BDevices::Keys ()); Widget::leave(); } } template inline void Pad::resize () { BUtilities::Area<> a = (children_.empty()? BUtilities::Area<>(0, 0, BWIDGETS_DEFAULT_PAD_WIDTH, BWIDGETS_DEFAULT_PAD_HEIGHT) : BUtilities::Area<>()); for (Linkable* c : children_) { Widget* w = dynamic_cast(c); if (w) a.extend (BUtilities::Area<>(w->getPosition(), w->getPosition() + w->getExtends())); } resize (a.getExtends()); } template inline void Pad::resize (const double width, const double height) { resize (BUtilities::Point<> (width, height)); } template inline void Pad::resize (const BUtilities::Point<> extends) { Widget::resize (extends); } template inline void Pad::onButtonPressed (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast (event); if (!pev) return; enter(); if (this->getValue() == this->getMin()) this->setValue (storedValue_); else { storedValue_ = this->getValue(); this->setValue (this->getMin()); }; Clickable::onButtonPressed (event); } template inline void Pad::onWheelScrolled (BEvents::Event* event) { BEvents::WheelEvent* wev = dynamic_cast (event); if (!wev) return; if (getHeight()) { if (this->getStep() != T()) this->setValue (this->getValue() + wev->getDelta().y * (fineTuned_ ? this->getSubStep() : this->getStep())); else { const double step = (fineTuned_ ? 1.0 / ((static_cast(this->getNrSubs() + 1.0)) * this->getHeight()) : 1.0 / this->getHeight()); this->setValue (this->getValueFromRatio (this->getRatioFromValue (this->getValue()) + wev->getDelta().y * step)); } } Scrollable::onWheelScrolled (event); } template inline void Pad::onKeyPressed (BEvents::Event* event) { BEvents::KeyEvent* kev = dynamic_cast(event); if (!kev) return; if (kev->getWidget() != this) return; BDevices::Keys::KeyType key = static_cast(kev->getKey ()); switch (kev->getKey ()) { case BDevices::Keys::keyCode(BDevices::Keys::KeyType::shiftL): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::shiftR): fineTuned_ = true; break; case '-': case BDevices::Keys::keyCode(BDevices::Keys::KeyType::down): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::left): { BEvents::WheelEvent wev = BEvents::WheelEvent(this, BEvents::Event::EventType::wheelScrollEvent, 0.5 * getWidth(), 0.5 * getHeight(), 0, 1); onWheelScrolled(&wev); } break; case '+': case BDevices::Keys::keyCode(BDevices::Keys::KeyType::up): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::right): { BEvents::WheelEvent wev = BEvents::WheelEvent(this, BEvents::Event::EventType::wheelScrollEvent, 0.5 * getWidth(), 0.5 * getHeight(), 0, -1); onWheelScrolled(&wev); } break; case BDevices::Keys::keyCode(BDevices::Keys::KeyType::escape): leave(); break; default: break; } KeyPressable::onKeyPressed(event); } template inline void Pad::onKeyReleased (BEvents::Event* event) { BEvents::KeyEvent* kev = dynamic_cast(event); if (!kev) return; if (kev->getWidget() != this) return; BDevices::Keys::KeyType key = static_cast(kev->getKey ()); switch (key) { case BDevices::Keys::KeyType::shiftL: case BDevices::Keys::KeyType::shiftR: fineTuned_ = false; break; default: break; } KeyPressable::onKeyReleased(event); } template inline void Pad::draw () { draw (0, 0, getWidth(), getHeight()); } template inline void Pad::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } template inline void Pad::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; const double x0 = getXOffset (); const double y0 = getYOffset (); const double w = getEffectiveWidth (); const double h = getEffectiveHeight (); if ((h >= 1) && (w >= 1)) { // Draw super class widget elements first Widget::draw (area); cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); const double rval = this->getRatioFromValue (this->getValue()); const BStyles::Color butColor = getFgColors()[getStatus()].illuminate (-0.95 + 0.95 * rval); drawPad (cr, x0, y0, w, h, butColor); cairo_destroy (cr); } } } } #endif /* BWIDGETS_PAD_HPP_ */ src/BWidgets/BWidgets/Pattern.hpp000066400000000000000000001121561515163050000172150ustar00rootroot00000000000000/* Pattern.hpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #ifndef BWIDGETS_PATTERN_HPP_ #define BWIDGETS_PATTERN_HPP_ #include "Pad.hpp" #include "Supports/Clickable.hpp" #include "Supports/Draggable.hpp" #include "Supports/ValidatableRange.hpp" #include "Supports/ValueTransferable.hpp" #include "Supports/KeyPressable.hpp" #include "../BEvents/PointerEvent.hpp" #ifndef BWIDGETS_DEFAULT_PATTERN_WIDTH #define BWIDGETS_DEFAULT_PATTERN_WIDTH 400 #endif #ifndef BWIDGETS_DEFAULT_PATTERN_HEIGHT #define BWIDGETS_DEFAULT_PATTERN_HEIGHT 200 #endif namespace BWidgets { /** * @brief Composite widget displaying a pattern of pad widgets (default: * Pads). * @tparam T Pad widget type. * * %Pattern is a Valueable widget displaying a pattern of pad widgets * (default: Pads). It is intended to use a Pad-derived widget to display a * step or pad sequencer-like pattern, but it is also possible to use any * other Valueable widget. The pad widgets value type * * MUST support the standard comparison operators, * * MUST support the standard arithmetic operators. * * MUST be compatible with ValueableTyped, ValidatableRange, and * ValueTransferable. * * %Pattern allows to draw a pattern by left-clicking on the pads or dragging * over the pads via support of Draggable and setting the pad values to * their @c getMin() or defined default drawing value (defined with * @c pads.setValue() ), respectively. %Pattern also supports KeyPressable. * * Right-clicking picks the respective pad value and re-defines the default * drawing value. This action is equivalent to left-clicking in the * PICK_MODE. * * If the select mode is on (by setting the EditMode, e. g., cut, copy, * delete, swap), pressing the left mouse button or dragging will mark the * respective pad instead and the action of the * selected EditMode will be applied after the button release. * * Pattern is an Enterable Widget. Once entered (e.g., by clicking on it), * keyboard control is enabled: * * Cursor keys for navigation * * SHIFT + cursor keys for dragging (only in select mode) * * CTRL + A to select all (only in select mode) * * +/- to increase or decrease the recent pad value * * ENTER to apply action * * ESCAPE to leave this Pattern. * * The value of the %Pattern is a 2D vector of @c std::pair with the repective * pad extends (default: BUtilities::Point(0, 0)) as the first and * the respective pad value as the second type. * * @todo Support change pattern size. * @todo Support merge pads by dragging. * @todo Support Journal. */ template > class Pattern : public Widget, public ValueableTyped, typename T::value_type>>>>, public Clickable, public Draggable, public KeyPressable { public: typedef std::vector, typename T::value_type>>> value_type; protected: /** * @brief Pad value and value modifiers template class. */ class PadsTemplType : public ValueableTyped, public ValidatableRange, public ValueTransferable { private: Pattern* parent__; public: PadsTemplType () = delete; PadsTemplType (Pattern* parent); PadsTemplType (const PadsTemplType& that) = delete; ~PadsTemplType () = default; PadsTemplType& operator= (const PadsTemplType& that); /** * @brief Sets the range lower limit. * @param min Lower limit. */ virtual void setMin (const typename T::value_type& min) override; /** * @brief Sets the range upper limit. * @param min Upper limit. */ virtual void setMax (const typename T::value_type& max) override; /** * @brief Sets the range step size. * @param min Step size. */ virtual void setStep (const typename T::value_type& step) override; /** * @brief Sets the value range. * @param min Lower limit. * @param max Upper limit. * @param step Step. */ virtual void setRange (const typename T::value_type& min, const typename T::value_type& max, const typename T::value_type& step) override; /** * @brief Sets the transfer function. * @param func Transfer function. * * The transfer function is used * to transfer a value from an external context (e. g., frequencies with a * logarithmic distribution) to an internal context (e. g., a slider with * linear distribution). In this case a possible transfer function would be: * @code * [] (const double& x) {return log10 (x);} * @endcode * * The transfer function (and its re-transfer function) MUST be biunique. */ virtual void setTransferFunction (std::function func) override; /** * @brief Sets the re-transfer function. * @param func Re-transfer function. * * The re-transfer function is used to transfer a value from an internal * context (e. g., a * position within a slider with linear distribution) to an external * context (e. g., frequencies with a logarithmic distribution). In this * case a possible re-transfer function would be: * @code * [] (const double& x) {return pow (10, x);} * @endcode * * The transfer function (and its re-transfer function) MUST be biunique. */ virtual void setReTransferFunction (std::function func) override; }; public: /** * @brief Allows to set value modifiers (ValidatableRange, * ValueTransferable) to all pads and to set the default * value for clicked pads. */ PadsTemplType pads; enum class EditMode { edit = 0, pick, select, cut, copy, paste, del, xflip, yflip }; protected: size_t columns_; size_t rows_; std::vector> pads_; BUtilities::Area selection_; BUtilities::Point selectionP1_; BUtilities::Point selectionP2_; bool selected_; bool drag_; EditMode editMode_; bool allowYMerge_; value_type clipBoard_; private: bool padOn__; // Status of the pad where button pressed, used for // onPointerDragged() public: /** * @brief Constructs a new %Pattern object with default parameters. */ Pattern (); /** * @brief Constructs a new %Pattern object with default parameters. * @param URID URID. * @param title %Widget title. */ Pattern (const uint32_t urid, const std::string& title); /** * @brief Creates a %Pattern with default size. * @param columns Number of columns. * @param rows Number of rows. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ Pattern (const size_t columns, const size_t rows, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); /** * @brief Creates a %Pattern. * @param x %Widget X origin coordinate. * @param y %Widget Y origin coordinate. * @param width %Widget width. * @param height %Widget height. * @param columns Number of columns. * @param rows Number of rows. * @param urid Optional, URID (default = BUTILITIES_URID_UNKNOWN_URID). * @param title Optional, %Widget title (default = ""). */ Pattern (const double x, const double y, const double width, const double height, const size_t columns, const size_t rows, uint32_t urid = BUTILITIES_URID_UNKNOWN_URID, std::string title = ""); ~Pattern(); /** * @brief Creates a clone of the %Pattern. * @return Pointer to the new %Pattern. * * Creates a clone of this %Pattern by copying all properties. But NOT * its linkage. * * Allocated heap memory needs to be freed using @c delete if the clone * in not needed anymore! */ virtual Widget* clone () const override; /** * @brief Copies from another %Pattern. * @param that Other %Pattern. * * Copies all properties from another %Pattern. But NOT its linkage. */ void copy (const Pattern* that); /** * @brief Changes the edit mode. * @param editMode EditMode. */ void setEditMode (const EditMode editMode); /** * @brief Gets the edit mode. * return EditMode. */ EditMode getEditMode () const; /** * @brief Selects a %Pattern area. * @param p1 First point (column, row). * @param p2 Second point (column, row). */ void select (const BUtilities::Point p1, const BUtilities::Point p2); /** * @brief Performs an action (cut, copy, paste, ...) on the pattern * pad values. * @param mode EditMode for action. * @param selection Area to apply action on. */ void action (const EditMode mode, const BUtilities::Area selection); /** * @brief Cuts pad values to the clipboard. * @param selection Selection area. * * Pads of the cut area will be left with a getMin() value. */ void cutValues (const BUtilities::Area selection); /** * @brief Copies pad values to the clipboard. * @param selection Selection area. */ void copyValues (const BUtilities::Area selection); /** * @brief Pastes pad values from the clipboard. * @param pos Start position to paste at. */ void pasteValues (const BUtilities::Point pos); /** * @brief Deletes pad values and set getMin() instead. * @param selection Selection area. */ void deleteValues (const BUtilities::Area selection); /** * @brief Flips pad values horizontally. * @param selection Selection area. */ void xflipValues (const BUtilities::Area selection); /** * @brief Flips pad values vertically. * @param selection Selection area. */ void yflipValues (const BUtilities::Area selection); /** * @brief Gets the Wigget for the respective pad. * @param column %Pattern column (starting with 0). * @param row %Pattern row (starting with 0). * @return Pointer to the Widget for the respective pad. */ Widget* getPad (const size_t column, const size_t row) const; /** * @brief Optimizes the widget extends. * * Firstly optimizes the pad sizes. Then resizes the widget to include * all direct children (including the pads) into the widget area. */ virtual void resize () override; /** * @brief Resizes the widget extends. * @param width New widget width. * @param height New widget height. */ virtual void resize (const double width, const double height) override; /** * @brief Resizes the widget extends. * @param extends New widget extends. */ virtual void resize (const BUtilities::Point<> extends) override; /** * @brief Enters this %Pattern. * * Activates this %Pattern, takes over keyboard control, and calls to leave * all other widgets linked to the main Window to become the only entered * Widget. */ virtual void enter () override; /** * @brief Leaves this %Pattern * * De-activates this %Pattern and release keyboard conrol. */ virtual void leave () override; /** * @brief Method to be called following an object state change. */ virtual void update () override; /** * @brief Method called when pointer button pressed. * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button pressed. By default, it calls its static callback * function. */ virtual void onButtonPressed (BEvents::Event* event) override; /** * @brief Method called when pointer button released. * @param event Passed Event. * * Overridable method called from the main window event scheduler when * pointer button released. By default, it calls its static callback * function. */ virtual void onButtonReleased (BEvents::Event* event) override; /** * @brief Method called upon (mouse) wheel scroll. * @param event Passed Event. * * Overridable method called from the main window event scheduler upon * a (mouse) wheel scroll. Increases or decreases the value and calls the * widget static callback function. */ virtual void onPointerDragged (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyPressEvent is * received. * @param event Passed Event. * * Overridable method called from the main window event scheduler if a * key is pressed. By default, it calls its static callback function. */ virtual void onKeyPressed (BEvents::Event* event) override; /** * @brief Method when a KeyEvent with the type keyReleaseEvent is * received. * @param event Passed Event. * * Overridable method called from the main window event scheduler if a * key is released. By default, it calls its static callback function. */ virtual void onKeyReleased (BEvents::Event* event) override; protected: /** * @brief Callback function for VALUE_CHANGED_EVENTs emitted by pads. * @param event Passed event. */ static void padChangedCallback (BEvents::Event* event); /** * @brief Tests if the %Pattern is in an EditMode that supports * selection of pads by clicking or dragging. * @return True if selection of pads is supported, otherwise false. */ bool isSelectMode() const; /** * @brief Gets the pad index (column, row) from a position. * @param x X position relative to the %Pattern origin. * @param y Y position relative to the %Pattern origin. * @return Pad index asBUtilities::Point. */ BUtilities::Point getPadIndex (const double x, const double y) const; void updatePads(); /** * @brief Unclipped draw to the surface (if is visualizable). */ virtual void draw () override; /** * @brief Clipped Draw to the surface (if is visualizable). * @param x0 X origin of the clipped area. * @param y0 Y origin of the clipped area. * @param width Width of the clipped area. * @param height Height of the clipped area. */ virtual void draw (const double x0, const double y0, const double width, const double height) override; /** * @brief Clipped Draw to the surface (if is visualizable). * @param area Clipped area. */ virtual void draw (const BUtilities::Area<>& area) override; }; template inline Pattern::PadsTemplType::PadsTemplType (Pattern* parent) : ValidatableRange (), ValueTransferable (), parent__ (parent) { } template inline typename Pattern::PadsTemplType& Pattern::PadsTemplType::operator= (const Pattern::PadsTemplType& that) { // Keep parent__ ! ValueTransferable::operator= (that); ValidatableRange::operator= (that); ValueableTyped::operator= (that); } template inline void Pattern::PadsTemplType::setMin (const typename T::value_type& min) { ValidatableRange::setMin (min); parent__->updatePads(); } template inline void Pattern::PadsTemplType::setMax (const typename T::value_type& max) { ValidatableRange::setMax (max); parent__->updatePads(); } template inline void Pattern::PadsTemplType::setStep (const typename T::value_type& step) { ValidatableRange::setStep (step); parent__->updatePads(); } template inline void Pattern::PadsTemplType::setRange (const typename T::value_type& min, const typename T::value_type& max, const typename T::value_type& step) { ValidatableRange::setRange (min, max, step); parent__->updatePads(); } template inline void Pattern::PadsTemplType::setTransferFunction (std::function func) { ValueTransferable::setTransferFunction (func); parent__->updatePads(); } template inline void Pattern::PadsTemplType::setReTransferFunction (std::function func) { ValueTransferable::setReTransferFunction (func); parent__->updatePads(); } template inline Pattern::Pattern () : Pattern (0.0, 0.0, BWIDGETS_DEFAULT_PATTERN_WIDTH, BWIDGETS_DEFAULT_PATTERN_HEIGHT, 0, 0, BUTILITIES_URID_UNKNOWN_URID, "") { } template inline Pattern::Pattern (const uint32_t urid, const std::string& title) : Pattern (0.0, 0.0, BWIDGETS_DEFAULT_PATTERN_WIDTH, BWIDGETS_DEFAULT_PATTERN_HEIGHT, 0, 0, urid, title) { } template inline Pattern::Pattern (const size_t columns, const size_t rows, uint32_t urid, std::string title) : Pattern (0.0, 0.0, BWIDGETS_DEFAULT_PATTERN_WIDTH, BWIDGETS_DEFAULT_PATTERN_HEIGHT, columns, rows, urid, title) { } template inline Pattern::Pattern (const double x, const double y, const double width, const double height, const size_t columns, const size_t rows, uint32_t urid, std::string title) : Widget (x, y, width, height, urid, title), ValueableTyped, typename T::value_type>>>> (), Clickable (), Draggable (), KeyPressable(), pads (this), columns_(columns), rows_(rows), pads_ (), selection_(), selectionP1_(), selectionP2_(), selected_ (false), drag_ (false), editMode_ (EditMode::edit), allowYMerge_ (false), clipBoard_(), padOn__ (false) { setActivatable(true); setEnterable(true); setKeyPressable(false); pads.setValue (1.0); for (size_t r = 0; r < rows_; ++r) { std::vector, typename T::value_type>> vs; std::vector ws; for (size_t c = 0; c < columns_; ++c) { T* w = new T(BUtilities::Urid::urid (BUtilities::Urid::uri (urid) + "/pad"), "(" + std::to_string(c) + ", " + std::to_string(r) + ")"); w->setActivatable(false); w->setEnterable(false); w->setCallbackFunction (BEvents::Event::EventType::valueChangedEvent, padChangedCallback); w->setClickable (false); w->setEventPassable(BEvents::Event::EventType::buttonEvents | BEvents::Event::EventType::pointerDragEvent); add (w); ws.push_back (w); BUtilities::Point ext (0, 0); typename T::value_type value = typename T::value_type (); std::pair, typename T::value_type> v (ext, value); vs.push_back (v); } pads_.push_back (ws); this->value_.push_back (vs); } } template inline Pattern::~Pattern () { if (getParentWidget()) getParentWidget()->release (this); for (size_t r = 0; r < rows_; ++r) { for (size_t c = 0; c < columns_; ++c) { if (pads_[r][c]) delete pads_[r][c]; } } } template inline Widget* Pattern::clone () const { Widget* f = new Pattern (urid_, title_); f->copy (this); return f; } template inline void Pattern::copy (const Pattern* that) { pads = that->pads; for (size_t r = 0; r < rows_; ++r) { for (size_t c = 0; c < columns_; ++c) { if (pads_[r][c]) delete pads_[r][c]; pads_[r][c] = nullptr; } } pads_.clear(); columns_ = that->columns_; rows_ = that->rows_; for (size_t r = 0; r < rows_; ++r) { std::vector ws; for (size_t c = 0; c < columns_; ++c) { Widget* w = (that->pads_[r][c] ? that->pads_[r][c]->clone() : nullptr); add (w); ws.push_back (w); } pads_.push_back (ws); } selection_ = that->selectionPos_; selectionP1_ = that->selectionP1_; selectionP2_ = that->selectionP2_; selected_ = that->selected_; drag_ = that->drag_; editMode_ = that->editMode_; allowYMerge_ = that->allowYMerge_; clipBoard_ = that->clipBoard_; padOn__ = that->padOn; KeyPressable::operator=(*that); Draggable::operator= (*that); Clickable::operator= (*that); ValueableTyped::operator= (*that); Widget::copy (that); } template void Pattern::setEditMode (const EditMode editMode) { editMode_ = editMode; selection_ = BUtilities::Area(); selectionP1_ = BUtilities::Point(); selectionP2_ = BUtilities::Point(); selected_ = false; update(); } template typename Pattern::EditMode Pattern::getEditMode() const { return editMode_; } template void Pattern::select (const BUtilities::Point p1, const BUtilities::Point p2) { selectionP1_ = BUtilities::Point(std::min (p1.x, (columns_ > 0 ? columns_ - 1 : 0)), std::min (p1.y, (rows_ > 0 ? rows_ - 1 : 0))); selectionP2_ = BUtilities::Point(std::min (p2.x, (columns_ > 0 ? columns_ - 1 : 0)), std::min (p2.y, (rows_ > 0 ? rows_ - 1 : 0))); selection_ = BUtilities::Area (selectionP1_, selectionP2_); selected_ = true; update(); } template void Pattern::action (const EditMode mode, const BUtilities::Area selection) { switch (mode) { case EditMode::edit: break; case EditMode::pick: break; case EditMode::cut: cutValues (selection); break; case EditMode::copy: copyValues (selection); break; case EditMode::paste: pasteValues (selection.getPosition()); break; case EditMode::del: deleteValues (selection); break; case EditMode::xflip: xflipValues (selection); break; case EditMode::yflip: yflipValues (selection); break; default: break; } } template void Pattern::cutValues(const BUtilities::Area selection) { copyValues (selection); deleteValues (selection); } template void Pattern::copyValues(const BUtilities::Area selection) { clipBoard_.clear(); for (size_t dr = 0; dr <= selection.getHeight(); ++dr) { std::vector, typename T::value_type>> vs; for (size_t dc = 0; dc <= selection.getWidth(); ++dc) { const std::pair, typename T::value_type> v = this->value_[selection.getY() + dr][selection.getX() + dc]; vs.push_back (v); } clipBoard_.push_back (vs); } } template void Pattern::pasteValues(const BUtilities::Point pos) { for (size_t dr = 0; (dr < clipBoard_.size()) && (pos.y + dr < rows_); ++dr) { const std::vector, typename T::value_type>> vs = clipBoard_[dr]; for (size_t dc = 0; (dc < vs.size()) && (pos.x + dc < columns_); ++dc) { const std::pair, typename T::value_type> v = vs[dc]; T* w = dynamic_cast(pads_[pos.y + dr][pos.x + dc]); w->setValue (v.second); // TODO pad extends } } } template void Pattern::deleteValues(const BUtilities::Area selection) { for (size_t dr = 0; dr <= selection.getHeight(); ++dr) { for (size_t dc = 0; dc <= selection.getWidth(); ++dc) { T* w = dynamic_cast(pads_[selection.getY() + dr][selection.getX() + dc]); w->setValue (w->getMin()); } } } template void Pattern::xflipValues(const BUtilities::Area selection) { for (size_t dr = 0; dr <= selection.getHeight(); ++dr) { for (size_t dc = 0; dc < (selection.getWidth() + 1) / 2; ++dc) { T* w1 = dynamic_cast(pads_[selection.getY() + dr][selection.getX() + dc]); T* w2 = dynamic_cast(pads_[selection.getY() + dr][selection.getX() + selection.getWidth() - dc]); typename T::value_type v2 = w2->getValue(); w2->setValue (w1->getValue()); w1->setValue (v2); } } } template void Pattern::yflipValues(const BUtilities::Area selection) { for (size_t dr = 0; dr < (selection.getHeight() + 1) / 2; ++dr) { for (size_t dc = 0; dc <= selection.getWidth() ; ++dc) { T* w1 = dynamic_cast(pads_[selection.getY() + dr][selection.getX() + dc]); T* w2 = dynamic_cast(pads_[selection.getY() + selection.getHeight() - dr][selection.getX() + dc]); typename T::value_type v2 = w2->getValue(); w2->setValue (w1->getValue()); w1->setValue (v2); } } } template inline Widget* Pattern::getPad (const size_t column, const size_t row) const { return ((column < columns_) && (row < rows_) ? pads_[row][column] : nullptr); } template inline void Pattern::resize () { double y = getYOffset(); for (size_t r = 0; r < rows_; ++r) { double x = getXOffset(); for (size_t c = 0; c < columns_; ++c) { pads_[r][c]->resize (); pads_[r][c]->moveTo (x, y); x += pads_[r][c]->getWidth(); } if (!pads_[r].empty()) y += pads_[r][0]->getHeight(); } Widget::resize (); } template inline void Pattern::resize (const double width, const double height) { resize (BUtilities::Point<> (width, height)); } template inline void Pattern::resize (const BUtilities::Point<> extends) { Widget::resize (extends); } template inline void Pattern::enter () { if (isEnterable() && (!isEntered())) { setKeyPressable(true); grabDevice (BDevices::Keys()); Widget::enter(); } } template inline void Pattern::leave () { if (isEnterable() && isEntered()) { setKeyPressable(false); if (isDeviceGrabbed(BDevices::Keys())) freeDevice(BDevices::Keys ()); Widget::leave(); } } template inline void Pattern::update () { for (size_t r = 0; r < rows_; ++r) { for (size_t c = 0; c < columns_; /*empty*/) { size_t st = (allowYMerge_ ? this->getValue()[r][c].first.x + 1 : 1); pads_[r][c]->moveTo ( getXOffset() + getEffectiveWidth() * static_cast(c) / static_cast(columns_) + 0.01 * getEffectiveWidth() / static_cast(columns_), getYOffset() + getEffectiveHeight() * static_cast(r) / static_cast(rows_) + 0.01 * getEffectiveHeight() / static_cast(rows_) ); pads_[r][c]->resize ( (static_cast (st - 1) + 0.98) * getEffectiveWidth() / static_cast(columns_), 0.98 * getEffectiveHeight() / static_cast(rows_) ); pads_[r][c]->show(); // TODO Hide pads under merged pads, once merging is established c += st; } } Widget::update(); } template inline void Pattern::onButtonPressed (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast(event); if (!pev) return; // Enter enter(); // Calculate position const BUtilities::Point p = getPadIndex (pev->getPosition().x, pev->getPosition().y); // Pick mode: if (editMode_ == EditMode::pick || (pev->getButton() == BDevices::MouseButton::ButtonType::right)) { pads.setValue (dynamic_cast(pads_[p.y][p.x])->getValue()); if (isEnterable() && isEntered()) select (p, p); } // Paste mode: else if (editMode_ == EditMode::paste) { pasteValues (p); if (isEnterable() && isEntered()) select (p, p); } // Selection mode: else if (isSelectMode()) { if (isEnterable() && isEntered() & selected_ & drag_) select (selectionP1_, p); else select (p, p); } // Default: Invert pad value else { T* w = dynamic_cast(pads_[p.y][p.x]); typename T::value_type v = pads.getValue(); padOn__ = (w->getValue() != v); w->setValue (padOn__ ? v : w->getMin()); if (isEnterable() && isEntered()) select (p, p); } Clickable::onButtonPressed (event); } template inline void Pattern::onButtonReleased (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast(event); if (!pev) return; // Calculate position const BUtilities::Point p = getPadIndex (pev->getPosition().x, pev->getPosition().y); if (selected_ && isSelectMode() && (pev->getButton() == BDevices::MouseButton::ButtonType::left)) action (getEditMode(), selection_); if (isEnterable() && isEntered() && selected_) select (p, p); else selected_ = false; update(); Clickable::onButtonReleased (event); } template inline void Pattern::onPointerDragged (BEvents::Event* event) { BEvents::PointerEvent* pev = dynamic_cast(event); if (!pev) return; // Calculate position const BUtilities::Point p0 = getPadIndex (pev->getOrigin().x, pev->getOrigin().y); const BUtilities::Point p = getPadIndex (pev->getPosition().x, pev->getPosition().y); // Selection mode: Drag selection if (isSelectMode() && (pev->getButton() == BDevices::MouseButton::ButtonType::left)) select (p0, p); // Default: else { // Calculate previous position const BUtilities::Point p2 = getPadIndex (pev->getPosition().x - pev->getDelta().x, pev->getPosition().y - pev->getDelta().y); T* w = dynamic_cast(pads_[p.y][p.x]); if (p != p2) { // Pick mode: if (editMode_ == EditMode::pick || (pev->getButton() == BDevices::MouseButton::ButtonType::right)) pads.setValue (dynamic_cast(pads_[p.y][p.x])->getValue()); // Paste mode: else if (editMode_ == EditMode::paste) pasteValues (p); // Default: Set or unset pad else w->setValue (padOn__ ? pads.getValue() : w->getMin()); if (isEnterable() && isEntered()) select (p, p); } } Draggable::onPointerDragged (event); } template inline void Pattern::onKeyPressed (BEvents::Event* event) { BEvents::KeyEvent* kev = dynamic_cast(event); if (!kev) return; if (kev->getWidget() != this) return; switch (kev->getKey ()) { case 1 /* CTRL A*/: if (isSelectMode()) { select (BUtilities::Point (0, 0), BUtilities::Point (columns_ > 0 ? columns_ - 1 : 0, rows_ > 0 ? rows_ - 1 : 0)); } break; case BDevices::Keys::keyCode(BDevices::Keys::KeyType::shiftL): case BDevices::Keys::keyCode(BDevices::Keys::KeyType::shiftR): drag_ = true; break; case BDevices::Keys::keyCode(BDevices::Keys::KeyType::left): if (selected_ && (selection_.getX() > 0)) { const BUtilities::Point p = BUtilities::Point (selectionP2_.x > 0 ? selectionP2_.x - 1 : 0, selectionP2_.y); if (selected_ & drag_ & isSelectMode()) select (selectionP1_, p); else select(p, p); } break; case BDevices::Keys::keyCode(BDevices::Keys::KeyType::right): if (selected_ && (selection_.getX() + 1 < columns_)) { const BUtilities::Point p = BUtilities::Point (selectionP2_.x + 1, selectionP2_.y); if (selected_ & drag_ & isSelectMode()) select (selectionP1_, p); else select(p, p); } break; case BDevices::Keys::keyCode(BDevices::Keys::KeyType::up): if (selected_ && (selection_.getY() > 0)) { const BUtilities::Point p = BUtilities::Point (selectionP2_.x, selectionP2_.y > 0 ? selectionP2_.y - 1 : 0); if (selected_ & drag_ & isSelectMode()) select (selectionP1_, p); else select(p, p); } break; case BDevices::Keys::keyCode(BDevices::Keys::KeyType::down): if (selected_ && (selection_.getY() + 1 < rows_)) { const BUtilities::Point p = BUtilities::Point (selectionP2_.x, selectionP2_.y + 1); if (selected_ & drag_ & isSelectMode()) select (selectionP1_, p); else select(p, p); } break; case '+': { T* w = dynamic_cast(pads_[selectionP2_.y][selectionP2_.x]); if (w) { BEvents::WheelEvent wev = BEvents::WheelEvent(w, BEvents::Event::EventType::wheelScrollEvent, 0.5 * w->getWidth(), 0.5 * w->getHeight(), 0, -1); w->onWheelScrolled(&wev); } } break; case '-': { T* w = dynamic_cast(pads_[selectionP2_.y][selectionP2_.x]); if (w) { BEvents::WheelEvent wev = BEvents::WheelEvent(w, BEvents::Event::EventType::wheelScrollEvent, 0.5 * w->getWidth(), 0.5 * w->getHeight(), 0, 1); w->onWheelScrolled(&wev); } } break; case BDevices::Keys::keyCode(BDevices::Keys::KeyType::enter): if (selected_) { const BUtilities::Point p = selection_.getPosition(); if (editMode_ == EditMode::edit) { T* w = dynamic_cast(pads_[p.y][p.x]); typename T::value_type v = pads.getValue(); padOn__ = (w->getValue() != v); w->setValue (padOn__ ? v : w->getMin()); } else if (editMode_ == EditMode::pick) pads.setValue (dynamic_cast(pads_[p.y][p.x])->getValue()); else if (editMode_ == EditMode::paste) pasteValues (p); else action (getEditMode(), selection_); select (p, p); } break; case BDevices::Keys::keyCode(BDevices::Keys::KeyType::escape): // Area selected: reset selection to last point if (selected_ & isSelectMode() && (selectionP1_ != selectionP2_)) { select (selectionP2_, selectionP2_); } // Otherwise: Leave else { selected_ = false; leave(); } break; default: break; } KeyPressable::onKeyPressed(event); } template inline void Pattern::onKeyReleased (BEvents::Event* event) { BEvents::KeyEvent* kev = dynamic_cast(event); if (!kev) return; if (kev->getWidget() != this) return; BDevices::Keys::KeyType key = static_cast(kev->getKey ()); switch (key) { case BDevices::Keys::KeyType::shiftL: case BDevices::Keys::KeyType::shiftR: drag_ = false; break; default: break; } KeyPressable::onKeyReleased(event); } template inline void Pattern::padChangedCallback (BEvents::Event* event) { BEvents::ValueChangeTypedEvent* vev = dynamic_cast*>(event); if (!vev) return; T* w = dynamic_cast(vev->getWidget()); if (!w) return; Pattern* p = dynamic_cast*>(w->getParentWidget()); if (!p) return; // Get column/row // TODO from coordinates // Fallback: iterate for (size_t r = 0; r < p->rows_; ++r) { for (size_t c = 0; c < p->columns_; ++c) { if (w == p->pads_[r][c]) { value_type v = p->getValue(); v[r][c].second = w->getValue(); p->setValue (v); break; } } } } template inline bool Pattern::isSelectMode () const { return (editMode_ == EditMode::cut) || (editMode_ == EditMode::copy) || (editMode_ == EditMode::del) || (editMode_ == EditMode::xflip) || (editMode_ == EditMode::yflip); } template inline BUtilities::Point Pattern::getPadIndex (const double x, const double y) const { return BUtilities::Point ( std::min (std::max (static_cast(static_cast(columns_) * (x - getXOffset()) / getEffectiveWidth()), 0), static_cast (columns_ == 0 ? 0 : columns_ - 1)), std::min (std::max (static_cast(static_cast(rows_) * (y - getYOffset()) / getEffectiveHeight()), 0), static_cast(rows_ == 0 ? 0 : rows_ - 1)) ); } template inline void Pattern::updatePads() { for (size_t r = 0; r < rows_; ++r) { for (size_t c = 0; c < columns_; ++c) { T* w = dynamic_cast(pads_[r][c]); w->setRange (pads.getMin(), pads.getMax(), pads.getStep()); w->setTransferFunction(pads.getTransferFunction()); w->setReTransferFunction(pads.getReTransferFunction()); } } } template inline void Pattern::draw () { draw (0, 0, getWidth(), getHeight()); } template inline void Pattern::draw (const double x0, const double y0, const double width, const double height) { draw (BUtilities::Area<> (x0, y0, width, height)); } template inline void Pattern::draw (const BUtilities::Area<>& area) { if ((!cairoSurface()) || (cairo_surface_status (cairoSurface()) != CAIRO_STATUS_SUCCESS)) return; if ((getWidth () >= 1) && (getHeight () >= 1)) { // Draw super class widget elements first Widget::draw (area); cairo_t* cr = cairo_create (cairoSurface()); if (cairo_status (cr) == CAIRO_STATUS_SUCCESS) { // Limit cairo-drawing area cairo_rectangle (cr, area.getX (), area.getY (), area.getWidth (), area.getHeight ()); cairo_clip (cr); const double x0 = getXOffset (); const double y0 = getYOffset (); const double w = getEffectiveWidth (); const double h = getEffectiveHeight (); if (selected_ /*&& isSelectMode()*/) { for (size_t r = 0; r < rows_; ++r) { for (size_t c = 0; c < columns_; /* empty */) { size_t st = (allowYMerge_ ? this->getValue()[r][c].first.x + 1 : 1); if (selection_.contains(BUtilities::Point(c, r))) { const double xs = x0 + w * static_cast(c) / static_cast(columns_); const double ys = y0 + h * static_cast(r) / static_cast(rows_); const double ws = w * static_cast(st) / static_cast(columns_); const double hs = h / static_cast(rows_); const BStyles::Color color = getBgColors()[getStatus()].illuminate (BStyles::Color::highLighted); cairo_rectangle (cr, xs, ys, ws, hs); cairo_set_line_width (cr, 0.0); cairo_set_source_rgba (cr, CAIRO_RGBA (color)); cairo_fill (cr); } c += st; } } } cairo_destroy (cr); } } } } #endif /* BWIDGETS_PATTERN_HPP_ */ src/BWidgets/BWidgets/README.md000066400000000000000000001472401515163050000163500ustar00rootroot00000000000000# BWidgets Widget toolkit of the B.Music project. The B.Widgets toolkit is a widget toolkit intended for small (single window) standalone applications and for plugins. It comes along with a series of built-in widgets, including labels, buttons, dials, sliders, menues and so on. B.Widgets allows recursive embedding of widgets including changing the order of embedding. B.Widgets supports events from the keyboard, the mouse, the host windowing system and also internal events like value change and messaging events. B.Widgets supports the system locale / messages translations and its own extensible dictionary for internationalization. Widgets can be decorated using styles. ## Quickstart ### Code: Hello world Create a new project directory and copy B.Widgets as a subirectory called BWidgets. Create a helloworld.cpp file and start coding. You have to 1. include the widgets (or events, or ...) you need into your project, 2. create a main window, 3. create widgets (like a label), 4. add the widgets to the main window, 5. and call the main loop: ``` #include "path_to_BWidgets/BWidgets/Window.hpp" #include "path_to_BWidgets/BWidgets/Label.hpp" using namespace BWidgets; int main () { Window w; Label l ("Hello World!"); w.add (&l); w.run(); } ``` This is all of the magic. Now you can save it build the helloworld executable. ### Build: Hello world To build this example, you should first build the provided libraries from the BWidgets subdirectory. Call starting from your project directory: ``` cd BWidgets make bwidgets cd .. g++ -fPIC -DPIC `pkg-config --cflags x11 cairo` -IBWidgets/include helloworld.cpp -c -o helloworld.o g++ -LBWidgets/build helloworld.o -lbwidgetscore -lpugl -lcairoplus `pkg-config --libs x11 cairo` -o helloworld ``` To see the result, call ``` ./helloworld ``` Further reading: [Build](#build) ### Code: Button test This is another example 1. Include the header files of the widgets you need. ``` #include "path/to/BWidgets/Window.hpp" #include "path/to/BWidgets/TextButton.hpp" ``` Optional, simplify using namespace BWidgets, BStyles, and BEvents: ``` using namespace BWidgets; using namespace BStyles; using namespace BEvents; ``` 2. Create a main window object. ``` Window window (200, 100, 0); // Creates an empty window with size 200 x 100 ``` 3. Create the widget objects you need. ``` Label label ("Button pressed"); // Creates a label with the text // "Button pressed" and optimized size. TextButton button (70, 40, 60, 20, "Press"); // Creates a text Button // at position 70, 40 with // the size 60 x 20 and // the text "Press". ``` 4. Inside `int main()`, add the widgets to the main window (or to other widgets which are (or will be) added to the main window). ``` window.add (&label); // Adds the label to the window. window.add (&button); // Adds the button to the window. ``` Note: Linking widgets to the main window make them visible by default. 5. Optional, change widget attributes and change decoration. ``` label.moveTo (label.center(), label.bottom ()); // Move label to bottom // center. ``` 6. Optional, handle events using callbacks. First create a callback function. ``` void valueChangedCallback (BEvents::Event* event) { ValueChangeTypedEvent* e = // Cast type of dynamic_cast*>(event); // event if (e) { if (e->getValue()) label.show(); // Show if press else label.hide(); // Otherwise hide } } ``` Then link this callback function. ``` button.setCallbackFunction (Event::EventType::valueChangedEvent, valueChangedCallback); ``` 7. For standalone applications, process until the main window will be closed. ``` window.run (); ``` Build and run as described above. You can also find this source code at [../examples/buttontest.cpp](../examples/buttontest.cpp). ![buttontest](../suppl/buttontest.png) ## Namespaces The toolkit uses tools from six namespaces: * `BDevices` * `BEvents` * `BMusic` * `BStyles` * `BUtilities` * `BWidgets` ### BDevices The [`BDevices`](../BDevices/README.md) namespace contains classes for the interaction with the system input devices (mouse, keyboard). ### BEvents The [`BEvents`](../BEvents/README.md) namespace contains different classes of events. `BEvents` are emitted by a widget (or by the system via the main window) to the main window event queue. ### BMusic The [`BMusic`](../BMusic/README.md) namespace contains classes and algorithms for audio processing. ### BStyles The [`BStyles`](../BStyles/README.md) namespace contain classes to describe a widget style. ### BUtilities The [`BUtilities`](../BUtilities/README.md) namespace contains a collection of different useful tools. ### BWidgets Core namespace of the BWidgets toolkit. Contains all widget classes and the supporting interface classes. ## Widgets All widgets are located in the BWidgets namespace. And all widgets are derived from the `Widget` class. Including the main `Window`. Each class may additionally inherit from [Support](#Supports) classes to extend its features. ``` Widget ├── Window ├── Label | ├── EditLabel | ╰── Text ├── Symbol ├── Button | ├── TextButton | ├── SymbolButton | ├── ImageButton | ├── Checkbox | ├── RadioButton | ├── Knob | ├── HSwitch | ╰── VSwitch ├── SpinButton ├── Pad | ╰── SymbolPad ├── Pattern ├── HPianoRoll ├── HMeter | ├── ValueHMeter | ╰── HScale | ├── HScrollBar | ╰── HSlider | ╰── ValueHSlider ├── HRangeScrollBar ├── VMeter | ├── ValueVMeter | ╰── VScale | ├── VScrollBar | ╰── VSlider | ╰── ValueHSlider ├── VRangeScrollBar ├── RadialMeter | ├── ValueRadialMeter | ╰── Dial | ╰── ValueDial ├── Image ├── ConditionalImage ├── ImageHMeter | ╰── ImageHSlider ├── ImageVMeter | ╰── ImageVSlider ├── ImageRadialMeter | ╰── ImageDial ├── SpinBox | ├── ListBox | ╰── ComboBox ╰── Frame ├── Box | ╰── TextBox | ╰── MessageBox ╰── FileChooser ╰── SampleChooser ``` Each widget class Xxx has got at least four* different constructors (demonstrated on the example of `ComboBox`): * `Xxx ()` - The parameter free default constructor. It creates a default default-sized empty (or default content) widget. The widget urid is BUTILITIES_URID_UNKNOWN_URID and can't be changed anymore as the widget urid is immutable. ``` ComboBox (); ``` * `Xxx (urid, title)` - Creates a default default-sized empty (or default content) widget and defines its urid and title. Keep in mind: urid is immutable. ``` ComboBox (0, "ComboBox"); ``` * `Xxx (data, urid, title)` - Creates a default-sized widget with the passed data, urid (optional) and title (optional). ``` ComboBox ({"Berlin", "London", "Madrid", "Paris"}); ``` * `Xxx (x, y, width, height, data, urid, title)` - Creates a widget at the position (x, y) relative to the parent widget with the extends (width, height) with the passed data (optional), urid (optinal) and title (optional)**. ``` ComboBox (0, 0, 120, 20, {"Berlin", "London", "Madrid", "Paris"}); ``` \*Widgets without any additional data to pass (Widget, Frame) have only got three constructors. \*\*Window also has got additional optional parameters after title. You can re-define the widget default size used for `Xxx ()`, `Xxx (urid, title)` and `Xxx (data, urid, title)` by defining the macros `BWIDGETS_DEFAULT_XXX_WIDTH` and `BWIDGETS_DEFAULT_XXX_HEIGHT`. **Note: Widgets in B.Widgets don't have got any copy constructors or assignment operators!** But all widgets have got the following two methods which you can use instead: * `copy (&other)` - Copies the content (but not the linkage and not the URID) from the other object. * `clone ()` - Clones this object by creating a new object on the heap (don't forget to delete at the end) and copies the content including the URID (but not its linkage) to the new object. ### Main Window The main `Window` object is the core `Widget` in BWidgets. Each project MUST contain exactly one `Window` object (more are not allowed, less don't make any sense). The main `Window` object controls the visibility of all linked widgets. All Widgets need be be linked to the main `Window` object to become visible. A simple example of linking and visualizing a "Hello World" `Label` to a `Window` (see [../examples/helloworld.cpp](../examples/helloworld.cpp)): ``` int main () { Window w; // Creates an empty window with default size Label l ("Hello World") // Creates a "Hello world" label w.add (&l); // Links the label to the window w.run (); // Keeps the window open until close } ``` The main `Window` object also controls and routes the events emitted by the linked widgets and by the host system in its event queue and its event handler. The full event routing process is: 1. Emission of an event either by a `Widget` either * by a host event and an assignment to a `Widget` by the main `Window` translate function, or * by the `Widget` directly to the main `Window` event queue. 2. Analyzing, merging and routing in the main `Window` event handler and calling the widget `onXXX()` method. 3. Responding in the widget `onXXX()` method and optional call of a linked `Callback` function. 4. Optional, respond to the effect in a `Callback` function. ### Widget `Widget` is the base widget class of BWidgets. All widgets support the features: * Linkable (may got linked to parent and child widgets) * Visualizable (may draw to RGBA surface layers and may become visible) * EventMergeable (may let the main `Window` merge its events) * EventPassable (may pass events to the subjacent widget) * Activatable (be able to get activated by an user interaction, inactive by default) * Enterable (be able to be entered by an user interaction, inactive by default) In addtion, widgets have got: * an *URID* to identify the widget, * a *position* to be placed (relative to its parent widget), * an infomation about its *stacking* type, * a *status* , * a *title* , and * a *style* . `Widget` objects are the most simple widgets. Their visual content is only defined by the `Style` properties border and background. And the title may be shown on hovering over the widget (if title is set). There is no further user interaction. Each `Widget` must be directly or indirectly linked to the main `Window` to become visible. ### Frame `Frame` is a simple derivative of `Widget` without any additional content. But it supports `Draggable`. This means, you can drag and drop `Frame` objects. ### Label ![label](../suppl/Label.png) `Label` is a simple one line text output widget. It can be decorated by setting a font and a text color in addtion to the style properties supported by `Widget`. ### EditLabel ![labeledit](../suppl/EditLabel.png) `EditLabel` is an editable version of `Label`. It additionally supports: * `Clickable` and `Draggable` to set the cursor, * `KeyPressable` to enter / change a text via the keyboard, and * `Valueable` to store the text and inform the event handler. `EditLabel` can be decorated like a `Label`. ### Text ![text](../suppl/Text.png) `Text` is a multi line text output widget. It can be decorated like a `Label`. ### Image ![image](../suppl/Image.png) `Image` is an image displaying widget. It supports one image for each Status. ### Symbol ![symbol](../suppl/Symbol.png) `Symbol` is a Widget that displays a symbol. It can be decorated by setting a TxColor in addtion to the StyleProperty settings supported by Widget. ### Button ![button](../suppl/Button.png) `Button` draws a simple button. It supports `Clickable`, `KeyPressable`, and `Toggleable`. The value has two conditions: on (true) or off (false). A `Button` changes its border color upon changing the condition. ### TextButton ![textbutton](../suppl/TextButton.png) `TextButton` is a `Button` containing a label. A `TextButton` changes its label status (and thus its color) in addition to the change of its border color upon changing the condition. ### SymbolButton ![symbolbutton](../suppl/SymbolButton.png) `SymbolButton` is a `Button` containing a `Symbol`. A SymbolButton changes its symbol status (and thus its color) in addition to the change of its border color upon changing the condition. ### ImageButton ![imagebutton](../suppl/ImageButton.png) `ImageButton` is a `Button` containing an `Image`. A ImageButton changes its image status (and thus its visual content) in addition to the change of its border color upon changing the condition. ### CheckBox ![checkbutton](../suppl/CheckBox.png) `CheckBox` is a `Button` Widget. Its appearance is defined by the BgColors parameter (frame) and by the FgColors parameter (active state, symbol). ### RadioButton ![radiobutton](../suppl/RadioButton.png) `RadioButton` is a `Button` Widget. Its appearance is defined by the BgColors parameter (frame) and by the FgColors parameter (active state, fill). ### Knob ![knob](../suppl/Knob.png) `Knob` is a `Button` Widget. It is a pseudo 3D visualization of a knob which can change its status (bool value) upon user interaction via `Clickable`. Its appearance is defined by the BgColors parameter (static elements, false) and by the FgColors parameter (active elements, true). ### HSwitch ![hswitch](../suppl/HSwitch.png) `HSwitch` is a `Button` Widget. It displays its status (represented by its bool value) as a horizontal switch. It supports user interaction via `Clickable`, `Draggable`, and `Scrollable`. Its appearance is defined by the BgColors parameter (static elements, false) and by the FgColors parameter (active elements, true). ### VSwitch ![vswitch](../suppl/VSwitch.png) `VSwitch` is a `Button` Widget. It displays its status (represented by its bool value) as a vertical switch. It supports user interaction via `Clickable`, `Draggable`, and `Scrollable`. Its appearance is defined by the BgColors parameter (static elements, false) and by the FgColors parameter (active elements, true). ### SpinButton ![spinbutton](../suppl/SpinButton.png) `SpinButton` is a `Valueable` composite widget and supports `KeyPressable`. It contains an up and a down `SymbolButton`. Its value can either be 0 (no button pressed) or -1 (up button pressed) or 1 (down button pressed). The visualble content of the SpinButton is represented by its background and its border. ### Pad\ ![pad](../suppl/Pad.png) `Pad` is a `Valueable` widget imitating an LED pad. Its value is represented by its color from dark to bright. It supports user interaction via `Clickable` (switch on / off), `Scrollable` (increase / decrease value) and `KeyPressable` (to be implemented). The visualble content of the Pad is represented by FgColors. ### SymbolPad\ ![symbolpad](../suppl/SymbolPad.png) `SymbolPad` is a `Pad` containing a `Symbol`. Its value is represented by its color from dark to bright. It supports user interaction via `Clickable` (switch on / off) and `Scrollable` (increase / decrease value). The visualble content of the %SymbolPad is represented by FgColors. ### Pattern\ ![pattern](../suppl/Pattern.png) `Pattern` is a `Valueable` widget displaying a pattern of pad widgets (default: `Pad`s). It is intended to use a Pad-derived widget to display a step or pad sequencer-like pattern, but it is also possible to use any other Valueable widget. The pad widgets value type * MUST support the standard comparison operators, * MUST support the standard arithmetic operators. * MUST be compatible with `ValueableTyped`, `ValidatableRange`, and `ValueTransferable`. Pattern allows to draw a pattern by left-clicking on the pads or dragging over the pads via support of `Draggable` and setting the pad values to their `getMin()` or defined default drawing value (defined with `pads.setValue()`), respectively. In addition, it supports `KeyPressable`. Right-clicking picks the respective pad value and re-defines the default drawing value. This action is equivalent to left-clicking in the `PICK_MODE`. If the select mode is on (by setting the EditMode, e. g., cut, copy, delete, swap), pressing the left mouse button or dragging will mark the respective pad instead and the action of the selected EditMode will be applied after the button release. Pattern is an `Enterable` Widget. Once entered (e.g., by clicking on it), keyboard control is enabled: * Cursor keys for navigation * SHIFT + cursor keys for dragging (only in select mode) * CTRL + A to select all (only in select mode) * +/- to increase or decrease the recent pad value * ENTER to apply action * ESCAPE to leave this Pattern. The value of the Pattern is a 2D vector of `std::pair` with the repective pad extends (default: `BUtilities::Point(0, 0)`) as the first and the respective pad value as the second type. ### HPianoRoll ![hpianoroll](../suppl/HPianoRoll.png) `HPianoRoll` is a `Valueable` Widget displaying a horizontal piano roll. It supports user interaction via `Clickable`, `Draggable`, `Toggleable`, and `KeyPressable`. Its appearance is defined by the BgColors parameter (inactive keys) and by the FgColors parameter (active keys). ### HMeter ![hmeter](../suppl/HMeter.png) `HMeter` is a `Valueable` Widget and displays a value as a horizontal meter without user interaction. The value is kept within a defined range and displayed in blocks defined by the parameter *step* . Its appearance is defined by the parameters BgColors (static elements), FgColors (value, low range), and HiColors (value, high range). Advanced settings allow a `HMeter` to display a value in a non-linear manner (e.g. for levels and frequencies) using transfer functions and / or to use non-line color gradients for display using gradient functions. ### ValueHMeter ![valuehmeter](../suppl/ValueHMeter.png) `ValueHMeter` is a `HMeter` Widget with an additional label for displaying its value. ### HScale ![hscale](../suppl/HScale.png) `HScale` is a `Valueable` Widget derived from `HMeter`. It displays a value as a horizontal scale and supports user interaction via `Clickable`, `Draggable`, `Scrollable`, and `KeyPressable`. Its appearance is defined by the BgColors parameter (static elements) and by the FgColors parameter (value). ### HScrollBar ![hscrollbar](../suppl/HScrollBar.png) `HScrollBar` is a `Valueable` Widget derived from `HScale`. It displays a value as a horizontal scrollbar and supports user interaction via `Draggable`, and `Scrollable`. Its appearance is defined by the BgColors parameter. The value can be point value (vsize = 0) or a range value (start value = widget value; end value = start value + vsize). ### HSlider ![hslider](../suppl/HSlider.png) `HSlider` is a `HScale` Widget. It displays a value as a horizontal slider and supports user interaction via `Clickable`, `Draggable`, and `Scrollable`. Its appearance is defined by the BgColors parameter (static elements, knob) and by the FgColors parameter (value). ### ValueHSlider ![valuehslider](../suppl/ValueHSlider.png) `ValueHSlider` is a `HSlider` Widget with an additional editable label for displaying its value. The value display including its position is controlled by `ValueVisualizable`. ### HRangeScrollBar ![hrangescrollbar](../suppl/HRangeScrollBar.png) `HRangeScrollBar` is a `Valueable` widget similiar to `HScrollbar`. It displays a value constisting of a `std::pair` with its min and its max value as a horizontal scrollbar and supports user interaction via `Scrollable` to resize the value range. In addition, it supports dragging to move the value range or to move the ends (min, max). It also supports `KeyPressable`. Its appearance is defined by the BgColors parameter. ### VMeter ![vmeter](../suppl/VMeter.png) `VMeter` is a `Valueable` Widget and displays a value as a vertical meter without user interaction. The value is kept within a defined range and displayed in blocks defined by the parameter *step*. Its appearance is defined by the parameters BgColors (static elements), FgColors (value, low range), and HiColors (value, high range). Advanced settings allow a `VMeter` to display a value in a non-linear manner (e.g. for levels and frequencies) using transfer functions and / or to use non-line color gradients for display using gradient functions. ### ValueVMeter ![valuevmeter](../suppl/ValueVMeter.png) `ValueVMeter` is a `VMeter` Widget with an additional label for displaying its value. The value display including its position is controlled by `ValueVisualizable`. ### VScale ![vscale](../suppl/VScale.png) `VScale` is a `Valueable` Widget derived from `VMeter`. It displays a value as a vertical scale and supports user interaction via `Clickable`, `Draggable`, `Scrollable`, and `KeyPressable`. Its appearance is defined by the BgColors parameter (static elements) and by the FgColors parameter (value). ### VScrollBar ![vscrollbar](../suppl/VScrollBar.png) `VScrollBar` is a `Valueable` Widget derived from `VScale`. It displays a value as a vertical scrollbar and supports user interaction via `Draggable`, and `Scrollable`. Its appearance is defined by the BgColors parameter. The value can be point value (vsize = 0) or a range value (start value = widget value; end value = start value + vsize). ### VSlider ![vslider](../suppl/VSlider.png) `VSlider` is a `VScale` Widget. It displays a value as a vertical slider and supports user interaction via `Clickable`, `Draggable`, and `Scrollable`. Its appearance is defined by the BgColors parameter (static elements, knob) and by the FgColors parameter (value). ### ValueVSlider ![valuevslider](../suppl/ValueVSlider.png) `ValueVSlider` is a `VSlider` Widget with an additional editable label for displaying its value. The value display including its position is controlled by `ValueVisualizable`. ### VRangeScrollBar ![vrangescrollbar](../suppl/VRangeScrollBar.png) `VRangeScrollBar` is a `Valueable` widget similiar to `VScrollbar`. It displays a value constisting of a `std::pair` with its min and its max value as a vertical scrollbar and supports user interaction via `Scrollable` to resize the value range. In addition, it supports dragging to move the value range or to move the ends (min, max). It also supports `KeyPressable`. Its appearance is defined by the BgColors parameter. ### RadialMeter ![radialmeter](../suppl/RadialMeter.png) `RadialMeter` is a `Valueable` Widget and displays a value as a radial meter without user interaction. The value is kept within a defined range and displayed in blocks defined by the parameter *step*. Its appearance is defined by the parameters BgColors (static elements), FgColors (value, low range), and HiColors (value, high range). Advanced settings allow a `RadialMeter` to display a value in a non-linear manner (e.g. for levels and frequencies) using transfer functions and / or to use non-line color gradients for display using gradient functions. ### ValueRadialMeter ![valueradialmeter](../suppl/ValueRadialMeter.png) `ValueRadialMeter` is a `RadialMeter` Widget with an additional label for displaying its value. The value display including its position is controlled by `ValueVisualizable`. ### Dial ![dial](../suppl/Dial.png) `Dial` is a `Valueable` Widget derived from `RadialMeter`. It displays a pseudo 3D dial consisting of a knob and an arc scale. It supports user interaction via `Clickable`, `Draggable`, `Scrollable`, and `KeyPressable`. Its appearance is defined by the BgColors parameter (static elements) and by the FgColors parameter (value). ### ValueDial ![valuedial](../suppl/ValueDial.png) `ValueDial` is a `Dial` Widget with an additional editable label for displaying its value. The value display including its position is controlled by `ValueVisualizable`. ### ConditionalImage ![conditionalimage](../suppl/ConditionalImage.png) `ConditionalImage` is a `Valueable` widget which may take up multiple images each linked to a specific value. The widget shows the image(s) depending on its value. By default, the widget shows the image whos value is the closest to the widget value. ConditionalImage supports user interaction via `Clickable`, `Draggable`, and `Scrollable`. ### ImageHMeter ![imagehmeter](../suppl/ImageHMeter.png) `ImageHMeter` is a `Valueable` widget and displays a value as a horizontal meter based on images. The visual output is constructed using three freely selectable images along the provided anchor points: * static: All static elements in a passive state (background, labels, scales, ...). * active: All static elements in an active state (LEDs, ...). * dynamic: The dymacic element (sliding contoller, ...). ImageHMeter itself doesn't possess any user interaction. The value is kept within a defined range and is displayed by the value-dependently cropped active image and by the position of the dynamic image. ### ImageHSlider ![imagehslider](../suppl/ImageHSlider.png) `ImageHSlider` is a `Valueable` widget derived from `ImageHMeter`. It displays a value as a horizontal scale in the same way as ImageHMeter and additionally supports user interaction via `Clickable`, `Draggable`, `Scrollable`, and `KeyPressable`. ### ImageVMeter ![imagevmeter](../suppl/ImageVMeter.png) `ImageVMeter` is a `Valueable` widget and displays a value as a vertical meter based on images. The visual output is constructed using three freely selectable images along the provided anchor points: * static: All static elements in a passive state (background, labels, scales, ...). * active: All static elements in an active state (LEDs, ...). * dynamic: The dymacic element (sliding contoller, ...). ImageVMeter itself doesn't possess any user interaction. The value is kept within a defined range and is displayed by the value-dependently cropped active image and by the position of the dynamic image. ### ImageVSlider ![imagevslider](../suppl/ImageVSlider.png) `ImageVSlider` is a `Valueable` widget derived from `ImageVMeter`. It displays a value as a vertical scale in the same way as ImageVMeter and additionally supports user interaction via `Clickable`, `Draggable`, `Scrollable`, and `KeyPressable`. ### ImageRadialMeter ![imageradialmeter](../suppl/ImageRadialMeter.png) `ImageRadialMeter` is a `Valueable` widget and displays a value as a radial meter based on images. The visual output is constructed using three freely selectable images by slicing or rotation around the provided anchor points: * static: All static elements in a passive state (background, labels, scales, ...). * active: All static elements in an active state (LEDs, ...). * dynamic: The dymacic element (sliding contoller, ...). ImageRadialMeter itself doesn't possess any user interaction. The value is kept within a defined range and is displayed by the value-dependently cropped active image (pie sliced) and by the position of the dynamic image (rotated around the anchor). ### ImageDial ![imagedial](../suppl/ImageDial.png) `ImageDial` is a `Valueable` widget derived from `ImageRadialMeter`. It displays a value in a radial representation in the same way as ImageRadialMeter and additionally supports user interaction via `Clickable`, `Draggable`, `Scrollable`, and `KeyPressable`. ### Box ![box](../suppl/Box.png) `Box` is a composite Widget based on `Frame` and contains `TextButton`s. `Box` supports `Navigatable` to navigate between its navigatable content (by default: all buttons). It also supports `Valueable`, `KeyPressable` and Closeable. The default value of the Box is 0 and changes upon pressing one of the containing text buttons. On pressing one of the buttons, the widget value is set to the button index (starting) with 1 and a `CloseRequestEvent` is emitted. ### TextBox ![textbox](../suppl/TextBox.png) `TextBox` is a composite Widget based on `Box` and additionally contains a `Text`. ### MessageBox ![messagebox](../suppl/MessageBox.png) `MessageBox` is a composite Widget based on `TextBox` and additionally contains a symbol and a headline. ### SpinBox ![spinbox](../suppl/SpinBox.png) `SpinBox` is a `Valueable` composite widget also supporting Clickable, Scrollable, and Keypressable. It is a container widget. It has got a list of content widgets representing the items. And it has got a `SpinButton` to move between the items. The value of the `SpinBox` is the index of the active item starting with 1. A value of 0 is used if no item is selected (default empty item). The visualble content of the `SpinBox` is represented by its background and its border and by styles of the embedded widgets. ### ListBox ![listbox](../suppl/ListBox.png) `ListBox` is `Valueable` widget derived from `SpinBox`. This widget shows a scrollable list content and allows to select an item. In contrast to `SpinBox`: * it shows its content in multiple lines and allow selection by clicking on an item by the support of Clickable. The selected item is turned into `Status::active`. * it supports navigation via a scroll bar instead of `SpinButton`s. ### ComboBox ![combobox](../suppl/ComboBox.png) `ComboBox` is `Valueable` widget derived from SpinBox. It shows a `SpinBox` with a single button. It opens a `ListBox` with the same content upon clicking on the button. ### FileChooser ![filechooser](../suppl/FileChooser.png) The `FileChooser` is a `Valueable` widget based on `Frame`. It consists of: * a `Label` to display the current path, * a "new folder" `SymbolButton`, * a `ListBox` with the (filtered) content of the current path, * a `EditLabel` to display or edit the selected filename, * a `ComboBox` to select filename filter options, * a "Cancel" button, and * an "OK" / "Open" button, The ListBox fascilitates selection of files and the navigation through the file system. A selected file is also shown in the EditLabel. Clicking on the new folder SymbolButton opens a dialog and the user is asked to enter a new folder name. The new folder is created within the current path shown in the Label. Clicking on "Cancel" will set the widget value to "" and a CloseRequestEvent is emitted. Clicking on "OK" / "Open" will set the widget value to path + filename and a CloseRequestEvent is emitted. ### SampleChooser ![samplechooser](../suppl/SampleChooser.png) The `SampleChooser` is a widget based on `FileChooser` for the selection of audio files and samples. It additionally shows the waveform of the selected audio file and allows to select a range as a `Sample`. ## Attributes and decorations Attributes and decorations are member parameters of the class `Widget` and all other classes derived from it. Members are set using (commonly) virtual setter methods and requestes using (commonly) non-virtual getter methods. ### URID ID number of the widget derived from its URI (see class `BUtilities::Urid`). The URID is set upon widget construction and can be returned using `getUrid()`. The widget URID can be used to assign styles and to identify a widget. ### Title The widget title is shown in the case of a `Window` object in the title bar. All (other) widgets may show the title on hovering over the widget if the title is set (not \"\") and the widget is `PointerFocusable`. The title can also be used to identify a widget. The widget title is set with `setTitle()` and returned by `getTitle()`. ### Visibility Widgets added directly or indirectly to the main window become visible by default. The visibility can be changed using `show()` and `hide()` and is returned by `isVisible()`. Child widgets become invisible too if their parent widget is hidden and gain back visibility if their parent widget is shown again. ### Layer Widgets can be stored in different layers to be displayed on the screen. The layer index represents the Z position of the surface. The higher the index, the more to the background. The default widget has got no layer index set (BWIDGETS_UNDEFINED_LAYER) and thus uses the index of the subjacent widget. Lower indexed layers will be displayed in front of the default layer, higher indexed layers behind. The widget layer can be changed using `setLayer()` and is returned by `getLayer()`. ![layersandlevels](../suppl/LayersAndLevels.png) ### Level and Stacking Widgets are displayed in the order they are added to the main window from back (first added) to front (last added) for the same layer. In the same way, child widgets are displayed embedded into the parent widget in order they are added to it. The order (level) within the same layer can be changed using `raise()`, `raiseToFront()`, `drop()`, and `dropToBack()`. By default, child widgets are located within their parents and oversized child widgets will be clipped to fit (`StackingType::normal`). `StackingType::escape` breaks this limitation. Stacking behaviour can be changed using `setStacking()` and is returned by `getStacking()` ### Position A widget can be placed relative to its parent widget using `moveTo()` using X and Y coordinates and `moveRel()`. Its position relative to its parent widget is returned by `getPosition()`. The methods `left()`, `center()`, `right()`, `top()`, `middle()`, and `bottom()` can be used to get widget X or Y coordinates for relative placement of the widget in combination with `moveTo()`. Thus, to center a widget (horizontally and vertically) relative to its parent widget simply call: ``` widget.moveTo (widget.center(), widget.middle()); ``` ### Size Widgets are created either with the size passed in their respective constructors or (if not passed) with their default size. The default size of each is define by `BWIDGETS_DEFAULT_XXX_WIDTH` and `BWIDGETS_DEFAULT_XXX_HEIGHT` (with XXX = capitalized widget class name). You can define your own default extends of a widget class *prior* the include, e. g.: ``` #define BWIDGETS_DEFAULT_BUTTON_WIDTH 40 #define BWIDGETS_DEFAULT_BUTTON_HEIGHT 40 ``` The size (= the extends of the area covered by a widget) of a created widget can be changed using `resize()` and is returned by `getExtends()`, `getWidth()`, or `getHeight()`. The parameter-free `resize()` methods tries to optimize (or minimalize, depending on the widget type) the widget size and to fit the widget size to its content. The parameter-free `resize()` may resize the widget to (0, 0) if it has got no children and no visualizable content. Note: Resizing a widget does not necessarily mean scaling! ### Style Widgets can be decorates with styles using `setStyle()`. The setter methods `setBackground()`, `setBorder()`, `setFont()`, `setFgColors()`, `setBgColors()`, and `setTxColors()` and their respective getter methods `getBackground()`, `getBorder()`, `getFont()`, `getFgColors()`, `getBgColors()`, and `getTxColors()` allow a shortcut access to the default widget StyleProperties: * *Background*, a `BStyles::Fill`, which can take up an image or a color. * *Border*, a `BStyles::Border`, defined by its parameters margin, line (width, color), padding, and corner radius. * *Font*, a `BStyles::Font`. * *FgColors*, a `BStyles::ColorMap` (a `std::map` consisting of a `BStyles::Color` for each status) for active / foreground widget elements. * *BgColors*, a `BStyles::ColorMap` for inactive / background widget elements. * *TxColors*, a `BStyles::ColorMap` for text and labels. Example: Changing the text colors of a label `l` is simply done by: ``` l.setTxColors (reds); // Changes text colors for l to reds ``` Styles can also include other styles in a recursive way to describe specific widget elements or to forward them to linked child widgets which are idetified by their URIDs via push notifications (default behaviour). Note: You can switch on / off automatic pushing styles to child widgets by `enablePushStyle()`. Therefore Styles can be used to design single widgets or composite widgets with a defined structure. If you want to design a whole user interface, you should use `Theme`s instead. The following example defines the style with ALL default StyleProperties for the widget addressed with `setStyle()` and forwards the "sliders" style to all child widgets with the URID for `URI "/sliders"`: ``` Style style = Style { {Urid::urid (BSTYLES_STYLEPROPERTY_BORDER_URI), makeAny(noBorder)}, {Urid::urid (BSTYLES_STYLEPROPERTY_BACKGROUND_URI), makeAny(noFill)}, {Urid::urid (BSTYLES_STYLEPROPERTY_FONT_URI), makeAny(sans12pt)}, {Urid::urid (BSTYLES_STYLEPROPERTY_FGCOLORS_URI), makeAny(darks)}, {Urid::urid (BSTYLES_STYLEPROPERTY_BGCOLORS_URI), makeAny(greens)}, {Urid::urid (BSTYLES_STYLEPROPERTY_TXCOLORS_URI), makeAny(whites)}, {Urid::urid (URI "/sliders"), makeAny 0 2 3 1 image/svg+xml Openclipart 2013-09-20T22:51:01 Switch knobs likely to be used for SCADA/HMI applications (optimized for use on a web page). See the source for info about how to change the direction of the arrow. https://openclipart.org/detail/183615/switch-knobs-optimized-by-morkaitehred-183615 morkaitehred HMI SCADA activate control deactivate knob off on photorealistic start stop switch src/BWidgets/examples/inc/ConditionalImage1.png000066400000000000000000000207501515163050000217410ustar00rootroot00000000000000‰PNG  IHDRddpâ•T pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î<tEXtAuthormorkaitehredxxµO°tEXtDescriptionSwitch knobs likely to be used for SCADA/HMI applications (optimized for use on a web page). See the source for info about how to change the direction of the arrow.ÝÁ(‰!tEXtCreation Time2013-09-20T22:51:01ù¾òZtEXtSourcehttps://openclipart.org/detail/183615/switch-knobs-optimized-by-morkaitehred-183615‚¨ÀûXtEXtCopyrightCC0 Public Domain Dedication http://creativecommons.org/publicdomain/zero/1.0/Æã½ù£IDATxœå}{pÇÞ×3³ï÷XD'Z"-“’HYÒIɪ³-ËIvÅ*çN¹?Rr•/rrVªÎ¹*_œÔÅUWv¢¸*v\–¬Hâ#Ž%ƒ"u2eR¢-Ú]€ÏžŸÓÝùèÖìbw±x|_ÕÔÎ>ff§¿ùýº¯n‚ Žïÿû Œ±NBÈ麾‡1ÖÉ9o.‹ιƒRêcŒ9(¥`Œ¥)¥ó”Ò4çpα{÷n¸Ýn ”¿VÛ:::044ÆÚÚÚ066†\.W‘ˆj[.—Ãôô´”H³Ù,¾+RJ_+ ÿ¹§§gðF´Óu'äÔ©SŽ|>ÿמcŒi”Rô÷÷ãw¿û¶mÛ†––) õâr¹ ifffÀƒ×ë…ªª˜œœ”]IJ„z¬ôY,Ãôô4EÍfŸë”Òÿ©(Ê_www'®g{©×óä§Nz”1vRQ”Ï3Æ”÷ß§OŸ†ËåBgg'<EY²B–¼–oàp8P,Q(@ªª°ÛíH¥R%¿+GµÏÀb±ÀëõÂl6#£P(@Ó4…s~7¥ôÍÍÍ3“““¿¿. †ë$!¿ýíoÛu]ÿߌ±9ç…B8}ú4:;;Kú†j S.Æ}c‡nµZa2™0??ÆÜn7TUÅôôô²jÊ(%•öÅk&“A$ªª „ˆ>æ-]×ÿüÊ•+ë>d^w 9{öìcºÜšÉdpâÄ LLLàŽ;î€Óé¬(µ$¤|€ÜÏårH&“ „ ±±333’Äõ€ªªðx<àœ#™LBQèð¯ý~ÿÇsss­ÛÅhëu¢žžS>Ÿÿçü?pÎIoo/Ο?ƒÂb±,iL±_ µúã°4MƒÕjc .— ù|f³y‰z«vòë ›¦üÕãñÀn·czzZ¨H!äHgg罚¦ýûþþþÂz´ãº¨¬žžžJé ÎùAJ)Ž;†B¡€={öÈ'À’FZ !å`&“Íf!ñxÜ8BZ•ŠªÇ Ç177'U˜®ëÝœóÇB¡ÐÔZÛrÍ„tww·«ªz Àî©©)üìg?þ}ûàóù*vÆk%„1†b±(B6”°ÌY„hš&?[ !Ë}F)E¡PÀää$ŠÅ¢8WˆòH0ZK{®‰žžžÛEyƒ²uxxGÅ=÷ÜMÓjŽê!DB)E±X”› ÁHF¥}ñ*Ü'&“©ÜƨÛ'VÃ/†™™¤Ói¡B§c:22riµmºjBz{{ÿXQ”„÷åË—ñë_ÿ‡^Ѱµ!‚ŒòF.‹˜››Ãìì,fgg‹ÅP(P,‘Ëå,ô'b4d³Ù`³Ù`·ÛaµZKÓb±ÀétÂápT$§Þ}ñ~~~óóóâ¾ …έ¦]WEÈ|°OUÕß*ŠâíîîÆùóçqÇwÔmK2Œ„ˆÎZ8)¥ÃÐЂÁ Âá0²Ù¬$Ê!M¢¯± Èd2ÁëõÂårÁívÃáp@×ui\ú|>hšVWãW{ŸH$FÅ_J0Æé]iÛ®˜žžž[EyGUÕæwß}—/_ÆÞ½{—Q‹#! ÔÓìì,.\¸€žžLLL ŸÏX~šÍf˜L&hš&¿cR² ……¢(0›Í°Z­ðûýðûýPUŒ1Øl6X,–ºÈ¨ôY&“A4êk†ro0¼º’ö]!ï¾ûnÀb±¼£ªêîþþ~üæ7¿Y"Õˆ)ßD㨪 J)B¡ºººÐÛÛ‹L&B¬V+¬V«$l­îüB¡ %Çår¡±±V«º®Ããñ ¥¥Š¢Ô-å¤Äb1AJsþÙp8•hš†K—.áèÑ£Pv»}åw¼Á¡ª*|>b±²Ù,’É$âñx],är9!%&ÿ®üü%„=z´‰Rúg”Rôõõ¡©©©æŸ3öV«©T ?üá‘Ífáõz×­68çp8p:2lzzºnÕU(àr¹Aÿ¦µµµÁø} !¹\îkŒ1ÛÀÀvîÜY넘ÍfpÎqäÈŒmx;c­`ŒÁçósŽX,&óŠëE&“ªËf6›ÿ…ñ»BØBâ3úúúÐÒÒR×ÉEg …pòäIãðî>Ÿ‰D…BA&ÕÕƒl6 —Ë%Þ~Ýø$d±$à 0|V2¾¦”âøñãH§Óðx<õÝÍ&çN§S&êqÎaܺ°ç¹»½½½S|f”§EßÑÑÑQ× i¡P|ð¬VëM÷ÚÞHPJáõz‘ÉdP(J¥ ëz]ÇÆãqãÃû”Ø‘­§ëúãŒ1ŒŽŽÅ©&Dü»«« ¹\Î8¤û'›Í³ÙŒX,Î9âñx]Çåóyc{=!vøñÜÊÛÍf벌~šÙÙYôööÂl6ÿ“’Æ<Òé4(¥H§Óu§²RJ…ÚºuÛ¶m­À"!ù|þŸ1Æ022‚æææe=˜À'ÒÑÝÝm5”Àjµ¢½½MMM2»p3Ál6ÃëõbëÖ­²J«¼±9ç°ÙlP©TJÆ@êA"‘ÚÈl6?,†p9ç2Æ066†½{÷.{"‘7¥( z{{A©ommEkk«|/ž T*…t:-·•¸®L&œN'l6ìv{É= ÿc &“iÉÃ%Ê < p-‡T*…íÛ· u÷ €ÿ£-^ìODž,1äGÕÚt]Çôô4ÆÇÇaµZ—\LÓ4477—|¦ª*Ün·t² äæóy¤Óid2¤Óie Õë“É$[Ô OîrP;wîÄÀÀ€Œq-½#‘ŠÅ¢4ŒëÑ4†kÿ h?øÁ)¥;t]¯«¨æß§”bhhù|>ŸoÉq[¶l©+}ǘîÓÐð‰ÑÊ9G¡P@>ŸG.—C.—C>Ÿ—y½"t*$U$ƉW‹ÅR²Y­Ö5g²ìرW®\q ™e@îg³Y˜L&™j´ŠÅ¢0Ú·mÛæ× …B§¢(ˆF£p»ÝY Tžæ  â…Àšn^øÇ,K‰DÝLX,´´´`bbÅb±Du‰ÿ›Ífáv»‘Ïçëòåe³YØl6¤R)hš¶Gáœw2ÆFëMŠÄçp8\‘ ³Ù\÷Ðy³¡¥¥EhŒ,c v»]æçóùºTVÙ€¨S¡”vRJ‹Åàp8êî?æææd¬¹ÈÖzss³,â1öq"L+Ôh½•l6+K²±HȶX Tï3Ä>¥ å³³³Ðu½b‡ø‡Lˆ¦ihll¬(%¢ýœ±Ýj™†6ìT8çÍÕ.#1‚ýÙÙYPJ+v”Eç׃ÖÖV<òÈ#èìì¬;˜&úÇrB„°X,@E7Š ÒCDv‹¦ëºSQY'A‘‘­¦¦&9ÊY<@ÖkA%ë|3¦ÆÇÇðÐC1†©©)„Ãa„ÃacyA ü~ņö˜ D´§ñ!?tè¶lÙ‚ãÇW:µKcŒ¹8ç%RJ±mÛ6\¹rœsÜyçèéé×ë•"Êʱ](—.]‚ÛíÆm·Ý†––´´´àðáÃH&“…BÆä䤔ÇBˆþ—×¥ˆß1öÉÄ8š¦áá‡ƽ÷Þ‹žžž’ëŒL—F)uO(éééÇã‘*KH ¤šï³ÆBÎ;‡@ P2\w¹\Ø·oöíÛ‡d2‰>ú}}}Èår2ÏÊXÓ,h ÑÙûŠÆÆF$“I¼òÊ+سgOɵKaŒ9"\¢ ìСC8sæ Kj몢ªªLóßlxë­·ðä“OVüÎf³áÀØ¿?úûûñþûïcjjªDm 1"^'&&píÚ5ìß¿¿¢?l.Í(rBç‰×t:·ß~÷Ýw~ÿûßË>¤ÖN” oF ×ÏøÔ§>…C‡áW¿ú•t8Ч¼š1]nhaô‹iŒ±çÜ/F ¢ìXd­+Š‚`0ˆ@ #c‚ÄJÞÛl6‹X,vÝ n®€ì«A×u\¸po½õHU.ÚCH‰@=¤Ú*©QJ“Š¢ø£,›Í†½{÷âÃ?„¢(زe B¡¼ ®ëUý4¢f³AUUÜÿýU ‰F£èîîÆ{ï½'¡¢°ÄX¡„$5ÆXÒhü #qttÛ·oŒ¡P(Èäc£š+Gµ‹nt|ùË_ÆŽ;J>‹F£èïïLJ~ˆp8\Ò'µ-öE"ºx¨Tôœ'“ILLL”\ÇЖI1–ïDg¤ª*¢Ñ(fff䜅¢ZUQϰèoÊEt³áÁÄ=÷ÜÆB¡Ðßß©©Ê3e”K‘èG„ö–w9!088ˆÁÁҹРÚ&©1Æ&Oæ1 @º³¬‹,›ÍMÓ ëú’¡n9IhnnÆË/¿Œº¢}FÌØØb@`$Äè©6ò4 ¦4Jé ñ`£¸O`gs¾0‰¤ªª(‹›š`0(ÃõBx.ÈÌMàÉ꫞þCQiBBJé ¥V«UFé*mÆ ªªrò°JöÈf´Aêç|É=kšMÓÏçe€¬\:ªâv»Ea( *”ÒAƘÌÍ­Fˆ‘³Ù,s’*áfÇȯ'²ÙlIã „A,ÂÙF}-B¼^¯´Û8çƒJ>Ÿ ”Âb±ÔEˆðûSJeùA9µôåfG%u%T–¨súÚåú`ÁQ)Ñu}H;vìXô«_ýê!d§ÑåQ+eGLqäñx`2™*&ÉÕ× á¦êR×uùP”«‚òJ.Qû(ž^Qÿ¸0Æ–túbà#ìcºÓrÒ,øËûžÐØØXTdœ!„|C¸FªAœ\”®ÙívØl6m4B×u©K—ƒ®ër¢ã¼Xë=„V&“IN`#öë%ª< Ž“É$Í19ޱC¯%„cô°˜—¥ëúEQ¾aµZ‘H$J"~Æ'ÑøÇN'âñ8|>’ɤ$Àx\¹Õ*¼Åbž+Ñð7J½‰jÚòБ(#YåöU*•*9NH!™LFV› Sa9éhiiA$B΋„Ð…•`·Û1??¿l‚ç\Æß099‰L&³$RX(P(Ëå$Õˆ*O¨h£öeªªÊúu§Ó)U¦‘ÖÂŽ;ÐÛÛ œRzXL%=qâÄcl€t/7ôÉaªª–ÌÌV¡ŠêÍ ßH¸d2¹Ä?'¢ƒªª"‹ÁétJ‰1ösµàr¹Ä §WFFF"@iöû/cÐ4m‰=RN„Ø÷ù|`Œ¡©© ‹¥¢SQØ,ë5çÕF¢,Ì÷%òy…š7öµà÷û®Ï5úÈN)}ÞåraffFN1dì;ŒïEXÒétB×uX­VÄãñ%Vºx’l6²ÙìÄpXÜ“¦i˜ŸŸ‡Ýn—“±mZ¸í¶ÛpáÂçüñ¹$¤««ëêÃ?|QQ”;+Eüʉ¤ˆ¹L¥x—§‰0ämzhš&@‘JkŒºÖ‚q,Ú4ï…B!ém,‰"qÎA)½Ójµ"‹•$ EQì ±õx<Ò,FQåþ­òRêÍ qóóóðxŸ.—KÎĦiZÝ•D›ªª"ŸÏKu^î&©D__ä …Â–\£üƒp8œØ¶mÛNÎùgDðI<FÉ(ßç|a™™™µ%Fc›¢ßŒD"°Z­hjj’ýb=Ã\`!m•1†ññqB~:22òê’ëT9ö¿2Æt“É„H$RQ"*Ù'„ttt€1&uëJ2Á7*„{dbbš¦Éd:ã¨s9Bpøðaa™)¥Wéw­µk׮ͷ´´ø9燀‹Õh—ˆ?QIJÄÌÑÑh&“IVmÖ)š‹O5ZZZJ<Çõªª»îº CCCbr¿‡ÃG+ý®ª›Ól6—R:NA4E¡P¨)%ÆÍçó¡­­ ªªÂét"•JUMØÈ†ÞØØ€…Úá¿ê'Ãf³¡¹¹áp"ªª~¯ê5«}qíÚµBssócì  3ôµçt82ûQ”l¥R)‹ßèÃbMÓP(‰D iZZZJæœ_‰ÇáK_úÞ|óMá\ý³`0Xu9‹š¦ÉÉɾ¦¦¦ûtˆ•Єê©E†ØÄ²v©T ‡C΋.Š27")¢˜3‹I’ŒÕqÇw`nnNHÙéP(ôký~Y_ 8Ã{šbOxyF…@%RÄú‰DN§œ/LÒ"R‰6’õ.TQ$A*•‚×ë•£©ÕÑÔÔ„½{÷âܹs0Ï94‹Åjþ‡åN:==hhhøˆsþ5EQH:^\ޱžm:–™õñx‰DB.êu3¥E¬”Ç…Á†@ '[iŸ,¨¼'Ÿ|Ç_À×Âáp÷²ÿ¥ž“ÏÎÎ^õù|^Îù!Qbœ·¶žM¸Dý¨øÅbÈd20™L7¼¶DxR©&''‘Ífáñx¤nL(_ „|å+_AWW—ˆµÿ ÿzŽ­;HÑÒÒr¦P(|À6Ѩ¢(߀ÊÃb`!(c6›‘ÍfaµZa·ÛQ(ä†"B' ®õ†ð<‹¹I¦¦¦äÀ#ȨŸ¨¬×è3â±ÇÃÅ‹EÕÕù†††§#‘H]Œ®HïÚµ«‰Rz@'é.©6ácù¾¼èb2ÅÜÜœœÖH’N§åš‚<`m©EÆY¬í!²D‡\j€Lë©7®QŽxÓÓÓøè£À9ÿ˜òÙ•,§·âuÇŽªª¾ …‚†††Š³^µ Ðuóóó27‰R*‡Èbd'2\Ä̧ƧøÄR6^Ÿs.ÃÇù|™LFÆÌÍf³\Ÿ]ôÆüªjáèåpèÐ!èº.j#Œ±Ï.·B9V5Äéèè¸s~€—Râh[)!Åb‰D¢dv á5Îf³rInq|ùBµˆÌ£»FÌš*Vn3&C—«¦ÕH°AŸJ¥pñâE`aQ°V³|ުǜííí÷8À#HK¬V"b9BŒÈd2Èd2%$X’»%PüF#ì%cZF"«• B>ÿùÏ#£¿¿â„/ƒÁwV|2¬qaÉ[n¹å6ÎùœóVEQ¤û}­„ˆ¾E¤è,WßX ÆEŒ^k#«é¸…¡íã?Ž÷Þ{£££0É9ÿÓp8ü»Ÿlk¶ÊvîÜÙ®(ÊöBàt:—,Fl|-߯…rÛÀÿ™øÌˆò¾¤<õ´œŒÕ ¡¡_øÂÐÕÕ%æì *ŠòÈÇ<¼ªŠÿ¾–ƒÚÛÛ·øw+lrÎ×ò¡´ÝnÇí·ßEQÐ××' SË7#)k!XÁ¶µµáõ×_Ókœ×4íËÃÃÃ3«>é"Ö%Y*‹¥?ýéOÿ<‘Hp÷ëºNDÙB¥'´Þ­R#_­V+ž}öY Nãé§ŸÆåË—+fñ¯¥Ÿ°ÛíxôÑG177‡³gÏ‚/°úßÇSƒƒƒÉõhËuw$µ··? àçübq³Ù,ÓHWâ»ZNBÚÚÚÐÐЀ‹/‚sŽÏ}îsÈår8sæLUƒu5 „àÀعs'N:%r|ã„?ƒÿwÕ'®t­õ<™Àâ2 ?ð°¥!ÚZI§¼!âUlÏ>û,NŸ>5’F´¶¶âÞ{ïEww·ˆgÀiEQžùøã¯­ùe¸®®ÖEiyÀvBˆœñS,ºê%žxâ ˜L&¼üòËëârÙºu+8€H$‚ÞÞ^Aî€çC¡ÐKk¾@\wß÷®]»Üº®ÿ !ä›4Bˆt‹£¯ê!„‚§žz ÅbGŽY“TBÐÖÖ†}ûöatt~ø¡8_Àìvûßô÷÷§–9ÍšpÂmmmm„¿ð¬ÀBú¾(}KŸQ‰ã>!Ï<ó ÆÇÇqòäÉUK†ÇãÁ­·Þ ǃ`0ˆááaq®€#„ïƒÁ¡U|…¸áÑ¡ööö-„¿äœ€€\fÏn·K_–¨¹¨…C‡á©§žÂÉ“'¥jppCCµÛN$+ìØ±.— SSS4>y/ªªú½ááá±5ÜîŠqÓÂu­­­ ‹‹™|‹ö Yo"ê…?+“É,©€moo_2íøø¸LJ,u·Û ŸÏ'7]׉D022R.•ïB~Q(^«<ÜuƆˆŸvttìáœÀãn5~'q´Ûír½c’„p, G¡±àX¨âJ$ˆÇãˆÇãKª¸!a¡>ã奖jaCbÄ-·Ü`Œý1†Ì¨o1“úð€Tåäõº®Žrl۶ͯiÚ„…ÀØÍ„/Qx’âœOclpttteËàÜ`ü`ëMçOìIEND®B`‚src/BWidgets/examples/inc/ConditionalImage1.svg000066400000000000000000000151651515163050000217600ustar00rootroot00000000000000 2 0 3 1 image/svg+xml Openclipart 2013-09-20T22:51:01 Switch knobs likely to be used for SCADA/HMI applications (optimized for use on a web page). See the source for info about how to change the direction of the arrow. https://openclipart.org/detail/183615/switch-knobs-optimized-by-morkaitehred-183615 morkaitehred HMI SCADA activate control deactivate knob off on photorealistic start stop switch src/BWidgets/examples/inc/ConditionalImage2.png000066400000000000000000000206551515163050000217460ustar00rootroot00000000000000‰PNG  IHDRddpâ•T pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î<tEXtAuthormorkaitehredxxµO°tEXtDescriptionSwitch knobs likely to be used for SCADA/HMI applications (optimized for use on a web page). See the source for info about how to change the direction of the arrow.ÝÁ(‰!tEXtCreation Time2013-09-20T22:51:01ù¾òZtEXtSourcehttps://openclipart.org/detail/183615/switch-knobs-optimized-by-morkaitehred-183615‚¨ÀûXtEXtCopyrightCC0 Public Domain Dedication http://creativecommons.org/publicdomain/zero/1.0/Æã½ùhIDATxœÕ}kpוÞw»{ÞïÁC ‘ø”Ê¢L‹¶)YòJ¯×–-+‰dWEòF«ì”\圬“ªµ·Êo²«?vVqÕÚq,­JQE,I¯D“m’h™¤Dð1xpð~ 0ƒ™é™¾÷æp®ƒy4€Êþªº¦ÑƒéÇýúœsϹçžËð;ŽïÿûMBˆŒ±]–eíBì”R¶‹Å€”2À9 !œs!8糜ó)åç|TqŲ¬+BˆËš¦õ½ð Óõ3Uû¨o Ï=÷\[±X¼OJù9!ÄqÎ;…B`©Ñ«~Ö:fYÖ(€·9ç¿R}õÕW?êg¶ãw‚ÿøÇ· !žB<"„Øn' ŸÏcff333H¥RÈçóàœƒ±Å[B@Ó4H)!„€”RJpÎ!¥„®ëðx<ðz½ðx<ê76¢®p΋Åyòä›Ù>7ÇwZ–õM!ÄŸ !¼œs\¾|/^„”Û·oG8°H@ég¥­«« W¯^…H&“Èçóe‰¨´åóyLLL(‰t»Ýô]‘sþJ¡Pøo===}7£NÈÑ£G¦iþ%€g„ç—.]Âo~ó´··cÆ JN …B0 “““B B×uŒ©Æ.'%¤ËK¥R˜˜˜€¦iðù|tÜâœÿ/MÓþòÌ™3ól/½‘'?zôèCBˆ#š¦=(„Ð~ýë_ãØ±c…Bعs'"‘4M[±1ÆV|–nP,Q(Àƒ®ëðûýÈd2Ëþ¯•Ž€ÇãA4…ÛíÆÜÜ … ÃФ”ŸæœÿI[[Û䨨ØoÒ`h„üò—¿ì´,ë !R¢¿¿ÇŽÃÎ;—Ù†J S*ö}»A÷z½p¹\˜…ápº®cbb¢¦š²KI¹}úÌf³…®ë`Œ‘ù'˲þôƒ>¨{—¹îròäɇt¸-›ÍâðáÃÁž={ ËJD5 )Ý öóùø|>øý~x½Þeéñx Ê’ãtŸþžÅìì,=Â<€/÷÷÷ŸZK»®‰wß}w·®ë¿Ô4-zæÌœ>}{öìqìKvBÈXS`sŽd2‰«W¯"‘H```¹\NeIÙ*2ÆDËåB4E(B8F €eYʹŒÅb0 ÃQãWú{~~333tKóBˆ{WÛ¶«&¤§§g«¦ioëºÞöÎ;ïàÂ… ¸ýöÛWQ;!äЋêijj gÏžEOOFFF`š&€Åî§Ûí†Ëå‚aªñ+A¡$«PXìiš·Û ¯×‹x<Žx<]×!„€ÏçCkk+<#2ÊËf³˜™™!õ5É»7‘H\YMû®ŠwÞy§Õãñ¼­ëúöK—.áÍ7ß\!•ˆ)ݨqt]çýýýèîîFoo/²Ù,cðz½ðz½Š°õ‚Âù…BAIN(Bss3¼^/,ËB$Á†  išcé(%%•J) )ågƜޣcBº»»=MMMo뺾7‘HàðáÃøÔ§>]×WåäQC{<èÐ!ôöö"—ËÁív#À0êæ"•…eYÈf³Ê¦x½^477Ãív6n܈X,æX:JII§Ó¤ZÏøýþÏ:õS?u$ù;)åÞññqŸñxýýý˜œœDGGGY)PVòé…#Ï^ñél6û7žqr_Ž$äÔ©S_fŒÀ~øÃâî»ï†ËåR\KJ4MƒÇãQ¾É¹sçðÜsÏ!™Lª†¹YDT‚étº®Ã0 D"¥.;;;ÊJC5IÉç󘟟)¥ü—ÿ¯Ö}Ô$äøñã›Ýn÷yMÓ⯼ò Z[[Ç—QJHéßÁ`P‰ÿóÏ?ýû÷#ŸÏ#+±¸\.ø|>x<¥Ú(2kw ׂB¡€l6 Ç·Û­¤¨««K=ÃjHÉårXXX€Y!Ä]ƒƒƒýÕ®_UeI)Ù›o¾ù3!Dü½÷Þƒ¦iê-/׋*·E"Äãq¤Ói|÷»ßÅÙ³g¡išššª†ÁíðûýˆF£ˆD"‡ÃjlX|³ÇÇÇáñx011QzÿËÌIБzrétRJLNN"âÊ•+ؼy3n¹å–²êËŽRõµÔÓ‹išöþ¨Úõ«v_î¹çžÇ<“Édðúë¯ãÎ;ï,+º®/“ ÚojjBss3¦§§ñ­o} çÏŸ‡ßïG8®I†ËåB{{;¶oߎ-[¶ —5öd “ɬhºR±Œ±šÒÃÇãQ¾ u6Òé4  UÅ, õ¸Ýnr^»¢ÑèåT*u©Òµ+ÒÝÝðc,tðàAìÞ½»¬Ý°“aÿŒD"hnnF2™Ä7¿ùM\¹ráp>Ÿ¯jc†®®.5vâr¹ªþ¿” R® ¤to4æ.„¨úb¸\.Õ¨¦iÂ0 d³Y5Vi¼¦)¦i‚1vo<ÿÉìì¬Yö+ÝŒeY-¥ÜxõêUå”ó%J÷5MC @<Çää$žyæô÷÷#.S5• ë:6nÜX7ߣcp¹\0M³¦´x<øý~¸\.LOO«ÂÌÌLÕð~)ȱÐ&„øn¥ÿ+KÈ¡C‡¶ø–eáøñãØ¾}{Å.^))ñx™Lßþö·µÞt‚iš(‹Žþw= ˜iš+B1¥Ð4M¹Ðxý7ÍfTîþÚ7˲TcìÛ¶mÛZöZnàÛBýôéÓ*,â亮#‚sŽï|ç;¸páÂá°c2d ’Ó4Uò]5H)ÑÒÒ)%ÆÇÇ!¥Äàà`ÍßÙQ,)ÝÈàœÿE¹ÿYAÈË/¿|«âßZ–…¾¾>ÄãqÎÞ‚P(MÓðüóÏãìÙ³ŽÔT)n!$…4¾B¼ZZZP(0;;‹b±ˆááaÇ×䜫ä<ÒÙÙ¹¥ôV¢iÚ_!ÜçϟǶmÛj2öJ ÃÀùóçqàÀhš¿ßïøfí¨eœë»Z\ͼ®ëˆÅbH¥RÈårH§Ó˜››sôÂ@>Ÿ')qø¥ç_FÈZ8çOrÎqñâE´´´T½9»íðz½Èd2øÁ~€\.‡h4êø!KÑh !¿d-R"  ª|°‰‰ Çç+ …BDпߴiS“ýûe„äóù-„ð]¾|[¶lqÄ:c n·RJìß¿ÉdÒ‘ŸQ ÔmÖÛiB ‹AJ‰T*¥òŠ"›Í’êò¹Ýîeÿn!b1ñ/^Ć œŒy?Ž9bïÞ­ä[4 4>²^Äb1ÌÏÏ£P(¨Ðär9„B!úóqûwŠ¥){ÉñYMÿšsŽC‡aaa‘HÄÙÓÔ@# ©G·ZJ‰`0¨õ¤”öa\GXòµ>ÝÙÙ¹“ŽÙ%ä ²]]]ŽNH¤õ÷÷ãÝwß…×ë­[Ô–úø€eYu9çÑhÙl…B™LÆñ¹çææì/ïc´£Zϲ¬G„²‹SUPð®»»ù|ÞÞ¥[7~×%„àóùàv»‘J¥ ¥ÄÜÜœ£ß™¦io¯GiG€ýèG›„Ûs¹œ#¿Á§™ššBoo/Ünw]Ç4EˆSÃ)„ˆD"XXXç|UÎ9©­ÛÚÛÛ7K„˜¦ùÏ„D[[[Í&ð¡tœ9sÆÞk¨LÓ¬›j±£Þç”RÂçóAÓ4d25âóóóJ¹Ýîû%B¤”!L&•g^ë&(§··Œ±†Œ;}°Õ Qq2š8·™LF"¥|X"Dñ‡48Ï«)!DH2™Äðð0¼^oC²†½„P¢7%îår9GmÀçûCО}öÙfÎùæ|>_v¬¢R|ŸsŽ«W¯Â4͆Ò Y«‡^ ”qOd8õIŠÅ"Ù‘Îööö¸V(v !033ƒp8\–E`91”ìœH$ acõràìh„]>ŒçÑKD ~µËå” †±C“R*BœMRâóÀÀ@C’ê-!ëI~¨!ü~¿Ê36MÓ‘Ê*éíÔ8ç;9çH¥RŽíÇôô´knèá꧉k ÓR «SÕ˜ËåÔ”l,²C¡¾’Í }ΧLMMÁ²¬U>­”ÖS/4Ê~¨§I*ÝÞnÕÜ[îÔ¤”m•~L!;1ÄþÔÔ8ç Mù¤ ^h”º"P zråìU¹g²ÈÞ¢Y–´Oý¢x½^lÚ´ ¡PhY^_š¯A!‚FgÖ“F†ô(Ì>Yú’ïÛ·>úh¥S„4!Dˆs¾Ìÿ°, íííÁÔÔn»í6•8Fâ´±^ü>Iˆ”N¥ëQ›†/|á xøá‡Wh[d=¤qÎCt£v;ÑÓÓ£æè‘º²«¬FtIË¡ÑXohš†Òö€ææf¤Ói¼ôÒK+~³Œ!DÐ.!B¸\.•\¼oß>œ¨ !2ÔÈDå*ÑÄÈD"ÖÖÖe*äzšÂj@ZÆ~ÏNH±Ù”´Æ9O—ö²|>öìÙÓ4U°©©)õ½eY õÐíø}“zY «”´!„HÛ?r‡††pë­·’É$ …‚J>.½h#QOB-Ñd?ì3¬J I§ÓYñ»%¤ !„ÊJ#[¢ë:fff099©jÒlUMÓ`Y–*gAÇÊh©ý‘ö Ï»”èëëC_ßòZh¶gLBˆ1:±KÄÐôc;ë”eâóù`,ËjX<‹BÚõB£Õ,yævBì¾H¥^=£”rÜàœ÷Ùl7û è89>~¿º®£X,6Œz³4šòÐiû¡išr!c—5Îy…J¨fG¹Í>ŸN×uU<¬‘þH½‰¦´×F@×u˜¦©*H”JG%BÂá0M €>sÞ'„P¹¹•±ãv»UNR#ш‘ÈFC5MC6›U÷Lb'¥¢Ñ¨Š J)û4Ó4/sÎáñxBqιš~Ð(Gq-Sj¡‘Ñišç@yäµÅâñ¸"IJ¬«ÚÁƒg8çƒTeƒZ•8ŠD"p¹\uH"¬u:C54ÂŽ0ÆTBõ>Ô”`qé’íéO&“3”uòtû4âjv„æÞù|¾†Ù‘zçzhÈ€š®ëH§ÓjJµÝ W“Ƙ½íþ XJ²,ë-2ìóóó+°A[0„eYˆÅbÐu½îÉ.—«!רÎl6«†bÉU¨%6lÀèè(€1ö°Dçüœsøý~Urµ–a§ñ÷¦¦&¸ÝîºçP5B]P= zAÓ45= ªžœ“„ŠÍ›7“×.9çrøðá!DPÝŽ”JJ(‚®ëË*³Õ "¤ÞÞ¿®ëH¥Rƒjž¾=.X ”\Çû`pppXžýþª†a¬ðGJ‰ ýX,!ZZZàñxêš ]É~lÙ²¥fñª F9ÔKm‘íàœ«©vûQ ñxã㪈é!Ú±{I?£®ìäädYÛQZl…V Âö±•õ¢’„äóy|õ«_E,«øÛ;î¸O>ùdÅifõ$dvv~¿_c³ûÕð±} W®,›“RªaDEHww÷˲ÎQ¶I9uUºÏ9Gss³úôz½JŸ®•$dbbº®ã‘GA{{ûŠïï¿ÿ~|ýë_G"‘¨èÕÃ1 CÙ[z9죮ÕÀØb‘Î%wáWýýý*Ú¸L™vuuy¥”_ƒTõPnß0 ˜¦‰B¡°¬ Ãzô´Ëå–-+¦p+455¡­­ »víB0ÄÂÂZ[[ñàƒbß¾}`Œáĉ+ÂÜÆØ²©×TjÃéT>úŸññqD"UB½4þW ˜››£ò3;;ÛCß-{U,Ëz™1ö?<orrRyâÀòŒ )?,ùÍC[[¦§§Ç‘ËåÍfár¹ÖÜ›©å b×®]€Ûo¿[·n…”R¥žJ)ñÁTü=5üZÓ‚\.FFF`† Ù»ºµpçwâµ×^€¬išìß-‹´8qbJñ€¢ (¥Îb駦iظq#¤”ªÈÌzTW­ÖÐÐPÕ7ñÆU‹¬§§efffÏçÑÜܬ* 9QUpë­·ªcÿ0<<¼lÕ¸¡OÆØß ! T¬œÝ(ýäœ#‹! ©Jl†a¬9Yº–„ …ŠêÞ¿ö‚k‰$SD7•J!®“8ÁÞ½{qñâE0 …³¥ß¯ äĉIÎù $~Ùl¶" ¥[GGt]WUo„kJ¨sâƒÐTˆrøíok¯·²ZÃN*i||>ŸoYm{§ªjÓ¦M¸qã;ýŸd2¹¢PJ¥Áÿ.„°\.FGGË’QÎ?aŒ¡«« B¥[W“ NpBÈõë×Ë·÷ï+b5„Á&»ÑÚÚªŽÎRTc¸ûî»ÑÛÛ EÎùß–½V¹ƒ§OŸ¾Î9ÿ{Œ¢j͕ȰK‰ßïWóÜi¾‰eYŽ ¼ÓV6›ÅØØÊúÄN¤p®²ˆŒááaÕ¡ªzNí|ò“ŸDOOýÿ*ì8|æv»¿Ã9fŒaff…B¡&v{Bê+ "“É8zkÅ·ÍiÝk×®­8váÂG×p¢JÉX'“I@[[›*i8·>Ÿmmm€Q]׿Wñ𕾏qãF¡­­mDñ¨®ëj¦=,P. Œ¶@ ÆàóùÉdÉdÔX|%1çœãÆÊhÛ»Þ¥H¥Rؽ{·:W"‘ÀñãÇ+6 ç™LF­_H(燆B¡€ÑÑQ† 6,«9¿šˆÄW¾ò?~œ|´'‰DÅå,ªöýÆÆÆ.¶´´Ü ‹VB#uR ÚhY»L&ƒ@  ê¢†±Âé´7ަiÈårÆõë×Ušæƒ(êÜÔ´XáèÕW_]¡ÆøÒ¼ñùùyU½ºôºvB4MS•&''áõz•d¬…Œ={ö`zzš¤ìXÿ­öÿ5;ã­­­o !ž`Œùé /ͨ ”#…ÖŸG0„”‹EZ(•¨œm¡¾=©ÄùùyEÎÌÌ r¹œêD¤Óilß¾8tèŠÅ"LÓD6›U$äóùªã5š¦Áår©´£ÑÑQd2D£Q´´´,KŽX ---¸ýöÛqêÔ)˜•R>”J¥RÕ~ãÈÒîÚµë˳E¨ÕÊÕD·§Ù÷s¹†††`š&r¹œZM-‹! –í‰Ñröžœ]]Ò¹;::0;;‹ϺüÁmÅ×Ün·R«³³³0 ÍÍÍê…Y­UÞã?Ž^xœs)¥ü¯Õú#wujjêJ,‹J)÷ÑÜ{ÝZ'…¨©–J¥T¨¥´çC)5ôaJÛÉN¥R5´Ã0 @…B“““ÈårˆD"hmmUµ[VëøÑµ¾öµ¯¡»»›lÕ³ïä·Žã6lx«P(|@;5*Ùr a•öC¡Ün7r¹¼^/ü~? …‚ªaHe•ÑF=êÓâ.Ôë)'¡öÂÏ´,çÌçój )ZÐ…Fýìñ®ÕƼ~øaœ;wcccRžnjjzbttÔ£«ŠþmÛ¶­…s~ ÀN*\âTm©‹.%SLOO«²FDÊ‚* Iä•瘗’nï~$]¤:io`1LCK­Xác¬–Œûï¿xÿý÷!¥¼ÎûÌj–Ó[u8vóæÍ]º®¿ `c MMMe«^Õ !X–…ÙÙY•›D]ÓL&£Ö¸¥ ª|Z­µÛú¤-y”Íf•Zs»Ýj}v’."Àš‡£÷íÛ˲ÐÓÓ£BˆÏÔZ ¡kŠwuuÝ!¥< Ê[h[-!„b±ˆùùyUwŠŽår9är9µ$7ý¾t{ÚMi¸†ª¦ÒÊmödèRÕ´©€x™Lçλ-Ëç­9ý¢³³ó³ˆ)´Äj9"jbG6›E6›]Fða¯‹6j@ú{ϯÔÎØa'’X«T0Æðàƒb``—.]€9ÆØ—‰ÄÛ«>Ö¹°äÖ­[?&¥|CJ¹IÓ4~_/!²-4“k-óí‹z²K‚“ü©J0 <ò~õ«_ahhƤ”_øÍªO¶„u'(mÙ²¥SÓ´7ì`Œ! ®XŒØþYº_ 册KãgtÌ»”–6z92Ö‚¦¦&|éK_Bww7ÅÞš¦ýñõë×WØVºdŒuvvÞà5Ÿ Vؤn+P?BJ{U~¿wÜq4MÃÅ‹UÉÖÒÍNÊzˆ‡`;::ðúë¯ÓdÙÓ†aüók×®M®ù¤K¨KÆX*•ZøøÇ?þ³ùùy à³–e1š¶Pî uº•kDû§×ëÅÓO?Ë—/caaO<ñ.\¸P6‹=v‚à÷ûñÐCazz'Ož„\dõÇúúúê’nS÷Yø€8-îâv»U6ÊjjIHGGšššpîÜ9H)ñùÏù|o½õVE‡u-`Œá®»î–-[pôèQ¯ŸcŒýi"‘ø¿k>q¹kÕód„¥e~àsÀâ S$Qa§¨E}ÒöôÓOãØ±c¸|ùòªcO•°iÓ&Ü{ï½8sæ gÀ1MÓžº~ýúu_  '¼$-ϸ•1†@ €@  –?­§„À£> —Ë…_|q]Ò@ظq#îºë.ŒŽŽ¢··—Èð_úûû_X÷* á¥¶mÛ¶,ë¯cß`0ÆTX„œ¾JpBc =öŠÅ"öïß¿.© ÈñîÝ»144„÷Þ{ÎWðC¿ßÿW—.]jèâ&¯±„ŽŽŽÆØŸø3^`1}ŸêÖÒà‘å±ï3ÆðÔSOaxxGŽY³dD"ÜvÛmˆD"H$¸ví«`?cì{‰DâêšN¾JÜ4B·0Æþ\Jù ~j™=¿ß¯bYNíöíÛ‡Ç{ GŽQq¨¾¾>\½Z½íhLgóæÍ…BG__Ÿý…0<¯ëú÷®]»–\Çã®7¦M›š–3yKþ 5ß„æ/R<+›Íªš¸„ÎÎN•’CVI À¢§‡‹ÅÔfYFGG188X*•¿fŒýc¡Px%™LÎà#ÀGFˆ]]];¤”xÀmöïhG¿ß¯Öë°'IP`‘…öÅ.Å,GÊ››[QÙš1ö>çg¼x³ÔR5üNbÇÖ­[[…€Å.óç8[ÌÄ9F¼ àš¦iD×u=ø#¤íííqÃ0v؅űÚc!QTø6  #¥ÐG›¢ohhhuËàÜdüËð~&ŠñnïIEND®B`‚src/BWidgets/examples/inc/ConditionalImage2.svg000066400000000000000000000151171515163050000217560ustar00rootroot00000000000000 0 2 3 1 image/svg+xml Openclipart 2013-09-20T22:51:01 Switch knobs likely to be used for SCADA/HMI applications (optimized for use on a web page). See the source for info about how to change the direction of the arrow. https://openclipart.org/detail/183615/switch-knobs-optimized-by-morkaitehred-183615 morkaitehred HMI SCADA activate control deactivate knob off on photorealistic start stop switch src/BWidgets/examples/inc/ConditionalImage3.png000066400000000000000000000210321515163050000217350ustar00rootroot00000000000000‰PNG  IHDRddpâ•T pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î<tEXtTitleSwitch knobs (optimized)˜ÀDBtEXtAuthormorkaitehredxxµO°tEXtDescriptionSwitch knobs likely to be used for SCADA/HMI applications (optimized for use on a web page). See the source for info about how to change the direction of the arrow.ÝÁ(‰!tEXtCreation Time2013-09-20T22:51:01ù¾òZtEXtSourcehttps://openclipart.org/detail/183615/switch-knobs-optimized-by-morkaitehred-183615‚¨ÀûXtEXtCopyrightCC0 Public Domain Dedication http://creativecommons.org/publicdomain/zero/1.0/Æã½ù«IDATxœå}{p\Õæwî½ý~©»%Y²õ@¶ÆNÀ Âs&05I[ $›eCegØùc‹Te–ìNتÉNUf³[³©šJv½©ÚdR°€Ë.*"c3ƒ‰'¶…b ,ËtK²¬·ÔÝR¿ûžsöéw¸Ýê–ZÛ2óUÝê«Ûêû8ßýßóœÃ°Éñƒü ,„è`Œýiš;…RʆB¡à‘Rz8çA!„‡s!DŠs㜧¤”)Îù˜â‚iš„ç5Mëá…f®õ3-v­o ûöík( ÷J)¿ „xˆsÞ*„€‹¾ìçJÇLÓð.çü¤”G^}õÕ¡kýÌVl B~úÓŸîB<%„xL±ÃJ@6›Åìì,fggÇ‘ÍfÁ9c ·.„€¦iRB)%¤”àœCJ ]×áp8àt:áp8Ôo,D]àœ* ¿ Ãáp ¡¡¡PHI½õ¥[6›Åç>÷9D"H)ÑÚÚŠS§NÁ0 E˜•«äÍÍÍ!‹!NÃ0 Eö"19!ÄóRÊ¿9~üø¥«Ù>W®®®VÓ4¿-„øs!„“sŽóçÏãܹsRbÇŽðûý(ý¬´µµµa``B´´´`ddÙl¶,•¶l6‹ÉÉI%‘v»¾+pÎ_Éçóÿ¹§§§ÿj´Ó'äÈ‘#ž\.÷WžBœsôõõáw¿ûšššÐØØ¨$P-!>Ÿ†a`jj BÔÔÔ@×uŒ«Æ.'%Ô=–;Ç199 MÓàr¹è¸É9ÿŸš¦ýÕÉ“'ç®d{éWòäGŽyDqXÓ´/ !´ßþö·8zô(|>::: iÚ’1¶ä³tǃB¡€|>Æt]‡ÛíF2™,ú¿RT:‡555°ÛíH$Èçó0 C“RÞÉ9ÿfCCÃÔøøøï¯Hƒá IȯýëVÓ4ÿ^ñ ”ÑhGEGGG‘n¨Ô0¥’aÝ·*t§Ó ›Í†X,!ü~?t]ÇäääŠÝ”UJÊíÓg:ÆØØt]cŒtÌ?š¦ùg}ôц›Ì.!Ç@7€]ét]]]Å­·Þ ¯×[V"–“Ò}j?›Í¢¾¾óóó`Œ¡¶¶SSSŠÄ€®ëRb~~š¦@€ …>ž™™ùpÃ.ÀبõôôØr¹Ü÷¥”ÿAJÉz{{qâÄ ìÝ»‡cIcÒ~9,§;¬f-†§Ó !|>r¹ìvû’î­Ò5J¯G>Még €ÛíÆää$u‘ÆØþŽŽŽ{ Ãø÷}}}ùhÇ é²zzz9ç]RʽœsF'ÖÛ–ë&ääÉ“­º®°cbb?ÿùÏqóÍ7# –UÆë%DB¡@ ¡Š)|b³ÙJ}ŒªcbËÄÅ055…T*E]è„âO†††Î¬µM×LHooïýš¦u1ÆügϞů~õ+Üu×]«2[ËBd”6r¡PÀÌÌ ¦§§1==x<Ž|>B¡€l6 `AŸ5är¹àr¹àv»át:‹ÓápÀëõÂãñ”%§Ú}ú;‹!‹Ñ#Ìør4}g-íº&BÞÿý›u]ÿµ¦i5'OžÄ‰'pë­·VíKVBHYS`sŽ‘‘ ‰`pp™LFeIé*RÆDÍfCMM |>ü~?<LÓTÎe0„aU5~¥¿çææ0;;K·4'„xphh¨wµm»jBzzznÔ4í]]×Þ{ï=œ={»wï^BÄr¤X !‡X螦§§qêÔ)ôôô`tt¹\À‚ùi·Ûa³Ù`†jüJB(ÉÊç MÓ`·Ûát: … … ë:„p¹\¨¯¯‡ÃᨊŒrÇÒé4fgg©ûšbŒÝ‰D.¬¦}WEÈ{ï½Wïp8ÞÕu}G__Þzë­%’Q‰˜ÒG×upÎFÑÝÝÞÞ^¤Ói0Æàt:át:aë…óóù¼’ŸÏ‡ÚÚZ8N˜¦‰@ €ÆÆFhšVµt”’lj”ˆ”ò󃃃ãÕÞcÕ„tww;Âá𻺮ïD"èêêÂwÜ]×WåäQC;èÐ!ôöö"“ÉÀn·ÃãñÀ06ÌE* Ó4‘N§•Nq:¨­­…ÝnÜpà ƒUKG))óóóÔµžt»Ý÷Uë§TýÔ@à¿I)÷NLLààÁƒ¸÷Þ{«òºK¥Åï÷Ã0 $“Iìß¿o¼ñ’É$ÂáðŠ]ÑFÁ0 øý~•/I$Èårp¹\…BˆF£˜ššBKKKY)PVòé…#Ï^qg:þ/ž­æ¾ª’wÞyçËŒ±.ìÇ?þ1îºë.Øl6ÕÈ+I‰¦ip8Ê79}ú4öíÛ‡‘‘Õ0W‹ˆJB`~~º®Ã0 Õ]¶¶¶Âãñ”•†å$%›Íbnn¤”òŸþ¿•îcEBÞ|óÍív»ýŒ¦i¡W^yõõõ…BED”Rú·×ëUâÿüóÏcÿþýÈf³ðûýª‹Ø,ÈçóH§Óp8°ÛíJŠÚÚÚÔ3¬†”L&ƒT*1!ÄmCCCÑ宿ìk)¥dš¦ýB:sæ 4MSoy9+ªÜPWW‡L&ƒçž{/¼ð …Âáð¦#ìv; …r¹¦¦¦À9Ç… 066Vѧ²¢´ûZ|Π¦iÿk¥ë/k¾Ü}÷ÝOx6™Lâõ×_Çž={ÊJ†®ëERAûápµµµ˜™™Áw¾óœ9sn·~¿ٜĵc ‡Cù*dlÌÏÏ|>ß²YÌÒPÝn'çµ­¦¦æ|<ï«t튄twwû¼Æó±J ÃÀ™3gpàÀhš·Û½ú'ÞäÐuÁ`ñx™LóóóH$U½°ÍfIJlþ]éù‹9pà@çüO9ç8wîêêê–½9«îp:H&“øÑ~„L&ƒššš k„Í)%<¼^¯ª›œœ¬ºëÊçóðù|DпٺukØú}!ÙlöëB×ùóçÑÜÜ\ëŒ1ØívH)±ÿ~ŒŒŒlz?c½B  BJ‰x<®êŠ«E:¦®Ëe·Ûÿ…õ»"BÄBá3Î;‡ÆÆÆªNNÊ<âðáÃVóîS`0ˆ¹¹9äóyUTW 2™ |>ýù ëwŠÅ!{ÉñY}Í9Ç¡C‡J¥ª{šëRJx½^U¨'¥´¦q«ÂbžçÎÖÖÖ:f•§Hw´µµUuB"-âý÷߇Ó鼿QÛ« Î9jjjN§‘Ïç‘L&ašfU¿M$Ö—÷IÚQ­gšæcB [ÅiYPþ»»»ÙlÖjÒý“Ëå‚ÝnG<‡”‰D¢ªßår9k{=N;üä'?Ù*„Ø‘Édªò¬qšééiôööÂn·ÿ“’‚@©T œs¤R©ªKY9çÔmíjjjÚ ,’ËåþH¡¡!444¬Á>‘Ž“'OZ­†"0ÆÐÒÒ‚ÆÆFU}=1¯×‹úúzlß¾]ÕyY!¥„Ë傦iH&“*R æææTod·ÛS¸RÊ…ÁîÝ»W<ÕMiš†ÞÞ^0ÆÊæÀkkk±}ûö¢c¹\étét©T ©T étzU!ˆ+›Í¦jµèÓív7333ˆÅb°ÙlKŒT‚k%$“IlÛ¶º»üo„Hu²Œ±%„™œœÄåË—át:Ë^°©©iÉ1‡Ã¡Ò¹Vd³Y•]#’®Q†a¨Æöxß¡ifggá÷û˲`‰tpΉD ì…ÖüàVØíöMåhnÛ¶ }}}( E]Åó2™ ü~?r¹\U±¼L&—Ë…d2 Ã0vjRÊ!fgg«NMRáóàà`Y2[<ói=¥ ^·Û­êŒs¹\U]V‰AÔ¡qÎ;8çˆÇãðxM‡Ãe¥„,M¿bm·åÜKvhRʆJ?¦€•bzzœó²æn9%_>ŸŸùÌgpÿý÷_W^>%íJ ¡`¡P€²a"Ò KFv‹aš¦WÓ45N‚1¦2[uuuÈårJzè;Ó4Uˆ Ô;×u½bã2ÆÐØØˆ––477# sŽ×^{ŠÉ® ñSÚ°ä!ÔžÖ—¼³³[¶lÁ¡C‡ÊÚg!|RÊ¢rÎÑÔÔ„>úRJÜ~ûíèééAMM’&P dz$›ØÐЀööv´··/±<Ž;†±±±u5ÐÕ¹dv—ŽK!©Ⓣq ÃÀC=„{î¹===Eç³´—Ïàœû¬'$BzzzT—ED„TŠý““ ±gÏ´··WôZ?øàô÷_•+6DˆU¿R£RoCß9µµµ˜ŸŸÇK/½„;w¯ˆ!„×*!B5sŽÎÎN;v µµµEcë*ÒÐЀ‡~­­­êX¹¾´P(à­·Þª:©³™`5õ­ÝIˆ•úÅ¥K—°gÏž²ñ°Eø «ÈQŸGŸ©T o¿ý6î½÷^üþ÷¿W:d9“îÀ¶mÛVÌ ŒcffSOîVÖ†¦rSzË+9ӥ޶Ö.ÞB$¥”!²hØ1U­kš†H$‚úúz•#Ëe<‡ÃŽŽŽ%ßYa-h¾Þ@FÕ•S{”ª!Åb©ÎœóyMÓBV+Ëåra÷îÝøàƒ i¶lÙ‚h4ª.hšfÅ8Íää$öíÛ‡úúzÜwß}¸å–[*Öóvvv¢««kÍ s­PÚ¨¤G,qV)!ó†bÞªœÈIƶmÛ###ÈçóªøØÚÍUÂää$:„W_}ÍÍÍØ³gn¹å–¢€ã}÷݇ÑÑÑ%VÇfG©Þàœ«Btz©,1y¥\U5::Zt>K[ÎBˆ$ýEÊH×uÌÎÎbjjJÍYH£U5ME†IßXɱ†èïh4Šh4Š®®.´´´`÷îÝØµkðÄO`ffÑè²ãX6Jõ#éê=Èó.%úûû—X––ÞfÞBŒŸ˜pÔÈT8ÛÊ:U™¸\.†Ó4‹âVtžr$„@$A$Á믿Ž`0ˆ]»v¡³³³³³U磯5¬„X›Ž[ ±F@J_V‚Å ˜08çýÖ[ÅÍz«-åÂ$’º®£P(, $VÓ¥@,É'pâĉ*šaóÀjˆPå&å¡S÷UþÐ4M™þŒ±ó缟s§Ó©æì(·YÇÓ麮&+çG\ëtì•Fé3†Ã0ËåÔ ¥ÒQ‰¿ßOC _ãœ÷ !Tmn%B¬ÄØívU“TV«ãÓŠäˆ]בN§U¤‚$ÄJJ9ÔÔÔ¨®ZJÙ¯år¹óœs8Žª¡¸?ç\ ?('ŸV)±ú Ô]Q—EãÜ]»’î"ÇDˆišÆÁƒg¿öµ¯ 1ÆšifºX%ÐG@6›­l‘œiš2u•C³vŸŠØê¬ZÇ;Ò\Í)+FMèœtœ¬O+J°‚XÔ=Ñ‘‘‘Yª:9Æû&…F*NNC×Ün7\.—Ê6Zaõ`«išj£"*dØHP„a°Ùlj«æ>s¹œRÜÀÂKk³Ù”›@“ãXúr÷ϳê£ë²LÓ<¦iÚ7N'æææŠ ¦­JÉzÓ^¯‰DÁ`óóóe%¢P(,‰ôZƒ“4[O¡P¸j:‡FÔ–†lˆ(ªV!Ò¬=E2™,ú I!c étZ%®ÈUXI:Uê1v X$„/¬·ÛX,¶bùŽ”RåßÃá0ÆÇÇ‘N§Õ F)À|>¯&۬ʾQ”p"¢¬‰4 C×u5~Ýëõ*½BÝërؾ};z{{@r΋¥¤]]]£Bˆ~j†œ•L_*£ !³‚¼zõÍJF%H¹Pa“N§—8­D–®ëˆÇãðz½Jb¨-Vz^ŸÏG3œ~4444W¿¿*„€aKü‘R"h? Bºº:8޲iXòY®·ºÞ• i ó}Q=/uóVý±B¡&&Ô$¦*ŸkíôÁ9ÎçóajjJM1dÕÖ¿)-éõzaš&œN'‰ÄENo’ËåB&“Ùp%}-@Ïdb±Ün·šŒÍê{,‡Ï~ö³8uê@JùW„tww_x衇Nkšv»Õü%”C¤Ð\&µµµÈår˜ŸŸ_2ŠŠÀRtÝÃ0 õR•5ëº(űèÓü&ªhc‘Y$¥ü%çüv§Ó‰x<^T0lEÚ'± *LTi|«t(õõ zŽX,†@ °¤ðz%´´´¨2\ÆØ/­ßߦi¾Ì9Ï85-Q©Þ(7'Õñ†B!5AËõ¦ÀW›Í†ÉÉI†¡ÂGVSw%ìÙ³/^€t.—;`ý®HÓ¦›››·H)ï$¿¢4ûUî“â9±XLE€«u½ž3™L¢¾¾^é :騶m²Ù,&&&ÀÛ7<<ü­ß/qOc+„È;Ž¢e¬RNb‚Á |>Ÿš‰Í0ŒªG]/Ðu¹\Nuç¥a’j°wï^œ;wrù|þ‡K®Qz`ppp®©©©YJù9J>Ñ`•ŒÒ})V˜šš*ê¶È»ÞAzsll N§uuuJ/VcæÀÖ­[!„ÀåË—ÁûÙÐÐÐËK®Sá·ÿUaÚl6Œ••ˆrþ c mmmB¨¾u5•à›…a¨¯¯WÇ¥EåÀÃ]wÝEžysþ·åþ¯¬·véÒ¥XcccHJÙ ,ÄŸ¬~ ÝD9)¡™£ggga³ÙhµëvŠ&"cñ­Fcc£òÈ껪;î¸4¹Àß (÷Cœv»ý{œóËŒ1ÌÎÎ"ŸÏ/+%Ö- ¢¥¥º®«!`¯ôº9z###ª2)~TO†ËåBCC`L×õïW¼f¥/.]º”ohhB>~®®®î^m´u=Ë‘A-k—L&áñxÔ¼è†a¨QH› 4˜3«IÆZȸõÖ[133CRv4þÇåþň_}}ý1!ÄSŒ17½á¥„r¤Ðússsðz½ra’*%ÚLÞ;uEcccH&“¨©©QÖÔZȨ««ÃîÝ»ñÎ;ï@LJùH</{+trrr.(¥üº¦i,•J-É®D ­g›J¥Te}"‘ÀÜÜœZÔëZJ ­”H$ÈaC}}½šhlµ:Xèòžxâ :tr_<¹â½Tsòééé Á`°FJÙI 'ë¼µÕlf ¤øÇãH§Ó*Sw5A†d2‰ññqd2å[sô«!ƒ1†¯~õ«èîî¦\ûÿG5¿­:IÑØØx,ŸÏ?  ‰•ô@é”7‹OFèf28N¸Ýnäóy5‡¡ajþ•Š<ÓÜ$Ê𨯯WY?/X­ÓgÅ£>ŠÓ§Oc||RÊápø©±±±ª]UÞÞÞ^Ç9@.©4ác龺èb1ÅÌÌŒšÖˆHI¥RjMëðêjÂÚ•`UÈ´¶U‰x<µÔ*UÖSm^£<ð&''ñá‡BJù1cìó«YNoÕuûöímº®¿  ‘1†p8\vÖk`yB¦i"‹©)ç\™ÈdÙQ… Í|j}{OÍšJ+·Y‹¡K»¦µV]>øàƒH&“8}ú4°°(ØkY>oÍ6gkkë}ºˆZbµ+bÍd%@QÙMXßf"‡ü%ÚJƒ›V"‰€µJc _üâ188ˆ¾¾>H0ƾ‰DÞ]õɰ΅%o¼ñÆÏJ)ßRnÕ4M…ß×Kt •ç¬4¾±¬‹X£ÖV"Ö¢¸Óö±ÇÃo~ó À¸”òO·ê“-bÝ^Ysss«¦ioØÉSsl!¥û¥ñ3:fE©.)­B/%c-‡ÃøÒ—¾„îînš³7¢iÚüñÇ×tBº÷õü˜ÐÚÚºÀkî VØ”Rn8!¥¦´ÛíÆM7ÝMÓpîÜ950µt+8³“zÏž=hiiÁ믿NÓkœ0 ãŸ]¼xqjÍ']ĆKÅãñÔ-·Üò‹¹¹9 à>Ó4 [(÷†V»•kDë§ÓéÄ3Ï<ƒóçÏ#•Já©§žÂÙ³gËVñ¯GOÜn7yäÌÌÌàøñã ¬þwÇódÿüF´å†’Z[[ð !ZÜÅn·«"åÕÄ®V’––„Ãaœ>}RJ<üðÃÈf³8vìXE‡u-`Œá¶ÛnCss3Ž9B5¾ ÆØŸE"‘ÿ³æ—»ÖFžŒ°¸ ÃÏ|X¨Ò qé«QÊ+BŸ´=óÌ38zô(Ο?¿.GÒŠ­[·âž{îÁÉ“')ŸG5M{úã?¾´î ”àŠ†Z¥e€mŒ1x<x<5oâJ¨–xüñÇa³Ùðâ‹/nHÈå†nÀm·Ý†±±1ôöö¹£ž‹F£/¬ûpÅcßííí~Ó4ÿš1ö-cL…EÈé«„jaŒáÉ'ŸD¡PÀþýû×%Œ1´´´àæ›oÆðð0>øà:_ÀÝn÷_÷õõ%W8ͺpÕ’----Œ±¿ðçœ@ñÌ¥´ô©å±î3ÆðôÓOãòåË8|øðš%#`×®]ˆD"¸xñ"+`?cìû‘Hd`M'_%®zv¨µµu cì/¤”ßà –Ùs»Ý*–Ec.–Cgg'ž|òI>|XÅ¡úûû10°|ÛQ±ÂöíÛáóù011þþ~ë ‘ð¼®ëß¿xñâÈ:wÕ¸f麭[·†3ùýà“éhü"ųÒé42™L‘´¶¶ª’ÂåË—UQ°à©ûý~ƒAµ™¦‰±±1 •Jåoc¿Ìç󯌌ŒÌâ`SäOÛÚÚvJ)¿à1»¬ßÑ"Žn·[Í@m-’ À" ­‹] cÊçææH$H$ŠÆcìC,ŒÏxñjuKËaSbÅ7ÞX/„¸ &óT·˜Iõð.€Ð4íð•0]׃MGH)šššB†aìðXHŒíÐÀóð¨@O’âæ$¥”úiBô¯nœ«Œÿä³Óðü*ÙIEND®B`‚src/BWidgets/examples/inc/ConditionalImage3.svg000066400000000000000000000150611515163050000217550ustar00rootroot00000000000000 0 3 1 image/svg+xml Openclipart Switch knobs (optimized) 2013-09-20T22:51:01 Switch knobs likely to be used for SCADA/HMI applications (optimized for use on a web page). See the source for info about how to change the direction of the arrow. https://openclipart.org/detail/183615/switch-knobs-optimized-by-morkaitehred-183615 morkaitehred HMI SCADA activate control deactivate knob off on photorealistic start stop switch 2 src/BWidgets/examples/inc/ImageDial_a.png000066400000000000000000000171171515163050000205710ustar00rootroot00000000000000‰PNG  IHDR,,y}Žu pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î<tEXtAuthorLazur URH JCtEXtCreation Time2018H¹ŒÇ¢IDATxœíÝ{Ü\E}ÇñÏBB$@ H €0B@ rŠ DÄ"*ÞZP´Em­xQ«•Vjê Ñ"^ÊE„(@är!HÈ…$ßþ1ûðì³Ù=svÏîÎ^¾ïy=/²;çüvŸ=³çÌ™ù ˜™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™Y*¥ÀºŒ L.ÿl ¼ؘgeÔ9¸X¯Æ£+€Ë)q|Fý™ÀöÀàa`%Ö6¿™õ91q=bªY–Fê^§ÞP¹8Rÿ›UÏ_‰xñÄùˆW¶òåZïªõhýDl„Ø/ò¬eÀ ÂÙT-#ÆdÔ_Ù~vƒ[TýÿÀTà ààÅ™µÅú‘í[Ÿ•:k1±p 0x0…Ø׬SBˆ¿{dly"0¿Îc±kYäñê«Ú½u£€'÷7¿~O‰§#Û4³dÄß!ȸ,;.RÿÒÈeÝ´Œº{Gê~.²ï{3ê>Ø £îôuÖ f!¾‚84û³^âKÂþ±Ø)ãñ™‘úDŸ˜ñXÑK­2{«2߫ƿ­G8³ü0ðéȾ­‡¸Áêb}ÄK"ÏúMäñ}"ÿ%òxVƒµ"R·þ%a¸¤Û$£î}‘mψ<~Mäqë!n°º•Xq â?€¹À 僻¶sÉê둎óTgX›“ý9œÙöž‘dz,ñNÄg3/yͬ±3â,Äc5úf‰Ô=/Ò—Tÿ,Kl©{jFÝEê¾5£îË"uOʨ»âÙŒºOg6òawV<ÿÄGPÝ»¥föñ1ÄÚŒðüHý£#ÿiuK‘ƒÿSu'Fö{xF݃"u³Ùi‘º—EÞ¯ÝêÔ[…ø1î°ï:¾$ì.7=ûà¨ÈÃu9B¼þÁ_Bd÷c¹$ÌÖÒuI»¼:òø uþ}4p4ð‘úÖan°ºËMdw2O" ¦¬­Ä"஌úE:ÞÛÕ‡•Õ`ͧÄâŒÇ›ï¿%àm‘úߊÒ?Ó\ƒUb ð|FÝfϰb4 ¹¿î@Ù`_ÂüÅz濈ìß:Ì V»‰±ˆ÷—ïˆÔøaLU=oFŒÎx<6¼!kËÊ:ÃÚ2㱬î%²GæÇ†3ÔŸŒ|»Ü×Ûÿ(ÄG”c1ëabÄsª:tï'6÷M\éL>,£îxÂèðzåóu÷Ϩww$æ'3ênšQ/k„}ÖÉ#ïÑ‘uG#fÔ]ƒ˜y½'V<ÿˆ£ÜpYï wÛNA<’q@¼%²·DÆ "õoʨûÛŒz“ËÏyqâ׈ï ÎAœÙgíF8d‚¨ ‹÷•÷q}ù=«ll_—QïØŒ×¸1>£î‘÷7ûR0 §¸§F½ÛðEë9âšÈq[¤þ²ÏX‘uY(>—Q÷ٌƥ„ضÐk/*\jmxÊ/¾ñ¯‹ìãâÈßçÍ‘ú±/”_“uViÖUÄ«"h!Žlãk‘ú¯Ï¨ûÚÏŸƒ¸ ñQĆ­~ÉåEuÞ›OdÔ‡X–ñ¾Î%ûË D¸Ì*7µã%›µøEäC›22#RÿÂŒºc"$¿;EòIõªÐxìF¸¬ü.âñò{SÿîáȾ§ZåìÈ>c—“BØâWjV@lºGxÎÞdZŠŒ#Êþ&Ь´+ƒ*Lõ©÷[\•ñž®ALlÿæÈßôªV¿$³æ‰ýw¡è C?‹|¸©j¤~ý»…¶.±ÙwPcg½Gþk£_Ba;YC9ÌZ 8᳦Ç"uf}–µeä°“w¼*Ë£ˆ/#öÁ·Ñ#¦ .D,©ó÷8&Rÿ7‘ë’1…XŠ8äߌԿ´ü¿q€©"ŽA\Áðײ3›¾:òw|žXÎ21‘ãònEìÚê—gƒ*|À¾•q–ô8=ò¼Ø`ÞìLaµîü.'ܹõ¬+(䥊•ë£g=⇑mÔ}né‰=3¾´Dh›=~-Ü„Y±;vèY_ KdÍÎÑheÏ»’}–µ˜X˜¥¿¬ÿR¤þ(BrÀXùϽ"ë[b/BB·¬2ŸØÈfñý:u@¼—ìôÅ–ŠØ”ìy‡‹›G¶ñ‘Õlĸ½*ëkâã9>p߈lcF^ÜCÔ龋nîÿSù‹©ºüK¤îÂM“¬²efž0+ §ë±>¨õ¿‹|èVzâ>Ä n¨zPè"8ƒ0hwèÌ:û¬Hü<Ç—]ý¬f/["®C|8Çs§5È*7g6Db<ö¦÷…Ëijï‰T!&uàUX7߈|NÖ ^›c;1<¸õq²&v[Ÿ §ÖŸ¤þ˜škˆõ-…ËZ£Þ+Ëg:ôЬ‰™dcâÌÛÙ–0¿²<‹8¢ý/ÂÒ ëD>Dy?HûS{à2ÂÝ$÷7 2ñ/_Š"ÜÀ‰¥Éƒø¿:õW“µÆ¤õ0ìÆ ÖòdA®ÕÂú™m°ˆ ùû«Ë“äÉêr™ÅÊ—ñÜÒ>&6£v.îê²XÒ»°Áí„Sôúƒcëà έ8ÛZ‹xSŽzïÊñaZ˜÷µ0[½ÚÒPyq0!{dur¼Z%;©›Y+„Ù¿ÊñyœûJûˆ˜FÞqPa h,ïúb‰ÙÌŠ_ÌÑX-AÌHªµŠxiùhb«œuþ1Çå<÷ÏÚ%Lá‰}q.'ïj<â5ˆ‰í ÚŠ à•é÷ &ç¬{nÆe!â 6Goƒ*Lá©·¾âPYMlq×áíLH(x3NWÓ¥ÂJÁµ:+ï'Ïš|aéñKkÔÿ¾ híVbz¢Ncµ–Ø$ëáíÄÈEbÛæè­!áÎJ­zC寈rlg,#SÈ\s©[§ˆ©Ô#Xë‘õ÷§vÞ­+ðÌ‹.–¿-r:-ÂÒXñ;+b"âψ¯â>+ë´0OµòNá¿ç¬·/as½ò]<°¹ „~«Gs4X"ôoM˱MŸUY:aÅEˆïåúÒ¯"ߘ³:½E…e°îÎÙhÍ'¶,—Yj!«H<Ñ£x%!§|ž2—<¹·¬崆 9ÿpO!öN²Y!bâw‡Ê݈)©C¶Ja¢ižüÙCÖ+S‡lÖ1£Æê:<&«K…œWßÎù‡\‚Ø7uÈf /'¤¨ÉS.ÆÙº\¸þ?3Çs1â©Ã5Ë-Ì䘗³±:ßéN$œ9Þз…8•úij— f¶1b³ÖoËøL•Õˆ÷§u°…ÌŠBÜBž‘ëÃõŽcÝŒ Kûµ1Z³öÈh¬–"Žl`[ë#voc´HÃȉ¡ ‡4PÿÄ3åº+ªkÖj¯D>ŸFn$‰­¿% 8Ý¥Ññ’ŠÆ¦ú´÷ãä½+ö"\û׿ˆÍ:C|¡âx˜M#s^Ãéùõg!6jc´@l@È™žU~ŠØ$çö<‚ÝúG¸¹ôÂÂ*ù„†IþŸ¢öŠO´9â>—/¡™Ÿ=zÝOX ,_6±âÚȱtl›#îSáÍÍšÌY«³ñøÔa›u%qajN¬,Bl“:ÜÞÆœÜÑ@£%Ä×p* ³ \þsKÀzåÊÔa÷®0sýLâcO*ËmˆíR‡n–”˜„øEƒ_ø÷âÁÔ- #ÿ_!Ãw=lP… ¦5p¼¬-_l˜:ôþ!¶D\™ópzêpÍ’G žo ±zñºÔa÷§p+÷Fæ­®.?ÁÙmP…,¼µR-×*?Æ9²: ÌX¯•´ï~¼Rˆ :1=ò¥¾qbê0{SèXÿ$bÓëmˆøŠ?Â*Üahˆ“ë4V¿Å7¥ g”ßÈyˆ·7|9'ÞD˜_xF›"4ëM#—®[ø(¦œ 3N¶oO€½FlǺKý†<‹EŒÜÎV ÿ!Ìúؼܩ>‹ffƒ„»ó÷ÖçŒç˜ï{a.T­²ñy<4Á¬±+f; .¯:&OmS„=BìÃÈ´1µÊÈ7¦Õl „u>ƒX^ãX|±EêÓÃnŒ4V•åçäY½ÙÌš#ŽD<9¿–:Ì4ı 4VCe∠R‡oÖ7Änˆ_ç<W"vLrç‰ÉˆóilRæP¹qXê—`ÖÓÂÓ3Y7…x¬\œ:ôtÄž„uÓ-wỂf NfdÆÑFÊïø¥ÃÄ›ËgNyÊZ¼ž YsÄ;šl¨îÆ7À*„j&¬ÊœU.LªYÏ 3KjMk«Wæ Þ…X?uèÝ) v;—0Õ¦º,ELN¢YO ‹PÄÊÓˆá”39‰]WT½‰ÿš:,³¾ ~V§¡Zø ÎâÐ$q!UòÄÆ©Ã1ë !yeÞ¬µˆÑÈra}+$û0ͦ~ w6pü‡Y‰ÿ.7VW#öHNw£ÚÿX~c†þè³."¶¡èJèbçEÓ%ÂRñÕeâë8m…Yï wO@üñbRêZgÝŽóʲ†0OЉ÷̺˜€8 ñHÕqüÉÔ¡µ†˜B¾é7k LìŸ:d3«"v$¬ªSoqã¹ôÅz âìUu¹‰EÔSoÌRû".#ߺ G§·1ñD ÖP¹±Kê—a6PÄ(Ä[ÿ×àñzuêЋ{Ÿf“Uæ#Ʀ~fC|ˆ4³™²†ŒájßeW‰?“ã€_kÜÂ×)±¢åq™Y=‡Sš¬»ôÓÒab[B¾›2³ÞF¶÷Ù¤æZÄLÂ8ŽsËë¥Ô!™™Õ&¾Xuíûâ,œkÇl0„‘ò#vOJœ˜qwá¡μ̬ˆ +GŸÏðòa¥+[¸îÍ[îC|ñòÔa›YÄf„%Ã~BÈoW]žDŒJf}ññõÊlÄgi6}²™uF˜­òAᙾ^yuêë¿l²Á!«C·Æf*,VñqÄ-Œܧœ™:üÚÄF„ùÍ– R¿3«AÜ[฾©Õá´*[ÃTàéõ¯lQfÖZ—¨ûJÄÄ–EÒrbâýˆK¾[++ãS‡nf5„¬£EJe"»–°f4`פÓÌêãª7ØH-&¬Ñð zzÄ|hÀ>@XavAùÅž:,3ˆ.d•Gß/ÛÓéËõB^¬Ý[¥ÅÌ2ˆ÷V4Nk³ç!ŽGl—:<3³ab;»Û¦ÇÌÌÌ̺Gª!É×îx´º™u-qTÕÝ‚¥ˆë_B¼Årf†Ø˜­¨SôŒhzÕÿo ¼¦üˆyÀ­åŸ[€Û(ñLÁýšY7›3Ê?{–vŽ ¬Oš¸´ÁeC·EïF¼=mðfVˆØq(â Âàð¨?Aúc­ØeÑ3¬—5Qg=`W`tÁ}›Y'…üuodøÌ©‘U¢§µ%¦Üš‚yrâÔ+{§}fÖ0’½ÙrK+B(2„~gš?C[ ÜS`ßfÖy*P÷¥´`Qš" ÖŽêþ•Ë Ô7³Î›] î`rÑŠôaÝ ¼ÐpM-ÿìlC¼!ôÙ•Y¯)±±ؼÉ-ì <^$„æ¬sKÖùw1ØáljÕï6½_3Ki6°oƒuÌ' {*¤õ#ÓK¬$¼¨Ú§b2¡ËÌzÏ}¬Û`­©øyô…ŸÐ.æ•™Í,?ñz€ñ¡Æèa`%”2,33333333³nÑ\§»ØøW`1a=Â%åßký7üî fVP³Ãvm¨†¡û.%Nkr¿fÖ+Ä$Xççg”x¢ÙM6Û`5“ˆ¾LÆ6¹O3ëb&a xeC´%ë6Nëר}t¾ÁÚ¤Ùβ̬w ¼¶ÉºãŠì¸ÙÉÏE–úYR ®™¥·´@ÝBÓsšm°ŠìÔ –Yo+’i%IƒU$¡|Kæ™Y2E¬$—„E¬UêšYzϨ;¦ÈŽ›ët/q"â=„T1CAlTã÷ >Mh][’*ÕÌ’YS n‘¤¡…òa­VÙ¹™õ¤;K#ÏYIí3±"i–ÍÌÌÌÌÌÌÌÌÌ̬UŠåtCÆã Sv6®ø·‰¿#ÌAü>%®(´_3HÍ kŸ&äÃjÆ]àˬg…|xã¹ð†J¬n÷®›‡Ud´úøuÍ,½Ï®ó¯âª±ðóTÅï?¥ÄüfwÜlƒõl³;$,Ymf½kbŸPþ™’Q÷Nh¾Ájv˜|‘kRºf–Þfê>]dÇÍ6X‹ ìs«uÍ,½žk°šNqJH¥jf½HŒ§ùœV¢`ƒÕlÖ‚œÏ[,æ•ÿ»x°É}šYz“ Ô}ŠÏÙy‘ë™Ö|BCô#¦y” õu™Y÷Ùx’æú¢çÝy±£f6˜Ä`s`kÂYWå§–ŸÌÈõ®¢ÄáEvëËÌÚGllCh¼ž£ÄM‰#233333³ÞÔ¹>,±°0 x%>Õ±}›Y_h}ƒ%¶v­ø™Fh¨*oƒ®ÆS*´\™u’Øœ0WðaJ(Eͯš ¦3Ü(M£þÄÈJë/î(´3ë¤ã€oÏ î&¬€3 ø30‹R±Qìí'f£¦ËÉ©Ã7³ˆoFŽé§7"ÎEœ‚ؽ°vi?)Ð`—:|3k€¸©‰ã|âψ7¶"„B«°N›µWÁ}›Y§ˆÑÀMÔMè.*4‡pHÑëêî^~̬ûí….ïZ²âs±N÷Æ,÷×7â©Af½bŸuŸ¤ÄœVQ¬Á*1±€úIùVîÞHh¤~O‰' íÓÌRØŽ0©™«²[[Kâʪ¶Ûç ŽD#fj›Y/ãËwþNCü± gÇû'[BñK2q!éü Àí” ­¨cf½Dì ̬øÙÖé›>Œ×´bwîC2³Öc #F6b%'ËÌÌÌÌºŽ˜‚x⇈R‡cf6Ll„x=âß÷VÝE(”çÙÌÚDˆ˜¡¿[L-O‚ü9byÆmÏÿJª™Õ î,£ ßAƒ˜:¬Ö›#ŽE|1§ ’ ë§ßÌ*ˆíkk¯ËW!þ±Cê0›#ND¬n ‘ª.û§~ fVA|4ç±{7â ˆýQáé~"v+ÐX ñÕÔ/ÁÌ*ˆ[›8ŽŸB\Œ8*uøqâ/,/aoÖ-ÄÔ¾Ì[~ÐŽ°Š¦—©vyƒÏ_\ œDs¹v̬=Ž¥ØL˜ÿmU í#^³õý#âtÄäÔ!›Y bâ+äŸà\YVÐwÅzˆ¹u^Ä#ˆÏ#vK¦™å$F#Þ„¸œ%O¹"uØù‰ó*ñ-Ĩ嗟fÖIb ć›U¯œ:ÔüÄ>ˆŸ"Ž&ÌÜ6³~F¿Ÿ‹XXÕX-ïËA3b2áîþŠŒëÊÔa¶OHØ'ÄõˆCS‡cf9ˆ#þ±²FƒÕÇ Çˆ¨â·ôí³.VjÿÃIü~—:¤îZøK*Zõo¦ɬg…¬À_¦Ù¬ bGÄEý}vÕŒgç4ֽݺ±wêðÌzÒð °U„|žä\XHö׌ξ}WѬAáà“UÇÒƒˆ7¤­7…ÅX•y#u¸¼/u¸f=EüwÆñôSÄ”Ô!ö±)!•Åó9+Ò_x™0³<ÂM«5‘cjâ㈠R‡ÛBà{O4ÐP •;ÓR¿³®R;5²*ûlÄÁ©Ãî.bâM4TÏR\ŒJýÌz‚xâÑ&޵KðULñ“ßÀß!vI¶YÏç¦Ó4R–"ÎÄ—‰€Ø['VžDüžÆcVŒ8„ˆ¯‘ò bÃÔ¡wñ™È›õ#Ä–©Ã4ë¡OëâðCåˆÔ!wðæÕsõâoÜ–Çf™å%,Ÿ=e•ËS‡Ù}ÄaoÐjÂÔÆFà†¼·#6jS”fý'Ìñ=·ÎÙÖ2<6«ñ=Ä4š'ZŒGü âM¾°Mšu?±!!-y£W'û!î«j°NoS”} 4< U{ î¯ñÍðÎ6EiÖÝÄåc` áî^þn’ÐØý[ù*ç&œ¦¼…Äû©‡q9bfêÍ:J¼«Æ±ðKMÉ$öÁÇZdÝKÀze.}•ß,ƒxõÓ?†Ø'uˆƒGìIXþ+oùŸÔ!›µØ1/r,¬@¼?u¨ƒCü=Ùù¥«ËÏR‡mÖv⪎‹ïâXm¦\ÒÀd-aPœÇdÙ` FÜÖÀ1r/b×Ôa÷1ƒøÀ¶Êò,â¨Ôa›u\OuYÇÊÄÑ©Ãî/â%ˆgrþþB_®‘f–SX´ø ›à|>btêÐû‡8)Ç›~5b³œÛóõ»õ7q<ù’ ¨ü¼ÝR‡Ü_Ä…oø—È;ÀMü-bbÏ6GlÖb\ÎçÍdÝÅ‹k•w·9âFàVw*>‡8¡mœÈp æ'p§£õq4b~î/\±-aº[½òí6G<À›?¿üF?ÒÐYRQ=¹s>îó²^!Ždxõå§É;“#tÆÿ¸FcuÎqÕfa‚æµ4’KüsÆ7̈—·1b³ÖgU}vŸA¼&gÝâs wÆ?Žgt™ðGúRŽkø…n´¬'ˆOW}v—"i þÛ‹h4#е™Xñ_9+†Cl›:d³\ÄǪ>¿Ëid!TÏþè2b4ââœÕ_/N²YCć9Öj%âͩòF‰1ˆËs6V vH²YSÂzž•7’V#Þ‘:,Ë+Ì9¼Î• qrFë¤ÔaYŒ˜ˆ¸9gcõbÇÔ!›µ„xgU£µñ©Ã²,bGâù€Dù»SêpÍZJ¼»ªOk-âC©Ã²,b:á–m½²Ï™²~Vªl´þˆ“:,ËÒÄ>U£±ZŒØ+uxfm%ÞWn´îFl‘:Ë#¤Q®<ÓZŠØ7uXf!ÞŽØ:uÖ±{ùp%âõ©Ã13Ë&^N##€ÍÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÚåÿLn¿¸fIEND®B`‚src/BWidgets/examples/inc/ImageDial_a.svg000066400000000000000000001420131515163050000205760ustar00rootroot00000000000000 image/svg+xml 2018 Lazur URH src/BWidgets/examples/inc/ImageDial_d.png000066400000000000000000000021621515163050000205660ustar00rootroot00000000000000‰PNG  IHDR,,y}Žu pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î<tEXtAuthorLazur URH JCtEXtCreation Time2018H¹ŒÇÅIDATxœíÛË«UeÆáŸÇ“Zv©”𔩅Y4é2 Šˆ hФhì´?¡Qã&] ‘Ð § št%Ý´¬ ¢’‚È £v:ê9 ÖNZHÁÞ»]Ï‹µXkmxù/ß÷í½ €Ù³fÚþ'ÖtU··£Gº´Í­´ÒѾé£^n¡Ï¦f…·íÝÖM=Ý}ÝÓÍmlíèþbõq?÷z¯µ¿';Ò·ÓŒ ³@aÓí=Øý=ÓÃÝк†Ñ^©NT¿®—«}ìžèPïM1-üë­½ð+ü#×¶½‡ÚÛ£mí’êâjC5_Í5”׉Ñù–®îHwô~/7̽€?¡°ÆåΞoOw·±Î*¬‹:3Ó:5:ªnjK‡»¸¯{u*yaÌM;ÀÔ5ÝÕ­k(¨õ ¥uÙè¼~t~Õ'ÖW;»wtü …5»z miMÃlj®¡ .éì%á¹£¿«í]Ñ®‰f…¢°Æac[»²aC}¹:ٰɾP-5,ÿx¶Ú¦.꺶M2*Ì’ù ¿Âßvªãh(ª¥Îì®m(«Å:ý|µ¥j©…IÅ„Y£°Æá§Þí‡N¶¡ùÓeu²a>»ÜPV‹ µÚwéÛN0)ÌKÂqø²·z§O«úµ:V]uÝ?×h±¯&fÂÅ>l_GF»TKÕñ†²:Þù3«ª¯[ì@/N."̿×ïz»…v·»í\x/´Òs½ÔþžšH6˜Q k|–û¢Wú±]ß]þcýyÇz¡½½ÙžÎ߆Vñ_Âñ›ëÖogµ­›ÛÜU-·Òá¾ïó>é`Ïv¨W¦fš¬MÕæ†ï W¿L7P¿eK…܇èw8IEND®B`‚src/BWidgets/examples/inc/ImageDial_d.svg000066400000000000000000001433421515163050000206070ustar00rootroot00000000000000 image/svg+xml 2018 Lazur URH src/BWidgets/examples/inc/ImageDial_s.png000066400000000000000000001517051515163050000206150ustar00rootroot00000000000000‰PNG  IHDR,,y}Žu pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î<tEXtAuthorLazur URH JCtEXtCreation Time2018H¹ŒÇ IDATxœì}yœe™ÿ÷y«çÈÌôœ™Ìtu‡ $„„3„EpÅ ð]¯u×]/¼w×ÕUq^»º«®Šº^xpˆ‚ Š\ &ÉtõLŽI25“cfºÞßïYÝ]U=“ÉÝO>“î®÷­·ª«ëýÖ÷ù¾Ïû¼@ÍjV³šÕ¬f5«YÍjV³šÕ¬f5«YÍjV³šÕ¬f5«YÍjV³šÕ¬f5«YÍjV³šÕ¬f5«YÍjV³šÕ¬f5«YÍjV³šÕ¬f5«YÍjV³šÕ¬f5«YÍjV³šÕì 4Ú×'P³ýËúúúwìØá:ŽãÈqÎ{cÍù|þQûd³Ù—rÎ €U(Þ àÇžç½&jÿ\.wJ}cýÁn~•š„–Ú×'P³}oÝÝÝ-uuu¿päøøx¯ã8ºŒˆÀ9 XDpÎ+4"áÁX,¯#¢ë ¸®;NDœóµDô<ýçÀÀÀ£Sþb5;è,ê&«ÙAb®ë6¹®{f\7Ž8@oD•æ 4DíÏ9ß•p£q…Œ±î’Mõœó#œÃ9k±Xœ›Ð¾“P^³ƒÄj ë 3×u#¢•œóSœà©ÞÞÞÃû#vã^p|T»Û¶më0XqçÀ"¢±¸rÎy)`•–?Sœr]w€g<@D:Žóàºuë¶ÄµY³Ój€uX6›½†sþ 8çe匱SôGíÏ9ˆ"+•JEV»‹&ëAÄ2,q€5ÙÕÕõÂà`ÅC#—ËA€3œÁ9ÇäädàºîÓœó»‰èWžçÝ•püš Vs  ‚ `AT9·?cìù¸r"êˆ*K¥RI + °zbÊþúôÓOGrΗUØÌCDà–„c×ì²`æd³Ù…qR©Ô=qåœóSÊ_ˆ+,Îùθ}Ĺ„)m1å«â期pì;ÊkvY °ö_c¹\n¥ëºÿẮÇ91.üúõë=qZÏ Ây,Ã’nWTÙ´E÷9sæt!þ>|.¡íÊcËuÝë2™ÌÇ2™ÌÑ íÔl?°š†µŸY.—;’s~-çü Aäì2×uWzžwwÌî¿ÕñvìØq€ßW*¬¯¯abb"²a"êŒ*›œœÜUWW·o$Ã"¢XÁˆâ@˜!f ÀVÏó’Â!ÞMDÇø€ëºOÑwÆÇÇ¿³qãÆÊ¢YÍö©ÕÖ~d®ë¾?‚Uœó›äJˉ誸ý9ç±na‘:ÖÚµk~ɰfÍš5m +•JÅbV&“9 @KÌqï0UÞÛÛ»ÀqÖ¦8矩««[—Ífèºîù çV³½l5ÀÚ¿ìÄYrÎ_‰VÌ»1âD§c©Ð†¨}#krr2°&''ã4¬XÀª««‹s cÝÁ îˆ+wçµQ‡åœ_àqû×lï[ °ö#ó<ï!ċ̳]×='ª0ŸÏoðç˜ý§-¼ÇiXžçM›a%Ä` ö÷÷o),Îyœ~Eœó«ãöðµ„òšíe«ÖÞ³”ëº'|C°œo&´óª„ò8·°¯»»;*šD4-†  RK,Îy¬àΫҠluL ,\×=@_Ìþžçý2îø5ÛûV¬=l}}}®ëþ­ëº«|ollì qõÇùˆ²Ë—-[©p3Æbu¬ººº¸x¬¸‘Â8À€H–•‡5'f¿8Á8çq‚{R8Cädliÿ…øß!åºîmÙlö¥¨%ØkV¬=dK–,©w]÷íããã/¸Àá@DïCÌÜ·õë×{œó8í¥Ëó¼s£ wîÜùb„fĸ… ±X‘£„Ò"«®®nº.a$ÃÊår ¿ Xðã0ÎùÅ”#“É\ à*ÎùÏ]×ýc&“y%jÀµÇ­Ö0óF™Læ-[¶l¹ÀaÊÌf³—çóùF5Àûçü’Ƚ @EPÛ´i“ïºî æ–Y\i*•z¡X,Àˆi<"ÊsÎ=«£öÏózP‘tww·xžé2Æ~`ç¼À<.Ì} XAÄéWãããã÷F^`vT9ÝáyÞÚ˜öÝh}>žˆ~äºîcnªMÚsV¬™7NDW¢2X‰ œÿ€HÀš5kÖÏ·oß¾@WD•W,[¶ì†Ç¼¢nÄ9¿‡ˆ*ÁðÊÀeýúõ…l6;7ŸÏD[ŒUtŸ6nÜ;-'ŸÏÀ—­M©ÞÞÞclaccã#1»F=¼iÓ&?ªœs5:‚ VlÏf³¯äœWŠw; À®ëÞS__E€Aͦa5—p}8¡ÊIÙlö%Q…/¼ðÂ.ÿ³g>Ÿ?/ª0BÇÊÑÿ¸%—ËÕGìʧ V3i“ƒƒƒýžçݹfÍšmQ•8ç†+•Aévww·¸,æø×uo)'ÎùÍ1å0«V{Æj€µ,ŸÏ?LD¿Š«#YVœ}#®19ZXWW÷=ED_p5€Ã<ÏËåóù+<ÏûÌÀÀÀŽ„cï÷V(>àyÞì –ÑÛˆèÛ3ýoshY °bLÞ`ÿàM¨|­&c' ü%ª\.wLB4›Ý911qxT:×uçŽo¦Ÿaë0œûäë<ˆNfƒÔîØ$€ÍòoÀZù÷"DüW?€õØ Àÿ?Qå½½½‹cA4ËÚ¶sçÎÆ‡‡+j+3d.€e‹5œ 主Li_Ø×ìq¿ðö03Irë|Æó¼÷Å”§\×}b)µH㜹P(¼mZ'yˆX °,“É,#¢‡D§Ô†êëëÅ º®ûTžpûçü3ÍÍÍß”£3e#bÈ¿¤µýTÛà7±WwÈÏdã}}}íãããÏ#z*Ï6"š/SûT´l6û÷œóÏ$jÕÄÄÄII3u«V–Édn$¢O&Tû’çyïˆ*t]÷(OøÏø¨çy·aæÂq.‡ˆ3RSp5{ ¸~ÁÄvûÚΞ=;]__ÿ6ïEÉ ?DôÁ|>ÿñ¨}3™Ì<"zf`¢’í"¢SóùüŸv÷\v«–!*"^àu\×½ÀÙ1uŠNNý&€Ó8ç- ßÅÌÕˆÌ`Ñ ´w0Ù&¿ð¿FLήjLJŸë0411± ޹®ûs/MhúÝžç}awÎíP±C°zzzæ¤R©Ûü4ŸÏ.®®|Rþ @{Lµß{žw"€èˆ#Žh[³f͢䫰y®ðzGìf[3j©T ³f5Á÷÷¤7-Ûà{þÀ“»ÓP___ûÄÄÄ?Aðb¡PˆŒÝÊf³WrÎÐÜÏ<Ï{☴lÙ²TÜ”¡CÅYÀÊf³ÇqÎ Ñù'¬”)Š#ÍuÝ×øNBÓoñ<ïë3tš¶5@LÚ}€‹±‡Ý="B÷œ^Ì=læÎíCnîa˜Ó“AGG'::»ÐÙ9]³Ñš±³mí•óûïÂŽíÛ119-ÃÃØ²e3¶ oÆ–-ÃØ¼i# à_ æNKk”Å"ºÝ/Ó\GæŒ_°`AÃöíÛïP)‘sþ÷…BáóÓ9¿ÙÀÊår³‚ ¸ É@pÎ/) ±kÚe³ÙOrÎíèôûcoˆË‹gçø€“§¹¿¶9=½¸ðâËpîK.Â)§‰¦¦¸õƒÃÖ­}Ü÷ÜñëŸã¡ïÃdÌ*ÖUZ?€OA,F1eàÊår+ƒ ø*€#KŠ6KÝ*6Qb6›ý çü­qu8çŸ- ÿ€}?·t¯Ù!XËå:ƒ ø¢—sW¶ À‰žç­ª°lÙ²ºB¡ð0Düû=ÏûLïÆ¹ÀG‘ƒ½ZëÍdqιà¼ó/ÁŠ•çÁIº‰¶mÛŠ{îþ~qûñÀ}÷`||·âqWø„Ö·ŠN™É0ˆOA„BÄýq¹çy?MØïMIö@SSÓù3p¼_Û!X€Oxñ£7ðûL&svœk—ËåLLLq9”bl€ƒÈ0-klœ…‹/}9®zõpò)g€èû9mddnÿéqÛ÷þyò‰ÝiêYÿ`ÊkJáü¿üÜó¼wÅÕ•sïИÐì“õõõ+µṪä.CîGx”°Ìˆèóù|þ=3|ø.ðvL3Ò1Çž€«^ýz¼ìåW"NJÉ5³699ccÅö±QŒúرcœã;wb²h¼'à8)Ô5о×ÔÔ‚æ–4šš›ÑÜ,^S©OH´çž}?øÞ·ðÓ[·n™n3wC †<=•fÏžnoocC½½½ÝŒ±Ç³€ ÑšT*uæ¡âpH ²GrÎ jAbI­|>ŸüWÕAÜè@PV2ÆVž{ÞzÃ{°ì¤¸µPwßvíÚ‰¡BCƒؼy#¶ oÆ–á Øºe##[pÎÁ9 >˜WÎ-¯˜„Ä9ˆˆƒ‚@ìB„Ö¶6´wv¡³£]ÝèìêFÆ‹žÞ,gí‘ï7>¾ ¿¼ý'øê—ÿϯŽ]\:Ê& Öšü"’NÃ×uï¹8‰´!ÆØ™»¡•ÐvÐV&“9šˆ6V%A¿øë0BDËã³Ua'ø*D¶„)YKK¯¼ê5¸îMoƒ›ùùË;wî@~ý‹X¿îExk14˜ÇÖáMà ˆ4I€R€Ä¹(æ\+wâ½,"WûIð"bÀ88H^y€NqíÚvtÎFÆ 77óúæcî¼ù3b|ì|íË_Àoï¹# ¶ÕYÀû!‚PwË\×ýqŽ+=ÏÛ-ßö@¶ƒ °\×]à^&''Ïß°aÃPû¼b;Ξð<ï$L}î_„û÷˜bdzss ^óº7â-7¼­­q OÍvìËkžÇÚWcýº5Ø´¡€b€xR`È7 Ôà\¿‘õ0JY–ýF0-†œT '‰w!-N½'"}ï¢ïðù8bÁјäÑhjj™‘ë²zÕ3ø[ÿ wüêgÓ®Û!\üÈAš8“SxnC|ÜÉ»x``àÞ¤ö2™ÌYuuuO­[·nÚ~ïþj `år¹AÜ#¦?ë8Îyëׯ÷âö×u? J Ý$ÝÂßNñ”.…X 47•š›[põë®Ã[®Ò3Tœs¼õèÿë*¼¸f5†×£X, —.¨× ¸-5 Å%¸ ÁL±* 1/®Ë*–2´+(+ –î¢Ú%°J·1Æàæú°àÈ£qä¢c›Û·Û«ž{_þÒgqç¯>Uà`[_ÆF‹åž?‹¡È9¿ªP(ü8©=)uüÀŸ'&&Î?ØÒÕ€ÕÛÛÛÇ»åbåó^ž e2™ïË›µÑS“““/Ÿâ(à,Ÿ†Ê®Êðúk¯Ç›ßúŽÝ*Î9½õøëêgðÂê§àûÛ0ñAÀÁ΋!Ò¯c"©S ‰*8G ¿Œ+vKúª)})ͦt7uI»‰rS `•nknnÁ‚…K°ø˜±`áb06ýé–OþùøÌ§oÁãý~ª»ÞàZ˜5ÍuÝ3ü€î Åœs~}Ü$ker4òv˜u﩯¯¿´¿¿gµç²¿ÛXrdåA”è){±X,¾dhhèŸvúúúÇÇÇï€I!ó³ñññ×M1—úrßBB†ÒR[yîxÿMEnnÜlŸdÛ2¼ «Ÿ{Ï?÷ÆFGÀ€THÀ±@J• \´”®Ä5“’ÎPç8À$˜0 EŠ©©æʧäÄ$ëâa@#Ò7e%Ò Q®^[ÒmXzÜI8áÄÓ0»;”ÂjJvßoï§?ù!¬_×?•Ý6x DN®ª¬§§çÇqnGIŒ çüæB¡”‹M;ø%Êóný,“É\y°dz8 «»»»¥®®î·Éêâl=cìܤ‘•Ã;¬crrò"º;ŸÏ¿ÕkVÄtša óþ–s<Þwã-8áÄåÕîRfãèÿë*<¿ê/ØP@ @œ‚€<Ðî_œ êÚEäA Y•Ö©¤[Èy ”³¨ßÈz ²ty( ÀŒ‰6ˆ¤~% ‡“r&à ˀLy• FfGäæŽãN<G/=õõIáMå6>>Žoÿ÷×ðõ¯|££SZ äë#ÃcÕT–óT9RHDÿžÏçÿ.i?×uÏ€È÷UQÐ#¢oçóù7à ˆˆ? KêV÷ ºô¿çü¼B¡ðl\¥Ù³g§§Èªº Ö¼ ÚfÍjÂ[ßö\{Ýõ`ÎôÜ–ÛÇðÂóOãÙ§þˆñ];c ¸dHÊõ+qù„ÀÌ€”d\ԫ✠N¥ ÀSÈe¸tµD/LŽ`a‰6‰Àåh`p0fܯЬ©"ˆYõ*”—‚¡¾¾Ç¿ËO]Ö¶ÊépâlÓÆ øçO~wÞ1¥yÇϸ"¥M¢É_ò<ï Hxhf³ÙÓ8ç¿FrLá'óù|â"¯û»Ѐˆe° ž.‹«¨>Ä;?nY®)Ú‰~±VUvöŠ—à¦~½™ì´8¼yV?÷$Ö¯[ƒâä¤Å¤ 2JDéV\Õ)± h ïJÛâ:Ú€«ÑA%°kK,P „ˆ^‹E×pŸ¥ÅwùBU€S̶Ð{éZ–Ö'"0æ`ᢥ8锳qcc4+Úý÷ýŸüèͬZ¦ò!–Š«6ž X{ìÆ\.wrw¨Fô,Ñ1I¹·öw;à ЮÜÏ VƒI²-A\(—’ß{ĈPUA]³»qã>ŽsÏ»hZÛ:¼ «žý½uz”O•Í– H•»…ŠuÙ"{P°”†%B¸Ö©¤( ¹bWTV®Ã”)6%Ù•Ú¦µ-‹WN±šV%‘¨"x¹¹y8cÅÈÍZâÖ±ÑQ|þ³ŸÂ~ðjG9€/B„¸ì¶ž”ÍfçœÿÕåH{FNè_»»ÇÝ×vP 'š~Éù³` cì¢G§q¨:_‚U«²ÓÏXô_0»{NråÛ¶u3^Xý B eƒ–ýZºA‚ hø`U`_j_@$8émÂ&„#ܹ9Ë8‘Á5áúÉ}‰¬új;4èØZTè}ì¶0K«TºLÖ×7§u>zz§…‚Gþ>üÀƉ!Êî†ÈÁ?í9€®ëž ÛI+"ºÏqœË–˜¬ƒ°¤¥\×ý*D¾ó$p‰çyqË—Z"/xU–ñÎ÷ü#^ýšk§pa;wlÇšžF~ýšŠlªX,†>‡^-¦ešzöÈa YçæšQÆý@A =;!¦k¦%“é÷QŠîLLÅÂz`±(5ph\¸$m‹Û·@U.ú慳ϹdJ×Ö­[ðñ[nĽ÷ÜYí.Ï@ÄéõW}i¹\îX©ÛV³àí÷ššš®=˜²9lË@¾ïÿ,NÀÊ„º;9çß­VˆÈBÄØœUMåÅKŽÅ—¾üß8ýŒF[ªâorrkŸÇ³Oýþˆy(ÚnG´ "Yi…\ëL°¦ÖhPQ£y%À¤"=¹Õ* ´*!œ Ö$¥,(úD!¶$Á@ƒ— WP#„úÿW.Ôžýjíkê––È®äyØ ¶më0žùËãØ±c;zz³`ÌIüÍqþ…—bNO/þðÈC˜œLLŸÕ àu¢ã]×]Ä9¿á ¤QöÏóÞ:<<¼» žìWv V*›Í¾§§§çÃÃÉ9‰|ß¿7Nop!*³ÈÆØ…žçU«c1ågA5•/yéåøôgnEggÔÚ›•mãÐV=ýlÞ€ ˆÿšDÖˆ›Ž•2b€ÄzåJ“R¹qíÔfXA HÎÑÑaƒ… PòŸ¸Êß 1 ™HÁëëðO7Ý‚·¾íÝpšñ$üïÚŽ¿®~C…µÚuÓnS6U VÊ”.ê(fc^ì„¢DI1s ,à³ëëö­†´ŽN¶UVãä¨ÀªÄ¾*†3”VµàUúWœœÀºµ/ _‡9=.‘ô[¶·wàâK_Žukû«IÛ\àJˆÕª'4û¾ÿT:ÞáNV²1Wyž—´²“2'›Íëû~Õܾ¶ý°²ÙìU‰îˆˆ²^ŸN§Ÿð}?qºŒü±r€q—yžwo•‡¿ÀÏg[&“Åç¿ôŸ8팚µ$ýdž¡uXû×g°kçva È6œÊ@ŠÂ#pÜj‚[‚¸q ;K8‡iZDW@ê „x”+eÎRþo¶pµU…5H¤R$‹ Ò•Ö”]Ädw0N×bŒ0ùjêùx~ÕS "tug lÔ_]]=Î=ï"¤Ruxâ&"2/° @â< ß÷ÿÐÒÒ2ND¥ih†cU;çuÞ¼y™¦¦¦Ÿø@:þ?ß÷ˆp‡ý°²ÙìBÎù/ ÀFY€×¶´´LŒŽŽ& æ¾ï¯iii¹“ˆ.pƒçy?«òð/ðCT¶°xé±øÂ|¹Üa˜ «Z×ÿ ¶ oÐn,ͧԌ‹Vή¢^a3. LœAŽj.f¹˜ÊHªã¢Ÿ3YS–An3C‡¦\‚F 'Ú“ªX‚X^±,&^«¢N¹M|®Ä°h2b8½u(ä× ¶ÕĶ€ãOX†G…øm’®E.‚¸×£££¿K§ÓM0ë¬*‹ç …§’öÄéb±x'-…È·"Nÿ·ïûûýôý°–,YR¿cÇŽ_è«P̈è%étúøîîî_mÙ²%vdtt´ÐÐÐðÕ¡¡¡ÈeäKì5£±Éý`å9çãSÿr+Ò-éj± þ¶MðžÇâD IDATd(׸a=¥®^)8•–—šb-Ò›“.7]‰´Rż8'y a°RpCÒÝ ¦Ò(ê¤ëJ@íkŒÚŸ¤+¨*”žw%À*w“«Òh`T=b¦L¬(D`L–i÷vçŽ1¬yþY¤êêÐÙ)µï˜ßzÞ¼ÃqÚé+ððƒ÷al,q†Î™nbìZ…àûþoÒéôBˆ|mç …j˜ëºð5ˆoe=2¾ïWû0ßg¶ßV]]ݧ üû8[499yE[[Û½###â*nß¾}¼ÊC¿bªMbúâ+ÿæuøÇoAª.¥µ ¸“Å lz[¶ F#ÁÅ09íÅr…JÁ We†¥êÙî!·Þ«W*ѱP¸l ¡wœÃ’ÀBìI¢—Ù“4]3-DÙî^›Rû'iXº­°ÐNVݸ?u°Ao¶lÙ„9½Y8Žû»wvuáœó.Â=Šááļ’gC,vqRÅžžžÛ‰è[ëׯOœJ6gΜž¶¶¶C,sWi·Òéôs¾ïO)õóÞ¶ý°æÌ™ÓÃûª`8º8çoH§Óý¾ïïî”›ó!Ò|$¥MÆ»ß{#®}ã !·%Î&Æw`ÓÐZìÚµÝ ) )°ŸÌÿ€&õÞÞVʲlWPµCФ$)ƒJAøXz0SpT;Š©ñ01’ÑYâØ!=+ BšíÈE­s•°$û}äkEv%K"€*Id$»’. ÈT}‹q‰?†±ÑmX·ö¯èšÝƒY³â—Rkjjƹç_„¿üù lŠ]\΅Њ«4<<\ܺukbØBooï Çqîp\ÒqÛÚÚ¾3222¥Þ{ÓöKÀK§Ó?†ðÑ3UìRàŠt:ݵpá» …Ât–>"sd¬fÅÃûÞÿa\öò+£U×’¿Û·bÛpAP”ZéÎM EEô1´#TÁTïímög†]ÚñÓî¡aKÊ%äRÞâFë,E†gqÓ†~#ÙÓV_KeFff„wõ]UC’(é©êW‘®¡Å¾ôvÉ®Ôâ²6ˆ1bzßПt#† 8õýσ&\Ęû ¾®ç¾ä"¬zîixñËâá9`w–¥gÙlö&"úª[G`V‹FGGÿw7޹Gm¿,ð}ÓÂ… ÿktt4€ ÉÕP™SFGG/N§Ówø¾¿m ‡;ÀH tÿtÓ-¸ðâ—Uå<Àö‘ؾ]ÄäçÅ³Ú “ïU̧-®W²J#†eÛ¹Š©‚!YÖˆ¡v¹Ù/ôÔ®A%t‹j¦Ä…¦n6pÆX ¸`²?–¹ÑCîqÅWyNÓeW¥»À6V¹ ä ´/0€›7 bûöQt÷¸Öƒ¡üŸ“rpι ¿ Ö­}±âo«/˜Q± S\¡\×ÝÚÚúÎùõ¨ìV²ç¼k ÁÔ{Ýö[À€B¡ø¾oKKË#Dtª/€H‘|U:þJ•£}'‘ÖÕÕã–g¯<¯Š&Îì݈‰‰ ^:0Ù!9WÉ„ ˆŽJé–l3@ÇAdB «äx6)0 Jfµ¾¥‹BÀk´3±`>]d•Ü%Éý+ï£Ø•Ü+FÏRm0`£˜” ”õ4ó"ÝžrYE@#ø#[1¼iÝ=.'ZeŒá̳ÏÅÀúuI±ZGø ¦0Gf0½ Õ/zÂÜÊ»Êó¼uÕg_Ø~ XÊFGGÿÚÔÔô-"ZBDQ™EµÑ-žç%Š–4ù.±Sõc¸éƒÃg®¬Ê ‚IìÛŒ 8 •›Nw7 Nå™6Å —~Tâ(Lqìi!¥.aiyEÑŒº¥]BHÝJqÎÈ VyÞœ#t^Ü~åbEœ Ø$32®kÄï J`Sj[ÙçR×/ÔJ§º?›} ¦ŽÅĶ]»vbÃÐz̞݋ººúÈ{„á̳ÎÁºµýXÛRè@Lèÿ €ÄX©l6ûR¿ОTWšlzëÈÈÈ~?ç€,@èZ£££ßmiiñHÍEeöü±çy‰Yåþ?EÂñD ÿtó-XyÎùÚ‘‹û ‚ LìÜ ¡hsp˵Saqyv¥;¡øl»†Q¡ Qó ÉjHå¬"¨>£•- %r®–áâg,K|ÞÖÖv?çüD?Ô·qÎßêyÞ|ßßwÐýÍö9`-[¶¬Ž1vsWWד[·n­ju‘‘‘¡¶¶¶opÎ;!~€ Îù%CCCýU4ñ‰ébßzûpÙ+®ªæ”@¼â; ”êÌ‘NjÊZ4²pL˜tɸF »¨²žUi»q;jØ•\Â˯T]íêÓ¢Ðy„'<—œ SWÂÚNæËñR·P–'}Ö×Q\•@¥Ú“î«Ò-D„nUªa)°SõÀÍ›1«©%výDÇIጳVâ±GÆ–-Ñõ̃˜Óú‹¸J###Òéô €——–qÎï%¢ …Âqm쯶Ï‹ˆÞàÅbñÚ–––¡ÑÑѪb©FFF&}ßÿE:þ€ó|¢P(T“‚öˆ(öØï~Ñ%—áš7^9Úcÿc4 ‡)}ß<ùuç²·Áê³?ÉMç….2쪒E‰í¥¯Ü‚d78éRí§HWÑf`dKE^…NVG^²ƒÄwT—ÆvSËÜ;„ª JÝ?ësµ ÅÔkLÌ“®bOÂT % V[¤ÚO…qlÙ<„ú†F45§#ï¡T]N9íLüî¾{°}{lDürëü)®’ïûO´´´,%"•:|€ …ÂÛ|߯:yà’%KêÇ™;:::턃3iå¬~/šëº‡A$3³£î~Ë9ÿÛ¤Å"l›3gNφ 6"y•›9q-±i%OZ~*>tË?ËŒ ñ–r8ê¢L€'zPY;^¬”óòÄzÅÀdþ ™”£X Lnv™Ö8(–'ïSÙGíר÷v‚>ûxE°ˆ (ó¼^šs.™:8.C „èaE $‰ä€¤u—©ì ØJô§é¾j׳"€ PÌ€ :¥ñXö]O )ŠÞ ¯å`eOëa8âÈ%˜ÝV¸¶ Þ÷Þ·cl,výÓqƒ±SͲÙlçüI›c¯êZ™LæB"úw"šÌçó' !ÇüÞ°}ʰÒéôÿƒXÈÁ¶Ã‰è-étº9N?\Mh˜˜¤MG„9Qì'ÄUš×w8>ò±ECC=’$öºG£T Œ¤b\5â§+¨2Õƒ•œ£õåþ٦ꆵ*õ¾tŠŽý^ìq´'^œaXAó¸%M¶ ÁŠÔiZ®)Y_¥«¯]>{7äÓrëÔw*ý\ʦL½Q=Î%d aТ8W¯T¿’qWÄH6Éö`12rPÞæ¶-›ÐØØ„ÆYMˆº§ÚÚÛqÄüxà¾{"Y ¦]àÛ"5(ß÷w477ÿº¹¹ùŸûûû«Ž­êéé9¼­­íDôq³ÌI§Ó›}ߤÚ6ö”í3ÀÊf³§ø*³<b"èëÒéôß÷WÍÀ!?1*ÒÚÛ;ðé½­­m‰{Êahnt¥ÅÀÖ¤¥ŽAP²å ZLÃÜ”v§ÔzB;Ipà¡›¹R|¥÷FÂé#Š5•ºV·¯v·c4ð†qKe(µš¤›h.™ëb³$±¡zvEªýÊ";ã–IˆMA¹„%¤6ƒÒ`f¿’uüh­k۶͘5«õ ³"ï­L&‹ææfüññØ%ÚÌp[\¥ÑÑÑÕ$½ĺétúƒŒ±ÿ°´¤ø´æææÿ¥ÜÓ¶¯‹Òéô÷P¾´|©µ¸:NŸÔÔÔôû±±±éúѧøb"~ÇÁ>üIÌë;É̊О®7ä %M в; d‡VÁ’ºË«Vx j–fD¨¼„YÀÖ´¸nÐ|²¶iN•€ãœƒ¥©‘fFj¦³Ð©do )$¥›qR_a *aN‘úUPÙïã@K‡†ÂJu*²Âl ¬ŠÊܾ÷Ñ:8ÐÙ6Œ¦–´ˆÓЏÇu4†† I¥‹Q…žU¹®û2ˆ©i/Gå‰ÿDÔèûþ¯v÷X»cû°\×ýïÂ. coiiiÁ¼yóÙ¸qcUO iÍCcó_ûÆëqÖŠsV©¡«½Iîewø‘O¡®.…8fEôÌnC}}J>åÅþ¡N¥úaIY¸srèìœ ¬{R¬E¶añ](`䨤°8öe¡bUÆ TŪ×È÷x€ô&ReJ “ØO5‘…Wñ_ |ÔõšŽ;X¾Í°"Ò‚{œ ˜…¢ØÕ” ¬˜Ö¯JLAåâ|p•08Éö‚ ÀΣhN·Ëï^~ßµ¤ÓpÝ,z0v¦Ù\ˆÅY«™ŽÆ\×½ÎqœŸBDÏO†{zz¾[­.6Ó¶OG }ß/ø¾ÿÍ–––'‰èDT·Öp¥ïûI“4Û |òÈ´ŽãàÆ›?ŠžžL’'ˆ9ÝmhnjÐLÈ`a ÆRcçÀR’¡É÷’YqÑÏÁCô…,à© L•´,ó9Ìè”^% ÌÊÏj“avêÜʼn‘bž’3–>>ÄwR#Ÿ’‰ék¦®#éï^ªkÙlKÕµÁ, ¸ì:*†Ê±¬XJIÃu¤øÎ h…Ã,¶V²žŽÛb“.gPœÄd0¦Y­‘÷^.w6mÚˆãõ¬3!FÁ7ÆUÊf³¯‡Ðs«I$`Û3ÞìyÞû ¬€êݱ=j…BáÇK‰è½’üãÿ®rñÓXK0Ò®¸ê5XpäQ"Æ)毭½m­MRxe`Ž˜?ÆO_F`Žr',ýC=™z;↷:†vC„‡IבÃî ŽLÝKCé_i'¶·©÷TÈ’^5¡W‰þã=µ_jt,›]@ ÚÔ4ËB4#h¡4™…ý9V0lÔ6¸T’ÌG} ˆ6¨©Ï”6e»˜d•‰KcÅ\“á å,¯¬ˆ‰ SÆTH3@F„£Û022{^÷¦ÉÄÞÎõþ }º··÷»àS­å!€êØ)¬‡°ÇlŸGº+Û¸qcÑ÷ýß·¶¶~@#D|Véù9ŽsyÏðE ÂÝ-mþ‚…xû;þNÜx1Ö4«ssÝeúˆìjVç·]„>WbZµ#¶«IÇ¥RK>¶»e)F•Ävµ]½*—±T³'A+Á_éSq ++ƒsŦd¹:oû»puŽæ#×LÊ”(&e@Ã0ªðµŒ`R%ŸCÄ”{ ´øÔí‹êBá j´PÌà²~foP,ÎÚG¥¯ßµõM‘iiœT G.\„{{78ŒÎ( &é_¡PZ[[WxCTi[ÜÂ{m>ŸSÐÇö¤í7€¥Ì÷ý¾ïÿ:Nßöp”Uü‰|>{Bõ®`äê¸ ¸ùÃGKKk¨³—þ¥†ùGdá8L?•ûi@FP+a$?R¹ *€,×Ñê°²–Ѧ,¯!·N³ÍvM=Xár W²]•×dgàÚÅ dݬ¾ ÊU3YôÉÚç Ü_ L`‰úÎ匧ô!PٌܮÃ,ðd·Ì0O”º€´Œ ÇŽÁ2ÀVÐÇ6#‰ŠÅA·Ý.abçv4Ìj¿G…û±££“““xîÙØä gø€È‡ºïû/¦Óée÷-e»8ç_”¹±îÚßRÎìw€¥Ì÷ý;ﯵµõ~ÇŠÅâkÆÆÆ’"ßo𪸠W¿öÂI‰çpøá.š› c²Ÿô€q d‡ÓOtHi½¤Ó™Nn± ÙA¹pÉú8LM< „y-ind3žò‘ÁRQÞ3#» ðQñWè8—ººÈ JÖH#‡Ù%v…ÀJuNÁ°Ôu²ø£N™”n# Jº¼ôÏ>FVX‚£„õ0x)÷¼´,ѽÂT¨QA¦Y8ÞKµ"1©Y–tã%0‚8Š“hhŒÎÔ¢Åxô‘‡àD®%Ü!…ü0²étú 7À¸À‹Åâ僃ƒßÛ_³8ìÀÊf³/mmm½´±±ñ©)¬^ð}¿ß÷ý¯µ··ÿÄó¼¤j³HXžë°y‡ã-7¼CÞøÑ*{ÏœôötAæÉúdƒIa†a…ÝCꌚ›¨ÏÊÕS ¥Ë¸UGV²å‰d‘¥R—°ã²ë…ã¯,Óê¹t U]˜zêôš‡ºqõA^/ε+È¡¾'7ïKÀºNx[$‹²ÊÞÆ˜IÔÒŒ¨(V#…ô°[(Åu‡ínk•¥`bYÌÔ1*f ú Ô4pI¶¦AÌ‘®aù}Éáð#æã¾ßÆ._¸b©°È)ß÷7¥ÓéyÒËDt•çy_Ûg1VÕØÞ,J§Óßpã87¤Óé–æææ§¦âÏ« V»&ÝL™9Žƒ÷¾ïftttÅÆ[ÍjlÄÂ#çÉ›IC‰åÚXTwM˜ê—/T²ÄÞ®› /,jw|cº‘20RìJ•Ù¬ €œàvI’Ø¢Ë4=fÒ¿L€«Æ)C¸ÀƒÀ\óuäõ‹`Qj[ 3-u+éV&6 ‚9)7Î)Åc–+¨@‹Œ«¨FþT"¿ð´0@Ù¥™!“OKÕ‘€Iv‚ùV@"ˆÇá8@D|VGg¶lNŠ‚?À×a~’2kkk{œsþ+Ïó>êû~âR>•,—Ë9222­ ÕéØ,×uÏðòã,+ˆèoÓét¦¹¹ùÙL[q`QT…‹/}9Îäºî˧pnàƒq›×‡ÓÎ8 *q^ÔßÑGn‹¥A¨' Õ±5p9JDµtÇÑ å„€†à8²]Çê6hÁq˜å˜›ž‰Ç·îLF;‘@§:“c–«²;–ã8¡Î§êHÇLt$¨ïkD9€Îñ$ëŠE?åž‚‡ÓD«LMËT ×WÛ(¼U±0›Yivk‡rÝåH G°Y˜fnò»B±£ŠF»*Ѭ4°É‡˜­‰‘Ù®~0èÙ±YÊ•µã³ÌHvDÞ¯ÇÕ¯½&Ĩ+ØûPý :!s]÷Œl6û£b±¸À;Ÿñ<ï²écª¶ÇkÁ‚ œó7Oc×ÓüÄuÝ¿¸®[)N¤Ô.£põk®òOÀ#ÿ²îtuvê'(`n&R¤ÙN+¤ à0Vd #’ñ\³r¬'°ÍÄ@²,̨sàØ å00‡ÀÄ+A×UìÊfY¶Hl×ÖXÔS_ötÑ‘¸ÉÿE »bgÐú”*EI’F0kˆí_a—6®/ÚLMèH h6:£ U`Øà3:•¤Jn ýÛR¹È.î üú³ºVá!1¬†éB3Uñ{q ˜Œ¼o8âHœ´üÔ¸ËÙ±†Aµ–Êf³¯r]÷÷~Ç9%ªÀ "zëŽ1mÛc€566¶•óêTk]õõõkê€ÅU8áÄ“°`aüôæ0µp>ÔSÝÖ?˜u“æå„AFvêX9rôÉ‘À¢@B²S×ÑmÐr F‘˜|Úê››u|ÆÀÈ‘m(@sBn`bY,+ìZ®¥bVÊmRH¡’ íÑ«°jöÓÀeؘr)Ã?ž²Òé9á_9ÌŒÌg˜ŽM“› PÖe¹ô²=ý[“ LdÝ ¦>Ìo öW ¨§\?%(Fž8­â°ì‡œ-A0§ˆÑ÷ïW½©TlWû{TÁ²2™Ì{\×}sþ}ˆµ¦bçõôô1Å}¦l{ ° …Âãõõõ.€WC䣚҄I"úbÒ*:W@ ßFµ—]vE,³âÇ‘ GcC½ wdõ´5l ᜶bUŽdFêÉÎÁ‚³"GÎt4¸)Ðs áR2ŒÄgG²-å’( BIDZJ»5(eYb%RwRù‹aÈlÖà£L­Ç¨XÉÕ6Ȫ̉_ ¶ Hš#•²°“h1©WÙŒEi}LµÏ¬0åzæ·Ö`e]/*¿^Æõ$ 8¶^Uʰ«mƒ™ù¤ÌÜOÂC5l‹1‚CAäýÛÙ9gœ¹"®Ÿ´xW\y ΃X™g:ÆÇyý4÷­þ {²ñþþþžç}ß󼋉¨s~3€ç«Øu×äääת¨wS\á‰Ë–#›ËÅêVM³0ÿˆ¹úæ‚tùÌÓÕrÙ(ÜñÍÓ7–v9ÔÓ‘1ãHà ãhwŽˆI´X´ “ìlŽf|âæv˜9/\Ƶ,e[•:])3·±˜„&“™€Àš¶Ã¹Ù',ÝJHíÊ®*ëÛ@dÞ[…ËHXˆaIP«òɸYj°BˆÚÒ½Õ Œ`~oû‹åÚ:¡r=íˆøPþ-劓1»Ö°T[Öè¥vÏ™TyÕ×@<ò>¾ø’—%±¬÷ ¼ØK™ÑçâÊ#Œ¸›ˆ^ÕÑÑñ©iì?%ÛkSs|ß}À÷ý[Óé´ Ó]1• Ô¾?88ø­„&Ïðþ¨B"Âßòv¤[[c¢®€eËŽA{[+”_zÊ[.øl‡7 ^U9¸rŸ ÛR,DÑóÞrµä{Î9cÒ…RLŸà¢ IDATy¦ã0ÓoD#b$ŽL¢*säÛÀ [°­rr?HŸÍ.“Or)òšÕqä ‘Ñ¦phn$ô*5ÕÈ`œº¶6¤ƒd% TùOå­ ±D­’Œn7Œ”) ¶4A²Fêb·©%ë³bnÌzH)Àq ƒ* HµXšýP3n(Œ[¨ë0ÍúÔ¹ŒOïãÆY³0²m+Öö¿Õ%fALŒŽŒƒð}ÿÅÖÖÖ+3ײ neŒ]—Ïç?ïûþ3SÌ<-Ûée¸çy¿ó<ïMõõõsˆèUî†ÕÛˆèÖ*Ú‰]ŽþÄe'Ãu³b™ªˆ¿ÎöVÌÍfT²Fol–¥¨½­3á–if×eú&Ôú‰ã]K± k4Ñü‰…-GàXO^GëL3,Ѿ8цú.Žã„X)Óª8j¨r³ÔÒôEþNòO&`+ÛÑ“¬‰é_ÖD–…BV˜…™{Bšlbì (×R°6æÀ0AÇJÜ„˜•\'²¯±r×Rÿ&a f³*›=YòCËU¹u†Èûù¢K^&óÄGÚ{‘@R8çIžÍãœóëc}žç½``à…„ú3jûtòóÖ­['}߯÷ýo555}‹1¶ À6Ïó>“°ë‘¾€Ê÷?àº7^tkdî>ÀÉËO@KºÅt@ÞàÐMÛ¬J˜õ¤ôÍnØ“âdÚS{Ê«NÇÍDgÍÚÈK’ FÏQíᎭÇèÔüC½ 1,›UÙ¥\¹qŠ=qí"`QÏ9Ô¡øyÔÜ껉ëUÁËÅ+\/ûO3(‚CŽÖëB`AŽt£ †ôExƵ/cVÆÅ®ãfô-£Aé|ðT J¤0FW8£m™žð9æ(¶ïÜU9BCC#¶lƺuýQ·|€'<U¡««kU±X|7ÂËÜoð%ÆØµù|þÓ£££ï«,»3Š7£644´À‡«¬þnİã-FÆÍ–Í¥³möì.¸n/T„×*‰Ôd4hq0&zp€@3 ‚^ŽœP)oÁÄIvlBÀ¹¸‰U8b¢-8( \€sÌ(`qP¡€! €€S,‚¡È¥N¢`‘`ˆÓÂ7s NLnW Lƒc C%Y#‘ˆÏa„I.¾ÉsP9âMry=`F)¥€ŠÒ2@k‚;…™‡‚½Õ”©s²d€ê<í1éºY™d€À ,+‹9Ûl‹,`Öc Úƒµ/IÍ€°ø>â\Ä>âûjSn´rõ÷'46Öcllã•ñ✗\€w_™`ÙßøITaÿV×uop ›úªã8ߨ/²7ì7€5kABò±sÎ=?îÜqqkž‰ÜNŠ%™ÅâEêÆ 8“Õežs.&©Š#D}L€Dç\¸l<À¤¤€*m#C± À8w$ˆB§"Q` 8kÏ+ä$fùsƘõÊ-&$¶ p‘#;À@(Ba/M°Ô™AÍU„-$’s$ :™6JLoÒܰ[°ÀD¡Éq,†ÅhÖ¢ô12noXiÑe,ʎɃþ éú‰c-/ÏðhÖ¨È~oþ4ð•hyâ’ZÓØ¸¹rº«îî98zñR<ótä"Ïg8@dÇq>Æ9ÿÄÀÀ@5d{ÕfÔ%Ìår§´´´<˜N§O§Ó£¾ï¯ŸÉö¥½ÀUQ…sæôàò+T:¬ÊR{÷ìNœtâ±Æ]#år)×ÐrYl7æ¦QÜBÁ›z‚÷Ñ~ª*j j«›Y\j7eªÜvÅ{ËÍ“ñNšåH ‰áò¦¯4Ÿ°T€2»ƒ| 8I¹X¦ž@2K*4p…\TRÀùý…¦e®WøúÆý)@ÙšŸrÅLrí°¥1íŠã²’ Zf•e UHÓ²õ%£s2bR'SÛTè‹q¶uÌrwS™<_ki垦êRعc&‹ÅŠ÷wºµxô÷Q]v¸#ªpdddËÞÌÀ0›QÑ=‚+ â8Þà×uWg³ÙOd³Ùãgð0oŒ+<{å¹PÙ ¢þ–.Yd(¾|ÒA å[Oqýä$5ìmÏ#óÔÔOä°(¯õË…qWrÔÊqÀŠ•rÔŸÃà¤D™ã(!ÖÑ#_*NKí“"f¦ 9¤µÕ^ÊI…c¬,ˆT…7¨ŽÃ¬k"¾ªPéêh­LlSˆÊÕg@¯ÐÕ™ie–¦UVd™Ú ®¹8KãR‡`kAv@®U,+Y…m!0R¿µnŸ$Ù0&´Dƒ ?±ŽMÆõ …ÏØûêÙæ»8Œ¡µ­9òþ>òȣັùß_Ê£ó3a©l6û’l6¹;6£ +NáK;!&%ßN§¯M§ÓGHæµnš‡8 bÙ® ŽP_߀«_{Ml–õTÂ;#‘ICÍemoMcÃÆÊžÛ‰'.ÇÏúq °¾ i”ã,—ËurÎ_Ê9Eh*Ñ_ /3:š8c€U,ãÒÈ”ÚB"º9‚›]×]Å9ÿÁäää?oܸq4fàuq.?å4(YÙêëëpô¢…ú³f3Òµà#;º¦Q24€«ÄzBÄæ¸p˜#ÀˆqÉ2d¸ƒåÁ!’âŒ3`Aà€±çpÈA@XJ ER5€“* %ÆåQ,:`BBðVg/D`³À×£†ŽõBçRÛ9â)È$89E`’$—# a –ž¦Gˆ¤J”›°Jî a¨('+3䲪P2Û™åÒÙîºV¶Û§t[ÃRÇÕë ZÇЮ¥ ¶Hº¼2P)ð1£†a Seú7°Ê;:Û°aÓ°~(ÚÖÐØˆ¥Ç‡'þøXTw¸"ŸU!ªB©e³Ùçüå.‚`âñ£ËuÝ“=Ï{¨Úö«±™%¼dšûED×oܸñ–„zgè*ìîžƒÃæÍCÌH˜DL`Π);‡=bfV—7f@ÜZ€Á.GNTl @‘ Œäâ $:l`\¥¤Gö4Â@°8` •R‰¹azäMj¢”†eÒÿ°Ë¥\»² P ~F¬W õìWí†Y ¥t'uN0-7Öd~°OºÁ¬„QéØ-˜yš6P‰Ý, “û@] hkKcx¸rÒÞ“–ŸXD¦“ÿˆª®ë.âœ_àœóåúÇ«Î.°ÿ–ëºMVîF?G2u¼2®ð¤å§”é4¥¶dñ¢2pRVš•SÝjùu•ñS`J é‹ì”˜Ò{H„=·ÏŒl¹ÎŸ@b@8pˆ#¸ N €JV€q3X˜d€mœ49 $ :àçãà) Z–&¥@ËþÌq’ŒPuDD’Yrù}H¡’aL\2ƒ@o6çYvÆöð…™„Òµ4`0èlžL2@‰ÛŽÑ‰*UhäP ¨5Òg±2ÒÀ «²CÐXlÍÖÝ1 €4‹Rñ`0À¤Y¥ŽÅ*ýÌô¾êjvuµcó¦ÊËÌŸ$:::±eKä€ß•H,?&¢E u¢ì™æ¾mFF ‹ÅâH^±9Ò8ç¿H¨Â¼2®ÂÒc‹M!ÓÞÞ†Lo®¸K>‡n11qWBÓ¸Q…ÙÜ\ttt†F»Jÿ–.‰( ªVögC÷Ãa ¸uCÁz² çB?ÉË&ÒjwÄ ë êw˜(æ Þ‹Ð"ŒRx‰×È„I0'• Ç'¥AÊ~M¥ÌvõÝæH7Ð4å*9`b݉ ýRÔ‘þ ;¦§'©‡¬Ï–ÛdÒÀH![êVjê ]wé–ê ¬u}BñOò÷v”²r”Ù#‡DYÀ!õ2Ç>žZ¤~7bâ|ÕÜQ’ hhægò¥Ù¹µìse 1tÏŽ¾÷—] ÜÂH«‚LĶ?11qînì_f3é^(žð,€ÿ½½½‹ÇYÁ9_ `€ž »Ý·iÓ¦¤¥çc/ê’%ÇÄŽ }Œ6eè7P®e©m¶‹¨ÊK]IA1‡x™«Èäˆb )=àE¡;)½ ‘^+Û¸ŠœçŽ<¦Š'㇀§HxŒEëÔDt<¥d­Ipp8\öà \¾·ÝB¨J„/‹â4ŠEÈbYéïbÜWT"¨T\há]éVæú™Ý´ž%AK?`€"¥†+g‹zr1S! “‚qÏtþ|9RgÇÒ Ìf¡‡쇙\&46¥?)×Q¯Ö©ÈèVZÛR “™ÏPׄI½Li|’æöÌ麵ål6‡öövlݹ8Õå UT4Ïóq]w€¶¨:lçüA:Ž3•(€DÛ£SsŸˆõÐÆ[ ¡w­0‡ˆ~]ESÅ.YzLìèàa¹,šššTTö¶R€²ë1&¦¶˜(s&4.’W!óÀ¸_•†.u/0#Ê;Lä™ À @ipàH½Hß™R‹ê¼D¦! ŠQeH±˜3‡q)È lkkXâ;:(éºÐèÈÑ$ä7‚ÒáyÀõ«œÉ¤Ec„°®PÊvûlv%z¬‘cŠY)6i²R ++s%™IÖªC ˜f2jTO»_d@°-ËÝÔ2€7ÍΙ ý0š“­W‘ÒÀ`¾—¸"æû«ëÁ`}†%ÌÃè^©Æ´´4cÛHåçþâ%Çࡈê+ â²¢–éš„X”5Ž4¬ðÿÙ{×`K²ì,ì[{gæ9÷YU]Õõ¸]=]]Ý3Ò<¤Ñh0b,l,A c‡V(Æa"lL„ ÆA(B¶ÿØ<Â"@`H„À/ôä‘dÍtOÏL¦º·ªº^]uŸçœÜ{ùÇZkçμ™ynݪénÙìŠ[÷œ|ßsN~ç[ßþÖZ?àçœs?sóæÍ7ЙŠy^ã}Í%Ìì/ ‹/~"ÆxÉn—|bhå… %aXûèk'ª¾mºà•Äy§ü"Ƹ¼æ ÿ°V…yb3mì¤À#"jb±ÜE z° r#GýÖµÚSéW™W 4˜Î[¬¾,£X0àØ Ct1ÀǶ'«( „”U™P°›F®aiäЀ€q@V‰ö_›a5›p<…èjBH¡i^X²Ð6+Óz,nL¥Òõ œ¬1ˆ±¦œA9§Þ*ßiάœ°gËW„j/hp)9õW%0jË9û2œ·ÏÑÒó/žÅ{ï=îýüëÇ?9XSÈ ü`ª3ÿ`Eo@ ÀÏnooŸÔþÔãƒL~æ;wî Zq³ñ;ÇV¾þÑZˆßò±Y–.â˜á`¾ÍP¸HXé¿Xä[¬ €de°‹1cdœTI ŽˆQ°X<(PÁ @0ŒòùßS7fRÈ¡=³Î²\¤¹jtBÒÉŒqÉÌ¡²Dr0s«s Ž$^3 ªÍÁÁÊÌÎhR&ª›~•n8{ýRhhå³Þ~®åp7½'¯ÞÚÒ®€å,Ìô©¦ÆXšô^–]bLyEÑ´Ú:&©Ðo•ÂÀÎÌ mCÙßž³)—XTTîÈ—QR,:"\¼x_ùjiª—_~Ó采ƒÇ;F‹ˆ~’ˆ~”ˆ~®(Š~íÚµçÕüø©Ç¯‡j £€uõµ×GÃÁ—_ÚÂÆF»;QåËÇÂÁ¡1_'…ì\ ݹa£¥§dÀ¥&*Xô­,LŒ‘à\Lûzeh#œjŠ`mqaö¡ï1TêñbFd%¹Öù|Ž¢(’†eþ,@f4¥Ü ¤ì]‹XqcV_‹$D•K13-’ö’î½ *êZGâLdOyuEêBd³u ¬¼C‘åßå3mÞ9À,)´Â\ Ë'Úö†ÜŠ–UÁ4ª†y%í‰Ô@›ý½´Êß Yó¤f E®ÉÐeÓ•œ:µ‰G},‹W^½Š·¾<˜‰ó;üÉ¡•Ê þôÐú÷s|ØËø7†Ve‰—/¿<¾võÕ#Ëú@ªoùÓ2±>pËu.'j¹šPµ~9‹š‡gdÈ1ŠÓ]õ0å%¿|D$È¢_E"$^¯1„ôœ]P$j!,¯P£g©ÀC+UÇ{º®u™¤ «›× HG"å÷Ý^ól51 ¥ŸZ-qÙ ª+¦e:•±—Vwª¸JÍŒ]²%4³t-ýK FI«rþ(ÃÒ‰“”Ÿ(”*U^ú8¥ädlÊÂ;ؾš î z¨…Œ9HÙë–±«¤±xñÜY<|Øï.ºzõõ1Àú$¤éê­¡ >,ã™K­úŽ™?ïœûü­[·ÞÀóÍú$ºw\yåUø¢5‹¾öÚÕÞðÎÆó¯¾móYÅ\çò&Ô{´æ Ž„÷Dqг²’Hvì @GR1^ ú‰g^Û‚ƒ8L µ˜%„-¸bv1&–e:Vr»ZÊ=¹©$7R=Y©P!'+;RYH†-#Y ¼B&÷‹4¥ßøÂ¤ç¢•Ø3̺Ð-rpEã!˽UMZOŽ «Òóå!¡Êø,ÝÆ»F“’ÖlHì*ŸDH¬ëÃêêRêùYCEcf°m²×ÊþsD8áE¼õ•þV¯½>Ú!š :ÖßÛèÃ0ž °bŒ¿‘ˆþ0ýafÆÖÖÖ€_ðy"ú<3ÿÂ3 rŸåÕWG«Š®®®1‹æ£ `C럼Žè\º^,LX RÜÄ6PpDt Œè¥Z)1!:™9dˆ‚½É)2ˆb@ë}äÚ¼&zKÜ æ1ˆ!‚¤ò†¬1„ZuØ,!"ljØRr4=(ù³ˆdÒÁÛÝ'ÿ%†eB¿y’ÈÃ'f$a¡/ŠÄª ¬úD÷>ªcyrY˜£@•ô¨d—h-…ƒ UÓÊt«”7ˆÂui}º”K ÝX„u¹Œ1瘽x‰Åékù™Pæóù‘÷{sóNŸ9ƒ÷ ú»?‡o`]¸paíܹs‹7Þxãè…=åx&À"¢oë,Zƒ õ¿f7éÖÖÖm¿ÀÌ¿àœûüÁÁÁ/>|øðÉ1O1 X—/¿<Ê®®¾új ÉràÈ®?=>.ûZ¦_-Û¶/tt,LJÄy'ÎfDMZfa¢{‹ø ‡HÚ€€P”T Ka×ÜÃtˆÑ^54Žr¾"C©Øn «,K03꺛@¨5\ªåuÕžƒ€()G‘9± §©;-MúNÎ:h ¡›'8WÀgÙ‚G™U2»fâ¼¥ê88mâÄ©žBAeFBÐ:c"Rβ ,«ÍššÄèN8˜@ËBÈF·j¬©œIµ…u)JöôùQÆ—X¼#œ?7nôGv—/¿<XÿêЊ§W¯^=5ŸÏ?ÃÌŸðÌü¾åáÃ‡ß éOúL㙋™?5tgã€ï'¢ïgfL§Ó¸µµõ3ÿ·oßþ›Kö|½÷xñÂÄ‘«W¯hÞà>¦4.Cà6´<ÿ– Ó¶º-IZh˜<&ŽR› Ž$z3‚†‰D„妌©ì'”uáQÜÌfÉÚêZJ,˹”%DQxp,Äê úUž-¿£hL$ž¦D’P Žpuª…#1* )4@zJú‹¦r…¸÷×¢†e¯iF ÊúP)Œ´õ hÐs@ÂKX”Q% C*ªV”Ù’†e–3ªŒYå«mÛîY­ùV¨g¬+½¯Íç-ÿìÙã Îãëý…~·^ºŒ/}qÐÇùiŒû±ŽŒ—^zé¬Rú9<<|Í®>Dôø ‹ˆ>u‚Ý€OQ¹d»³¾…½ãÒ¥-ùvé)­aã•|dEuAì¸ìk غ 5†]¶—Âs1ƒ(7‰XÌ¬Ü kic B¤ •#à‚0,½IœÕ¡a\˜Ý@Üêv/d¦°àˆ>”U™Wu] H©¸í<µÜÌ‘p­æQJ, Ê[ì£uC3òI4·*«@“Gi¹“yØçUP÷¾PAÝ7ÅüR*Lfgèx°ÏVnmØlÈCD4ÛÁDyj´(Yœ1© ¸ŒQ¥¤ç¨ad°e°R?4¶&ãü¹sƒ÷ÄKãUHKÿ €6´ÁåË—¿™¿Ï@Š™_;`>˜ùãÇÝvlœ°®\¹2Ïç£JÞØˆ1~iÉ&¿}⋎­—^õ_­L§xñÅs­eËÀæ8ë–ÛÃ仩?*Ð3C{êó0àbŒè% `½Ñ"bM`ï@1 @CÄH¨ÙÒtŒÝ0E-–j±Pógdf”1"†˜|Y–k(%h<€Dh}³œb¡ÝY¥Jz;4„Ì­¦™{Ý\äœ/PxïŠdbÍEõ¢,@΋æå ìÍ+”•O½!] ¨ò’€ž[r6eÞ«Äœl/{@*iZ°mõ3dÇCz‘„…!Ïè¨îã^8ƒ²ìױνø"ªÉóÙlè#: X1Æß àG†Ö/'­øÐ'¬º®?ú ûGf^Vžu4ÍüÂÅK½…Ël\~ùåVØÕ7ŽRO:¼ÆÒ}º@;~T­Ê@©G ‰/Ë1b`D´#ï"\ ªA(ábhBXØÂàºÔkPʵpPTeJÕ)Ë2±¬<¨ð š@ðEM¶×IEÍßb:—JöÙÍîP†|®IRö*®|áX¾HL¬(|“Ð4,)aì¼ä6õÔ³°PAÈk—ä   õOe†Ò ¼R(k ËÀì“¢s²ÇÐ/!øÜ#{¯j ¸Î;‡›7ûu¬ .âÆõwz×Afå3ñ8’Gß )Q£ß''¬ãkÏpÞ_»{÷îÞ’mF_¼_|q”a½ò‘Ëéñ2}jl»eú×qBÇ.ØuÙU_(Ù½–|£cÊIzXeSBpŠ„À‘¢–[6G¼ ½Î µ®*,Pƒµ}&#rf)vCHÌʪ9©[Ü›\nj¢†*(U,Õ¿¢­_iØ$š“’U‹ÐY@çQ–¬¢AQ” |á›PÐIù*²´Ÿ1«,Œ´)D@NÌÄ,Kàe¡«õTfsèèQ9‹êÔ£q †~çŸ"Â…óçpãF¿Žõ⹟°Þ:)`ؼ|ùòÖÍ!$=æ81`yï!„ðˆè5f¾ÊÌW‰è5ˆmYÙšã¿ïÎ@¦QN:5 X[[—× ±›eÛõOßò¡ímYßÒ*%ô…œ]–'.g™õ j].JÎb /š¢è4‘€@d"|”otÕs…iéoÉÙf”`ÄQ”E¬$LTÁÝ@«¶PÌOí§¼2› $)$ÊÀ PàTÃräQzïÕWUx­åUꌟ‚UY¢PQ¾,¼NVÐ9Â{ÀœíNÊê[©OaONEv4¿°r»ÍfÌ*cN nþßQ-ªf@+”ì~–VTcûÉ%/œ=×»\Ç ä>ýêÈ6oøî±ƒô p‡™×žr¿#ã¹§æ¼ýöÛ3ÈõVßú—_~yëððpYé‰×!/^ï87ò “ɧNIùž.P< ˆYlýqBǾëÚ>ªü¼}!edñj‹1”µæz ÄDb2R‰4KU›¦¥ÆO •a0"×RÁ2FTU•Bú(PÔj'ý)D™­dKÍiÀJTl¨.¤= ÙÏ»ΗðΣ(*Ø}*2hŽö"g[ z³3x× çA…°$G¾±-$#©Î*ÚlŸ³ê¥ ]*ó_eá]ÞýÙÞºœ9µ€¤Più1ü|äcŸA"ÂéÓ§P¾·cÎ / &ŽØøÆë+8 XsH‰™ëÞ±"ºND×§ÓéuÅ…gï{.¡2³ecT{áÌÙQ;Ã¥‹°”¾¾û8} ¶Œ…u?<}û¼ú®oèšsMÓVÙ;j"µA0‚Þ@5”z3yš¾{D Ø (ÖŽŒX3BQÖ5êºFUUX,IS±0ŠYs !|"8ÖJ oå› ¸Bfú|YhÈéE«*K*²K•UÒFZåUµ6xÓ°T¸wÉõNÈÛuµŠúY˜èr‚zµTŸ:âµ— *v¨-õ­Ï?9sê~†Ž5ö9#"œ}áܾ}ÝQ%666±³3èݾ:´bŒ×9÷8]÷Þ_»qãÆm<£˜~ÜñaM~¾2¶rcssÔ0záÂùÞ›{(Ô²ÑÝ1ô ×wÌ>–;ïmÙqCM[–÷Ú‚< ½tXÚyY>E¹9c ¨c„ µ ¢y9©ßUQ’ň°oc¨Á¢Ì–e™BD³¤ë§T{Ô$‰=” çPxR©(a {*ÊÞ;”E _–º›¦ÛøRÂѼö½s*¦7slYª…žUnM&Í€Y#‰V4¡ÞÙ{6Æœžœ–1,{|îÜ9ÜÚîç§N¬QoÕ;w~ÀOŽmóÍVÀ}Ñ666Fõ«³íícYË\ìDZ7ôí?ô<ß¿{Ì\—ê ûž@YI˜îþy)=¥J©ƒ–8vÁGP Hù=a^!»™% ’›“1O§R7+D„…°¬ù|žüYeQ`1—ý¤|N‚0=o Ç &…ƒ+JÖKø¢DY( B_ ¼Ê¤mµý`f`õ›2Ó©Íö9Ò™CqÝÄñdaH!šPÏà,¹¹›^“½]ü8Œ«ûéÓ¦†¶ÍßãîÈß÷Ó§O Þ#½Ëu\[ùA_—€µ¾¾>ZRæô™Ó£³mÝqœ™¹îvc,ÌÖ=ïXØôéWCç2ÐÊCÄ|ªÛ±1; ²ªèT{8àÁ¹ 7Cªá$ž/°ÔàâQkX˜XVYÂÍ|&¶[—h•®šr$bvá ”¾€*´ªªà+KYVz”¾LabóS (\²185lÜ÷.•…beEü|šñ#MÃi*Š ¡òGÌ™>ÚȪ 4C`ÖÝ&Ϻ˺Ÿ—>°Êk— …“gΜ¼GÖÿ%`=÷qehEQ–¨&“Ñ¢}gΜée&ùï¾1PCë»ËŽNöç²íÆØW´ºagº¦Hp̈DR ÈE¸Úe7´MÏÏËA’‚Ä<„aÍçsÌf3e/A¢IÑÑ ¦³Ê EQÀ—EY¡( EÕ­R˜VU– /Ú–Ø(ÄòàÊFû²Š¢2Sé“VåA9Ó§² b¤}r 2@«î{”¿æËXÕÓ„zùy»ëû>C¶í g^¼GþX[[[¿ÀŸð=bæÇÌü=fæ÷œséwŒññááá{OQ¡/WïØX_!€ÎH+´1࿇öë‚À²móóת{-}‡®s‡À«û-Îâc1Á‘¸ã"bQGa!4}ÿšêRІ™W„e-¦ ÌçsJ²÷p¤ÅüÖswP;CáQy/@U–(Ë ªªBYUò»FU%\)Â{©³‚®(Pª÷Jf­tŒ—üÉĪt&¹àÞûº•º@Ô1Æ5ĆB¶îû»ìKlèó²lÛ3gNÞ'ëë½Ëu¬C:äôˆÿ€Ç‰‹™_%¢ß®àÈÍ ‰ÂÓé[[[ à=?¶½½ý'–œbИ¶²²::CX…„ŒZÓƒÚ¾©-;v¾<ª.Ùk4ôÁí«î²Ô¥y ¸åÚGbcV¦†Y…xê4ûæ|Ã\Ì®@Œ”¢c€U•‚f"bIç+’›µ,M£š`RU(«åt‚I©`5v%B»GéJU¡†Ò&ü3Ðò¤¢zá$ÅÆ5\Þ¦¾«?u-} Õ·<_ßÇÀºûw÷;îûÙÝ®ï³0t û½¹¹ ï¤ZlwL'Ó#Ë:ãž`mmmÓc¥ŸÂOܽ{÷Ý“óD€ED§O²€3D´ìÕZÈk2ŒÎ®¬® †[Ç mä@s¦6´mßzûPç@Öe_Çù Ûã1Ói(s¡¾ûZ#¸ÈÁ»¨nò¬óŒL”©O+JX8›Ï1=<Ä^YI tb’ÅbµT^Áj:Ťš¢šLQM&¨ªUU¡šLP˜è^•nšžãKñjIò²¦åXÝv/iÕèžU]è€Ó›²e}Õ}m m;ªuß—ã,ú<çÇÎßw{<™T˜/Ž&A—“jôxÂ0hî¾|ùòwij^"":à3çå»ûzïßð¾Ö©ãÜô}ƒ™—uܵýO&ÓQ†µ¶ºv"æ¤×v쯤ÆÎÛe:}ZXè-›5ì Iò°ûAÎÏoëL¨wp`Çp!4­¾|¡Àà‘ºkÅÐÈŒ¸¨1ŸÍ°»»+Þ)'T‘ô­Æ”GQU˜V+˜TªéÓ•)&Ó)ʲÀ¤š¢¬DÇJ¢{!¼տ²’È…+:e“Ûebº e@ñ4¬ª/´ûÂÈ÷—îû3p}çÈ÷µk:auu OzzVå±kpÄÀoË—=ŒÆ£ËÆIC“0,ÛwÕ\XÕ¨†µººÒºû~1§ã°©§ +—m7ÄÀº ˜‡}CÇîÞtcÖ=Nê?¨çðÞÃǣؼ§³:Q¥ÌÌál†µ½=ìïïÁ^›_GxWÂy§,j‚Ét‚éÊ*¦««X™LP­L1©&¨ª UQ¢(ÅÆà5—й¦:ƒ§¦š¨×꟩-|‹«±çù>ùkÛHc¬¨ïK1?~wŸã‚Ø2„µµ•Þ{…¨ªª·Že¹‚»KÖ~Æôœ“ÖÚ2š:4ˆh`æTU5®®J4Ù½á‡~ãzŸjÿ1F36ú@°»ZÜúŽÕw ˜í“—DN +FIH _‹ï©p’§G’~sX/pp°Å„C-?,3|“I…ÕÕ5¬¬®amm +++˜¬¬`:¶U–%&U%^,KÃ)›$gIÃqÈËç^´>fôÏêå½?±ô†~ù{9(}àÖðX6òëé{oŸöž[YY¼W¦Óé³Ö²J+cãý,"ZÊ)GƲœ¢Õ±•…/FCÂét: }€ çý=mè;¤a-;VR}¡j÷ú‡ÂÄ!ÙŽtoΦij#Îíuhà#ÕJñHyçKfÔ‡sìîìâÁýûØ“–Öpž0VX[ßÄÚú:Ö6Ö±¹¾je+“ “é ªI‰RM£r\1… ºÄ º?]F5ĘúØÈ˜M`PŒ1š!@9 ðçzúÞ÷|¬ŽLPõu65d',çÜûQuR ‹ˆ–uÎCr4æ _ê{œ?š¿m @–‰öO{^;f÷<]&e쨉ÙóVâÈQ¤PQ«.%Œ+‹ θØßßûïÞÁ£û’.S”¬¯oâôé3Ø<µ‰õ ¬­¯aeº‚étŠÊüWe_øTR†(+Ü—uš­ Zö·õ1 îú1°»Ïز¡m†¾üºû 1äe€6ôžvÿž²,ï•!&©c!9vÝ÷îˆ1NNº/pBÀºuëÖ_¹råÆWààà`âœ[çÜÊ’œs•Ŭ1ÆÒ{¿ÎÌŸ_røqÀ"­4jè“èLCçËYJ÷qW격>ïÕqΕ_ûóë2³ü¼C^ßuõ…<ö¸(Š´ObZ!¨ÁSì ¾(05îÞ¹‹íë7ÀÎáÔ©M¼xþ"Î^8Ó››ØØÜÀŠÎJ(Q§Vq@}ó°{C~¨¾¿§ïuÎo dºïMßú±Œ„1ZÆø‡Fv—9ïï7ΰFïAfÇýL9ï¤\6Nìt¿víÚ!€Ãg9ùÀ}±äƒ1°žíõ82†€ï8Ç–÷\9«êÓÆ†˜dßM¸ì›¿»M×åmË DlVo:™`ueÓ²Äîî¼ù¥_ÅÚú:^{íu¼üêœ;skkë˜N&˜$ûB“r3âåë“ʯ¿ïoïŽîq—1•¾×½ïõî®ï{Þ7ºÛŒâq˜W>¤=[ÿ½²ä>eAι_aæÿyɵÌÐÃĘù‹cû-ÆÔœ¥ k ò<«_¯ã8˜ßL]¶Õ ó׬Ë»¯gÎ<òc$ëC\R"ò©ÍM¬®¬`u} ÿÇ?þIüàþ;øÄ'?™ò ó0¯{ž±P­{­Ý×dl]w›¾1¶®{¬“²Šãûyœ£{̱{áYBÂ[·ný ã)/﹌#`¾cù Ú»þ¹_Îû?únȾm†ú¾°µ{¼¡öHè) aUø(푨õ®²ýBP%þ“?ógõ¯þU|ëÇ?ŽK—.á…3g°²²"ŽvMr66•ÏôÙ5vYÞ“Ÿa~8ÇÞÞïìàÎm¼ñÅ/b}}ìýqT“ ~ù—~ ß8{/ž=õÍuœÞ<Õ•LWV$ G…÷¦dLY7$Ì=S¹™²ÖG£Ûƶڷo›ã|FžÇ>oóù|ð3Fª`ùLþ6>Œ€5:‹Ø½A»#Œ|«Ã3ƒ}Û<ÆdYøzä:òíÙ*†6 )J÷TM{`šRÒ=µàì°&&3ƒŒY/BkÎÈAچŀ"׈uÄ¢^ Ô³Ãf³°³·‹GâÎm\ûÆ70™Lñ¿ÿ ,K|âÇ/þÂ/âþÝû˜íϰ¶¶†G°²º‚étkkkâ|·DzÛDçÇ@¬ë«êDÇBÌ!Ýë8:WwyßöËôÁã€áØq—]Cߘ÷”H¶CoŸ ÿ°žbŒÖ’o†TǺï[í$ŒghY µr}¨ÃlÒr4q.£"Í‘ûqó0&D­RÄ&'Í6ç´ˆ‰¡¿äº8JjM”.Ï2«(Ý9Fª u¯êE-yƒ³óö°¿¿‡Ý]<|ðÜÇ»ïÞ…sÀ·æ;°õÒœs¸pþ^zé%\»v »»»)Qzeu+Óì½ëõ1X1¢n( k„ܬ1±™æÄ“^ŸQµÈ†["8ÌQ€JqVÅÌà#ÀY¸Ç‘Q‡Zt©¨ êÅóÅBj^-æ˜× ̱p€ƒ½}ìî>ÁîΞÿo3ô{LÛÊRZËF÷ºöv‡SþÂø}4nmmýff^÷Þ?bæG!„GwîÜy`üæ|ã¤N÷ùI­Ìööž`wg{{’¡qêÔ)œ¿pç.œÇ©ÍXeYau}›§Naoo‹Å¨ë:1‚º®Åí>©RÙ墬Q…ÖŒw…G¥uߋ¡ðeÓ³Ð@Ë@L™—U·’C‹ÙóÀª¡* C@—ã€ÖXh¸Œ¹åÏwv÷ï•ÃÃQ^ðpl%3ÿýÖ¼ ÊÖÖ<Ü¿<")îùÀCf~äœ{4ŸÏÿþ½{÷޶ó9æ8iòóњǛKÖ?[9ŸÍ0?{{»ÃßFÆPŽ0¡ÎŠî4Ôʵ¢î–Y„–-箸öeçNŒ© ã,Üdնı̉5!6³xѳèQ6T—²®ÍQ,Ä àje:¡®QÇ€Åb.…ùf Ìq0›a1›áà`ûû{X»»88œÁ°¶¶Š3/œÃ… púÔ)¬®H*(¡ð“ÉëëØØØÀl6CŒ‡‡‡¢•±T…¨ëZ®MëÅûÅ…ofóe çfÚ%º@YÚ ÚK0ÊZ|éc%§ád‹m¹¦À_ ÈЇ>öµLë“eì¬;ºà˜o»LÿÚÛÛEß½cì-ì—Ñ{ˆÎ ¬ÚÔŸWìúòkffTUõ+Þ_Àð,€5ÚzËk8𻳓½P=^®m甇c[+:ºç]¼@Ü]’^A§£y1Gyj¡ Éª¬¬I@²œ ûÆe†/")ì2&c€U×5"aQ§ÚìuP× Ô Ñf‹fûI$—Á=ìïíáp6ÃìpBÄd:Åúæ^xá,N¿ðÖ××QUâ9$"5VX™L±¶±‘Ø•ýXú÷óù\´– _ !±/çêºJr¼÷˜/´ê¨Ö|·ÐÞiûz­úà€Ôª¦}Y¨Øe_®)ŸœËBÍì±þ½ÌÌž÷ýÆkXõí³¬"mwä)BÆ€»C¾ôGÇè=ˆ%UƆ2®“Ö²?hl\X²þ1Ä‹Uö­”p„aíï#¦DazYQ¾sg†íïê¥f7N§Kéºû|6Ã|6×3îãððû `³ÙÄÕ¤Âúê:NmžÁé3§±¹¾Ž••Õ䥲ٻª*P­¬`uukX,X,ØÛÛk¨¼Žúw°e,C„+œüvEU¦þƒÁÕ ïáó ¼J̕ݑ“F¯^[Ò;°¼âƒi^ºœ¬Lÿ¢ÀÊ™Ða[¶}âuhƒ“Ø£ÊÇ[3M™™±·wTπðBï?`Ñ»'Õ°œ_²ž!1pïvKbo, òeOž†fÀt:ÜËâÁƒû¸rå Ž†o6óÀœÝ²¸Ù2£TÑÂÂ`tëŒ ¤8AU‹M¡aI„&ߋѨt#gŒ**Ó¥,>*e[ùì_ŒŒÀõb! PU³2 ªu Ñæó9‹êzŽÙl‘Ø–mK¼#Lª &++TkkXßXÇÊt +Ó)вL,Á€Þ“Ìê•e‰Éd"õÜçsÔz^@¾ñí&µ¿ :1*ï=8J—Ÿè¢20rAûêïZʨ°óXj MŒo¬JW "4€êÔÚ>g]4`–ŠsAÚ¤³B?PÙ>ƦÂÀúœ­éŠÄÆÆ43»úw@¬?#ãRžÄÑáœ;c¼åZtߨ>Á>­q"ÀÚÞÞÞð¯?ëÉGƵ±•{ûû˜ŒÖ½û4÷-vTòN¨—„m²ÁŽ„s¶}ÎÎzÀ hfô8Ù²pP+…•ÚÙ¶œ1¨“2­*¬º•8ÖCgP[85¡F½ô› °Z ®a)PÍçÉåH媚`euŠétëëXÛX—úVÓ*U#Íg°œsâXwU)ž'“ “I:¾ý–÷–ƒS.ÊÛMšBá(Ú–^R¦‚0ºà¬¢‹Â¶bDpA“C µ€T]gÕL½²¬Æ·å°Öõ.RzîChô¬LÿÐ0ëÏhŒË(îSøhšXjö…—l€•o—mk¯ÿÃGàjXŒ×qmlåÍ›7?àÅ×_}2›ÍÎÖu}‰ˆ¶˜ùmÑ%f¾ `KRÿ"º9vìãŒcj kpìïí¥f©}ãÞ»ï"ÆæKÂ@ÇXL¶"#T± áÀÈœ™JÈTK+.™ÞԿѱ° Ñ=,»Ö\8Má^.´Gu¨«§*pFmÏ£„|!ÈLà"ÔóZ- „ºÆBÙ•ˆí³†eÍg¨"Æ×AÄpr„ª(¥5W5ÁÚúVW×°º²*õÙKI©1á9g6WøBÚzÍf˜L&˜×u +Ô(ëüxfpÑ=§ßä >æ¬+´K*'›CT0a'ÌF4-¯:9å} ÞØ!Xwl°LhÏg jƒ¡l6 £2°IÎ(€y›œKÓßQ·GŒGÂË4ÙD„÷ï›ðÚ{ÿŒŒkc+m¼ýöÛ3cÚð…¡í®^½zjÿ%çÜ3Ÿ¸R©_—€5æà€íÛÛmÁ±Ι0ÓŒd£ôö']Ÿ6G€JÝØŽ”fƒ“€YŒ"ÎG íÌøiìÂÂ=!²üææÆ1 ÖA, ‹…Ø¥@„ï…0­…ä ÎûZ „*° pUUaRVXY]ÇêÚ¦««˜X×›²Jºƒ‡ë”ý IDAT¥®ÐeáQV \ó9êÉ‹Å"½&6¡’‡”¹9± ä‰yF¥Œ‹<%ÆEDðZÇËl Î1ÈLÑ1(@BÊĨB¾=5 +µ¼Ï,’2FvÀ³L­p2SÊ@É)0‘j\º¢Å¶’֥ϓX¯Ûݶ—0¬Ñ{ïiǯýÚ¯=†Ìü¿ù<Ž÷a¬oŒ­|üäÉ Ý€ííÛâúÎ Ù¬]*¢68qg}ÞcöeÅ X ”‰è­0¯ l¹xžTr¥Ç̲ ê‘§zÔtceéGM qa)0’fBH¬*Ô Óšiø$á9Ôžˆ œT(§LWV°º²‚ý™L&(ª2<¶ˆˆd–Î9…˜<Ë¢DQÌ¥­×bz:mÙºÌ h,÷L€å³kž=ØIV‚£&DcætÁQPCiDjgc¨˜³'§@Öê*í@h,„]×QsD €F¦Ð0óY™^ œl®§ ܺa#)#3VwÿÁƒÞ{d1Ÿãàà`ìöº6¶òƒVÀz ”õVg{òøñ ݀ÃÈñ¾ÖÅ‹_,Šâ“Ìüqf¾¸½½ýŸl¾aY¯õ­ÜÙÙAÐêиuk§67®8Ç·Nhd¹m”€m ì ‰-u÷ïŠç™E¡ R˜Ü0,Ñ­ ËV>+h ËaQ#2+{ ¤Њ¨ëFh_Ìk„0GXHøX×5B ª­¨nU•¨Š“I…Ét* P§STÓ)*cVÊ®Zbsì4Þ J¥a|éQhÙ䪮QWU X ˆ-TÌ}H93í‚Vßkmì. öà´IAÁ{P "¾ÁEBt¬ #c2§œi„ÁÞ;PPpS`"á©SPl˜jX€Ö+Sí ÎIhØaZ¦‰ˆÅÄœÃÝ»w#%€!dáC;ž;`½òÊ+—êºþ3‚™?áœû83À¹Ì·¶¶þ+m_Ä`ű·³‹>s¨Žëׯã[¿åcíÐ&vÛVíð޹.¨ˆbjëP 2@Lh3¬N²ð0Z2sþ¥íä¦åh5«DÇ2'{ݪ£%/+HI¨ , Æ4¬æ‹Ð«…þ&°0†ne…j2Ád²’¼TÓ‰Ö­*ÊT³ÊJ½ä#‰îzƒy'MQ¥¥—OGëªJ“}F ¬rÝ*½»Ã{ß.ÇNDxïà¹a‰Fœ‰Õž¼€”†t.FDïàAQÃ-Ç"ØÙ¤‚„’1ðIù(,,hh(LIf3, !s J¾®LËSvòå`ÆííÛB¬žÖõÙø:Fz¾ôÒKgëºÞ¼{÷î5 žá›;ž °¶¶¶¾‡ˆ¾™?à“>¾X,Òô]þíØÀ·ø¥‘ÃÀïZùÞã÷°±9\øáÚµkÙ‡hÏê)°Ä>€ÒÐp(ÜËÇh8«Kaz±lÑÂC†2¬Ó69³²ê©!,IÎò-‰¹5ë2VµÐpphL¦–Ãê:6`a Þ‹ÖT–UUae:Q°’ßÕ¤’ö^e‘jVåv†îìžÙ|ááEéáËE(Q,¨Ê²ùÛôo.Ë2Õsêv ²×ÞÄæœÕ%ëClf°Ó™Ä ¸"E8v@TÖâ!9"(‚ö¢3„DÎň-QÚcT>¦°PÀ*h¨“ˆ.,È#:‚Á@GÂJ8˶ç<íM‰Ü&+7·oaO?~oðž𥱕ÌüƒÞû¿¸µµõÀDôEfþÕã—ªªúÕëׯ?SÚÍqƳ2¬¿ÈÌßrÂ}¿ã€5úâ=zø—_~ypýõwÞA¨³ir%G xu-@›E%&Ö£SuA*Ãô(d ”=%0kÂ>Îu*ÖÀ¨B-µ¬mjÂÀîã:ÍüÕ‹ZSN!ÀéÜ)XyíÄ<©&¨&ÒøTŒŸª¢”Vò…$*ç=m$KEmï<D„÷$MSëb!MYµíWYˆeÙò`Ùè­Jø çà˜Ò¿Ý²¼ÅL+ÌÅ÷;wîôÂUŒï½7 X£-¸˜ùÛô=Þð9fþôzêºÆÖÖÖ#Èlà˜ù "zÓ9÷…›7oŽªüO3ž°ÞpRÀú,€¿6²~ ÌðàáÃqáýðwîÞÅùóçqDƒÊÂDX8—“ã(‹úu)Û¦ÅȸÕCòXuËÀ¨N5jeЦ\qV&«[Å‘Søg5×ev-êl`³ìRçjEbUuÒ½¢Ú!L`IúJY”iæoRU('%ªj"•@'+Ú +¢çÚåˆmÈ·?)C!w°ÒÆÞ ˆUe)OY¢ÌBÝ>¦Ö »CéfΖ#À Ir[Ûë5“–•ŽI/bícçà"«ÖDú¥Gp$a¦ì/Ì,aJÑÀË@QÅ|Ñ (šöEhê iøhFã<¬Æðø½÷ó uüÊØJ"êÍ>ÉÆß à»íóc\lmm}Àº½½ýKö_:ž°¾àß<ᾟ]²þmw1PÝáÉãǨ5Uch\»v çÎmTή¸Qㇴ(ûÝ ÿúÂÀF—j4©FPçVØÇªMå,¡•,,PŠËjÄéК !_…M…¹FÕÏe@£¼:ïIüRÖä´, ¦ÓUm–*¦Ñ¢*Qh1=_øTþ¥o¤J˜ä¼äé9epT‡ÔI:–%BŒ(;"º˜YºRCÒ­2!>ß,t$nôž#œwv€ b[`;+Óaµ38ÖÄyï ª4$S €sP@!¶%zneeÄr<Á#Ó´$$$‰!afQZ``¼uûö ¸ôàÁÒ"+ÿbhÅg?ûÙòöíÛß±ì=£ðÉã3åÚxVÀt¸c|ú³Ÿýl¹$òó¾¯oEŒï=z„³g‡Sš¾þõ¯ã;¿ó3­Y½BÀá<œÏø«<´kUSPÊÊ纲Ç)§Ã¬BŒ€•‚±00óX%+C°ßæµ `®3±=(Ëfß2à#††H¹u)Ìs^»ØLR`YIKúÂ(U4/\ÑbW¹ŽeÏ… U>ð®€w ”Þ£ö…s¨Ë¾®á‹¥êqVÃ=×µò÷>?O¾¼å Ïž÷•G6ƒD ORè—ï<‚   Œ+*(‚ ÒðUÛŠm+à8ùÙ(ó…É$)SPtz¼\|ØÕnBp š™-‚˜qóÆA9üÑÃÑB¢oc¤°Þööö§‰heìcÃ{ÿLŸm<`ÑDõ¡Á¾ÌÌ? àgÆíñ/0X€Ðß³gÏîüõ¯¡n§ètµ¨Öò‘e¶O`bL€'å‹M@‡PùÈ ZœÂ>„†y%ë °VP ̈V…3Æ ¨"r½J@ªyBÄø`ÏÍ»eáV+dº•ƒ/J” ¥ºÚ+íb3±ZëÞK½u-˜—·àjÍVeâ7 7“kBCG>…†NÙ—%"K¸[EÃL³™CᇘV÷}˯­ð,L4×|  Œ‹ä5KN‰)ÓÃ(ébàô|pfL"…+'Ô,êÀÊæÌ(ˆS˜' ×Êœ20r$ÀA:Qà@NB[@A¾8oÝÜŽÖ »"úMcë—Œû·nÝzæ]øUÿ€Ÿ«ªêg®]»6:-±dü"¤åPÕ·òშuJ éoím\¼p¡-’÷hW]Êu(ä7 çzfû-M£öŽ0o7íµBl—”©[i7yb°ˆê¨DŠÓR&°¤‚CLŒª u6Ðþ‘VS(<¼“™Á¢°*•a••Šð¾H—æ¥:ØQ €6óòÊê¤J‚µëðŠÊºJe\ÝêF¦iå_6ÝÑ" ™Ÿƒ­hK¢E4³}‘còWp¥mœ ôxÍÁ•´4”“/ V Š¥ „"\6@؇6x‘êi$Â•Ú Ds7oÜ ïÝ}wðÑñsc+···ÿÔ¹sç~¤ªªO3óg‰è»ü,/È çÜÏ/Ûæ¸ã™‹ˆ~ ÀOø™3gÎüßo¼ñÆóìi¶àŸø­}+cŒ¸ÿà>.\®ºüµ¯¿Ï}î7µfÑÑ#‹ÖÐ*˜×-cË"§ÚìÍ •éU*®#6s Š6Ó¥þº1ŸÜ_ÕJ»I¬J«3°™EƒV iÖÐfCdÝ®-¢ë²Ô™¾ ŒªÊ–tböE) ŠEiU>}jîЧ u‡¥—Èd¤ÜxREP”bd”! Ä>ÈÌc4 +{MʲLÿ¹­¡ïÜÝ1Ù\2¦•‹óÝíŒQ9Äí¹éZpthz4‡‹)9Ø)٬IJCà¢\ï8˜·ª/ÊXHf4Ë"ÂÍí[‰-vÇ»÷Fë.–X@ëÛý¬þüy¸|ùòGCßEDßEDßÅÌßNysfþü²cw<3`mooÿìñ³®oü  ¥d.œ¬í[Ûxüä 6Ö×0)©vÈ×ЛçID7ÐÒãYÕPé^Úº•‚Gó››Y¿¬_r¶Ç=)ü «k(’õ[ÇÊ™•…*ЪœÞ{iUð…CYV(Ë) ]VV%ÊJ–Ë…3€°1 À(pÉrNñ,Ôñêªwšd]ûˆ¨b{™1¬ÜÅmFr\¦Õ}nEûBGif‘[eþH‰‰E“ÕfÓÄñ]H” ÷¤¬×B;¹ªf䢀WÒ‚—ˆîVýôððîÝïeX1F)73<þ ¹Ùø¸yóæ×| À߀+W®Lçóùg¼¾ ÀwUUõá ߇ñS~thå»wï‚?õ©Á™_ùÊWð™ïÙÜÐÉÊœ%0ã&ÄC®Ÿ4!bŒ1ýLŸãhcWhJ˜n¥@²Š¡ÜnÁÕT@Æ” °¬–†‚ X¶=˜S£ ëðœfõõ ¤[yùQÆTê­*Ľ^U"®—Eç ©‘®&QGÒj+o¼06ù’*z¦<<½©6†Qü\…$ S0 &¹–eúUî„ïÖBbZöÛÉÀ¶;ë˜+SJµ‘ÒÃ'@J¬ÕÒnTÌwÊ‚kc©Š "¸Ðf]ɯÆN¿WìbÒ»ìû†aµã¡à%ϯ}ãZŠ ºãþƒûËüWÿtlåÓŒk×®BÂËÑó¤ã×`ý2€w1+ïííaçɓѼ·Þz Ÿþöooƒ”Ä}e¢?µžGd†PeE¢$ª+{2€ –r£lʘT®S5€•³*5‰rÔ0¯-ѯÌê àf®y #K;zYÞFVÞªƒJhg Uh(y„M_@Ѹ”Y9_¨ïÊ5Œ*¥ÁaVöå`†JjJ;aWÞ‚ºá£‹(¼”e…áC@ÌT蘳½Ë ìœÝÑea¹fzVî'K¬+hÈ©³‡ È ¢k ñö8•6rHâ¼ åfOhª‘ʬ¡°.jf‰@ÜÎÐÌ,fÂ>§²6;ÃÀ¸3>¹ÅÍù×ÅøÀëÒ¥K¯øDô=þÐH"4C¾~hèX··occc°nÞ¼…';;X]IòN»Ê–U0Ùó,ì} MJ 7¬&ch– ÂPÙãº7 4¦%lL™VfaÈ‹ûY˜XL¡MˆaZ“ƒ+ iFZèl_¡ý‹JCÁR„v+óCy-r°<5 Ñ ¥€†ÍÄ›î4ÆX4$ ÎêMy8¤â'Pp)©š‹"^!M²t,ÍÇX_þå9ˆù1ó1d ÷Réq"7ÀðŠ!&‹ÕeŸ%T:ŸùÓ0àHi–PûJNö˜ŒåpJ§iØV›MÙ¿+ªËò€£š–Íü)ÓR¦&æR­A° À‰We~+ ¡Ì¬©ž'_¢¬*e ï¥ý{£e•pʼàSÿ”óM??G˜Uw»Ó Pš &“¤°+P€+œÌžéó>FÔ1Â[¸ÝaWöØš±÷hwäì* s†ÕeŽéyÈšRócLË)¥ÜD8}OÌ?Òz"R£±…‹H“&b‡2ˆ@ï\¿>øÚÃëøwÇVÆÿ[ŸÞÚÚz—ˆ~ À?888ø©‡>YvàoÆx®€õÒK/eæïð;ü/s×ïðÇ0Ü^hÀ?ðo `ûÖ-|tÄDúðÑ#ܹ}ç/\:¢:8›ÙËô)ô…Æ´l–ưÚÕÑ‚Vîb/Ó­,Ü A—×QM„ŒUYŠ›ÙOBÃblxgGœ+´s²×ºT’h•@‹Ä®œT5Gºw*¶K(—ÏÎÇÙHë5ŒqÞ! IÖÎ!‡÷Eˆ`eƹ1vf sžˆ’ODÉXj×0ZyH™3¨|Œù¹ ä"ei6ZkË„vØÈÔ¬·ÀшøÂ%\t™5B( h=ztOžôcÇ1ÂÁ¯b¤*ÊÅ‹¯ i·wž™ÀO§Óí­­ÿ À? !üûwï~cì$Ïs«êqÆ¥K—~âÏøŸ” 8îX[__ÿßwwwßÙÆc°ö÷÷qåÕW|ØòÁ>ò‘—Ð1V¥Ï£1–˜åý0%«·ž§™À#é39Xµ5)Ñsf•X’‚XHÇ”çl!bWcrMhÛÌi@¨7®9Ê‹T<¯P C“~SM$o°ÔÇ• ð••A.­v{™ž[âs>ußÞm´€<­Rì‹"Ï­lBoûÒàS‹+¯ü|Ýóæ, 8 ¤ËFwÿ|YξÆ>l –/Î7 8­ÏŽßzn;r¶¯…¡,GúÚW¿ŠÇ€õî»ïâÆûð—üŸC+777ÿ„xtGàu¿Û9÷'666~`ccã•õõõùîîî-ýÓ•Ïa<µÍ~h°¤àœs¿oÉ&ÿÀ`nÁáÁÜ oîÀÏÛ_{³ÃYŽYþ^ä&1XO3sx¤LK»´pˆR[ªíbzF’ëga^Ý7'«ÊåÖµDCòt…d4µk'n‡ò[ýNæ·òMþŸ×”š¢,’fåsíÊ*0¤f£¶IX™Twtoâô<»sðÔO¥FºošD8«Pꤲ‘Tw f¹ikÎ5a«ýä××—œ=tÝ]¯Wþ<_fË»Ïs]1}Ñ3gËt;0ÄÍ›uœ}IràÆ›Çù¥Là̱mÕE{~n^ž9Ôñ¿Œ­$¢XvŸð§ˆèŸmmm½»µµõ·/]º´ì~>Ñxn€uçÎ7 %VO:~Ï’õ»þ×± nÜñqèß|1Ç›_þrÓ9f]’³ÚSmÀ€Š(Yõ„Z«vJÍ)µ(¨µ­ R1AØ“•€‰Y‘=+gR%PÉÿ3€3­«©æÀ&°k9´nÈlFPu+s•{_$ñÝ[(h³E¡ŽvéÉ'½Óm›:VäÜæ2 ,ЄG2%ϪõHdæQï´Æ–oÓu©Iò©ž¼WnfÍÙßq@ À€ê28ûÉA hƒ[’:Ò@\ù閭ZjÜY—¥[1ËLðõ7°¨½ŸõÃÙ!Þ}w¸Õ¤–Ý`ý« .¼ÊÌ¿aôÅêgü ýÛ'Øwéxn€¥ãï=åöÀ?%¢?8›ÍŽSkg¬àîÞ¹sÄÝo¼ñFbEù‡)¤Ü»X8=7±;1¥  òÅ Ý–5ú”œË¶k—ÃRÀ”ÜÀ:…“iF2ÝRÑÁê,È–¤m…”Õ[÷IhfU4ë5L´zëÎ{+'ëÅÆ€.Æblä`0f²ÏAÄ|YÎi÷—Ø•µŒOFÚÈÂÂPçŽ0,+{ž_ÏIA« PC Ìö3}«—yåà›°>í§æå˜Ü¶tŒ:àÚ;à Êö­[ã!ë’{É{ÿûÑâÅO=FÉÅIÇóž%ü{þä1¶û"ú1çÜß¹qãÆÓäóü×!™ãGFŒ·nÞÄ•W¯`gg߸v W^y%óciþ_^†ÍÚÐØ8ÆÞ¢;f€rTt7A½½¾q¥‡”ª“wxnuÏÑeÛÌ ±°|=ïReÏÄNJ+Ð×êkBB3ˆŠ«Ý,Γz°¤e—¹¹»Þ¤¾Çö<1,µåL@$O–‹ €ÄñîÙ'kÇ(–‡L4·ßP¨w+·7ÇŸ¯ËÛ'ÜÛ²ü¼]Q>é^®I D„w$5å£ÔEN¯#—>—i“)%B“#ܹsý­¼˜×ǵ«ÀßÛ€™Ày"ú!#Á¹3f‡‡‡ßÀz® k{{ûç1lB»࿌1~j{{û3·nÝú¯Ÿ¬óþúØï\»V/ÒÐÏ_z#k•%’cm,KÃ;eSÖ‘Æl!£¶U·Ø–‰ìJE…€¨á&ÇÎ)á©Mm" ™ˆÜ€UìÚ_ƒ6£ç•%ålÄû"ó`i[s¾ ;ñ>Z½«,Y9stÍÿqm¹i•]Y Ôr$€æE³"G ߘLÚ*¼k̤©ý¼kt¹<,Lõ¶œdWǹî.³êûéÛ®»,iY™~Õú’ËJc·4-n3,°€Ý;ï\ü|ß{÷î²vôÿ#ÅúàöíÛ_¾}ûöxéÒ¥Ëf0Rå8ã›f{xÞ +BXÖ¿§ÏßðwcŒóÎ;?ƒç3{ð×üi €íÁÁîÞ¾ƒ‹—. àþ½û¸µ}Ï_lòcæ§JŒ(³;t?L‰IÙ6Yþ`‹Uqëyš>e³!›­Àmת>tg¯²1‰ìR5¢»‚R)e‰Í*¬ªÔœB1ŠÊþÍM/àåS‘„ç%¡Gs©hû€ëª,IÁ!µ†w€ ±I˜&fx’é|óh‰í„{÷¶ h›Yóï8×ße‹ùyƘW¾nfe0(óÊìV¬/·C˜[ÞÁáÁýxòx®}c©Ë`4̇Vþq?~ñâʼn臈èøôÐ>Ìü?÷øO;ž›­ÁÆæææC/2óŸ™L&ÿî7þžÚž—Kö=ŸƒL«öŽƒƒƒÑŽ:ðäÉ^½újªòÙmaa`2ƒZøÖ­®ù3æ:CŒ™·*3&|hWGû¦ŽÛ>r6HÙÍc*¶Þ%Ê'`2A], ÞŠôev…²jJɘã½*«d¾,RÁœÅtg s†Ñ¦6¶’ffŒ•4夭Ü'ëÈc@ì´ä¼6ºak¾ü8Ã.ß§ïxù²>@ºÎ =· ‹O àÍ7¿§ñßø]C+?~Œ÷=Âé3g†6ÁƒpëÖ6.œ?/ZUÆ–úJšeM|„AõkXûÒ™žL— GØ[®©13"=-!ÐfVªûøT§Ê§0Ê ã5! 6ŽðY^aj†ªæPÁȘ%§{W/ŽºÁ{G2…«y2dÍ7††%²cxGˆŽ«bç¤ó3œ÷ ³‚”(ö›Š1 “É36MH‡t·¡‘Xú½^]Ö6ô¼õº©¿*é_™cÞÜñ6îß»?軎ŮþDÃz¦±½½ýË~ù“ŸüäüðáÃï%¢?àwÑ?úfºàŸ;ÃzÖ±µµµº¹¹ùÙ±Ð_ðû0\š³Ù —.mžkggW^y%% ç¡×QÑ<°.3 ÊžwEwË/L  šó³j´‹, Ì}úÇ666þìúúz\[[{kooï¹ô|žã¬Ë—/Ûúúú±(ü €>…üãûØÇþâíÛ·‡ÄÁ·ß6tžýý}¼pö,¦+ÃíÔ‹¼÷8}êÔ‘0PDà¥Þ%j¾)M`O7f0 3a?¹}ßòÍìœüm–<Þ ÷Òk¢ÅY"Ro_Ÿ Š ïÇ ÕŽ»¼oäç8nˆ˜oÛ§ƒ5 0psû<Ž´¾òå/+ûÿ#„aõ­¬ò—\$¢ïuÎýñÍÍÍ‹›››¿¶³³³´ëû5Þ·pkkkõ¥—^úƒ[[[ÿ<Æø«þ}caßåíííe¹LÀ½± ¾þõ·1Œ¯½ý5Îf0Á¼aMYJL+·0¦Ø„€-Û‚¥óXi˜4û¨L-g[vÎn˜ Õ9X‘•åö¡iŸªxzñ\9+oìÒòæÇÜäf0m¼N¤wžÛG«вØ«üÚŒ&IÛš1@J©heOÙ5hØHÎÁÚ¯/ UÍ~‘±¾`ûÂÄn8x’ðÐþî!Àì¾>c¡d7LKýú›7­ßàÑŸÝÝܹ3Z•!ø‘± ¼÷ÿÚæ3ÿ f~kkkë§¶¶¶¾Íû›~ÇdS½ƒˆ>º³³óWF6™ãÿmï[£IËóž¯Jê›TROOÏÎH=³»³¬w×ìv11°ÎYâ‡p Œ1°@²“8ÇqpÎ!Ž&Û1°6ØÂÅ'\,{…õ²ì…½LÏýÚ=ÓÝR÷ô]%õERÕ—ßµJRUizfºgøž9:º•ªjÔÒ£÷}¾ç}_6¡ã56X]]E.—ÇÀ@ÛVZXöúz]޵W"ºnshg}е,Í‚ ­še"‚Âq05’i¥Áhнâýà_F¶MÀZÅè© ˆŠXêÆ\íinkHËèJ¤‡iž ÊQ_2ºJ©±^–Úg¸¸X¿¢#+ö>«ÿ3¥T–ˆÈJ¤È­Ñ–Ø,ÂÛ‡žð÷SLBê$«¿½IPÝ ñqèt,(Ãçyrl Õjg#èÁû±²Ò©a/àkîëô$÷W} ¡i7âÔÀ¬ owç·Çésç¨ëº‘¼P¸ „µ{÷îk}ß? ¥Mu‹Žã<ëºn”±äy0-«##U*ËÙ½;òÃçº.òùúz{[~íXz¨ì â¾nþ¤Â*¾”-VFf†Pþ…•µ‚* ”j ÅF`ÙRܾÀl \x:“esòIK²’=®ÒªŽP® ¦SHÛª–Ík Si¤„±TK õh$œF-ã K“¬øû!Sd@FK9Uü9€¨ûàÙ¡xõ“ˆÑ±ÂçÕnå°ÝJbRtòkµ{®Ók`¹R‰,³™››ÃØÉÈžX ÐqlŽã8'„tüÑ×0à×|Øqœk³ÙìTµZ½ £²:Ⴆ„|Åà\ÜŸðÞB¡ðý˜íª>µÁÊÊ &'&µ/EûËáÃGQ¯7ZŠ’YH¡—ÚÈâhÙÆ˜òz@QbÓJ^ð +ÙPØõÏpËŠ ¥¥HâÚ–«„¼ÃÖV uŸ•­VÓR¶\…ûEÇlº°X=ו Sl}¬Ý—“ÝÑîS ¢ aU)¢ÖÜà­m¸ž—íXBÓéq°GO;]ôŽáî✺)˜ÿÿõªðsqi¡þƒyjl¬ãçÕ÷iœI¾ àH§'wïÞ=DùpâÿC€ß&„ ·ZÁ`>T* µJèk$F¥eð<¶r%WAq’ÚŒ®Ç„Ó@]³ZWDkÖ#JÿЦz| _Õ­b£º˜®e}X)[{Œ§„¢õŒ(ËéàgÒÓÁ¸Õ1ýK©f8¶C”ëP°÷ÚóºvEy7t~_,% [ƒÐµÂç~oõÛan§)«¦•T'·«µÆO£Ó× ^¯cttT¦Øði‘u}‹‹‹ë®ëþ “Éü5?öKÐ^Ëj BÈW§¦¦¾œtû⢨þÙl¶AØ Šv%„ü^©TúW®ë@wD¥c?€ß@Dy×u18¸-Òæ@)°¼\ÁŽáa@û² £…!”ò‰š¿¶á½ .?x„D’•HoÄ* 4†Zº»H)esBÊ––)¦Ë:Aá^g«ˆ©”&²ó†}L¯bEÓlðjª%uÒI«]ú|_•N$û{ _õásâo‹ ymŠ ÝŠB†_ëӼő øAŠ[ÉŒz<,ˆoTˆÞFäGŸ@£Ñ¹‚æð¡ƒp#JtÀVÏߊ„®öjµºâºîÃŽãÜöÖÝŽx⢞罳V«]´ë¢Øz{{¿ŒÖ¶3OB^W*•nã ½ÑN>€ †ðŽ9 ß÷esX][Åé3§UºçyÁTÐW}¬¨*ÓÑ{liä¤wbP{X²jýR°¥{]SÑ¢™&òF{2²xs>‘©A²ÕŒÅg¦¸f%R!Þ®R¿"ª‡SH¨ŽCt4c…¬P—EØ'SžZR`ðDˆvʶдt JOÿÚ¥‚í,qé`·¤—ê„fbkk«èôùœŸŸÃÙ™Èn¢ðˆpµwB©Tš+•J³mûZ0©¥#áQJ˜™™é8ÄâBà¢DXKKKÍ\.GÁ¦éü€÷—J¥ÿèºîñó|¨I7òK[4 €ÈÂh€…äýèíéÑÌž¡hJk´'£&IVª±_kZ¨¦û °›­"»ú2ê_0ÞXôiçcçE(WúRªYŸ­MÅI§mžîéƒ)TZ¨œíz?x1Ö¾ý—=)ÚÏ¢"ñþêÏ« Tt%k.}ma §FÚûÜŽ\;‘o‡Ék#‘VX'X\ZÂÄTg9Öó<Œ¾ð‚kև܃ •JÅu]÷Çq¾D)í'„Ü‚V¾x_Ìà˜óŽ‹fm6›Ÿ÷}ÿÎR©ôªR©ôp·¯ßµk׫ …£Åbq8fÓ‚yvÄ™ñqT]7*È(06vëëë ~0šÒ ¢TŽø_*ÑÏ ª¼$,°‡À>°!²=Ù-î{²ƒdeqáYFS¶F.–ZÔIF0p”aK¦E úS‰è„_Î'¶1·¡UBvºbQõ΂Åß#Û!hŒl[Öê⻈°ôÊáÇ;EY€güÛuÿo'´×ëuŒŸ>ù™TB´Ñu+Û¶µ±ó)¤RoâgKA]”áX)áŒ"~*°ÚN³tѽ(/–"s¡S‰šB¥§‹çhQøcL SÚüAh£kéÑ“nï}8ÒŠJiulTÓ8vâD䔿……?v4n7÷¥r` …O žê¦«BµZ]v]÷;ƒƒƒ_¥”æ)¥Ÿ¾ØÑ°¬öpã7ö¤R©{ !à¥âqBÈK3™Ì1†µgÀæ©utÕ7 xž‡¡¡í‘çÑh4Ðl4Íd‚SLx°-[ׂ*“‘"ÉJ7‰ŠçšÄØ+FPV°‹¨´-¢Ru¢¶/ÝftKÿÒí“Õˆ/­E²H e§R[:éÃKÿIjÃÐI\^x%€H»È‚g‘JÞ†Rý=ñ´œ !·S*¨/„¯õ¿Up×#­‰ÉI,Etm4Ø÷ü r8lLƒµ]jßì@¡Px?!ä“”Ò9Ž3<00ðÝ9W*•E×u¿¹dl¡ö2: …ÂB>ƒÖn ÷vE»àˆéA=91ùùøºÎ¹…%,,.©ñKz+iUZŠÇ¿HºÀ„#« ITéV€¥fô ¶hr'Æmqo” /• 2"‘ ú„ïJ¦}ÂW%L˜Ê»$ÎA´zrdƒ½6úMx©?ù—–o/ZÖXìXÌ_ÆÞñÇedžtý³myzÈSCÂSCi±Ð|Y2*Ô#Ãâ{8UTçL£„ù¤˜_XÀì\ôçðØÑ#¨×cü>‚ˆn Åbq˜òI~7 àéTjtddäînÎw3±¥"¬]»vݘËå¾FùØ|³N¸2—ËM»®û³ˆm΂µnýÕ¨c.--bç®°ìè·Â­ÖèGŠüê)†NV_ýÈÈJí[’•-¢(-Ô¦ß(+ƒHõT­ŸôV¥SRH×£'Y+(Çz©×èÓ¡­”¥m“b„™Ò̪¡t0ü%îऎØ}-jòEAlÌ^)ê•$„s_OD‹âDT%É•ï/,¸G¥ƒIp®¤U­Õ0vútdtZžšŠ›à °Áÿ)jÇqþ À? =¼ À;ÇyI6›ýiµZízeñbbKÖÕW_=˜Édþ˜òEDôjᕃƒƒ_®T*Qûã^`W§ <ÏƒëºØ¹sWÀÕÊH+›€mYZ ”вt›eê Y!´:ٙNJÈN ¢NPî’°RiX¯äÑU€¬dŠh)C¨eÉF~B— ¤€bÌWJ¬  2LX@«ÝñíÓÞ Ý›¦L¡ºWª”þÇï á™ú¾Zþ¢d¥•xoùqQ “§Pš¨£Ó cx›ðí¤¤µ^¯ãÄÉS‘i^µZÅ¡âÎc̃ØÑ­¾k×®WóŒ¥ÓÉÝ@¹'›ÍÒ«®ºêéÙÙÙÈÜs³°Ù)¡U(Þ_¯×QJ?‚îzÌ7›Í|Ì6ëþ%"FÜÀÒâ"ÆNDܲ¡ç51Q*£Ñl²åø6då‡É*üùh÷çZ•ðY|ÅÌ)š$ E^j\;_ÝJ©a©¶¥ëNÙh)%±´1ô"b‚:Ž8p$¢ß×o'õet hN~±oÍí Hh×–T¥„›¥­€¾Ò('V ò×ÒD hI Ûy¶Ú-8´#ððß¶<ÏÃÉ“'Ñl6Ú~ÖŠf£ŽƒûcÝìð^DŒí*‹–e}ñß÷BÈ'GGFF’C_tlaíØ±#[,Ÿ!„܇ø²«>V*•î(—ˇlÀÇã6š8s³ggÅ|ÇK½ÞÀÔôŒI¯"„6d¥éTâË) ÿ bsø$q±]ŽçÖQ‰þV"9ËOŒ‚ç_6[h9–裥ë<$¨š¶~L’Dáíõkù¸|s¸¬G„A‘RS×á,¡÷ñíÄÿ_î6d_PÃZÛ““аÚ=¥gµ#®N¤åSŠ§Æ°º¶Þù³æS>tkkõsÏøvÔžç] 'nG®§”>R,¿¾gÏžè–½›–®¬¬ÔÇy-€_ìâex]©Túº3Å= à—üBÔF‹‹ Ø>¼éttEB³éam}™^â“v…öç_"ñ…˜D¹~%#*YãÖŸÔmYhÙ|¨„¶ O E©O°ƒ¨¢ªõØÒêÃ"t;"KJ`OõÔÊ¡x?ÃÛ§‹B#dº•ØÐWùµH÷tŠëZ4ü¸–†ÿ‚œÛ]‡· #ü˜O)N‹ëŠñññ¸¦|Æò&°¾pQ«ÕΦÓé/¤Óéí`+îI…¶›(¥t§çÊ+¯|b+¤‰›šzž÷QD,Áj˜'„üv©Tº³T*ÅQÚ€‚…Í‘Ÿ€f³‰£ûP¯¯ ¥ã¿Úê*¦gç:GVôHK^µJ–håÂWÆ´:iµÕª¡˜àˆ¤Î%öiKc(‹\DJŒ®¤¡T4yÄ'#Ä_ήPf‰T”‚VûäÑÄ{Ä7±äJ!Q)¬e5jDÛ.Õ³mßïV+‡¸ˆºJh¯Chá÷ ÆÆÇ±TYŽül=;ƒ3§ÇãÞº5°ZÁhæãXXX¨LMM}Ìî»s BÈ»–——·„Þ½©'Q«Õ–ÇéðêˆÍî÷<ïîr¹üÄWðX#þŽÿïf³‰å¥%\±s'D¿¦Nh4šh6šèëëƒpýÄýêêbµøÙ"U ¤}¬nP;ó>WlÎ ‹–,%¥´B]±a¨–ðXú½Û¼  &ª[ÊaK¯—z¾å¼#ô›$`”ÉùmÙ}TˆìJhñ“\ëã¶€Íô“ûàÿ¸R/»ŽŠã©pL­"RM#JâÁj‡øh‹`üôi,,tt`35<˜$Zý €ïÅm†ëº§Çù+0½øHmB~kjjêP·ÇºØtÖtç)ï@«aœRúör¹üßjµZçþ°AXhãÔ0 F\]ðkݱººŠ;v îïYo4Ðh6éïoý’ è®GV²ä&”ú/,ê$¤¥pÂ*H+JbJI¿–¬ ”B¼VΣ“—$.[î[:ÚÝŽÝÃï‹$' 55ƒJ ¥bÍÁôñ!gò N˜Ýˆé DY$)q‹#á¤?LâöØøiÌE ‘€µÕUÝgX‰Ì'â6ê×u®ë>’Ïçð*D[ˆ¾Y*•"ûÁ_Ll:a¹®ÛÈf³G!ïäy”ÒÏø¾ÿ–ééé$¢: P(Ü“Ëå>ç8ÎW\×2Œ> Ö£úÖ¨ý­¬¬À÷üØ"i€EZõF™ÈÏ)!íɪEÈU¸^'(òTJ‡ “X¢ÒŠšƒC'Z/Â6‘²,]édQukiÐï MJF?’„4²¢Jß’–Pm­¤$ê8AêÖI®š¾&«Nç-þ~Iµ:BØ$ç§NEN¼ØäþÑ}¨G”æp¼àÍ8µ‚•Je|``à –eeÁ4Þ0K¯PJ_¿•¼Y›NXP­VO:Žó `dõÏÊåòß&-vÿ–òqE#®ë~+æeøMWDmT©T@ˆ…|>Î=4šMÔë dú¥^$Ð7¸­ °¼NT*(—–›ñR~)K#¨@ßõ”êª Üî"2c©¤%£.b« 9ª©¥"®Ëüa²J’¶Û&hU¥5ÊxK¥¯ŠÈKD`Pä á^¥—* dwtBÓ©†ú¾àµ}¶;ïN"{'“)!l–à±ã'°¸´ùþ4›MÜ?7H`=®~ýÙwïÞÝŸÍfÈf³³Õj5v¨i­Vk¸®û}Çq~f²–µj„•J¥¸å[‚° ··÷á™™™ÏV«Õ¨õŒŒŒÜfÛö#j`·9ŽsÆuÝ"^Z[ ~€\Ô1–—–`Ù6œ\äfi­¯×‘éïç"6ƒø@ÛÒûDdm ¬Ô"+iQOÛ)[‹튴qÉ”PŒúuˆV*8Ђ¨K߯8ñÿ§ƒá/uô2B˜"ID""ƒ"²ðñ¤î…A¶ÑnGU;ݪÝ}ýñ0i5šM9zËÑMöàyìE5ºÕ1ÀDößkTÙÙlöóÞDy‡ã8–ëº!Z&¸®{&ŸÏRÚà—äµ[†°VVVêèª022ò!Jéýv¶yú®|>ÿH¥R‰êóîø1˜±4Ò£²´¸ˆžžd³Nìy5›j«+èïk/V ÍJèV„’«YÒéžâZU:h9ÐÈDFT)ÞiADHbÀ„â4»žƃYRl×SÃN$&¬nR¥¡Š¬Dš¦‹î”(""èæ€–JiwÐö•V‘YŠý¨¨”P’¨ŠÔ¤>ÿ0i¯¯×qàà!ÄI¯¾ïãðØÎ¡âtÞƒ‘½X,¾Àò»ÀŽã¼Üqœï'ËU©Tš®ë>”Ëåðu×u#g~n¶ a%…H| ñ)JéÝù|þë1¥;eûÀ"­HAfiq=½½Èdõحð|ŠêÊ úûú梵^v#õ+¡Y‰¥u­¨Yô¹ ¬à¥Zõ§”ì¬ Vø8™q+CÊNÉ1öì5båÑÒV U‡Rýxíô«°ð®{¥tĥДòvÓú¸Þ¤ž—’$!]\§ŒÈDÀ¥­êd$^ßî÷#RÃv¯ÿÇpÔUq]ì;p ²M À"«Ã‡ay9:]äø}µA¡P¸ƒr?ZÛ_ à¹\î§®ë&Ê^\×ÜJÓžu\R„U,_Ú&ìÇ÷ýájµú͘펃õЊ\9€…ùy¤R6œ\|¤E)…[«!J¡¿¿‘”ЩDÊÇõ+UG¨È,H"l „¸- K¤}éР­ƒƒlÌÉ2ekµ‰2ʲ[¶ ×­^¤(¿Q’÷‡ßÐGDIü1By´Ò±@‰ZÔˆLî3@N‚ÞÙifÒᨮ³µ!mé÷ËÓÓØð`ì*Ÿ×lâÐÁ¨,'Ò²ÿÀïEmP,¯$„üWûrÞ•Ëåæcly\2„U,ïð Äå¾³¾¾þþÕÕÕ$MøŸ‹Ö^·áÒâ"’Hˆªµ4šM8Ù¬Œl!7{`.  m%Pvmc9Ä%³5ëƒ.ªk ÿD:*ô+!î[Vûè*U­¥)IN¤Ž¥­úBf-R"Œ¬Ôš¢Ü³\ ² ‹ì‚ÐDº)ÓVåñùmAd"RÓILü?ôÈÒ÷};~'NžŠU|šœ¬ª1NwŽox7b¤Çq¾඘}¥ÜËå®x¨›X[ [ž°†††rÛ¶mû€dÅÑÀŸ”J¥÷¯®®&qÑ < Ö{ëqV–—áû>òƒƒ‰v¼¶¾Žj­Çq)b8%Ô£=â X´èJµ„]CEY"*Q -[' JK=™HO‚d¥õÓ®ä£aµ%±’'ÈË—k€”§†Rc|÷ðÛíO’ $¨HL<ÎÉLEkêµáô®Óÿ%œ®®­ágÏ>‹é³ñƒcêõ:îß•d¶Â‡ÁÊnb‰eppðQJé«ÁVÉãp‹eYoÌd2V«Õ-§QÅaKV±X|I:þ!€W&|IZ ¹ÐIDAT•RúŽr¹üç8·ÕGÀZÑÜ·¡[©`ueÛ¶ %Š4šMKËËèïëC`à§Z´¤)T¦‚B“µ!¯”mk«š5AÖêb½ZÔ»;H2“×Á Ù3´Ç“"ð>Ia]ˆ4[ïâJ9ш×@ ôL>M]‡ôsÉC7ÃÄDƒFÒN© LOÏà©gžA­«gce¥†C$)fXEÆëÓeD R©¸_µmû$«Í&„¼+›Í¯V«‰½Ž[[š°r¹\ŽRúoô&Øü¤çyÿdzzúÇ<ì`BåÍq®®¬ ²¼ŒÁ¡¡Ø€›³°´Œz½Žmƒù6^§`Q³nÞ ¬îñV2J„×ÈJ®„ŸJºØEOxµ]Kd¥Ý‹íZn']l™J <ÅÓîƒéXÐ#"¹ò'wÄÒE‘^ò(Êé!›Q¢ÈN¤zÚÁZSAþœ¼¦”Õœ<„Ñ’¸Ò±¼´„ÃÆNçx lºTW“˜¹Ÿê~ÇqV¼ñ%7½„·ær¹âu×]÷`¹\Þ蘽‹‚-MX®ëÎçr¹2"&:sµÕBÝ›%SÃ`t%º;è¤tÑ‹C^dkú•p‹ž’•Uµ+Íé†À¤ãTM¼©—á¡DxøKKõO®w#¨@„Ö©ü@ÍLÏà>Љ©©DÂh½^Ǒǰ¸ØÊômoAL«¥B¡ð&Û¶Lðƒ‹J¥2•Ëå¾à×:lö7¥R铞äVÀ%AX•J¥™Ëås¥gœpW¹\~(Éë‹Å⽄ÏCý3„7 |¿V«Å-ïü샔D€ëVP«V188˜X”n6›(OÏ`mm Û‡¶#Ý“ÖLžÁÈ©%ªÒîK‘]K#-IDv ÝÓ[XÄ £UpïdmÖt^Y§„a+‚OU{áh¤r”" Ñà~ƒâ½""µLH屈ŒÓ (ýWVVðø?ÅSO?k¨T*8rè`ܰS_ðNĬ‹Å×B¾õ¿-ŸÏÿ(¦’®ëV¾bÛöõ^zúg–e½¥R©œ—« —aìÍwçIWzž÷ÚéééØÂNù}ŸB+Ùd-ËzK>Ÿ°R©ÌÄìæ'‚…ìÑíH¬­­aaa™l=½IÖ *n§Ïœ¥ÀŽáí-© Š®˜Å ¢y¤”¢[‰G¥ƒ¼­°Œ¤tâê´:^LšvŠÀ5…Pd#Jr|nsB¼pÃK‰žBNÇ DOº>Hÿ\I„ÒË Ý!\T?ˆ~³³É¤J)¦¦&1vòd"!žŸéø]$Èr¹Ü»¡"ý>JéÛ²ÙìãÕj52çb|6›MB^ ö=(Y–õšÉÉÉăT· ºï¼v逋Å?ðïb¶›ã¼Ñû|9˜ ŸÈ¼JÁ®b»÷ìéZïÀ­7ߌ]s ³0¤S¼ó‚°9¤e1´X1T+b8*»Í=ZÚT;eÃ&vÀ€šã½b",q»]„ÕîºÝmÏ÷Ùß—·=߇ïylÂ6Ÿ®Í¦m{ð¨êQvÛgÞ-÷Ö÷}¾Ç^ãy>¨ï±}‰‹çÁ÷)<ßÕ®õcû¾“'OâG?þqlѲŽõõuœ:q"IM | €÷øJâƒ(‹ŸðŸµ‡jÞP*•Iøú·ø Jé]årù’t¼_2V—°‹Åâçü›Û–|ÖuÝ$Ÿ¶IÿlÙy8ɉT]ËKKÈåòH¥’j4˜œœÂÄäúûû0´m›$”°»ÝJY4PÚÄjŸ¥ÄzÝÕÎõÜXªù¯ô’œð%Ld@wÚU"¢Ü8ª¥yª‚F‹´äŠ¡]‰¨‰RÍÊã.-D8º’§À¢¬ññq|÷»ßóÏ=—8ý€¹¹Y?r$©¿ ÀÑ;˲YçR5"L—è!ÒDH ÚEYçLRm {¥‚)¢°)“)lX ¦…ÂâÀñº„¥Ž"¯ÇÇÆñ­oO>ý4ª‰Û2aýÔ‰ã(—J±Ú†ÀÈ&ªõQ$\×}<›Í.Bîû祿9›Í¬V«Gâ^Ÿ°TmËâ²"¬k¯½¶wqqñ`ãpÆó¼<==ëÝjƒ5_s"ÿ ó ”byi K‹‹Èd2艙ÌF­VÃñã'pæôôö÷bxx˜÷¸ FYÄÒ, 2ÊRDeѼOu;•Z– ¸PÁ3Ъc…ëéâÐNË §‰L~+{œX¤Î®¢+ÙÝA{oµ{ò1…)’b÷}ßÇÁC‡ðíoOüôÉØ 6aÌž=‹ÇŽb5¾ážŽ¯øç`É7„jµúd6›-Bî#-›òæ\.7îºî¾î+ã²!¬¡¡¡X¿ Ø® `duçÌÌÌFCãŸ@™ý2I^Ðh407;‹f³‰l.×u¤R­ÕpìØqŒŽîG£ÑÀ®â.ô¦{89-ýÓÄz=¢’¥·¼ÑïÇ =—(KºËÛÔZÆ„Vü¨uª"h=º"ZZ¨ÛDä%ö¿¶^ÇSO?ƒûÿîÿà¹çŸ‡ëve&Çêê N;†³ggº‰ªÖÁtÔÿ€uIQ­VŸsgl!ˆ€ýhþf.—‹k^yIã²ݯ¼òÊmÍfó{H`ò0iÛö'Ïã)\ q%9¾DOOFö\‰íÉ䰎û¸ù¦qÇw`ï5{å¼AËæ½°¸À.'çï–‚Íûd¥lU§n  ­v%®“Šîí¶•b¹ؽÐmþ<õ}4©êùð©'…x&š{Rœ§\pÏ aýäØ)<ýôÓØ·oWú”€×l¢\.a¦\à€à™®šÅbñ=`-hD”O|¤T*ýù…:æfâ² ¬={ö¼Èó¼ÇÁ —£P¶,ëU“““‰,]"à£þ+Xtd2Yì¹ê*d»Ô·ÂØyÅxÙ/¿ ·ßq;†¶m“æR½<'e©YÒË¥m£OÉi·*x!‹R ¯ RJùêžÇÞf¯ÑHJ#6Ì—–ðÌSOãɧžÂÌ̹ea”RÌÍÎbjr’”ï ÷¸@¢}A±X|€û ¾Ï”Rú»årù3úØ—aÀîÝ»oö}ÿG†:l2çûþÓÓÓ/𩼠L¯ˆœ2ÝÛ‡‡QÙÝ•w«,ËÂÞ½Wã–›oÆ/Ýqvî¼BU‹’a‘C-Bþ­0aµÞÎdw-­ š-Áó=øœ”59‘´gUø¥ Ä9bdd䃔ҿp˜ÿ8_ÍÝà²",€µQk~&"­€»J¥ÒO6át^ ªßÐí !Þ±; EôôDÎÈè ™l·Üt3n½õ¼ø†_ÄUW_…t:¥t,aí["o”°Äµ¸Ýª_q’ò©2tRö\³éáÌ™ >v÷ÄQën¥®#–—–P.M+Q-‚Íø+$p­_H …wöôôüàôéÓ‘µ†—*.;€‘‘‘[)¥Èù¾ÿ†ééé6ñtúÀ>ÌC²¾^B0¸m®Ø¹«kW à†ë¯Ç7¾×_w=®¹f/Š…BG‘ýBV«†Ån—KeŒ>ƒ“§NâÈ‘#8vì8V“×èÅ‚RŠÅ…yÌ”§±ºzÎÄw?X xÙE3[—%aÀîÝ»o¡”šúîfŸ ÇM> 6¬òœu\±s'òƒñÓ¨7‚þþ~ìÝ»/ºf/FFF°kç.‹Œ‹tm8Wí `d5;;‹òô4Jå2¦§§Q*•066Ž3畜t4›MÌ=‹ÙÙ³h&kª×GÁˆêçïÌ âpÙÖÆë|À5纃tO††¶cûŽçEçêêØé4òù<óyär9är9äó9b¡¯·=½=Rª¯×±¶¾J},--£R©`yy×E¥RIÚ…ó¼À­T°0?¥Å…¤ õÚaÀû^V‚ö¥CX›ƒ«Ö)'—Ãöáaä»hgóó„õõu,ÌÍaa~õz|ã½4ÁZÁü΃[ÝàÜ`ks± ì ð>ÄLŸŽƒeYÈ:9 nÛ†üà` ½ñÏêëëX^^ÆÒâjñ#àã@Á ÞÿÀ%5°ár„!¬­=`å÷€‰ô‚eYpr9äòƒpr¹óºÊ¸A)ÅJ­†JeËKKÝ4Ï‹Ü-€ï‚~î|ìÐ`ã0„µµpØXòwcƒ—ŽÞ¾>8¹'‡L6{YD_ëkk¨V]¸• ª®›´i^P°–Åÿèª`pa`kkb'˜Æu/€íç{ç}}ýÈfÉd‘ÉdЛppÆfÁ÷}¬¬Ô°R­¡V«b¥VC³yÞ;û®ø;0AýBWCœ# ammôxX¥¸'÷yƒeYèëëC_?»ôõ£·¯étÏyí{ÏóP¯×±¾¶†ÕÕ¬¯®aumõs(Xîgü €?Ã&9Ô ’ÃÖ¥ ¬ñÛï€Íh¼(^BRé4zzzÐÓÓƒtº6o¡l§Rî`i£ÁÈN ##ÏóÐl6áyM~í¡¾^G£^G½¾~>Óº8ø`þ©/ø0öƒ †A0qþY@N»2—d— Œ xà η€y¹aóÉ`«^&ÀLž¿Ša .n›¨òWË`†À0Ï/ ÚíÞÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀàÂâÿ’Ÿá†ïnÌ<IEND®B`‚src/BWidgets/examples/inc/ImageDial_s.svg000066400000000000000000025054441515163050000206350ustar00rootroot00000000000000 image/svg+xml 2018 Lazur URH src/BWidgets/examples/inc/ImageHMeter_a.png000066400000000000000000000110451515163050000210760ustar00rootroot00000000000000‰PNG  IHDR[‘R+¡ pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î<²IDATxœíœ{”UõuÇ?gž¼‘‡Š">@QE¢À€1ƒ©1‰¥f™à+í2míÊÊ£M¢¦¦I\611¶MÛhÚöCÓž$IgN“uû¡©¥|[ïfo’$C㺺4I’ì-ÐÔUYÓ™$I{¦¨>ÈK’¤­Ì±NEo¸“€K(ž€ïÿ ìH'“™UÇ—õšÝÀO€ÍM0ø,Я@³ø9°!§9X (дwo¥“É5#€«Aš6à`u:È]sp•ÿ/ÒüXžf6Ô5ÃéÞ¯íÀýÀ²ì€5³AÀÀáe4¿–ä4Ë£ 4À"àÉ$IZ3šþ¨Ž+£yx$§éÌÆÓ}¢w/h.N-Ðt¯÷&IÒ’ÑÔSè>i;×» 4ç3 4¼Ü™$Éžœf0§ŒfpG’$PÔì¤ø„Œ.ÆÑµs;€'ЀXff;Ð ; œL(Ð<ëf¶Å?? 88hÈi:—€%*–mðÏNfÓèÚ¹ÀkÀÓ^—7QgN¦£A‘׬qM§™­vÍ4H'¦kð»LÙ^M’¤Ó'ë™À$àct„ xxh0³“$éðÉz¶·ÃüÍ6`)0ÅÌžsM×,2õ9Í»ÀËÀ43{Ú5µÀlÔ¯WÒÝïV3ÌìI×TÞæWhšÑä›if‹2š™ÀHdìòÆ{7p0ËÌÍiF ƒŸ7Þ-À-@£™=’Ñ̆y -Ðü=0ÛïÓîšiÈÐ_JwãÝ ü«×ç±Jˆ*&bp‹z=š¬7Ñ„­AÞ«MŠoü7šh | øš¸IF“N¾€ïÿîÇÿ žo¢%{Cõ(:ù±öà‹~­\S ìõã+€¯ ïyy?ãÀ1^Þ¼æËÈ3ÿkÎ~èºQ^®:?Ö ÐuÀ2×¶g¡õ`0š°õÍJ¯ó:à h ž†"ïy]¸¦Ó¯¹ÊÛhð94à~|€&EVóðÇ^ÞKPä5 xø)2P#\c^Ž7‘—?˜—$Éɬîö6…ŒCªY|Es’$ivÍ ^¾%Èø§¥؈ ô9À”ŒfŠ$~ë}TÆH °©ùÀI®ˆ¢¯MÀ½ÈH¦šV`p$24SýýѸhîBã']ò´"ã8¸ÖË·&¿ô=Д[‹,ê‘ן †&E# ³Æó©ÉiÆ¡N8 ÐF`+È碎ÊzÄZ4f (eòj»üýY~<¯ä È£6¢Î>y„±t]Õxy?êÇ6º¦Úëw2Lõ9Í¡ÀÅÀ±È36"o6E8§æ4ÕÈ Í÷6XëšCýz“¼}úg4UÈë]êõZÂÜ1ÈpMDE^3yÊQÈHÍÉ´á8oŸ¬·NPô9äÍWs½[½í桉‘×,@^6Õœ‰ŒÂ‘À'éîá£%Ëd çøßJoŸËüœ,ƒüZG Ãy¦ßk…ß{—%ëDz™ñ:œšÑŒôºæ5¼mÆQgs¼ GQŠ>*bNVÌR"Cê¬#OÓ€&Ï4äý‹¢œ*4€/@V¼-§Êh4¹.¶¸æy´$ùEš~” Oò6E{EšjNEÞ¤MöÀƒ=hêýÜ÷w߆–MS¼•jNFÞütä±OAž´Ü¦W=2 m~Ÿj4PWQ~|Ô#£•ø}†ø¹ë{Ñ…úétäI›P›”ÓÔ!#09‹÷Ñ8h£ü&p—¤k@K³š^4‡!£Ø€ŒÇTÔoi´–§Æïq"jãQ®I#¢"j(-/Ç##1…R¤R1T¢a…Œéÿ*ÿß[hµ?š¬6Õôõü¼¦/åÛ M_–~i†#«éë}Òs+IÓI©Þ©¦³üé]4ÙûõU“ÒM¶Ù2þ¾5œJ4 È;>Ž<Ý,äõ«‘÷(jÄNäMòs?æÿÓus9M pŸŸ;xYô= óc÷‹?rÍ´!VN³xØ5óÑ&j°bo”Þçù|ÒÛc ZŽtK…e4¯GëçQ(Dî–ÚË”í)´Ö_ ƒ ü¯ãÕšÞ6#½­.FŽd“·å•þyEÌÉJÜ|LìäA‡Súæ`OéÊA~Nê•Τ÷te?”^‡ÖŠi»/éÊÍ™ûÌF\.õØ»¨óg C²ò©Ç~~íV´÷1³&Šû-ÕL÷r"‰Ahbô¤9M¶£‘±|Ér¿%里ÓÛÈ£ê(ŸìŒn2þÃQßôïAÓÎ6]¼Ú½§”`=2܆Æ(rHÓ¹Íe4'zYf"c±ÄËÕâ â:d¨Eí|¤_c]¿û‘׌EQÂñ®ŸˆÚ½h³ò QÖ© iú(ÝŒé-´JÏÝMzN‚:¿/é³"M_6ŒÒëæËØöW“ý¿¯šÞ–™i[åëÕ›¦s5Ùr틦£ÌëÞÊVtϾh¬e+Ÿ³¤O©Äˆ¡“Òn3òÊ/#+<’ò©ÇÝhwøw(«°x€ÞÓ• ÑÞÅ“ÈëýyéÞÒ•«ü>ký»{Ñ<æõxµ›Ð~C9M Zg/uÍ äùª(Ÿzl¡”âœäm°ò_ÒI˶ý–â´gðŠ4zJ‹®BkùJ¿Å8¤Œ׬õ{†"‡GѲ¥ÜoZP4·í'ìAý4¦ÍÛ^Óü³§)­å‹hC{(} k1ŠÐÒõ‘fJ7Ö¡Ha1j÷=Gíh¹±E½l{ˆte´ Áö22Z#ФMÅ}¨ÓóéÊtíEû&ê ôûëè:ZÑà­Eǹ濉lê±Í¯óˆŸ3Ñ5c¼]¹ø™ëg¹¦Ãë´åô‹Ò•?ö×~í¼í¶z]‹Ò•·ûû¹®ÙŽöfšAÏkš€Û¼sQm@KŠÐoCvÑ•^62e[ã¯ñc;sš]~­Ý~í ~¯¹~ïÛèž®lö27y¶û}æúñÛ)NWþÊÛ(giÙ:½l‘®ÌcJ×3³˜Ù«f¶ÓÌveþšÌì!O9 qMbfG›Ùyf¶ÔÌÞËiÞ3³Ež†áç'fv„¶¤Œæ?>*£áŸ=^Fó‚—cLF3ÔËû—?«Ùif¯˜Ùùæ)N¯Ó@3›kf÷–Ѭ4³ Í줌¦Ÿ§Çî6³w 4kÌì"3;9£©óôXš²Ý•û[çi·†Œ¦ÖÌf™Ù?xÊ-¯yÛ”¶;#£©1¥o1¥öòšfv…™MÍhÒ4âe4›ÍìZëžâœaf_2¥óš­föe?'Ÿz¼Ö¯™×ló2dÓ¢U^Ö+¼ìEš[\S“ÑL6³K½òšíÞ¦³L¿F=èTÔÚÆÿX”}(j f”ÂÚ™¦s|0F¿°,ÚÚƒÒ”ïæž­p8Ú. ùZ€ÿ¶æ4ÃÑŽŠ6—Z‘Ù˜Ó EÙ‚š6´dZŸ} Š™ F;ÝC 4é³ÖäžÇ0Àï3Œâg+< ¬Ìiú£ooV Ù‹–?¯äžÇP2&£Ëh/h.¢üóžžÉiêÐoPŠžÇЉҊOd¢ìšsQ´X¤YŽžû×ÌFÑ\‘æuàœ¦mO§üóîÍ=+¢m¨ŸM÷%¼¡eŬæ`RQ†þo2õ´÷Qô§„ÞŸÆT©š½ežàTCÏOVêrúàû}j:Ê<Áé@ijèùiLEOp:Pšjz~SÑœöYAAAAAAAAAAAAAAAAAAAAAAAAAAûÆÿ šˆÓ€.ç¿IEND®B`‚src/BWidgets/examples/inc/ImageHMeter_a.svg000066400000000000000000000051301515163050000211070ustar00rootroot00000000000000 ~~~~~~~~~~~~~~~ src/BWidgets/examples/inc/ImageHMeter_s.png000066400000000000000000000307101515163050000211200ustar00rootroot00000000000000‰PNG  IHDR[‘R+¡ pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î< IDATxœí}yÇußïõÌ÷í ìâ¾y€ H‚IàR$MêrÅŠ%E”•Û©X%»b;ñ'媔þLâ(’\ŽÛ‰%Å–dK¶L[EJ”Š$‚$A¸¸ÄÝÅ.öø®™yù£{fº{zæ;ö£‰ß«Úýfºß{ÝÓÓïׯÏzÔ£õÈ"ÊÞ?(¶m;*~,¹éQ@ÕjÕ®Ïm‘ÿ·´¦ovvÖ¡oSzµ)333š¾+äÿ+ÚÓÓÓÓ6lh_ØACCCÁ'?ùÉ€ˆ8ÓÜÛ´iÓÒ2Êëá3s“BîQ. òÕ/{i}.•d¨Ç^æû¾âãL˜Îçyòš=]VűHùb}"Ë'„Ƨdb~)#óàû^&TtYxqžÒ0±Ò—Êrœ/ÏKÄâ4Œ¼Àk÷Bp02²äô’%ÃGjµÚô§?ýéHË›7o^""ÿ×"¢ GÑ£ý„“¬ç¥aA=D’°FP“|Z{XMÇ4,5›4ŒŠÃ\W)ŸËÿ¦l»KPŒÄš3{òG8ÂL}¦z¥Ï‘áQ8<4|lóµ›ÿtåÊe˜R`ž×¿š£ðÃDØÊœFztÉK˜aaê"‡Ñ^*DÝÏ׫‘ÉñɆ‡—ífæ9"b¶mÛæÍÌ£‚°´ =z§37gú1ÑÛ7 ‚F_µZ[9(Ðéz°ä ME²ƒ‘=êQ~ú‰ðÒ¾ Л}èQÞéDQ¹¯œõ€¡G=z‡ <R\èÞx‚ïûðK½á‰u™.áþþ¥DF€0ìd¨U‘Gž>=ÛLù¾Ÿûà?ÃÇác=pèQ×( TªÕ84¡F#À_ÿÕWðôSO! £æÒ—N]†0 ±óñ'ðÒ‹/½Ó)=z‡’ð< ôêTâ(ÂÉ“'E P’ »¾þõ¯Ë…W]É3¦§§1==Ý{‰=êј¹ã©L"À#ÏëšßgêRžîQzä"ydŒ1ôf%zÔ£A}Z¢ =êQ@$=†|@zÔ£QvUwÆÈ‰UïØa6~~ìäØùwÉ9rKÔÂp´ðø­ ¢·\ŠNFµá‘ÚÒ”KQØ@Ô;ã#&¤oÏ^00(c`ÙX~<Ñ@ÙA’?ΆÉ`ÌSgd—¶Œ3 [™3Þ‘1ÝYÆ9i9óÙ Þ.ÄÈ©h604«y•–lU”i«mΜHñ+=D§:ˆÒ-Ĥ¶&Sš¬ÿÔ½¾™@"RBqz-?ŠŸI*’3K’ôÓ|Ä ABß*æß.^"V¥•GšŸxÛ4‘&?¯–ßXWRä±Â(Buê(Þzñ;˜žsûk„ }áã€H oä*¬¼ñ7á• °n8±á±em™xXr_ŽLÎzx†''N×a\Z†oƒGFÞ!cñeqÎÖ‰îP¶iuý¨r°:3|Ú½&cœC'_ ol ” wå¬8rÊX²–n¶Ò$Mžµp¶äÈ™nV¿+}Êåqå5¯\l0e”—Þ‰+¼^yâ¯Ñ¨WÑáQ¹œBÃÂ<á£ɵðJ‹Q’idšÚæ×L,åÒ HEçÿ ù<Æ}œF (q:¹:¬{pæyv~µÆÏÈGuq.Y"3<ᵌŒüdòYî{ÝÍ'KÖl2s¯©ûš;”Mµ ¿ö,ÜÄøÍp3>©‚zm˜ý.„:F–_ƒ¾þ~Z[] àS ‚DóÂ<Bô!b@´èfxž—ÐÜ«pz 1|/†Ð˜ž `y™¬µH{ E‹qi» < ……@Äðáä‰ `pÀÇÕW aÓÆ!Üò®h‹ÑÀ œ>SÅ“ON€#¶p†Ó–I#ÃVmË4b6ՒΤÛWA"¬2CÜjâ¦,ñänêh ähÁ¹‚8M/× Z‚C àÉ;( ø(~e îÎJ@¦µ-…¯Â„î\Œ6â³_8Ógë)€P@#0å|¸ûÖŸûÖÅø›<‡µ«úôo¡™Oý«µøú?ÃãOMvlÅûî[ŠÏýÙwzzkì Âm·Œà#\…?þ_ÇqðÐ"N…ذ¶¿ó[ñô3“øÆCgEnºq1~ù7àOþô^}í"êµ(I§\X¹¢¿ûï¯Â‹/NãË_=(bl¹v¿ñëWâ+_=ƒgP*¥†Œ^˜ÆØ›óàP³vÃKÐ*¥Vôv¥#5‘µQÄ0ú4.N†q-y1@F‡BÃee@YwšsÒ$•WeäMŒ4TМ×4ô8éb^'8@çuÉ ýý¨2ëØc ìÊÇ…ƒ r@\È[ò —¯ëÃ-[†ðÈxACF ö~áƒ+ð×ß8‹zC—#”|š•e¬_݇o~oF”$[ò_ùø,[âËSµcòիʸsûŽ¿9F#Íg¶« ¯=X±¼ŒwïX‚7Ï¡¦2žG¸ýÖQ¬[Ûß§dC‹'€¥KJxß{VàÎÛGñ¥¿ÃÜ\ˆrIà—>±AáŠËñê+ˆHÊŒŒ”pë­£øìÿ8ŒzÝÜc†Œäd42\L‹'nèµðL]r„#Ž•Âv]ýØ\å]¬k%çChfxRŽyàФwz°õÛ¼š®¤t^¸õk®™ŒJeÈõ[$A@ˆ€vîÜI@WW>ê`ý5ÆìV HŒLà‰T±l´„-›d7A7\%+AB£!#"„4´dpH°Dr¿¬pI´jq:ªà}O¨ð8ŽÁÊ …@Ék" ¯L¸þúÅX²¸R€qëöQ ô{éËTÀËx‚!Èø‹"8’Q”ÊE¬¥­Ý»âØ ‹»%™Ïe?§Ñ]ÔŸŸµÁ]ƒß|·ÙA ³îÓÞ7ãuÔÅüñ¤]ož~7#ã΋YÿÙ ²e l%áU´1)ØM0ònÞ°Qî2ÈýPN•‰[™ÖL¡Yè̤k†'iU;MÖûø–R݈Œô5£ÔÒ‰=Œdël¬?Òxí²Ñï7T‘ÕÅqFÑÜv»›`°æ¸éŽ“Ö+wÈé™Ñ]c¥£—€5~ÐÄл-´àIíîAA ®§™;0˜¬ü%IYÞ“õÞl½DÕ…Ô±Ûà a,pê’ÇP€jv|rëFÝ(b9¸—@=P©…xþ¥Y„aL<%i!t22]H{ ‚AAÄ2€ž–ä‘­9£ŽÃ™j5Äž=P­„`–ÞÌ û¦páB]y0Zv†LÇ_È8 ä©uv¶— { x8R€ãò"3æ5ÐK½ý¹²V«›”i¦Y 7Ëœ¼Ùw­×‹¬ŒÍ›}§Ù…tÆ…•o‡LQ]wD™™ÍDdž)ýÍI3/ŸCG$@>Þwß}º:+ÑBœë¥iT¯GxýXÏîŸEp"2q¡¿ÿÎx2²¯§Õ"}³Š§ž›¶Žµb4Æ÷ŸÄõ× )}²°ƒ€1v¢ŠOM"häU ³²ãÔ©*¾÷ýó¨×##> "<õôn»u‰ãPI…A„³gªø§<£ÇfQ¯E`êµùaÉh7¿kz˜[Ø`œ?_ÅSOœÇ‡?²ÓÓ |÷‘3¸aë¶\¿{Ÿ›ÄkgÙ#×3Xkõ)î2´A. o™Œ¾l^ Þòtœá<˜zSÏ©ŒÕ‚·ÚÏOÓ,™´Gö·•<£ÔQV-¦Ù²× 5 öeh']  „@ !K—häÌm1¤"AÀxl×4{j“Sᦳ2f[Y0~¸{ »öLãüxCën¤i¿y¢‚Ïüéff„ªuÞýÜ^xq§NÕ̾§3Œ0öî›Æë¯Ïâ­+ÙÚ;[Ãç>aÀ8¸ˆ?:qcc &,§5Ã@‚Ãøù*þø³o€ d˜qèà4>ó_^í·-ÅÏÿ‹u¨×"ìß7‰ŸÿÐZ\¿u7lÁ§ÿð*‚N@p¹ÿòZöËòäw Á¡•ºÌKo¶¿œcÆcÛ€‘“¦±˜ÉŽwå‚@³4]zZL3/¾ XˆÎ€YnÙ(éºÚÖÒu’•Ó÷ïÙ1‚÷¯×`ÕòÊe²Y2äû„{îÅï|jÖ¬*kïEµŽ\½qð›—ã–Á#‚çîØ>‚ßÿ­+qùe9ïÒ O¶ß2‚?ø½M¸zÓ’ 6ꇬ]ÛßÿÝ«qÏ=Ëáûr0të ‹ñÿÓµ¸îºE”J;v,C_Ÿ]µº¿÷®Á{ß·¾'_ì5×.Æüáu8ñÖ<¾ü¥ãøË??‚³§æñµ¯¾‰/é8þì¾J%P†qW‰Ç‘¹¶<ŸôGw<·å‘$29ÅeÈØj“›f-…™¦ã¦išYžfÀïJ&+`>~³4›D8y²jSÒŸ=cè„Hž¯ .`H©\¸bC?î¹m1>õ‰Õ&8äPÉ'lXÛ‡;nYl,’q÷îX‚•+ÊFœïÖ®éÃ]·Â÷ˆí Ï#¬ZÙ‡{ïYŽRIdâvܹ6 ë<Ÿ°|yx`%J%Âå—ⓟڈ»î^ŽrYà¶Û–àÊC(•E’¶ç–,)cÇ»Wà‘oŸÂãA­á•§ðÿŽžQkX3Ú‡Ó ‹Y›GeMìÝÍÓJÛ¥N ²†fEÞvZ-€å/£oFDæ§·loÍ#ãV`ñ"›7À#jI‰Ï0p ô=q°Z âÙ `ð¸³êëà£]zžœ vÉx¾€ð®Ú4ŒE‹J¸n‹1á mÀ(}N"‚ïÂRI5ÊJ)™ü¹D¦î¦^ÖO8½¸r‰' U5Ú{‘‘”.1èýVWpN|¥³»¶”Û}M[ÐæqD;•’ ïZ™‚¶R‡ÑY‹ƒâh!Q$;tºaƒâ?2Ò#’g >ˆ>® Ÿ‘W+œ2áeéµÍãäuñ4)xg´U=3< D®VÄ»Åó#&æÌJ ^ Ôí%ÑÉ ŠAÀàq¤œy›¯Dxòù‹rÚ2¬]Ç2rz®T Š’ôãV—Áš‘Hy¹NˆáûÚj*⎴ü©g¢á—Ì^ÒÇó=’3†‘–/åí0Ë–ž@¯á…}Sxsl^Î.†Hgb  €!§lý²‡H¯…lï¬ÔËÖödtÀ"3[NÉuAž|^3yz2N lˆM¡‹ÞR(:Òl¥Mê^šr#T§ œäa2é C—Žv³o4ƒ&€ÔRÑ|À ê ÆÇ+øÞÓS˜¼ h àšbƒœ®;YÃÉ35|ìƒ+Swž Œpàà¶n–³ªr6‚§N×pøXûÐ*ùÝ>%†Œ<1ŽS§kˆB$@ÀÙs5¼üê üðZÙ Q}é(Þ8<‹±±yÔQò˜Aáì¹}ô,ªµ/ìŸÆ†r…æ3»'qç]ËÐhprªQ“ <³kþèz”ûÒþI2öìžÄë¯ÏhÏc½£Ñ×¼ŒPìUèáùž/—­Ÿy¼Vží§ÇÒ"Xä²QAÚŽÀ–Œ¼À8ž©Iš-Sœ´h'sä  ’6øØÅ®„n¼08Ž·C÷‚xôÉ)|{'còB¤Ö¹g< ¥7ˆ€ÇwMáðñ ~åc«±fe9³»òè›üÅ_‘ã9] à©ÝÓxëD¿ü k±~]¿±ñ*bà¦á¿}þ(Ϋ™2c÷sp~¼†O||6^9hÊDÀ©ÓU|áKc{kñrнû¦1öÖë8yr BIà‘ÅA8¾†ÿþG¯Ãó(?8ðòE|þã#Y‹­[Gài 1€»Þ½ô_áðáÙÔs°kCR‘sÀ s«vï]‡S&<«Û¥Ã°ù 8ŒÙqYDenÜúݼŽü;© tµ€Š„ÞmƒjV¢«ƒþÐÎn‚¼6λp,¬aÎM«î² àfÆø¹•úñ§§ÒóN¯Õë޼YÅÌl \˜nv²¯¹ê§ÞˆP«EIÚ ÂÌlˆ#Ççñô3ðüÞ)³ XîÏ{«‚ñ‰F?…ƒg2ÅŒJ5”üöô”]'\@`ðÙÆÐ Ø÷düRn|q8åèË<‡ö YG^­§·PdŒF:v^á5Ë!—É™r¥Ÿá%gˆä´¤v‰@ "­Ò¥®¥¿ºÃ4h£K‘1ÄHCÃ7›D:V M1«q†X/À \˜nà[ßÏNçqÜuH·Ë`ÆÌlˆo=z.õ‚,™Ø Aé2»°y¤¡·Të¾óèÙÜâC¹J0·µ²+aWn°È´òúµm|ޏ¬—`É4…öä²g-ép<:à5nó€«Eý¹¼ŽßVÀ‚X~Ûáƒð„¾Œ¡‹]‰ÄÐ5ƒWÆ Àdy^BjArs¯Õ-Q×ñ`]ž‘'ˆf‘Ì„@Û:íšï'Jî %S&ùÑ*®™E­G¥ÝèïP;‰!»ViœUÖq:¹u 4,P o¦ÅÍ1€N¡SY{¼¤ à1#ry:ì´¬ç‡K†¬t2Ì9yÔÞ…“×o“›äîÊüJQLDÑÞ½{ è 0X—gð1/´øÎµôùETt9 Ó§)©ôZã7d•§¶©ñYÆŸ™JծɑŒŽ+Y 5‹¸)Qæ"¹%÷•1K‡]!õk£~61ÈjEÖî4î¦z ä t¸Ož¶t´õ\°/à#2äÒOOWBˆ.>êh·öM Þí41ÔØÈ xšÊÆàâä·²£ât»e=.~ÎV!æ,Ýæ2Xi§ÏhU0gtØr9ƒ”¹` Ëx©á¤÷­ÈH–v@¤ ˜´ £%PH]žÖyÏJMtåÈt8ö@}σˆ¶mÛ ‹Ó•¤šVެ.DÞœ¦^@N÷D7õŽ"㥭Ç€Düˆ9½Ä `^ ºá2pÝ´GÑàÈóô¨fƒ˜9@¸» ¶\¾Aµ&Žð¶Œ{¡rˆm Y^Íx*,‡fåI­|ì¤Î0Qzš-€.ƒ'„V ¤ìª™»žÓµÈµ.Ýÿfóe´ãAÄ@c µâ°âšeCãE©ðl7Áqƒ†™nR¶9+•9Ö–…<”á5 ÚÅW×ôë˜Xax4äŠÏá-ÎüÂ>ë¹u"òº»òQõ}0­ŒOØÍx¹Ö%¯ãnfà 5ñbc×Ýý˜¬¸ä½]…œìç= Ò{s—.^C’•Äs0BÍÇk•œ5"kà&&䆃¹™×P¶¼[6Žk9qí¶î4ÒÉëË•k’6={‡Û®AñøD  ÷Šd£”aÙ*o‰ŒbVÙö„¾¹ŠÍŸXF>¹ äÜ Y*Z"e’”žaiUæøÙ4€R».9d$“ðâtȨŸûâ%èf>ˆ –ž›é«×$„YÝ/jÃZN‹„éÉ1 4—A6o²¾åsi×â´Hnß”å/JÇB}ï2+FŒH+—vA Ž—D«üQ˜/  /F:·Á;½€€ð°~Uw¿k~\É‘²Ujþá4fçÄ'%ûpï­‹°nuY¡^j|QÄxãx{öÏ"ˆRC÷=ÂŽí‹påú>­ SP8öV»ž›–S“ˆåNÌÛnÆÕWfŒ6bàäév>uA3t ïÚº×_3dмÙÀw0z#ÏB`Ë5Cx׋ÌÝŸJrj:Àë“§€ <¦+pû¶Å–Œ„˙ٕj| Œ+¸rC?vÜ:¿”4o ÍÍGxøñIÌWÂĘˆ€õkûpïí#æweÌ•j„ï@ž€î1\ýõå0wRÄ_`æ+[Õçùe¬»ù—PZû!(¥-bÁÙ‰ ±~(Pò€Oüì(n¼z÷ØÖ./©%åë ÆÏÏbz&@ú­W.n¿q«–•|bfŒªcÿÁ9õ- ³¹.—m×cvòSÄŒÓgx´uÕÄÊ%àæ-øl]Z!¢ˆqn¢ŽÝû”ŒÙŒ’OØzí06^Þ!H$còB€§÷L¡ZËî/÷}–ÍCؼ1õN˜é‹ž|v*=Ö-&’2›7bËæ!Cfn>ÄÎ]S¨T#£+AžÓÆË°õº¡Ä;a•J„ÇŸ™J[~­RzžüöÇ»n6¿©Ö"ì|ö"fæÂ´¨U…õaíê2n½qž—Zl=`üð¹L] ´b“i !½†;nNºHB#`<¹o“Óº©X¬XâcÇÍÃÆòø dì:0ó“–Žx¸û¦!óã>°ç`§'BDqÏPëŒ yx÷Mè+¥eFÀÞ×ë89¨ý2” Âð€À=[ûÐ_Ne"&œž ñówôãØÙ_ü~õ€5PÈ÷ôð’`ܽî8ùâÆØñ£ˆ"×¹n©?ø±÷Üqç¿×]·ï%¢Fâ1ø¾Ga=hYYœC_ÑlìÀuÞÉ‚(ùëW•°|ÔÇ·ŸžQg'"1¶0ŠÒÖˆS/¤»öÏ™]k–[±Ãiáj¶Þ`ìyi$æÌñ…Põy…0 Á@=ö¾2‡}¯ÎÀ,Ç>Œ—Lh„ŒýçðÒ¡9ãYÀÒí$};¨¢0^94ƒoÌ›ÅÍj ·ã¯0©àc•LäöukÇ#o¼YÁÑz —¦·øºÂc'k;ÓHôÄ2±L¤‹B'ÎÖqú ™ ™o××£#N7ðÍÓæóÇÐ=ŒØÛáüTˆo=yш#Èp¬éã„É™ßÞ5›1¼YõzÍpf`z>Âwž­dò&{}L0a³UÆ#{«†½øá®-}¸b•“QR‡šu\áNW’ò }ß±‰Êc˜B„EÇ„YÄPS$ZWBûd,`_ëÆ©i!åÅ- ¹\Ù\¬éR]ê7JÎ;4ì\ºÏìHŸTEŽ?ô¤çËpáÒtÐ2u¹Ø€,]JI–[¸mÒ \ŸF&HèœëÁ:"¾,a‚ÈŠ7dLãäã‘aû陼ºaïSçf~õ™… ´õiéhúãë4íëSÐ@Û–WœA$SI,0µÁãV‰>Nùr ›¡êœ¶ˆ-qÈH+¾\ãÏùÊÚ…˜ˆ@‰krJ2IIDAT¶lÙ‚£GÇÌ5ÚÓLÒ =úH‚U9{²#î÷k•àLòå)3Íl…m~ ­O?:²§ÇQ’OÎðÊ›lð'd¬é°ã¬ôí2¥áJ.v£ráG@:gâ16“´‹&`QºL‹ñTß$NgÉ•Ë3Êô¾m@ˆÃIv]£(½wŸC–Œpu|§ƒ‚½Wbvv–Ê¢,*DˆˆŠO6õÁ÷uãÓXšK€f´H:Ái¬ŽçV¥‡oW`ÝNISÑŠ7`E¢Té,½¬]^ƒÎÊõH/„$.§¬[ïÑ9i127¯r€KÎ .>éFM³©g ëÊ tY[Î¥c¡€ ~˜ û80ÈArû™rt¹º8Bhümðȃ:Ýcèó:Ò1Èî„Þk©2ɉ ~°oíÇÄÅPdÔù5l—Ь{` •C§— 1ØEft‹ò½‡”´ë;]¡VZʹq‰ºôÅ•Õ%×a÷¢òø[Œw‚J ŠS® hÿ˜€™ ã/¿_E_)õ–[u­o»nßi b«¢€a|ÿD× Y A Òi­$-‡Åº@B…ù>áþíCغ±ŸýÛI¹¨„²†G‚æ@¡…;¯µ$Riñ¶^m‡ÓðI˳]r–.¥¯9S5©…Ñí‚nPyºÚé^dŒ8Ë——®0pÄ{¶¬;. E:€àzN",Y$ðÀÉÉ_z¢ŠzM‡ ô‚äµ±³MB ³ÀiÓ&àµW®^ëáüŒjôKlc31HÀL£U"yÂ4`ÍJ€ïù \xñøQj°» z&´&=Ž‘N žxžÚŸì®j‡×îq-_^ƒŒ×Ç%äGzKÍ=uÉap2ÉPæÂq›£'0Üc.^_1óÝ5›mª/¾òÇ@¹^ƒ³;bd@“‰ÉIœ­ÇŽpß:Ói‡\FÜ”Ï ÌËí>ä€-cO$q6¸ôYºZŒo º®‚8Ww!¿›×q-,žk}vKÖ.QvVbff†Ê^¹ýQ Vƒ¶?MI%'+ÌiØ âuJ~I-zŠðH..bÎ ÞY—–T”|Ö-Íà‰´OÎi)wI:¼È ï{–ýÚéè U:žÈ¯”!SI¡<ùÁ8)+C¦Œãõfd(NÙt4ù’'@Ök"ùeð ø©KßÓ÷^h2®kÅäû”ŽÅ©L:ÓÑžÙóã£ÔÓˆ,WÁj†¥ëô¼ø£°i^"Öò¦—©ºŽwXê A­œu‘LG÷Ì=O€!§éç§U@H¢³åºPRÃ`ñjGΉø+ÚChÞ‚¹Þ ëM€Uÿ[ÈuðGÏ409á£÷©ŒÇöV01¤ƒ÷Êp=¬_QÂÝ7ökßa`4àû{çpn24‡=XöíÖ,óqß-ƒðµU‹AìÜ7‡ÓãùÅ'eà«–ú¸ûZ‹/ãÃxrÿNœm$ß”ˆ]Œ¥#>Þ{û°±É+ »ÌãØÉFf5%‘Üõ÷¾;†M^aÈxþÕ ¿U7vqJ`ñ‡÷Ý9,wýQ*óâëU÷µ)L΄ò³s`@+–xøí-Åe«}c)iÄŒ7õá3_½€óSòsó@XºØÃo~|)®Z_Öd·\7€Ï|y§ÎFÞùø·_Šë®0wü1·Ý0ˆÏ~yoži¤=’Ûzý£ËpÓæþŒÌ]7 á³_Ç‘“u£Eêø7^Ší[Œ-ëÌÀ=· ãó3Ž×Ž× ™þ2áWÿùRì¸q0³ÍýÞmCø“¯Mâ¥#UC¦Tø—ÁýÛ†2_ ¿¿2„ÿýО?XI@©Døèý‹ð;ÌÍM€ÜJ_ò/âé—«ÚÇxßø¹»†ð¡»‡22Õ:£\"<þbaHš á½Ûðñû†P¶dêch@à‘ç+B­ÕÀ=[ûð‹÷ÊÍM5`Ñ ÀCÏV徕Ž'·_[Ư>Пy"K |mW µO‡ õ~í=ý¸érÏ\ àÂã O4pfšåòôbʲLþ!· Û!i+}çæœfäyžZŠ™Bî€ÖbÛñÌÀ¹i¹‰ä/TÓ{ÚÜ~¥Îh„”.ÁVzjðÄ‹U”ôMäJ¬Ö`Ôc×.Þ O@½<ýrϽF?Cîݯ©Gˆ»3ÔCàÙW«xáõZ¦£Ö€¹Œ›ä¼ô¾×ªxåhÝ’GÞW,Ј€WñÆ [Fz'óuÙ:éÈÙWŽªÍMÖk #`¾¦Vj@Bàµ7ë83<¡Ë0f*œqm#Žœl`jVûNìDÀÔl”I‡A8~6Ä?üpÖlØHvW&f¢ÄkLd81âOÍiÁª5pþ¢êKX.ô™ !ÚUÉ4  àô…xž)¤®z¶š18fàԤܬ¡;ÅL„ÉYÆ7Ÿ«[µãz|v:’ßUÎB& qäld½BÈÀ™‹Œ3ÓÚ‘ŽÙÒÞƒžÏ$¬‹^C ‚UÃßÎÊGy P2Æ·”­Z@8;á[ÏUÓpÝb +_º_OÌ2¾½§bð%7¬Æ&0‘k¦+Œ‡Ÿ­dùÕO©n¥ ÍUïÎîxŒÉH²’Ì×ßyÖ’-cžâR €ïîi&cD=‚<; Y::˜DÀÎ*YfÅ1Ë ®RÀò ‹5©”‘Z¯YÈ„g^­Â˜5Ðä’t4ã ™ðÜ¡è I’:#eôÆ,°ÿh/ ÌtTf˜åyz=dà屯œÓçÑâ™ÕÆ'ýÓ‡ž qèL˜I@²šUSZkð½—f6ÉzͺÛ;pÄÝLÁ.Œ|˜žž&Q.‘hÆŸ!a¥•‚ƒÝUˆ¯›Í*0š}lrȪÁBÓÎãÖÞô0õ‘šÌ Áðé-à’/Ü*S\u«’ñì8‰MÓaµ*Ø”±ä 4IÁºófÞ»óf–«€«J„™LÒÞ¥é-è]7ér92¥¬¦¼iàIÞùÞº¥”ÕêÔy<‘ÆÃHë²,†T0MPÚÅÒÒHMAËWRwâÄ´úhÅ?”ɧé8âì‘à’6lÀäùÉ–10  ÏÂLÁ&ÖT €60H™™ƒl…È‹“Š)‡—mYýÞ³PÊæKžÉaív¥WäâÉè-¢î¶ÍÕ;ÒsfÁ P&?9ÂÜòdþsë1ZÐ^ƒ—¶>Ó›éIZt¿pj4GW¸dsâ„Çð)D£^G‹!%] !JmOWFQˆ '^ÁèÊp¡1„ȇt )%«I·NUròdøt”Å›g¬ü®BäÌEÙÞCAùÙùÈ¡\ \ÙŠ‚æ‚éëw"¢”5H΀ž]ùq™d(á) ;Ø)纎ûÁ9<®äòòèÔÁX2dì¼è²ZEPz„ ¬[€çNcrb¢­Ó›ò(Lh¢0À±WvãºEX·á™GHênÙš¡I/ÔÌinž±p„¡MѨÂÒ 2Z†TN¨–&­ŸÝ2ù‘†Åéèƒ>Ù‡2ï–”7áj ýViÙi›e§?S*Ï™8Ûõ3ò‘ô”´çÖ[-C¿ûÙ²ùÈÖnW™%rZ\{"('?ιz½Ì¬trɉ<PKæ’^­äÀÅàD%ÆìÄ|ëネù¹ÙòÔœK.•JÔn_‚™1{q û~øJ¥‡µcʺGm=ÑIáÇ|]ÑÍK2ë² ¸·çYôâŸüJß–¢BŽbžŽ’~›‹çGMQ¢V­¡Z­"rÖ>ùpñâEÜÙÁPÌŒ QGÐÈN­ý$ÑÛnL=êÑÛH­Î$¶JÊcXÏ›XЙq?éÔí‚íQ~’IÀš5€( êøh¨õ¨G?U” øä·6šÒ£õè§œ`B¼c‡=êQ~ɘ®ìüðé”z]‘K“zc(=j‡| ŸüNN‘4hÛömX±byW2Ö£îÒÜÜ‚ ;SY=º4é…}ûP­f7øuBéŠ$Ïs®‹o•ˆÛ¶Ý‚k¯»¦ ÙêQ·ihhž·°›÷èÒ%fÆ>‚jõ\WôiÛ®!¨Ýó¬ŒýÅŸÿŸ®dªG=êQûÔÍîb ð<>ÐëÇö¨G?$`VÄOÝZÑõ¨G‘€éþiò8ÆÐ£õ觇(ð<Ù•èÍ6ö¨G=Ò|‘=¼G=êÑ;’4ÁØ~ߣõèL6nÜ•Ë}Õ’Wjuùêõ¨G—,ÉOB–¸\.êPGùÄ+ƒÑÑ%'—¯XvlúâÅÑZ­ZB末"íÎËÜfÑöñ&¥Û~Úmépsó§É‹*÷-~Pû¼¦¦¤±°:Å´%­=JkyèÑ%AžçcÃeëæV­\q²\.O [¶li=zôõ[nÝþÿV¬ZùV¥R] ÅGsëG;éG›‰$,­Öñ—|˜Añ‘Û™sôó¨ÕkšUºÆ¡ýš¸ˆe(=yM-‰‹ó¡ç¦å9‰§¬q¤ß Ðr«]Tʘý,‡OÒ£ù%?Z¾|ÙÙ+¯ºòoGGGÏÅ=†ä2³x衇Ï,Ðïy•Ëe@ŽW]†ŠP†}Å eX¤Q\ŠÏ›+CWÞJÉÿP„ã;¾6P Òp25Ëc D®<ȸ’Ò¨42I” NƒMo©”“9EùåTRñzKÙ«€@Õ‡œ•Ó­ŸýWœ×]:äyQôM®X±øÌŠ+æ‰(>àÞ$f®ð·‹vîÜY˜Ö}÷Ý÷#ÊÉÛG{÷îmZžÛ¶mûQd¥G=rQBzÔ£åÒÿ÷sœuEÇIEND®B`‚src/BWidgets/examples/inc/ImageHMeter_s.svg000066400000000000000000000224301515163050000211330ustar00rootroot00000000000000 volume c_____________ c_____________ src/BWidgets/examples/inc/ImageHSlider_a.png000066400000000000000000000004401515163050000212410ustar00rootroot00000000000000‰PNG  IHDRˆ2‡ë“A pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î<­IDATxœíÖ=.EQ…á÷†Â…iè”7b†Be w@(•ˆ ¸9Æp¶ŸCò<õ^Y_±Š]ð5«Ù‰›Î›º­Ž¿ÿ~ÀCSW]÷<ž7m{íz©NGÊX̶Ë6#ÁýY¯×ôaÿÐÙhpÞ@v½¶î½:-d£Áù·6Õ]u0ZÊ/ZõÔÔEGÝ/} ÀŸð oÄTtd¸IIEND®B`‚src/BWidgets/examples/inc/ImageHSlider_a.svg000066400000000000000000000060261515163050000212620ustar00rootroot00000000000000 src/BWidgets/examples/inc/ImageHSlider_d.png000066400000000000000000000041671515163050000212560ustar00rootroot00000000000000‰PNG  IHDR4(±lÙ pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î<IDATh¥YËGÿ}ÕÏyì¬ÙÙØkgI¢àø@"D|Irãj%ÊÅR„à‚¸#g‹¿¿SNá!_8D NlÇ"(gÈîÎ>æÙ=ÝU‡éš­®®Ú;%•º»¦ê«ßï{Õ×=„Õ13nÞ¼)nß¾½‘$I¿(е(Šúý~¼¹¹‡aˆ‹/¶™™f³Ù‰’ÉóÏ_߸qc¯ÕjÉýý}€0ܺu‹‰ø °øAzÆÛa˜¾¨×„ׂ@\ëtÚ—[­öÆÚZ··±Ñ§ µ¹ÙÏ/]Ú ·¶.ammMõz½²Õj“”eeYÎãñ¨È²§{ÃáÑÇ£ÑôþÑÑÁßìU䞊`h>DQô:3ý’o*n·Ûèv»üì³Ûó Ö£( ÷/mm­÷zëjoïkEq‹žLpÿþ'¸re;I“o¾uï¿ÿF£vv> ¾½ý\úùv°½ý._N!DÐ ÃXmöûjo?<99¾> ÚívÚ›L&óÙlú!3ÿC)ñ§²Ì>P®J0Ð7q¿Ðï‰ð € MSlöû÷Û­ÎÅ—®^  û÷îuÛ­5dyNýø#"Ï ŒFüå·P888ÄÛo¿…ß½÷GìîîâîÝ»ˆ¢wïÝEšv0M°óù¾ür—¶.]ãñë½ ò<ï¼úýëa–eÁÉÉÉ5)åDü“ ~,ýS)õEåQ>¯ˆêÚgÆoL‹Åq2OÆ/Ÿ ©(JÌçæE`f°R`æÓgf0£ã嘪æé«^SÅ ˜RJÌó9¡Óé„I’œ_ ï¥iú‚1æ%&*ëü@9›A þW™c悬ñUôg "{=-ï[­tÏšÞ“’娡±›@Ìx§6(˜¹(Šb¹¦À_Î[“0Q”ÎOåêÆ?Ð;”ˆãøß±7SJ&J)jD†d‚§ ÐRˆ!/I"nÎG/’7 BNR‚™¯Û+†”2^ªª¹˜ù¼ ÇÕšO.À"p #â×Py•ƒ€EøžgÏØe S£TûÝ Ýì&R%¯ç¾ŒÓD¦Œq®6â ~c)eìä!+–N{ yåJ¹ÍMD Bl]‚={¡R ¥ÛRíy¹I °HÅdѰµ~9]PB§÷zãM,ÎN·ë‘ +¡”Rz£:‘f×YÍ?î·|Qg¤‹Ð² ":²WTÚ)\DN5-êÏ^ßr[Èëräy¹-„‹¸P·Î’˜`æ!f/¦,LDD‹DÐP󜪫ZÈ$X–Eì^ÅÇhZ¨Ö þî^¬f& gÚ&ã¹æ:éÔÖ ùä²,ï¸1Ñ.òÅDYfpÜ £@ä´ÈYi¼©²'!¥EÑu­aÆgXXH»\ÃJ@ðo˯ !‚R§y×½üG‡ï÷ųD¤Ë-äyÎf Y'$ïàÔ:fâ8!(Šâ×Ôóú|^ôƒƒì_ÿþtöèÑCÄq¸7¡(æªÛí ÝnC¿lÆI´´Æh4‚®¸“$³B…`V²DÇH“D@òyV2K~üø‹â«¯“'!|"¥|„¦«ÕÈ/Õ†áñ.®8õ\¡ ‚iš IRnµÒ¢×[;GQÈ­VK†a„n·+â8išÐd2QÌ ‰R–4›eOÔt:ÓéGGÇ”e3L§3H)á!3QJþBJù€1€€À‹Ì'±¨”é?à[aÿŒ?pÕ%ÙEÒ|v• ç=WMØUŠïH©þȇ†&¡lB‹€ £(z‰™H$^ð]/X?äS´’™s€§Ì4x™w•’ŸøÀIëÀ¨"4ÅŠZH´´¬xFqÛDü €M€.H˜H‰8†qV0C`€•Þ˜%À93O°ÐtŽ…Ö'èaEÀ$cÒ*lBµ$F3 ?Uu `ª”z¨c,¬µŽÅK×€NE>W ÑÄÌàeC^Yiyn›½4ú4<…)`}õq± ••FæÕæY^Ÿ ʘ£K”óiy®¤µŸW½0™¤4±Ú'/›Ë2>mšV@5Oƒ‹P?ÑÍ3Ôm+H»M¬+6}ï³i—&Í‘«9.¢¦…lùnEM«îÊfÚý|¤j„–o}8ÛÕÌÒÕïEµq‚SëøŠHŸ²´Œ¬"¢‰¹¬¤-µ’Ë™¤dHkÑŒ ª¨6Ôd\Öq²­dz€IL¢f,¹ÈÔ\Î,M ’±¡ LÇÀ§nf[ÇYž îZŽOf·ÝÎKg%Ó-\€Lÿ×D4o5ì¯÷°Ýonu™šÜ³Î!ýUE[ÉþÍLϺëƒÙù¾oÐr´r´L“¥ã게×Bfü¸ˆù²_€zÌøÞ÷M—vÉ[VxûjÎqþåâ³ÐYdÌ`¶IøJ{;)˜÷6)Û M®¸©]]þmƒ0ë<}µ ¸ˆ¸Èؤ\1k“cøÝ¬QýšÙ$e÷U,âÛÃGÊî¾xiT gmæåîº?OvšÄÌ{§{9îÏÝÔý!à|K¬BÆ «ƒo$„'Ùø¬X{y®æ¸êØ7p^Ü}“æ{& ³ýÉü6ÛIHRfIEND®B`‚src/BWidgets/examples/inc/ImageHSlider_d.svg000066400000000000000000000465631515163050000212770ustar00rootroot00000000000000 src/BWidgets/examples/inc/ImageHSlider_s.png000066400000000000000000000026231515163050000212700ustar00rootroot00000000000000‰PNG  IHDRˆ2‡ë“A pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î< IDATxœíœOoãDÆŸ×I׎Çq¢mÓ¦*h—VÚ……¢"8âÎ@|€•zàØ[ûø Ún{àBO jBB¨‚^hRÚ<2)n2n<‰Ý4éü.óöõãñxüzf:31`±X,‹Åb±X,W’wv+aßPi@ÒWös‰ã«ƒZe_Wé ɺæz+ßAŸòWRük)þÐ ï¡r(òo ^“¤O²¬ì­ÄñXW>’5•¶H¶u×Ì 'ï I €•Àjâpÿ&ë"eljã-žPi@÷€74>íðRŠ_ûÐli|iyëÊœ½Ç@sÍU¾²“y3¥|‰ã·P ¹HÁtÈHÕÕ(øÎZ€6@’þÂÌb€ÌZ™‹¤ðú(™¹â7ï_ô¢?‹«tº˜ï5¾´úø3%c•^…ˆˆ Uˆˆ<ʪUþï”9ó-ˆˆ ½"òCŠö›ÿWÊ,¼Ë½èÊ>-9W;-HžÌ× UD¾˜P›öÆdÎÀC-|m 5)DäÁ„Z;H@ûƈHæ–ID~6¹ ®K8GkÒBæÁÜu1“b»˜³Ìæ¿ýiSÎ)Úx´êTë馾S´i³ëMîOéMî1Óý)m›äó&e±XreœæéZµZ]ïv».ŠÑkú)"<::ê¢×ôõ\×=õyžÇÓˆt=ÏC¥R¡çy‚€Žã0ŽcT«UV*„aÈ(ŠØl6áû>Z­V·Ÿg£ÑèAÀ Øn·us W¿D¤3îɦâ”^-Ýï¾Ò}ƒ>GŽ_œ/ãÒg¥#‘3—‘äß}[¥Ò·~ÐX X\\|´³³óÞööö§ãœoTãnèntÞï|‹Z¶óœÏ”>,S.KŽlnnîïíí½("ÿ˜žk4“züìñ3X7ªÌÃ-K‘®Xp`z®Q€”Êû'þ ³¶ 6@.ËËË¿0n=ÃéüÔ9(}RúøäîÉ[™‚ÄÈÔi6›¿îîîÞ ]ÿ…ñ¨/Žã(‚5Ïójµš„aèÔëu'Š"Ç÷}'Žc'Žc' ÃR£Ñ8µ}ß_ˆ¢¨äºîB½^/{žw+ÉàwDäñH¥År) ùº6m§NgÅLnþͨOÛ«šGÞ&÷˜¶7V§½mR×ãPÔ¦å­Ä¦åQ˜L[û8»é÷ src/BWidgets/examples/inc/ImageRadialMeter_d.png000066400000000000000000000027261515163050000221140ustar00rootroot00000000000000‰PNG  IHDR¹%ú pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î<tEXtTitleVU meter. Medidor VU°!ötEXtAuthorEhecatl1138³Ï-JtEXtDescriptionAn VU meter for general purpose. Un medidor VU de uso general.1·è›!tEXtCreation Time2011-09-22T19:46:56T€hZPtEXtSourcehttps://openclipart.org/detail/161731/vu-meter.-medidor-vu-by-ehecatl1138ï›{]XtEXtCopyrightCC0 Public Domain Dedication http://creativecommons.org/publicdomain/zero/1.0/Æã½ùÜIDATxœíݽë÷UÀñ÷ííÓ­eø*ˆePYEø¢ B:Xàâ` .5ˆTƒ‹P&¸8¨`‹C$"Fh„ˆH”RXIR™X™™Ùpà7´4Õu‚×ë/xO_Î÷âœëSü7ª.žŽöóÅêŸÕ…Ó!À^ŽTÏVW‡gS€Ý|¶z«ºv:ØÏªªS‡;€Íœ[½^}k:ØÏ·[?šörJë¯ÅCÓ!À~®o '¯˜ör¸z¢úuuÂp °™O´.FÝ8ìç;Õ+Õ;§C€½œU½\Ý;ìç¦Öpò’á`3Gª_UOUG·›¹²uz¸n:ØÏÕ‹ÕiÓ!À^>P½VÝ6ìçÖêê¼é`/'W¨i­–8ðùÖpòªé`/GU?©~[8ÜlæÂÖ»‹¯O‡û¹»ú{õîé`/gT®î›öó•ÖpòSÓ!À^Ž­~Qý¬:f¸ØÌå­Óà Ó!À~¾×š?œ1ìå½Õ«ÕÓ!À~n©Þ¬>>ìåíÕïªçÝðo®i '¯žör¨z´z¾:i¸ØÌG[³‡›§C€ýÜYý£zßt°—Ó«—ªû§C€ý|©5œüôt°—cªŸWÏTÇ ·›¹¬uzøòt°Ÿû«¿TgN‡{yOkcÔÓ!À~nníœ<:ØË۪窟¶¶W¸º5œ¼f:ØË¡ê‡Õï«w ·›ùHë[›·L‡û¹£z½:w:ØË©Õ ÕƒÓ!À~nh '/ŸörtõdõËêøá`3Ÿl¾:ìç¾êoÕÙÓ!À^Îný8Ü3ìçk­wO‡{9R=[=^žMvsUk8ù…é`?Wj]’8ðÁÖµê[§C€ýÜÖz˜õáé`/'W¬šös]k8yåt°—ÃÕÕoª†[€Í\ÔºuÓt°Ÿ{«Wªw w›9«z¹úît°Ÿ[ÃÉK§C€½W=]=ÕZpà3­ÓÃõÓ!À~¾_½X6ìåýÕkÕíÓ!À~¾Y½Y}l:ØËIÕóÕZŸÖ8pmk8ù¹é`/GUUÏU'·›¹ õîâÓ!À~îª^­Î™ÿ%˜ÿ³Çª¿V´6GÀÿ«Üâ‡QëaSIEND®B`‚src/BWidgets/examples/inc/ImageRadialMeter_d.svg000066400000000000000000000073471515163050000221330ustar00rootroot00000000000000 VU meter. Medidor VU image/svg+xml Openclipart VU meter. Medidor VU 2011-09-22T19:46:56 An VU meter for general purpose. Un medidor VU de uso general. https://openclipart.org/detail/161731/vu-meter.-medidor-vu-by-ehecatl1138 Ehecatl1138 electronic electronica measure medicion medida medir meter metering vu src/BWidgets/examples/inc/ImageRadialMeter_s.png000066400000000000000000000550551515163050000221360ustar00rootroot00000000000000‰PNG  IHDR¹%ú pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î<tEXtTitleVU meter. Medidor VU°!ötEXtAuthorEhecatl1138³Ï-JtEXtDescriptionAn VU meter for general purpose. Un medidor VU de uso general.1·è›!tEXtCreation Time2011-09-22T19:46:56T€hZPtEXtSourcehttps://openclipart.org/detail/161731/vu-meter.-medidor-vu-by-ehecatl1138ï›{]XtEXtCopyrightCC0 Public Domain Dedication http://creativecommons.org/publicdomain/zero/1.0/Æã½ù IDATxœìwœ%E½ö¿Ý}Âä¼³‘%³äœaÉ 9)YyA¯"1aˆ^ÓU1+ŠzÉ A Ë.° ,iYÒf6ÎNž9sN‡zÿèTݧû„™Yv€ó̧çtWWUÇzú—ª *¨ ‚ *¨ ‚ *¨ ‚ F¥X†8`"pž¢(§ !¶&lùÓª ‚ ¶6«ÿ÷,\¸ð¸Œ±äpÄGÔ Ý\Ty¿ˆ».§UPAcBˆÀox°€ÛTUýÚüùóׇËG¶êƒ:h˲v÷2* Š¢ iZÞâ‚ ¶>dR0MÓ41 Ó4±,+ÇÁ:EQÎZ°`Á rb^‹>øàƒ·7Ms.Ð>)$ Òé4555ÔÕÕQSSC*•BÓ4TUÝB—YA –e¡ë:CCCô÷÷300ÀÐÐÙl˲‘±,ëø_|qŽ› ‡=öØ£®ªªj.°ØÄ ª*étšúúzÚÚÚhkk£¹¹™ÚÚZR©ªªV¤† *ƒ°, Ó4¢··—Í›7ÓÑÑAWWèº&ˆ ‰DâÀyóæ­HÈ{Òéô— Cuu5---L™2…I“&ÑØØH2™Ä²,ïà'¦TPA[®ÄŸJ¥¨®®¦©©‰¶¶6Z[[Y³f ëׯ§··—\.'·Ýñ†aü¸$Éa¿ýö§ªêJ Ú­¸ªªŠööv¶Ûn;¦L™Bmm-Ùl–žžz{{D×õ(¥‚ *ØÊH&“¤Óiêêêhll¤¾¾!›7ofÅŠ¬Y³†žžž°!TUÝþüù‹=ÉAUÕsj¹âÆÆF&OžÌäÉ“©©©¡««‹µkײqãFúûûÉd2˜¦‰¢BT0†àJþ®äÐÜÜÌ„ ?~ vI¡º:í¥ !*QT0 ĵR‰"›Õc¼UU½~L÷m‘ä¥b„Œp/BA"¡ñƒo_ãmÛ¿~}aCGTEù‡õ?¾µë6Eî .ºQ”âA® \‰ŸGòG›q/Ô… Œ twõÒÝÛË„ñ㨪J/PÁ°á¶E5Á²„ôõó•k·‹kìr»t{T‡mŠ]™òâA^w=s¯EQoSTúaŒY|ñ+·ðÒ«¯S_WËkKÞâ†ë®äÊ+>6¬º”uÑ|jª1O=ÑÖ2Êgûþ†G Š‚(rÛòÖ¶ÈñË’ä‚îoTA—٢ƥPl.´ÓB/¯¢^Œ_ÿöOyfæÜ@Ú?ïù=­­MîóÆ>Mk‹]~Ƭ¹\ùé/qáÇϤºL BÙÜEúœ«Ð/>e廤ιŠÌãÿ€tEqT³§8mH±×}‰ÂWÕ]’&ŠIqí;ªL¤Z!#e£dx‘/R¸ ,,aßË’¤ˆ˜ ­ |tw÷qþ¹§rù¥çziuuµ#úÆ´´4yå«ÒiZ[[H%“e×™¸÷_§€þÙËPÞX†öäs=~g÷Á¼¶ã[€p?ª!’p?¶¶¤nï‹®?^ˆ³†Û·‹‚®Ì°ä «rš¢( ,ÜÆ/Ü<ŽaRWµ)bL&©®©¡®®6>’ˆÕ¾¾îºç6nÜÌÊÕkùÍ/¿ JùuŠ——bœý¯œqÐ>ðær¬S*Ñ´õÛQ±ŽVá#m¹¢ªayQˆÊA1[¢‹¢q…t’IØ)8׿I öMP¥—L QDå"•J2{öBzzú˜€ÜÀ’×ßA—úœÌ›ÿ—_|Ûm;ºä°Çn»xëÇ}(Ÿ¿ñfž›½ˆ3>zܰê³, KNg»lV'™JÒØP(S°&ODlìòʉάm'—]ÏhBéé…ŽN¨«EŒ·õNXw¥¬Z(€ª‚å|\U×¾pkÚ붆1²FTÈ+ eÚ :VÁ½XËr$®´"\’ÀßF2h~ðÉËÏóÖ{zúxåÕ·8ôýÉiË@¨ªª¢¦¦jØÇéä›ßû%{ì¶©TŠ—_YÊqÇÎ^{L+»N}ú!$þõ4Ö‘¢ô ÀË1>~æV“µYóО[€hkFY±1~úÕ—B"öÕßbðÞyǸ¨**Âò¼mãM º6ÝðÅ“¾‡ï­×‹E@îPØÎPÈSáBîÁéªMBØJ“eá'tO@1éyÌ|vGM?˜d29ê×zç=2m—íÑT•¹/¼D2™âЃ÷öqjkkùúW®fÍšõ(ŠÂ©'CsSƒìa+æ~{º?ø ¨*úeçaÕ×m w}I0Ùcú!öF6Gò¦£¼±k÷·ÂÙø¦°< ç#ªi¶—OU}éÚæ_Z)ÑʶÙKY¶·¢Xß !ü¯–Ûà$[¦ÌV¶«EQÔ€ÊñAƒišÌ_ø*Ÿýô…Ž45º˜4±·Þ^‰ª*ì¾ûN\~éÙ$‰+—3˜1ËŸ í‚sO¡­µyXu‰#„é!jkì7{kÚIïøŠn ’ ̦ƭf •C¤]çƒe TŹU–@SƒÁƒn9Ÿý ·ÇR$ ¯}‡÷GAÓEä8÷dýü¾d`Ç;8ëΆ-IXHµÂÅ+¯½É„ ã7®e‹xfŽ8|^[ò7u±qc'¯-y‹}öÞuDuær:Ë–¯ñ¶‡²ÙaŸ»öà“¨¯½ Š‚µÏngŸˆ6k>4Ö#Í ˆæF(Ó2\hÏÌEéèBY¿ ýã§cMhc«‰2®ïÁµ½9R„P|¥@ Šß-Á(ìÒ,çàþ–ÒÎ#ƒ  È*QDÐ[!)MîÁÝáInd¥t“DPLú Åœy‹9â°ý)0‰ùˆ1óÙ¬\µÃ4ÙgïÝFTŸª*¡qåçZ”ÁŒmYH%Q29´sC™DC47 š›-v˜õ¸¬q-£jÛ¡¹ Ò)´'ž‡ íö1Þc¸Lþ6W¥ß¾ì{oÛähÉÑ9‡y+‚ß>aÙÆá^˜—1`ôƒ<(6ÓK ùöŒ÷6lè`Ó¦.öØm'¶äש¡¾Ö»W==½£r¬ ù[ï³ÐEm5ärùF&!Pº{¡»E’XPDs#¢½Õ^&ŒCLhköû!”kÚöÊ>»’¸çQÔç^À:û#… mxžÏéKЮ÷‚÷=êŒL­(&1¸ˆueÊ¡ÓqÉ?a9$ÔñÍ8–V$)AVGügíJ#'Ã0x}é2–¾¹œ\Vçâ Oóö e†¸ïŸO°båZÆká¬Ó£½½uDÇ“ñÜì…|àžh‰-;óxC}­÷lº»ûжÓ0Éæt2™!²Ù¹œnÏU`Yd³9zzûÏúÍ·VÐÙÙ ØÏ£º*ªi¤ÓI’‰„3ëzMÕ¨ªJ¡HR‡ÒׇâºÀk«Qôœ·],P6u¦Nxí-?=•BL‡˜<1y<Ö6í­ CBÔT9õZ¨=X;NÇŒžj |°o™ =\U<÷f>&íáÚˆí²×·¢´“ «^Ž3ºñå~x¨C#ü vtt²øåש©®¢csg ¾ÿõ4ÕUi¾|ãÿcæ¬üãÎGøïÏ]6¢ãÉ8òðýinj`ãÆú2ì¸ý”Q«[FuM•7OȆ Ìzn>}}ôôôÓ×?@oï™L†Á̹œŽa˜Ej âÁ‡Ÿ*+MMuuµ4ÖTsCo¿'.Yõ.jo?{ŽÆœ&ºŽòö¼½ÂK5Uˆm'#¶›‚Ø~ ÖÔIJzû“¾‘LB} Êêõˆq-XÇ<âwlx~]5NQlñZQÝ<öorÀáp? a©aXAPአ@8ºƒ¬¥ª Xî5†|b.;ºáÝ4K½†Oí“'ã—œÁ+¯¼Éòk<õ×Ð fÏYÄÍß¾ŽTR㘣à‡ž »»‡––ÆaOÆo¾ÃÃΤ¯o€‰ÆñÝo^3ìº2lÚÜŦM]lêèbSG'özÇænï¹d³YþqÇãrþÃE6›¥««‡@63>þüB4`ï-w`èêÅKìmUAL™ˆµÛˆ]wD|äH”5ëÚ°N?ÑX=ªò{Wˆv¡8Qv? ûWu$gÛté·'·ÿR0=ÿ[X­ J Ñ–NÙ˜â¦IQ•RyPì‚-AIåó{¬ ¦eË¡Ø4EW·=£pcC `‘JªÔÖØÒEkKýˆ © 7v°|Åjúzûhh¨-Xfp0ÃÊUëY¹z«V­cå구ßÐA&“-Xn$P…WÜÆ~ÞòñZšH$í×#—ÕÑ ƒ¡¡,¦Yø¹¤>ë`B(mKCyãÔ7Þžp¾RާlÏÑo¸â=<“ TÕí4áFD:’³C Šâ|`iñú+ɽ GîÊ,‹dV)U ®ØãtÔ”Æwðî *.cN×T9ØÃu{޲Èf³ÎCÁÁ,Ëô¶íL&CCCÁ´`×iÛ288èm¿ñÖ29ÈÿnnÞÜÍo­`ÅŠwY¶â]V¬|—›:G|Ü)“Û™8±æÆzZšil¬£±±žêª4étŠêê*êj«©ªJ“®JQ_aýúM|êšïxÛߺéÓìêòBÌ`YLç·¯¯Ÿž¾j^_f{Ôí8•ÖŽ.´ž¾_ãˆ1o1ÚU7!öÙ ë =1÷Ý ª«Š—E¸FH°=•ŠP$"Pïà¹8}bµÛŒ”jÝv,{+¢„¢ÞŠ(R(,9øÁr‚ßUÅcI×Jã_²ë,Ë ›BUì¯]C} ›6{Û›6wÒÜXH ¦Lj£º*ÉæÎf=7Ÿ 7ñÚ’wxåµ·Ù¸qsYõišJ{{+S&Žcâ¤v&MÇäÉí´µ4ó™ë¾çåûØy'qìQ•Qsðz¬©™¦{Oêjmbi¨¯ÎÛ§šêƒO8•*|ãæÏ£=ö,ê­ÿ(ãܶ aÝxìH&±ØsúˆCö¶ƒ¶¶ MSèë`ÆM#ºU%@Â2†UŸÖщæÔ#êÐRÚÀ€—6Ö ==›äÓ³!™°‰â˜ƒ±¦ #ë üUÅn?n„¤+9(¶Ñù£éKŽPD­ÛwÉäç­(]¥ˆÞçûrq\8öpÃC] ÂÓ&T<ö,E…‰Bww÷ýó)–¯x—•«ÞåϽŸwÚ†£Ž<€K/:…¯~ó¹ð‚SøçÃ3øøù'‘N«„¿¤¥bõš Ìž³˜çæ¼Ä¼ù¯00˜)Z¦µ¥‰]wÙŽ]§mÇ´]¶cÚÎÛ²ýv“Ñb[cô¹54T{öµë6 Œ@úQA&㟻e™ÃªOëØŒêÔ#Æ· (ֹǣ¶êº” (ïn€µ›PÖ¬GY»¥«wØç=jÈ€:c.‰s!™À<|¬ÓŽÂ<ò@Hn'-Ùcao;ö©S–Gθ(¥H ¥"ÜÆå´QõVÈùýuéâ…š5ëùÖ÷‹aär9²Ù,ÙlŽÓOÎ篾Г ¤f S€Ð4•ºº*öÚsGöÚsGªªS¨*\vÑ©l?u"‹¿Îÿ»ì Ž;¦Q‡˜3ï%ž}îEž}~+V­+ZfÊ”ñL?b?ÜowØo7¦n3aX×FKsÙ¬mD\»vê%·.!ÌaÕ§nÚŒêÔcÕWÛuT§`Ç)ˆ§D¿ÞƒC¨+ס,_òö*”e³ eÕZз´‹Ù,êž…ÿ<‹h¨Ã<ùH¬ÓÅÚ÷麲AÑ#áïKüà÷ˆÖFÌO_ܱgË%†r½%«.ÊñVà.îźäg_" uœñÑ£±ˆa˜†ÎnÓ¶¬€Qf4ÔŠæÆZ.¾àäÈ}¯/]F6;Äõ×\Tr}}}üçéy<òïY<óìB²Ù\lÞt*ɾ{OãÅ—ß —³}ûçžq,×_sqyQÚ[ÉåìsYóè,¯.Ë4‡UŸº¡Õ©G4Ö•VGMì¶=b·í½&`ʲ5(KÞA]ò6êkï ,yÛî þ^¡£íïÁßBì¸ Æ§`s‚Ý7¤LËòm‘ìtî5k³æÃÔ‰˜ÂW%{85ÏÈ…ãÊõVjç±Þ (<TÌåã…Câ\¿ 5œùÑ£QUÇm©ø:–êˆO1¨£'>ÉxjÆ Üü?æåWßb\[3/Ï»ÓsÕE¡§§ÇžœÃCÌdæ³ Éæâƒx¶›:‘£Ž<€£Üc>ˆúúZλè‹Ì|n!sæ½Äõ×–NF¥¢}\³µæÝuÈC›— MÅ« lµb8õ©;PÜzëFtN$5Ä´mÓ¶Å:ÛÈFYµõÅ%¨‹– .x õõePf×p ,]Fê;·Â-¿Ç<ùHŒ‹NÃ:lŸ’CºƒÑÀ’ßÙ§XÂ2½-7öÇ'!Õ3üûê¶aw®Ìa 0[ž·"Šÿé]4‡\¿¯×ÕS'|†-†Î¢Å¯°ný&žxz.§|äˆ@ž ÿ|øxx³ž[„#Ò64Ôqô‘ûqÜÑqÜÑ1uêÄPÁAìÆSÏÌlr0 £ìñ‹a|{³7Ûùš5°»Ã_ê’gN·,“ἀʆpëi©VÅ ¦NÀœ:óL‡03¨‹ß@}áe´Ù/¡.x†¶\Œ†vÿh÷?Øy[Œ+ÏÅ8裸ݢ‘OH›D~<Ö˜ÔF–âPÒHP¥5Òp—éä^—~€“M NçáøwýÊp½ë„cf|{ ëÖÛ¼¿ßù/NýÈá!˜óÂ+üãÎóÀC3èˆ6(¶káôSâÌÓŽâÈÃö 5ôüó<ì½¼ßÛ7À’×ßaŸ½Fw€‘‰Ú¼cd†ìÅÖaFzªjp¤i!†Æ®nêĬ¥ñ½ S®©B¾æáû`~þRèë§z÷3}{…}q[äÐÊËIÝøc’?øæ%§c\qbB CÑ&É?Þçm !`S'ªiøÍþ+U•¶ëE/ž{¼{+ åÊÌW-ü-|qH8Ù\B^µL £Ù9&™Tùع'ð³_ÝÀ£ÏæG?ý+÷=4ƒ%¯/‹,ÓÚÚÈIÇÂ9gˉÇR”d|àî$“ Ïî0gÞKì»÷N£r-.&Mj <Øuë6ÑÖÚ0¬ºÂ# aÚ1ÿå “E‘ɵ­©ü:Fê¢%(’˜½÷'(½hOÎA}ržÝ©k”¡lîFýß¿‘üõ˜g‹ñ¹K°vÝ.¾€®“øÆ/ýòîÊÚ¨¯þÊKÍ WœéÅ>¨/¿¨FÔV#všêo—8o…Û¶£¦ÄsQp€ÙB³õ†߀âÓƒwr:©d@U;NÐs锿Hyå¶Ì ué…§ð³_ÝÃ0øÎ-ÌË3¾½…óÏ>ž³N;šCÞ34ÆA騭N³×;²`‘­ÊÌž÷2Ÿ½êÜ"¥ÊÃä ­‡¹výFöv¼3åBSC++>~?ÊÆNß0 69 ëlFmÖBïC}½%h{’Ê«Kéë³_ÚÌ¢¥aØç3¨3xä`±h’‘[U°ö†µï4Œ/GYþ.ÚCÏ ><uñÒÑ; ÓD{d&Ú#3±Ž=ã†Ë± u?« Ú(„bŸŸRŽ< ªÙúo¾Ž˜:!biˆŠeŠBI}+¶‡h5Ã=€ÿ ,!øÆW¯ ¶¦Š_zƒÛn˜Ÿÿè:ž›½˜Uk6ðä#¿dÍ»8åìë8ë£ÓihÝðÕ+×ñÇ¿>ÄŸn˜îîèØþÏ\y_¾á2ÚÇÉã%ŽÎ }Ä!{ñ‹_ßÀ†¼³| ;n?yTê›D/ùøÉTU¥˜8¡÷Û•áž{MušÏ_ž8·¼º¬=wbhõãBÙ܃hoöù Jwê«þÖQû<±ý$Œë.‚ë.BYµíÁhw?ŽòúòQ;'uÆ|R3æcw0ÆW¯ÄÚwZ‘qç+“Daաؾb&EQJŸe{8ÞŠƒößÍ»„©S&Ð×o‡ÐΘµˆÓO=UUØnêöÞc'ž}þE>zÊ‘õ”‹gg/æW¿»—Gþý|ž¤P[SM6—óÆ7°,+D £‡#Ý; ËÏžûò¨’À¯~ú…Q­oTP]…˜òÞvhr¡>»¤ž£ÖQ”\VL€qí…×^ˆ²t9ÚÝÿA»ëq” åõ‡‰=·§_ õô XG€ñíÏbí9<TêÔ«Aë€Ý1nº ±óÔÀþR¥Ä9¨á.J‰½Ž|Fó·g=ÿ"‡¸ë6t0eâ8oÿ”ÉãX·as¨Žò—Ùs_攳¯ç¤3®ã¡= † ã[¹é‹Ÿà­—îâ‚süI]ï¼÷ 2CC#>vÔÒÚÚÀ.;ùÚÌž÷Ê9NeñuÖBï~‹ mˆ·V=b×í0¾ñ)²/ßCîÎbžvˆ‹)êÌ…¤Ž»ŠäÕ7£¬ÝèÓøŸë1n¸,þ¼*CÏ}õ^rÏü ëHÿÇuìæ+QþÀyÊÃDP(*Zr_öÒ+o1{Þ+\xÁ‰€`(“%™Ò¼ý©TC×óÊ•ºÌžû2'Ÿu=ÇŸv-Ï<»(pûí³ ¼õ+¼õÒ]|í‹—ÓÜ\ÏeùÑ“=½<üè³e¯œåðC÷òŽ5{îË[ì8•Å^Ô™>9XÇ0ò:5넃Ñÿòm²/Ý…ñO!¶ ǵ –…v×㤹„Äw~ýXî†Øs‡’ÎK´6`|é(k6 ¬^ç§GHõQ‹ì­"Ûó°æ­È?Xü=xëí5ÜqÏ|ñóSSc[X›šêéíõ{éuvõrèA»—wsÇŸœÇÍ?¾, ¤§R Î9ã®ý¯óØ?B¿;êˆ}Ùa»I,[aÞ|ûÿ=&FÓ߇…‹–rÄa{sø!{/PÁ°¡¬ë@YæVkÛF¢½ãsb\ó1Ô™‹Hüþ>Ô§æl^ŽL–Ä/î@»ç Œ›®Ä¼àDb;µäôÀxê³/ÚÞ˜Éãýs,Á[Gaµ9”Žü¼o/[Ãmÿ×_û1Ƶ5zùvßu;æ/ZÂᇔzÜ IDATîN.g°ðÅ7øîׯ Õì§g.ä[7ÿ™ù _¤§R .¿ènüüÅl3¥=¶E‹.8‘ïýè¯Ì˜µÕk6HeFžž‚”2‚©‚‚[É>ê¬Eh³aMß-r¿UëØÈ{Ê;kHüî>´»þ1t¥@Y×Aòš[ÐþüOŒ_µw~ÀœúÔ<’ßÿÖÞ;£¬ßŒ²l úŸ¾ )r¯³˜½B³l{ÓÚ‰øf#OÜñ{cê†É~ö&OnçžûŸÆ4Mj«Ó|úÿÎY§MçS×Þ‚®çxuÉ;œrâ!LßL1rxóíÕ|û·qÿƒ3é©T‚óÎ:–¯}ér¶÷D¾Â7ë—œÂ~ò7LÓ²¿ó1¾ò…K ßÑ Æ<Ä´©˜Ó¦b^u–›²e·ãdô}ý¦+Hüí_h¿½eýð ˜ê¢¥¤Nü æg¢å“à 1¨¬Z²n¹?}eS¢µ±ã6NwrÿKÔ‚á eAűJÞþ€+Àž åsŸ=§_–$áÚÛÇ5qÛo¿Â¼ù¯rè»qô‘{ãëSÞQ¼µ®®>~òË»øåoï%—óãÿS©—~ü#|å —0yÒ¸¼r…0yRG¹/OÏ´m·ßñ_¾áâQ Q­àC„ÆZŒk.ÀøÔ9hÌ ñÓ ¼³¦x¹(˜Ú@}p&Æ7¯Â¼àßþ=Úƒ3;mƒþO#ŽÜÇÉ­òG!ÊîPÃêx] xžš¢°çn; „ܣ̮ç±'çñÂ‚×øöMŸ°{g""Ût6§óëß?ÀözzýnºÉd‚+/?/|îãLšØæ¿L\váÉ9¬X¹žçf¿Âô÷Ø8É|L`^p"æ9ÇÙ$ñ¿w ¼±rXU);I^ýC´¿<ŒºÀV¡•·W£ýs&Ö‰‡F*±„íQÑ\™òâÌúç…@‡ø ¬_¿™ÿòÿXüÒ›d2Ž9roN8f?û¢PÓé§ÎÍß¼Šwœ"Õ=<œuÚ45ÖÑÝÓØÒÃQ‡WŒ†Œ*ÖùÇ“;ï8Ô‡Ÿ%qómÖ$Ôù’Á½*ù•OÄvh+Å é¢X¸B^œƒ,rDÍ¥Îç4¼@Xœ¨¯«fí:_»å§ÿ`(— ”[¿q3—\ù=>ö‰oˆa·iÛòàßçžÛ¿ÅÎ;NŽ8^ùKU:Éùgãã‡fÑÛ70*uW–ÊÂV:c:¹ÙBÿÓ×Fì[½¡ ¢JveÊ¿ár@ü@=ÃóXF]]5—|̷ܯ~w#úë£Þñþò÷ÇØÿÈ«¸ÿáY^ž‰Z¹õ'ŸgÁÌßñ‘ãËÒ­\v¡=gbMuš3O;’þþ±9jïs¨ ÖG‘›ýGŒïÆéwR>”åkIýiÔQ¾\”5Àl…\ѪGÔdÃÎsÚGãÁGžåÕ%ïð«ßÝÏ^{lË~òæ¾ðšg$I§’Üpíùü÷µPëM¾2zDåâ ýw᯿û2§œx õnߎÑ?NJ`~ê,ÛÈøË»Ð~û€¿PzúI^ù}ÌÿÌÅøÑµPëwÔ*G­(f”ŒŒ”I!Nì(nІ½­ª ×_}žçÈ å¸èŠï±`Ñ^Îé‡ïÅ Ïüš¯éRjkÒÄ‹P£³|ìœcœ9Æ€ZY>KS-Æ×¯ ÷ìo±Î˜Îp Ýý©éŸFÿšW¯ëÊ,è$GGF¹2·ŠZábï=vàƒvó¶Ý pšëøÑw?Å¿ïû!»ì´e& ­ ‚±±Ãdô?Ý„~ï;–ß)OY½ä™_Dûõ}PF[-ÅYÒÐô¥UÎ=P¬Àâ¡ÏáÅ—Þ ¤××ÕòÜ~Æ6“ÛF<€f¼ß`½/¹g‹vÛ#$¾{ ÅpžÝ ñÍ? >ÿ2µ­“JR+d•".¤Z!„=^”·"^’ˆŸ‚éÝ=}|ã{áÇ¿¸›l6¨gõõðäŒ1õT–Êò!X’æ•g ¶ŸÄp þgÍ]X0O˜ u¼ŠT+ŠIeH¯¼ºœ/Üô{¼èwâ±0iB«·ýí[þFçX˜ý¨‚ ¶´;Ÿ@y}…ŸPŽÍ…wƵµ9@°m—çàft£âäÊü‚,èoëºÁíw<Á-?»“.g4¦ºÚj¾ûµOð‹ÿù,_û’?ŸCgW·üô.Fľ•¥²¼_—A´›oÇ…˜ÔFîùß`v8¥âÕIÊ"‡BÃÄT+ÜÂå©~ç/\Ê“3yåvßu[þôëÿ攓§žxGO÷C–ÿ—ñêëË ßÄÊRY>€Kâçw¡lðGÆ6¾ùIÄ6íè·}ý·_@´ÔSbÊ8Ö7ÎùÞŠ8)8´rÉ£O{Hè‚a÷]§¢( š¦röéGðÃï\ÁÄöæ@¾ï|õ2oPWÃ0¹ñë`K>„ÊRYÆÚ¢¬Zö›qa´+ÖÙÓ½ýÖ¹G£?÷k¬ãㇽ³ŽÝ¿ Ô0ì8‡¨Bqͼ ! +ï÷¯P€æ¦zöÞs{¾ñ¥‹¹ôcǑԴ¼<ÓvšÌ'.>É«æ³/óà#sy*Keù /‰oÝ‚ù½«üù^œ…qMw|óûWEÎü-ŽÙ·drˆŠo#v˜¸°jQÜðÏŠ7\s»ì4)”Nà÷+ÿ}>­RHéßø#ƒ™-3¶ã‡e™1k1¼ý1Ç\8ï“3ñÇÛc雫Áóó^ã·?Æ[﬉-Ó×?ÈoŒûzn«_ëûyQ潆úðó¸°Î?±ÿÎÑù0?u:ú£? ÆEh*Ötwèƒx„m qê”à­ˆ;âɽy=qÑ ì³çö^–¿þß“è9sk?»÷írÞGN%ynîV¯Þ›ï©g³qS7‡¸+ÓvšRÒ³ ä×ú¾^ªÒ˜×ž‹þÜ­¿»1©­´r5U·^ñ«ÏczÊR+Š9Fì­¥{ƪü7ÆžýüI·£ß,MSøéÍW‘J%¸úªÓ˜?ãç$“êxzïÏ¥¹©–“O8!÷?ü|l¾»î·{Á^tÁ1¡}”pJÌWYŠ-bR ÖÉ—]κàÌÏzÑÛtT*¹ ŸŽ;ÜÊÅΓäÉX¥óT<‚°óÅ_è¡îÂÒ~ËÄ îD3Å/¸‚x\tþÑ<øè\îþç³\÷™3òöeu~ì{Î3'ú~Ç=ƒ09T°µQH¶ä® P!y Z!–¡þùå¼Ér9È1'Nh‰÷{üûÉÙaßϲÛ.“©«­bé[ïÒÕ=@C}5ûÝ稯«*XOcň$r(¦D3À& ?ÎÁµ'(N<ƒb«¸á„³íy/Dt´d£‹ÿºâ$r9MS9ë£Ì»û´)¼ðô-üü×ðØS‹Y¾Ò¶1l3¥‹ÏŸÎç?sS§Tì c Ål–e¡ªª×†ãºI”â¼îâƒëÊTT7˜Iõd|„ã!®Häì÷ú`TÈb´qÊ ûrÊ ûJ)…¿øÚ¹å[sË·.ŽÉQ‘ÆÜIm¢÷å·ã@¨ z+äJâòø’ƒÂí?áªR÷m|uÁm°÷É ˜§‚ *}„=QH„ Èp]•rzôˆÔšÓŽw&BÚ™Ü}®Äàr€‚‚°*.Ì * Š}ÌÃ&BÒCAµBÞ–E|9Æ\ñöÚùQÁ!¿¬-1ØyÝ‚rlCE¥¨ ‚á¡rˆÚŽjsEƒ T5~€ê`…Ž×ÁQ Ì(Å[QLpQP­ˆ;`E­ˆÇHÈ@ÞŸGÏW ‘”ržaÄ5Äp²œ/\F ¬+y$ŽuÉ/<^øü+da£›CÔoT¹HÉÁí’­ªjE­(åB12ˆ"(¦,[€\Šg©ÈkôBÈON“Êx¿¾ºáïŸoidQ!ŠÂˆzQˆµ9¸® úEýðI¥êûQ :†ˆÜnð6³G牭[&‹HÕ£ˆÍ!ÊfÓ@£H"üæ§ûÛršG"ü @>ý QØ(Õ[!Ç7Dµs( V¸…J=ð‡£A2DAôz1Èu&˜bçXù’Bþ¾ØÆŸ.çÉ/'bö;õ9údÉBVC*DQ: ٮXT­ÈpÑÒÇIr(…bh„dnìQDÈCie‚ç:nŒÍ¢A’â¾ürZp;HîvT™82q% —,†Ct’(UrpãîG¬ZáŠQ‹(rP>`丑ôübÒA1„×½ü„óD•s~‹'êÜò®¡²%„‰!°N°±G5ôÀ/iÒºÊÉ'Uˆ(Ü×R‰yˆ4¢(u°—B¤à"v˜8ù!–$‚~@¸¡‹¤= ¢¡FKöºå­ç7zË’ÒË$‹(‚@DŸw©ˆ"¢:ùDnäöÌgÑDàí“ËOþº{nŽúK&’D&“¡4á"|½Q*¨‹‚ÞŠ¨JÝuy;›3øõ_fóÙO6ÂSßz(F …Ô†’®°éÃoø. H„@LºG(VPJ(r¬RláëtID¨D„û«ªÁm‚ JûUÕ'Œ¼t™@ò"Š4|Õ×ûüFá^oI„¯÷ý„Çf¼Á²•› JùÏ2~4¨¢Þ À™´&xpe·Þ6›lVçúOO/ýjƆC ù_hÿžÈ [áHn/WŸ\2°,Lóö9e¬`y¿ÎI#,µ„Î5îú¢çð…‡ø†êϪH¤ 5|§Ñ«üö¯Øç—‘ó¸Ä¤† (LÕŽb$!ß“÷I<òÄë|õašñÏ3L€®A2j?Q+d•¢Õâÿ7ŸÁŒÎW¯;vÌߨrH¡)! H„`IÛ €·á7~Kxå\È' G²j"__©Ï4Vb ¦!F‘1 _µ Á«ö +“‚]Æò$‹¼:œ¯¡/Qˆ9ù‹EøïµyA;Jøëïò]¾Ì÷~þ–Uº¾(“ƒ;yU˜U{7µ\Rˆ²%¾âV4!È8@Nã7-°¬H’ˆKË#”F"ÉBrw’ ¢ K áíb6¹1ËĠƀ‚&­Ûd¡HÄ+›—$EQ°¬ô!M„UŽB$1V âÏw,à'¿}¶¤wœä7E,9ØA,Xˆîzð%²Yï~é$‰RÆ‚Øò)¸ûe©  ÄJv6M+ÐÈMÓV¼tÌcˆÁÂ4E@âÈ;–$YDI0®Ý! ý” ZÄ©îo ‘)!B¥ð¶D Z°Á{Û2aò¨hZQøee‚ð‰kx$1Ö¤!·Þ6—[o›SV¥;?Î!l „µÂ¹”ÀRŽzðÏÇ–°~S?ÿûÝÓi¨O—|[… pq¤gKp¿·î6bIBp¼×ØM?iæï7M+2-,=˜¦DÂ'‘8µ& Z„®³Ðý"FÈð×8ÏÐè†Þ“GQR‚¦Ù’„K Þ¯ªÒÜ2𦢍 š$ MSì¹Yåc UQ±,"/IåðFM÷I¢˜árk’„n˜|ý‡OðàcK†U>,Aøï‰\_Ѿ2QÈQ IÌY°’ó¯ú;¿ýÑÙl?µyX2’ Ù‚_â /K¦i¾þ¦iI„ào»ß4ó Á´|ˆª/,]D©²ªSÈEe\-„Hu"ÆÆàAX…p%ˆ D : ÛoÔQD iÎzˆäüš¦¢j6¸ùóUU" !B†ÍHI¢°árk©=}C\󕇘¿xMÙeÃ?®«¶‹‚APqãGʿŰbuÿôÿqë-grà>“K¾‘¢˜´ 7RHÁñ}{eEH¦…aÈ„à„aä“A0¯%GˆhBªHž]Â@œz!_³ðç¸û~O<‚¶Ã!‘‰2:¢@](Òà£ÈAÓ -7‘P}bÑ¢êUQ+pì’HB¸¢v$¶&A¬\ÓÍÝøO–­êVù°ÄTó㙠Εé ‹墻wˆO^w/7õ$N?i·aÕQ*Ê‘d"Êà—×8…ôÅ7’pÖ )Ýmô.!±éf@jK2Y¸#÷Èçã¯Jòõ„í'¥Ø ßî KQ.Ì({CžRúu¸ÜˆeB½»žH8Ûš w[Þ§jªD6 š$x’°¯E8¼PXÕx¯ÔŒy‹VsíW¦§ohÔê”?þQm¼ ARÓ´˜ÆV>Qds7|ëQ^xq5߸áx’[ÀPYŠ´4Ô… Œ!ãa)¸ Ü 5öຉaÉÁ0ÌÈüù„{l+ï¢lab Ág¶7”òó ’’ô@rˆ1†írÐlu#Üè ÍK—‰"‘°ÉÀ]÷Ó5o]ÕTšDšŠeÅ“„Ý`B‘œö•³5¤!»w1·ür&†QxVìRêr1lµB6DFé0)âξ̫¯¯çß?©“›†UG„(mçqzŸLd .ŠŽ7ð¨¾:`¶ûÕ7 Ó´ÐuŸdrˆ[’(d»DÐHT%<©AR1‚C¾§"_r(íùÉ¢§ýï±{‚!5HE _ø°d ‘BB³~B‹&w] ¥›N¹0ùË>®P„ª€PA؆KK8j’Šª:ïNPŠ DŒ2Atõd¸ñ;ñÌìå£R_”Z!«aôV¨ªˆŽ )Èxõœqù߹妓8ùØG\_œÄ 7а¡NvÚ’D ò=Ôˆ ‰LGÐ_Ã0ѽ_S"·Œ’&òU’ 9äŸ_”ÔP!DÐ[áÞ 19þF½(aƒ¤›VÈ[QHzð=AûƒK…ÉÁnèI)-™´×ý4dRsHÂ!”„é•7-Ë—&,Ÿœ„&P…‚’ \2K[R‚xùõ \÷µ±zmψë’!ŸŸªå­€’ƒ[8jTÚÑ ‰¾þ,×|õ.¿`?¾|íQÃV3âÄä(5"*&!è=A‰Ày ]7LLÃoìºî’ƒM ºn$ W½p×]2 –òùÈÒLÀuº¯ÑK(ÛTäû¼gÑÏ1ü‚G‘HÑ’¡0f9ä9ÊoŒôÉ"¬.Ø?š’IÍKK&4º´ž0r S%i LÏ~¡’Hø®aMSšŠ*„£j¸$a/(Š$E¸÷.èÕ‰BÁí÷,濘‰>B5"ªn²fPò¤6.\u"Jì- BÁmw.d΂•üø›§°û.ãÊ.ï¯Ódbc‚Ùø'ò®,膉¡û]×}2Ð 3ï×0| #NåÈód„\ùQ’:äI@ÁÎXa×eØ;&Ðbˆ5L”$‚шRĤ+U„â\×cT\ƒoŒTbÕWJð À' ûW•ÖýßDBÅÈÄL¨˜¦ê‘ŽeÙ_S×bß#œþžT1¡acÇ7Ýò$O=ûÎð+)™´¢¼a$Â…ÝEfyß–ÀÒ·;8ë“ÿàêOÌ5W‚¦—"âˆA^‹Þ²´åf K^C×¥m'-— “‚Aù$V)ò=RÀ“¤ö„#$]é! B¾?@Ñ!éÃð„i%ø…”‰ÀM¸ ©au#ϵ){.$¯…´7„ÕŸBHj¤’ › î¶FÒðIÂ0œ2¦Š™ÐvÔ¡y÷SÓšP=W­¢( W3Ê‘ }êM¾vËSt÷Žž7"²Ù ¬R”¤VÈÆÈ-%9ÈÐu“Ÿÿa3ç¬àG_ÿ;m×›·1Ä©áE¹‘º’‚Ü sº/)¸DÿkxÄÓ€4!ÛtÝ—ò]šþyY1Ò‚Â6Gz ÿ>„ï¼].¢¼îv`ùýQò#ßÅ)¥ÅÄ8¸öÙîG )A%•2I&4R);]OJ$á‡a˜Ža‘LjX¦°¥S`9¶ ËT{hªŠpÕ R3ÛýY®¢£s¯Þò$OÌ|{x¦ Œš·ÂÕEäA(ß ¼øê:N¿ìïÜð_GðÉí›'E”C ùÒ‚oW Ã’BN7ÈåL§ÑËÛ¦G9G’Èé!‰A—¤3ßæ`ºjCŒ* ÙÈïhå®»Zp¾¤ºaàHĶÅEÁ(E†¢(ŽÝÂm€°¼â‚rPܪCqž(ìk¡(ćR{Þ‹ ºáªQj…KÉœA*©‘Ò¤’9‡ôd‚TJÃ0L’††™Ô0­„ýn$M’¦†•Ô<õ"‘ð¥¡Yh¨¸j†+E¨jÐQ*A<øøR¾õã†ÛÆÝ‰« ªn+Y*«qâÇh#3¤ó½Ÿ?þÆw¾x<ì=Ñ;¥C8~À•‚¶IMp!§›9d³Î¶nK 2)ØÒC˜`‚ê„LHÁ°j¹o†ä=‰‰cp¯ÛMSáüSU@ÕH(ªÔ’·[)ªâ‹ÆªÓŠíƨyÄ0ìãYX–‰éŒ/a9iB,w¤*¯›¹å„™›˜ö×Ôñùy’¦mƒP‚*GTŸ /X* %%RDN–4RºAÊ!=©¡§LtÃ^O¥†FÊ41“ LKs\ØVBîح"„f“¤s½špã"@-‹ –¯êâÛ?9j.ÊRÕ~]R(Y­p m‰8‡rðê9÷Ê;9çÔÝøÊµÓik©qŽ/Ÿ‡lx”Õ?xÉß=ßô±×Ø]Rp¤ƒlÎ —3Èæ|B°Ó‚’C”í!,-˜Qö¹×¥L^ãsâÝ]SIh û«ªjNã²}÷É„F*™"JJ¦I%5‰ÉD‚¤–°uõd‚”¦9>~Íîm(t#‰ ¼ûkŸ›iÉ‘aßKÓ@Ïä ¡lŽœž#›ÓÉ:ºaØ„h™X–­ZY–…e–@Q}c¦L¾‘R’rŒ–’"ì¥H&Ur ™¤’&)ÝV%RºI:•@Oj·"á¨{ÎsI9R\R²4Gmˆ$ê~†1IDATlÏE"¶ôà¢‚È éüþï ¹õ¶ÈéføNoqÈ„P¨×µ‹Èѧãlï•j!CÁ}ÿZÂ3ßáúOÆ¥çííY‘£ˆA ÛÂÆC™²9Ãküqë.ydsFHðë–ÝÁ†pü‚@`aYι[8= $TMK )ö1•JS“NS]UEuUšêTŠt*E*•"N’Ôh MQÐ4Í{nªª¢)ªã†“% WJˆ!„ø‡áB}߸m0Å!cÓS— aa&ºi’ËåÈds  1˜ÉÊ0˜Í’Íæ0,Óq˜–…jZûDØÝéÆBät7®ÁP=›B.©’ÒM‡$4RI“´¡¡;a˜&zÒÄ0ÎGD#m%luÏÒ°¬„}}IWµP [z° áJ®’OO?·œoþxkÖõŽvdgCÜäU±óV„ ",v¼’ƒŒž¾!¾õ“Üóðk|ㆣ9hŸIE‰!hlô½ žŠ5µÁ'lÖÖiÁÉ“owª®” »-}’rÎÑrí š–´ƒu4T2IU:MMUµÕÕT§ÓÔÖTSS•&J‘Ô’^䟦Ù_KM±ÅmÅQ¢Û¹R6ÄÂy4Âv äÎÛjåK†AN×É eÈ 18”a` CÿP†¡¡,º©cš&†iØ’Ÿª&PÓ! Óód$¶ªà:%“¹„I*åÿ¦t´£RØ¿º‘ rƒÓLŒTÂ!p—\ò³l5 ‰$„m•´mb® ¾ß2A,}§ƒïüt&s¬'0"„Ûo”7²$o…ûÅ(ï•Z…WߨÀŸº›#Ú†/]s${ì2„mé®x.‰ò†Ôx};‚"}hÈ_Ïe£%‡9„bdw¥å¸&…côK¨IÒI[ܯ©®¢¾¶–ºšZjk¨©©¦:•vôçš–°‰Cµ£ã‚’Æ<)DNów ¡‘LäÛŒl/#q™†a’Õu2CCô Ò70@Oÿ™A²¹º¡cZö3TU[MÔT]S¥HÍóBŽëÒ04Œ¤†¡›¶¡ÛRB@õ tvKxªž°,Çð‚´/ÊÁ_T,[õÖmìç×™Ï]¿†iŽn0Óp!ßÿ¸^×2JòVŒ¥ÑÅs/¬âùËïàäcwäú«c›Iõyƒllt‡YWUÂPÖ]×}uBÊã×რŒapc„ª¦‘N%H'RÔTWÓX_Gc}=uuÔTWÙªA2A2‘DÓòI`,Þ÷‘ P¥¢‘Ð4RIp%[º²ÐuÝÐÉæt††²ôÒÓÛGw_/ýƒduÝÈ9ÏÚÀ0ܸ[:H&L/®Á5@ê) Ý0i!áH$n?©S×éÍ O}"áb]ÕBטlµ¢«'Ãmw.æ/w/&›3ó®{,@Ö \oE ªòè´ï¥·¢äszô©·øÏÌw8ûäiü×eÒÜXåƒìUðº½>”ÕÊ:¤àüeu;_Ö' —(\rpëóC¤ýNX.!T§’¤ÓU4ÖÖÑÜÔ@sCõ55TU¥I%’¤R Û¨¸m9c ²äá¾w‰D‚j‘¶ÕFÓbœc»ÊÙjHwo/=Ýôôõ3˜Í`è:ºî†¼[ ݰc’†#=F*Š‚õm6±›R§7 ¿s[BšCÄ!ìvbÄ`Æâð‡ÿ[Dÿ@nëÝÌŽwpÓÞWÞŠ8„ËÜõÐk<øøRÎ:y7>~æ47UTO2ÈÚÒÁDCCF€0ÂDvaº¤`[îmûA*™¢:]MS]=­MM´45RW[CU*M:eKªâúÆ·Î}{?Á‹•T§_DU*I½¨¥¥Ñd|k CÙ,ý6÷ô°¹§‹žÞ>›( ÃïA›zÒ–ýìR®§B ¨¶›ÙW)ü%IÜëÞÛ—å¾G_çÐÛŸµÏ=¢½Œ…@”ZQ’ä CV+ÆÂEɃ¼2¸ãŸ¯pÏ#¯qìáÛqΩӘ0®Î'‡†²— †Ü4= E¤†€ÄàK š’ ®ºŠºÚ:Úš[hon¢¡®Žêª*ªRITUó*9ü ª M£ºªŠÆú:ÚZšO_ÿ»:éèì¤w Ÿ¬ž#› ¦S¦†iºîË„äV–lÞp€–ïÆÁÞ‹›6ðàãoòï§ßb(TÆ ‚lŒ,Y­×Ãn̰Šñ^#ê˜QçË<6ã-æmößk<§¿3S'7ÉèbÈ é9„%_ZpÉÁÐ-L!ÐúšjZ›ß6޶¦&GJH‘дXCn£¯ï†–@«Ò¨N§i¬«§­¹™Þöñlêêd}GÝ}½dõ,Ùœ“ÃÔBHø’ƒå“B€¤÷}æ~fÌ^Á³–cV^ûˆ{îc0¢ ä™%{+Â=·¢ò^¢Tb-Ëbþâµ¼ðâ»ì¸]3‡0™·k&«›žÔà†l!mO¨ŠJ]u5­MLlϸ–fêjjH%“hcPÊú°À}OSªV[]EsC=ã[[Ù¸¹“µéêí!—òúÙ©®”à Íg±ôíMÌ]ô.KÞÜ8n¢È`k„¢ $ãPÐæ ÔŒeDCxý­e›ykÙfjªì1m»îØJ2©†ÈA÷â²9ß¾`YP•LÓÒÔÄäö Œok¥¡®ŽT"iÇlµ+¯ ÷½­©®¦*¦¡®ŽÖ–fÞݰžµ7ÒÛ×ëIù#{Ë3ÁPÖ`åëyñ•õtvyõ»‹üvžL[› Š!Φ袠Ía,KqRC¡u!ý9æ.\ÃÜ…«ßV˶Û4ÒÖ\íÙ%üHÛx¥ ÒT×Àäñã™2~Í T§R(šV!…1 —$j’¨¯ª¦±¶ž•kßec×ft#’üt:»3¬^ÛËŠÕ=˜V¾Š D’@A„±5 #ì¥Ð4 Ó4cÛy¤+Óý•{enMWf!•¢ÐoA¸Ûk7ô±vCUUí-µ45¦QUÅë/‘P´5·²ý”)LnO}mÝ/a  *BQìPë†ú:Ré5UU¤V'Y½a=¹œOÙœAOo–Múr±ÝdÑ\ÞŽÃX’¢\˜%»2å²·bkØJ!†¨ôbÄ ¯ê¬ìF¬¤Sõu)êjÒ45ÖÐÞÚÆø¶6ê*Ä𾆢(¤SIš7ÐJGw™ Ý}Yútsȱa•A®‚F{wûý =È(Ù[F)FÉ÷åJ ÅÔŠbù\ûCGg†æ^¤VERK ·Ô×ÕR•ö=Œ}aG\fs:}ƒttv²lÕZV®ÙÄÆÎÞ@hs©4ܸß/ÒCœ§¢lµ"lxÙZjE©¶÷w8„÷ÛÕ;ÀËKW°zíf&oaÛI™ØÞJc}Ý!*™²;Ù(qž*ØpŸ¯®d²Côô²¾£“•k׳v}›»{Éd³!bÈÿêÇ}˜ŠÙÆ*âÚ¸›&·‹ŽŽŽ±Uˆ€J• í‹ûuaš&™ŒI6›£«§—•ïn¢¥©žIímLno¥­¥‰ºÛà•N&½Q«Æò òA„ÛÔžgÄ “Í10˜¡³»µ7ñî†6uuÓ×?ÈP6gZS¢Z&ŠbjET]áýQÛï%dWf¡óÓáÓ[Jj(ô›·Ž=-ÞàP–L6KWO/k7lbiM ÍõLhm¦½­…Ö¦Ÿ(RI’É„}ï "YŒ2\2pU†œn0”Í1˜¢»· ]¬Û´™Ž®nzûÊ’Ó ¦ôêŠiÔaÄ¥ÇÕ1¶”Lá†äº:Âl÷^¡\©AÞÛÐË$†ð1…€œenÔ7¡£«›Õë6RS¦¡¶†æÆÚšiil ±¡ŽÚª*ªÒ)‡,’¡^—•>¥À%ûÇ·ds9†²9ú3tõôÑÑÕͦκzúè$3”%«ëÞX.âìg…$y½‰!œ,&Ýó#£Ì±’ƒ[pkIqú^Üo9¶…bäQì\Ü:²9û«Õ70@Gg©õ›H§ST§RÔÔTÑT_OkS-M 45ØvŠTÒ–*RÉ$É„ÝGÀªÍÇXýòlIÈ$`¯ »w­a ëöÀ0Y]·Õ…ž>6wõ°¹»×î•94ÄÐPŽ¡\]7¼±7#Ó 5r…$ˆ¢×¸•¥ŠðyË[QЧb¬‘Cø¼JU+J9^±ó,ËÀ0 ‡²tcù˜JtN'I'“TW¥©­®¢¾®–ƺZêk©¯­¡®¦Úé)©ùã=jöâŽò”÷Þ‡jJ¸ñ»›¶4àt7M Ý gds:ƒ™!zû¼¥§>GMÊæœ`ÌÀàÈ%Kèë•^ )Œ„%¨ba ±Þ Îz%v¼—(öU/F¥ÔQÊñ ž£]ЃÀ+ “µ»ñªŽš–L&H%žôPNQW[C]m5uÕÕÔTWQ[]EMµ­’$>aøs:سHk²ÑX)6œŸa¸Ä"‚ÿŠßajnº‹;¨ŠizCÆåtÃ*.Ë@&ãŒ5èÛ r:9Oz00LÃxwäjn9RD”šPªJ1–T‹pûv!·q‘̺ã˜ekHq¶ƒbÒCÔùÆIqÇ ܺLáŽp¤3è›Ù¹ìQ]H8ì;äáH5ÕiªR)džaÛ1ªR)R©¤7¢´¦ÈóA¨9*Å Þæ‰ðthò9cÏŠ%ükÒ¼›BÈíXþº;ÿ†Cöಶ}Àµd†ìfíq#muÀnô6YØCúèΘ þ³È7&Žæó‰zÇ 5v·ÌûIš¯IŽsˆCAoEœ;sK“C±/y¹„0R)b44°…ýÍæô@>EEqfxr‡”W}éAu'›u§M§’ž=ßXÖ¶iØÄ“ ¡ùÏÓª|1UdkÁ}ŽaÍ ¨ZábköÊ,Grˆ#‹r¥†±ö²Êˆ2æÉé–ÎhDPz°„p‰aÝ"x¿ P—×åw¥\é`kJáó.dŒ„aN¤>Ðhc8jE)¿¥Ôý~G‘”T®‚’ Â]—e„Kï–¬”!–âT‹ÿßÞÙü6ÑÜqüã·õÚ‰ã€I¢@$RÁ¡·*D9µ¨ôBO•A{ìz޽”+´‡çÀ‘öXÑp©8T*Q‰p£$f½±½~é!wÏ®wýû)ó‘F³;;;»³Þß×󾓤_[AÔêÆ¤ó3 “.žöã‡úl£„.Ž®:”ö$PÅAgß¡feªLSµ"È÷KkäVÞ0aAÛaö¿UzÛ^ôûAñFñ>D©b„õaòÕ µ­!rµz—‰“9D˜_Þö{ä{×=5Lç ÿÈÿ”ANW #Ó‚®VªZ¡®_ï'§‘aÝ5Ô6¹›Uõå8~éMÛg˜Nt†#ÂÄÈÌ–´­ðý¦‰~CúÞ¨DB”NdTbPù–! ãÃï_5¨Ê(‡él§ÙëÑjµh4]áhv‚‰ã£F×[!Û·ZÚé;jÐ6‡xdÐõHjK"‚€$ghkk‹+W®ðêÕ«nØîî.="™ \¯vdD1t# †q0LÄi ÆFÈ\½z•­­­žÑÄ~ôX³<Ô3‹‘J,«.†"¿xñ‚»wïòøñã¯Îר.¦:a˜4Ó.:nÞ¼Éýû÷9sæ –e‘H$ð<¯;ZSµ“î"r¢H!UÔj5Úí6étÛ¶I&“Äb1Z­OŸ>åöíÛ¡'¯ŒÚù5¾Á0(£x/OÓ]»v·oßR¯×±,‹L&C2™ìžj6›=y‰ë2Q¯×©T*4 2™ …B™™™®@IJ,æææÈçóÄãq\×¥Z­jKý=ÕŠV«E­V£\.S.—Y^^æüùóìííQ©TºÕ‡pãÆ ¾ûî;ö÷÷yóæ ®ëô@uXÜ‹ØUy’Šðû9õ\5]q=??è~‡É«!ÃÏûPô›Æ¯Îþõ›èçäøºQÇêuG‘W8µ¼¾¾ÎÊÊ Ïž=ãÞ½{¤Óiòù<Åb‘ùùyšÍ&GGG8Ž££!‹Ã' àyGGG°¸¸Èââ"—.]¢Z­Òn·»¥ŠÍÍM677) ¬®®Õ )ŽlœªS§ÃÊB¡Ý4Z9mñ#ˆm9lÔÈ×2Dc\½ªaÖÍCïšNTAÐMGÐ5 Žâýk6›<þœ÷ïßw‡ÌÏϳ¶¶ÆÚÚ¹\޽½=p§[­èP*²5—€+íöÉ—ŠËå2¥R‰…….^¼Èúú:–e±¿¿ã8Ý馎ãðúõë¡34Iü^÷‰, §ÕÐ>jb±™LÛ¶Éç󬮮rùòe–––p]—R©ÄÁÁÕjU-9ühÉâð ø9œ<˜ããcööö˜™™Á¶mŠÅ"ÌÎβ»»Ë‡p]ÏóLß`˜2ÄÜ Ë²˜åܹs,//S(8>>fgg‡íím>}úÔµa‰¿Ã×+’ÿx-Âb±–e±°°Àúú:‹EÒé4ÕjÇq¨T*Ôëum7ˆÁ`˜ òÄ*Û¶™™™!—Ë‘H$øüù3ÛÛÛlmmQ*•tU €_UËÐß¿‘/’N§™››cee…µµ5–——™Å²,ÀÔŸ †iF´£¹®Ëáá!ïÞ½cgg‡ýýýnƒbÃÿ~´TqXþÌɉ§R)²Ù,…B³gϲ°°@>Ÿïö•šzºÁ0}ˆ1K•J…?rxxÈáá!år™Z­¦øðèýÐÀ/€¿ õdˆ–Öd2‰mÛd³Y2™ ét:p±ƒÁ09Z7×j5\×åøø˜Z­F£Ñ´¥þß;~VýkàO@N”û~åeë Ãô¡vÿ‹^(4€ßƒ,ûÇÀà§ê#Ë€¶Á¿þ¦ègå1à6pø%âþ ÃtÐàD ¾þÌI[CQŠqà|Ç£èS|±ë\[øq ¡¸$êø–´o)¾ê’’SÓ׉I¾¸ù¾PŽ¡Ä SÃuùòÑÄÕõï¥þ µŽÉa~¾¦‹×VŽéÂý\KãË®©¸†ä<«k¶å¸ %-õzò½ø=£qñØíÜW ÓT?ð3Џâ ƒ*–¶-ô‚‘Ä_(â’/œî¾tâÆF@XÐ3CÞ/,ˆ ƒ×í÷?!ðUZ}âèÄ@…&½¢ÐÀ_ê!œˆ'Îé4¥ëÉâ$xSÁé¬ÎŽ6ÿ{iÕm8y¨ñŽïw¾¼­¾ òžâ䇌R‚P…!ª8•,üÄB·ÆW·ƒÂ¢2ˆ(ˆí0âV$tb¶¤0l‰Aõe7¨(¨Ïkâü©oŽmÙIEND®B`‚src/BWidgets/examples/inc/ImageRadialMeter_s.svg000066400000000000000000000745751515163050000221610ustar00rootroot00000000000000 VU meter. Medidor VU image/svg+xml Openclipart VU meter. Medidor VU 2011-09-22T19:46:56 An VU meter for general purpose. Un medidor VU de uso general. https://openclipart.org/detail/161731/vu-meter.-medidor-vu-by-ehecatl1138 Ehecatl1138 electronic electronica measure medicion medida medir meter metering vu src/BWidgets/examples/inc/ImageVMeter_a.png000066400000000000000000000125261515163050000211210ustar00rootroot00000000000000‰PNG  IHDR[ Qé pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î<ãIDATxœí{œ]UuÇ¿'“™Éƒ! /‡bx$<Â+„ˆ‚HªX[-âGKA¬~¬b jµU+Vm•ji>--¢@ù òHÀÂ+÷ƒdBBB:™„dž¹«üöáܹ97sgœá\×ï󹟙9ûÜ™3묻Ï^ß½öÚàr¹\.—Ëår¹\.—Ëår¹\.—Ëår¹\.—Ëår¹\.—Ëår¹\.—ËUNÑ@_À¾ỄË4wí¥­3Š"럫JW®mf5À{u%ÍÀ}À¬”¶vàWÀæ(Š ý}±ÊÝõw½‚GŽ>Iâ<`0¸$œ3¨¨mUhÇÌ^ÉÊÃsëÙfV\ |øp0$4·ó€OÿœÔµ-¾Ü ÜEQGל[ϪNŽþ0ÿ5ð~`&°yý9È«o&ãInN&Ê»±!éVÛ‘Aç¡ÑŽ¿¼Œ>ÉMÀ¡EïËLÕ`lÐÿqp2èÅÀ_Šº—ï#ÝÀè ÈEVƒº€_Ï#Ï~8¸øð`j8w9pÔ\cU{7`¨žŽÕÛP?>8=$ ¨!én2UÞÝ < ¬EÁyáx ð p°:´ý.´Õ£OÀ’ð~WO2³ÈÌÆ˜ÙL3[ff-f¶=¼¶™Ùsfv†™-)ik1³Ììƒfv°™e6üÍí8Þl Ú’æ`.ð2m÷ofAæÚØ §ol¤+k6’ùXó÷Y¹öìÐŒ>D:ˆš‹"Ç´¶Ì»‘ÜŽFB÷1˜|8œî j °øKD‹ÛÖ€%f¶ÕAT ê«hlý3)æù¯ÞL+jkG ê+³f¢òÞg&€Qȸ³€¢> ‡F,…¶ZMÄAT¯Uƒ>¡/›Q7±Á¦WQ—±¨؈ÂuQ}Ô`àOˆüQFÝË ÀÚ?‰ƒ¨}Rð`12è\dÜ»€ïWÓéŽX3W5;ºüAø~$°P& >úDÝ4ã ª×jC@ip šæŠ/@CÃåH·-D€ª-ˋͭÌl™ jq ˆZ`f§›Ù”¶gÌì<3%ˆÊ­gGQT0³—Ã7“%6#NKeXlÉ’ä6¨‰<³”êÅzW%éäÖ³KTÎh¶—¶Ì•kÏ ê ”ÂÐ[žý¿À6Q(t‡'ÆÎ±óJ_X…ÆØcJÚ6ë̬ÙAT êoQ„x3ÊŒŠYG+ðp6š—<¿¤íaà/€{€Ÿ;ˆªLñߟ…"Åv` p)Ê|ª ǧ£`fRx ËòbsÛ)QsP(nÀÓ(zl6!®½1œ÷""~5Y_h5ôü4IFT3êb.D¨õ§$Q¢öQ]h’`ê&žFžûŸÀ÷¯§¢±Q}VuG¡¬U€ý€­À±¨Ë8 83œ{7êÓ3çÝØí(­FÝį‘›Ñd±(,ŠŒÀsÈÃ3…ä^DM ê¹›v„×63{ÜÌN3³§ÂÏq[‹™Íï£L”[Ï j]øñ>’ ÝXí¡>ˆ"Ébµ¡OÃ&ψꅂgöDu8ˆê½ éÒT(×–µ¡!çž¼z$p.{:NðŠ0K˜Nà·À[aôÜ)¤ hf2³5)iÁKÍlº™­Ni[afç˜ÙO®@fV‡hßi—΢;lúšè]‚¥-j»Eœ÷79ˆêYÊ|š"Â]HC+Ã&Wc7BÛh¼} ã²¼àjx@F}ò#ÈȆ–~‰nÀ>½Î_Š> ¢ú¨ZàJ4‘!ï½u-§?Fé |iÞ>k7ð Á ‘½ÝÀ‘¡ÿñí±Žˆ‹¬còØÔOG¨ûhAÈ“ÑrëSùI–óeª¼»yójdìÇ‘7#žŒ@Èø±žGFïÌìJó¬¢N4³óCöS‹™½^ÛÌì!3;ÕÌæ…Ÿã¶3›Þ7ÞAT j%òä§R-Vê^žE#bµ¢)´u¢z¡à™¥ée±:)©:²44T±áíòEi*P&p‹¢¨¼ê7åÚØk4›ºP¨~r™¶ùQíê÷‹¬5*€¨¦Ø´ÊÌf”T«Ììl3ÛÏAT êËÈsEkjâÙšVà¿PÈþ2ðIº×º ­$û-0;Š¢L†€yQ£€ P(¾»@ŽG7£µëÂkÊ’šX¸'Ã÷Bƒ‘ ÈÑPÐ2Fv ÷ÛÏ ÔQ}T-ðç:E@]ƒ–æM@‰:‡ ÑÉ1(-sU‹± Èc·"Ïž‡BùkŸ‡×éèF¬ üØ»_U Æ64”kGÞ š08eµ>& ÑMiCÏ*Q½T'm¬FÄo!I"üfäÅ+ÐhEž=…ö[pU™Ì¬ÆÌ&›ÙföX ˆj6³{Íì3{¤Dm3³Ìl–™ç ªEQ´ÛÌ– ùÄØó¡/(]‚pki[°ÆAT/ä *c9ˆÊHf68‘=ƒ”ݨtÑö4x°(Š¢öþ¿Â*PQ D­OMkÌì\3[—Ò¶6€¨L0åÖ³ˆú"*Kô<ªƒ¨À/P¥†ÀetÏ–š–òÍnvÕ³"dÌ‹‘‘Ÿ^C¥ŠîGÄïZÄ»Aãê-(ºƒÊÓˆƒ¨Š ¨G‘büЋûê.4"Y‰ÖÙº)§…÷eúÉλ±cÕ¡»1ˆš \Š•Šjh†F'Çá jŸT@ì@Þû \.G“w Õb Ð>ó’Eï>;V ¢6!‚Š”OC‹N'#ïÚ7¡®ÅAT/Õ‰zqAò9$)fÛZ üS ¯^¼‰ƒ¨Ê@Ô(=T›šÍì΢î?ƒ¨{Ììb3;ÙAT ê9„V7’ä_ÇÚ…F[P9ŒÒ¶µÀJQ½Pà"å@TÇ^ÚÚDõA庂X¶­¯*åofýßi™Ù4í•¢^Aãë´¶¦¬.U…ÌlxQ/¦65™ %®Oi{ÉÌÎ 7*3åÖ³ˆúÚ~p=ÝaÓ.à'È£ëÐz›xi^p#Z‰0¸ÍATÏŠÐŒù%$Å]¢ò³CÛ·Ãy·†ã QåáQhmd#¢*V„nfïÛKÄ;®ÜzvQO¢eÒ­${AƪCå?»ÐAÝÞŽ<~Y–ù#¹ jbÏ,-Æko ªÍATTnRE¶·¶þ½ª”¿™õ|§efµ(»ô14“–®`ÀkQù²R™Ù°"ÕRòz)´m(Ó6ÝTƒ;3åÖ³ˆº m?¸-¿‹ûçV´´£Mö~†î;êÍFåàά@TnG#ÈQÆ¢t…ëPºÂþ1 åŽ|¥¢@²ÝUX¯¡Ãå™ú U*ã,E3ê;g íÃQPóòô¥á|Q}T=Ú%/ΈZ üðy¢U6äáËÓMÿªZŒm(l÷ƒ|¨³ÑÌú³(×pÞ€T©¬cw"²×ŠºÆ7ˆú4ð:ê>âªñsÐìNæÊ»±w# ´e­n!©Õ†ÆÙM¨/³VATÛ)_0·_”ç¡ß`4I0 ¡Ô™$‹•:PyÐ_ ‘/$v¢ò ¢ñTV|$·žEQ—™=ŽÊ|îÏžu GýôÀ²’¶÷ ÙšÅ¢z¡<(W†ªÏJ:ljCó’im­±2·2³!6mLMëMëÚÓ Õz3›š5ˆÊm¸Ðê%h¦æ¿Q˜Þ^Û€A}ùl4ÎŽÛ¶£QÊ,`VÕd¢ÜŽF£… ’_Ü„@TѼQ(ÍìzàïI¶»Z‹¦Ê.GctO†¯PƒPŸ| ªÌP@mÇjÑ_G„Ï€Å(º¬'ãOvÞ«ø*QqeøФn ÚA/n›Ç¨ÜöÙ)Š1ê´p© U@Û…Âùí¡½u .°Z<»F\‡º‘5¨«ø,2ðjd䪱=q .2ïÆÞ†ÆÌw‘äÔ£áßM(°¹yrÜf\ œï ª2 B#ËQ8¾‘¤¸íB4±;í1öE’Œ¨õáëõ(¤0Ë Î³¡þú=¨®È6®C†¯ _‡’dD½Ž ÁATŸ4aÖ6ýñìMhŒ}š†QÕblpÚŒ½#úí–¢c¢öQíÀ¿£¨1BÔoQ7 55ñö…O̻± ¨/Þˆò´k±mÈ£w…¶z "”—½!´ùššJ†lBE?N›ÚP2üý¨¶ß%$!};â"ëÑCõѬ–{äÖØðva—i¨ÜÅþ%Íñ ÍÊ´]Ž@Tf^rmlè®§)×Óäáz5Ë=;CåÚØôÙƒ†~imW ³ì³s®uš¥y0‡×~À}(€™ƒŒ·ívË;8ÇATe„Âó˯EŒ¤€–tì‡* _~>.¼oº ‡öeŸ›åçYƒÐÒ»Ãи9ΈÖH mñ¦ö]Æm¢ú !hïÇD=üª.¼øâ× í KW"d¢j1v©êPèÞARÛo@–ã«ZŒÝ |m1!r& ˆº =Dã­ ÏJÿ5ý«¼»€€R\ÇodѱWIŠ™z`F(ÿïU4wU‰ÂÐïÑô×Q¨òBqU†¡<íó‡o˜üStCzÝ‘ ”·ÙõÜzv,Ïq¥ªZ<;¹~¹6vXZ7Õ^Ò¼UÑùIù‹â¶«ÐäAfÛ§ä6\i&Z£¾ÍA^‡£u5ÛÑõ±EmcÑ(ä`šW¬¬L5¨ögˆZ¨^…ã5héÇÕ(™€>É›Qÿ4<|‚ŒV äÙØ ƒî¼u30ô`à4 åµáûŠ.OB]Kf^ ù7v¬zàRdĪªs z@>0ìŒpî!(‡$sU‹±Aù}ñƒp ɦmCP½ì†¢óDÕbìv”²0u#+ÐLL ¢nGýv\#jú@\dÞ]@QâVÄG¢p¬-Íë _AQc„F$[Ñ rU‰ˆº•ÿlßÇL+‚M/¢ÞŠ÷°iCU†£@îuU*¨7ra™z#B½Q½‘ƒ(WªªÅ³sQý,ׯ êý(7¤D½|…ëim׋²Q¹úu*ЂŒ^\±ò—Ȩ[IöÍKÞ–ôÕ›Ù/гjPžß§ˆZ‚J° =o®žDãëM¿Š°ìOP°ãÆ®@q ¨#É›ˆ°q òäBÛ(3*Þîê°DõAµˆm ú&*n[ƒ ~‚dG½.äÝ™+·“%ŠÐÚšÑhâà4¾~E—'!8uX8o@ÕâÙíÀ?¡,(PÖê¢~€3MD^ÿXÑy™*ïÆ6dèTg2è04Ï/ÝN’uIËLóÿr;Î.Ú§f,y\A›v¢Üë7Q·òºo˜üãð¾À]Y޵s«¢˜J³žâ]–ÎЩ4#j½™Mó˜z)ËÑÞb¹76ø®y™ÉATF É)h‰GéDîNމ=AÔN”<¿ÌAT =…âuˆ“ÄÿO* o4•Ru¢57ǵf¶ÐATÏŠ÷©ù$Q¡q¶¡¼.´4ï:Ta,ú$¿^ßCÕvá ª" F££‘Çž† : °A§ÑáœZŒ:¬Lÿÿ¼dÜ:Ä?‘gBù! hý"”’šmoÉþ2«ÃØ ƒ¿õà cÏF93P^‰¡É„{þŠþWµ»øg4#ð4òàÏßG0jI~¯ÕÅ j'*Æo+Ûˆúð(|=Œ¤FÔ©á|Q•*Œ±¯DÝÃ&”§ƒ¨]ÈÓAê³tQ7"æ=¸ÝAT2³á–l^ ¢šÌlf ˆj1³u¦­ÀË­ÅéåÖ³cƒÁžó‰»ÑÞ4‡•ikʲ° T±Ì,uz/Š¢ÂÞÚú÷ªRþfÖðVÛËÁ¦½¨vQ½P`ٓЃ²´(×.”|%{Bª]R­Ì’içvè ~~~~~~~~~~~~~~~ src/BWidgets/examples/inc/ImageVMeter_s.png000066400000000000000000000325441515163050000211450ustar00rootroot00000000000000‰PNG  IHDR[ Qé pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î< IDATxœí}iÇqæ—UýÞ›™7â"@  ISiR¤-Ó¶,‹’h{ÃÖÚZ[¾¤µ|„wýÓ¿ÞÝX3¶we¯ìuÈ’m‘Ú¥ä•iݤx ¼Á ¼q ˜ûÝUû£úȪ®~ó€é adÄÌë®®®®þ*+3++«8KËFäI»ví’Ë^“%P«ÕJßcûöíiúìì,[±uk–wff†6oÞlÝ?::šÃ¡Ùl:içbpðK[ ˜JÓV¯^ QƒƒƒáöíÛ»D¤“ë¼@yÑE­r`RbL©èŒ\JP­@jI²!©!$¥9–Z¨7(€Bd]QMH H)¨&i!H¤5ªÕIH!ˆ¢€¡HQ]ÖÓ4!$% !‚¤2h¿½~ýêW>øÁN‘€ ®/mݺu¥@ý“º}„(Z!ý\ÿCI¤a» E!ÂЂátA2À DÉuô:4ˆL¾8OR!_&$Ð&µV¯wW¯^µï=×\ý…¯~õ«÷8 ¤`ß!êxa£Òø( ìÐ:m„3‚´6=5ÒÚJWÔ¿PùúÉ“¤§§§ÇW¯]{àœ‘÷k­§‰H°k×bf&:Zq¦Ý‹´þRóõKQj·Ûõ………m´K £”¥>ñ,d$Ó.qà ‰@„z==? ö2ÒY°+$PgçgÁ^F*Íò¨Õj‚å7d4ʵ$ Ûé"Š¢ÒË- ð[ŸúM|䣷#ù§Ò ó ¥›XFZ ­Ò@ïvºøû/|ßúæ·—¸ KŽ”v†øŸù9ü¯¿ú¼÷º”ƒƒƒ§40è—d 180PZÙZkL?¥T)åq*­ßw»]t»ÝÂëssse=ÊKe‚Í—BÂQ‰Ë&d«!ËYþ) §³ÖÈ2ÒY°+"Ò M !ÄÙáú»AgÁ®Œh¹dEóÄK¦Üµ|ªöæKRŒN5gDJéJm©`“¬ƒD "hºdÀ‰Í¼ABjcòÅçDÏš„é1‘9‚Ò¼B@ÔÇô‰ã˜:qJ•?zJ›dc›>ˆÑ €¬šDÿãÌÒ“sÛ‘{n¦´ˆÒÌMAÌ/qãcß“æéyò—ä ÐFmæ9¼üÀßàà›¯—3¨qø­°‰êCë1¾éÃõ1“è­ÓìÜ_)Ë@%²'Bd¦¡@HС(7„ÎÎAÄ aŽM97i¨A4‡®Æ¦Ë_ÇáƒoBu:e@cQ)`k¢6 ’õ,ÁZ³ôÜ!È^Dz–’rÈdÒ„DkÒTÄÎ(.¶”Î@MÓˆøAqãh¤7ÐŽŒ TŽÝ@d³Q¹ R»œ hmd·™‚ÓéA 1Àž‚Ë• †ajJÛ)I3U¡´“$·iØÅŠý7$ª·³S€9ÐÚnŒÜ=Y¾Lâè4Ý:N‹ÕNpò8iNÖEÓJ¦’9=€æù|oDÇAnj̸9eàäÜáhË.Ô1ÇZ¶¢]ãæ´WyüeRÉœíÚ-º‡5âp>o$Þ€üwk ×{,./x>{&iªŒ»ËÛéâ)Xé5O7wÿÒ]9Ïî·ÀÕö}9àÙ{¼+2¬´ ©™­®òoUðg5–Ã͹[= ;–_žcäÒ&8DÊ€JB21Úwìål› @3QäCÈsÄQ>;{Žû{Ú/ßUd°ƒdŸ,ud¨Û(@8—ßœ»‹¸=W§Q‰ ’„]X¹`'\ 0p]ù‹;iÖà'/>rli+oV!§V¼•–ü–lަ–júihc©qeæÊà,³MÜGl´a™ñ/tz‘F 3ßH:¼' Ò€ ø0=û”·¸Òˆ'L§|;›»@k_Æ$‰ùH}€Ã¤idÃt)€ kë¸á=̬ͯèÝxèÙܰsµ7¤nÜÿl G§2w¥YÊ!éÍSÊ÷g»ÊÌ ìÇ®[Úý€'›$;il\[Ǫq‰]—bãÚZ ”ÒÀk:x`ϯǯ‡Ü.üJwHqªÀÎΛOB„„ FiöòŽõ‘X6V&cB[.ü :×¼Ò¢ZÆ.lÍbàÍNáБNlnég¦Ä¬¼ ë¾@7]3‚Ÿ¼q õÄ«—6ŒyF>Á¡!…ƹ+%Vk$iFúå°6!ƒRŽÌ. adL¿GŸÆÁÃmcê!Ã3=Hœ@Ü !÷º‘®É"†uuÜvã8NLGxtÏ”f÷ºõKÊÀ¹«|æŽq<ø\ ÿòØB¼›CòÃi¹’­‘¬?«xêÙY|ëû'ðúþ…T1jŸ"J¤Fꈊ_Þ 9Ë2Í&ˆP¯V¯R_ÏâѪ‚ð¾+±qu€ZÀóÇu/}¦FÐÍ7ß  Bk?xzZ*òíÊÇØ Ññœ´éú”™éM‰—%kX²Ì>çØù%R2Lµm‘”5ådtE¦­…I"Z»7˜Še‡Æ¤£ø¸0¦Ï²ãXªe""سÝtÕÄ8§y ]%éZ$ÚqÄyL ~‹w¸GýzX+Z~ºXk$¹àZ"Þ{µ•×üx¬‘øT)…–ÂÛ‡;©ÿÚ*Ïó«ÐørŽ‚úT@Õ/:õ…4ø”d"D¹Eb),&:´†Š4^ÝßÂþƒG±gï<¢fxì3,XZ¤4îzW\Ð@»«su¡ y»2GTbcg×Xž¢{æÉ’íÁºi€Hi<öÌ,HBݧIÛ2ÚÿôV­£“î¼ë$º‘Ÿ»J5F*Ÿ]wåk*øoÁ­–_$1<Š1¾?T:VˆÜB6Ðn€ 5pb&2>—øÞ*$‰Ôdž¨ Bqµ„!2ðX·ÕZ# ¹?ÅqD%¦çn>äK8€Åü=ëg¬¬Ã)°Ç« òÀN¬F.¹pï»vµ€s§¡™Ù÷|ý(ffø-4r£GÀæn.n’â±­ýƒœ¤—9²ˆ€QúÄjüÙÚt¡K· a !pÙ%Mœ»¶a­ C=— ãÙf=€[rÀž@01agq(YOÛÚ§0E"ªmÑTeàH5ƒ˜ø»›Þ;Ž‹.Âßù††l§Oi¬¯á×y#îüobÏó3™„q‡é‰hI(èë¯A£.ðÀÓf²'²¸[H`õ ‰N˜ZÐàeB¡Aæ%*”Ù¼'Öjç®k`tDâÁGO"Štj{7jø;›1Ü”Ì`–AÁ0Ò7ÑØ²±üè Ì-(<öì¢Bñ¯Ñ‰]ëWøÌÏ­ÄÃÏ/àÞÝ qD”©9•*Kl*?”!5ýÌyâfT‘F*„‘FjDJ±ˆ$še–Å’œ[ÇÌ&&“²nuÍöVOC àÆ+‡pþºõÀc†T¨(Ë_SÃÇÑé¤ó[þÏÜWŽ›ŒØ“邿+¦ã"ïk&”‹3%cTÍäãÈHÝnšË¸Tk ÝQ6®1èÚÉkÝg=,kHÖ5XÃz*WÔ~IÙgg9¦nµv?1…'Ÿ™F2¤´F·á+÷¡#íT–ûÊȱ¦FfH9YrõÃUÉh³ûC…¡ Ù †¡Æwî?Ž…ùóó 6šŸ}o.àsŸ o¿ÓÊ¢ŸâÁŒq³:V‚§­Ðn+>ÖNÂPr&_jÓ¥ÌFJÛ“ÓI—/Ó7B€ÊPAømL¿Ÿ¸e~ÿÓ›±nM-µ"’< ÜøÞøÃß½›ÏÈ^Ò 9Ë µ°ï@ ÷•£xò¹Ù4âÊ[VF¤4|foê¢Ë{[\p{&T¾ÍŒéZMàü¸dÛ0Ží T2 ÜðÞ–&œ8A1áFÍ7ÚÃts9Œ4y| dL7aÛñ¹)Ї&Bü÷ã!a×Ó_B™r(·,7ÎÄËL-úph"eËó–*Rµpû‡ÖâÖ÷Ÿƒz]X×rr™‡§ñkìë7=q­ÈñÕ«–µLÜÝyÎ 6 ȸm㹃øÄ/Ÿ‡Ë/6v¢u«¶Ë€¯ü­}È]7î–êdw­–¹ýª3ýbب ¬¯Cn¸–G–œ·½ ~aÖÇŸx‡ƒ˜ÊgO/‹HØðV:á›>”ËM&·µN‚Òuže];Ü)X ÂUWŒàê#qa°Ý@¤1Ú”j®ŽPå¡­µ¦0̶š+5n¤ˆ4›ïÍ*â3n/p0Ð….»¸‰ßþ• ¸üâ¦=µæVŒ°r,Àïþ»•xÿ®!HAE1•Íø,B‘Òxü…y>šá¾óè²4¤ •!ªxÛ¢˜,nòXVëâ>¤LÊeFß¾ÿ8Hº@pêúG`b÷ìâÎ/M`¡;¢*²AÔª\-Æ(Š4æç#Lìb`@Ç”ÖÆ­4:e\£îÄnêpê B˜Üëj¢^¤ ÀoîÆŽ(q‡2Ĥ”Âë¯Ïᥗfpë­kðGt±µ÷éü|ˆÏýÅkxä¡cñF]1Ê”2¯Ióí÷TÀµÞ½F (éR•bFye[™ÌCo}ç(Z­Û¶ £ÕŠ0?¦*Ò¸ýcÑl ¢ÉÖ¥*±Óˆ/;sv,lÚm…‡:ŽÝ?˜”†V*#ZÇñÕQ—S¡äáZ­!M„‚ýÔüuKTù›ñÌ?³({0Ô» P :9;1õ( ÌÁ"A6II¸bû0Hž{yÎlÐNf”:<(ÐU@;¬Ð$"ªÄÕ/1„ëä3ôNر}¿óÉóp鶦GXt`Úr|DâÓ?· ·ìjæ¶•®RŒTü锂sëšÇÖõÊÚM Sú|#Ш¤,ÈPºL©áÉ'Ÿ$à]ü:µN†‘…/תä<ˆ¯WÖ~‰ ¸|ùî} <åjkì¾´²–J%rµ†6k·—CŒý9ѬOBâËj tC…©™è”îUª@-àLT0#è ç`t¤VøA@ØrAX€žÊ¨[Ç'»¸÷»Çñðã'3§Ò")§^ZÀñ“‘1—‘ª±³ ¨?û¡õX½ªŽÏ~öuœ<ѲR ì¼j ŸúÌEøó;_Á³{¦úœÀØïßüÞqha¾¶ä~4­ˆ”2 ºó&0ßAniÞÉÙ0иbÇ(®¼rÌþ&L<‹ó3ÞˆUç4ÌÚ˜-þÖ®Š?8tjF¯ìàcÝÓÑ÷E䬤ʤT&ÔDž•ܬqZ¡Ü.s¦ÆA»"°{p*dY&7ç»Iåƒí€¦”Yi®ÙÍN žõ>¹Ka†é?” E ""Úµk€JÅ¡ÝQxåÕY<ÿü4›¶2ö`ØÕøÆ½‡prªk–å¥þ_r;Ì„òö‹›¸dÛ™”8•šÐf'ܵ3Îë—ø³afº‹‰‰NÎ Ž”ÆÓOMâ¿ýÉ^¼sp¹M±yg)«vŒà¦ëWàÏþê^~}¡Àš±Å0Ú”øµÛWâ…7Úøî“ó¨,&~¹dP#üø­kðÉ_ÝŒÑÑ “ ñ¯„í—ã÷ÿÓ%ØrÁpÆQ^ý¢"„ã.Ù:tÊŽ¨«·bd(¹©×³Ë£jM¿;GqÕUãé÷¤¦ß‡n߀UçÔ!âÏÂæ”§+>8±ÍXÒ¥Ñ}ô "`°AæË">‰U¡©lVß,¬7qðdr9¨¹nrnw8ú‡Rö"Þ’ev4ÎKæ-9WÇѓÜk§$s‹Ë%öø*¨\°“ڲтR‹ é¼#4Qû¹SPäòkGÔÜ|äŸY/0õrD•IÕ/`2ȬQÜ· ~æƒë2%¦ÍDïîLâ‚ ‡¡’ùÃ0Gv“[6 X'§B|ïÁxàSÆÕ‡$RϾÖÂÍWgqëxeÉlHW¼=hBa|óÛÇ0>àW?q>Ö¬nX+¢Hc÷îIüùg_ÃK/O›yHb2Ü;ÂÌ®E‘ƽߙbGT¿!¥€—öµñÙšÀ|»â=¢„Q¹ç½˜âï>îŸÇ–̓xø‘Éx Œ$ ÍüÎ΄ØûÒ4"X»3qÁ™Û€hmzŽùp½È™–þna*F/íoCSÅî8sBLbyF¯½>}ûæ­ð3³®Ó-0 sÊɵ½ù)õ4ðQ ÙfåžGVAÕÅúÅ +­¡º èô#œvx0õi'ç8Õ›çÝ·SˆQÉvv¾»s!e;½»æ®Ö͉‡ì‚”e_ÔRìÑ–R®ÎL©h¦†ìhT$ÇÜû‡”]·N¨XBAÂÖ-ƒÐØÿv›ù7 ¬S½:!‚‰ŠZ.ªÎÅêãH·o¹º/aÓ4-Ýù…qDýÈ®QüÁoŸ-›lÚ£^D@sPà×>¼7½gÈ(nï ,ÌÛT¸ÌÃWÕ _††¥ s¢¸À8=„Õ«j¸üâfêðÝË- )?ví0®ß9„ñaéÉ_¼/ìž\͸Ö=ÇÙdãÏoÉYFv³µÝ“ˆ€áA‘}â¶(ï’ÉŒ* Ò±_,!ÝyFÐ H¼v=ºs¯Fôd_,½¨Y×Ê !²!i2ÛpY nºq®Ü1Š ˆyrÀÐP€;îØˆuëÙØ…ì²úpHåü®ØÊ]£|Ò2PebDÂå—à3ŸÚŒí—Ž`|¬žú„X»vw|l>ü³ë±~ý@÷‘É c’$ŠQ­–ÊÇs»Š˜‘âoBy‹N4Uë—0„ÑÑ×ìÇo|rêu„uëøÔomÁ¥—Œ Ñ±ƒŠËtdï®503âáǦðýÝSNDT1X‘^ÜßÂôœŠWŠ-•og,Ûš`âFÎYež™”Ù¬{tìoõŠ~J±#ê»ÇÚ¡³~ƒ×Å:&(<ÿZq×$fÌvüË_Z"ؼ‹Çç1E‘ùRµf-b§«ì¨Ë2ñ)T–†³ZÊt{A1^ýuÿ0Òxöõ@>­V¢‚$˜z-K+Á,Pê(ì}y÷üóat»Ærôhw}å›è°¯æQöŸŸ%ø¹–_‡¿­Ò–nâYÜÌÕR©.Öô7öêí?°€7ޜǓÏL#ìf2rj:Äó/ÌààÁÂPcz&„FüáKŸqmú”e>»¿rý¼FyNV÷ûÔå»Xã_ ¡Ãm,,Dˆ"ãJ%"ÔjdVöFÀÜ|„W_›ÅÜ|dÚ(u©2®N8î3’KäL¦9À“ÃÑ…K5D³'–?¨‰¹M µWã÷>½n‚ Ö­mà—é<4µºÀGo?ÿÅó°~í@¶öÜûþ”»&$á‚ópþÆ;Lº­Ìz Œ_$×xÕ5@¥¡ A@ °aà ê5ÂÏüÔZüØûÏÁ…4HÂÖ Í÷"Iòû(ãh^žãi’¸þš1üáož‡MŽôñØ‹ì´9(ñïz 7ìô8¢Ê¡´T&;ªÔ°ãD)ƒ«VÕQ¯V¬¨$A‡­\KÆ!<A°nM;·7!S·@1ÈP“·\ÓÄ-»š8gŒ­xÈiÖò©Â(Ö¬âÆ|&D‘N-€³¹˜pL½¢ÁMœ—ÈD³n£øêFq¬ŸðcÆÖÌ™Xɸ3¶Jº¡Æì\„0TøÎýDZçùìÛ¿€H+$n52gªeŠ-Vrô²H¬Þâ· « j÷ˆb…khLLvp÷Wà™çfÐ 5žyn‚²ï|ñŸÞÁÈp€é¶YY#9‘P¤ù-‚4w½ ü’¨T°9>Ý.p×׎š¯›vÍ•ÖÖþ~G'Úø/w¾Žv‡­fcò”«sb%%Š4ÚULÅØ˜h¹D¸íX*Д[TUî Æ Ið¦óÏ}k­±ÐRÙýEòÙ!æ^ÂܼÂc{fðÀcÓæÃ@Ìô4ÏÌ×Q)Wßê`nAYQž'•NåËl'Ö/Þéa8ൃÅØ\ÍD!vDÝ7 `¡“¬\(®VB‘ö¼ÚÂç¾z'g•qDñ²=±$§O•F±fx²³ô˜´Ž7<]˜‰û¸Ñæ“H*A¶]DYvBà‰½ &" TÝ2.çùÙÙ^;-ëÚÄò}žs¸r›‰[©.R'Jú‹Iˆ”ÿs´gŒÉ8Ò'F(“ßñ.”ÜÛg¹ZsyleieÈÉ|ÊçYf*QAfš?ƒÛ‘×@&«µçC—Eù4–]ÉÎ×¶rô4FX±{Yu-QÍLM)çêŸåIDATz c&q¬_ ~Ïfkx.·R†eÂál<·(ŽÑ÷šÿ¸ÜZÍÈëÈ ¯* †'Q16\Ã…›ŒÄúÒ’ù^äÞ—çìQ¤ÕÝÉi¼,=nú‘1ìºbwþí!¼}¤ÃÛ°§²l>vËö‰ðè‹-ô¹¡Ã’©°S%–°ŸéØc£5\vÑ~ýã0àí˜|œÃÝç²û-åè±D y7g•Kp6Á|;ÊtÉ H)Ðíj³Qmnt™?´€N¹ÚÁƒZ¡µQpç©h D°)*VÔ­¹E‚À2 mg”Íé‚R:¿ÁË"JRåž™~UNKVdúe`%›› I e¼{æ“àÚcöÈnO 7òÌÞy<ôÔlæTZ,¥4öêb¡­ŒÒ™1>30Y\bjß 5ŽLt05aÇ¥ÃxûP“\t Béµy³âËW¹Î(»×D ø×avAe>’”K³†Ë$„±«Ÿx©à_¦19;¢\ÝP•/FâÊFšpß#'qßÃ'ñ‹Yƒ 6 âÉ=3¸ëÿÅþôù¨×¾ø•Ãøæ}“ùË8Ð&!MÏ”003§ŠC |¬@IvBGžoAP ÇCt&p6Œ– Ó¥®{Ï(u‡›ÂÜ|„g^˜ÁñÉ.ž|v §ž›aÁLN§ÿàÁ*Ãõ­øN­4ö%+‚Ù3«U•L‹ÅlGÀȰÄuïÅ /ÏáÏþúmt;‘Rø«/ˆbÓò†…c¤‰)ðž ¹»Ÿ:g'U^؉k”˜Ä6ˆZ`Bº]óí\hB'•´ /«¥ÛÈQZ>bGTZ ¸òÚ.;+2ÿà¸Ô3fÉ»º[ç<æˆ*z/ò\w¸š°vuZÇN†H?ÊAö ¶÷/“IЄeuD•2y¼VrÆëmöšeB’Ù±LÆ‹Ž¼`Æ'\É1VLþ’pë{Çð¿ºëV×í 9x„ߨÄ5— @:y\¿%QÉœMÖq7Ò86ÙÅôlˆÛ‡­—h·^zÝ5ýÜpåµ-·k5Âæ \sE÷>0ÐÝŠßs„wâgoh➇æ@¯Ni_Ò%P¹ÁðìXEÀî§gðøžYü‡VcÓÆ†õMÛn¨ñÏß:Ž»¿~ÌÿIn.w-ló ³œÄê>ÄŠ]=.Q( ¢±Û÷ ‘Ù”L B#Ò{öÎcÇ¥C81bîUÛaBÐÖžSÃà @8e.WI&³?3í`ÙíóD^Ûé–¾åù‹€J¤r5ΛuC§_˜Ç³/ÍÒoªÛ?Ýn”Ʋ[íƒÂ™ö|j>‹£sÓðÂggçd­AT©x·÷³„nPeî4ãdŽ™;lW ±¬îÁíÎ#ŠÂZª¦ "¢–L ÒM,MÅ[MØ ‘…¶ý¬vWáÅ7ððÓ³ñÔZ̹E‘“dÿÀ±­ŽÎëÅ3GŒð“ä_jÆ×ìzáÊ\Ę3 -®6_ÍûæCÓøÆƒÓ˜šSf¾"×HyÐ#ìÞÛB£N86…Çå$VTª5B‚b—*ë›p°}GŠŠr‚y\Ef–óÄLÈ”ržóÓ“XN'Åuº÷íY`–æÙ:¢:´+¼r¬†8)I7Éäg¡8Ý ´ÏZÐäÈ_O¹9]bòD!RiEÓŒËÂÙAò¤ÓÜ]ЫépœGBÁ ª¤äy½ ã@ƒ¥ùÌ@Ÿœï¡$­4†·×“X•ŸÍ Ê!à‹””š+àøY”äãf†¶ô¢ŽµHÍ–B?¢¢˜ò~ˆû0\™ÌBÎ •cZŽSfšfƒNX5^ƒpb&Žfõ™©¼& èd•X.’ªB9RͶE\^{ÅRÐrpòr‘’Œ&aQ¸~¿÷ñ5X½"`Ù=ÜlW šÀm× âÊ­u㈪V/¦TÁ¢SGœx]7ã×­{2‰P« \´©ëv4³…§Œ›Ó2Øãd\Y?s›ÖÖØÈ×<·JÌS°ƒ@º;ªœ"9ÀÒ"é<\ÿ±ÛìF²OÓ‰H(¬(‰žZ¿*@GD-•ÆÙ$l0sã^/É9Ó?Y™~Mf=Ójl»{AR ¶ÔòT>«˜#Ë•̦ðs dçÜíþn`eZ­gõ§ldÙ²üE= [”á”ð°°ø„’Fp®å€ñqÃnÈn¨ñÚv¿0Èñq$ù\Ÿ¶‚Æ¡ã:¡ö[Ÿbƒ½ÞBˆÎÒJKÀð f¼Ž¨„4ü/èÝ“gq«~ë³øæ£³81ãaÞ㈭(}±á!C'”ýòŠÅHuQ¬H€öä×8¹Epбë\Èå8C;ÔøÆ f™G"î–úÚ}P©35©|æS\Îè‘âØm]0dÏJåÇÀäRç&X"$'» aDVDÔröé?Ù•1Êîj^ÉiÒÏrdntGœXršŸ[" 'åòò¾|°};€ °ªpªDüåŹÉ5LÍÉLçås€Æ•§,+¯­Ê¥7¹êâ]ál)‹X­ʉkcräs’9ñÁòZ?Ic#Àôœòxþ|"„Ò2¤ €¨‡QT6•7‚te+à€åéªi·/–­9 ã¼5)pÛ{‡ñ™_X…£2Û©Øí!žÃzMàý;pù¦Ú™ëˆ2uvÄI®›÷©8!ÍŠlÔ¶oià};›l%š;"ë>)k/®ã—nÂ…ë¶ánõhÛ 2¶(ôéÌÖ0€3ü“}Vfu²Ò,½;¢‚8-^8åoL“&áüÕuŸß­ZÐ3߈\¢oÄé²wq…èQŽì¯’L®Å…zÝ·ÞZ°Þa‰7²‚0YråÌ-`vv–¤.aƒ; PŸbKŽÙ›å^Ò3.Ð^P8¨>€Ý[Šž]-U~ÛÔ>D'¤Kò| Ì_hšÍöqdÇfß)S(õZïǪgoqÇzPÅTþæ.œ›sÜèpma9T 4Ýxëpˆ'^nÙŽ¨B7›‚›ŽÐ ÝÍaª=§ —N±¢b/B±¢ÌbwúœÝ›G„PiÜ÷Ô<¾óÄ<&¦£Ô “Wv‡ˆ4áÁç»k¶ðÎdtº‘§EYÜH,A|Å\!È–{3'yQNQÙè˜SµO†æÌ/ã⊷º_ÝÝ@fû‹åÙ>[—0‚Àd39GÈïOΜ–™\Ìô‚€2®§çÏn¬0г$vö2(K&Fäi‹‘ôÝR1‘ÛœÍQåcu|÷ Ž\ÿ‹Å¹6‡3qm½_NâØæO%TbââÈ+Grþ¬â¨¸œäTð¤"åèáðSfUR‰ñÙñ6ú½BÎrÊQÛ=Á}kέNƒ†cc®­²x|·[ aR¤ h¢,F›<íR2Åœ½A°´¶ɧԼr1á2ç±{¼=Ã|Ëý'¯kâSÃXSf;MZÜMù²4Âõ—ÖqéÆ ^Tµ<¬]²íÈRžÆ[Â9qâäó”-l\¹­÷ídŸ{Ä;”’°kk€OÜ:€‹Î•¹Æ¨Šl1Òǧ´ ÉòÌÌÒÙ‹õ²o-yJöqÊÜW™PO^dŽ(Ë+Àd´ `ÓšƒuÊ>Mž·bdëV@hIyü)«lnyKáñü^Îf÷¤y)Ÿž;·nöTÐüÏ@&ÖŠ(‹õ“KÔn×ϯ‡I²-¢‰RYë—÷vÐ{2®†}ŸËáÖ}®¾¨ˆÊß(€ù­“1 Ø@&³>y+08@ljZ;_Áã÷°|vÁŽîÇg³Dª$d˜¡ƒBGTÑ‹Y e2:4™QàÁ‰O¿ÖIQW;õ"2Þ„ÉY…nÄÔÈ2‰GAž~ADÆ)OQÂÈ” ÑããÔ!`mšX­caëúÁçZøþ³->oÄèŠ-é)àû/t±jTàÈ›(îÅ%ó¨re Ë ™;Þ¬Àá½oKì€ÝË8{x@àÚ‹¸áòFö]÷´pÿ±”À­—×°s“ÄPƒJþ.MoªàCnpDIPQ`¥¿û<ÏÙI6)€e¾tÎÕ¾â‰Ð¨Sãçê… ©´]H)î²Dl*Êz  —«ùyЮBö9£Rø‚iÙÕ"^Í6üɆs8àWŽÞ$ùÓ8О¬9Yío=sÊêP5sÇœ½Z,Å™“#c³^êÈi~byù<2•k®µÙ|\JóÝ`)ŒhI|2DFN'BTjò;Ï«˜J?²Édž¤'Áï}¿ÙX8@‡JãØ”Â¡ ×^TÛË€ùÂ[!¦4VŽ \¼!¶:âûß<¦qbN#ÙVj¹œÖ«uÓ6Š –HÐ:ý%dç”<; Ì'~ ,ͤפÀ–Ñí ‘êûó˧DlµØéÏA*¥pâðh>ñ—X½õFÈ•„‘ ‚Y3.„€HM4)Ìyl:J!@B›xk2ï!2¡ÁRÄÇI~H)@ñ¹AH°r(ÍÏÍRÞpI¢Do¿‚¯ýó]èv–¸WV•6»Þét°ÿÅGqðÕ§ ƒš3t-†,-’P6•eO8Y^2¿îýé}ìy¼ÌžÝHk´;mÌÎÌ¢ÓnAå#5K¡R­…hG!–+œ«ˆNçùZëÓÌpÞyçaòØdiU]éöçÑ2­m=KÀY°—•2°åé¯ð=KýÑYÎ^Fbág%„2œ¥žTšé70ÐX\ õa%,ÕèÇY,OE•ØÚ¥€=0ÐÀßüÝçQ¯× óh­ÑZh!ŠÂÂ<ÝnˆV«ÕóYóóó=èt:h·‹G€Z)ÌÏÏFîûî}xå•WK<[S#ÑiŽFÚí~ÿ3€f³Y<  ÂàÀdPܾA˜R@D„ÁÁAHYìZ¨×k¨×{—Ñl6 ¯+­Ðív ¯/…Jál­5Ž=àØ’Fýݺx¦¥Ž`•RÕŠ‘ÌÒ%Ýò‡uôöÃ@î·™ßZü¡³vö2Rfg/i¦æ,õCÙ^¬]"õœ°:K}Aj2PRÊtÚ'€f³Ž®?Ünîk·ÚcaØmÀìíÉ<ó‰D·'b;O®§«ÔÉvî»e˜Ò…Ue‹p ŸIþë”K³n[¾~+ƒ@ŸwÞ†¹sÖ¬:D4pñÇùÌ,Öô§ú§ã¼sëäÄä­­…Öz"’DDBJiB‚@$„$Ч´d<%$ˆH’ 3½"¤1Ý% 3é"%ˆ’4Snœ! Šçbâs"‚ì^IКHJ ̳5±û!¤Ùÿ‰™H/MK ‰îŸõzwÍšÕoo¹pË—Ï9çœo¯Y³f6þøÿXšŸŸ@ÌrRJꨈ¤¤z’Vdd~E¼DÄä­¡V3#I)#ªÕj²<æ·!ˆj"!¨5 V«!Š’{j 2yB"ªÕŠˆcÕ”€ˆ(Å¿µ Ô€l€€(" ¨*°1GT£n½^?¾mÛ¶£æ‰Hž¾¥µûç<Ý}÷ÝÖõ;ïŠÜÿý7ß|sß÷$ôä“O¦ÏݵkWß÷½øâ‹Ëªûô®]»B¢Š—2œ¥búÿÆf×ÝW$IEND®B`‚src/BWidgets/examples/inc/ImageVMeter_s.svg000066400000000000000000000264731515163050000211640ustar00rootroot00000000000000 volume c_____________ c_____________ src/BWidgets/examples/inc/ImageVSliderBg.png000066400000000000000000000417541515163050000212450ustar00rootroot00000000000000‰PNG  IHDRŠŠu‡Òd pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î< IDATxœ}Ûr+Mr^³Hî=ã·‘Æ’CÖÃoåK=™ü" Ýj"æß›8u·/«rU‘cD0Hêª<~y¨êéßþíߎÿ÷ÿÿùŸÿû~DDÄŸãt:Åé´¶ïÝï÷X–åE‹œãqq:åõû¾Å<ϱ®Ë‹†{ìûÛ¶Å<'.—s<øñã#""¶í¿~ýÏç3æyŠåÏþoÿç?þã?bšæ×€§××ñÏ/‚®/"Ä‹p‡ŸñùùûžÊŠrG ¬xß66kJN/~¯–ûÛq¹\bš¦øùógœN§x{{é/ùïÌÃr ú8J‹-X’"ØÔ®Ù¶íE¼E„\ÄzMæ!ˆ0/‰R‚8MS#ÿó‚ƽ,§Ó©ý†èub÷â³ók:µ1,ÌÉ×Ñ4ÝV3LjxÇã˲Äãñˆ}ßš ×½&|¹Þ­1ûtZ“cûýÞ¬Ââãã#¶í§Ó)n·kðãØSŸÏ­câ4¡óÂh““MW„KÁ´!¥˺®MXkÍ4íÓq;©õGÓÞböÔ4Ë0MscãÀ8æÝï÷öûíí­¹ÖÄ÷p9vEÓ45‹0Ïsc¨¯a î¹mÏØ¶­¹Ñq¼Ûíó<Çý~oÊȶmë„í~¿GDÄù\®t߸ßï1Ï©”˲ÄÛÛ[°ˆˆÛíñâCŽx¿?bšBÂ4Åù|yÝsŠëõçó9žÏgsyëºÆŠŸOMÚbšöæ†l!дdhÄåòÖÏ÷yá—/—·x>Ÿ/_}4 Ø÷£³’žPÑ ïóùlŸ¥ÙœáÑnˆþ8ŸÏMøn·[³D—Ë¥ ¡Û÷½1™ÿ1Ç0ks¿ßÛ}Ñ|ÜÉÃ@Û"µýÜϞϭÍëõÚ¬Îù|Že9·9\¯×xãˆx{K¼ßïñx<â8ö&€×ë5~ýú#ÞßßãçÏŸqkÜï·6?@tA‚ý5ïh¸(]ÉÑ-]ïÑ\® Þá§¿üåŸÌza’£1¦¢Õ¶0þÛ³®§Æ¨$NHKNÍÿ! 0—5(Í:æX(1½Ìûc}Ì\®ço˜læ;Š*Á+K‡kâsð sC  =š•CHXßóùhàšñŽcoŸöš^‚Þ›Ò¦•X›ëüüüÝ®]×EJ²)B+…&‚Z×EkÜšëixl‘Z»7†#•`e)P9Mñ ÁÎp…mºh8&µgm¦1µº\ ãaÒv£ÙÞ @>&diªøüülÚ Sm}ÌT˜<ÏË+ŠŠÆ„»h³wî‚y0ÿ ó ³élÛö W÷fÒºå8—Ë¥Íï~¿Åãñˆçó©°Ù‚‚+ûü­åpÁLG"cqÊŒ(ÎIVtÁx0ûš!Ÿ# ¸«ˆhš“GMîbÞ"dɈh„b¾DÎÁÔˆ’q5Gð‡Ý¡…†:ãw2¦"?,JZ˜g Ï+“Z9, ßµÕA IÔ!ÐAHšåÜ.—KÃ8ο¬˜q×YRˆÕ8Žç+’™ø²¹v‚l̸Õ`¾.'Í`÷ß¶]n¡3¢†x/ós,ËÔ].­˜c Hå}ƒcׂ*“\ $y— Æp‹ïƒe°º¸ÖaÐ;ÏKsI·Û­Ê··÷f½œŠ'lα֖7!,?ŸOÍGLÍÝlÛÖRüÕý~óù×ëg—&@ßßßÌ" X‰Zðñ2e‹r"[œNçÆ¬mÛºN—R¾FÀ°ÓéÜeW±T’¶>e¦Ø¶½ €h+Ÿ¶LX$ß#…6ÃX›³Á‡™úÞZ$S8æN@ÐDî? ¼±×T=ëÔ\tKfG·–Êf—BâÚ°Ty¯½Íó÷ïϧ<iAˆ@³Îó·˜ç9þô§?‰.©„ÿõ_ÕŒÉä7É äB‹`Æ•þ/?óˆNŠQõ½btÈ­Ì]X͘eþÏÍ ‘ö :ÇÃËVèz½FDÄçç§4©*´EÍ{ÿ‚ƒ*üÞÛ¸fš`¢é‚ p#Îÿ€®| ××8½¥"‚)|²´×n ÁÄ=1¶sBçóˆ8šp®ëþr©—x{{‹•EdݤÒùå㎠­ïB]DUFq9eb3ãZÚR9–ˆhQNDY¢¤u]º a-%ÉaNþ'Ûɼ™ Ìç3[Mî?â^Î4'q¿Bgæã /%~Æ'²)ÀºÆÉ5h溦c`ra‡ŠŽÐ|€·ñn‚D" .Æqá±ÂÝ sÉ¥|~~¶y·1^)ü¿~ý’@κ~Žm#¡™ÖqìiQp „¾¸r¸ çjDBÐ0é+±,6ïvI˜ÜÇ£BáÕUtdÑ·Û­Ãd{m¬ùÑê-Žœ &GÁA«ùÌ Á·ìûÞ²§ûþlIE¯Ù!Gs³™©²X—ן8›9eU–—9ýlÆÖ†«Î¼çL,s†pX?l3ÜV—ìs?gr«Ô15ëä”@EˆÕÊ}¡Ø‹jËYáöÊn¯]ˆÐL¯Záµ££ëŽÈ .{çó¹¹|Ê çó9.—s Õ¿þëÿ>ÊDczšLKti?.ŠÅcIxÙr ýŒaåpÌ=HÜñ?…`çÂ.ížfˆ™2M“ cG#,Ÿ›áÖ¾ÊQÍmX ²°Tx^ cÆ<íÐ\Ó“4{òb넎ñÈw L)\ÕèTmUŒ¬ûDëÜÃzQᎨvÈt£K¬õå>j áæä—ÃZ‡®fÚá&Ã5,.{î¢ç ¾± Äܶ­Õš¬ÊÕ¬McŸÏg\¯×!9XØã8Zj4óXC¾ƒ;߇¹žûýÔb˜¯6¡v¥ L2oBòËåÒÇwz¥9Åù|nc¦¨Ü‘Î󙟿½½5@œ´A *!ùóçŸâׯ_q:ÒBýË¿ü¯·ƒm˜EÀ¾G”‡µkÛŠ˜Ž6Ш mÏÓ Z _¯ácM¾ g0‹µp˜êu™Ùh-÷2^A0`M8Ûz¡¸04Ü–x´V^7Ͷm-“ŒrFD«ï h—Ë¥‹lŒ‡ò§,1Ó㑊ÁÚö'ë¾£ãØÓ¢PÎÆý8—€`9\4#¯b• ®ô4ÉI¯]š>ŸÏ¶ðÔ¸çзRDMm8šé¤ð†€¨Î»PE-·¸·è„ñ±và#4Ûá.ßw=%±"`ÝsºMSƒḭ̈fž1TD†·y¿rhAN„êqYl, ¼ã}¬8sv£V®ek€ýýý=V&C«rñî19:mÊ÷£³$ÇÑWWùlYÊUÑP|UsÈÕ5¸˹”÷÷ÎM’+1î°•úøø!Tþ~ùí¨…0Ùa«Ýœ5ÑnËc\.—Î]aöŸyÙu–¥(—F Æ4E«W¡D~Î'î+k„ ¤ §iŠÏÏkк™@¾¢©ã8²g6³³¥¹Th øõ¡VJæ˜Muõ¸$‰òÙ=9’!|ç2ϼÌ ‰sÍè"â0ªýk§{ƒ*_áI­Ãhc0“+¸¸[ˆ"~ 4ÑæÜMF€Y[G5¢§û`øÌu¢6R8ç{ï÷{Çø ·f€î–hßçׯ­{‡ŸŽ#;üÈ‹`Áà/:ïÜÄdׄr\ áŸ:ð™‹*æ[pœ! š¦j^N‚#¬™„ÈöÁ¥I%LcŽkã°w¬‡XHœ3±%ƒùŒ1‹#,¿`4s£ÚŠÆûǘƶ·²é~ÿþÝ]£ÀHÐò㣠°$¸‘ãè+Ëà¸l@z4¥vuY¾6|GÕ*‘q­z<¢ðt?}#‘Sð`š€£³t™Adwµ9yà$u쌩{Dòýµi qG^F}†VBLü ˆ»Á§Æ¶Årôâ’¼]ž5’ÿo·[—!>Ön{ˆ‹“þ¡{>íÞ••^šõ™ç%N§¾Y¼,D4ÀŸÀþôj[ã|ž›«ä~ÐÀ.}͉÷Ùôýv ’6Λ8ɆÀš÷dB£ùí}?¼œ{à;öïcåc£árkF8„d>v'¸îÇûäŒ5æy’i{s­ïïïÍzæúž€"€ÖrÝKɬٸûÝn×ö?(5Vw†èaÁ!A¯ c]ÉqÁ‚^Hi}ßKÊwÍ8Æ ÃjWá -ý.û¾wþ™W Ǹ—hî„f§ö¯F¡ín^7±ÁbV耰RãgL¿sÏJOD³ÔôŒŒQäq®‹^DAÞàèòz½ 'æ© ëºÆš{M¾&÷±5·,kcÎׄÖÒY~'#NÝâ°,˜üm«ÿ¹ŽIƒÂŠb`8LõÉÙdÕ›êq| Œ±sw¾¦¶L]^Â㢑¶ld»¿³€¶ªœÿ”™tñzsü©ÑÉ0bš¦Ö´å®¹÷÷÷6v\ò>¥ˆ\{:ãù|d›“=3)3Z¹ÆÑLa‰­ý_ãÏ/Ëõ´£$¾¬ÊÖ2¹fªç–‹)u²Ða¯ª‰H ÇQ^'óx{{kÄ„iÕ? 3(Ï»ú5p6vt[œ3ÆÎ%®ê7 MœX̱³Mƒ,,mTÏóH‹[Ý2ŽÝ#ë2_V>\×S«Ž1µ‰Ùu€i¬}^¥ˆcÓŸ„¨H€‹«Æ&"ÿ÷9‰ç0‡>Ó‹P 4QuçÈvÂm©¡æ ½Ã.\½^Û5Ìkß«É×%qŒ†£9§rm[ÌsŽã´=ã+ZaçfZ™ÛퟟÕ]ŸJµwÏÁ=ÕÔ=ÏsÖzlMp¶Œ•Lùœ‡È›”™çš"^¶ÖÁwŽYÛrŒ©Ã"h‰]fìï€-™[ƒL mŸ ›:aaÞ0 s4ÄwˆtFËäH‡uX@íÖø®59­ÎÖkÑ÷ïx]/Å:âׯßA/ ÞçÂê 0 õ7ÖÙºÞ¬J‰WiÞåm¢ ïÿ±V±©B2[4msÓp‰EXÓ¿=¾gÓKrptI¬ÉááRzsç¦ 8Ž’`¢µÚ„µ8íÎûÆm#æå2‚ÝÌ(XDH¼cylŠ{X ÖÊuð’D)¼AprÜ9]OÝ$;îÇè%ie©4ý¨Ý¹€2ïcù„nÀhMªþ‡£c¶çbŒÔÏ£ßób±•Á¬¯ý8Ž×%GwAÁ ¶eã .ËQ#.ÓÂë´•5ÎfòÊ>Ó:ê÷<¯Çã¡ä°JYÊÍU· à¹Y“yžk»ÆõzëÌ{™LN%¨z‰¥‘t½á¨"-Cf4ýÆ ÇÑ×~ì3G·Rœ"äÄÙ8Q)ñgÐ#„Nb5gû @Ïû¸Ì$|UvÇDë6H¶RÔò~ä–ÏJýSS˹úز²úÎk™v˜-ùˆ]’†¯>ÈL*‚Õ†§QZÑdL´Mk¥Þ+Ì´±¶ X¤±)ÈÂáÆ)'Ô, _Ç-±†-”CK®/aŽ ‹Ý˜Œû::C(Ê*5Q謋ç?â=»;~ø@ÛÖ¦¢·r›£&iØ'?÷ö=+$÷b+Zlé­ŸÚ€ Á ²7|±Ð1”u!σ›hœ<26ñߨÝM¶øefG&rˆj_mœ5 òKD#¢Âa—Pk&s` RZÙ<…‰ÖGç-¸7ÇiÆóYºÜ‡yä:3“‰ÇÚ!¢aEÁPÎɤ•»Å4}ÝÜ¿öÉÀWoæmÂ’àÕHXk¬ãm5,d܇\‚«×FõÖ<ŸÃ†?¥-æ!¸˜tÞûýûw3Ï&ºK ¸» iv›0e´Ðɉ>ª¯¬à\¢Î­ËZÖ×´=4F˜ì6a4óÇ5•«YÛ|Ù‰B7Gw(•­%†`…i¹Àê-$Ýç¨D”+ŠýỘxëºvUdö veîkqÂõ¢ ¥-ùÝjR²r2_[VÓԙלWß¾%vÑÔB¹– ï‰æbévÒÒŽj ܰHÜÜ“Í÷J-ÝLrb)5ÛÇz—@X‹Æd÷¢Øh‹Ó3ôøJûÅ\¸Aa~¸rÙXËE÷¬ 8vߌýõ$£ÈR\ JĽܑÛZ#tnzŸ¦^€N§Sö£,KE 0ªrSGTˆ`f’¶·•©ðµ¶Eöak˜°Æõ¼?º@›p×åwøÛü£Åã,¬ê4õ QŒáí¤™à„àïðœyY¨˜‹ëDN§ z¡®ˆóù¤¡:OI°ea½ÌÛ»xqR5¿w˜~<>9¹º4ÏŽt9ÌDSzŸ[u"‡f, m¨ÜÊÔ@˜CP„Ë÷ƒÀ.F;àìæw†v ÷÷÷N ·­/¼™éüv˜ijmfÍ>ÀEBz]l=Dz€­‚ÿ÷°Žó2ä¢rüâHp¸lú¡Ð\ïrDÎqÕ¹#qÄÑS˜35Ï}ÉŸÏë8Ž.“¿Â]&‰À:†wºœ} 4 †`9d¼2'ˆ»ïYe-!\šÕðXã¶ +ÖÑV”õÀdGA˜x˜Ëüp§Ü‡¨ƒû™?þŸˆÅ0çëÖÓ‡%#$œ½Q§hÇQ{ŸŠÌûÚ>Öй‘qDí“SÅXk8Z aÚYHV3{PhXSœ“0~ˆÈzBiáƒÙ.˜ã¢›CIÆwÝiü.ãò²ÕrWݘ“2- xíõÙú:QfávÊ»¯8çT»59¡êEó:;ÍI&EñÙëc6M}“Œ+Ö¦:o3¦•ÇЮ´rî1F£‹A+}z“sÅ”þÉ>Ó¾òF•Í„p”-á¹’A5hd0Ã\pX/Be¬áй4¸îpãû˜XöÏ´( õ¶rŽBÐxܘ¯ó¹Þšóåsgva´÷,;ê‚D:cîb ÜÚàˆÆ¶€ùez#tÛ¶5×j!ÄŠPi¿Ø­a à'Ÿá[Ô3úI˜ va3/fBL/À[{vÐJ'ö¬‘ÎècÒ£¶VŒ˜‡¹€‰ì^X“7t#Ü#ø3#ìjG«Çµý¶‘¯¢-s3ºÌ“{–°qd(ó/ }€òÌìæ¼¨OeîÉùWæ™/|upCr(SÃ…Æ ëzŠÓ©?³Ì@‹Ex/ õ…a{cþsm8k‚c[ Á®¨tµÎ!|µËØcªj Fa½N¾‡Å„Ž0:×VI¶iЍ}UýfùÑ•À-±7^EDÜïóÜ+g)“{™³oè8(ÕÔC¾Úù(FÇÜà|¾4úüç<¸¡ÃEp´=:ò±?+ ..¦ÆÍQu"‡áÖÊQ›ñÙrÑ»P0Ì…eìçEØçyÖ‘½U°õ+KTiyžçh6#Ídzm˜£:ç¦ ž¡‘aÇÍãbÁ £Á`Þ­Ã>”ý8~¿ðÂÔ…ÊŽVR0j±Î`ò³,K›4 ôµ%Týt4Ê¿tíí&b d¶È˜ßG8GkçÜ…Ä×ZH'$ÎÛ¿³…¾Î¡Ÿ¾UŠ1¿b¸€ °— á˜0“}Ç‘Çw1·Çã‘QOL¶À „1ópŒ\rqÿpƒ¿Ñ2Œ„…ÇÑ?!ã;7ãp¦0x—Ù/ëä˜ç‹æ£ed*]ò\ìæPƒàœëÜ)£K»@hM¸Š…ðFX »¦f×T¶ôQ¯uº’“š ø»6áÍ)(L€°wÞYÒì",‘Fè<œ‰…çÆKXúmÀ›Ð~h¹žä …Šbâù\•nÆrÀ릟¢Z¸m%G¥)—ì#·Ž™V"»Fæd÷-›]²•Äו‡ˆn7á8ÖH°ŽV=†IùȰ:Ëc }­Ah .ß¶©Ù`ÕÌrdÁ+WF‡VRšˆ5caš·IxG„d÷éÔ€A" dátÞÈQ ŒËÏú\”ñœ €f®×U•Üþ CÖÌ\-ÜvuÞå€Á³þ8ø~+ËKušqÀ2ŸN'—æ8ŸÇ:Niúèó-4LtŒÁ ¿˜¼ l!ƒ1&8àÊšäǬ¡‘#8cÜñ%=]å^ëŒ(ßmœÄ¼Æ°qÈ£À0nuñ•ðÁÄçóÙ*ÏDŠNÒ9d¶µ³PŽá} ^nbÏïôJ„ ´…²…„v yuÄÃõ8¾71FX³`™û`^ƒ([̵Ìd|c&‡I1¶­Áˆ¬©Ö\´§·p•ïµÓÕv¢æëpÙnkšªäáTCË„®ý±d¬ÑÚo¾Ñ[Íçžb]££»dƒN>»Ox¿2!:ßíǺ ‚âðõúzŒuoR²•øÎß»<`ó7ºD ãŽÂá°plÍw´ÀúFÁpd`Läð‹õxÜ»– ¨ûYŒ¯F÷ìtÁ(èeó³žæ¸ [»[¨ˆè”™cS|øúÕ µŸdQ.<¾ûPŸ¡4º¶?´„Ú¤¹¾ST÷Òà IDAT¥?aÉ>j“+Ö¶p=&š»Lª…ÓLó}¹Ç½ôáynßÈsÒú]‰ŽG`m 6Îó k;âœOe_ H¿«;}´™¿ËÓ45+äûc½W3Øé|ã}›ÆZhf:=A&o÷âðMs¦rh°£Œ‘¸Öîa‚Ž5ªœStVÃis‡ÅÕYWh ºÍX:4¦óé X\(s€NΛŒ€ÝÖolÓ°bŽ’•À9ÖB/̾ïíŒÊ¨³‹òK&ÜðÇ<ÕÁëÉù€’ó Éì!|€¿]Ÿ³8›Ïž`ÓkÀýÁhž gfs6²÷º“<kaŒoz ¥îqÔÅ}Íh˜çö”ª?(»òË/»&æá³ñmFaOK’{y2q xÉ*õjŸ6¦p­…6ÁÉÀê£%“V¦Nxf‚åSóå §l¬Cà_ ž¹‡}¸Á)DL¢U¤µïý1ãc¸уEÏ×[U“ÉU¬k™wã©Q@ì\„µØ-;De^-úxÍL‰0àzÜØgÍQ¢¼˜mï7·;s¿º";ºüç§6îk Ëà—¿kC­7“öß_£‹~Øk3Ì%ßëwú`^…Ûp{¡µÔ€6¢•™÷¨­n«´Å3Xĺä˜õ}§V,˜}½^;¡tdf°Ÿ×Äëûå–â7Ñ“y¸ú¬‹Ãa|éìû=Ÿ†é¬£µh—¼lŠ¿Ë;PÔ²01Ž,É4 ŒÓîÖ"6ps­·*8’'z __Ì›:¥p4dW‰0Žá´£¡Âv{DäÆ,7=1§ X ¼÷õØUç1&™¾À5ŽQë÷ËQä²,±þþý»5ä8É5$'bæ¹?øÏ@v u!Ž⎧/ÚŒ›¼OC5ï#8£ä~*¼“YûÇȦÜ8‹ërgcŸ¡E+B;4wÈü]Jà8"xÆ ×gÓo!±’ÇñMÔšgá;Ùf…±0x7QnÜï÷X] âb~OšW2áó܇•ã`Ü“†Å0ô9gÇÆûâG7„éw…§ŠY÷:kŒ¶ÙW#°X®ãè›› ÄÙãH͹ khÝ«,j {¯‹ÕôërËÉ£áGÏaÄAóÛÃÈ ߘ<×úÈ(æ:æ¬Í¹¼ÇB¬á€h®­€«æ„ØÎü,äC ¸ŸïíúKŽSÍJf–Ã{Þwl‹kkÍÃÌÑ/ƒáˆ>êa>`æítF6,umŸ5€òØÁÒ—WÕÓÄ´°Y{cÌ‹ðÝü»¯a0,âxß–o´Hc>ïÓÛz:ÕÓ%ü]× Jøêû¼¬Lã¡¥óD|Ö?º­ýÃ&¼&ÆËzÑ[§`Ð…@ÅQçÃØä¿²ˆåZÙÇbT=MS|||t g cYH1º¯‚Z’™¤ÝɈ?8æÜL°Ös=ŒåûÙbdߺè{ì1 ‡9Æ“Š>^ ‚lüfL`ÐØýØ…8Êið]Ž)ïSVÜßaŽŽz¤Qˆ™—Óã½^¦Z»Eöa`5äx>5|ú¢uÆ)6ŸÖR^„«¥=½ï·`R<³Å³Ð~  Y§Œ‰5Æq4b =z«5wã!`¸ ÏÛÑ}•3¸W_ÿ¨b¢Yä%dÆøNXøÎ¸ùÛL ›¾¯»ìÚ'lxÐn«ÊÚɇ˜žÜw¿}ÿúlÊZϸƒŸE;óÑ— øý~{MªLàåÈ„ ™X|o|š†£’ˆW¹ûe^ßßß[ €ŸÑ‰÷g´ô=¦ôc[±CÑ!º °põ`°ðóçÏ–Øë‹–}QÓnˆ¬-ª1¦² #à`­â·¾ñ³†?‘o­“ xvs(ž-7m¾§]™³Ü)T}ða‹2bN%¨çàAå¯ë—&}žˆ㪭ßGÏfæ,$_·:8lfÑ®qXh­1˜p›bRíÉ6ƒ3§Þ¹Øàñxtå_ƒVYÈaˆ…Ë×¼Vý#b<®Á­_~Æ¢Cr¬­ÇÁÍ#9÷¯…O¤¬M=¾Ï°YØ÷G÷ÕÝm :+t„˜NÂÁh'›*“·‡“J6ïã1QΉ0¡Ô¸þœöˆ:t×>Ý)Íyö¨d3™qÙŽzŽ£ß˜e«4ºE¬B†U¤Í÷³ Žõ¡Þz•e²rÖÄ!-…2Èw tŒ° êqË™ŸYbßûæ³óùÌãlá|Æ4ºDÃ.&üx<êHåO °†šøvt h£[ݤmÐi¿°ð}3­0ÅÅ9972ÊÀ›ä¿M`2“†em…8҃ᶾ8·9ùfü˜ëýºG :ø}æÅ˜Þ˜o@îÜ̶mµ÷Øá ­ûŽ.°,\ƒÙ'aŸkóŒ@z µ ¶Ðb °hüŒéøßy ·0ZF°]¯ÜÄŽYvNb,uا»E# 'çÆÐðÌZ±Ù~·ç†WQñuÿñ#xol„:Ôî0¶~Îó«O‚ )QSÇÔIïqôÇk;ÔóM‰¬ß„Â=»jšÖP Έè“¸ãˆrûaÔ0ˆ5bµbf¿Ù×=Ÿ½›á^åúGÔÖ•CY?ó ‰c[D sß"2¦œ–à:0­dñÚ]G¼ÎÆ„Úw²ˆmãt¤½s9 :&ëœc¡c‹ô9 Áb8ùƒUÛ¶~Ï­AÄx¡u•eìk<ÂLƒ!ýC òIå~9³ ¡Md¿, KÃ{¦N_ÂÜ1’ñ¶d)8q+Ó¶JОã îé¿mV?©µJsÙ'}øl¬0Zzkâuú‘$m ìþW„ÀcÛ¢1¾w6˜çóÙ…tÎÙ=Á0•|–jt­Ïg=í³¢ƒÚÏë“]Ùè2_S;Ü·“ÐJY;f-¶ Üß?(¨Sæ§­9÷[/—Kw4×<×ãÈìFŒ¬­ýv=nm£¢j,Î(Âl‡‚Fö¼çg _.—ÎJ0\ŸPÛzÛ(xH#Ÿ[›,li*Ûûx<ðun„öBÖeš9zóJv“Ÿs–[­°Œç¬¸·öfÛd¹Kã- s[#Ê8sêä”ó f¼µÙaØívkÁ‡záv+à˜‘!6¥,Ü)scïÂ?¾CêæŽM>Ö|è æÕùcMÌ8“&b‚QFü˜ûˆèÌ7‰ûêÚZŒL´[)Aé÷C¸ñ˜N3FAhÏ M9f501W –Oi2¦[–þ¬3ØL£•ÀS§`#è/«QѤ£F„ sÚÞÖïÍó\ÀXÀí–Öƒ'rÓOéí¦e"û‡?C„— E‡IÜ·9¦ ×u}àøõñk‡#0ï€ÃýxK¥µÃ‚å¨ÂX0-PÁ:&+J9Á®ÔÀÖmaf.¼6[&»x ¶p(>ÒšZ¹Ï;(KYÊS0‚t¿ß+êq¸µïµqéó*i)_ð w‹¸ÐÕgwÂbp]yMeío]—½ÄáKÄd s‚Á,éÛ*ÜÚé4B®ëüº muH Óá-¸=váz BïµÛñh‹ÄýÇcFø<…gãè#%¾ëN»±hÙöhaҾߛp?‰µ4‰‘»ÞieD:í·™0kãÎ9¬H¹øbMœj·ÖÙ'OÓÜ=>Í~3kA¥Åà#ý}„‘‡^Ž÷7¶2Ó ôÅ9c+hb¼ÍÁ5€nXîëï8 ƒ¾þí5Q¿+W?jcžçî…U0ÜÛɈ#N(g—š‰f†8&o0F.2|:ÚÍÿÖj„Õ„¡ÚþÞ–Žè áEc¬}#óŽãrMÕf#`¥®ùÑöŒ‹à¾äSÆTAÒ¹ŽD#Œ(š-x?-øÆ+®¦w¹¡ÏÏÏŽè,‚guÖåçbÌqdKẮ/têbñï6“7¹³ÉãšÐn/ÀZÊ}ÆÃ~Y“ͪ“O¶^I¢½½½unj E½¶Ëå×ëµÍ‰ßô·¸ÒìðÓ8È© Óz]ëˆ-~;]¨Ðmò8¶ÒÜÓ8g½\Î/"öõ‡ŠpH"}í%)¿ÇóŒ³úL–c)N§SwH “A˜X„ 9Ïù؃ÝÑÌ‚òýœ3[eÉ 9ré5hmst¡’k!¸èÍ`fÑrËp_‡ËX¤ÑZðÛ{ˆ=‡^¶€#.) Û ŠÂJh\Â÷G6W÷7û>«ß$_©¹àpóv»µß 6°,ä^«DÓM ˜òxä©|$ÌdcBX›o"7[‚ül‹ÛíÞ4ÓOáÒ~ábK­Ç1pt´c¡!¢­•Á(‚g+Á1\ŽÒø{tÙ¶ ´·•Åùš>ˆNi"^m,Â/ ‚yDÿX‡1Ý<ÏUÛI«Ñ÷v¸Åw‚¥àûn/0¸Œ(ò‚8Öƒ¡æ.ëÊ÷ÇÜ Âi …`0ÿ}ß›eBÌ4çqŒ;\ýž&ò'ýf¹ïZ"í Ë*õ{H¢œn§0 E™“1ãIP ûH¿ÕÇ5X§)b]“Hã“Ê“9¹íÔ1¸„½8‡m½e£ÍÚ¼,K‡ÐÊ®C¹þóóçÏוI6qè«uΆ”ífœD´K3¬vS£õá}Z»PGíhŽÏË€ßæea1Hµ‹úÎj"#ÆZ??q%{s˜q›i~oÛ×ëµE¶$ν`Þ Œõ)fk/×[kBkµ’ȱŒ§lzÓÂ=›K°O6¨³k³µ`¾V[BoƒE®ÿî¶ž×wgÔZø˜§Ý®Ýy“|ÖÒÜÍ™qüb,‚»É•®m÷yŽcIÜ÷*ìQ[–5~üøÑ-ÖøeÛöÖ‚lª¬c8yGÛQç.÷°Œ!â²ôg³ò¹-‘á¹qæÝÌ+æ÷›«F ýšÛ)Ar$õ(Ìw@ÖÏ)²@B ¶*˲tEÜãˆÈ¶^ ¶m üóÃ\\hÂŽ[rðJ»nSds—¤â†%©Õ ã0;ÎYf>%ÈãVQ %/"Âí1$ä˜Á| >ÓÂru*D6õœ*(¨îA˜ Mýoc*:VnAA ™«ù-`zµ'äs“h³_šÎ£E7h Nhy…ÁýÓ*K86ý ܪ‡¦³;Bƒ+&F„@¿1„(³û5æp†FD·÷h¼gòˆÓ©ò>MÒ÷/Ú3 ²-‘-iøìÆ1žá:_ïˆð8ú3~/BÐ=.˜²uàÓôõ\º¯Âùõ9L­f÷ööÖðEDŸôL`÷®xÁîà `@ˆ)›°ù“wÄ`f%¡Š!D,ü]‚ÙGQÂT¢ïèr=Ôr`  #¨Ø2wºã¸€?-ì³»·Ý‹-Ñ$™£ñ #Kæ¦r.%¯.AÞ‹ k>Z¬ïh幟-×z{\.®î÷{[4Êä÷½ÂD~ˆ*0»vSH{D´èa@¢Súã7IÌ‘K92Ü´{ˆˆV½MƬ_L«M8V ¹ ‡™É”5î÷G'¼Vg™ ¼Ã<¯±Y+çÖo§åûv¡(#‚Ã{»„±v x+üì#ŠêIaÒÖ$?¨›ï|||(Þï{gÚç8ÑÆ{>Ÿ­º¶¡Å 1Ì£ˆipi7b+ˆ‹,Æ÷ûz"¢;”ÍÆÚ0;46~ ß´m[Û…hÁ5ãínìJ¼&[t÷D;¢[q-ß™Å}ß_YÑSÜn}E ~>±®§¶X»šÇàš¦)5ÇÝæL>Óè›Â5tŠÑP Ql"±x0íu¬T›O1´ßŠ2F%4GGŸ–wÈk!Oáî-I­¹0߈9øÌ'EÙj9ºrÆk-ÆëS©ŽAYúhÍP²,K¬œ™êåã8 ¤Ÿ$N†œ+æ®´½…. S Ã`°ŒGèÿ¼\ú§ZÔæW½¨i2ÆZÈ"¯×kÓ¤bv4&ÄFË2Ô¬ ºÃz'þ¸çóYGš¹¬oâGD§TÿuíXíhÇÂaëçô€ë{y~¸vƒtægPþ5ô:öfõMDYñ‘y>Mã HÓdõ9ü^ŸÌ+pÖ·Û™@Ùø[ÄðX‰ü„çàtüq”ÀÂÂìÚtÿ÷{Sq»ŒÃmÊÇ‚9âQ „Ýø`ü ä´€­ÿ›éVîÏ|œŒ³°”¥˜_ìÔÂm•|Ïëk-êïïoA®ƒÜHôhDÃ\2 l8Ÿ/òæ´$"JYiÿžôÄX‹xAò)M±Áœˆ@Ôëzj‰'[€qF9禀6 Rþßïæ3Ã`|5rå.C§ýÁ£•sŽ)[NÏ(ÚŸÆÍk/&ƒ£ XÚúŒQ‡óy]ÿè63Ín…×(<ÎÏX8 œ‚r/"¶±Ê5ÍõþñÇMËÐtJö?~üh¼Ýnq½~¶BÚº® |Ú¤—Ôž@- |é`ùïÚyHîÄ׸ß–ˆ…;±¶8Öæiê÷¸°†¾Äß?èÁy˜1IFºÞ¦ÛÇtøÈVÕܲ¶^òwX…µá^½Ï“õÛUAgÆC¡ýz )Öv}{{{)Ìa5ð¤–ö',å w Í1ÏÕµÿx<^ Lטç¥ÛÝ— O÷/~wYŠ8Öº}~1ÿ,A„x,ðr¹Äý^}±¼ˆd,¸*¤?¯þëž^Â>„- ‰Õ#šÐl}Ù¶­‹tÀmv¯­ŽîœÚ·ÕëáBß½æ”÷q~…{²ÞeY23ë.ûdl´2·K*3ÈÄ0çÜÜ % o¥1ýÄÊÏ–™¬è'ë +Ù÷ý£î݆›P0yyœŠúê>sôRYÚÃ8?Á@>ûüülBBc”­š` õÍX[^Ó¡â÷˜Óḇ aZÀƒf~®6%Cæ8ÞÛDh~>Ÿñþþþ"ÀEZEŸD“.£œkmΪM`¥}~¢Êàý®ºz4l¥ÍFŸç¥=šÕà6Ç®óg™3,FõïwÝõ¦6É„ú~Ž.ßÌ2N&üƒéõø£ ±©Ûs£¥ã¨ç5³¦•Þê8H8 Òନ¿ÍÈéb®p-ó_šPý[üþý»¢ÂÉ©Ó8¬š_aZÌ¡@ÌûýÞŠ•éNŠð£_}>Œ7Ñö…q½;ëó¶ºÑ1¿õO{emÖfã!Rõ0Üý¿cZyûxVøi+çu[¸™ûˆ{Ö÷¨^…=>??ÛDÏçSì{jôóùlþ´w¥™™9ÍJ+JœÅAn£×°þ‘'ŒÚ÷œŒÖ;bX×µ¹Â¼öë‘\…qêþ£¯jw%M8»EÜ¥Ávp£ÃXÜqåjòÞoooÚ|×·G2G¢?G“Q°VÆ+£sú`,8Ž®ø¼$£~ÿþTØqn¸}†«­ÙV¹ó¹ö­xÿŒCÚmÛ»]Nbîˆì$ 8€U=e«2Œ˜_~a0ž,¹˜c¸ßkO„.íÌiOPk©q“‹ Œï»‘‰q 0 ¼ËÜDÖý^é°&goGðkk 7ðÄ4evö|¾4 ¤% MèÞE‘;þœÀÀ\˜V›®*…MÚŸð‡¶­k¶W ªÄ– FùŽÅ—CP, L·æÙaÍF` SR`ú¬‰¸Rï'"—„0>íiÄ1¬ 7 C‹7e}¾+ÇržiÄ)ù½’yžc}{»Ä²Ìq¿ç)ÔÐRû¾}Oóv¹\$vQ諉T˜X)æÚÎÑœ4Õ¹3ïóó³ûبp }#•å¬\Aí‘æ;ŽìÆ ÖÛÛ[Ûç]†½XD'ô¬õ„ÇŸø÷BW€ë)€S› å hÍý¶[X°(_£ÅÞj¸Œ´~6ÖWJb-Æ~=»Äµü`æNm"›<øÐa®›˜ÒRÌ S$#ÎçK—™Íðqí²¥·Û½åd|ž‡s›Ð¦û…e™¸¡dò×Ó¬GƒM.!²- ®×s¶f{í>¹»kZ×øüüìÊc8oþÿ­ã{ vï]6Ý´=NYë!Óú§?»í ´ÏGŸAtÙÀÇI¦Qº׵F[ n¹¡¾‚¹®KœN?º+ñE%…*œæð¾þØ+æÄ}ýÜ`îó|Vc5÷‡Qû$ÂÁøcDc!Æb˜nÆ+€SG (ô™ÎšVÛåciÊ£ä#øÂ‹e®û¾ÅýN½ž¡› ¯SRË @ùAEäKjñýîÁiòŽ¿hàÔ‹;Ÿß•û tsÑuúù|n¡0ÒoSúx<;«a¨kjç¢j̱ðwáþœ5˜ããA#h€»ò}ÆCxPçFP‚ï"ÏÕå G6vÍÜg]ûç˜~o]×´(9¹Ä&ëúµÒQI.ç~¿†Ûö² «c¼Ó.™C¥xßë º|RÆ£50ɶå* <µŽµòÁ}æ¶¢‚è6ÅxüÚ!3Óµ}펷)NÂ^±ù‡aXÜàqô§›É(-±ïiá2“ ¤+̘é_}Ó˜G·º,s¬ä=¦ÏÏÏF„Ÿ?ÿÔ&CÈhªÇµ'Y6Bÿøñ£ÛüÎÓ´4ÜßM‚Õ.€~&},O1³O§û7Úp¿×¹¶òýý½Õp0ñh]å7îà„ðÕ¾-ׄÀY+*La{{{o„Gˆœ?Áj¢4¶`©šï„btõ\ç(/Ý}_‘w„ýzÁßâñxí=&tËA#.—|îívó9^Nw´DÚétަ¯wáx2ººË'-?€8ÇqÄùœÏðq]ˆÐÓÖî8j³”ó*œL0G¨íò0Õ‰±. õKëÌx@2ÌH¡¼wÌ*Ù?©€¶Ðå»S+mÙF—-,4ü]xîx¹™zh¨é̼ü{žû¼Ðšóì|8ûXpIFB6¢ðjdÁ¿ÿn¾4oH¾£öý8¤Í¨æÖ4óp²¨ˆ[Oà¨<ÅÔ¢—Õ\„¥_®çBt¬Ù]çW³Bú½›[À SøÞvo#â¾q¤€vmî2q4e) UÖÅ6F\9·þ9E-˜HFøé`Žô×é[}àK6&¥F׳‹#Òw׃#'m0òö‰[‹H 4oͽàX0…Ô¢HXÂÖokàv%Õòè$÷qÓ£¬¶dfrDEvÆ.>±Ú–Œ{Û¢¡@^[Æ´ÛA¼_0æR –nHëY zîûžÕã2qK«úæ@ÏvôI¸’¼åÅ )Çgâ! $а*Yy.S™I¥J¸Ù¢î-×Ö€/5 ‚ ¬}VKåÊ„‹d#y5AP74Å<‡µfj>ûèó\.qBŸ€’âÊ¡ ÖÚÒ:lþÎíx$‘Æuc·[YÁí‹°yóÞúx܃~{:âzý[œÏ—×CÜqN^äÙ´…ÎøÇãþ%Òä!ʯ׶HˆaÍæbÁhcyNΣ||œ:³õ9*ÁgîF#úàÇV ëü‚`Y‰ZçXÅ…Dæ*ŽaIDATi_ýúՔЅÓÞ}|ÝœÑçl qà±8ÂÚ§QÛ6ŒWìv{ž…ÅtÞn÷—ÐT:™´ “>³ÄŸ„v›$õˆ#èôª¼ÈÑÝ +é“¡¶µºqê8ú> 'Æ2b«b$Q£ŽœëÑ", …Ñ`6'Ö`”Ý J€KBð좟^e#ôv3U2©3ZF¬”ëãÐD÷ÍD·æÚ–SÕs\;×çý ¯­ ¼®”¢—8Ÿ«æ×¯_M³ÎçKó£9™*õÿøñÑíóùlÚI&–$pK&öª¼ÎË-Ú¶-þøã)éµ;¦ÏqËãq]tæÌw||‹÷öb1­¹#*¯“й¢<™ƒõXÐ Fa¨s7v1Üc¨j¿èÏÄõ8¶Ö\Ç=q£;B¢¨'♂çó©I:ÔÅà¾Hg†€R²§˜¦¥ÕtœL®}4BG!DfëFµ?pÇÝt`$oYja0—.:Ö“×W¨ëdß7 b —_~L®…÷¨/Û#ôf²­ïü‰Kß1Ý6ÏÙ ±v`סøh]ìš¼.2à¬oš^LJ^.o¯‰%£/¤%ÈYÕqè$saš2mÿãÇGì»OkÆÜ&óh ¨H%¶:éíè{¶vžçøõë·"¡ŠÆEóYµ>ö¹5æ\‚îÛÛ›, I´þ~¤ïmYÆ<&LÇ 0Œ¶°pÍX«q’±r5îé÷ñ8±MÈ@'×wRQ¼­%Ú¸+¡pÄ·ÛµE0çsú­ß¿Ų¬m_O>ƒÑGi­]2ìCêB§`í]V·^‰¿e™[µ”£8LtÚü¿‰œ»RK>>>šµ`—ÝI:ç3á:·†Ueð×w¹YK«æS8¡ßÝПSWÚ]îh¬óÈŽNQìf<ã@ÖʽؤgðàlÛëívÓ)ÏC9ŸÏñþžy‰ëõÚžØ5MÕ×ú|nñÇ´ºnâñ¸73ïbœŸšøçÜ,×âÂ2Š(—@n+æ9ÆëvKËĸÞÏ[sªóÏÊBôÇŠõ9½2Íud§#‰Â k,KU‘0CP*µPµö$ç1QX‡¤¨#´1jÂÅ¥0¸›°\–ÓÖ™³…ãˆÿèIà>¤Ü_IEND®B`‚src/BWidgets/examples/inc/ImageVSlider_a.png000066400000000000000000000006001515163050000212550ustar00rootroot00000000000000‰PNG  IHDR2ˆ¥n¸¢ pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î< IDATxœíÏ1.DaFás …Ä6fUv`–@¥›° B%Sê”v ÈÕ($·¿9Åyºûÿ{$I’$;sÁ!—l¸æ‰-[ž99·?ìåwN“—+f˜x1·7âQ&Ö‹­ÏÅíÏŒ ùg…ØbSˆM!6…ØbSˆM!6…ØbSˆM!6…ØbSˆM!6…ØbSˆM!6…ØbSˆM!6…ØbSˆM!6…ØbSˆM!6…ØbSˆM!6…ØbSˆM!6…ØbSˆM!6…ØbSˆM!6…ØbSˆM!6ãBf^·/£æÆ…|pÎÌí÷×pÆÄݰ½án8➃]ÿF’$I~ï ÅÒ¶§IEND®B`‚src/BWidgets/examples/inc/ImageVSlider_a.svg000066400000000000000000000057031515163050000213010ustar00rootroot00000000000000 src/BWidgets/examples/inc/ImageVSlider_d.png000066400000000000000000000043141515163050000212660ustar00rootroot00000000000000‰PNG  IHDR(4øêz pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î<YIDATh¥™ËndžÿS]Ý=œá R¤äˆ¦dÁ†‘ˆˆ$#p¼ÉB‚h—mn›¼Aö ø ²È#$@²QvY%JœØ"‹¶ ¦$'ñ"^f†ÓÝÕ]'‹®š®îé¹P:`¡«oÕßü§NÕ©"a¼QÌü€k-1£ @Ñ!3ob3M£»¢ í¼–Q͵å ~ÉŒŸ¸2CGÿN)õ€ý¿Ë¯ÁO˜ñK³6à4µÏœý(MÓœl"ìÐ÷ýú+yv8ó%ÆNš&ßp<‚k®õlEùk"l¼*¡-„÷RëìSÂrŽ@Ùkãê#›¾ò„ "¸?Lë¼ÎÌ`뙯”J®›º«Ö¤R}vh¤l|è Ñh ‚—žçý—™•ÖY˜eYÀϲ,ÔZ³ÖšŠ™©èS­A¿ÍÌ ¦Í·}ßG)õ´D×-UŽ  ¿Ûl6±¼´ôE¯ßÛP*YRJAk ­5ªê"‘€€â ITÊÌÒ(ü}¿­€i™9RÎ@JB¼;??Ïaи:ˆ"xžD£ÑÆÕTs>¬/ìGƒÁ@‘¸à˜…«2Gá@–L€ç‰w.^\KÖ×.…J¥ÕgFÔ+W­3<|ô?Ù¶—®h:p©I(Ac?–•[,T”¨Õj¾±¸¸àGI„$QF) U›\„ç¡ÝnÏ‘ ž+æå”I œr`RG¹%3ãÒ¥Ëç|)÷¶î~>IÔ˜€¯\¦òCA w¬šÓçôÕäÚW£–-äÜËûàÍ›7½v{~þü… mfÏ|{6åÜrrr¸úâÅ.Ò4÷šâŠÖúk›â]8QH«"ÉÍÍÍÅk×®S§³ »ÝSQ߯Héþtf€a£¡†èõzæ®Xô‘Q.0@Ñ÷ÜȶÅ Áâ V–––ôîî ±yïS°Ö€pû€a„q­‰èùù–Ã{½å^àU‹œëZ7ªSs¯:žåA¢”ꬮ®ÄBȹÎÂbí A3tJß07×PD˜6–‘÷Åùh!Œ*n4§N±S¢Í”Rz+++’™ðæÚzþÝ™ú¨œý~W>¾cétø(úh4nàX÷—Ôžç‰ .ðÉqΤ9v¢13Z­y÷å9m I†¢?ÆFUéÀ¹ EØétüv»Í[[[¸·ùO0³AÂ*•ËZꇉ¢î­VsÈŒ@«¢œí¾)Öõ®z®Š$ýN§“¾¹v9üÖ7Á\ÜžÃdÿ`øÑ?=ɈH/FEíÀœ‡ò¸8€e§Ó‘ssM ‚aØÈ]Lup5¸•çTš¨ˆØ"€°纶š/–L†a(… ~€ŸýüÇÅPyF‹¢~ø+wö ”Ví{Uõr@"Rišúwï~‚G¡#D@³Ùœ ˜if³é Ê‚¹¥µu7dÇqóàô½^¯6Š»ÝîT@€! ÉÅo¬5â(}qPCsâ¾ïΫgnllzŸlãþVYÁ""§¥”X[{Ãù»€ãlj8Ê7n¨;wþ$ÖÖÖÁì½–‚I2pƒ¤®¯Œ¼6í±··Ç:ËÒÚž{–E¥-š “—™3AJxùòàH¯õäéöÈ03«I)‘¦±f“õ2#E9ß›Zž·ûàÁ>99éJèýýáf(6JëëåóF"NbÇÅ£ÈùÜ%g]í‚– ŠâƒsË˺ó÷EõYøì³b߈™û(ç{îrsœ²#òöíÛüñÇ|±»·'S¥M6s¶õˆùþðèÈFeŠ9˲‰JÕíËâ$J£h Í}›óÅ(ÓdŒ¢.èˆIÜížÞypЊc…$NJê ’5—ûg¡ sæžìÏ8Ež÷ÅFI«¦«èL®–px¸¿Ùl6:×à 8ÏjÌŒ§Y–ùù9è£HPm±Šºn¯B–𶛕»ý~?¹¿õ¹×jµÌÊ‘š_A· h­9ŽcÞÙy. ×ó.€®°ŠFÈ:7—Ümy08ýÛãÇÛ·Â0<ž›kìú~# }É2 @”e™H’D(•øJ© Šâ–Rj^)UZO3ó3'"2jö ¨…´‹§º š,Úä%Ir+I’…n·»Pôµ²+ÝãÓZg ŒMõOâººêæ‘(E«âÏU»?hË”UkÏüÀò½êcäîà$7!‡€iýÀÓi_ŸfZó'Ζ°¢/º Úy{ÄÍîÌ‘2ë_˜Æ^ÕúY¦ï8pÇ íƒÖųôAöœh­¿ÿ÷fMû.òÕØ¬ö¥ÖÙGÌÙW(é¨Rìu W7³”¬:๠—Žç…ß#â÷\%Ây+¦¡à€ž1c›9û{–eÿA9Aµ.³{1¶¸c ½W7`OtÓu[ìâg–UZuóÜ-Õ©®n׿˜Iù7€ó’ûŒFy};nñ]ݬ¦^µª¹ ÔÍiu šêâÇUµ ç*Xý‰®©×Í CÈq“î$ÈiÅšû±:ØIyàTÀ:È*,jêu6´zon`ÝýqÛ“Ú©ûøT°YÇ=7íܵYVqcçϳ%~¯þNÍ´~ü?íí†å4.ɘIEND®B`‚src/BWidgets/examples/inc/ImageVSlider_d.svg000066400000000000000000000460511515163050000213050ustar00rootroot00000000000000 src/BWidgets/examples/inc/ImageVSlider_s.png000066400000000000000000000035531515163050000213110ustar00rootroot00000000000000‰PNG  IHDR2ˆ¥n¸¢ pHYsaa•ø¶tEXtSoftwarewww.inkscape.org›î<øIDATxœíœMlEÇ{<=3‰BXDŠ@D|ëh¹,'$®+¸qâ’#g´·=ìuO+­ö°7¸¡) Áñ™(°NBœ`²N†$†œÌã0ÝNÓÝS]Óî¶gœþI#yª_½ªçzUýêk ¦¦¦¦¦¦¦¦f\inÞ¼y0L¬we Ñétž‚àP£Ñ8?55uªÙl¾5==}ûz×kXAœšš²Ø§733óת ¬¤¹·mÛÖéõzÛÉ2³ûª(ªõ[K&4 UUXmˆSéÄ„½dz£Ñ¨ìW‰ân· -ÁxµHHÊf³9^-B߈”!­VkÕå™ÙãYé Œð'`˜Ì_’ôn”5ù0‚‰Pç3Àμ²ËÀaIÌl;ðG`Ÿ™µ%­ôÃ\CèwÚKá'‹«À/áß˃Œh·ÛQ‹| œÕaÚQþ2€¤.Ð53Iú4)”kˆ¤eà³<9¢>"iajþŸ•èÓ"˜Ù¤Ý꘤«ƒòHÂì÷ Ón·®ifOÉ‘í¨¤¨Å‘ô]V^/C$}á#¯SVb§ÓqvvI…[¾ºáp"­:ÖGJÇgÔÚ<ë9"é|2QJ¿û‚ ˜ÊÐßžwè?&é\^=}:ûOÀ{yr L–´Z­Ty¡ÿ«?ÅZ»–WŸ,‚kMOd<úRÒõAÙ²\«ÓéäZÍDò7’~Ì«§kÝR/ |©´f³é,OÒ‘aˉ¨Ìµ&''+‹t³ðq­û€{sÄ–è‡ß…omËê#1ÓÀ^úÿÈ­9º»’¾Ì«§kNæÉ%qµHèó¥„=¾!ÊÉ?Ä£Ï$®q”s;iw¿äTVð;i—ȘÎFu*ØG:¤ YôÉèkÍ [£"-"éìЙBÊQKºÌæ»b2ê! ““y“Éý£¢T¹ô“Y^ž€™Ý Ü•HîJ:íÊÖh V™ÙàžDò¢¤Ù¼¼>®5Ì[©"£V8HM |¨ÒµF.DÙ<#…( áœ:s]+¦sý°Ç'D9'éX^=}\ë,Px| ó"p±LkºÒX%kºö[%•"iC²¦F€ß¨• •”¹ŒéCÑå¦$>£V)±C¡X.Ɇq­ñð­Ø°„qšw¬î³§"‡±r-3›ÞÈz6V†//‡;[¿cl 1³ðJøõÕäóÊ6'+  ü=ü{9ÙW|B”ðP,i+ƒ[rQÒ':Ä}:h‘›[s’º’~Æaø„(NEt8>Lžð¸ÕËá×%à ¤_£çcÓG$]^öÇ€12$ä_ôgŸÿN>+CÂâYûñce€¤w²Ò}c­çÖ€Çó’¾.Z±pÿå!‡Èá)>'¾±Ö‡¾–¢û/IÆÎµQ2jlC|b­ÍÜÜzÛDú`Xœ‹’>÷й‡þ©êAô¸ytãlY‹ØK”kÍ…§ÇYlת 5|:ûš#Ç8-釢¯Pìsˆœ—m¬ém…ú¯–¡øVmȨáûfß‘#¶…þE™®ÏùÇðÔjt.kЕ§ˆEŸÁd5ëZ—¹¹{UæšgÞ+doô¸–šœø†(KE”;t^#Ûè¼Öˆk5é/Ã$ù¼ìó&f¶h'’OJºœ—×§E~¥Â÷H¢¬¯Šæ½¥F­-À‡Èñð®u…jC+Cÿ-åZ›H/ -ûœp–p œ_êñBß •»2ÍU¢ÜMú„ÅBY'z”4:ø™´Ëæ^?×2 [ RC#©ÒèwxÊ!ò©OtêÐ?¼à™õ™¬ù´È%ª=÷Û+Cÿ-õÉ Q®ûÜŸ3ÛKÿg.ãz`ŠÊB”…½ ÛoÝ#ÝM«ÑéÂǵþ <ÜÈxÜ‚˜ìAI‡¼KºdþŠ€™ÍKúOøw4z6éÏåW¢b×:dfïçÉ…²^ÿ=IߘٛÃêtýnŠï>{é·ÊÖ¹a†ßÚQ£6dÔ¨Ì6íÔfg{g¡›ÑëÊx©õ·ÖUÞÅøÛýßÝgÌì¹õ®W!ÌlæíÏÞþËì¹Ùýfvçz×§¦¦¦¦¦¦¦¦¦¿.&TÞ›©IEND®B`‚src/BWidgets/examples/inc/ImageVSlider_s.svg000066400000000000000000001346521515163050000213310ustar00rootroot00000000000000 src/BWidgets/examples/inc/imgbut01.png000066400000000000000000000376671515163050000201210ustar00rootroot00000000000000‰PNG  IHDRÈÈ­X®ž„iCCPICC profile(‘}‘=HÃ@Å_S‹T,(â¡:YqÔ*¡B¨Zu0¹ô š4$).Ž‚kÁÁŪƒ‹³®®‚ øâèä¤è"%þ/)´ˆñà¸ïî=îÞB½Ì4«cÐtÛL%âb&»*v¾B@7"@Hf–1'IIøŽ¯{øzãYþçþ½jÎb@@$že†ioOoÚç}â+Ê*ñ9ñ˜I$~äºâñç‚ËÏŒ˜éÔþ!×/‘K!W Œ ¨@ƒìúÁÿàw·V~rÂK ÇЋã|Œ»@£æ8ßÇŽÓ8‚ÏÀ•ÞòWêÀÌ'éµ–=ú¶‹ë–¦ì—;Àà“!›²+i ù<ð~Fß”úož5¯·æ>N€4u•¼Ñe¯û¼»«½·Ï4ûûÀrzëÞzýbKGDÿÿÿ ½§“ pHYs.#.#x¥?vtIMEæ 46d¾#tEXtCommentCreated with GIMPW IDATxÚì½y¸mwYçùùk­=œéÞ›››@B N¨åÐjj;5¢UŠ­e[¥Õ]–c;”"Pjkû”e;*¥UêãÓjÙeÛ("”ÌB Á„$$w>ãÖðúßZëìsõHIà^Îú>ÏÉ=÷Ü}öÞYë÷îwú¾ß 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0`À€ 0àÆÛ.zñ®ó•ø?}¿øHyçù(Þ¿ãÄî¿$†+võ`¸×0þÃß#¥ˆlïÄoyágÄአ0`À€ 0`À€ 0`À€ 0`À€ 0`À€| qûË_ WaÀ€|ô¸í^yýp 0`À€ 0`À€«Où¦Ç·Ô+‡K<àZÓ¿ñ°zBØú!¬àÃÄ`$|0èb}œ°~ÝíÏð)î!Þ†7{ïO+%7„££à„ !Ônœ&HHõ[ä÷xßqño~çp%ù¤Àæé'?Å{ÿ…’ø¹1ÆÏ!œŒÁcŸþTZ DºÁ·¿¨$RJ@"•ÁQRˆH©/eùèÏ…6lòñ=ü7vßq «îý¥ïª¹Fqêú[Nøfù?F¾BJñ¹u]^h„(»€#>¦[ÑLŒ)5>:”4øR¡LFˆ a v4ýc´ýÍg~óýoú½Ëà äªÄÆÆõwiÅ7ÂË|Sð¾i½íaOîAŠä1Ò„ƃ’h!‰R ¥D ðÞãœ#3*Ý$­(Ë’²jHSH•Qº@6Þ¸<šn¼ö‰·>åß¾ùõÝÇÁ›|¼<É` qꦧW}kpå7¼!H‰Ð’#BDTkRÊþKUBI”H­PJ!e2¦©©ÊUU%ã=Bj„ÖÔ' ‘*#HMDRº€ÍÆþÄéëþúoü7oúÃÿžÁPþþÐÃ1ÿè1ݼašÉðÏ\¹÷í¿% íÁ×GŒÀù­™±äyNQäùk-J©Ã'Œ²7,)%!œs„耀R†ÅbÁÁÁ‹e…ŒKPŠHÀGOUWJQW»jç|õ­ÛçzÉ ^ôÒÿsãÔ™ŸøÝ×üäâ“õ>Ä àq5Áƒ|´É÷ɿԕ‹ï42<ß•sÆã1Á9²"ž”_EÁÖÆ´7!MÓ …F)EŒ‘²NÞ!3RJª*Ýk­5Þ;‚b”ƒ ®k´Öh­)Ë’ÅbÁÎþ>ÛÛÛ£ ³E‰ ÁƒÎGd§ßø¼Ïüœþ¿öÓÿùZ¿î·}Ã+¯ÿÀ¿ýžsCr•âº3·ÑWßëªå÷j¥bÀj}:iEí='Of}}£4OS—éÐ+Û‡V!D–UÙ?wf ”4UòRJïZa³,å$MÖ†qž#¥ìîíímš¦áÂåË8çðÞ<iˆfŒ“Æ?óÙÏ{å-O½ã‡~ýg~زޟÇË€ù;àÌõ7?s>;ø~Eü**Æ£#%ãb„s¡£Ñˆéú&Óõ5vw÷SŽ!#0™ûûûà]$J‘¾÷!M@ÊäA‚›gŒ×¦EA¦Z[mø¹1!Ȳ ß8f³çÏŸg¾8 ò‘²k[”.rûÓïúígÞý©/ÍOýàþ'ÛýyÊ7¾j#Ƙò À­7ÝòE>4?0Û?ø X-™LÆc(K¶¶¶O§Ä‰"…N³Å’Ûo{2³ý].]¸Àîþ>MÓÐÔ>ý<1FŠbLáÈ—#(‰#%÷!:„Œ²œÑhÄúÚ„étÊâà€­­-”$…`²}ýÙ>gÏ_ ¬ËTF6]ã ·<åM·?ãÙÿð×öÇîîìß j¸wÜzÛWV¿Ò(ž]äk4Óñk,Öjn| „à‘H””4M 1°1]ã®g<x€ .páâÅ”_H…Ò)‘÷Þã‚#D1"(%A¼kh|ƒ1b€!F¼o˜Ïgìîì°½½Mf-!ê²F)É J+¬ÉØÜØ`¹˜#‰­8uâ{»»7Ìö?ÿ3¿àK>xÏÛÿê¾áä¿Ϲã_i~H)y[]×!(Ë’Ñh„TeMÓpâÄ vvv˜Œ¦<÷¹Ïe>ŸóðÌçs”ÖÔu”mm*ßú˜þ®»î¸$ú€­51B“þü ÆÁÞ6E‘J¹B‚Ò¥t›¬+²"#Ë-Yža­"1Æ µDkIQä@‘©$Z¢÷¸Æá£ ¤d±\²}y›²ªX[['J ®ÛÚ )—Ôu‰óUÕà½ßzôܹg~Þ—ýO÷¼ïmoº¸ãƒüñ)O¿ûó2_¥ˆwŒ§¼wøàY,)ψ‘õ ÖÖÖð.…~èAÞõÎwpÏ=ïÅÇx4"Ä@ˆ ¤Äšk,‚ö?‰NBŒ4M÷-$!8š¦Á{%R*¤ÉàÚß•Rb2›ŠBýÝ=ö÷÷1ÆðiŸöé\¾x‘G}!5µó(! 1P.—€ØzôÑGîþÜ/yÉÛß÷ö¿úеXµÚ~ûëgƒ|qûmwÞaEø‰àëçI)X,—”UÍþþDAŒ!…IuÃ¥‹¹ë®»xÏ{ÞÃù ð>"•F*M”ÎÈ‹B)hC%Ä Þ§/ç‰! ¥‚Õ²BI…Õ–ºjPR#ˆ¶y˜B+ƒ1&}ßþ ‰Ã%¤d6Ÿ³pÀ¥‹—8ᥠ¸QJšº¡®*‚¯iÊ_•×ìîÜþ…_ñµôîÿòÆÙµpîxù«³Ko{_5Ž;^þªKo{]9È㈛Ÿp‹È…ÿ©Ìª»¦ÁyO âœK<¨²¤¬–“èîî.—/_fww—J+¼©4ãñ$µ ¥ÄûdTÝW"!ÊD+A`%Ï2ò,g<3OȲ ­5Ji¬Í°Y†‚ªª¨ëº­v ïPJ¡Û\è›’eUalA@€J®Ë¹†º¬ˆÞ#bÀû†K—.=±ªëÓ}ðÿ¾îÓú]/xÖÎ;ÿø,À“¿þGž¿óÎ?yøÒÛ^WÞùMÉp>Ö¯7PMZÌfûß­rûµJ‚oZKf³µ!MhBO$tÎqéÒ%¬µXk)rƒÖš¢(ØÝÝe6›!¥ÄZ‹µcÌ*ÊÁÁAªTuÓ¤d]´N†QÖQ€RŠÉ$N]×8—°ºvH)ÉZZ.—4Mƒn+e‹Å"£Oa™¯kœwˆRëԣђþö_û9_ò5ï}Ãïÿú+¯öû¤µ>Ì™¤z´ûöž_||8Yƒ6OÞøy±*ÿµ1bˆ„àY–%u]Ó4M c$}[JÙ&Õ©›žç9y^$ IY²\.1­QdY†µ¶§›TUÕÓJêºfŸår‰)«ªŠ²,AÐD©Ãž^'OÏ[ä4MÓ’"“t¯#ÞbŒÉsÔ5¡õ`ÄHˆÙb†- ËŠƒýOý²¯ûÖ_û›·üÙÁÕ|¯N=ç bç)vÞñúÝ!ù8 ÓöçŒæi™Öä™E*ÅÁl¿ýtOaVŒ‘ñx„R*QÑ[ ˆ”’Éd’øUš¦¡,KŠ¢`º¶†jK³UU1ŸÏY,,—Kªªb¹\ñPAãê¦&UUõaYgXÞûžÌ(Ûðª( „ég=%BLï×§ßíèö®qÔM¶k ʺ¦nB¶³ðô½sþ»«ù^}¸0êÖoø±[vÞþø˱7µÍë¿_ÿ/FB–iÖ¦kŒFcʲb6;@)…µ¶õ)"uÎõŒÜÎCTUEÓ¸>¼™L&,˲÷]eªû”ïrk-ZëþSßÃt:M|®–JôFᜣ®k‹>”R¬¯¯3ðÞSUJ)¶¶¶˜Ï­×JU²ÎCï1ZsÇSŸÊ­O~2çÎ_ qžÙ|qÛ§}Þ‹÷¾÷]uMU^þêìòÛ^ç/ã8ö²~Ý“n4Âÿ¼ðõæ(ÓLFcŠ¢ )F#ÊrIY–}ÎP7Õ‘C^Eo0Î9b8|nçóÙŒºªpM“ºå²+ï¦oÛæa”‚õ žtë-Üõ¬grÇwrÃ7²¬ÊÔ(l+VR«T ¥+¸Ë;”RdYÖW´¦Ó)1¤½”¤/³gn8ÍMO¸‘S§O3›Í¹¼½Ö–s.>õK_ú¯}ï[߸¼ZïÛ“¾îGžê¹_xnçí¯{\ ˜Ç;IwÕ?Ö*Þ¤`<³¾¾Þ—MOž<É7\Ï[Þòff³Y_ZM¶cŒ=u}kk‹¦öìííc¤ë¾wè’ïô3чVkkkL7ÖQJ±··Çîî.Î9ö÷÷)Šï=[[[lll°\.9{ölêÒ«4eØU·ªª"˲Þ;yï9}ú4óù<ÑQêšè<Îy²µŒ3gÎPUüÛ¿åΧ>…‹—·¹´7GÆxËý¸ç¾ÿj½mJ©GïûåïÞý¸¼Ö±õ'žx£ õ/ÊÐŒ§ãœQžsâĉ"©îs#rîܹ¾A‘ÍÍMêºf2™à½ÇCžç8ç˜Íæ4MÓ{¥ÔaBedÖ⚦ñÚ”|Tô´õݽ½6,khœ§®’÷JÏ=CÁúú:Zkzƒë ±+õ†ØÚÚB·SŠ!¤d½\.S8#F[´”$>zÖ×7ùàC!¥d¶pçWþ£oý¿Þõæ7ÔWã½ÛyÇëw»ðªk>ù_yýÎãÐ8<¶’åãoW¾y‘‘«5ãñ˜ÑhÔ°ˆ6’‡|íííÔçP ›™6tIGÜÓWœsûÃØåÓé´?À](Ô£à0y_.©ëºí—„Ö ŽÛ:çº2gÏåêò Ñåm¥«ë‡¨^!%uáCÛ‹iêš#kÓ JKbˆd¹%ÆÈîî.>4c¥õâÑî}ÃÕr¿žú¯Úغûóóí·§†àå6Yï†;SWýØÈt¼ö‹J„¹ÕŒFkkÓž,X×uUóÀ÷÷‡=•jMöxïûêQw°AôU&k-O¸ñ £"LJ؇B©\œDœ÷Ìçsæ‹E[­ÔÞãc!°&Cˆñ°÷Ñ44­‡êž8–Ú¼[×ÝúÕu¹¼]IP:…-yžBè˪.\À{O–e}eŒés‹,ËúCÙÅay5™/_­Zu¦ËSúZJdkÝOÍÀº¯€5MÃr¹d±X¤ñÝö±Þû¾¢Öý¬+ w}k-ëëëL7Ö™®¯!„àâÅ‹,Û°«^–)ØZ_CK˜ímßþþ‡¯ûêã^å<žâÕ!|…T¢÷ÓõµT!j¯°»³}¤ëeYŸh­Y[[뿚tc쀂ÐÞ“¼P—8§¤ÓÛa§®Òkg]Xו{»æeßi;öÝûðÞ㪚º\P×!øž?™LÓXo“èð!:‚wÜpú:#÷ßwÏW\M·íŽO€þî±37‚ÄÏ3¾ùñÛUxì ćæ‹Ê²Ìëº&Ë2N]Þª^¼x¥Du]sç£Ñ¨o v!Twp»ÎzJuÞ§i¬µ}XÔ‘W/ÆHè¾Úçlš†Ú»¾*Ö=g§ncìå„:팸 ù:c­ªŠ²ª>)®ŒÇãDj¬+.ž¿Ð’1†Ó§O£´`YÎóûî}ß‹¯Ö{ùŒ—'ÈÎß0ÈÇ,¼ŠŸGô}÷zº6N±zðéSUJæ3F“q?ƒaI¹‚L§SF£Q_Ur+ s`ýáÙv½KŠÑ$U›‰b"=}õP¯vÎ;c<ï+Z]n1Ê2Æy‘è (õf8Ráªë:5,Eè{>BF²,c¶Hs6›Ñ”'Oœ 8•’szðó®Úü@ÊÖƒ/ù¡œ/>[D°F1Ž“ìgKè‹Rðð#BiK]9ŒQ¬MÇøº"ø†µñ-®n(²‰@ ‰oMåH-@ðÎC nʪam}ƒÚ9¤Ö,—%uÝ µ!F”‡aTð¾Žv,ŠEºMB…·MF)Ñ9NžØ„è‰Á‘é&uÉ5¦öˆÑB"BÀHI]–œØÚ ÏsbL£¾;{»äyÞ\i¶Ö¦ˆ¦f¾½óÙWë½|×/¤ëo~éûîyÖËì–Á@þž8uÓÝ7Šì©™Q„¦æÄFjú•ó9ø€¯Så'¸tPT¸ªNاOÞ¦¬úÒêjEj5?è÷"ÆXªŽ Õæ &? ѺOø.—Yå^õÿÞJ …`Éh_ר4¦«¥BJh«÷Rª#R§DOð KÕ­ë®»€eUö§<Üt:MÏâÝS¿üë¾í¦«õž>«]ÁöÎ_úÞù{b6»ôlk¤Œ@ Ï åbAp‹ý9¾r¨(P!5Ûºä|4a‹<…bp$AïÃ"‘“„LS€]ÅJ´¡Úh4¢( Ö××ÛC›ÞÇ•²úœGžÿ ôÒq]Y<ˆRåauíPZHôÌñxLŒ‘ÅbÑ L$êÌR‚ .œ{öU›Sư9T±>FÈMxºˆ5Gf5M]ÑÔ5™±¥YÎçH 3¶åMßàÛÚÚJsãZÓ4Í‘²îjõêÊÝq»>\Åé#F—G|$ƒè×úŽ|e%ëJ´Ú¯é8d'Nœè±º«,˘L&X«1pùòå§_­÷TQò1ÂZanWÑ!|ƒ5š}«W%JR»€ºï)xï)›š&xLžõIx×Üë{ÎáC8Ò«HƤˆ1çJÉÇPNÚD³¯U1šîû+Ä‘?»&`WNþ¯Ö'ˆ¸à4§Ó)„Hp¾/wU°<ÏADövo¿Zïé»ññ%-+1"É»„úÊpêH.²â©’aù#ͲŒÐB„¯Ó…ˆY–±¾¾ÎåË—ûο‚ÜXÖ×ÖPZc<9xã` ALPšºqh“‘Ù‚²,S‡<ÏYÌfDÅïÞõºTHqäçQ€¶¦7¦,7Œ'k뜯ûQÝ<Ϩª²§€ÔuÝ =t¡OçMV o5'éx[Ëå2Í¿O§}'­¦EíRݤò¸¢u!ât:=¢ÊÒåMË:53ñ0È1@4yµl–¹Ò¢¯0-çsöw÷ DDHŽÜä‰)¿Â!ÿªcßv‡}•yÛD׳v´A×å5ýAîLù”ïhì¬ä ]=„!ôœ¬•OûžBÍ=Vµ»ÄÜ9‡ÑYﱫ4Z[d”Õq5cb ¥g.Ä^ôÍ7 J¦Æ` a41$~T®p­Ç¸²Á×'»â°kÄaå©®ëvv\2åý¼ÆåË—©ªê1DÇս髹êVÿìÛ5 W»èÓ¸3ÊÕ<¤Ë_º}‡NWÇ\îT•ÒH"2 ä8¸K©/éV)½œªµ %ñ1àD-Y‡¤èiçŠúª‚á•o5®_=€ÏIkÝSå‹Å‘Üã#•uT­®èst¯“çi¶eµÜ¼Z[5œÕŸuï¹£ª¬æ+ZëDvl„P—90Bœµ1"c ®–h%ðÑÑxGn†c5žï¾ï+L6íºŸ÷¿ç<"²2a˺êzA<6ïXõHݧü•aWV‰Tùê°œs¥û÷Ø­f m<VÎ6Ï(Æc²,­YX”K¬µŒÆy?70_²ÊÄ}L¤Í:£èB²nÖ¢[mû°ê±4w©’‘‡ÊïB!©¬ jyïÛŠ“êK¶‰ è"mÆ Áê ;OÓÎßwó)®N»IÆE’8êú&ó¸þ†'\7È1À…÷üéÃÒæï÷‘6fOSw!Fœ÷(£Á¨#Épwàz’6ÿèŒäÊ’ëjYµ£w–6ÓÆþ¹e_9_¢EZ1½ú«èÔPV¯ïø"®=ØÖðaɺi’€Þˆè®N¹Ó¼ª Rq榛a0ã’‡ØâÏ!*ÊeMð… j‰ÎsL–‚ªªÐ.º®sgݧw÷é¿*Ú•}¯ì™À!Õ¼®Á;¢kŽ|ùº‚耔 $½áu_Zë¶üœ²ñ®T»JK±Zamâ[)c(ÆSŠñÛòµ–Ë%åb–Tí³üHH¸¨=ªóë?ûªo ä¸H–½ÞRã\KÞkéë.&®U| ¸Ãä«3«:S«ƒS«žÇ¹T>^í_,‹^‰]"Ž”l?\×·Ë>iµzE$}…´%JFÒÎÁöõª¦^1ÈpÄK$•Gƒµ9ZÛ”´£¶ãb„–ÉØ‹Ì°?ŸQ:ÇÉëoà8ãØÈhmãÿ56/] m™‘4ÞÓ´4öÌX””}ã¬Û*Õå ]"[ÍÜîp®z )%‚”Óx >‰!¬""$’š£’%Z¥¢ò1ÍÁÎ;¥~EzϫҤ‡âsI€p¨«åBÄù@ãÒc‹³Ù £$›­©ˆ©ªvñâ%‚Ð<é)w rœpñ¯ÿp·˜®ÿ¾‘eUáb’µÖ¢ŒN+´ :߯}îbýÕ°©«­V­V)íüJq¹n–« J€îö)¶}—~ éùKìí“Û…ù(ˆBqywFЖžtË‹¿ú;_ rŒOÖ'J Ú°w°Ÿ¦ }Ñ©i8Îs¤”eÙ‡;ÖZ.^¼ˆ¢eé†#$Å+‘ºáªÎ€::zglεÛfd:À¤a¤b”åLF#&£Ö„c5£qAftêþq詬µý{\ÝžÛÑõ;UùÎÈu[<ØÙÙÁ{Ï©S§ZƒL×6¸¼»Oà‰·ÝÉoþäþÁoýøw dÅㄳïzýoeÓµ{ë(9XÔ}ã.ñ£B/éÙ²®LÛÑ1V+W«´î±«½Î[ôš»+Éüê˜mçÅò<'³c«6·É‹(!Q")ŽdYFR.Šý\É*õ¾›™L&iU4‚Ð2kÑJ±¶¶FMü?NƒIDATa3‚oÐR°±±AY7ج ›Œ¹ïÁQGÁ 7ßÊq‡<®ÿãùæ©×›±pž‹Û{heSÙµ ¹VI]ÃMkÝozšL&G*J«%ÚCr @kCÚ²’€7…HÝw£È ËxR0*2FE†Q%$R¤E>™Õ˜V+x\Œ˜ŽÆ½7ê4¶:ú}j`*ˆ‡ü¬.ôëxVõ²dçò6MU²¹¹™*XEAÔŠGÏ_foY‘M68só­ù` Ç7<á5b<½lÎ¥í}B”ŒÇSêÚ!´BYÓë÷v±}Gaoš¦?t«ý’+ÿÞ<­ôH®ü>Ë2F£ã¶«ÝéóöMF—^[·9ˆÖšûi 8¾pÃ-·ýœl<€²\¼´M];667i‚ÇÑíʵ.GèâüNt­ïr¥Òú´®\[·áU硬µíÖ[Ó¯:ðÞóðƒ2ß?àÆ3§9¹¹Õ3ÆkS|ø–5wÝý<~ã'¾ïžÁ<Žùžô ÷¼õà–ç|¶˜]¾øEn¹D X›NBиÚŠO·¥6¶sè¢ V…RXÄQb£OÉ}h§c»H½£ÁòœÉxŒiå¸&)¦¤®¹FKéh…ÒŠ¦õbJIBôeúâB7¡ØíÙ\_Gˆô>Ç£ 6˘ÌØÞÞ¦È,Ïþ”gbBIAP '$÷Ü÷AÖOŸáýozLcð ÜûŸó§ÍÚ©?²Ó-Î]ÞãÂ¥]677ÑíJ´(8²³ó]™´“]±èf½ßP¶ìÝ./èò#Bê^¸óF]q ÆCš‹Œ}’åÑR¡„„*m]W?5;ûZ&ã5&ã5¤Ö­¸¼½‹OêßL&ŠÉ˜ï¿ï˜ñ„OyÞ§V1x£¸ý_þÈÙó¿ôÛ©ÆÓ “јÉxÌdmÊù‹—‰BPº¤ßeagg›'Ýò$fË%—÷fÜ÷У<ùÏá¿÷ï1È•¡Ö[>x÷½äò‡üà‹C]R-fl®M(늺i›V$úy!‰U{ÏæÉÔ®!Ä€±uU'ž”ÖTUPÕ’ÿœK Öæ6!B].“XB›ðÇà{‰Õ¦cf“ ½DBŒè–œØ4-õ¥õ`£ñ˜­MòÛAW>íúCâc"h¼'45(IãB¤øß ðª²! E1Ê‘¾éKµÄÔGÙßßo‡¦’aäÙ¤/§FöûW5{›¾R•ÊÄ®­hu¼¯ÐnËíÆnëºÄ7J¤Õlx‡’¬S6JJN>é6î~ÊÓÈN]ÿìÿŠ¡ru%—z>ÿ[þåÖ»ßòÆ?[\|ä§óÕ |`YÎq.©z’ȋΥnû4„Ê#FHÍwwijٌºªZq„Àúú:'7Ö“1´ü*Õ•|Q}Ò~”5ÜÒWH%gRY×ÏÎÎeS3HÖ®YaÐQ±\–LÖ6ðÚò¡ímN<ñVîë_g`±þî¸ÿ¯ÿdù)_ø’?ÛÙÝþBš­¦,©‡s„@™vBô, N]wEžq°?ÃÕ V[”T<©Øt8ç¡Ú~FOíh©)E–ŽY»nA´eâ̲;Æn´K‹:‘݈oz¼ó>‰q{2ŠÆ·«¨ƒ¤ªk²,'Å¥ý97ÜúTÞÿ×>ÇPæýèñÆ_yÅ{ï¼û3¾:d“¸ÈÌE¢ÎQ:§©=å|‰¯jNŸ8É­7ßÄÍ7œa\dï¨ê%U=§nÊ´~ÀG–‹’ÙÁœù|Þ†D!Ú½‡­äP¢˜(”:œ 횃nF$Iò¶]ùxHxìyž3™L˜Œ§(¥‰BSÇ€3žRKé'ÞÊ3?íù?<ÜéÁƒü7ã¡wüù¹ç}ñW¾o±˜?÷`¶ˆ1ö«bËê’ï¼]€SWu«hX÷bÒ@?'i–q¸"Žªc!bKgÉŠœéÚZçTµCJƒÌ Ê (6OñÞ·þ…x÷[þüO‡»<Èß ¼ãM÷Æ—~Í/÷Á|~Q … Èr¶66©Ë’½½=¢£™NÇÄà 2€T8×YªÓ´;@¼÷, ¦ãQš1iÕFŒ2x—Ô W•RhC/$†Hh-ÈfR×]Ê–š’c²17<ቜ»¼MæÌm·s÷ó_ðœw¼ñÏww0 >ðÖ¿¸´÷¡û~ù¦g}öÓw·wŸî›äEœkZBãc µOkËòq"9š–¥T §:ƒHÂp¡ïª{ÓþBÑz «“p¶¼‚L^[}`­zµöØIuj+Ò0žlðà#ç8·½Ç O~ w}ê§¿ø×þÕüÙ ÿù«6îûËוÃÝ äc†Ý‡ß÷ÛŸõ¢—Ì?±,ål±¤ñyYá|d4™ ŒÅ‡ˆétJ–dY޵R¦·)_è´s#!xÆE22¢Dkƒ Ž*¢¬ˆmt»¤ÍK”L‚ðÎ_ÜáÂövºÁŸr7¿ûs?þ5ƒq eÞǧïøÜ¿¨ç{ÏŸí]"ÏVÂæÆ„É(c2.¨ëA¸é6„@Y./«®˜Ïç@ò$'Ö7RÓ–ÝÛ*ž(É¡ê^÷ª•d* ÑRð[·VÖ>*\´ØÉÏú¬Ïúæ&/~§‰Åþß;4yüñ™/ùç/{ßß¼ý§›ò`k¶} +<…UœÚ\cc2æäæ:—/žoE5v…HÛ¡E$ÍpŒl–yŸ’vÙ‰Ust¥Â¡ \»F­%²RöMê‰ >*d6åÏù´{~õj˜íB¬/þ›¿|×òÂÿêŽ|éu»{ûwW.ÈÐögìïP.—L¦SòÌ e7Ÿ.Ûª¦¥šíܹm“ïV´-ßï³'½ ±R/&´¹ˆnóŽvªʰ¬jªO}Ö‹¾zçÝo~Û‡»6ÈÇçïù/ÿÉï|è_~ú _šÅÈÓš²¹Ò1ßßçâ…³ÔÕçÒpÕd2nGukkk4MªféN »M¾C?â›^£whgæ»б3©Úukô"¤$ qR•ýâûßó¶¡ï1„XŸx¼ø›~øI½ÿÞ_~ä¡û>·Z^&Ó!©¥ÇÆd‚ `µâÆ3§ûÞFÚ½îÀ5"¾*Ñ”ÍzïÑ5½÷4¾Uo ݆[MÕêó*£Ó,»TH›±³¨°ë×óŒOûœ3¿ñ“ßsn¸Cƒ\5øŒ—ýo_qîá~tïòöõlŸ¸\ë9ÂÕF#•¹€ÐН?Íõ'Ö‘ÍY\‰°#b«p’rÑ'íMò½Ú¢ë&•DK ÙãOà/þãk‡û=ÈÕ‰ÿþÛ_Íw.¼^–åó÷.e÷Ò–eͼ,Ñ&ã¦3§Y3Pˆ%#?§ZÌYR%]«#Ò¥‚–Æá¨¯ï6ç‘Zr°¬È×OóM&'oÞýãßú™Íán rÍá˾ãw>ü¾¿y¯\l³.kD=Gˤ¼Ø!„£ëbhUåÛQ[¤jð1 ”.`F3¦ÑSÞù†ßîùG¬x•àwúûîQ“x3Á‘a² 1ˆ#qå¢.?94 ÐL7h5ñU…ÂÊ_ðU߇«=È5‰ÑôäWåÅ&Þi¢×“µ"¦ŸY•/팥›6”Rö½¥F””ª©0¡æì÷ñÒoûÑ»‡«=ȵïJûVï ÛÅ›G×\¹;Ý9׫®­J1€å|An4¡.±¡!V|è÷½u¸Úƒ\sø“_þÞŒÖh)pMÝ'櫲ºeª ¥›‰i^^´k {•EïÀ׈P1ÉóÝK¼ðë¾}`ôríÁŽòÝÑú”$^±¿pUÛw5'‰òèv\!Q€ç9U½D‰ˆ¯—é®äƒ÷¾ÿú¯ü§¯¸s¸âƒ\S(ñ±a!|:ä­ Y¬‹A ¤é§•Rý`V—œ{ï{!ì´“= d 4%J8ŒtÜûžw¾w¸âƒ\S¨¥ÚuZÓH&iþvƒVWª7®æ#«®zœÔqOÍH¥DZ#ÝÔˆàˆõ‚Ïúª…Ǭ«îŒ§Û\Õ- í.!x™p\xè~¾ê;†Pk0koüåùD¶+uFÉ T®éõ~»e=«£¸½ˆÃж DDÊv¹(ɸRÞ‘Ñ¡}M.>øÞ!Ô äZBå7rY ¤Ai‹oC¤&x”5ýŠ„Uc¿N$-¬°­ vŒ¡5Z TtÔóòàóý¡ª5ȵ…ÚÕò°ù—(í‡Ýó΃¬®ŠSί‡Á#!­r“), .ïÑDlôȦF»ŠÝû¾ë_:„ZÁ =z5Þ-w¢÷RJ\ãû¦_žç½fVzœn;ë 1Þ!Û¹”Bucº¤ªWL¢Zˆ‘ r™º. 8¾ÿoßËÀÏ<ÈÕŽ(Eé¼Gh“V.جßGô»ÖûžG·4„HªðZ[¬l¤2}™8ø$_Z5¾Oà\xôa¾ðë¿ë׆;0ÈU §Õ£z:¡ "0Æ2Ÿ-ú$\I"C³L^ ”FÛ /AJ!PFãš _WX¥‰QÑ`sÊ()}j*fB²ö¡—½ä[è+‡»0„XW-&›ÿ¤º°ÿ^…ÄÚ %RÜECp!#Rî`G¤F¡ç]OwO^¢w%1Ji–ÝÕ^ªªÁc¦“)³eÍιGýÛC¨Õ^Úá\øâ—þÓ¸÷¡,T„àÀ"ß8Bðh¥P+ºYÃ×ûv ­’cpDçûe¡µO”øÆu°¡MFéUí§'oàõ¿ÿ+Çþ| !ÖÕúÉÆR ¤ jj*× ÆddRr÷tú@)’Ž–V£!7‚\Er±FKO&†šI¦˜d‚µ\³9ÉIO³ØÁø’­‰Å„Š ÿ-/üGßýóCˆ5àªDaEå*™I¡‘Fƒ©2 œ"PJ"¢G„" $DÛNzÀ舌å™%BE2 ^%B£ó JG¬PøðÍ#k&çÜý÷üÏÀ7dÀU…×þýŒq®‘¤}èEQ l·°]=­ÎÕø¦&¸á˜n¬ÿ§f¹øúº 7ĦÁ7KቱBHOflJÎÄd¡uD)ƒ2šÜ©o‚¢®ÓÝJ¶@HdPdYÖ _ƒXQKquIf$›vʲñÌ÷v™ZË¥G?xËàA|¢xwüëNß PJe†QaÈ3Ef$è$Ë+´B²cmz\f1JPd¦ÿÝn­t—‹ %²]—ç9EQP£É­%Z„¯[Á™“Shü“ï9ÃUƒ\ÅøñŸxå^^èG‹Ü2²–±Í™äãÌRXƒµ¡Ȉ#ÚO%Áè´”'JE`‹­5£Éc 6ËúܤŸ2Ô²]—Œ(í=4äyޱŠ<“Ôó= Ø»tîíCˆ5à_îm´ŠšL(¹Tä „r„X£Œ$HC«MZ!M$Ô5ÂHœجH{Ú­fQ.!J‚¡eê ŠÀxR0›Í(ò€Å¢¤(¦­v…ø²fb$*sñÒÙl0ŸødÍCËÙ|Íd“"ϱa‰TA4©@(„H©Ûyó4%XºR豚ùvZy <ÏÑFâ]RI‰¼ˆD™†®Lð4Á(ŠÖb]åM·ö&›5Jâ\ƒ02M†€P!5Rª¤€¢R”1HkɲŒ¢H«®‚•µ¡UÖö?®|L· Çƒ±¥:¥ø”£cÐ&ýìŸ}Ï}Ò'냹ʱhÄò`o֬ɀՎÆ;¤Š£Œ("Q*dLc¸D™–êh–ª“kš´U·c¯ª4†'(¥z}­<!¥æâÅË8ï N¥DKEˆí’PÎÕÏ>©÷®ä*ÇÁ’3!Ê1 „Œá‰*•&H "Éþˆ(¡o¨| ‘E?icD(…n½@G£·Öbmj 6Αå9ãé]ê¥(H,°$=£GÈn›nØ<È€O(fU¼îäÚ¦5~ßÌ6‚Ö,ꊬÈÊ ‘‰omš1T ´A …ˆ©Q˜ç9¢a—2Í­§UÔ (˲õ&c„,‹Vs+åJ¼A ¹ò cí_2àk Nܬ–s«CË€‹$Ï‹VâGb„&7k4A œÈÌ¢¢ ú4›Ž”Xkiš¦{èºéeU3™Nûüd¹¬ØÜÜd>ŸcŒÂ5©™”ZZrUðS¯øþ· Iú€O(²ñÖïmœ¸®ŠJQÖÍÊ:ƒˆ!âÚyt‘VFw‰uÛÏèh$]’=™N§©b-RJ666X__g±XpîÜ9”R½öJH…0iíîPÅð Çÿó+¯xÍ~é²ý²&ËÇ H­1%àÑyš²j5z¥½Û›žçù#Y[[c4±µµÕRS›››ÔuÍùóç9{ö,ãñ˜½½=¶÷¶)›mlÛª7“ÓDIåŽÇõB¬k¡’åa¢ ‚V!hOæ¡®kFZ#}çÛ‹Î#”B X.—½÷èììïψ12_.pÎ1*Æ}kss³ßÇîœKAÕD¼pxiñÑ‚ýÖ` ®ä“?,^䕦! ê%Î$âb-µw„¨ˆ¢Fg–ÆE¢O´öªªØßßOkœ'Ïó#Ò¥¬¯¯³·wÐ7G“1Eå÷ðUɬòÌdD‡ !Ö5fýø‹=fÖ(*g‚ERW HBTuŽ Þ##h™˜º¦ï|>ïî Æã1ãñ¸Wˆwα³³C]×$Aººñ8¨L.Ö_ûo^ñ¯ dÀUƒhÖfVkJ—!Äï$Þ§¥:órÉ¢n(]Ä“†B¨>¹¶Ö&º»M!˲¾¬ëœc¹\B  žGÏŸÃ{ãl1çÒöËš(³Jgk¯%›þôq¹îƒ\#ø½×¼òÛƒY«êÑDE]y@â\ ržyUÓDh|Ä…HUUÉ„bÍf³”£´ÚZi¤m$†(Ë¥ÎGʺ¢\Ö¸ÆÓxXÔ>+üì~ò—w‡äÄÚÖׇ·Ó4IéÄ…C¡i‚Ø W5dÁSU‚Ü–yëºÆd–år‰1‰ˆ[×ukP–%;û{8稪ŠÙlÆþ|?-Ý! ¢PU–õ8]s5»kïxËëÊ»žû‚ÏŽ¾¼UëH]—¸Æ#„Âû€’çÄ@Ó4TuÒšÍ-Ξ;Gž8—Ȉq8çPJ3[¦þ‡Í3FãeU£Œ%DM Ko`´õý¯~å¿ö8]ó!ĺÆðï^óŸ¿§ :hXŠ •Èiœ zÒzgß°œÏÐR1_Öìî-ÙŸ-QÒréâe–‹’¦v4µ#.æå‚û?x?ç/_`º>e^/™—Kê&²t‚¯pã­ŸyÕ«ôÿoïî]› £8Žï[îKLn“mª.êàPqѱ›Ž¾#j‘¢+m—뮂“k7»VprqpQPÄŦM"±IzsŸûæÐŽþí=Ÿ?á‡ó<<œóÔó–·lVܧ.ßœÎ츇¡zxšÂÞÛËki)i¢°m›‘±Ã46šÔÆÇ©ÕŽñãÛ÷½‰ÃÝ×ø(‰év»üj4p]—SgNãW*lµÛ„*%Ñ=BB£¸ö¼¾|19ËkŸúúùÓüÙóSn¬™ç0 ’T¨Ð² SË2ùýg ÃÒìô(tNž¨aèÍÆ:‘2Üéã—ÊLçøÄiœ²±ÑÄ2l¢Dg9Ä…òjâTf>~xßÎcÎÒAö¹K÷ç§²íæ;-èà%|Yâ•’$Âs] æîçž®ãP­VimupÝ"ŽëÑju!^ɧ ± ÝâCGV(Ž^y17æ5_)âÆÌܤ»ùÊNúXé#’©>cÕ2a0Äõl,coƒ¦a˜2MG¥j*ÕÈ ‹@%8^‰´P~»¼T¿–÷\¥@[.ĽöJ´Ó)d!%3AOqáy¾ïÓëýE×M2tÜR‰õf Ï%³l¶ ׯ¬½\Îç}C $G®?x²v6gÍ,Ä/—‰c…aA€ïûCµ;TåW#ÌŸ©a}yS_x-ɉܙ~º4pûѳ«÷/NÞ}¼8)É!„B!„B!„B!Äü#„Õ~ÏIEND®B`‚src/BWidgets/examples/inc/imgbut02.png000066400000000000000000000375531515163050000201140ustar00rootroot00000000000000‰PNG  IHDRÈÈ­X®ž„iCCPICC profile(‘}‘=HÃ@Å_S‹T,(â¡:YqÔ*¡B¨Zu0¹ô š4$).Ž‚kÁÁŪƒ‹³®®‚ øâèä¤è"%þ/)´ˆñà¸ïî=îÞB½Ì4«cÐtÛL%âb&»*v¾B@7"@Hf–1'IIøŽ¯{øzãYþçþ½jÎb@@$že†ioOoÚç}â+Ê*ñ9ñ˜I$~äºâñç‚ËÏŒ˜éÔþ!×/‘K!W Œ ¨@ƒìúÁÿàw·V~rÂK ÇЋã|Œ»@£æ8ßÇŽÓ8‚ÏÀ•ÞòWêÀÌ'éµ–=ú¶‹ë–¦ì—;Àà“!›²+i ù<ð~Fß”úož5¯·æ>N€4u•¼Ñe¯û¼»«½·Ï4ûûÀrzëÞzýbKGDÿÿÿ ½§“ pHYs.#.#x¥?vtIMEæ 4¬ir—tEXtCommentCreated with GIMPW IDATxÚì½y˜uyUßûùM{ï3ÔôÎ=Ñ3t3´¢ "¢¯‰^IÌ•‚ Fq« I„(4ŠWMbͅ袹 1Ñ(¢â#Ò€ÌÍÐÐMw¿c gÜ{ÿ¦üñÛ{ש—6µ[Þ¦özžzªê}O:uöï»×ZßµÖwAo½õÖ[o½õÖ[o½õö7µoý—·n<ÿûþõ³¾å%ÿæ /|É¿yBÿÎüÿ›èß‚ÏMûÆïzé­Õ…{¿_ÇŠõuœ«QJ±\.ÙØØ`YÖ  j0ú¯ýñ Ìû_óª—ÿ‡þëò9kßôâ—?ÕMÏÿ¦]ìnf±bM{d¨qÖ2lll0î!¥&"¬­ñ©Óçn%šœÉ¼f°±õ¦ÿêWYÿnöùœ²ç|Ï¿zß½÷r?ÄJb=ãØ‘uªeÉ`˜c”Æ{¥3¢Ô‚0ÔA•aY{Šá![Ý«o}Õ?ïÒÛƒÚ¾öE/{fœœ~£X^`èçläPPCÅp­À{Ëp0 Ó …`P9r„sg/0Œ(CλÀ|Y1\Û`¶,1YÁnn|ò7ý†ŸøWß_Ö÷WõGìÁk_ÿí/½UÌÏýì(NÅ’",K!ãaÎt1CJ‰÷žË/;ŵW_C ~øv¼³L'»ïd9ÇŽm!¢g¹˜RdIÀ{ÿpÃçÑSŸñî·ÿÉ?Œï±îÙƒÓþç~k”{wbê)Q“KÇ` 0B| ÆÈÕW^ËÝ÷œæ²+¯äø±ËùÐoGÁÆÖq²,ÃzÇîî.wÝ};ƒÁ€‡Þô0®¾þjΞ?Œ‘tTnöÌã8”yIïAŒàxö b˜ÜÃÑ̳¦k6rÅ(ÓŒyfÐZ±¾¾Éd¶àèÖ1n¸ñzNß}/!x†Ã!ãñR)FëkŒÆc.¿ür¦ów~ê.Ž9‚É3lm1J¼Ã9Ý?ùËüÙ[ßú{=@z»¤ížûâ?ÙÝëN Ÿ3ŸÏqÎcDkÍÖÖVòë6ÖñέõQg%ZhŠº¬ˆÑBÀzGiÓGUÚ”›T5Þ:¢÷ت‚¨ëšSbšï—Ë%1fÓ)gÏže2™cdgg§Éq<·¦  ÁálM¹XòÝ?ø¹O÷öäRH.Î.vwê,sÙ@eDWƒó Ç‚wD.ŠÎSH¥”Oè!¥Ä7L•µéûÉdB]׬­­cŒ!ZËr¹d<6 ‡Ã&™O ¼‘S^ãÐéºþà¶ ½}ÖlmÀ½Ó½0Ç3ŽB…Bøˆð)"HGŒš(4ž¶XbDJ…!Ñ9\X—’õår‰÷)dSJa´f±X ¢DI«=Á·FBÈD „€@n÷¤·Ï.ƒeâ ÛY–ˆ1J¢¥Å•*“ Qb” BFTŒ<1È”ÀƒÖéR;çXzWJ™Â¬˜ªUU1Ÿ- ¼OÞÇ“0<.€@#h½³HoŸU[L·7êÝY¶nr´1D»Äã(’à-Q%€xoP< ½§ò¬#˲nÔ¶ª*|6µ@Ñ Vc Æô8Þ|ôXïR’4ΦÇþä+_zGÞ>«æjûÁh8Š.°,—`"ÒÃr¹¤hdð)‰Q‚##yc œÁÕ­5Î9ˆOìŠZƒT Mƒw#Ä€o¶öÔ!R¹Œ…;ÓÚ=@.qSÅÆ‘Ål*”­0Þ"”'âÈ)2¼­Ê"Ä9Kc yž#…ÄA]-ɲ W[†Å€²¬‰!â\AIæ³%ÞE‹’R¿\¦Š»‘z±ÄÚȬ\¨æŒ¯¼¹êÒÛgÕ¾ïÅ/Ù8wÏ]—Weô5Ú§Ãë”ÇkOQ[”H¹„F@2ùÖL. Ö!#Ôˤ¦®k|L¹ˆ)·M-Ĺ€ dB¤>,[-)]òe Ùø˲äŠc§Ý¤·ÏªIe¤º&CÄ6ÀHå,Áz™G«È@@Ð ðø„4)X¡°Ö"PÔµ%ËÒg¤ÀZ "µÂÁ¹u!®.Óç ‰*g^—LÏO!Ûàß½ò?ؤ·ÏªMw÷þá|>?I°h$Ê 0Ò¡‚@b©l„•Q§Ù(šjz`nSD MŒq¿*îc‰ HIw°Ozœ1…a>0Y,Ù5ÚdzaΩk®94…ýÈí%jùöwŒÞñþ-çÓë¢(Ñ BÒ ‰D ÙŒfÐŽÄ|„(RýB®0X5!ª²Âyêª&°Îá]H ½µ8ç°•£r‘¹…i-˜Gƒ\;Îë_÷‹GËuè=È%j;;;2ÆÜ¤´&Ø€‘Ú””ä(  DA 'ˆŒ„¨£CøR6L•¦ª,ƬµÉÛ$í+bLÀq>Á­,K¬õ”KK09A¸0]RšÀÃnzøcÓuèr‰Ú½÷žÙšÍ—•e ÑCðˆè@(¼¡¨­C02 d$k †.8¨] ŸTj·“Ò¦°Éy¢lê&ÖQWBz¼÷@ªÊR;ŠùÂ3§¢Œ9Çò°Ó¿øã?tÛaº½ôè%lÏý†çÄùl‚¼¥*—hF´_£D ­"¹Rh%"I-$B@žxï(LŽsi 1Fʲ¤¶©8èS®ŽÐ g=!*&sÇ’œ¥Âæ þûï¼îЗރ\ÂV9‹POÀ¹T!|øj%^tÊ%µ!" !y†²¬°u`8*¨JKŒ‘Úz„PÔ6R{G ­%FAå“J)XJÁ×>ô‰‡ñôIú%hÿãÙܯÝÛÝ~Dç=ÖÕØv&CêºÄûÔîžZB"pAàCjS' BLÞ!BS#ñÔ.RÕ öÒ|”D¡±^0©=SŸ³k7<ò ~óµ?ÿ#?q¯EïA.A;saïÊÉÂ>ÖPDê਽C*ƒŽà=BÚƒÇņŊžÚ7E>"Z€–ªÔ­ ‘PUwCJô‘X"uY£À«6³¶q’_}Í}Ýa½}r‰Ú×~ãw”nz6—¾bYÎÁòRî!"HF d¤»UBR;›Ä¼' óÛÔ;|x!S~" ÊÁQÞù'¿s¨ÏH?Qx‰Ú²Ž¹s©Â¬#8O éëv"Ð{O ‚€ÀÇ´ §r‚Ò ª )bn#sY8¨‚dé³&UdVC‰aá$;¥gæ%Þ qjÄÄ N]wó¡_ÉÖ‡X—¨E!wƒ÷›:Dr“ ÖAˆh¥Pm™0JBÓƒå}êDzD´Ä ˆ"ÃEKFYy¬‹DáðÑÎ1Ã-J˜ÍjF£5N\u9¿û+·¾ð°_‡Þƒ\‚öÌoÿÑ›+7!éS©ÈŒiB'A¡ ™’h¥´ƒM‘ $ȇÄFAA”A2·•x 5šy©£Bdc¼(¨¢a¸u’7½á?öáwïA.M›íîü»’¾®J¡”@DPZ¢„$‡k-UíÒÝ®iC‰1‚wˆ†½Ò™¦®*|Ó „Ęœ’'"1zr£ð1MZ$'.¿ŠßÿúͶ½¹Ä͹°%PI*T¦™Htm;;¾Ú¾.„BJ„ìD­}!">X¼·Iù] ‘¥‹ÔQ³™¹êºëÞ¿û½¹äÍã7]°Hç"ÍtĆÖ]õÖÚNÒÇ ,Aˆi¶¼­4Ó´D$µh“áuΕ×?ìô¯ýÔá‚ê=ȃÝrµ[†eºë»%%ÑyŒTøÚvÞ£¤Nš¼éä‡A¨¦j穟t±£s8ñB“Ö(¥FŽÖùÝ×þôeýßä’·'<ï_¾ˆXmW!eò¹6ˆfYN „ÖS´¤U!iïi”Nš<ÒbŒ‚ 4Ne”ÑpÍÃ?¯­z€<8¬šï½Ì•3D°( £%J¦C."(!;€´¡$O"ƒ»?b£´ˆÔx¡©¢æÄC®ãõ}hÕäÁbYð›Ú9Lˆ`›A¦5Äö°·è¾^ý·U/£›Íû4Ÿ.MF”‘ yëë¾/öyðXÚ]†aTÉSÈt‰ZÆJJ‰‰•ZU!Q*±^©k—$Ùc›¹ºn4u%Òø¨±AóÐGô¡U™Õ‹rs±71~šGh=EëQbŒi”¶MØ›P*…aM'o6ÀGÊØ ˆºàš‡>ìôoþÛ>´êò ²§<ï×Zçp!¢MÖÿöÁ±ºÛ£­‘(¥ºÐ*F!}z¬1&y¥AeD™3«<£Íc=kõZ_¹„,†ú±J§UU]£E Íî{‹Õ¼C7}W!bÍ^Â} eÚ0 Y–™”Ñ òŒ+¯½é±ý»ÝäAg‹éù×»åëÚ!„ÃVUÚ²âð[IPgC·a*ÆH )*¦ui+¥±´É±NsÙÕ7òk?s¸”IúësÀþÑwýèÍ~vegh*l5CÈØå«9GX©ª¯z)eÚNÛ„^ÓÅ•çx²ó¯ÿ™žµê=È¥gÿð;_•ÏwξI–åöÎßËîù³,ËšyY¢MÎùvÖ ´cè—TvÌ %±_)_MÄQGÑÝÿ·ýWRH¤–W!ŒFCŽ»b·¿3ëï& }ñ³¿÷kOßuÇì]ؾ©žMˆË±ž#\ÍÀh¤RIQ]+®8u’SG7v‰¬§W"²!Qi”·@líA65òpÍŠ5¡$z³t‘¯3:z%o}ãëúëÝ{Ï®}Õ7¿ìš;?|ûkî¾ó#_ú¾ÿñÛä:P.›ã1b™pÅe'Ó6'@k··œ ˆxÑ"G¡“¢»H?!†˜ôBÀÇ´òY)õž˜¼g­zòÙ³ð¬½âžÝþ‚Ý{î>êgs„_ ¨8vtµµëëëll¬¥Ê¸­F,³Ä6I•š}³Í5Á¦wªm'!±S®é¯ò±õisT©@è‚' ÅÒ ÔÚG¯¼ž?øõ_ì¯uïAþþí–¯ù¶Ÿýð{n{áŸÿɨ̥E7…‘;q”ãǶä*I6RŸÖZ‚wXkÉss€¾m[C¤JݸÞùîÿÛÇøˆQøw)÷õ6‰Báœgc¸Æ‰“§¾³¿R;ë•ÿ–öøúâgϼùÂÝŸxÒrçœÌcÍ0\vb‹+Nãª+N2Ÿî6 =¸É3´õ‹²\²\.-;å›Ý,+÷üU‹˜X-š.ÞHÚ]ÞÂÄùÔÒnŠ1{ø£>øºŸï§ûëïÑNÞô¥o­ç{O˜í§È™„­Í1ãaÎx4 ®K)?ÐZwmêe¹ÀZ‹­«f|6%ÖG76‡HÒÊfÕ•Üg­Vƒèñªª’.–÷•:|˺ÂG…‹ÙøŸ÷Ä'¾Ðƒ7ìØ8øïÿ÷Kïè¯`Äžô¬ïúžÞöŽ›?­b½`s\Á°0¬o “p‚«q®f0àlZ”i­e¹\²\ÎÓ?øfGGÀ'O±¹¹‰D‘eZ4KoX+hÚÖCò Êèf­sãADò4Ö;¢0LæŽs“9jmÇ=éãþÓÏõ×»±»æ ÿè7>ð—oÿîzï¼DZµœGÖ8º1d˜+Êr Ñ"ÕÄt:c>[°X,™Ï§,—É{8ç!åJi„ÙÜ`<CŽIÀ{‡â8ÚƒfÏy; Õ†ZÎ{Bheù€§.ÃÇÈ… (£xú×ã;ßû¶?¾ý/¾uó#ö‡eU{€üí+^ø’›m¶þ†ÓwÜþtíJ áX/§ŽmA¨(ËyC  fwg‡ ;ÛÌ&3¼Xë°¶îZÑ•RH™¦1H)ÙÚØ ( l6Ì—u3¶Â‡ŽžBGŽlmpäèÃáÝÉÛÛÛ¸³ÙŒjQ±¶¹mX¨VMÝZK–e ŠœY–‘ç9£aZVÕdYFµœ“e"î÷^I)qÍ&ZDÊUªªÂ9GeÅE µ¤ÑŒÆë,Êš½é‰@(MšÑÖq>ðηö×½÷ 7{âs^úèÝögÿqrï“®b¨EX“žº^2[ìQÛš£›Dwß{†ÉÞ ¥ Fœ÷¬¯¯w “‚Á`ÀxúWùëõι²PSèÈ0SÑ!clÖ›A>pa{›óvÈŠœõõuh­éÞcŒéò#³ÙŒíímööö¨ª c ZëÄ>5q­JIUU÷iôº®̨ï‹1ÈnxJ’"ÓH‘ †yA]–)8¾µÁ]ÿ×=öñ±¿â}òÛ3¾ãVõî·ÿñÙɹ'ùÙY$Ø%Š$ÿéœÃdªYuAIl†,Ë0(¬õè(ȃaŽõ‰âµÖBÔuwŽ,ËØlØ«B§Ÿ·U"–¢·€ÄÖþ@Ò 8@ªw؆.FHŠ¢ ÙÛÛÃÏx_‚ÝáŽòÍõ5ßñ”w¿ý-¯ÖnÉЮºì1†N1Ñ)0Æ›DÏîmïà­Ã(Mô!­Ð­5®®(šBgÃÁ!³Ù”ÙlFn›››Ýk‰1¦pËÚN{·•ð™—K–u… OLm&MJ›“8稪ŠålŽ­jNœ8‚­­-²¢`±X # ŒáæëoàøÆ:»åQLÏŸáóŸò•}NÒäÓí“ïý‹ïÔ»kªžrlcÄps¹KE»"ËPB6=U,®©˜ÏS2-QBà­E¡60Ì©+—¤{©Cr­‰ÎqþÌ.œ=—z®|êÇRJP–%ZëNÅÝhÝå/B+¬wÔÎb}Í¢œwÔ±Ñ*m½%"¥`:6½_%ó錭5F°\"¬¥^.¸ùÆpå’\I6FC.;¶Å'nÿOö·ô é²o}Ú?ù.;9÷ôzºÍ©£œ8¶ÉÎÎ.¤Y4û3¤”]«H+à¶µµ…1¦ÓÃ…}ÕÃ,Ë0ÊPd9ÆŒ\Í!Re<×Ì—§çm?Òÿ«ýç)ß@ \ð)”’ P-K¦µFKÕ1^ÎYfó ³ù„àÑyŽÙ$Æ€B µf6›±œÍ‘"ò°oÀÎg¼ûÞ£¢H²G~Í ¯¸û{‘+äFrtkƒóÙ£têŒ-K¦Ó)eYvt*¤BÝp8è*ÚíØk  <ÏFäyÞ…^°_8l=ÂêœyIzžª¡tÛD½ Â@ ˜ÏçÝïÐZwB íkjó“öõÇ#†Ã!{{{¼ÿýïg2™±¨jðLŽÙdçÜ9þÁ3¾¾÷"=@àž;>ú­õl÷Z|ÍñcGȲÔKe¤B!pu¢hÛJv+çÉ+´w|ïý/ÒÖ'Š¢`0çy÷³-ˆZ Ø†yŠ1¦œ¥IY–,—Kjïêý~®–((›:Êp8$kê)ê(u]7uË|>oš#W]}5£õ5î¾÷ çw¶;Ï8ŸL¹úª+Xd¼÷¶wðÏ^ü£7÷ð8Ĺù+ŸsE¹sîT ŒŒ¬­ °®$ÆDÓ–ËóyjOÇ]xäœcÔдí*´Ö«ctB-U§L²úÑêæ–µ¥²®ÛPë£ÀúÔFÒ«ª"xˆ"±ZeY&vË{Š¢ Ïóî÷µžÄÚ*±c ë5™ÏPJqê²+(†#ο@U[\€,׬†l B5çÃõ®ôð8ÄÙ½çSÏóéqY—;²Žù|J–餄^ÛîN߸–aj½G›o´ë.þ~8«êì«_WUÅb‘ÀXUU×sÕu#<6øÎ»,©Me>Ÿwá\ûÑæ;Ãá°in Ìç3ʲäÂîk=v‚²vœ9w! _;Šk¯¸ ƒãcz/_÷âWå=@©•;çž-늡V?²ó5žHtÉx{È[Oáœc<w-#«Þ =øm•qÎ¥öwyH£ñD\€ÊzÊeÍ|¶d±¬X,+¬wøQàl ªÖ§É|¹`º˜wm){{{©Kë®m%"t@mÁ¬uÊ«²AÁÖÑ#˜¼`gg§æZ"œçò“GÙäT³]î½óãeCh—ÝòÔgUÓÉC3X¦êr]×MÒr+°ÐÎldYFÝÖ6oѲVm|ß>¶õ6­Fnë…Z¯Ð†`­Bb›‹ÔuªîµÃÖ·¨+J[ãc’ù©ª*…[¢ Û§²÷žÙlF–iidJú½g2™°¬+¤2¸ÙÝÝ¥È uµ¤šÍ¹ñê+ÉDäž;?Þ‡X‡Ò{Ìö¾V„œecmWÕh•a] ¬“Úa‘¢(ºba]×?~œc*¶5wçÕ½õ mã s®c—ZݾÝU9‹ žÙr žEU2[,˜-Ôµ%F°µc1_¦\E¤ŽÞdmžÑ&òkkk®ò<ï~¯”·BS+¥8wî\F¦“]Žn®SHøäG½ÓÇÖ7IDAT?È?ùÞ—=óYßwxC­Cã_ð•›ËéÞÿ®„`çè&¤ªë:‰·9w¡BÈ.ÿhW „6ßhвSmÈe›¬Õ»{{ˆ[¯ÒzŸögœsMÝQ9KU%ïQÛ üp®ýÜΕ´¯U‘Ú¥Ýè®y=Î'€¶”ó±“ÇXÛX§²5“É$y:ÑstsŒt5÷|âŽ7þÆÕäØb²û¶. -Aê¦=0JaLR©l_‘õÞw,VË·!Ój}cu46Éñx¤ˆ(- ƒA×™+DŒ"‚Á‡ˆç=Ö¹4 µBwMÊ&ŸH¯¹e®Œ1Ý×B(¤î^£–­$F«ŽÇXØÙ›¤°P¼·?~ ŸøÈ‡uˆuèšcU=UKÁ¡uªO¨ JƒhÆZ}<†–ݨë*S•7³mÈÔ†TDy`û¬Qúc5“`œ³,«r?i_ÉVY0Ոȡ$¢YÎDÙhb ÈŠÑ 7Y7/û¯õ€Þ[bL!VUiŠá,˘/¸1"²¬,ë£1…Öœ?}OŸƒ*€ÔË/1Z€ðƒ ©@ĈpW–ÍLF$ϳ.tikÝs¬Ð°m2¾š|· Yõ(íg¥ÔÁç’”FhsàCe9HB8°]ª ÉiˆTðk=^Wgqžºn šÖ²œOYΧÔMe0P ljɪJ¢ Ø0Søåœÿó_üÀ/ô9vâO¾*ÔåÔ€,Ó.•G V oXÿië•1EÑ…Gmõ»Ëj^°º&­m9iÅãœsD)ºçòܵJwŒTL£³ç­µaÕêÏuZ¾2 IuÊï®^©ø‡Þ¥¬‹Å¡4:ËQJ1Ê3dðÜ{×/èr,”‹Gk"G–k¤iB™Èr†"Ó B—|·¼=ì«Iö*HVëö.Ü‚ªUWÌóœ¢(ÔK.^Œÿ`0H"ØYÖZÊ4p¥Túºõ:™V•.ûb±`¹\¢3ƒP’ù²)T6\ÑÀé{>u¶È!0áÝ#2 ¡®Á³6!xRR\9 ;½Ëï %p :ž rûwõöëUVKju d4ݽÖZZÍéU¬²Z-8V[SV##ÄÈ2ƒs­5Ö»î5¶NÄþdb››ÔeŲ©ÞYΰP×5‹yš~¬ëšµÑ©`6™þqÃx÷P_•¬å#­‘ÎCˆäƒ‚`$Vòµ \HaÎ#¢G‰ˆ­–äÆtƒPZk¤Ö©SUÜYjŸ€¦”¢ª*ƒ­%ŸæÙƒí “B‰5òÞî /È$´Ðz*!+¥„> gŒf>›Ø!$Ak‰µU]c†õï#Zgˆ˜ÀúxHô–r¾HëÛî¦( ‘ÉîÞ¢g±ÕÞ]B“4c®• ¶²®XVe]!H™T„•‘Õf•™ºøŽßÅÿ"’ç)–Œ†M>³h–nz†Åç›°l%ç8vwüUÅh¡d\Q3d™¦\J‚³X¿ŸÛÉ–,ˆbv%7Yú{µÁ»Ø¬eÈÉ´ÁÖéõYW_Ýä˜ñ²DJ²|€ó%4J ¼th¶.טŒi]®Ôäæ*-¼ñÂ&ÄýÏ)!t•sH…Âz¶HEÅ&Ä +Uø/ÆOKÚ¡ŽÄF¹± [‚`_`.¦b§ ¨›p­éÓjÁÞ*6æÙ û[ÓtczÝKïívªCb¹à޹à 1RŒ†û³Ü> „DE.0„}–§íÁêÙ4-&­çX­g´‡Ö9×µ¢·±ªªN¸a•¹ZÅ}íD¿Øk­z¯²,»*üj“åÅÂêïhAÕ²r-E¼ md£çåõäpä c#E× 2§vðÚÖ"!8„LŸC³ƒ\DR\.$.¸O«m!BHê&bågY–ú¢\:Äu]cäØÑ£äyNY¥$zõÍÁÚÉ}&Æ@”‚ö½Öj‹Ëêè¯j@½ß0) nµC]Þ{ò<Ç{ß81cŽ€' 9î=Èa`±l™ŒDIº°B(Éúæ[G¤ƒ#¥-i)¦ÕFÄî®Ò$é«úº«E‘†º®;Fl5jC¯5‹‹ö ·†«žéâ:‡”²«¬öaµ!àjîï#ŒkgçÛßÕÒÌÎ9‚Ú§ÚI.ï=È!°"8ò¨Ð22,2bL+˜‹ñZb–x#™¹ŠLMÛ¬.Hw“$éÙz”pÑì–BЦëWslkç{»Sóýa§v6=tݹñ gj¤6WIÿ.;€æ€+¥Þâjþ‰­jºúüm·ït:MEM‘@ߎøŠûØOÒ{ÏaÛU¨—Ô‹9JÖÖÖøôîdÂd±£¨C¤ò¡;@ŸÎP‰¹À}õTÅ9qâËå’Åb1†õõuBÝÇê\iµ|Û;újûH{§_õm;} ¶@¹šW¬¾æU¯Õ <¤0Løºy]‡¶›÷Py\ÆYå]‘åg+ªZQŽÈ|¹d8#€²¬ÑG5§e6[›h©ˆ2…¤²iþ‚ÑRd$ª¢¸†NŸ–ùl‰PZehíX.—”eEž šçQú@nІkmî ¥:@ó¶` !0 X.—L§SŒ1Ìsʲ½&)ÉÇ¡M;’Û OH™d…”Ñ]åY×Y1˜ÙIÏ}€äæ|–›cY³ì27“Ù”ÊE„Jt¨«jœuØÒ2ä]¾Ðú²,÷“`¥$Çíá M•IÄÍäY7wž”J|§š(„@4¡ÔjÓæ#«ìÕAV‹,{˜ö1UU«¹Ì§ç1Î9öööðÞ3Ž;ÏTÚš½Éï"Jˆó}ˆu¬ á^B?¨êä|@E錡Ì1QP-+\ªÛí0Q·Š€¦•=Bôá½Ú& ÁùN%±¥­jb¤SN¼˜®½˜:¾/Úwõ€·ÿV¯èg­>¶óB¢8b­þÞårÙm¼Š1¢2CŒ0›-’r½)îíC¬C`6ÊOz¡12/+¶œc¡™Ì”Æ ƒÊ To’bát:åÔ©S•Ú8t×ët_µ‹öÎ^×5µ³]h¥”"²ÏT¥Cͧå4«Ÿc\=ØâÀïk5°Vz°E?6=[‘b—“dYÖQÄÆ$Æ­ºÊóœa¾¬Z1?Ù{C`“¥½Ý MT†Ú¦½yžCˆDÈ´$D×Íy+¥(L†‘ Ûî†]=7Z£Vôý™t²É ößV®´ ÕVïþÓ²ÛÅ hr±ç¹ï‹-ÐrƦÓ)Hlv”´ó$m5(X_Û¼ýR½¦úæ[7{€Ü_!–•ï"#¢©j‡ÉrL–QÙëƒÑˆT µ›¦ïROÕööv'ÄÐ2L‡<«Þ¤{ƒ›ü¢€[­s\ü3·½_l«¡Uûóíœ{Kñ®þþû ·Vë1B.\¸@UUdYÖ4:&å”ÙlF];¢=zôý—ê51=@î'½+ŠŒ4s(+K1"µ$ŠÈp}„Ê5^D¼¤]€4;Q/KÌFé"@¤Xˆ±©Ö/—Ëî@¶ó­–UÛaû×å¾w_€i[EVA BD„O§¢Û׳½½Í|žTâ‡ÍèmKooï(i8qâÔ».Õkª„Üér?Ù¹»n»k±¬>\Y4vwȲŒb4%QY =¤VDÀγt7W’ù|Ž)ò³è÷UÝnïòR ¬­ÉMÖ1^1Fl™Ú9þ:Or±Ç$I‰h:#°ÿ{­Ið:xBˆDÚðÍlA © F§ðêìÙ45È÷ûÅ ‰KL§Óô,Jø¿¼ögîºT¯é{~1)®|Þó_qmûÁŠÑðO£€Úz¦Ó9.¶ò="W]q%ÞÕd¹ÆZÏd:Ge9R&ó.xtfXV%ˆe$&×´U ¥5BJ2c(rÃdo—Lk‚s E7à$DêûêêJuÏÑtT5`›ÙÙ¡ZsþÂ…šÊ9l³BZ‘š 3•¶áÆ@”YQpa{—²,»D}kc“²,Y__ÇZÇödJ4£#[z©^Ë[^ôºùü½ù=¿ôÒ;z€Ü/±xBuº»ÓɼӳM ‹µÑ˜ÅlNhB‘ºa­„’L§S‹E'ÐÐöeµìPÛ•îÆ¡‰í –‹Yò1Ý¡EH¡X{×^Ý…¾BAj S”:XiB°¨*æe‰ ûB×)¿8ØG–eÚˆÉîííCª•Œ‡£n‡»)rÎ_¸€ÔŠ:N]yõ%»–-„°ÕxÞAbÝ_1«4¿WE™eUUqîô™T'hæ´…?~ï÷«ªêæb±è:^/…[kk;R×uWtl•ØWNˆ>É•vc ™Ú×µjŸ³­~·©mcl«u­uš…Ïs¤J­/íJ„"Ë9~òD:k-gΜÁ»È •7>ô¦7^ª×ò}¿ô’ÓB«{z€ÜOvážìÖ.¼aQ¥ŠÉt·©8ï÷BFéŽÚ°6ùmßÅÉðª²{{Hu³ ·¥_ÛCÚÎ{w*)ÍØíAÑ7’’`ÝÊØíÁ­M}dBÖ××И,±‘-³Õö;%ÐYD³ò-„+m+« i“÷öЯ~ßÖnV už‘C²,GÊ4#?ŸÏ™Í¦gkˆJ¡‘JsÏ™³x^®»ñæßº”.Û‡~éï_õPdûìÇ#+·ûäuöööºöö0ž8q¢^huv­µ];FUUæÔWw‚¬†WíòšÖó¬2_ínÁn€ÉºÃíUZt0tk¤W{ÄV»yÅÀ¶˜¸··Çtwi#3züøqƒÎ9²A ‘í½ .ÀxãÈíoþÿ^ûrS‡õ×ÅÚ&Î}©ˆ!hº[GépJÍp4€fȾwØ—mGpÛcÄÙýðË{Oˆ`O ŠMµ[B#è´Ó‚F+Œ6()q¶F­TëÇã1›8ÚÐpµÀØ‚ucc££nË2-é™ì즺LlnnrÙ©“˜D6ç¶÷¼—Òd6àÆG>ê§~ÿ?ÿÒï]ª×îúç¾âÚþòKÎl¿ëM3€æsûÑŠµc&úì]½%¢‡¦ïʘŒétʇ>ø‹E·¥6Ä}ÚèZ3Ú]UYï¯9k6R˜ë ôðtY–Ìæ‰(:vì×_=7Üp×^{-‹Åk-“É„öööºe9mÓ Pomm1 ºPn4qáÂ…n½šµÙŒõŠæóñãǹ쪇ðž÷~€»NŸAkîøÂ/~âs?ðη-/Õë¶qË“qü ž>ÝzÌÓâλþÐ÷9ÈåEæ»S“Eôî+I•$Ï2Bˆœ>}šÙlz@å½ä]Ãb+F-„`04ì“è¥Ñh„P ©TˆêØ®ýP¨e’$‚å|Áù³ç¸ë“wr×'ïä̽§™ì/ðÖaë[×´2rÎZ¤V ‡CŽ=Š1†ÉdÒÕ7Œ1ìlï#8ŸÄ¶µj´…]ÚVU ‡¸(x߇n§¯ró…_üòßÿµŸó¥|Ývßóæ»¶ßõ‡åñÇ>M_¸íˆ 76Öþž‘áéCc @2™ì6ÛlmÇXƃŽNÍó¼Ë+F£”ÜÇØ¢år™´¯Æã®¨×Ά¬*ï)­²Q­wYÝbÕ†e-3BHË@›•º®“:ûŠ.W ÉË8_§×Üx7o.x¤1dƒ5.Lç=äÔ57þþï~ËW<Ø®ßußôŠk?þËL«‰êáõ#÷†ªúÇZŠ\)Iô1íJ¯ªK8k›¾orÛ^ÒRÄZï×&‹u†¶hXY–uëšÛS-=›iÓ0X ­Eóÿíú…ápØåiÍZ`6›u []É ¥DŠ”‹È¦EEµ´´T˜Ì°,K„ÉXÖ‘Ñ‘£Ó§|ù3¾ü}ñ'ÓKùZÝôüWåç/ò;ïzÓnb=€V.¦w GcFyöÔáp€@`Œ&ÄеyÄ©í¾*b˵Í~Þ¥;þh4J*Šu}`ˆ©MœÛ­'j[Í[J·(Š´nº‘/ ]kKÛZ²X,˜Ì¦!ºŠ}[Ìls £S%Ë,[ðÒ­s*@|þ>þe¿ûºŸùo—úµ:úè/[»ÐP½×?÷×î¼ûÂlÇë·Œxxžçß`I£´kkk8çºè«Š ZkŽ=ÊöövG;[ÆMˆÕ΂¬¶²·ª(„‚L„Md#Åã²ñVmÿTë¹Úçi™²¶3·­©„¯ ÓŒ¹n¤¤Z–éÿc$±.píM7ü§·¼áW_ù`¸Nιë€ÛRŒê/î¸ù›_•ðïÿJ{ïAÛ›ì²uìÔµ·(ÉÕ¹I-ë«sÛ&Ó{UO|â9}ú4‹Å%dbˆ8[#Dò‘x`š¯Í=B鯀óže¹d:™bmÊSZÝ,ï]ZêÙ¨ äyÞÑ̦! ÚaÛ¼(¥äò“§ÁCðèVÑ$éÿ¤ÀFET9ǯ¸ú-þâ/yá{ßñ¶Ùƒá:|ÜÓ·Ûkç=o¾+…]·n~è—~àéë²b¶ÏŸ?uòª» ­#‚?±yôBD”–”Ub=µÖœ¼ì¹ú!l_¸r%‘DfÓ R@a ÞÛ”ƒ‡)§ð¡i?×eš­©]žAQ€ŒXW£"Z"H2?J%™ž²L¡TûJ+B‚ul®opÕ•Wò´§>•\F{Û òÚd`2ê ¡XCŽ6ÞwË}É‹^ÿ^ý YeÛ‚ã†ozå©¶rþ¶®ºÞä";}îÞ;N=uλê1Êè#ÎYj[waK–e˜¦36†Àb±àúë®ç‰"kãu¶/ì0N0Y†Tî OþŽß~ÍO¾åÁx¶ Â`ÏÀî9æ—Ÿ¸|»ªË["ñ.`tF 0 ‰Áãg>Ÿ³µµÅé3g8w~›GÝòy\síu|âÎO±,k"‚º¶ÄBJ¼Ô.àœÇû@U×ékëI3„©»ØV[;\ŒXçOÒêg)0y†‘’"ËØ\_çÚ«¯áÔɓĘ~>Ï3ó9“Ù™Ô>d­áeöÑo~Ôÿ××ýìïôW»ÈßÊî=ö½ë[gˆ<ÒÜ:‡u.Õ Cš÷ÞÚÚJʉ:!øø'>Áé3g8yê ¾ê«¿Šºéž¶ÉµÙ”ªë:å !43¶i¥óï<µ÷h“©¹Q‰¢“5ÆpÙÉ“?~œµÑ8å&¦mlL‰ý'ó;¶'sòñ&ÓÒQ¬o}ð¡üüï}ãë~î·ú«Üäïïîl¿4ZÿXeíõ»»“«Êª¢®+¤JݸçΜ#Ër²¢H3âÊ€ìNg!“h‚÷¨fK®ˆ"UÅ}¢…Å)I ¼oZÕ•A› ߀#Šˆ’A1`c#uá^yå•[[[ ‡9!zD„à=Óéw~êS,ʚɲ¦Š2 N^uíÛoºå±ÿô×áÇÿ¼¿ºŸ™õ•ôÏÀ.;õ[æ³é)â×ùP1) ’ø³P©åcmc‹µuvw'©WJF$`ò L&“¤Ò¬xnס€@°)› º²"g´¾–ê Z¥Å›„޹*š‚ažçx›èè3gÎ0_L©|¤´‚ÁúJyè#õú[ó…Ïÿ•Ÿüןs2Ô7>ïÖÍcñÑ_¾ÿ' {€|†vâ²ëÑW/uÕò%„Z©ÈV¥VÔÞsìøI6660J#ñØ:,Ze+ î‘eµO¼äÙ¥¶r´;­w­ÈšÍOÎÖhm]´Œ§­Ãœ½pa_ÄÚC†hF8iü-~Ü+¯}ØM?ü«ÿöeþsõúÜðM¯<Õä°­cW|µ+ßgdx‚+çŒF#‚säƒ"%Ù`Ï`0àÈæZ·E¶x“BwÍeörä&u ·]©•=my ó®Ç«-P–eZ³3™°½½Í`8f¶(Bác xÐÅ|óäÛ÷ø'½ì¯ý©?èÐäïÍÖ¶._Ëeøn_/¾“àÈnó¬8°‡Ãù­e’4 5<  @Ü—']U. 1y¥ ‹Å"I-+–Ë%(ED⣢ªS˜W‡ˆÉÄ(¶ý…ÿéÍã—½ú·å'>gwœßø¼[7W‡¨ë[Mþ6ݹg:…—?~ÕoW}[på CðJ4É·”¡Sä‚ÃZÏ|Y"÷&Ô3•w{I¤VMµ½/¯ùŸíÝ=kTAÆñçÌÜ›Ýlnˆš•€âK¢­…M K +Qð«øA„ …… ˆDE$5Hb°ÐÆÄB’uïÌXìn‚‚Hp³ñÿ+o9—3s_fÎS_[YO !È\&Ë2}/¢b!9Ÿ):/å¹V‹¨žR_ªÝ¨ _Ÿx0>½Ûmù™V¨Vk'2¯K¦x14êƒ!4Ö·•HRJ­“?qJ±Ñliš™Sj­>¦-良–5w ¯ÕŠr’åÊ{{å|IkET©¯ºTé¯Þ>tdäæäÃ[ovûx^¾VšÝ¦'Hí« Õ )ÄóÎÙX;?D’Ì5»*š™¼mD57 ()¤_3A’œËR!ïr…圗ÏKŠÉËò\=•þÇÊzî ¸;óâþw€éž—ù¡£#!„³Ni,¥t&Ƹ7µrÖŠõ]¶í‚ˆíïK­x8ÉÉù\AIÞeŠJr.[,•+Ï,Ëçå¾GŸÞ>yÿ¿Œg»IÃì6÷Æ¢@¶Éžý£'M:%ÅãÓ1Y<BòÞUÍ\%¥”E©0³3ÿ5™æ-/4ççzzËïB‘^-ÌMN1’üíãÖŸ®uŸyÑuBŠ’>K͆qÞÜòì?èÛ ìx#W¶få›ÐŽ>`s¶êç  ³è‹ÕÅî<ŸvÎ’¾,KWÏNŒºÒË…`¯çë6>1óÛ ij>ÙÌraO?,2i°#ü>‡ÚFaIEND®B`‚19ae2eb92426f0371d7602abc815cc5449f48b8d.paxheader00006660000000000000000000000420151516305000020426xustar00rootroot00000000000000272 path=src/BWidgets/examples/inc/music-guitar-acoustic-guitar-instrument-electric-guitar-musical-instrument-stringed-instrument-bass-fender-strings-bass-guitar-e-bass-jazzbass-string-instrument-plucked-string-instruments-slide-guitar-acoustic-electric-guitar-699195.png 19ae2eb92426f0371d7602abc815cc5449f48b8d.data000066400000000000000000036307051515163050000173060ustar00rootroot00000000000000‰PNG  IHDR°–¿ÉƒiCCPICC profile(‘}‘=HÃ@Å_ÓJE*"v(â¡:YqÔ*¡B¨Zu0¹ô š’GÁµààÇbÕÁÅYWWAüqtrRt‘ÿ—ZÄxpÜw÷wï¡Qeš4Ý63©¤˜Ë¯ˆáWˆ !Ädf³’”†ïøºG€¯w žåîÏÑ«,Dâf˜6ñ:ñÔ¦mpÞ'޲²¬ŸštAâG®+¿q.¹,ð̨™ÍÌG‰ÅR+ÌʦF¾‹¾W±ç\ýïZQ (ĨHõûh¯/zÍþ{¥”áúýóøuùó!½‡¢ë+Þý=»?‚á>Å×AÙ>¿¾†dxÎós⤯w¥l¯Ýïqü›D¯7¥ÔöŒþösº&³í¯Zïv/ ¼ïa½’Ô¶·J)ËÚ °ÿD`½æ“îc»ß™u-Âö³ØÞ¶½ û=š×¿­²uì{BüëlÏSð.Ì ²< ÷œ¨¯}9½§ 8(ú¹¯Kï#Ê Áß¾~µû—sÆÅ~Ÿ3„)] ÄýþSn1 ÙïÜ÷ È9ƒØî#éýºÒ«=—÷|¡züÃ;Au÷ü³úúðý×üpO* kÏc”ÿŒ¿EŒå¾ÿïûF²=”5††XTn-Ûcsx¶×šcTü¿Ç”øùã3רÇG¿-Þ„ûÅþ¹ÊÝîUŒ}Àø~ëùQ,ÎÊrÏç8;ß»aŸÛ^j×ïk©ÅÓ!¾’Ç}¯t8÷æëˆŸ#~m>{˜¤½¯ïÿñ4­Ó¬!æR²õÛžEb­ßc¶xVêx>úçl÷Íâèö Ôh1¬ïöúö,ü3Ägïg)E÷+õsY¿Gõ0Éöý_¯<¬›žm‹ó¾f§»'$Ã5Ï{t>—{QËö÷=ÏXÖ}¸·ñLÞï·å^qÿÄ{7¿~|ŸùLÓµ‘ÚÙ2Ç®5oëßóŸ÷÷k÷:%¼ßïáëq/Åók¾oýš)¬Ý´½ç1&Îk¬B–½ãx|-EñkµÖá}çxß÷p®Ç=”RjgËzãi‰¥1>’¯ß¥.ûcÈEÚ=°s=_¾ì€”‘ò/'=¯ƒpARBJ¿øI/¤tSñKß+] ”À”Aù§ œ˜.=›YÏQXþJ}/†}ª—HMn¯y‡~Þz¿õÞ•wËmj½Q¿ß©(õû¾!ßß(õ÷Ÿß¨÷H½ûïïß(ï¢~ãýþ'Ê}£–? R@µ Ô7JyCJE©ßúúò TA)o”ÚŸS)(Us1èÙ_å^ö ¹‘·¥ g½7ß÷ Œw)-¯égåxöÁòb æŒte½Îpïü9ÛË¡Öñ¼¨eÚ³¼¯‘jÕëöýÉ¡þó5X„08隺ﻭwÏŸ¾ï²¬MÏ3  ÂXûx¾<æÁ¶fxŒM§aÏJéçÞu]ù¥ùö¿„0|¦˜÷/9ýtèù•¶ù·ü£ ùµÏ©ß«µT[ýtÊöMû¾½F‹u˜kôŒïïo”*ùBDø¾­. ¿ãë~ŠÆ¬·ý>!õX$7rÎC®Õ¯™‡ϸÎÛÚlÏÔb¿ôõ¬ñ!¯»fæ^ëx]Ï5&Ò¼d{™ýóÊGVËK„4Çð<»ÂjsÛG9çöþ"‚ÛέÚê×1ñû”B=¯)Ùõ0Ûš·õÃÐëÏI×µž«o\DHyŠ@[[¾z~0æ‘rÄᬩ=vé3ñx>÷zŒ–=“³>·»Œ¹‡ÿìûþÓŸU¨[};]ß¼~r{¨Xˆ …_<Óz~xǃ?& ÷}ƒ—œ†…ÎSA?ª9‘ñï×øµM7‰$[ÐŒhNvü3î„r—ma¹K‡ë¯¿+P#X´ÈZ·„$.‚´ã¡0®ã³ëɤý<¦$>/\ÃM:X÷ íéIbcÁ¥GÊxï‹ÈÚ‚‰~=Eô°KÄ  ¡ ± SB¥ ²¿•*2ØþPPÚ×ýçP¨J{`m h"jŒx=˜ôóÙ!WUoçç?¯ĽÅ|,,Ú>‚4Ló¨"‘&Ríºìú4]"}uÞcãÏ·ýï~É÷d€ðPüôkö—AD*déu]ȉ@¢‰ó+)0seûÛ8°˜3`‡E²„<‚‰±pcÖ53Ç8Ãq†âkÓræ1“ý{ý¹ú<ÇÀõküàÇ}cMÄø´¼^ÃTä É Î…ùšæxwòbl÷¶€D=™nšÎ½o×u=Æêö÷vÿl®_×}Z@:ßcÀªS?Ž€·khhÁºÛó§Ýg^>­ÒLYOøv€Ç|9ñöçÚ½)u{ïg ó´ÆzÒCÓgáÞƒÆ"&aýïíŸs"þ¼9Aù°¶æ|kŽóz˜ïÏ ®îî[)åxo#4ƒ_O͵y¯ù½žŸc<¿âgÛ5O[üœ»ý§x?N÷y÷ZóëÌ×¹ã:öÕa<ˆó÷âûÆæÕîJ+˜ÇuÍÌàœÛz¨!ik’Åâ7ˆd+`kÏvÍ?‘ À½`?ÅÿŸì›Ýý]×5ð¹ÄµÏŒ*4œYm=²6ÕH Nt4·*RnÍÅýëç|×7jÍðO:œý|ï¹DkRKÕ úúiúý¸Ï DWÏK˜À|i>*<5°XA¢ê`–}?ÕÞPdmsÖΔæÇú{¬Ð!®ô ` AH EP™€ $*)éõäDWÖçו‡=ÐÎu¨2˜$4®‹ÕŸ JÑ&½HÒ¦p¥M¦€“)5@ˆðý§(¸(lM—„” Rõóß犯›Èr»‘¶×õ[A¼$Ñ®ÖZ[¡5S´Œð9)“®/¤#‰c”¦XhŠÙXÁˆ”Rþb¾™Ý#S\ò5Tkƒq¡¢R ×F¹¬&ñ<´,„æfR='Žg䘽n JË›"hòõ…´Ò\…‡œ‰Ÿ[Ïíl1k>XñÏ‘„ÌKöù*aÉíDÉA;o@mÏò`õçš!1·œƒ¢'Jº>á'µ³O6 4Zp‹Àa_Ë9osÉ9Nï0šx¿b¹?çϘóØNùìH&Z¹yþÅŽŠÊR€Ì €"„s窣®¥¤€êCƱ3>߸`³$Uޝ±ëjîÑùg"«gî†.‰>Ëq<%ø-ËXŸX §{qÿfë”$Íd,†r†{´M2™!¥ ¶ë˜³~]l¬¶ÄX*¢`Ä["­pÖþ€¤qé) à  $0éz¬õÖƒŠ ÉÈ<,‚Jýµ@‚ ÙïBôßþ& žV‘h0Ô£i(œ<¨j$YÚUØ>YΘúžR5Ù@ÉÖ5% Jëîµ5Á° g‰€6e¿á ªaØ_€®‘Ô = ’±„`ÝJ½3çÝŠ”䨤¡CÖÞ¢ÀÔqÀY¯Ñ¿¤×MágHDàÊ|H|õ’Rpk„˜q] ÙXV)q òWR–h¦Ü×'®ë¥ ÂÖÉè»tyŒÎr自´ƒvÜCÒö‘ôû@ë~æp õ{Ö]b†lØMýýä‘e™ ÷}!(¥ q:ÆÖX€ó¦‹ 1t(^ü@4>®ƒ3+×C€l(>u¦v¬–§3hŽ×§ÆHoˆØ>?t=Iám¬b%oT»mkñLD­#ü”lxž÷‚Ï^0ñæ5jªí^ΰa>€‚§afÂêÒâcáë§Ç|šþÀ™¸3C Çœå@î>ˉe÷TÈï ûøügVÜüÜ;s^¶,Iï FÆ×S~öÓœ.ú»<&v{O°3°tÚ?'`ÿ”<ŸžÛgçg0ƒ%‘™µkÌÊ”ž¾?Ç‘T½Í€@1i€}Ëó†Ÿç3hÆPÍÎìa†óæ©)1^³3ViÈf¦e­¶†3»VXM¡LÏ{”…Ÿ”Õðšx)3,!I…Øç×uÀ'´è1n/n¨ÊÌ J J–Ÿå¡ù$Òë(¿&ßKí|• ℜe`ÆuTî)÷¿Âzg‚–?àÀË¥üÌ—²€"pUªìzÅb‰ +„‚[[T@•­r¹Ä-—êŒÿÔ Üe1ðJ—(Šh k%%Æ÷÷·æ7¬µYž7œ£0e¨'Ö $XK0…À™çÉZ¡p-™Îƒ2„C³¤¢‚ÉAµgØC#c˜­©ð…þ^NþüiPU‘¸šÂëj5 „Q‰P“]Ìg¡JmÑD› SþEVQY³\ªÅ Vð¦2 B´xÌH¾Ž ¨EBÌëê‚»pòÜ‹£;î@t#°Ô½¡%Ú;`dÿÖ¢Ò>CÑ IS¶Ï£ùi Bo€ Zéù½ç!ù¾ß/½&˜àL€#³Ög¥h­,R”˜A§À¥P£Ñ¨Y2öç§’<¤³ËŠÁ0sÿ¹pšDå\Ë?¨ñi%ÍÌŽžÏ÷9ŸÏßÜ¥L3ƒ@މÕSb¹û3³ºü=RJÇ0'´»DÎþãjN ç×áÆ4X“¦S2<@Û0!‘ ÍÿÃëîq»£§‚+².vÅÑL©Ü]Ç© ÎÌM"ƒ¾W­s`}¾-ðŠ.m‚ ¢Û¦´î:Ä&Z—0>oi•+ ˜«vE *Ø;vH(JPíü*vì C¼I¤ AJz\²ßì)0`AèW“hE1¿ŒÏŸ,1)œ«Œ® «AîEL½a/`*’HA4ïx‰*•ë sQÌ&ÿñëòOߗ垺V‹ »î×_— b»…@vˆëºÎ¯ ×+µƒëÊWà±vŒ€™‘÷¯™Y“˜©2_Kä´DžâÊÌpÚÅøkBDšôœ Û"ÏãOd¤Î²Æ]ÑøÄØø ³Õ¦âxfÍ Ê'°ìÊÅ¿òO¬¥ôðÔñÏáÌÁÝù#Q¶±e‰ðVš2ÿw|þ3SèÔ€Ú}Žõ=žÁ¿‘Õö*ækx,O9 6ën-ìÀíùùÏëô´ç|kÇ8ß1&OàáÌ&™ú'yýŽmõ~úoÚ€Ÿ˜i»ø³{–Ÿì N¹ÜØü¤"xb[íÝhÈÐ Ø]—3k£|&2(5Pé!wvz´XÌçÈô®µ(s„ª²_$6c x «Óçûl¹—´gc:‹½6®ƒÐÉÎwÍ“ ¬eFe69ÕZviñªçŸ£Š I™?Z½Vr<æ²’(0Æôs£8>ÓtemìŠ2í¥V¥Œ9õu±’ý«Ê$_µ¢Š @àEz×XS­‰ˆäÍˉê$%"Q.ÃîE—(kŽ#³7u‹:í U‚X³Ãs`ØÈ©³×”ö·³P:¨!`»VÏõ_‰ 8±†l%•§éMEÎŒ8wlMXª‚‚lë'Ù¿“O‰õ}DPýÚHô씈º(+RRÀ³u+Ã|fF?IµŸâïIq›Û®)Ôªª>C¯›’•³zñõTíû’PQŒH@F䔯äKˆ7â‘Úºæ]­IT k¡´D“¤&­µÞL@qB‚Öy¢À5cÌacšÑ€‘+H«{Ømæ.‘t{ $Ò¥ã©[,˜„ÑÁ`P‹à&ÕÚ¤™ëó­AA”L˜H¡–¨íSò¦¹þ·×ÑcvMªž;¯øÈ.ÿÞY€œØæ›¾ÀÄŽÕÅïÆ,E~œì0ˆLAê3'Þ¡sêã®Û—h•ÌÔñ1Ù;[ü G‘MGç¿<{J¢vݳüÙJ‘½;”=AØ O€Üâ2yÚœðŽöîÅûûý>ú<í$Lý3Æ"·^3s«V±ÿW£à®÷½’(ÖaLBG£õ °ÔÞEñf€¨j“QK'@,Êëòk"QvS5€JbUcsVöO²s ܧªñYÕ$´ x’`1É¢æY#p )ýùâH³¤V ¾lh½vvPÐCûý®åÝAçºJiÝÓ.‚bQÚ4+£4‹pO^ƒå¿Í3Ƚ½ô£TKn¼ x¡<¢÷Ú z©0ïàrÆ ­÷›ƒkóX` gë~Ù½ûz]J¶Ïÿu½ìwˆro¢„˜÷áÀÙI<6ì(@`â]1NÊRP»·ƒî¿zL:Nù]ñäÌ06Ó;&c žãzÍ5"BlôÞ:t”Ò^všõ©(Œÿ¶Ðó9# ÀåÖMã5‹ •Çç“›?±è@ØT»œa÷õ'ÉáSò¹“b=å§}rÊÅvûh—÷ì$º»îë%®»ÏƒA·»WU>{€íš‚O ØàÛWy)ŒÜàl¯o á:€@½Ãö ÷†dêÏ ¹µE‘¹e^yBÃkøúösóyMîïE“¯†»yyÃYVžAÀj š¬°Ý¿:ÈšÔóÓ _»Þ××eù‘5¥£Ô­ Ì@ ë73&ŸVæLBJ]êWÄPd¿àJY×hÕìX-æõ$uð»REJ  Tìó>7ÆÜckç¡«/—¶M›D4Öh3ã:6Šh®tj’KN­ÐŸý§Íûy!A‰¡Ö!bïOÆäO))èT Åü®cSéý%V¬®–¢r/’Ih {@­‚¯_š?±ÊI Pë ”@÷¥3–JP;Eà*2¬Æx49G°´ïI6P$qR€Êî]NÝϬT%@dˆŠÕ2ŃÕòÅ{«2‚ŒE¨E´ñC‰Û:&Qi ‡ûì ? ¹ #A»òlpžvVCc¨šg/Y+®+ðµ;;­;¯B×fÿÑó@Ý¥V/]!¯j ¬Þ]KUúš¥ Ü"z›ïœ­ÅÙU;%Û÷¼™ÎèÚš ¢Ï31«"ÈêWµœérmf}5•ºï¡˜*É×ÛZÇHH·µI9’L|Ýy}B®jÍ «ÙëdM๥Ǧë¨1Y5o^ùBôP[Ï»Úýp݇W:1ï(Ó~øÏÀÈ.ªµL25Yt¡c‚6a)çGJüšˆÒ$yÄ#ÀÕ;Ôû×àM’2_÷S÷µNëÓïÌ,Gyç÷î÷¶Ò]‡wîxï’Òy!G™áî}x2ïß™¡*( Å"Þˆ3( Eý$ŸÐ éÃßöy,‘È`; Ø:S¶©¨*åŸÛ>.*L=éuÙ £IÝ‚‘´ó䟇0‚nXQ9³+~&­YyS¼×vè4“÷%Ù5O _õnèÿîÀcªÛµ5°$ä­Ì9¹µkŽƒÔ½3:G'IÜ$õ¹sÒÏî37ொê¾{·ä†ˆÊ>Õ+‚qenÞ" Jï¿®R"“zr+®½®FÕÐ [Ϻ™2„ÉDîSjæùu(”º, ­zØo  ‹ ÅOFÊ3€±“Ë쀙9Þì=k`]1–¨±¨®—÷ûÝöø¶¤};_÷±yðAÎvzþyqœh+¥Ýû9cöŽ}¼c¬,ž0ÞqÅÞú3)>‹“ÒãùòîÙúmÙ6€"ýÄŽ…ë3/.ó'òxxb°' ÓÎC$®Ÿ'Ÿ¶*õ‘-·c g)áGÎg0‡&%¢§Ï³“âí ÈOëv'¿;Ëà>ûº}boí†Ë æà%8›ÈÆDþÈXþÐüü)#ï„ÏMÒOûyº1ØrìÀõy¿õ\¢6æBk‚ˆ›ÐØu• ¡®àÚ<°’g±éÅNÂ*««Yee"[¯·ÝÚˆû‰‘ÖÁ)šò«j5ö¼ %£ÃDÚP³ÃKKI¶dEÿ[ÌØ¢½Ô –Wä¬ ¬ZÏ×2¬ÇØ Ðÿ·Pk¸RÕ8ÙTTµPW+½î[hÈ7´'<Â…ƒ4±1_È´]Y@ÂÆ£”¯”FRêÐO블÷6‰K&õërÛÞS¥49žë°õ-ôÔ!©m éf¾i2F ôüFŒ ºr¿wîi&¤Ï9sïv¶Ïh–ÃA(»K*!±&‚ÜoPRÃR=•µÉ$HÌx¥Œ|uëʬ¿Ç¹]/“š¼;K×N<<úôÃQž“Rj“Î2²VÖVcsg¡o&0íuËQØ•Jãp˜Dž;õx˶³ÊÀ¢„I$k¸Ü+›õA%cÔÂìD+ªN&÷²‘æÝÓ|z¬qÛ#ÃÔ:m˜éuYÁân¢—æZÞð¨ÔÚ·*u« ±nÿF-X#˸ÿJÀb¼±¯]i4©›7­2¼¨U£Aé—Xia7*•Úu:§ˆ2` ‰ ø÷ûmŠ e×°˜” ªÔ¸.6€ÐçC•b¦ý÷ß“JõóJûÜÞ¡ &¤ti k~[Òž§¯Ýqäú™©ˆÞqë°hèð).Åq`í`ãÄÈœA”‡  p2®Ä¸®—yhWóÊ_È—& :I®6MdB©Áf€Å”@R0­¯û)Ž=Çv†Bg1Ž€ÇûûO3yŸ4Ôû½7ÝŸ Ñ]Á¦tx,€“ àÂÌx‡ƒƒñþ™ßï7^¿^s”?zþíºìOÃ]ŒÛMáÛ‚ÙÑNR}š)Ä§Ä IDATdǜҪ¿w,›&¯ßŒI^âå¿ÀðŠ÷7ÊOvòÅ'vš¤3;à'r¨FµÏ7z¡Ñ¦7Ÿµ'ÆÕO:w@œt3K™š— ¦N%@çla°»'ò $Ì×ùáî»M§É}?e×ÍùË–A¶éâÇë¾ï{X?»Á2§çxÚ7‹è¡Ù¸‹{Ÿ¤½3è= G»ƒý›Ýý;y~–=1Èž¸îŽïÌà]Ní y½Èä#è;›,FÚ(’¡YàÌs—hØx2¯TkDù”6jä'Q†q3§$­)²M\XÁ®Æ CQûoŤp¢M]c†ÝU_Ÿ3$!qUÕ ±Ö!WUÁÛØ]|é½i "¤å…Æî‡¬ –aˆFT8ØÏó>«fÄsž¥1«)S*1õýO„Š‚”.¤z›GVÕJ(QºØ™E¢à®ÉJH ¬¹ú-b^Ã}})0ã—Oæc©θ /hòT‹G`ÏLF¤uëú¯¦ú!)¸®/”ò¶}æ„€êô䔸v/Õf÷b€«5¢Á T š¹{¨˜°è>Ìž³x³’ù>„+jåÖÄVÿdí–)0e¬/h³ÐäÝ÷­ž¾Éê!‹¿mò²”.¯-úÚ)©êDî³Á¬0Ù1ƒ•är&= ¨i1*q¡t¢-Oõ¤l]}zýÆÀ:%àþ q bL(|Êà+§¥Ô6™ËÊÑH¼6YÊ®^;ž¼ÜØø¾'§ŸRÏ#@ç7xî¤ya:)‘I+ø3wÛ"Š8{ŽöÔ®“ŸE<,ÇZÎßó¯¿þúHC‹ÛŸ+`ÎÓÈA•¢°™åÝ·!ãոO+KÖX!¸+ ü5Úæ)¶¨wæ ˆcPÝä(«ú»ÞJßµî‹7βŠ`B|¬Ã”?7qÇàèZ¸AIæ£Å„zU¥Œt¹bü)‚·WJ $Õ»%šÕ^lFÕ)|Öƒú*¥µT¤WVË:hŠðÛä•$¸ïo5:'B-Õ&ù]HÔ»t ^s¿ç>}K9eÄ`Õ;yÄxáûûÖI¤µ”Ö‘Ã ïZr2Ê·K;³Tñº~YB­´ÜÌÉ|¯TJøº®.# É“Qøs3gnÃE8·Ä.]£4†yœ@豪±-„sp‘êˆ[¡o_û·û[ØS8ÒrOršvrC6šî°ŸkŸ¬To5ؤä’5Üe“!D€¦É%E;Ê:Á^Ûãp³®Ii”DÌñ9&ïsá·“ÂÍ…fJ r—!¾yló─¥ÕçY,A¾à jó,›½iqlÒŽøþ__óëÓ ™t Y<œQÞ¼cgÄc'Ót«EZîª}¢ ‡n­ØØø¯Üß2eõÆ}¿ñz½Ì°Ë:rÄO”Óù×Ç¢Ý}¢ ‰ŒëÀ·Wdø BaPPeÒ@|K*èí“‹JKÖ"k˜™pßï ˜!M¶°óKŠûdn ­ uIRc«Û}Å×Üy[ î7ÿþÓÔÈЊ×tû¾í¬8¿¦6/zÌð‚Ï×nœÈÙX]¢{o@¦¾îR ƽ‹­9DgGx,Ö‹)6¾š"ó…ìgîrÛ^ª(ÎÃﯯ/å^¼H) ٘ǣ³¿¦±4:ƒ“ZÑÚslgaå—RP*/“ãs)2&Ú$i>šR«æÖÄKÌÍÞA  šÐŒ3=>:Ë'îSYy¡´‘œûý¦ÙR7=®"H8”B=mö :<ˆRRVW­êûâ“Ú²N%F›É׋S »¬>XŠ°à•¯)¬ƒL¹”[¥GîÑåçßëæXäÌÌ:9Øk¢ÔP%ó0r°Vl*·{C™5_9¯Ô¤Õ¼ˆʤÀRc6µ¼_ß÷믿 SJcó§y˜ENOlÝÔ™Kå­Œ"6¶Ò×__MšXEs1£–¢ ¶¯—¾F ªoÔŒ÷K±ó„DÉÌÇt%üJJ}à X¹mgÎȤ_¿ÿ|ã××…ò]t_¿o\LóVEÜå†TÁ•Hå~#ÛZ¯Upßo03¾.=SÿXó2§"¶fA¤eO¨ÇCˆ“ ÍWZ½–+,ñþó»{ºõù$«Ï™sIç9rbp¾p¿K¦„¸1ø”À%ÈΨ)¶çœPPÔîħT²ã©ÕØÙ`d"¤œZC¹¸J„u%By ^—ÆÄïû¶š{ll4 ,ÊDê$H½‘“×eµIýœ…þ~ÿ1)¡2 IÜöÆ4PÛòfûÈ€S¦0bÌ›ÇÝ?5FNß‹ÃkRg¼éû{ËHùé$˜Ð ¨º°€¶οaœR¶k^Ì"ŸX`»g03ÜN’³Ùwá©Iubá¬gž§dF¶Æ ¦:\~ЛÏâ§ëÚÝÃy >}Ö§ßÿ$K|Ê«>M.ôXüdÌ=³…ǹ3ìæ)Õ„Ûùnœ$ˆOÏä´>v Ç]#wÇ’ý‰ï)= ¹˜_wfXï'L­çÏãà€û"?“±®šä„=oP ƒƒ¿(“M-3O¬.“Ëæ…eGÕß?íÇŸÉbë"glRG–ûo”ª¹‰*ŸFH¤yKJ 8(ÀÍËt]Ab¬y·g˜Ø€¦‰Ì)«ßÍÄRìçhÝ2ê,{ß2ÔâžX×:œ÷¿~ýÚÈfÙ™®½w]ÒŸ[Ö§ ‰ žÃþýl²†¨‰ð”þúë/¼ßïÖô¼­”‚û~ãz%›©…)rU)0|€„ JcqzáëbÔâJË“)@¨¸oô¬iÕ=tÐSR¾™Š£’z*‰©eÅ×+£ÔŠëëB‘‚|¥A1!„žc6p©^?ë5Äg•|fÙÕ:FóïÙž @«ixñh]›?).&£R³‚Lê1«6$*Glk (tªßsé—6jÄÈ}P‚äjñ©•°š/J¢G{•f> ìX«zØ‘5Áù2,¤´rI³±(>yÝWÊLÊ4¿'ÒaFæí§5p;™¦ÇÖ¤†º‚nÆÀ„w’‚ˆ€Þ„w¹Aœñz寿¿«2§Š¼Q«  * Ç0F áÆ2Ê]ÚXú±6æø'«Q…thUSÔøgOݨË94×o‘€¢C¸±ÏN*€S#j§ˆÊˆùìÞ1Ôâ•û4ñ<÷‚sŸøœ˜Gqœö4 †¾VGÊ>xPèeq³¦+/Æ]B÷ä•ð‰ ??Üá}hMx%h{w&¼Ž„î$;Fd$ÌòH)÷"ÑX%Eu;²Ø',ÏtSH“b`<¨…šÖ¿fr©]§ÛïÚ¹·š€VbAÓ’ˆ>’–ÖÞ[q>…¡Õ‰ ÂÞŸ€WJmáýG Ý<&×vc5ÿ##‰3àˆ}J[´Z˜h§õûþ0Ê#y§Gp‹ SjŸß½¤ ÀÀú ª=à¨*_§ðCš¦={‡FÑEÆœ²ÍŒã«uª(¯2¶®ˆw"˜U#ž¬­BS÷·¯=îTq¶‘×¢‰ ·©!‘ñä‡FdÜpG(Í8÷ƒÓ<­Ú¤`ùo5rly+í:™¶çV€—¥¸ˆ±Ê§ÆÉM‰‰rqãË}Ù·I%¤Àð<@;õ÷iïíÙƒ¯ˆãWµøµØëLˆe' NN | }"^%ívtbAc±¹¯Fìâ¶B¢ÖǃÍ×U4A 꺞ŠÒm#Æ›ö9k“$§…¢‰nZ·£ìåt^­|ñÝ6RÂÔ(÷²›e²}@CœX:ò1TB¤|• mä•ýºe)¸wçîIò=ŸxñäÝCèSU=†îÍÏÛ^Ÿ¦ÝåïïÀËgî…ÀpT'ï‰îs¶Õ^b\6ƒ}+¨&°BF_>¦þü›Ç$ Ìgd¼žùD¦\F†¯;Ðý»=€Ê¶Ð¼úÔ<€½“<‹0úåéy—¶²†“uÂÓ`€'ài—à Ÿü·ž$ÖZ$ö Uï÷»uÎ dCÛ´Âΰu }Û¨åèPv½Ho-rçãý±œLR7Æj°Þü&àùúgéc3U†’¬-sqc1 ¡´òR©I ‰)³•е[×ßóa³%±ó³ùú(Mâ'¨[@.6ý› £¾·ëR´iº/j¶=7£çúƒÛ´²W<ÙŒC²êt½£©ü¿7²O³GaÀCüom4¦¦œP¿g1rb¼^yðآܭ%Zžš ™/¹ ÁR¼ßeyºœJAÕŠ’4®À§l›Y¶®‹¢S˜Q huŸ^n»\œðç~ã+_øý.¸R¶gڛナ¥±»a9ºæP^75HâÆïjW2¨}ʱ.óéå0ÖKsœx¾›òIãÇmÌ*5ˆ2WR°É98˼… »~¶¼X†æ«ª™Ž/MÂà™»óŒ“>}Bx­µÙÊxü¼½äl¯ê“ì@ÍCÉëŒAÊkÓø´®ëÓ‰­”GÈ‹¨}í ¹jË%Œ¸QðWþê$ox™äš«àº®&iôõYë­÷§V\¯>唩OGdc¯ç”ÚäJe+Å<Ä>×^GÃlâîO ›(-"öõ„˜+ˆ¾n­7£âûi­›¼Âhç•î»*àÇFÙj)t–×›lsôl:Qí>$KÒ0tLfð<Òß3ñý“@›í úÉ ÷ÉC¥uNƒoØ“WÏ*Eõ)™üè«ó‰ñR«|ýOÃ8f¶E)eèÜÄéM»sç)VîØ]³ûi:à.¾oevŠLS'WŸx=s#(6hæâûÄšiáz}žÔHƒ×èéçJ"ÐØ˜Ã=áAŠô4Å%.³Ag¼þÈpž‹~94yÆûkËçõºK˜Ög=1È…‡B’A¾j»?'²Ù¯;–â'¶ÙŽ¥tf >OšYv»\'zuž®í\ï_×T|òЋëô´ON¹Ñ\ÀŸÖÈ)®µüÕ$¶'¯²'vÿ.Æì€±9ïÛùíu_%¦éö‰Äm\H/,¹OuóF!Ü#ÔfÃ)PÕb‘Ò|‰Õê…Û÷¹N™q÷óÙ´Æõ“ÌÈÀˆ¡¾(AïQB- z"+Æ4¦•jžPĨéfÞW•ûÙÌýž‰ùütÐL¹^³ ÀÌÂò‰j»õèƒ&€të4ÆO_î¶Ô æ.«¿¿ßÓPL –i*û´ï}ýžYiœ”$DIàƒÌ1²±Üÿ&çŒ×Än JÆZõþ‹Nž¶ŸÍÂ(\†k;5’åÔ)ÞRúYRc¹¥ÄฎžFþ,_æu¥Ô`Ñóy|…}z:kÝôŸ‰ñõE¬wgõŽƒ‡>TÉ}‡W\¶_—¾Ö§Ö<Ýù¥”ð]¾û0-Øå– ;G+ޡē­I¡Ø@n@¶6  +&Û†hÎUÉüSK÷½ìŒ9«AmxY"1!Óe i4†µ>î8Æ,9×ë¦ÖdÈüúõRÓy-³—_Âi‰ .ç-, ÂHéR¬óUiRK&÷%ôs .& ^ΰ5Õ÷ƉQEaÆ÷}?²çýuNbþ6OŸ~ÊeO â'Ä–õ‰¼Û ²e ¥iÂàø êBwvkרhqØ®0z—çI=þûs§÷”0Îôô< 2Bœê¹\uì0Gªû îïGŠ^¼²1ÒßID>ÃçËFF5›*?l#¡€Ñ4o«nW2ø“H"¤ªzë@a»Ñ’ƒ¥O’ ›.¨²7 y"Ý» ì8*â[._Û®?t?âºNš(-ÝØUö.”¡æÜ}„î ù—Úe˜l>]ÍÃ+îÁ 7ð©ÐF½NÙ±k¡úre»tÉ™qõ©J§öïXÀ:“¬ÚçJ‰'ÿ¸.tPê©Ð‹ Òx°¤Vé~ëÓ=À­‡emxLl…úB5”±ˆ:½§Àê“pz÷º€Vvpw’÷Æçñ‰°“µŸO&§0é Ã@K æ)|šTø>4 Â=þª3ýêØ =ËœvIÔÄØºa7V s¡êh²<7%úØbôe€EèœÔ' ‰ˆò@Œþ#ÃÙé=ø\\ï¤ßóŸWΖP¥­0çd]6Úv¹xjøTM¿Î”rðó£Þå¬Ï×å_:HʧÌǵîL0÷,lù#x’E¶âYB7N"Œ÷¡ŒÉ]cY§vŽí˜rz¼þÏ ÞJ?‘~bì}¢äÇ8 Ò<úÔÐz~þ´•¨î&;žÌîÒÔSß²ÚgM¡‹M{¥vžÍŒ±–¯?æIOkjŽåG›†Ã™w*<}ÿ0÷Ï ñ}ÆDL}˜õ©ÎËZb›Ðá&õBdã“ÚØÆ<°‡µ† ±ï™È8 |‚˜Âã]Q ¬Ãh¸1‘ejž'›l,Üz‚3nlÿÞ¤Œ l[üŠž¯ñ™]‰\C^­E]Ö6SnŸ5æ ¬(#ÈòÇX hLóÚ~Î×^Îcãnõ¢Ó0šñû:¬éi¯w€Æò™¼J¢ŒmöÀÒá;{€Os°´4ž¼á'’F­$Zllv’ß^ãScÞ”¢‚Äœ…J¢” ðFbõ)Ë7g5×V%@”|¶x´ªh}ÉT‰F 9u­æÑÖ<ˆÈ@ ATÅ„F$Ùåj¡îÛ(j@ΰ'‹£¾\˜¾Ûóøp󜷯(1ïëX3:s´ME´ãЯ_î)é÷‡9©Q~g™Â”-<3K;[›š¤±×_&îõš5žOåVJ êuxTʯô›yzEŸ<øýýݽ®¡¾ob>N%[¼+]˜á÷ÖŒ`Äæcµ‡`U§£ŽCv$L¦l÷€Ôó.å™Y‹V¯= ‰ ó“zޏKdû”÷:0Í™6]árrΨ}ØIéâsá6tŒ“Þn^kEZt޲MRÎÝfzdE~î^y³ërõƒœÉ[µ)'‹Zu‚ÚÖ£j·‹î™=öT¤ž ¯5@ìïߌ˜/Tû8©iãs¶Nœ$MuoøÊ5·ƒ/!‰‚ÔLáI¬²»`JÞ»$½¥¶6‰U½Cƒ&Yó‰ µ*úÞYa:?Ÿ§ ‘"å…5ߣ”®¸%tΔ>ÐÜå5>Î735mµ3"dÒéuôiW§ƒ·A¤¦•fK `zöÖრ¾Þ%åð9jc`°I™“^¹]ß÷}ƒsZ€T÷ jRT†Ž`}·oªyxÇ{“ÕxöÊ©‹ö,ùyRçÚíæ¡x©÷{bZ ½-;gæçŽItêöωÓQdd´u. `ǀ̜¶Ÿïi’ØðºÜiÙ‹_ÜÎH:4f ÛØxA3áv&ú}x‡0J(v÷pL8Î2¡é>íØ>;vÍS3c=”A;Ëâ¶gÁÏûz›LÁä=Ê š'Ù(K?³šž%ò¾îܘ}^?Ñ—lŽÏŸ|¡b2×W6ÌY¨ððiâß'&Ôèa~œýI‚ö“kÚ1ض çvñ¶ƒ»ÛŸâή éܘ ©§ç<›ÜÇsÀ ŠŸîMJù8u×0˜÷ãiÂçò©ÓKæ3›Ì‹½`-žx„D%Úµ[ïš¼®7< ‚Yˆ1Ö¢0²š<@¶Ü­vZÍ×íNZ2üWpJê³jrÈ&A¬©æñ’ R5¨ÕÛ®]†ïçËš_—P ÖǺÅA ‘ÒöÎ`‰:³\l2hN¡¶(ÌÌê=—ŒÙמ*.ÜB[VœLyå¿»’G‚ÍÂÈÄÒºæÒÚ®Õ'H DßjÌá:ä´ú¼ DR²­»;«Ì~ êDÌ&°XGPôšUÌó0<óvËW3EÎið¾ÞßÄ»].Ñ=Ï,«Ÿœ»½÷oþÔi›A˜åpŸ<°¢Äf÷®£nÁŸŒGù˜àçtÎÝ-:ÊnN@Ï[ð&Þ'-"GêÞ¤1B²?v°{'#Ê”šÛ»]8&£»ÎêrŽ4W SNF§ \‡JCB¥#Ou:ñˆ;ƒI;³‰œw#*ìÝ«äŒgS%BÎÔÁ25LÆØ]±Ö¥|Hs°ˆ˜A²” ncY1› ¼+* `ß}®d´ýAZ¨¦­Ôl]½”hϨ9Ô.†Î9^›&ï{¬ùÙê…{ƒßA·”uÒ¦Ns6Åj,Fë\Š.q{e•c“ç5N<@i¬”­VQÊèGçJ²¯¯¯¦ö(õnÀÎyR 6…»½ÅšK:éGŠ‚·âFùÄÍp^§$¢MD€»åòŽKŒì¶ÆÀ]†S9@–†¦{ÃrÜðžãœÎÉ2­9÷Ißý~ÓòŽOƒykßeñIw_¯%>R¬çd0çð¿÷ IDATÜLSçD§_OÝz9øG-‚; ΋ÉS—ë4ÆÚQuÿS§~G¡Š"ZýÆâµÄ$xNˆK)mléÌ óëûúúZ&÷²î}½v~%»$¬fôóZ ˆ°â+t:Râ.µdj¦ã#‹­´¢©M !8¹!õ99yJ®Y§:@²&®Û×iÕ¦ç¸û%Â×õ²û)ƒì˸›È;þÜ»J}ª sÂëJ Ä­¥ŠáÊfŒ)ŨÝWÊjhc۸ت$×ëúZ@Ñþ¼"šÌ~f' Èé¥Se.&rgÃúð+÷SÎŒëºÔ³¼Íÿ îEÕ®<î*!ã] 󔦤bòÃL–½;DÝm¼ŽRú¡éSâv…W yËØåƒÁÐØ§Lrn#º{÷T'–<ì”úô÷Êpæ‘{X•Å«¢±<ïµà¢ð‰t~˜<Í8㤻fÌ,¼=„ž<|<¡½±‚…þì|ïÔÐÕ™Ír•m©Å‚Ç\e2ÙîQâé©HüTüï ×(iûóç½°ý\lò æ-È›=­LiÒ¦±P[6vXkc^ºÙ­±å/5¦wi&áäÅÃGØ%^; úγÑϸè“ÏëÁ㣱ºï*õôÙp ÀA½Û9ƒ '¬÷Év½³Iq©ª1Õ óOv ©Ÿ_' À (:pŸü¢f‰ÍœÓì<°Nàåi’ÑŽaêk#zÔlýLëž¹>ûÑí¿»Þ8Á§ÉËàÝÛ†œ áýýl~;·¨){mk•ÅŠ}2i²Æ½d×z×0‡VF^¾úµrgO£Ùs÷ë뵤G¦Ï¬Ñu[®õ–?ËÔñÀ•gµ /CœÖë°á8OœÌƒ6\›7©³ORJmZn½ *)gd¾J(EšR€ˆÛ•èÑ4Úc}â÷5Ñš÷Á¼Wæ Ò{ 97&·T¸ï»Åµ¦T@RS÷Ê)WÚôÅ-@¬âg€(Ë ÊÒ«EPE­>8ò ä¬SÁÿˆšÑgb'«o̺$xAÇÁB30ÜÁš<Í|ÝfË;Ó¶>ffci›©¹ÜÍ›É>@óµÒ! zšÛ'g)‹+·ç”¢ë m¬ž®žïgÞZxª¯!lUzíiìp^‘É…Ã*J ªª`hù>vžÔæ:5À…oˆ¨4‘$£”7R¶á_nÀHW¨#Ó-^g« áù£ °gË6³Ó'/BÚôXŸ”É$¸QUMÅÒþFUÛ6%¤{ ê[1‘ê‚Ľ™mBe5&oûºæ†l²ÎD© k¸QjjaÔ `¢ÿãû_dÐÙ»çO àûfÔ„d³ÈLöbðLIÑj× ë&[³ÍOæá307øëõÂ÷Ÿ{ñ‹r0+çŒ÷û½@)ŒM$Ö£ü‡¥¼'ö¹Vz- $hÏZÓÎέ ñüº£™:ðúÒ{½À†Ã’òøù¨ë‰8ØuŽ[éØ!e‰®l.v÷ý ÎI;­È²ç]Kûìjàîuäi膎®zœF?š^¨Š>?¶ Ÿõ@îZj5ÜÑ$»Þ^b“™Èa‹Ö:•ÏÀá¤@C•WþjÿUŽBA¦¬IÎU»\×Õ’8!¦…ï4z´ÍÿŸé߉¯ êô÷Är\Ç3<”Œ‹”®Fs4bÅÿëZy7.åé}ÒàõÀæ­å~k÷GÚAìZ:â7$)‰¬Ì”ÒàÁ·Cµç‚ÉQk ß—!Qï ‰U¾CÁ›ªJO`¤Úˆc1­R÷1쮲/ÀÂ}-¥ Ø4@Bš<öŒâí@­ðÈ “î]rbšÎ Ed«•ú~,¸wèøºŒèf·øQ±}bÆ´QáÆ0m×p©™O¹OŒ±oÿMA›.Øì/†¡”aéî^ÊØŒZãm­UY#'J)(w݂㿿·ÏÉ¥¾ñ~¿[Í?«ïW ¶ïw‰¥±ÃZðµrÇIÄ"(EŸï$pó4ÒXßÕ ”òÖ©¡Ü÷}Î/&g=ªƒÝ×I)]oŸ–µÆ”®ìr柄ήÉÜ*•ø^6ÓbÚ(Ü4u¿œ)g×Óý)|Z"*{L”âsî Ò³Ç ƒl"ãÚuëiǨðõžRn ×0…5H³|$·l¤‚úÒ›. 3h2› ®½oBólˆÝ4v Yh™âº“и){÷(ã–XŒÌ[ÔSûïÝüÈtÜK£xaP<±Fž&ñ‰®Äí~¸ì@BQ¨°c@ÌçÞ΃åI¶þT@ïÑ;í|žHKB»?À>²ÊRè?Ó Ò÷‹tsu@š_¯W0;ç ïÉüÊ(iëwš"¼€ së\Êñ,ß³foFY˜óìÒô±S}dT à¶r ¦°†¿½yxb^€3ãf·fæÅî5ŸöÞÎpý§,­“ÏΩP~’¦PŸ2ûS€ù 0ØÅ«ÝY¸ N>!;vÿnï$²Ã{¡¶xýt=ãûÐ"Iï&ç]þ]‡uU €rvRÒ³õz´éd6Åiû€ºu‹5$ÔÀUaeS‡~ÔaŠ-…ªƒIq ÚdùuP5ZPµ ¨k<ªö¹ƒ#3ãB†Tc`‹²àC ´†¦úó¸5Dô`9+¼ìNññ§gÎÌPœ™u,çZåiºvdœRYÐÁ \ixÏyh‡OýšwÆÂH¨rl|¤5‡®§–‘i‰:ÜãÄwžî×XÝë”OLÔ8hhl¸—ï=0vNqϽ•q=9.­Œù?¨ê © 6a»§¨7˜Þï¦6‰Ìl}}W³¬Fø¡™ñ*Í~öî²zß_Gë%}ï1wLn21KýÿýõW“c–u…Ã××—1iÝKÚ¹R q“‡ºc‹Èxþ{"?NЦl±M@t0²ldëþg|kÒÏRðýý×u)pÊúó•Š6äï‚‚òV ¡ÔÀsõ†Ë H9/ ‹¹–YÖÕÖ!CeâÉ=Þ|ÝøÞ³`™˜{T%4v*™·5úü%-|4θšÉ¾4†ÚËã+,™5ŒÖÔ¬qÁY¾lj(•º³èY$:Õ>¯¹qÓ­Ì{`fd 41èãៀ@;í RíLÍw²¹mWžŸ&u f>vðžÿœÐ,÷ç‘ÛsyJ½X&/ˆ™j[f ýÒé´ªì7 l"` ¨ƒAú7O;Ðôz… ƾÁ Óåˆ$«¡+ƒ¶ ïÌ2ÚI#k%MˆæU š¥P·Éó¤¸(q:ü“´¶B ÃŘ¬Ì¨zdy¡è] esr‹+Ïc†GÏ™÷m´é½˜:Ó2g븆½ë]·.ùËÕÔ% Ü&æ8€U1Òukbð´NJðÂó3&"¬kb1D4—ΆrÃTÐÑ‹å$+‰GJ©ûÁ¼Ýô`«aýcû¾À´@Å\dµÚ¸v= Æb½NÝ\ ¼ÊCâ^jóNPíõ §ø.=‰yœÎF6€]"2wN’çEî| þ• n- Ìë”ÏÐÐu@èSDѼ2æ.Úðš×ÁäYË,EÜuУÐè|ÆŽ{J†õ:Oóå íÁê <Ž ¢ú‘õüÄÀ:ûbÍzÇ5”ˆ·ñ4t³¿¶òÁ¡@ r.Ù›æà©#è¦îñ³»ÙoŒW;åŽ<¯çé§{á_ÍóŽlÖ“w×)ÖìâÇSÞ4ÿİ­a/Ø,Pˆ~h`~4Ò¼šòà€ùLÜî›ÄË5·ë9¬Ýø,.¯+Ìî#² bmAËác‡!!1I›F+D$ÄÁSÝ›µVP ÌÚ`÷‘"xÜ@¥»Tb³”@ˆáÁ?JÜïH6ƒÂ¦_‹zGš¹:O2ÿyÊòŽ˜àçDœîÝó!Á:ÄdXJ–èP&P…Ø÷~ÖåíŸäIj©HÜÔÄ=ç#iäÏy²°Éò©yŸjƒzµˆ–EQ]23ˆUÝÀÃý%ób7¯¿eŠéc>TÓhiÒ'>Rc¾‘­ŸVê `aQÛëzA|0‰“*¨4)a)‚ÂbﯿØÌÛU)”SB‘oUL™äòòAZÞÀž,\¸¤À>½G#€µ€µ­‘]º”¼ù­îÖªlši²äï3n‘rödT¶ìds8¼o94ˆŠ)§¦ƒú“sÂJ»Ã±C=ÒËÏ Îè3w®O%'ZúS·Ã§Š=0~“?\§$-NÁÙ%YO&ï]"ó¹Kºc¸‰®×5øyp¨U)°5šZ& Ä®ƒ;0RL瞦IÚ ]ð†®b˜0è Þ‚Vº¡ÈÔ‹â6gBÄפ˜š‰ßx¿:ëEnîÓòHõ×bžH£§ ºæ¶Ëˆ!„Gg¼_sRÑYH“ÎS<ž@Ó(aüþþnr$N4t3šD)tI†ýaA(ÍÝfðTEsOD•úŠÆÐÒ„ÎMÞí©L׋LÅK™ºý“ç”wP:€ÅÃõÌsQ﬜f–ï,&âÇ‚j7Akðû£ÚbÃЃæÆ2"XâìvB—ã R¶ÝIò2ƒzíX[†Mà±p¢XëYdYÝxsÏpØOý›Öuºåôže€œ¦8ÎÙ˜ îöïΈtø?ïMdO€×«l·þz‚ {¶Ñ¡i;Äþü‡k³1åµ–m̉òžX7‰æC£èg÷‚ZÜ9³ƒž~·†çóyJñOÁÊ“§ùÝmX;Ÿ˜[»³{÷™v1â ¸ybŽã¸fÖéSO,­§Ü+®—' í'Mƒùº†÷úMî’×îbÉélxºþSL˜5sc-¾fk4€Ë§·Æ-Õ&‡_†LT V|êi±ÄËeiµ7„üëÖ–œ¦dîöÜ0 ø—ÈOño°qËI¢=HŸö{%,S÷vC"–3XFPiÀÅ‚yž\Ø ió8ë9cYög¬‡:cç^¿¾þÖjÍ|}áßþ‡ÿ€¯¯/üúõ D*qüýû7þüùƒïû~ÿþÆïßÿ@­¯× à‚Z˦¢S¿ÌcOÂÄN­ îF.Ú5TÀã“ížÃ§ó~nfîÎß§¦×éçãÿO ‰nÜÿ‹ò‘õ$+²½óeø4ÞzŸdpۮ覣+§äç4 áäpzð?dø46ùDû&<•<%®?MÈv] /øïûÓÛD©½¢홂ï̶©‰É”‹“QÊ'úë@öiKÒ¤+. ³×n“ÝŸóÚ ]8 ãSñ7›èGï¨YMŽ›9/ÂU½›h@ 0³y¥‘û¿ÿ¼¿äRç)Zþ³™ו0t^{§b¨ÄŒ…)8 (ôŽ+’ž˜ 4³öð˯ëËÞ/ Zê.a²É56 %ÂäVÙdÕ®,“á<æâŠ/H[Ë¿¾15·kBÁ A~Ž-ŒšÎ¤aT¹ƒ¯uBDqSâæÅ5'ÄѧhkÄ> Õ1F÷•CÁo§6À©9c§‰Ø’ŽÚ÷¤w8#C­ƒªž8Z̲é5$üÈJõ©(k'ÖîwœZ/0ú4¦áóƒ3nZZT' {d<îNü# ëäÃ×}ÑöŒ¥IüX0nžýä϶[}`’ÍSÁž@¿ÝëÎrêO×u:ÿúè30:³ >5gOL»3Suýl³ÙòRl®•¡67‚iÈß]k® —>a¯³oø„¹Èb4pHL¨­?ƸŒÔ«5=¬QéàÄ ”– ÅFHL:çà|𾊌,Ò¿%Ð,¤> µìõõçÅT÷õQ¿«á¹ÿê~Ù˜ñ¬~»v±á‰!ñëd‰rÊ»©LµF“ùe í¼‡hÿ^qˆØnø¼Muìu —–ü:æk²ž+»Úq>/üµÎ±gô¦z:ÖcsµÎFÙ2ÉNƒ$æ)ƒ+Óa¨Ãƒj¯éRZ¦œÃæÎEvÿ‰Iƒ“]Î`­¯ÿø¾ó~‰÷ßÍÕ=gVUÑtÝÓ޹ˤZ䢑1-r)eäü…ÿé¿üÏøÿá?áõzáÏûÆßÿñÿâÿíŸ: à÷o|wÿiTüúõþÇÿü_ðõú ÿ÷ÿó¡|ÿSo´¾RæÑ}ß(µ œ*m0Ô쟹ÃINdž¾NÒ#Áè'¬ø§¼e„Ÿ•ã {†˜lí¡ÈšDŒÖç •ÁïeÖ¨žø³Ìo÷3»QÈq£ÏÉlˆæ¢mø¼‡1ï§äb}ÐrLXvŸsý>=t:‘3»;”â8Ö8G›Š"hàN<€ôÞi?"Af‚­ò*°V'«k¯‰€Ìsm쪔ɦ ÜÆprK¤ GxLÈN‰Dó9ã„Z©ùÑøÄ/v&¦ŒÁÍ”bâ悔™3o69M!5Pg¥yw?–ØŠÒÕ­ žÝgNH4Ná‰b:ZÎrá⃊5ˆ;ƒªw€ ˆ¢4Ip½^a²‡Nò.…ˆ)kB,í¢íàÑæ`¬é“—fæ‰tsÅgï–~EÆQOJûô:y”(Ï`{Ix‘ù*+Ξ½}ê„1ódæÙ&ÌŒÁÚ;!š¤“Í–ÔOLT÷* >&»±ˆp;ŒaÕ§²å©0oð¡>GšžÌ÷o|­k/£wÐŽá6&EkÑã_ßÉ*ýßq í^¢]ÄøˆÆðñ:æ ²—Ýe”‹NIecàÒèsÓ$Œ¥7å÷„º”úzD3äíùRå0}M¬+x(\¸wø|ÚÑXìAž¦uòÕ3´ïžžÕœÇÌILœg kÇ”u©eŒ;Y}—Ïc‘€EÆÁ.ÇI‡¢‘†‘çc!熫g h#;è§E÷ à>Ž»üi×üÛÉOþ•ÏL’ÕãiÍ»dŠ)!…³–ºôó^Ÿ»c×D|¿ßK^<¯(c>²tðYî92¬xóy(4¼ ¥÷BxÃ@dŒ@g¸qÝÞB¸WÅá6]UÂh¯a2góàiŒpé~Dñ$(ÛÊýw €TiÌ«jÄ+‡§4“G6-›y»´<ƒÛýU#æêÜFQ2Å?`[ž¦ŒÏ óœgÐÁj8Ï)mAØÓÐ뺅Å3ƒqS«é×óŠe`»79©?ÃÔŸ§Ÿs r¸?l¿Sµã†cŒ#»qçñ œÓ¥OA'‚H”^_Jð`"cv:Ú__•%k¨¶x8÷¹)Y‚´ÔX†Î@4µœ²‰¼yJ¼4‚Eæ˜Æ­A–´ÕŸ5ëP÷D' ³WQ%‡xS¨˜—ÖÜlìžè1Ƀ½Á âõ&BYêø˜ßÍÄU’¬ë›X†é®+ÃѳÎã„h®D6­5¿¾ð×_Ãû]ðßþùßwÁ÷\ùÿýãŸH)ٔʌb,öRÞš§3!¿^øOÿñ?ãÿ¯ø~ÿFµi ŠZæF3¬rßOº~z>Ó?—ÆF©)(°#»pX#ZRðjõüG$ Që?? ¡¹¯Cdò‰#cÿ`à&y˜Á”ox-`ÏüŒ)ql|ÍÏûÁøT¼Ê] ÌGÓlÝÏ3‹½“jÆ51_ÿø øXž àŸxJ=ÉÞâ}Þçõ°‹ó§ÁOÛÒ…<¢óúŸŸ)ç{52›Ó¬8}î-XWñ,¬>ê|³ú°’=#K˜§ M‘ØÀkþrèeY€5ƒ7ÕÆÚÒÜèM××Ötf°7ìçPzC®MDôï‡óOz“˜Q%úü˜ˆ÷û{^CÐNC޹9zhvØRs¾Ù÷3sÁϧ¹>žïÁ¸#ì& äãÞ±ŸfÞ'†ìSÞÏÃ}A(gjìÌÆãÞãAŒ‰÷]—3>Oê¿È@:±G›ïïn{ÝsõqŠûFPfUrÜ÷{9cv÷j=·´.“ ¼‹¯íµv´ð©|0à‚edaW© ÔØC ²ê×KéÂ_¯¯v®Åf€ßgÅü:®ig\ż]ÏH¯ö¨$[öX­ÿ?gï–%KŽc‹ ™ÇÉêÖ½úЧ4 MBÓÒxÕ«¯–¤®ÌŒp# $Hi~ªÖÊ:¯w3 lìˆT°t†eaQ×ë ¾~ýί?àz+xU«€Åµá… K‚D8޼¯ þþ¿¿á×/ø÷ÿö?ÁÿßUø¾êгÖZŠÞcá ^¯œçiáYzn¾¿n²ôŒÙ·úß5yx¯’pw,«ñhåÏkã9\.*ýbÔŠP€ÿÇÿþ¿É`tµ!³1­?Àu0G©±I^x¢¡/MjwÓ×ÝÆªf¾5eq1ÏH+Šûª¹ˆ©ÞÌŽ`IÝtŠÂ–[!ä›E9èVì r°–RÄS| 2åÞ/]‚Tšyaß@kC«]æD€æ›Sà,=YíëõÒ¢‡uÚæ±îg¥?G¯ÙQ:WJ¯CAHè¯ó†ECº‚SWê¬}LÀx³†’H ÐçÔ‹øû‚{‚x¨Í‡ä¼‰ÄŸÓ×sj(k‹§wÕ1>?<|F?tzƒ_— ¾>±Bt÷Ó&}D•~``™Y :ÚNÍüQ÷’2HXÞAç=á)aŠÐä°ÉT&®÷^¬PÚÔ0ŽFûó}pppU˜H7ÀÁ™ZHs(âG™…‚Á°‘ñôýmÁv8ÊĪA¶Ÿ÷5³ãáÓH(7`€ˆàbu3:IÜ–E³PªÅŸÙ·_ï&ãýºnÓ·øù"Å<€ög€Ósg~~ž$JY1È»¤¨•¬fö j ]x¿×Oáþ³¯ñ\%ÉÏŒàq‘Á¾>âÍ2Y3­QɲLg‹8~fÐc–ºíB†}1L+K)p4¬É TÀÜŸÈŸÏ~}(dZ‚÷„ØñìÉ÷qâµazÆÎ™ q,gó]Ùh+€eZþjب»¤ÒŽq8B·×žÁΛvn ¢df–˜Ì×ÿÙ_¸l|Yãg‹?gdä fÜçD(oêVµß0<€²dõ{Ñ̰ ñ1ýËå0â_ç^hH`ÆQÀtB¡˜N <ð(‡Ö åeFÆ/eX—¢ÿ9 ›°è7v6$›’¥9?7S¬òÀ ¾ôšÖK‡³õáËÖÈÀ µþÔ *ÿÖ@y× àú®o~[½úÖ¯Enç´3dPàVß+caÜóÏ L+UGÆ0¼í“t+>ßW½ IWRìøúþzn‘©TvýáÈÜ¶Æ Cæ:²×¡ÊÕöÙr%zãŽnNvOkÎôØÃ9Cj®ßG©\mïÝ–x+¿Ãù÷Oža†<Á[¯°bÉù¹7ïÁÞGhÂ9.ÁE¯¯?ë˜Û@Ý{=¯ÿ0g¸]—õÒö}å^q±žMÂuˆè@!›çÕyž-ÑÄW‰¯p?k)]ùÑ0KQôþ»Ý/ðû üPŽv} öÁ¹^kõP ¦",ðúãðÇ•N ³Y9/øþþ€¿ÿþi}ÏuýË¢«õ%ç«À‰,?ðÿñðýý7¼Î×õõ}ÁùB¸¾TD,¥½—4C¼Þ±ÇŒ}`´"9,ð{×Lp™k%€Îã`¸ ß×u5i¯¿§x"®ääŽ8 Î,xŽìðÎ<\²‡n¤†Nè1ä~Më””¼@^¡èQj1_äXÍ~A»bfÅpŠ›ßlþä!qžç!O}1"xÃòH‘ß!¬sƒ1´c‘ÝÙÁa ï2=a“¢1²êûÊÍè¤ÒþÜ6ò4;•:Hª „8è‡2)×}"Yºü®œÁxïþóÁ4_¯ãuqéY+ã³-)³í'0P²÷µK2}òmÚ3ApH/{’ðÌo± ,×{ &Þÿ.%ɤdtÛvûÍÚÄ6—4ì$æ ðÔlf×ožþøÏÔæøý©œlòÌ@°yXyî®å}ȲJ¶ÊCIbbl~nH ͬ®Y²›É_fÖ3Ã×q.åó ðå Ð݃(Ot›£˜W)›7£ãÆÌ'‰Íl–pËÀêLgYž Q:sûY&Ýy@­$°ÕbØ6Ï»)ê,G[{m-<´„oÌÔÙ·ì»Ìlz·ížýlùG/£eÊÚäO¹»'ó÷ÆÆaǺ¼ÉQÈý¤ç Þ\¾ÐÆgÛAk80 ÑB?JÚvˆl¿S¹üxPvv‡r}2,XîíóùávSN8Ó;8æ‰ÑˆL(bÃOR©~`úÜA›ÙÒ–@Ï °Ú±Ÿ$gÐa¾VÎPYÕ>Y϶UâæÇ¾7ûÏŽ²\/#oï™L€)HCp²û4×őɪ€”´ÙÌCÓ#>ï 4ìYà NŽçãþ~¬j—lÌzÎBçí<Ê$l€ãøY„§”Å /­¼ÕçMP%ƒí<‚ÊþÌ–àÇŰ÷_=^ÛWûsæ¦õp2!8J: äÀ_©Ü¯V=ó¹±7E¥‚‡ñ"¨V;¨û‡A5ùòÁÜ~f_cÖ_\o8ŽW†µóf8NÎ}}Áu½›¢L¿þ"µä¡›O }A–ø¯>€÷Aê@< çKÖk;¿vBR0ì•î—3hº Br]¦ŠØÕÝþšÇ ò´´¹û,ù1¼7é7æÊ|xï$صÚXþ!±'‹ÉÞ%úí6ƒü‚îéôýÍ w@T,Œg¯µ§ÖøšW &Î"×`j÷É=nÄ&(&ïƒ. $ì²±Ó¥o¤”b2íªÐª×Ùƒ§9™÷m–„þÍ-6Ušûµ¹7l y=¥DŸ)â‚ôƧá”j •™ˆ€¯;r™®¼-æÏ;GÅ~"!r0o|^ê„¢/LÌ}Bež@*To²HÇNHXú´6Ðj[Aç1»Ò%C žÍ>‰:ß#´ póȶ1ãŽàJúöë㆔ÔÖ‰ÇðÎi•ñ>Ì’ºû5+9B¼}n'Ékõ~!aéžAÜ ±¼Ð¬{šc—ˆÄýÕžé\̬©‡ñsVŸý}˜l¬P8Ü׊Ð51\1úJ«”š·Û§F¢>ÞR¡û\hs"Ãuè{`gïdçId-­Î§ùüº^øE¿Ù癉•{©—̈vû{̽û{å~ Ãz½­s¯åŠM0„tO™e«4œ €øD¶’ú:ZÅØû„oun~!q€Ô×±_7l“ër0¾UÌu4ÕçPÇŒPesÍ›À*¼egrþÔ<¯ ÏwuZfîÿÔ îØöÙ0bÅN™OOgCö¹3 ˜zl&–xV3ÎÒóùW¢uÄøøZûÏÐÑk§½öµx 5àÌëCˆ’Ôéþ.yÅ’wk‚mÃÇÈèÆàÇåÃOO…·ÁÆìÐúD Þ½¹ ³=(@L–ÞV†~‹­ .º— §ûˆö~Ýöý…»© ׌ÄϘ¾´Ö^M é+­¾Y< µoà)–ækÛ¤““ô{§0é|“b6V…«hLŸ«ï”©¢‹Ô=Šh\ÙÒÒ\BŠíýÐ-ÁÌÃô}Œ)¹¥8`q3~7ÛÏÑ¿­•[ýýJµ‡áÉ„O*jmæ«Õó’2ûž‡@šè™Ó¸%æ{Ð1ÂûúBm,hznßµj­ÚhèRm¯¾ôš\2[×€ós™JC½£i ÚëXà•¿¾žÅ==]¤ê@©!m-‚¶ `Š%¢öƒ¶vÈBß•ßWÐ2ö|‚U¨{Òa $_l¾YÊ$e†@ ÄõÑâBÁ îíVJi$MÊ,ðÇÀßÿõ}%}c÷¿UŸ¿`Üj÷xnu)Ñdüx|!6T@eJFßD&yyšü‹÷ýpÀV*צ–ÒUBš«¦ÌÔÏÃÂÍ ìÓ§ ÛóÌa¸öŒs‘3{õDÓo7l GZ1sÛÉâÀyð¹ØM=f?œY¾*šW¯™©Ï0 ¦}L°øýµÖ6=Úó™L®Ox‹Æ¡Iíܲ†—ÌŠH ×ZYˆ‚±z„çá ËXH’3º,f#EÛõZà€Ü˜4É}í÷­Ë¯VXd`¤ƒ…ùîjZ²c <™¯¦!™wM¤„îš¹5“#§¬g è Ê•_ï–ÔX޶¡û!)@“¤ldúôBŸ¦Fã~ýæÄ="j âà^é¶wEÜ,qÙ±À²FkÙŒÁlº`Á8Y¾Ý“Š<±~²D×]²êJ24®©yÚÑ Ã]ª×'GÙY³}#€˜Q™á¶É²ÙÛ†àãcÞçw鉫©ü'r'±LãÝTü)Áo<}2¡u lØÔKŸ¡$M)ÛÇ™åæ5”§ cúLfì+÷☧yŸœñÌrcVÍ«ôµ>d-d!-»u3¯¿ÕŽ-µjj3ÖÀ§LÒ'@eožŒ®wžUóÙ¿fºÁ# fø»„…’Ébç³zÅÄ[ío»gvwÏø*Í»ƒ84QM>|ì O`úK— öðPK(ÑæY"«F– }ÌfõßG_œÕÚÓ}¤‘JǼj~WHÝØšP½¹¸¹‘5jzž'q¨l{:['MY[¬ƒì\\© V}FvÿwÒôOlXzOYzd͵R \?ì³Lröä»õynÍò¸—îë¼Ìæ´@gçœ=¾FÉðjÿb$.®éÇ™I‘å’Õá÷Ø&Vžš÷¯§-+¼oyH.öZ×pí¨Æwo`®¬ ©üXògÈØI~MôÁAnÙÏ]jÌ(‡Ä£¼¸‚JÛ=ªõrrÎè^ͬÞylNÇ"Þw&€R.îõou•B!e§²±™àî1Ù0EƒtFáÎ:*”Ràû¯¿à‚¯×mFž ÜHVÒF¹•c³ i÷ e}höÜÆ×âš+ç¢\1zÁ톓¹oî~_;vEÉŽîœMⲤ›Œ¹57P+ `GÏe‹ó ðÿ\C9û?eŸ5+Œ²Ï2¾/xl˜?¡ögÒ‘ý%»‚u^LÍ|rÝ«*§H/!*2Š–gH+5¶•ý\!Õ1Û„Ì DŽw/OÌ nVîò‘6ô‰ ŒB£—³ËÑäôxòÞ,‰˜m×§bT`¼-íƒZa6 çјC»¢6“ :% MìXÔ©ÜRønST™þûa " kçjQi“1 Óï¡XŠ£³°K+Hs Q5ì~‘1ç@#g$"#ÛI|R݆UÕ°œŸÄ‘ïö—ȪŠ?ÿÍÕ&¶e@÷#p„ÃúœU“™9¶ÉÄÜxûú¡јQKùä› 3Ìü›õ“9¸šœ¡".Á²g•Ûþ@ióï¡\ø-·=¹¯Ñµ¿ w Ècê^g]õÔtV%@~™ ,ñP|by<1|gá© ÝP;¶ÄÐëw½©Ç÷@Éh¢Êr ²"œ‚2I7î×aýsG½~?…¹¥uݤ”Áë!zö¬?ãsþÄh½Ÿ”H,©y{õk²a'‘ïŸy`|È辿÷=ˆûÄ΀Y@Ç“ÍÀnÎ!ÏR¯uÝ6ËÖkN–ÍûÍ#ÛÖ5épOb‘/y:àŽÕ¶˜­Œ;fvŒÁ 9ð³Þo(­Å‰pXÿ,9 1¾. àÞÒtûó„ÛõN¾§Ûë4$­GÖŒWkº©j²±¿OBO–V/ tÖ+s‚-MË•ô:a;KÅGòƤZç”V˜ò >HVÏó<´ËØõ«ÁÍj€>7¤+ÉÕð/{2«­§°F2¯Þ{ãûdà€Êè‡Óß/ ©jÝ$½3Üûq! Ã~LY'À–€Óýg¸mcÄ’eªÎ€T8¥Rƒ€6¸{.Î×6Ö_}¨v^9C5ùLúzaKa·TGíÛz-ªàÒuóQ”@ôsÊXÁ,€¤¿ ×a`.)ïýA±gZŸQé€Ãú we¨ÀÁ<¦/F&Î4É Ì8sÆ$²>¢¿Ì+×ö˜–ø\à<Û˜á2€óð`“Ý¢ƒõóˆQ  ]µ1±K!UQO‚$Kë”æc:øŠ#4«!F„B€Xªí;2šÂ‚S²LÜ|@׳6K)P¿«¥†Þq°vH J0+Ä yŒGr¥•íšÓ¾ ÁôŸ‡}¾×³4õ®ú³h áXàË#22æš³”¶“Û™°c«ì§~{ÉÁl†˜1¢>*f›y)ûÔX@f¦¥óçßMN2Í*娳¸x[PÄ K‹Ýðȼ°Àå¥Ùjl­b`ÇYL2RFVúfEKÆÉ‡=DU:rœLwk-›€¡³K¥[Nc­xñ‡— ¥^VÂí®åÓ4ñž.BÍ-0cnÍþ=©œ£Næ¹À73ÄY2˜I³GQ3n?Ή‘UBQ»iÌÃ'¾ïqc¼ø>dæ!%,37nÅþ‚µj¢f?‚ùï>iŒsFÕ `M a+Ч‰>Òíuv©w8½ï‚5m¾g6ænóðûÒS«Ü(4cuȸúÜ{gžXe2ˆ«lu6íÆÜüÄóc·ï¦îOÍÊshw^Þ¾rÏ–õµŸFgÍÀ˜Ï4œö‚9EOdÜŸ|‹ò4E ó÷·fBÂc²•>ÏÍ@&ÉÁ–=c2ð#š4g÷yåmc; öSðtÑ"!±}M½~ Ôý_¹•ïÜ@üõ~² ?a©®WÙïçswf˜ì€„Õ$½Ç¿çujÆÐ‹ hôÀšÁ;½NGo Ô¡<¬£Ð0b):«¾'HçV°±–¢å:Þí£íú»PK¶œk“³»5pÀªƒY0敃'¬ßÇÈÍ#k~ßÞXõåiÍ.TO,Àl-|"é]%)¯<$W ÛþRùQ‚œ±$ÓZø›'`l¾f+)ýª^h¯/ ÏS„a_½b[OV95žµO ç±oe8XL“îûÓ^)‘Õ¼sòç|Mg¶Kìëç8†»Ä¡•ÿÏÏOcBºÅª#"p”b6 c *œµTôi-  `“Tæ ë”וåNßÿú ‡ï)BJ@,=ñ¾Yª ƒÁUàº*0×öX;SŠ+ØP߬(nûºZm”FžÈ’·Õl¿Ú Ö}]ÇW°‹ˆûŸ{Ù0¨\3pý)+:KA×>Ìá©bꡘûtæü,ŽLø] sÌ©}ÂØ sBÈüæï‰_I¼º<þOT¶I»ÆtÕ´GFN¶Q¬<â‚X5·™ÖA³Õ6CRã4°|kÂÇÏx? ¢¹š€ÓÄuÚD6u¢²Ñ“Ôãê }K;ÃíÏ~ ÛPÔ ô60ÀO1 qÿ nàÉÀ ±¨öN…ÕØ6<õåj Šhï'üÒXaM7;±DDŒÚ¬z(€ І·iáä#dkƒJ†©=µõ×ä –Ø#“Iz,¶wfò·‡™º¹ª.âáÈ!= › f<%4†™ÿE1Æ’% iÒ &¶‚4<ï#€5Mîª?¤0™“Æ‘SߨYn†£Yc7Ÿ&Ÿ™' %•Î÷b9i_Jæ&æ‰tJûÌÀÈ«¼èí¯Ï&÷=Ð ~œˆÏL¯ÞÄ—\©·„O´eJN™=sÜxV°ŽÒñµ zgP:Ë=w…zv†dIe»ýyþY2Îj?Ï>WLdûüª¡^Mî×ÿŽ]Ûgæ§þl;Ãà¹Hú„•³»w³I}v¾ÏÒŒ•ñ, AÀ‰¡º`íGAŠ¿ÿœ Ö v¿ŠDŒj7'ŸÙþ¶ºŸ»ê)‰y÷o.Õ|be= B³º+z¨®$ï€EÞ"5YFí<üSÝÛ^¬ÞJÒ‘ŽÔدH#‘d'¥Þï‘÷óæÉ¢bÅî€í`wnh;5ŸÓÐë `Öh‚ÿŒÞR¿*Œ¯çïNDMy@Ø›š©Ÿ®i|–Q™0…ü°cìò&îßëé^ö>JqF‹ý’¡¿YíK+@|T®€§•on¿¶å¾fÃõðšë¾×ú¯5õqûd ßjÚásø3pWÖ|:”cÏKîÁ¹ßÞ¿­Þ§i n’?´}EFFéÍÜzÚ—òô¼È\ü,ñ‘oþ½ú³aY#ÏR〉‰Ÿ“?°êßõ2ã«}VM$,P뻆O=²Ï…¨œ|™JFªm˜Ì¨@9'à§(8ã X”ÚGÃzUå)€æÅRO¤&<àõú‚¯¯?š™y5¯­ÿúó/Bxq—+33 › Ôë®c­W­*G´¤TÄ ÀDŽ6ô½® Êa,o¡?ôAžzÐÖHRß.À+ Ê™ÖWX.ƒ=Qì‰2…ÛSjo¼Cÿš>W#kOÃÝ yå²›ÕÎK/s8œ=síÖC·àÆTŸ{‚cNä­´CÙtC_ÐR¶°Ìq~÷ ¥ÿÆbÌH¹E4¯¦ñ3nU<Å$ÁÏúRO±ZMËçêæÃåé, Äñ@§˜¼wÝR­U‹àÊPm±Ä÷ýú:–´aM‰:ú¡ŒÑÜXQ)ú ¨lºw•5ÅÍLÒ•¡ Qä„.9T-pÁ^‡mj–?HxœnŽ_;ÈÙ?ݼ}kÞ€Ú›ƒ”òîÒCYG¸Òm­Å$‚T³ùìqœ7€4²âóñ”–’x/$£œ–ÆÙ¥œp/>Ri±´B%¤" *8R†Ñ¦0Ý{ƒ‘5 È6aæ+IŽÌ%ÀŠfi|°¬@š„´ ;Êðú«øëµ¿–l'·%˜µÜ«’QŸŸ(Ñïû¡×‚p˜ÊDfÍj_Í&Gýó—GÌ ˆ;E?ŸîÜ÷ÃUŠê^f·bS}"ƒ23ÓÙce.b½ÙX9€™ÿûS“w_C{†ñ½AžÎi\Ÿ­^ ®d]y bF4°/Nwc‘ìS 9}?ž‡þº×uµ 圲˜±jå¡Ñ™Ï]cïÒ~½Å‚j'Ä|Òòd˜?uýBþ–ïև쾧3'{Þ÷,:\6°ØÇ=A©IÍÂDØÏ·¬éß1'w“þ§ëú´GEÓ•ÿÛh>ŸK?o ¬­5†yd†_ÆÏÀæ•ÕW=TC@4ÙÊ­‰k—K5üèÎrj Ñø¹ï›Ê‘¡ÕÊýuŤÉ|L†LÊ«KÈæÞ[XúÙ`?â÷¸í¸e>eµÛÊ«nÇšÊýk ®«.¿7ø³Ÿkä9¹ûÓ´åÙûóÉãx÷L‰Ü-Ò½=x4gÿËRºG°¸›ÁgÃ*¯¿*ˬ– Äæ„B¯¯fÔ‚=Ÿƒ÷{6z ·5Ph™€®½„ ÄÐK307ÙZ98Ë °¨ì á(/@¸®KÁ«7Ã÷÷w`À1V@:¬gìõ;W€r¨gžÛʀܓŸ¯°¿ûµ}OGÆ_ѽÃ~eþÑÄQA CQ;Œ‚øïÿó¿kR©‘®Ÿ ~~~à]U6ÊæÃEt@©oà7Ã÷÷_ª 2rG5#{' 4õ–ŸÕp„äÓ¹ÇRÑïswn}µ56@…à€ÃBZ£:Ó?ï7¬ä¸Y¿›1†wç^ÖâúŽª2¯;µï.ÀÀ&íä%û*ž—™?Ö]Æ 9Gà ¢>³Q¬# À2¥¸ÝÓŽÜÔ;n jÖ­ …¶cCQotΘXTÀ%TŠžç ???Pˆàý~+½O®KßÇyžiAäñº®¦gþúúÒ j›Uˆ®>3Ø‚ˆðþù×ëµ”Ça‹TMb»³²|U]¼Šlƒ(ó ¡Æð (°€ð~¿áý®J¿£¢~Yáû² IDAT#èÌÛ$ Áyx[VJãT#Êά(6."›Àa>WÊOÒàÐãèºU0œ£¨!»¦èft%ŸnÜŽ@Å @=i¤±r 1®.7)ÃÂvTÚ‘i"€S¥—Bpœ‡¦'\lzû‡2…¼lM–aŠ¥#­TÔ!ÒvÑ9HÜÈñÂÜ6:EØÎrŒÈ%}RxÜ7­æ tVtÌàjÜT”â{ ÌÊ9®´ù‘Å1—˜\µÂëRP¨€º˜;õM}^&à 7¬VÌÒ¡à§™-»ç‚\Ü™%LËL’ªÅÁ¥ûÃëìÄ҃Ql…u&V#Ð›bkæ¾Îg£÷¾‰wó[f=Zœ‘èéö}ì&í€PëØ qeõܰäÇŸ«¯Oq'Iè^ro®Ð“l ;-ÍÏõêÌEƒßÈ÷ÛMjËX,z±wÎ+Ñ‘ÁüâA3>ÇY3GD6½ÚËív ß«W `lzs@c~mh‰ŠÌ2¤„eMÉñõêÈHóÿ’dž(ØTJ“¯ ÙT|õ>DjƒZÊRžqšÅa¨Ã$ Ö}³5Ü8NçN7T€ÔJcSÑ=æb—>3µù߀OíXÙ…¥œPë»y¡ C³ÀpõÏá5@­*ð°ÿÄëUk±3DpL$™˜ZÅ…ãÞ¸óP@ç9î7‰È³ßÚ xÌ–+sð8]MI3–\,\Wä;°Ÿ;<ì«~ƒã7øÑg-.›ëÈnŒ÷yðÅ‘Y‹ê»rcÜN •‘;Èë„æ4†øë}ýð{¼ßÇÕ^“{Ä:3(ílÑŸWûÙPȤ´}'µ 6W{†¼wã b …·É¨±`•VÏ]× UØz²W)ÃPEÙ4ÇñÕ¯“ÈYAöz‚÷»Zªf)¨þQ.e=u).³øQ擇vª=2Âñõ¼¾ TûŒïw…íIX¾þñ­»®®Ÿ¿¼õkìWÄÅü®ëBifí_6´¯ðoÿöoðþñr“ö1“±Çè€Ê µJc0e‘ÀñúT¹:­ÒRF©¼à8¿ ²ÊÔØi)_p]JþøþûÝúaÀt¾À"ì¡Öž€9`|Áñõï÷xW¤.®p¼N=§Ný9ÔŒ~j( @†i¼^'üùÏÿWß_p¾N(áë, µ´^Çkƒ¿¾ÿ"h=D)*_ð~_Ícúýó¼ðz*¢À××üüüì=2 ÛYÞúdÆÆRv€O~Þo#¼@Ò÷ú6h0»rË£:¢¾Êš:éÆjÍ×΀RM!ÜR9e¢ÏS¤©9˜7àó,Õt5•¸M&i]œ”«ó?´ƒ1›Î&f½Y.q£ŽÓJ’4¿~7¹Ë'ÙóÁÐPWf`®z€™–«¸ôG´aŸ›763ãèßÅ­1‚ШS8àúûªÍÈZ´@rÀ<¬,iõ€wVÔ0á@€BŽ Ç‰’sB´Â…,¾³¯êAæçMgaˆåô‰e,µ˜ÅÐDÔv½:€ .=±²IlæáÌ”Œf}g(>ùjäI,ù!/Kêø,åͦøÃZGž ÿl¾)öI­Åº7À®4ðŠ¢Ôà6Q-ÍÐ}xŸ©½ym£@ÃóAóõZxM“úU³öô¿xO3ɦ_«»®30¯Ô“ ›fg æ¼æiÃÖf!IH×΂J^ðSÙÇôžp”®šô÷û½`vƲ35›Úî< c³¾“xÏæÝwÃ’^ë3%ûóJFÍ0gð¹­Mä=³FàQ8›×€8KúLŒ1ñ00:ãYù”ÜÈ)øFûÄ©Ìãeûgf”K´yCµÌƒåyýï|‘²„Ÿ'³í'å'/Ð,­lDzÜÉm³×Ü7?ÉÅVfÏ˯Cz4½ß¥ÉŒŽÕó¿’òî~öSô¿ú¿û5 ‰A2­žö¶Åúϸì î[£Ï˜¬Îêad@Ô´.0] ¬Á*Àd„£§¤1%´A*€,Ö:v Q?‹´ú¢ƒ.øxï(6ïõh!RÛž‚60"öÞz Ð ­7B¯Â­nîÉúQøÇJ¾¶J›ÁäÝ™¸’û®ÀÑUª|ºÏMö Q‘¥çÍ{Þ’9 ¸Ü‡ýoãO:SòÌï½Þ ©wVë—&Wôœ‘ÖàG@Ѥëƒ`°ZÇûÙ[:ÄÏ=ÌáÇú*æz«Içz!»¾*—/PQ@ª@e"eXP/„Kª±¨Tn©?ÆBõm{šÏñ tŠzH½Ù€/Ÿ”)šRG.Ë;ãÙåýù± *¤–”èÌù³¥^×È*%/P‹ªEN`8€ð† Uôùnë €Èü`Ž*{Ôº‹áâ ªp¨“pP,œ¯_pGóu.¥ÀyžÍ”ýýó7\—²¾¾¿¿áççgØj­ð:Àº®«I± ¼ßßµxóz‹*§¹¦‹ëb&ßÄkíëy.Çç¯Ð1°ÈUš ­i„²AilY]#J­ö«'{3ÝÿÌ÷kœÐË’R¾úYNw$yžøuÙÕ ë§Hïˆ<:é?gW =™¼+…³èá7/ß°2VgØ„Þ!°‡G¸g€ CÓ=´L¶‰ªÿZáiнu"F¨^U î‘à À¤VüP*­q¶‚{bùµv™5Päù^\îšÒLOïgÏ•(™%Ñ¢¹îÐÞfÒ€¸Éf€Ô DðCS.ñüªØ_5Ï­^6j±àLë#3¬4ºvKk”²‹S3ËfÛßþnj2ã̬©(IÊלlõ‰Ùßêï£Dj~­¹™Ë€§VL.$DkÙW4QìSÏq_»¿§I¾÷f6 Èj¿.)hší©ÞðwÊð8ÁÝù ÎÒ¨³‹O XŸß×Oší•ÙúlÈà¶fn?r0-ê÷ßöšÛ!k¯!bvŸ7,µ„PwgÕàÚð7Nî²ky3&;ö0›ÁŠ*ŽÐŒ{nr¡Ùæx ]ü»|i±§6©Pxróýjžƒl˜w«ôÙùyÞù¡e`ÊHŠÏãjòTÍéÌpüpf 2-¤Ý>e}z–?=Wr¥ùód×|¶î€ÇOÞëï‚Ùà&c•¶!–§EñZ×Éèk‹É€Å7-ý;fÖFÔääžZ Ýû, þY˜ÚÐ÷È”Ë@X„Ñ3V0ß§qu]Ó5±_iá›8ßû9Pìl‘È|ŽÆç•ËéºÝßãó+ƒ;±w`ÖJB¾»ŸOƒ×XOÆH^ãÁ²þÞÏ¢™=ˆ#ÈÃÌP¯wºïdÏÝhÓ®hÒ뢊€” 1ÿ9¾‡@5¿6¡>c®"cÓ6@Ë’4¥“¥õ_–¨I`9á$‚£œ@ÇÙØFúѹ­-1 •Ó’_¨f óT^¹.' o!p/ezÑÑ•6í™1‚ •v½Ù$yNH(gßXмèÌÉXbïzvpÀ `A¨ @ÌÇ¢ì,0ðJUf„Î2²g÷ e¢Õ ˆfÌÞ¨Ôþc}ÿúõ þøãA…åÉô\ßm¿}½^­®z¿ß-iñ<¿àïþLÝœbý«ù2G+ŒÈ‹kk·åàÊÀƒ †×#Dõ}þÉ{ш1X„œ×um<&¥DöúIЀWÞžw/cãÍ~Æ™_^ÔËÉèmj¼(J’ÂwþAP°šÆ¯’ü®Kiq‘1¢7yïÓ©þÀÊÕ,)n–®ÎA’ ¡¹5C}>y‰À]°Ö¬‡»¿A÷­aǶŒæ @(ÁPZ*…Ý-SÑe‚ÒÒú*ÁU†+ªƒ®;šLBiLýóÝ5ÄñÐ_1n"0(ÂËDÉ3Fßÿ:u!+‚VSrÜNj"˜2˜ìoØ ;ÖÅÍŸNÙÖ‰F)ÈîÝpÂ×9p‚è±µ÷DÌX M2ÏžXD<§Mÿ"ÉeµOeëÂÿ<›Æ{¢Ý¢0ÅÔ(zN–¹¯‡u‚ÕJš’í£q‚™6]YñöÀhŠëàw·¬(üJæ°b’Dð1c4î"ëwïq•è“oOIw»©}&;ºOÈ÷æàO÷Ë×0!¥…:…Øð H¹Ëâå6A_5OÀÆ”f„ºLäÜülÂY>³X™ÓÛn>Ãë|:ôË ¸™¡6×\s±¸Z2pê ÄúäDÄ.Dgõ;ÆúŽí¶b ¯ä˜6öÉën÷ÇÅgû4 û_´fÐl^‡Þì΃6–XË=§1Øy¨CgSKÛ»yÈmøú;ÿ»1>ÿ…ýs®o£wP¿GÀ RÀ ƒ«Yðï±þ>¹¯¿Œ!VûûvÀñ¸Áa@1³@ŸØÍŸ0åv¶Og…'­9Ã#}f'Fv\kJt¸¶ûÓÜŸuy×ÈÀÎüþvuG|¶³5@Ëý.óvÞí½#3NAm– x@P€:^p§Zºà©þU¢S¹ª‚3–øùóó T "VðÂåÀ¯—² !pA`¹º³I3Ýûöbg<Ûók¿ÖZ¡^•ßÀ€±TãþÀÒÀsÏLb`ÚB9Oc~)#ì<¿àüúÎó,þøã³§Q çï·2¡¾¿¿Cj Õú6¹´Ù¨4â.ïœJÑþÀ«ŸŸõÙz¿­¿ûâ¾î é:}¿ÍK›êO…ã,ð¢_À48žÉ¥tù3Ã"žq]—¾`9ÓÕ#uðÌ€^÷>›½Òçò8˜žûÿO@³úí&U^0Ä€5–ÝM^G&Áøï.H|ˆ¼Ù›àf),³i¥ƒ³^;ÆX嘆«ædÖ]Ï*O,øtóÎÌ£7× èÕäö SQ=¬»†õmKذY„ý™¡º˜U3U÷ðacLGi”qD4M¾ûL ¨_Ô¹L¬/Òã=Ôµ¶Áãï ï§÷*·ñ¡©Ö r<öú YgÍkmZ>^S­ge:ÚöA°a‘E€ i¯H‰ì…lÀ¿Ú¿>ö?e{£™Éév—³vÅÈŒ"ÿ7gìÖêìß}ú5<˜°ß%þcßÙ÷¶=ól·GE³þhÃF€¯{9û<š2ÇM¾6×IΈi×FP>¦Ë‰H÷‹œj.d|yu‰À!Ê Âöì‘…2ÀöoDêGDESIt¸ø{éϬ —¨ÃQJy©ß8^øMp™LQ?ÂÅl=ƒ–£ypé{(ðs±2²éP¥2EŸköÄC£ð´ 9÷ÈÅrÂQ^¯?à×?þ¯_*ë#<à/KÔ!<6¿êׯ/`føçýe¯ —’ºZƒå€jþÆny‚PámìÇZ+üõ×_7KíwXŠ,(D_ð¸êß P+G!ÒϨ5zXvPÙð…’¥ÉûÔÎË{Å´CøyYéõ]{žZLMjýpA°y¶5Þî–ÐxžÍâ'^‡ŸŸŸÁû*ö €5?»Çí’)åÈ|¸*™Oµh`jͦU ¹LDd+ ÌÜr÷„˜Ùù>zœdÒ´ EÜÑÖçÔ%_¸«´íAz0•p̬/ú¿‰JöÐh˜ÕX½EÜJ󹢯²ÂnðW¼ïÔgDe]©¤ËÙVjï,¯uJw†TG±ãzÉ豫¤—LkOpgeÇ °™'ù´–žm2o¹˜ÆËï&ÍOž"«˜â”Í„w:ümúsF¬¶‘Åÿ­võuŽiS… †Âýs¬ŸÄ) øÍÿ×ÏùçdÍÝY•‚€¿ÍÔÎÀGàhµ>Vžc;vЧ€Ã§ÖŽ¡²;ŸZ33„h$RT¥Z€%n&;bQ W&õˆgª€† iȲ,úû¡f+àïIf&ÔŠ‘'OkOãÇëf2D¡ µÁ›ƒebà^O>íg6ZªŽ€€<‚-9à±N¡Í«³ÆnÏøÆý“w_úz¹òо«9gVÅ þ;éÙë\WM­AØÌ³Ÿ€êËfòà9ˆ"\ÂËë3€Ó²f«Ž!¸ÕOC:÷FÅÑå¯=1üëøÒ`&!¸D„ñTЈ°@奞Á"Õ•U(÷:¾Ôª\ Ìj‹c}d}ëkÁI'T!¨ï côVŠ 0‘ZGЯ_dfò¤Ì+é÷Ð{ßK”qÅ-@4PŠ üý÷Ÿ€ ¾S¯_¿àx©§W¤Êël¯YJWMILõÏÁ{YýŠq =)ƒÅJæ9€°)p©‚?þøÿù?þ ïK½ÀÎã:Nx_o¹àuº–›ª† p¨#x°3ña^µçôÌzÏžž€=Õa1Il= !|2Þ÷ýí¬Gòù:e |üþ#›„¨·æêðÆvX¡9“aO¯Ž±Ø©œûð_]FÁ¨Õd#ÛLüµ5]}_L¾Y5»«:›BÌѨƒ‰[û35jtåþšBúX¢ZÿLÆz™î‹±Ç@§G‚Gѧo¶HS;ô‹}w)j$OÎ$GRe`•-^4ñ¯”d锄õ´)Ola [¬o Þ0…Bî©ÆížCÚ Ü£A;õxåc@ ö“¿Ï•T«WHh¡{ÝÛ`8]‹Ž8$ØÄ×%KG×1°hÔùÇ8v}†ör–îùro¢™NOœÖ®3ì0zP!)ãÊV !†éç$´âRÜ<¾¥Úg'c¶ô×·ÇuÐf¸CAœ™0g Þ{mÅÒ™ŸÝ¬ ê¿„š1®]áÝ` &/ÍÞ6™¤2jÕŸ|üfÖ*°[ÆXvºM¨uò·`sØ×æE1|Þ™U ÜUíבüï=ákþšøñ#ÁvÅ$ÙW+™Å*6}¾W³Dh–í|â"ƒ˜ßÏÖªˆŸ Œ™>_ïøþwÎŽÉ2~FNÙsïLÒè¥S-e)ª¿®…š@óöqfi¼Þ½ž¸K,¸ x ,å@.§×º ÐZ‘«‰;Ò½¸¼fhþˑ>XVàÊÜdþ®i;Í(ŸÀh/½9mÿž/Úû­fMð°L8ÚÍ7mòXóýÇÿì×9²I[òôýxp0|nÞÿÄ÷7L½W@ ,$“ONþÙR¬é|â;û·ôaW¨qÔÃo?àñ†•­>ÅÛ=öà¹y-€Ï|=Õ^GM–£ä~¾äì¡5سz.Ÿ¤à;ð{Å*ÜÉן†yŸL̃Ù'f厼cCýNp"Â5?3á¡^uñsîã1ÁÒ!V@ aj@újtE’®µ‹§DddK[” Ðç¾þEà|°†^GŒ=…¥Ù|¥jƒœç˜²¹¢ÆîÊx<4h4¹š„Ü‘ê¥i*1|¡@Å·2€Dà|ý£™—¢,+z¿Aj€¨þ Yÿˆt该€Yø›ßQ\Y׿¾¾4ЂÀ˜/eL àå8 ¼úXN¨Ð÷=¬j³9 hŠhaø¹*H­@¢~¬×u™Y}OÝÐ{¤ª$ýyåxA¡~~~Óv¿/–‡)•Ìä=Ö¥ \U¥†¿~ý²½¦Âqðs½-]Õ|>­wÓs ¼ŠžÏ#cьֱ˜wÆ$ \Wf€ó<Ô›[>´öY>Š@j©Î­ç@UoX\G/¼˜@XÙk\{pÜê¼;¦í\w> %§ÉÏœÂtcyL?|öˆi¿1až7WŸi¬ÝäL  ,µÊÿì“æ9‘0¢ŽQ†c/wæó‘^:3£\g›à9•ðºÞ·ƒoég˜6Í`Ig`Q”,yüw , =¤$eVõ£Ò Æ Š-e‘ÔL»µ¼EÔ «š(‡x‰çxøÁÂùZDITdžEÿ¬ØôΟÙׄÿ×d'S8KE‰Žã€ëçû†FöQvpûôŽˆ BÝR‘›¤3LRü³+׬º•ßÑXŒî???¶ñÂÍcÌ:Ï`OÔèŸmšÄAPvì“öY Ÿ@ú=î'ãK53gnr3÷›`e²>ƒÓ¿ã1«óÞº6M…Óœ’ã߇û@ø(Ïù]†Ã°ÁÝñvá6LŽ˜Ø2O§foÀìÑsNÔý•S@i×Ð߃1ðQ>õ‰Wdöõ>t‰`p&Ñx’¦®’Ó 1HÏŒøWkäT ·Æy¸G8ù! å3{/g ÌûX\ƒ D†¼nÏçcŒÕýÎê[Ã7­§¹v‰ÏgÎæ‘-3"ÊÀæBnÅ6^Žg í'™ÎlP¼KÝí%«5¶{¾>2ìØH«äÝ]S<_³¹h~2¨¾}~ÂißÝ]Ûžê„CC4 Ý|OtV’,îmäkíï±*†× 6¼ˆÀÛ~4 f‰¤3p5à¶úœŸY~Ѯͭ&²e mÊC“Žjb l©céšñ³H–¬¡}ò ,?߃h¢®êˆÌÒïþ6Ñ¿sÇjZ«½&Î? 'bÝöÇkÆ"uÕ£O#èº.ÖÑÂ1„À}ÍâÏñ5ª@HþLÛ.Æ"ÂP°!´uÒµ`¶HY_<ÉnAõkÑ øýþÞ»87¶Nâsážh©p]õVDsÿ–°0¥†»/ß,7aF†Á-̓/ð9ÅF?™›ÊVÚ¢ÕkŒû¦…8"¥QÌaQÊÇÒ—Œ)_;„ýkîžVþ5*_ãDDÏ÷fEðz¢‘1¦(aOÆBø8Ž6စHƒH½¸üÌÊèÔ í섬ñå«ÞË äª•SÖ1L ’˜:¨L 1†.sáÓL½ˆ×wÀNƽ¬`Êý0Y“ênÔ}T%†Uk¨1ºŽãÐÆ§20åÜÌ&hoßij¦í}Ô™z™îEÔö(;d;£1x‰T;Ð*“§7 aXt¦ޛʑdëžÇú.2Ø8˜VfL2‹2 IDATãšÔ™'Ç $+¥lã•GZ—8Ô®B@ 0f»¼¯qÎã94§>­À¬Vc`g~"ÿr€)ó¿ó:ÔÏ®YªêÏK9Jkf3%7¦F"çF®Cß3º×â8†Ï?—]—ã {ˆÈ¼XêxOépô}¬s¬««}=9LC'¸nŸ—YÒÜÒÙN=úŠ×0 ÀxµÉL2œÏÁX?¬Bb2¯ª(áΆ^Ùp}~Îv!!šö>¥ã†s»^W«E‡ÀŽ@[ö5í2˜ ʘY2*§kNŒ¿ï%œ2é=áíõz¥õ_7?߯s<¾|à=ûz¾ßïaß;l`c‡ðä[Åü¦š xðókùýý†RN` ÐB—Ô‰&""Høëû§ù:ú3}‚CÀï÷ d,™,?—zD óh©z>´$`¨ÂÀ–â§` [h“:)W_ˆ€>ðÆ oVÕÅÒÌáýúÕ‚»ÜúõúX.®@…á%_­NõÁ'W€K.QeÑTßPå~¾¿á8_€¥Àõf~C9ûõÖÚƒBB¯3 ”¢{,Ø{— ßjL믋ªGª MÁb½¿›°;ŽákÑñ W}yûóóÿùŸÿüùçßúwÞG™š‰Ž?×Ð>7Úþ©÷Y Ö«)~~.«7Îvv°(„€‘@`è×CWlé‡î‰Ë•õ~¿¿¡_¯ \•m€P[äiµÝ+‹´nG€‚§¦!²[U jÒ7˧8Ä÷g1sާ õ*yF¬çt­ÒŠN'±A£‰vœšxÏ›tâ77°A7üá$ÓCÏÆb£–Ú“ØE86Œ£·Æ¼I{aßMÕ¥)ùŜݷäм8P¦r‡ó,pZ”2ë"8K÷3CX‘1±\‚Hθ"—§p3‰œñ„€à‰yŠ1"¦œP²Eø’Ѥ0°Þ²ûÍWäÈJã)c Ä)cªc_0/V“ðljµ’™Æ€‚¹^MÒúû¨Ì£}¡Ù+•« ¦‘´ *þßBˆ~{Ó{幄<%t™’ãf‚›)èÎw"%+y×N>¶š Þ  Î‚LSë ×p׉ÁâëŒl0Íwò¯¬ÎLÎo×××3OÙ{®<%”ýŽGÙ“¤oõ¾ã¯3ƒíVìNæ¯;ù`6¡ÄÄväffðÐ/¤«$£lÿŠ&·ó½ð 3X}Æe:Žë{9™_k–üDÉdœX¯XÔ7Ï·pO›Äoã{ô´æî *Àž;#C¶ÏàŠ‰¹ª¯žYoÉq°t`?±¦žž¹'ß¼‘ñŠaòIÂÚüž˜‘»ów•Ôë‰XG®üíæ×È<-Ÿ˜“+gö¾æ{ؽïœá R¼ŒA8¾yÀÑ OXlO°6Çf¾üvíØi³÷¢dgÍ$qo¿šTª±T¸³Îni‹Ó5vo+ZËÇçõÄcúùî|›}t2ºÌR£ï#¸}6w,ä¼}"4ïaY°„îÛëçvN±ÍÖA{úõN’8÷óyþIXƪ¿Mkj{‘6ï!Dd2*Yúì>íÉñöçÎÏ,f€×ùe}êRPÐÕ¤[e3Å$_:\¯¬Kü4;±!=ƒþ½‚ `&ïb>cj™±z° ‘CI ‚À¡²Ê…N=á³È“ýªèÏ>ˆ ”ÐWlàà×pï•Áõ þø£Â_~ÃyœS?öÙ3Õî”r˜IèY¹–zˆº^ÛƒÊè›…0Ô<8ÀØŸŸŸ0ýüü´ÞS„›}“­#jú£X=© »…Nëw`φç (5„ÁFº4šM2–6Ѿ«^¬þd †ûΤC4€RhðçêgC)Ç€×Üö¿¦xƺŽÏÒ±š4 3,cöd‡:.¦3eï®m—mñ\eܼ³ˆçyj•mj»ÉÙj#œ¥„»Ã ‚z1Š ¥€Ã¯+YDô˜IÁ.” y$8K ÷ÀåCÄêÙ@ˆPTDTXSõ†B¤š_(¤Ì+7@}dè6©L°I õÒé×O„BÊPr µ‰õ]ÈÁõ¼kmçÃÇ'';sî¹p̘WC£º(\;é°â…o?°ÍÌ,$a4õCƒÓ=-4ßçÓ7ºÕµÐïÝ›VÏŸç&U°ûàfÈCÄô”Ðcy™¶&Ôß…ÌнO u]›g–‚Ö…Ç]2›4S°öFXVO »øâùÞ즘ãó+'y­<>iÂv›l_¹­´€ë[ûF1c€í€ƒûçätò¼2nÏ®ý $Z±?ÆÂu”Ü'Á×òõôà—%ýCÄ‹`nŒg½M´vþŠO2±•Qýí^/¤.;ð;;?gp¶^?[£ï­=I'Þsl¯á;U–¢Ü¼ojºÖI”™œ™;{y`4Ù™ÝîÞ%ŠM€ß쾬šÝü¤Ÿ-8¶àÎvë¿Úvhq+É{Væáê<]ÕOZ熿‡‘í—§Ê=TÃõûÇ’Ùpõ~a¸(ã=Áî£ózú\®@²÷!› såTá0[|ˆdúÐvtËîóE+Þ ¥òñù=DUæ'³°ÞLÛ#ÃãÚ.[Ý–Í¥kÙ°{:y!󯔩¿¨SzØ °|r"óEóÑƒæ©æ5þ»C×rÕ]:îÚÓk ª®ê™ÕÙè¬ãORŽ?Ý·n?7aõ?îÁ©7é4€zÚçoÏyLœÎ÷¬Fë×IÙŠBPð²«5Ô’ÄíH^¯_ðæªÀ©ŸÑûRû;²ŠÊ0îì« }`ÒÇ0Ø8@æáVºÒï¯p À›,€@  ,À@Í$–,¨LÔªžÐ–XˆððÑŒ€ŠÀûb8Î/wpé¤×ÜÁjó{¿ÍÓi"°çhðôΫá€Þýc¨•ßïwS™¨­½×#žEïK€bæèB虶ϼ¯·Ý'œs2”æ}¹õ§¾•úº8¨˜Z2|gQ\ͤP ê¥?@¸Þ˜¨4 j¹«È2úNæÉýl³úÔxpµ™u]l öj’ŸpÇßGvÊbùa¾Ø ·²d’0OÆýçºF3£GÊ`æÇ3O‹37 VÞü²Õ Ü+RQ›²¦ú丽ڋ"¹V@õØä:)ãê8 ¨;˜‡–4sp7BGcd6<Ä« È”Ê(œN{J)ƒÆ¸”³‡.-Ý™ôϬŠ[¡µ˜g÷";`Ë„h)…˜ê³¼b¾Ïó„}Þt#]5+.î µE# ¹‰³ldôÐ1ÖľŠºÉèR¶ÞXO÷£l“ìå¡a¸¥0-’½>™P~ÂNý”A€ iã³JAEXE`ßå<»¶í¼/DwL¸˜bµ’Lþ+,‰ð’ÀOÓáììØîM€ŸÅ™¯†ÀÛ¥]®Þw–¶c¸¬Ÿ< ©à(×äÀ5»îs ñ.õ- YÙýü8Í\IÄÓõ&£§ Lå®ÖòðÙwFâ¿›ü5üýç†Åù >2QÞÝϹéü„Ýõ4Ìîϧ̛ݵ˼˞öèËm÷swü“·ÜÓÿ$È8ó=3ÿY­¼{>aÁ6Î?[0b‡õ½ŸX»kØÒ˜j‘‘ó |Û‹TPl-µæÈYŒp3¢¿­ßè{²÷Ÿ'„Ãvø’1lg ÷꼎Ü'öÕÓs° ,z¸Çék.ê‰]šzFXˆõÇüïjq°ðVS«„Üö¾`¦;C·†ç0‹3ܹ‡õþ.*P¢Wn)¥…´ÌÞÎÇqè8KS׼ߵõ^j`9 2ÀÅæ€üIÝT©Ëë\z)â åkaë{í>ÁÊÄ¡&"š¨Á…@4žÃ£4›ŒmÅÍ‚ÆMÜ£gôi$3(W ñëõ  yb½^/5Aÿù¹©nƒA Lƒj,Í~Ý+S* ®PÂalûþüýý}«”P Ê%Mw-Á€€«¦  0©-‰’RÍß(=ÃKP8¹Â÷Egñé¾ BD5xßæ ~?ÅChÆäj>ÜöWлð‹Ùd¶r9úÂkH:åu4YŠy²2ÿ¾7p0!”pÓŽGãíÕå‹!¾ÖìEµ;ãا\«nNýXÑè£ùæ²QÓŒp¸“Ú´Ê<‰DY—\JÉ#]ø.ýShZÁ)1 €[ÂÊIŠMþ5E „2p0$XeÅ¿î$p";‹X¦)^ ˜W¼^‚ê»åÔZ©:A€2=è¸md›D«=À›¢7q}d^Ñ >cpp•ãÆW@J›*À=ñäw¦ê+öQl`oߘ «"îþ÷Ô¦Blø£×R¿Že´¢BäZ‚` eƒûIcŸÝß¹ÁZ=ßó^3M:­_Ä‹)[~¿f ,S\gÆf”Àí£XÔdÓéùОæI73ž%1Ùó²’{~Ú,¬.+ d<«î“Z°vÀÒª¡ž§D+ lfœ%6{ð,2ï“}Òæl’þi“}—`òo'Õí°•\K„YÆý>Œ2õȬ ©eR¥QÚ÷‰T@cɺYí˜î‹ É]—8’ïÕ,ϳçgþ¼+†øksÇ>ˆ ô'{ËîÏÙþù; ÏNbõ;Rä sR¯&ë«kö¯$Î=%3xÕ÷33‘.yØIÿn¾V·ÁŠ¥zõóÿΪúWþ·µ.´Ìk½r#3=Û?›¤¯=«jØÎr-Ù÷çM™"Æ,ii¹«aWæÑ¯ï9IÈç³&»ï;PyW×<]çOÀ¥ß!$ì\±Jýe*ø‰ÅÁêù¼ïƒøñþ‘]÷¬>ð÷¿½S*ôjP%Æ\a”Tx”Wø6.°°þ‡6@÷à-@$M’p'=£ÞoóšÄø­žYÜ:VWzî¼Ð  û Mp‹…j„Î4DK)§CI$–ZÅ€Q)^ V«½5_?„–èKA÷3 xp/¶˜V;>oœž]ê—­îK—*Í:…ÅüScÇxØz¿&+q¦jI. 7û£qÿªAŽH·g©Íç Ta°¦}î¶‹bê+uŽ[U²Km ªpÁ$ ?ï‚FON"4nkìMŒ™Åj½Ú÷vör°B9Í{\À”IV×™u„z$®k­L…=V̨YS?T|_¯sÁøp¿‹:RðÛAŒC"\D×tCä¥üϽCˆÊÅ]Á°›JÂŽš5ï—ð`Ð7ظ*#Å>J2½‰-¤›X­o@Ò?—R€ŠFƒ{´¨û¤kJ„N…Ìà]ÀÇPÝc ÌL°öd“z À×ùRä}’HzŠbýhúÜâayyˆfýãÓÀåàïéç¯Xן‚ßY°Ä rˆt˃'&áŠÍ¶«Aöò2{~ ¨Û^÷ AC àrKC`ԺϧîÎÈ7‡u;§z2iü="Ü$…éa)ŸžXû,Î^f£ÔØeœ0ƒÌÀ²³3 B¹¬w! »”Ì•U2ž9ÜêÇyéûw,v†mSŸŸjÀl <÷5™r †(Œ’‘l…¶çŸ¦Â…uCXª(¥·ñÂú¼VxÿT½zD€¤ht¼ $¹X“ÎC4ÈúÌÎjŒ¡€©´ðzsè{qð…sF¡“ˆN¨\Ù#2S=Ä úZÍV<×uÁyž-HÍMõ;S§XƒŸ+ÊÂW5“zC™Bª2„Ȥ¾oÉ û0<¾¥óÙp®JóªjI~à>dÇ©ÆûïKMËÔÆ¯³à¤¾!MBµß{?]˜$4ì»;U áVÒÁPúœHŒÐ`BS…ëÛ-€êr04ïsY­’x`M¤ðgÍj3›SWULzxš´eI<˜Ð6ýϑݰ:$³ áÜäf«¿~¾IýAôų’Ä Šé‰­!>L"èFòGq™ úƒx¬¬>¤þˆÊœ:P¬*—Úö™ô°ÑFÍ—E†^¸‹9-ÆL Œ …5-íØ`ì(ºˆR¸6f¦ eLIÚ}ƒfkæì){Á48KŠ&ßc44~$¿hÖW ðíL%±i‰0ÙK{-24”\KI2/…´€F†ZßÿRS3ß7]ƒÔ~Í$mY43Û5[MÈÄ«ã}ÁF'ÄFC…6%þ/нӜ»/ÒvàÍ'Œ¶'só›”o3AwÆj¶Üï/iµOÒ³'Q¤æ2ó6•={¼&OTÔ´1l³ØeÆÒ¼ã(Ý‹gÐgYœ“=s„Áw…í™A¸&QcZZ+.>ÿj¿^O‚ÏœÕ×Ñ“P½ý™wÊð5˜ƒU’%ñg—$…rh¾Úú L›ß_ÎP®7plÊù–&42·a(ºnçwkœW¦ö÷ë£füã§ÿ~}¾‰Áf'„èåiUØ9ÚxGÒßÍ ¸ß‡yQŠËKž›BŸu„½R¦áhØꃄò ¸Æi v;cgï­É(ÄÏ [Ùg +ºÙí­Nëgÿq9ÜKÏŒâ¢Ð÷ÁVpÛ/*p°À”–Zà¥XÜ8ZŒmõCÃ,M$pº§š\2”‚pd²@dÕ=©%,h÷K“ j]¡Vèl.ì›2C5-uKbQ³ø@¼'•ôõÓ¤xºïÕ|o³‡)“:Ähè[ìú´NaϤ¬Åy~>2P\Gçyl ñ«^ã„e‘ò™NâÐ%•¼<ØWPû¬6P%ßö{¿—Ò ‘î…wdÉ ÷ oÇv¸KNŒ“Ьà¥m3è ÷§¸±ò ˜œw|_=Å –QÖ7‚F º}]í‘ï-é3Ä07]ý”’”¥(FÀ¾¼Î¥ë nÏTbŒÞz])ƒïÅûT³OÞ× ¨ÛIósªñ<€Éöñ‚´}ï+¶D–V67 8K“ŠRѬ‘}’6>5‘i”²­nÏæïyéi¡t=0VŸi‚D9JŒ®÷‚ @¾±¸ä13# a6:ÿ,¤a'Ï’’3–÷|Ýb4¿ŸŒüwÀÑxVÎ „ì9­ïk;Î ßÈp~n˜·r^ísðà1_ëT´`F›OÖBʦÄu’l6¨èM 5åd µÖ–Î}ØÄƒá®$Ƀ§ìP¤tè`imzšÞÀYNàð'#e)Ôà*­9î@UuÉŠ÷Ü@×p€†¤áü¿ õW9€Ç¼=£æ`VÃd’»koÇî[±/?ñµÌž•¸?‘IÌv¾VûŒõdgvùÜý¹Á[?6žãž?]ê*Ãðd~oÖÝûÖ°O:ã@ÃÚw72ï+é5aeÕ~±1t.a@3Çf ®µ6ƒª³Žó 5HG( T‚’õY¨k߇‡Êé¤êÏÑõÛUB*ùÖþñï /¨U V»ÞŒ6 ì÷¥”çy6*f†‹ßËþáÏ?ÿöI¿¶î•Bùß½ŽÆÆº® íúW€‹+ÔwUË@¶r-áÏ×Ãu]í¿’àzNU;}½–½†›Ä§éß¾ ÝXß±·$оÃg#–p}C­à=¢I7QÄ$œc˜Øš{6üó:áâ·žÈj¨ÎîcK}€\öYΣÀë$(öy¿¾^Pà×ë\ßð:8” Ž‚pÎãá €+œÇ¿¾^€Èp‚W)p–‡Ó!g*TŒ†Ð|CŒžeEŒ%g(ŽHp8œ¿.@øùyÃQNàªàU½X{é×zöøP¦]˜#¯Ã´ 0£B­Ðr&SMtœ,ª´M¹D e ‰ˆhüëy@½ÞºvºU {ŸN Wµ)ã1½Çey,µ½w­éy@å3Ö`4ÐG\³Fн“ž±Ù]°u—í¾¢êÒËqÂy¾€à<^P޳5¬*Ñ$K1:²±`Ä¢W›ì%¤ù´!n‚_àÃo?è+Wì‡öÙý¶I™ñ¤"q…@ ¸Þ®wU“IËú`+ÖŒeMjqG ™R¢Å kœ,Ú/1]ÒØs­)Â2ÞbÑ!ØÀ\j†™D#û‹/m¦üs ÑpGÆB)gc‘³œ5)ÇUz6›Ø½kßl#-é×J¿ ÐDJ-¿®Ú®cšØ5­•o ú g²³X]Wµë]Úë‚™ù’ÝB Ï\ÿ¼·ˆêÅ~%£˜¥©+¯µƒ‰¹0ÈÑ Ö÷·Õ„¯1P'±í¹™À_g ÈÒÈdž<®Ü+1²œ'‰©6}_‰¿ú3¤æª0?sÔøÌ,ñïmq΀A‚Là K—ÄÛ>„Mé$¶/“MØÒMÈ< ÇçfòJ ï32´zJ±ËÈ8'1|žØ»X% ±¦`°çÜÎW0¹Ee†Ê좦°ù}±çØD&­ŠfÛØNèþ=½6_ƒl²êŽâáÜæaÍÈLoîImè̇ èïÁ?ƒúxRûúKôz Ý[Ã-Ú~ý¤Utã߃™³2Þð„_ýkz½Ó_C=GÖ&Õ+VT“]—ž;ö¥»¾ú¤v~{ÚX¯ Êqè~_t†¶ö±a²‘À$g½áöLôæt`K«Tœâ®þ)¡ Z@ï+bÁE‚møÊµêwÕ7H­€PÕ’ÃÖ/Ô ª\¬à<ú¾ìõ‹Ý+à†ç«Øt5àœZfF¨6etîãž›FÍ8ô%*KÐ ¦ý=ì…çÀŸùÏ®0@S¼ø€(½—Š×¦ƒ9W:Œçw¬‹b­Ë­'«õ‚É$n>س·&™¯jõµÞ®zß½oýÀ-Ì‹Úy¥ûw—f9cG<ñ°€·½˜­¸I6 •E>¸”öÜT®êw\°}Ϊ [@öÜ”ó„rºîÉê\ `ó7ª•ábZÁì¨H‚”ãK ÞéF‚‹µ»˜ÛQYà¯¿ß xRÊöý~Z •#ôuzXN(ÇKï-é¾ñ®oøó¯¿à,Ýôç}R£œÚClŒV«JKæS`ªBå . þ!e5jÿy_ðó¾àª DéÒá¶ž®–RX€ÊH‡IðÞðó~Ãu¹jŠui©…˜u`ýý÷_ðןÿÕ@XhÀì¡à,Ùs(ÜŒ}Ýp­ðóý€Æ »Ì—³²­Y¶úý å(pÕ þýOx_? Œ#°~-‘ö©n¯ûˆöæÌz¨'=6¯/ßkÞo“rZ¿S+ÃU¥Õ@?µ¶Þ›”¥Ï’^?0Ï5ÔúCºvPÕMî1¦èŠõ/ØT,Ü÷äçhgnÁJt[yÜ@§Ä¸øÆjEÏÞÿi%Y ”Mˆ;¯…B[zw*-Úog~ 3ã'cÆd²—•Aôø}tcuìåa»D$ìðÁæÖî¥L¸|¯ùZÊÁÑ»ÜV¶’‘•¼%RÓ3ï¸Ã]˜xVÜžH%FÙ>=Jæ=kf°#>ŸSt®-nàhåG‰ ÀgæÐŸxù<í?Ÿxïe,½Åã.ó [=Ç»¿ûPƒùë3¶Ü'×}%eº'Bâ–±<§mG&Ö(éÂHÄ6q‡Æ –Aúê¬dêò]müDÚõ}“hK ÒÆ冷1mâÛ˜|H0s¨æ!.gOì1ñA¹Ÿý®Š¸ÂD†”ì”—˜¼º—}ò¼â"\%þŒó<áºx+I]ù®¶~-±ðxJUýDªší½Ùþ+“… â~€53¾uÙÖò¾9A7¦öºB–Ö2jö]óºÑ¬Îó4°ˆ¢F¯_8ÏÅŸEkTŠÇÀ6àâ &{C)Ö œ%P€é€RNBû¾ªƒ¯aÐÒ:í÷×¥2¹ó< (PÀà0y1á(YVÀ\åˆt õ‚ŸŸøëÏoøùùiÌÅó<€ 7*ª„Õ}¾ßµ*Ûlܱ±ªZO‰Ü é³z6À¥Øå¤ (>ÀÓ!òëõ‚ó<àz¿áûû/`¾àëë+0ýqxï÷ "¼è ˜8ÅP"â@º³‹ @5m_ßc½luÝùu´:EuðnkÃì4b»€ý»ºbw §vfù­€zÚ}&s\?³Oàúïú.­˜Š»¯]%"~"Ü5Ö»ð…Gœ@»'pm؇&‰â ¼g-¯±¦ü‹ïGc•aò%2I‡dgA6ˆOƒ é@mAtö ü@¢ŽR€ãÚ‰ûrò¼ßΖl=!l¥Ã™èSríðû‡5’I¬½/òº%ÞûÎ,‚08€)é1ÔOÏm¶çOÿ¾Oa¥©/š}\ç¿›¤Ô•÷0Ø×7ó`ëösU¶@KU'@SEHgcßk±1³ I¸žB0úÏ$8Ž£×Ëf±AæçXEY™µŠK€Ù˜ºµâT€Ä®-U˜„‹Ê UJ!x×j €JGF{r(håÊ Ó2XQ©ßß?ß&éÏ€³ý3½+Ã÷û~®7TÖ[†2½^/A¸„¸Âa„C¡ªvUê­ÆQÒ@7{G’Fàèý ²ná „kWÇиGv†•ªžôe”ɧïÉÍÄŽÖs±\ÀÁøun™ü- ÄØ ¢_¿~Á÷÷ßj¸_Ã@„'Æz«œ +7é¸?›3Æá¯§DbQŸ4P);ÿ S′ K9‡>§ ŠtæºôÁ·3Üq0>ž{œºM1=Vie@uá KjtÞ¤Ñ`,Š!ã^%§ÅTŠ1\üß³ ~o?o ™/ÉŠ¥Á‹†°3ða›O[}j¥Ìª24ÌWÿwê‹‘ŠÑp¢ª€>§Âà!8ŽR•þ§WJ7ì`Ãq¼ŽÆP#,ehZv†ß™/ƒ#¡+Ÿ0Gß# •êÜYZjA¼æ« y»J˜Ûyž­ÒQfFáÏ:"ý«xžÐà²@‰ ÏÊ?Ò"Î7X\‚+†Kº~íP鬖’þL­¶ ¢Y©› ÙKgÖ®e3éæ{VøbK`Ê}–€¾˜PÂæº¦Ì  [L¬öÔÕ~—= |axh²¦k¾‰¯_ØŸxr<±OžØ SnŲˀ O_¼1§P=1%ç5<6ÑwsÓÝ}zd´¦&è÷)r }zÌ å'Ìêsíš»ñ3ïÈx5ïYHÈç`’ÿ[d]ÌSü<Π|pPùÚŸO ˆ§ù'&ÑÿÏÚ»-G’ìØb p$YÝ{¶læIÒ‹þ@Ÿ ÿÿ™Æt$ë® ™èðk¸GdíQõô.™ÌŒðpÖå_ajÍ ‹p¾¯*¯²8Î{­¾Ìzºà^ª¦÷ïå~<îQwipWô+€` éÀÐi½Ð ð)‡5ŠtK/ÞOR*€ˆú¤]-»†u¸á~XŸCWƒ½Ùu哉~^·ø3 géÁ…1¤¡J¸çɳ3†ä¸7ü.kËWŒª;x<g¿kŰžÖ\Kkf-Ù_—ÀÒêšk]æk£°ÀU–rfjljfµÄì,®ÿJgÒ>»ÙÃy¼ÞÙãW•Žn‘p¸·“W %¦ÌR#[.°?ÓÁ¤…Üì[aóÌR" @9|LÜòcã ã¬gL•þ¸I±Ïv,!÷ðïïïˆ1勤H²7goõ#m}‹²)÷×âþL8'ïšÄ°±PQ±Ïª\Ãɨ_³'óýáIi÷÷d>^Çñ„¤ÝÁ²gG ™=ÇqTƒüAYtÕ;çß¹=øüüU|ÌÊð¿˜ÚÛFœG åõø´Þ¥©¯Ê~‹ÌR–Ô^ø4ÚsÛv=þ¹7KͰ‘ &`Û~ªÌFÖ¸ʪ^Ø Ü…åï‰g„_ ‹9@ä0ïÖ]¾;R¿@ܳ¦˜æˆÎÕ¸BÉWý¨ ŸM+gÓ»1µDUßÞ¡êI3Zc‘Åi—)k­ÿ$%. 7½.žÙYj÷87ÈZ"cCöPc—„-1Юœ.Hž*ÈP—'*bàâ1–ßÛˆ‘±¹Ù»’?8nÌ–Ò±d$åM£àF“]I©D¬¢hiÏÆŠ1§;84?ðÅl1µq¹vRJ‰fö:h§ùË|ˆLÏ«&·Æ Œr0BOÌ•[‚9¾<Á½,¢mÕ¦ºAç©c­„kf4=~îüÜ^±j1VªœJ’ý_í5ý™C?1”RHK9¨f ‹T¾—)®Rö2•yXö –Ôd¯1ò®ÌšO÷UÚCàº)µtPtÑiOiÌf)üÿñOw=¨¦ÈÖ=uNÓo%³¢´e]1ªVÀôÕ°âh?I#Æô)>CX2µF6éUc|ebþ*h»2«¿ÔЪmžóx„÷ƒ™ÇÔÀø*ò*kë*Éu†ýn’Ù«{Ó ¨æAYÞ¦6–š¤èiR&ŒþåµÐžÕ$*Ý×N¯ßåçžÿI9A|hµµñš2ßKKúeNý½,ß~æ˜JYZ˜ÓËÙÓS§Í}/ɧ"aÏ…Nê“0r#[nƒ¢z¹¡×,´®©²BC ²ìq¹¢°€qx²zŽú¿.A§YxK»_æúxöºWµ±ŽÉœ @u qX<Ëõ´b¾Â˜\±u1{Æ6Ìi,÷_—©~¬ÛTS÷úÁ¡…Ô>Z†<]^Cåž~G÷$rWU‚ º9ãÈÍѳ¿WÏ$\ÁÿKdÏŸˆâ¹'("uy"Tì’À*àCpÈÞß¾žOcQ8%}ˆ‘³œbŒx{{Cx€õñx;Ý«$;ާùZýøñ)Ùÿ6%“ËV[Ÿ\1ä”RI$¤!¥®Ôbbžg.Ù1ï:1sh›5gÏ.q–Ö˜–é6-¢>þüooüúõÿõ_øüùHÀ¨œß¬VB0‘f!‹ìû^®Kø÷¶vïàñL7StÂ×þÄqÆ^s=Û¿|8Ä£±EÌC+‡X µ˜#¶¶J¸€a%H Ò8ûYVö*5!ùµÌ‰oÅè¾é;íü•â§ìVJùæÂþgvœ#ï9Ùó1ºž¯ÀA¡”&6.`ÍMõ·Š£Y“ˆfÄ-¿©qÜ2[ CÈ=°Æ2¾šÂϦ8³f(Z’{¯­Ô5Ð3p§"5öšÜ´’¨ei3Åñä¿Ù÷ŠQ“S»AØÜŒÜ@1xÅ™¥¥fíç€UtO¢dÆû»y`©K9cô‡Ç?×Jb÷*ÍÿªxÞ|/;fË YÉÓ¼|‹G Å¥S;¹i„geW\M®Î 3—¢KéáÕä{ÅxeB}—ì¶*ügS»¥ïî—V߉ë†+:;Oå¾ÒåçcªGJúÉk\s¢K–ʵô'há$뀼áÏ>/XFY:l>÷s¯½YLt+[yæ\­á±‘)MÐEÚ•3Ì9•d u)ŒJ—`Í¿"1º.¸iiÝí§¢š^fUÌÖê*imå2KŒ#ØÛçãn¿X¥hŽ@ÎL Ü6ÏcÁ?KQmŸësCÓDÆ5ËæuöÝ•Gáú>ïèk²òH¼2ÜÎ?1·rí+·ý,6}ÇÇ&Mü+ãŒõ*ƒèUväì˜=W_¿b%ÍÞÃlP8¦"¶kòN²»ÚóW Ü«{Õ+{ò8€½Y'Û~øt ˜®jµ<˜™}nVìŒ)˜DJàŠ¼—ÊR*‹bÎÂÓà‚û¶B‰ý«Ò= irí%ìŒ?t±fÐM+y¾ªI¤ áÈkÇÿ7<­Ë^³µPil!c–¬Î©Õz¿’ó_¥‰®€®WmÆZl¬=-\Gº~¯Om¼ö<Õ·LÓ ˜q/™ ÝFÀ¬õÈj`í[^ŸÚôvó˜Í‰Üå„Ý* ( ÅÈZ” BØ÷ä5 Èý¤\Lf¤Mn¢ñ2ÀëP }> ðb¡Žˆøuˆ§‹ûºÚ÷’lí‹ìÅã—™x+Ã`SïÄú3ƒ·—]ëõþùÏâ8ìûŽ}ÿjØSýóc©z©0²JÞ0ؤñ«ý´@„:EÆ8|"Ö’‚Çl¿ÆA‚÷ð@Œ@Úá׿ñõëT!†yÂ9ê^Ç8×b!=Ãôlh¯‘â¯ïu>â´qxÇÔZŠlPÛšJ¹‘ð¡‘Ò Ì­Ï±øØÃTÎéÆÐä—?Q_k°ÌU–¯ˆ´Xº7·÷lî\«žÞü"3uÎôŒê©%e ã&ʤ¨žìT’m2ƒ©RÇòFÓ˜€Um;’ÓVo|ÜÀ =EeR8Ÿöœ ޝý˜6ùçìb‡Üjj¤aYU2³iBR³«~ŽzeØõ$E‘ƒæ’¨ÄÎXq¹µ!̾@rÁ°E3ñ{xªá#Ú¡»BdöûIØ’—8Øa»œÈšßÐ:™ z²ˆ‚§­‘M¦HM8Rß!Yò©±ËêÃçxs3$”ê×Lðª¼@Ö€#Ô“ñÓx·MKmäìñ6_g|Ù¼ÔÏá©BHÓCudJµ£‘Qµbp¼òl”Ï>°‹ÚÉrNX´­ A‰ â ]Í9NÍóŸ7¹E±žü’¸7:ÄPM8& GïÅ×AOkv4qoÀ>@NÆã$§F¹û9^.‚îþŸ÷èì7øsd/­†U™ä¸Ú'Ü7aÔ$@­>;ŸCWsçáPÖµ $_ÿ; `µW¯ŠäW¨´83)®#ã{Ö̀Ȍµ3úç üs“Ý>ÿ´€Äª‘??7™>þž«€ƒ³¬@@i®E¥3ù>³úÂmðÏÕõœ…°¼ÊŸ®q>ÿ nnÖZ)Û˜*KEîI…”ÊŸó€&ŽóÂo¥Oí¹ÓWíÛµ©æ¡ÒJ§ÃÄ&ýq\/ÙD]Ù"Uç°ƒi“áLf^5õ\·yr: ªàeÂlNûíXuWÔƒvX«Úµ1«ßN)œ³Ÿ§6Ò/Øê… ꓾¯Î‡õ:”¥÷ /÷E©óÎÕÙs“¯Ç°!A×!×Ra]©-èÆ6Ãéü¼•{gÞàYƒÝSiEóÅò:MšºŠ)àp²„øSœ&(N€È‰{æ'eÆí~Ý8]Édƒ¢0*§{Š=GK§Kb9p4• ›—®yÕ¸A{ˆH ‰ýW ÇnJ Åçó 1F< „€àPŽ •5.â驯/ˆ ŒGxÃöö€&©2Ã,DB‰²Lçð§“Á»€TÁjI$bë/U-%5'âH¯ÞÛ}|{û'>~áóçO*[€ !u8F6‰O+M ì½%Òþ…R˜U¹gLÐn8ljûn×ëׯ_}ž˜'°RNA5ŸYÉu"šûèéÅÊ(ûÌ"&3®œU†ïM@w~Ÿ¬¡ ",Ø‹KhIOÛzÖ{ðPHJž4è,+&ö½[A ÈÃPÖ%‘CQ(¹Ó½-¶…í¨!±›´I=2³w€ƒžì16Z‘)½­TÑô³ya2³›Š›dß÷f‚ÛdV ·¯?ÊA|û.r¦ŠÚ«OaráŸú3„íAÏé}}5Ë2© ¡ÙÎ(%ÀjàK`€\¼é ÑÚ5¸QkóÅàÔÆRèî€aÛlj7k50‘q Ö’ýý¤ñ'Ðíµ¬|ßÚ{bFñaÚÀ¶Í¥JHIÑ¸š¬´Æ|ã!ÖÑMe;ÁyeªMY#Ó[¦ž¯çEÁž?çÌc¦gúç§9H0& ¾Â²zÅ3f] dsvªñë-»Å§–E¨&èJo§ZðÈXÆ.·;“ïb„˜‹ Áä´½o™â»j:Uç Ô’ßø’ܱt¡Q©Ó\2zf×  Iˆá%f˪­…ÂÈÜ©).mÃ3þ‹R¾Iž¼`e]²ñ^d“¬&°ùù¥q³k3QÖ÷¶]g³{72Šg¬ŠÖSjõÛ!ÍÊè¹õ¼×zëi1‚â3yÝmã7LÀyrö®˜™³ë;J¦F€ê¦Â”• : ý”ñÊ8»_“ýuâé¾{¾ô³pvVl¦;Éâ]ƒw*häüÀº†V(½°·ŽÓýQ"~÷™WªWÙh²Hi»2h…ÉÕ@Æu:^óqŠÞ®¯Õ•YGyY€ÅVhÃ`P„—Æ À†ƒù§({[µ¦ì¨‰Él>>Ô&*€Æ ÿ,­¬^h9ÏÌ«v=¥é€‹ˆ < Ê H-yM`(vO2;Pïèîí²•·ûÿøŒ´5ãÝ3wÌÌØ‰¯ìÛWÞ™í€ä  zu¸q÷,]±ã¯ÈgûaÓëX±&/Pƒv^ùŽõB[EÊAF!Æ ptSv÷{bªžÏ§õЉ{J‚#»G 8qé_0ÆìÏI¥•Ä’”ÔÐ.Qóu=\’¨É=»ÈzÂßJz\J Ÿ¿žÝzjƒy€\>´÷.ûVåþ¯Ô1`²ïßw“$¾½of¤’&ø|>û¾@K†´ÆV";2è '8.·’1Ñüµ™Ôý¤½ß’„ãùÄ.;äØAœÈ~&R?‚‡©žÉ•'™‘Ü+ϬmÛŠœ0÷)z9Áçç'¾¾¾ðùü,5jJÉ%‚up0øó™ÒQÀž æ™ärŸ©iªP Mi=[›¨&Œt+ûÝÆ\ƒ3ײJL” ÇÄdÚXå..ýgØUffë¡ e1àÓ>Rè¼Ã¯†Úí?±e(ä‰ažJ…PK#g›]èŠLqÄXµ¢ˆ!§-²!•M\jU qæRåÍ~O†brÓ€Œ².7µgWd9dF?El³)uí M!Áœ7·3[Ä-~DŠ${AwÍÐ>"*¬G`ˆ4ì 5Kf„¯qy°mÁišŒq‰_ÚKdld— ºçÀû¶Ù5æÈ· ÝCKÌŸ|‚¼±hš7|}}AUñööV6¼y|}}-½C,µbîÑ‘=¤IòÊÍÛãñè6¨ÚìåCµ9´@ ]ôLÎh1/½NÊ$Ë'‡-h p‰ºmMôD{öYkâŸvuï³–‹Þ6*·‘Ȧ^¦ÃÅtY»u¯OeI‘º®¦W oKËmA¹ŒþsŽ¢õï!àñþ^ŠÂr}Jd-»ÎZ:3Á¶ˆLE‹}b•åin¾>¹1íz@ò˜Ê´t`kä½ÀaY²öݧ±1'¯ 2& päBy/ßGšs ß²?ÛYãØxpãùу»~2ƒÃ'g:iغAB’R¤M[©¿™]2«+‰I…Ñù×i—ÔѲÛ0„vßÍRÁqí]´mPÇ.Ž×g–´Ô¾Ÿ™ç̯¬€ê ²J„S¼(0KÇm¯ÝŒ yNSí™"£Î‹»üþŽ#]62-ï}γt?§$å×Égp{]ÇAAÛž5\ƒ™!Gê¯kNFÅ™ gE×>4Tèô€N­. h”äë@Ýs TcÙ3CTs/Þ€Æo…Ö÷PöìS“*KsQ-4ú\èö>MMdïkLbïI>{ZÜ»õuŦê ÀáÙ\1ã³”¿ï8RHóûÌCÇÖë²m˜{SýUsÙ³fWy1†dl÷£•?Ñ« {^W’­QbúŠlªÛïéɬùgÞa}&l½8S×›-)÷ç8°ˆQbhilrSÂNúÑzOƒ7.‹!€‚±AÉÍCwf†¶Òiàe³þÑR‚³t#”:hY£Z½Œê3ˆ9CL{ÖY>5’Åö·ÀúȰšõ'«š¬ Å",“6C¨&Ìcº`Æ©•æt{´‡~ù=•…v>ÛV€ÖÝy8ž¹§Kr,ϯL.YΫí~ýº‰v:¦ÌգݟLMT}Ûßm “‚CTÇøè ÈE<‘\ÕÔ!Öà#0Žý°÷#$§*¹êIñüú2+¿ŽõÔà`l ·7Á<¢Ô˜, Â~ìøõù ð%3ß“{Ñq!0 "GF±Ô‡ ô/_Ï/0k鹓ƒ=ƺz@ŒàáÿJö§±¯²O´ª¢Cé«÷jn."ØŸÉ™]8·§r$—î]ß“6?GíÙöc㾬Ç’ÚŽb¥SÉŽMGõ¬b`~bO;ö§XPA`2f«¨1‡$ù>€c(ïKÒQÉ/8 [@:¬¾ ›_¿¦Ç|5Ÿ5¥„çóYå´ HÞG=Ø \MÝm»àÚ?øþcÅg,×S½úÃkï#)GÕ,ˆùg¨„Z‘{x°Ùû¥"‹õ¹³GvB‡4A^Áˆ:ÛÉí„T°±ùÃå4B’ä¡rN`u_¬$ÉÄì+³Û¦FØ vúWäþçsþˆ|JQ Øp`­ ˜™Ÿ‡씼ñ^N-šÛ~¦»¢¦TLPD¯v[ÐÀd“ÑâI~‚€Ðøä4“x—Úëêï9¨åÏ"H\˜³c!0aÛŒ¢È0¶Õ´PüòƒiZj¨ i#gïukÄ<£‰úÌTöZnBSóæ¼A‚9àTh·üÂÓƒ°Í0ñmÉ`Ù¹‰£^¦1™dé¯LK/¤QB‹›k/ƒÙ$è•éØŠæÞå@#ø†ŸO<ÞSFãìw[”^M¬ïŠþ"õÒ3ËS‹ì`m„:Þóó¹É¥Bs†Æ:¥§•yÞ%Œ ÓÓ„òE¿³»¦uež&,¢ìA×K·WÍß5+m|ÞÆÏÑ!F ^Ëà¼:£N¬9ר÷Í}šK &{Îê³Ì¦ÙW&ÛW^F­9~·O ŸÏ0”ךˆ«Tµ‹ïÊ{‰¦Ãã½85<À2ygöý³×žyà]± Ûõy–z_˹ÎàM™«)þ+Ò–6ìÎ_ær/\0TWçÏ«>W¯0w_Éf,ĻöŠ…;3ñ¿ò|5ÍïîŸÕgz«õÞÖ¬w̘»çcüsŸvÉe ·ºŽ-fž9£×OV @´ IDATö2ÉiQt7’+²ŸÝ‚äãzW2¬uèMó#ã6 by}É`Þ ÊPSÍ)>„ÉÞV€É¸Š'-G4Äß 3/Tœ¥…tÉþ])V ¼UM7†XM%ì OÂb2>Ôãk­R W¾š«s`|ÞWɬ3MÿºÃ{ö†±¦ÙÅ'6œbéõ寠Ók“¸6¹}žYŸÕHƒÝGR¤’*ÇØ“"=$Í2?.Œ©7P‡5ïöBåz}îO„øØÀ‘ç×—±@ˆfÔN¡XÒ¨_Cq{kåa’Rñ®z<Þ°ï;>??»ë³?¾>w¼½½•¾2ƒ.e/SÁóùU@švЦËÀJ»¦sþ|>‹¤på˜úÆ -“9J³†ÊIvì» %Fr€3ºA“ í’¶ŸöG‚$ã&I·&X,á8žHɈ*PòÐ.{?;)žÏ£L‰η^_í3Qž •Ësx|>Ê3ÆÜÈb1õ;nˆôoT2äŠ/ ÕÃ8Q^uÏ(µLùRý9èëï7 \ÅîŒEö /”aÇiCÏà ð%{ÓR• ×&¨ ¤¢ØÅ²Á’–‘ñr3éø‘NoÚhœ‚ º†eœ –MAû²+"ÂáúÖì|/"$'êy5÷®ï_ÙécNg.ÿ‚<ÆÙeªê´>˜ˆ¥™Øœ©±Ìp”ÒšlÍ–-bE›r¬&œÄÇLÆäÊ)5xå£/V“-ÖÏ3:êkI$”Ec!¶¨lÓ± 6zñP7*ÉÓ(Pó0*ôâ2ù£Ëdp¾—1FÈóik´‰ •^Y3éÈrº*.ƒcž¨=sB3][övC7o'ôݵ–¹Ù|}ŽrrÃèQ“ÆL+ã™K¡Æ†²McÉ´jCÆ [ˆ®—7zj¦Aϼ=ZfÅ8Y­i[CƒêÓ?q†fë½aצ`‡&/Œí²O˜óä5ø)T% ÕéœT§|áTœÕM³5'Ïž;ó×É›óé YÈ7#$£âêµÁq7Å}¡€_yüÍ)gß[2UP>(›eþM™Õuò¢KY—.×+²‘Ѱ+Ðvžð Ð4O­Ä­\êªA»2æ>Òø-)ר]ëùœkÙ‡ròP’SSÒßÓÁcÒ%À1zö ´‡€›´§Ì¹¨úBJ:7B æq¯ ëÀdEWë 8KÕÏk¦¿ÇæwC›dÌKB‘_çWzEz73e­÷£e+N2ðt”°ŽÏkêöε_Ïz]É„fƒ«ósZe´¯xFŽ)‘#¾y'½ÞhyQß«6)t×`Ó«2Âñû²Ñíé¼.÷ Õ¸wìÆÀJ¾ž;Âöá^WGe)… "¶ ŽR0«Ãdo­}Çßß¿wÌÙ,}Kz %€³´8A¿èÙ‚Pö;·m³>Ê­kZ€¿ë­üš>ŸOì_~þüô×9–{v x‘ƒs™ýeÀWr©Ÿù‚A¡dû÷ñ4¥·æ1ÕLöí}–ºÈ¼½ ë`rÖ£ŸŸêaÀOÁ&Â*™ÀÖØTÒpUM4$s·–F® Ô¤?{ŠÎ™\ 7ÃÖ’f¥ÊÀx/žÓj}1sÿ• *[e¦F“u­·}Ó, Ë%ƒYMD&!ÏL8»eR?d¨Œ-=ÙÖ”º½ß°8;-ž‹ô¬™áyÃ3ôÚè:“¸1³#žŒ–ù¿*ÈÇ)åj¢Æ.‡é§Òeë8±_y„Ý ÖªÛ̦~€¥”M TŒöìfe¿+“V)‰£•&M#C l2>e§]ˆ^Lí‰ÕÝŒ}š…ÃnŒ55°`…~*0LçZ f”ä̤ ãTcÕ@^5Žmüé\"EIJMv­}í{× dj¥b³ä©Q5»V—þ^â—Lª—ŽÝQø[F$ŸŠ+ÿ€QBpF»kèéú>šY∼ê6 ó÷ýZÒV³ßœ¾On™&«„™*™ªLº;°`F›'Žù™mÍy©a°uhéww×îj®RfsÃÖÇ”ëËÌžÙž}Ådšú· ^«‰o[ÀŽïUéf-Ã’ˆJQ1kÜ—í¶ãfûc½‹ô¤ØT¯¦:ªNŒÖ›óð |‡H¯sãpà*ýRå¹nàæ ßàvÅž«¿g½7·Ö5³'pü««”ß«äÅQâÛJ2ïü¬V,ÌY“|u¦¬«{v•"|Å6{•ñu•4ùê`ÕXß3†ùöy¼K¡¼jèW)„W¬™qŸë›ŽÉÏ»·‹ m© bµ[öÖ~Ó&Ü2‰¥¤óï9•ôÚÖ‚tË{_†å÷ƒhöwq¶+ª$‡ÕÏìu¸d/™c8¿xêåÚÖ#ÛnÅÊêŸù³uwö\ía¿sFÌ®W~P3߬ñ¬él$œÖùvÒ¯WÞnpoM; •Kœ*Ôɾƞ¯'¶Û¬Ž9÷Q•ù$¢Hr˜—•‹*ÄèÞD ‰+€("nÀ»ûþJ ³eúuìx~øÚŸ ŠH"8$÷¾Á #ŠCvÈQµS²º'¨¸õ@aƒ6¾Rm½CDØg9׎´ãH{ßÃdÚ)mN†ÐÎê ׯEÑÑHâkoccâ×ßw<ŸOüúõË{œÔõ¯IÅZ-€µ_.Q§:ÌgKMÏÃWÑìáe‡¼ÛÀžX›À°T€È –ÑGš,`*ÉtÄÞkäÀ#5…“Û—HJ  Üÿ§<¦Î²Fø(ƒ¬ê©W¶Ka66L·vÀR}*y7âp¹o·)¸] Á ¯@,7©^zó eÿ*BZáœÆ×½¯Öãêâï®ï§t@`uáÒÈUf¨…‰).¨g1œØ–=[¼efµýN6óî@ê ~cd:ÒËkü Ô™+Éáj°r÷;®Ðݹ@«Už¿¿3d›½ßÕpöwDä’Îö5ç#³swçì[-&ÝÙ7¨zت÷®ê²§3Pf~VêÍ<{ßf3vìx:#KÁؾ=Þ±mBØ ¢xæT>7_{BàŸøõùÅ€70IŜ†o|~î1âñfA^‘=-JÅÊGൢûèæÁøÏ¯_x{{Ããñnà˜Ô³üù|âýý%KÎ{>¥€*ùߘûE·:Hþìª*° ’{aå¾"ßïã8LºøõÕûWóùÙJ)™ÄÏÁšÖDþ-û}DÞó±íÉÞ³õ‰|!zºw¤$hÊv@Z”µ?ñ³MÅÍËŤƒ&õ²×G(RQqØII¡n®ß‘FÔ<Щ“žfV7ˆÍë«ÔǺ 4ÑŽµ„é 8ø9¤4îbÒ\sgQQªƒ3¦Sêg~n•,ö^9d…hFöàCI'Ìgd}F[¶è˜úª%ð¤„J!êEl½ýX*…ò¹ÐòÄÖ²‘dä0/nÁ&}pd^[-ýpôé+Z›æŽ†°çC$#…\™UùSPf<¹¯¤›Ò)˜¤ñˆrÝ(S1ÞÑ’ª˜éúc’Ñ#2…’Cp“xûý1rÑðš÷UƒN³æ/Öz(̋ǑÁ0kV:sÃÁ |íír.RW^:]3',Š‘Ÿ>³T’Y£<ú½´gëӽ߯ÐýêоÃ^ùþ{kø¾|ÿE猫ñÙ˜¥áÜ±ÂÆçÃX>M¯ ès°í\KcÚôµWRmªïÕµhüß3©ö~¦$ÓûöJªX¿.F/gfµRIñÙúϵóü–?¦îôÂú½·ÏÖŠÁ4JÕæ>3çÁBù,ÉŠ9qu¾´“¶™DpÉ,XL¨W2ŽW=†îØ"+É+æÍ¯ø ìobÀ‡Fü¼¾Ó¼€c‘²6ûï¼Z³Og¦¼§kútóé0oŲ=îî]k®ÀïÏ|]È-`5‚¡³uûŠy* Ùô™ÅvÍ€›IºçÞnmóOf k솱ž%3¬6¦zßà÷#{b‘–:Ú~qktyqœÖ7¿3€:Nc½ =¬[v Ì1)KB‚“†÷DÖP"5ï+¸ÏW@+Ó]Õ ÿjz( §aO{f̘³•Ð4*Æõ5>ßWgøôöu‘tbH¶=Ü8`P½ff¯ÎšwÇ}¡e°ÎXɳúºõ¯l?X܃*G:ð<ó©REÜ"Þ?¾áííâÃïžÏ„Ï/O& &á{ÿxàíÛŸú Ç!xî ‡dÖ˜ƒÍÄñ£3 /Œ³¿ J%ª¯·Þÿx/àÒ××Hl‰´!n°þƒ’ìH­¿š £—nK§|bʼ*û@U’kW§­M|Kì fF‚–émÇPñI+M6 ~sëªVO«ªH R™R‚2uÞ±ph×ά¥†q9€Õµ´ì48Bä|°9Ó 9V²aL¸)qƒú»n¤fäld@Á¶9m“jC«(Ì«ŽÅ†0³Ó¹I\[­»M¸Ýè9Ì£gúïì^­ŠûvaµßÛTCr)C\4Ì5šöÄÊ…’š9™H)–É?êiuHázÍ[ÆHêÖÓ-Õ}ÂªÒÆ8uOï‘pÙŽ(WR;IÄÌ–™ÁN!ØT!O7D¡<ì2ïPNEžtfþ+°meb:þ>ΟsvójÕ …—m´š ¶…W¿pÍøÈÒí³{OCƒ¢Eu­±w[‰Ä¿ ¿®Ìcgƒ…™ôcÆð¸“!µ&îË÷’“«ºúXŒËÀóJ3{ ê)U©¦sÁt $éã}Èçg/&ô´ZxKÃâׄH ;º´ŠI.MÿŽˆ áš™A †Àë!ß×JC—¥Ìld€O¬Ž1¨é\ãËõ0¼¸ñŸ ôeúœ¾Ĭ Äñ^¿2¹b÷®||ÆáÊ”ü>±Y'àÞ ¿ Ü,kOµµQÏPÉ04OžžQ¹ÖNùÓMª§ûf­Ñ¢{gÈàArjJZv{ûyNÞRh<:Ï ¨ù9¡Ý9ú ÀUT¨’ð+–3¡÷Àʾ¸µFñ$c %&¾®·5{ñUYq»Nb{mœYæ¡v¨Ö¥C}›MæQ•¯sfìÎ՟͹§Ì¨&¹°Î1ø³ùÿ ò}Í˾=|÷Lêiß]Ç…÷UÙ{.jcUóÑéè˜î…”Õ6]Íä¾I)ÛiM ÇBv0¶ÒÃÓ A@ŒlÛˆ>Ÿ;¾¾¾ð|>ž{²ï?$µÔBŽ €mû@JŸî5ňaCØbIþ~{{¦Õq€šázˆ¡;ãìu Çß¾}ÃûûÛ¶áÀ¼½½•~ìùüÄ¿~௿þ __;bôäQâü˜„Pãf M£Ø€´%¡8ËŸÏgƒh1xÏRDH¥ÿ:ú¾ÿxWöé"RšBÓß;€ÜÏJÅLĉͧ8Œ1W<–óÚMnóѬÿ”phc½ÓÎ)¯3˜Ì!—f€ß©L&ÃñÞ-ó´ÈU&©¬­œŒy)ÐS²jyžçìû„qµFá¼~&KkäÌt#2·Û†¼+óáÎ)ƒîÐ1]Cg³`D"ë™èÁu2„ã´:ñtøKlþÞ±€ÒÇ4×ÝBžDTÉ¡kf¨ÜÊ÷"1k‰ó¥`faÄŒÖt¼eY‰ˆ`nœD@)Ù)Ò­¶ÇÛI*UQ}C[Wo¯î3åÒ?™Ù©é€Øx9ý¡i8•uÞp…ÊžZ5ì×¶mžhèÒC Jà‹ƒQ‘LSbè|®¦53#5‘í-à”å}m‚Ä=9_snBÙàkS–7‡~7Ʀ²ñØeï¦x3ç1åJ2‘Dº¤Å:ÉÐ.n~5 –ìŠÌ¶™†3¦É ø°ká×ÕȰ-þÇÔ™;–HŸ´hÁY &"VX ‰wì;ãíË”Õò7“OV”ø J)l̲cÍ$¥x§ò_Õ ¸ëË^çÉ\^§-³"#ÿÚhÞÃòsVéÝXV`¢Ä2hÐ¥X4DŽßMzÏ dÂhž?÷ X7_4šïwàˆi÷´â‘‚ø 9B»fGáŠm1®Z°ÊV‰”ç"Þ0m¨Ç$Y3‰äìÚÎ&ä-S5G·)5íï>Žô`F ®êÌ÷¦óZo.βÙI£ˆ³®ÒQû.S€pÅl¥"WL¨™ÍLZ5zÎÏr[´ŒªñùiÁ˜n=)nʯRö*Mž›B±•%7 åûLòlæ¨ÏgºÜ÷~GJ;ôÜya½28Y}mæ;³f²éÉ“†ˆ‰E¿..Áë›ë4cpÍŒ¶WlÜ«ÔYL¶ýgUŒ>@ã3Õ6ñ9ý‹² UïŠÑWåZ“¹ÊûK€Ækn6^OY£Ð5Æhw,å¤)4L–ì³âf#1¶«LÏ0{æ†5Nî9«@ˆŒlO)™Nò3¨‘š€Ë ø žî:j¤\ pÈ2•T ¶7¾pI>˜"ÿ¹9Úóùw|þVzWlåñk9-nÆÐ¾«;Ú:mµ¿©j1÷žÙ»‘eÛhZŒ?g@îèy)Ëg4Ï©N —L€A ‚RF²(2OŸÕ×fY"Òz™‘¶Ù§Øó³'Å.‚#%„°!ÆBØ ÄøùYet!¾ãs? ˜z||@Á! ÏCA” *PÄÇ›-#U‡ŸY@º::„`kÊû¨¼®>ïøøøÀ?þñüãßþÀ·oß°½E|||àãã Ì__¿p"‡².9“\RøãÇwüý÷ßøë¯¿ðãÇO<¿Œ½•ûÖQé3J³%9¤.g,¾Y  eg¯ ¸Ú×ÍZµöŽ«{6EòAœ§2å\ŸÛy*Žc°òœexèÙS¿!0ð<°³LµìÁþýp´}1%3„Ï‚ Å!Ú$ò9°«©aTkýUj²> šÜ·Ði àIƒì³ÅaXÛ3§u‚Ïäú9 z¼!ýÿûÿ¦£Œ¨m¸ „ؽ"Gé$9ç 2߇3œŒD¾€ ˜Qg3™9]ÙˆRÃ2µ´À$x&Ø}ª,"xs¤¹FüöþùPâ0NaÔ)?ÜQ«uó*D.SO’¾ ÍÆšiŽ€ÒŽF[oÜÆÁ’J$s¬EEN†à³—L ú͘9mA4£ð¶ ¨Q^9n>c„wnŠffëíÏåÔñ=%( :MëknÄiJ”uÞ9v,ô²a½VaÉš±5OÞJ-cO’v`$R¾âÒôr[Wr¡Ùæ26R¢ç€û‹qƒÂ"^Û B ÝýSʇÞ ŒÀ~ànöïãñÀÛã*(žnJ@à­3ß]ãÒPe,|A…˜šéNÞØs⤥é`ÃÜ3¬fÍâjâÝÝÕ3!{ÖF‘_ÎLXZÃ× 0Ðün«måÚçIÓ -ÒpÐM¾êkñiŸ8†&GËZ¡]>§>¡£[saè%÷ ÀÞªØzk ©Óõ#]2/ÆiL‘,’Åe‚g šÜ½ïÐH¸Û{Õ¾Þ«rˆ]ýïeE³f6{!¬öü¹V Y®ÈRúg>ƒuBš¯I;1½gòëÇÞ1Öòô«?ÖkÔžéTîe{Ö´2’Uã֦άvø0c,õ ÑÜÃiÞ˜I‰Üž‚¤Påûµ"S Yo»04fHæÅã&´íŸ‹´©$’xjmz)ݲOí“eã;kDïXë”´W™+öíŒ9ÒÌ;£kåÇszކß5þüȆnÏÿÙ$ð³(D(Ø“¥7„ø‡ "ᦠàŽ˜ì¿ Élh²"ðf ,…·X~wñmŸÑ+d§óà¨ì©S÷õŒâ!Nr4 ÉaÌz=µ„2•ݘr@Ó•M_Vëëá=Gfa$“A}Ðv”ž!×be¯Ñ%~6¶æÈ5ɰ«ø."¼äC5cúµ½ÜØãµ5ç8¼~…}YúC\ï?û¾{=.S5—Æ›JRõXÏ¿·ýL𤠸UI®ÖNšNÖ¡Ù#I Ö•­u8 ¤ª8>>ðþþÀÛÛ|ýü¯_?˜ñ?ìï-„m·çÖ€´°µ~|ÿ‰ÿü¿ÿ>??ñãû/|=a&üý÷ßøüõ«»gÇ. XS­ŸŸ¿:3ø’2èë2É^®éq`mÁoéc˜‚=Ç‘âfÍÄŠ¶Èt°aP0ëä^Ôíº<÷Ô8II—rÿ|¯lPíÞ\ÊËgÜîûn½Uèk— "ÇÇ!e±^Âk:Š­P»¿0ô”ZœëÉ|BðZ†õÍàŒc´ïORTiµ‡²ºJé1 Så*q²‡YþZ’sê.†uJ *äXM_ÄŒ·7®m|íëGðãÐoNd°’O$¤kjÄMÜ{ŤHîLo)…â>RÙHOz¯ ÑIbXõÊ’;‡‘A E‚ÇA$ý«&ìš´¤Ö†Eº—ããY@ybÍ0˰IµÄgPÍŠËÊfí×z ŒÖç+а÷ÍšL¿â™‘ÒqúúÊwh,ÇF`V®L”óëÍRÁŸgáðk‘?³¤:9€¨­³N_ÝKdÒŒô4⹜ "ÊT¼·fׯ4]4ñu‚Ñ]q¼’TÔ}îCFƒåhÈ_»’i´JJ­_“5ù= ÝëÂ90 ø«º¦ªOõË"Åû£N+´0ÁºfÞ'ªUKÝNáÖŒ‡Y6®Þ?$5.u,Ñkÿ0Nî[ÆÕJâÕ²Îfk¥¬Y½—ÛèUÕ‚¹Öðò”Ñp'Ó@¿Ûz¢1|ï%“©¡õ.ê±óþS%'˜‚à#C‡‹Bž ×ÏWžS>ƒÃ£ÔóίêN*ØúŸ®«T³Óï]2OrÐ Üìþ’Õúµkÿ%jöƒ3#E:`HÈ\y…‡1†',ß«ë3z´¬’+¯˜0ý×_g#e vô,íó9“)^½ï Ìmaº¶Î Çù¤#X(¯%TÞ±¨çÏŠ¾ !”K6ÊJÆ?£VàñÝ™r'³\Ðs†½$îjˆ ùØ TèÙ r’°‚ô<œ«ûz˸÷ç)‹kd4· [f²ÑmÃüµ&¸¿Í£•@Å>@)AÄE{žŠj'ä×Úá4.fÜ(SŸLH•ñÜ^‹^Vª¦Æç IDAT¨õµÝþ“a§ÌA9“„ì¼Ò?w„Ên5 »²AS lR—sUÕ‰=—Üîg:>GÒ±°ûdn Ÿþ^*çjÍÎί•‡Ö=ö·Ör=¬©½Ì¼Ö5b±ü4]'®RÉ[õÉÈôíÁOÉrP&ÖªCL(A#wQ-r==.?¯ €>¿žPn›w”Ú˜‰ÃI IG²†üØ“^ÄØÅ$~»Ç‘p Ï#•§Å ß#"Ÿ<‘žµ“=„ó÷Äñöö†üñÞßßññö°$>û鯿¾@´¤Qq|=ñËMÓã‰mÛ,lL‡8¾ž&ã#àýŸÿüÿ÷ÿÁçç'h'¼<ÀáÌøõëWy/í³Ý7G ëxtLûÞÞã¥î«ì*ï™Jý`ÃB[ožûýì,gP!u¿gß÷3«¯Y_!l—ný|¹¿0–T&kpÜœŒ¡ÓZ4‡Ü8eôZ÷9Sždšæ9††êˆcÿò=7ðH5Õ0jùƒ£(b c}¡¯ß¹Xü¸2 ”¹«/[O¶ºõ}OyÞY›0ÚÛÇøx/‹«h'“±ã8:@¥<<0ÖT‹úu^+Í ¬†ZÌ›I mËR¢>툆÷ëÙÈBØIÈþ“ì"q=DjqÎÁ4¯Ý†ÏR¶Ñx/æ!väà)åA̲îìàÏ\Ö#çdŠ`f÷™ê£1É4¥òÙf“’1}æ*ª}Ö Þ_ã?3“ïHÕœ3ºßʈvœ>¶_ßš†¦Ÿ…âoКZ˜8Äò ­• ¶ôs+$ÖFÄ­þt}µ·IžJW Ñ]ƒ13Ïo%4õ^ðTÂ8FÕ×MˆæHFÌÉi¯ÐKÃàòÚÃû$ÐpOйž©sêjÞÞ159‘¥Öû#Ø+³UñöªÏÑ]×X]1f.nÝõ:3…~ÏkiÖ”Íãi«\G“ûÂ’=yšÉ^ÙÿÙ†@ԧݺ' §÷h€¾Nå £¤zímRφóseú®I¦Ò»Uãy’âÞø¶MåÏè=>²ïÌt¯hX^åùÉ 'i“"ËK©\žÎ­öª6õå4lȪ! myã¾ð@ZퟭG\öʸJÙº“2[³–yÒ]3vrû¤p9ó´øThç6ƒymƒ¾J²\ç¯:¿^ÝÉ ¯$x¯š¤ß%˜­þn¬9.ýxnšý«saÖ,¯^k&iºK5í}íôÀí°r åic×gë³ üN×Éüj, úšì äÍë¦`1·±×—€ò´Æ˜^_{þ2c{öÜÝ%æå÷fÍ|sö*Î>0F@pù˜B i¼ ›*§×âìéK×€>õk2—ËëuJ—ûÝÈl^Õò³¡ê  þÝdç‘Av®_›AUÛßü:FêXµZä÷O¦CGö€¬ˆÝÛ m››p«øÕH¥IL)ÀbA?âæÿfm£HÉ ñ±­JÿÒH÷}7õ‡â#õµÐÏr¶€9Bž{•NåÏ΄°½Ùë_Å ª¦œÓioIÚŸÏâò<Žàꙵ?SÇVϬ¹§›¿¿½møú²ßc\õð|>¡ªøöç†GÜðíýr$|}}A“ÉÒ>>>Ê÷æ°áv½eæ˜á„$Ùq¤Ê¢+ !±^AºþËk0O%³9ö𦯖FieJ_ y††ç˜2?®Íä LkSë ³=ê÷B)ªª $>õZ­'ó(­ëk)Ûãì9¢I…Ø!ÙKïîUÏ%{•z+×—€s;Ú+;æ*Ó…¿1Ñ&$&)ŠŒÜ—Ì«nÈ8e®Ÿkñ8I<4Ç«ƒw¤_×&º; ñýIN))â(d n@¬sSÒ¾‡ìFY²…ý9D*Þ¡+5:¼LMØÀ+f*SOóð°éKlQM5cd7B3C÷1jÜš@<lJS¤’¡y…¾Bx©ÞK2ÐôÂ¥‘é]átG™oe£.u@F0l”Θ.+‹Y“7zP~Úq–‡¢™œÌ|fZO­Õ¸ö$©×0OrøJêÓ*yépœ½F¹7K²åjá  Óñy“_‹ËÑ<||o9…ƒJ\ìUØŒ ‘ò±Xé}øÔ5ýsßUJÖlíÏRIï ¼Uó\ßëŠY#×`æ)7ç0‚»ˆù¬¢kÉ hz Î̯µïEöX(øJ>L!ö9褭·ÃM. õÍ Øq´ò©Y­wÑû”Á+ Ê/¢¯üsé5rÓô_5õ+vb·öõð îgõ5®'ð3@;¤™¥`õûþö5 E:ÎìY?íc ‡ec™ÿ¿}FÜÄÛë½K,»b N夓ë?;FvûìÙ›?ô1ötô0 yÅýj(7²]¯®á Ð{µÑ¿Ø®Îî+Ú™!0ì/“aUÿ9Gfûðœ¡Ö48]C¯uO ¦\&ÀÖ諺wÌ`àÍËê¬ïççÐdæÒï§k{èœÀêÂhl€+2W]•ìÙ4|^ÿ>¥OÿÙº}”DŤ°r˜D¤Ì’Ñ'öT‡ê¢Šg:pâïß@´Àn¼®ÆÒÊ\…\cÁ1àHÉXN­úZ5Ê–\7Bw–Šô¾¥ïïï]ZŒÇéxº©º&ß. z¤2´Î½éqˆc¤UëqÄ?ÿùOÄñŸÿùŸHNÊx{{3f–×I¹OË’Á¶ö/ÆðéèXY­çñlh}’ÁÃ}<‰@J¸3Üc;ÏÓMJÊ‘Êï6¦Qü6Ú¼t=2éH »Š–+›„çóyúÞž "'öY}V-¬$%0!«à²Ÿ©IÜâÓÖË&4¬ †®å,ñúä$›î{÷`’LßËóMã÷½>Àê6ú})ÓŨb³Æþý=v©}A:9`¼™Òn@cÑÅ^Ôñìƒ $1àdaêúVCȽ¡š×Ùl,ÓŸ$OS=U­M ôi»¬&4®%±‰Üέàï)7Ó‚í0ȆßYf(–滋÷,æ–]vþYÊ¯Š©ÕB™«)ø*™k V1éW´çê±r”ë×2C$¡€ƒ«‰Œmž†úªÌ#ÂÛxÙ`ë¼ SØòó*Kæ*þze;“×¹dp5*(xÒE!E'p¯[wÔ?{ *^Óû&-Û‘oäG=Åsî«ÊEæÜ„4ÿ}f¶dƒšŠaÞÌ ÛÆ¦Ý«tL¤ÿÞ¼¬§hZü—§ÀU-ÐŽîºò± “5ÓJ<²yålò“%ƒg@µoÜÇ m™xBI‡›0phŸ‘–%&MA_°fÄÞ}=Êñ˨ï@9}^•®!Qí™uß”©lŒþ]Éá,Ͻ*²V“¼ˆ5ÌïXg¯&ºd­Ùó/tý]R˜BVßððyeñ™ô”Â:»Æ«˜ø¼¬B ‹Ïª§Æ}ÎDXË›ÏR%ž!gíö}äï Sðè•ΊEµ:W®¢Ù0`2‹Ã5u5 (ß/z)ë\­Ëÿ.ÈûÊóu7ä{õ=¼ž®ÞSÞƒFÆUÝèòùž1lfçê|0WkRºý|3Ê›—#Á¼xÆ"?ß/²ê–,8Ô0“–)Þ}>g,kf‰¹hE›z¨KK§z¾)‰êóÚt»Ò¬µ_ëXÒ7'Èo§V_wÏÒŠ]ü*Ûq”ÞyÙ­X¢+ÿÈѸ}:]%Ê^-³UqDÊ’¦ZÿrQÙPÎ>÷½øê¦t˜r2`5ãá¦Õäï}OµŸ  C„²yÐûnÿ&Áãñ… ¼mØXAœpì$…PÂñ<uÚ`í¾­Y6]{“,*8žG×ûr¨5{fXí<’5(R¬X TÓüd¾i ‚æ0±|žŽ˜y;á&à01ÕgÊ_/—¥ !Or-;2%DJÎÜËušMASºhK˜¨ÄŒ³ý‹ªk6M(SRœ$ÚÍ)§ãTÊf5…5ÐLGÙ›SVt‘Õ!Tà ɓ~Bë?goÏñ"#ccIÍÜ9G7ü=úï) vã2÷oÉi­9™ÉÍÀL½¹Ñejæòö:„m#l[ôM…Y–g[dçÏ4ÒÂÛ¿Ÿü¼H2´ˆ+yÅu S» Z/´Ð3%ùá×Ílò:~ÖœZ¸ŠÀ-Ç cfQݱfïo”ZµVû}!ð%ýzl¨Æçhö\µL¥YÔ2óŽ$·ELkÜ<^7u,¼®Pp/¹ ŒŽ=â^,kÊŒÞ<õ–i§2½'\/a•àYMøFsÿ«¦úJ’2~–«ÆíîyüÝ©êl2¹NÈÔîYž±4òs3|w¾Ö{îŽE8‹`ïÖÜ´£õó¢XG\ɉÆõ·J{å>¶ž"ãú^ù þwÿ¹šF¿&™Z7ݵ \2¨Âd0s–lÙ2@»>t±fVûUnJˆW _ÿþ®€à;6N DÝ5O' —p™v/{¼gýÝLwàÑʨ~un½Â¤™YÅäó­ÒÕ®d½ãùxçÙ5»&+øÕ~{õ™g̹«5Ò§Üòò½Û^"ó3GiúùÏïY±¼Ã>0[_©a"‡xŸÁÖÏÁŸ¶6ôúg\yíÌ*hž¯éyE˜NØWLãóXÛš8'˜yB]Û•÷…`»¤ßü~UT«µ°÷«'«“ÓhÆŸeÁšá}WW®ˆò÷ÏšïW¦ƒ«©Ï äÑ¥\ïìáp6iœCöFÙX~Ö1j7K,´~vÀ´à¦ºh¦kJÆøà̱LÖ #ÿ’™ì±¬ŽÅ°p^d¬MñïŠây1濾ً+³$ÿ}[w´ôà<1¯,$)?$cŒH’ýåÐQýCëå ˜F¢løuR×G6]Ïïmnü¯Ë ˆìçG—6ÞyrJ1ãž·ï¯Gêk´÷¹éjÛ|•U7K7™GÕ\ {³e:×L ôú¤c—×sÒÞøÏ‡Ë¢µ2ˆz D@Þ£Z–RÿþCVL¬|ß´„ ŒÛéû™È[ ùð<M«±0_‚L+À•™—Óòöy»3ª^ù`­XœW×W ­Þs©gTÍ‘£ ³8¯n˜ ³FdR¤ÐÛ‰,=øä‰ÖU>ðQŒ WΘ&wL)1So8ÖKÀ¿Jnõ’Ý@˜Šž„+?;¢{0wְެªë ‰5ô¯z߬jˆq ¯ê•éôªþX51WÈQ®:2BfÌåP¼þºbôvÌž€–»ö kÁˤX¥wIpcÈ-V­ÞôI„Õ;YÂM…¶ä ípbä9úŠ™_€¢§ðš¦±Öù•ϲl(¯UQÂTÌCËýgõS¨éh%t¤žÊ苎Ê^3f'׳kZ‚; 1ß²¨~¿üÜ1‘gëð Pn¥5Êu/ r-Èú'‹P¥dð³†hð¿ÌžeZ<ÚzÃúû7%Å!ß2GóA"†J½NI\)Ĭ1'"lTý†>Ÿ–Ò™Áñ·„-âßÀ1˜QvR|}=ñýç' ŸHÌ °!>Ì«JÂãñ"0áóù…”éë@JZTLÌ|®×X!zà€…Š÷m~v³üƒæW9â ïë»þ¥7·ûööþUÅçç'ŽãÀÇÛé8ðëÇHfhªà#>ÞxDÈÁÝUOn,ÿ|>ñóçOüøñ___½w¯f,ÃúÈ!>ÄÌÞ”jdvÕ”…¢ XmÏË¡DÕªC Ø“h̼?[eŸcQp.ÛÁMûó{ËÏv6aO lGš ´sU?˜–gÓ“_9«J€"O-ÞÙÈ ›y€r~…¥]’B’–`‹·½ÒÚ­Š%B¹V ÙÆU9x~¤À¾7‚rvÔžãY¶­ r`Ø.FBŒÁ1-òišXj¨ 0ÏÂÖšÕ3qÍ*ÐndŠ–‚3ßžt<ý[ƒ=ÁRä|ƒxc$M  ¹Ç‘Êb ‘Ì\:/4O]ŒÆÐ\ÁAÍ~1%¼{7ðLš˜îŒ°Š`ó63¹äHÉÓÐÐÞ\é9š5¹ÉŸým•ùÄ !VÒ›?†¡ï®5„`é(CÊŸ½¯ù4²‚9z2IoˆìÑt7¡ý¯ÆF}dâL”oŠÎöµGiÂÊË!U¿-ݦÖJðJÌêpp·_ïˆþzïùú§äï7§ lÃ,qäØ7ªù¡¾bkŒà™„`”øè8¡jÿ+"xÛSSØüµÜ`²ÕÂlR0sØ\nV¹MËIMÃÅÄ¿Õèô”P*“é”rÁk'ó¢‡ä÷¿wô¿ª`ùzʽ2EŸs€³€¡ §• rP›t›Ù)rég&Ò?ó]*a®ºlŒJMÑÖîÇ.K¥Lõ/@÷»”³cl1çœét :“ÍfÁ³•Yû,Ç\ò»¯~X5É­ rÖ@ßXwixyBͧ@&rñ5@=ñãÇOüüü…ä5ðû·?,ñ üõ’À®äf†©°ƒÚ¾©~ÖógÞ÷?þÄãñÀ#ÄÒ3îûŽGܺ:’¯»bÞîÿìû^¨oß¾AR§×Xß¾}+ÃîÏÏOìûŽ÷÷w|}}àêÇŸ%0„P=DU:&fËÈR4=žôg€—¦$ïÕE¡Ó(ÆDÌÁ þÝÚ_©‚U!àp[anÁ«¤æ¯åæäH‡D@P°( ÒÓ¤¢ùëÑþ«±Œ¿ÊÚ¥Rऌ°zdC5\I=û[ <7#y$‡¸­†)Ùl]C€$¾ÏE³AÑÁÂLVH~lú¶ï ›(l$ŠœP¾g$#“Sz|ÙeB¾_s å:ŽoƒEDÙÊþÀúXÅÈ’&…Õ$¢Õ¾^\^@R(q)sÀ¶ECïò‚ÓRG¤Ý8PSxx Øþùí£\”šô?‹Ô¬•^Ç©íͺb®úþ€Vè¡{ÝòSHÌŠˆb·ÙΦƫt3fFäPбlÀ×¾þáñœ8¦j׋‰±m!PÑuMŒ±ÐS{žvàj÷sž˜R μåÏ•ÄC›@ƒÐ$À8—ù¤äßyT L,Â×®7÷¬ªc7m6òô¬—ßBÒa´êPŒÃ¥LpÇç(Æ0mzêd<¸‰6ÊH§®†ørb€Œæ¤™‰Z€2BÇ\³u×&I×Dû\2ékôÒG-³¦Â‰‚n›êå›ÖUªŠ´¦ö佺x":±ÇDµ&}º—ø¨-±”dydpt² =ûþµB»w¶ûN5Æe½’Ü-=¦À‹þF:á*q4Ún%Þ+@jŒ•Ÿ5}ý×éRÈì{§Ž2ŒÔ¼çTžÁqsÆÉK®eziaG´,lUÅñü:y¶ÒØ”´ÈþûÏÁƒ‡šì˜Wïó5()"EFŸ‹|nÏØ åµ½(‡^7…'Ày@L@Ô+‰Ü,ØäÌãò|_Õ }2ñÀDlB#œã5zµäÚ²ú8¤TÙüFn÷–$ qÿ‹jÌ€2hV$‚YÊ §êü÷ÇJÆþ@Iâ-“$÷Õ™½ýçKC Y›æ;þžCbúõÝžg+†âЮîˆôI’­"ÂAÊêa9¯iϽiN+öÌÇicV¾(èV)YíD2?ƒµx½fñ\1äÆo\³íÚœý¹ý™YºgÉîä%×ÑØ=к–£ÎØ”WòÕYÃFééøOY4>ÛáZ²¤\$cãÝ2¿']¯›, rËòx…y³b1•u$kéð H¸ó<œ­Ó+¦X_æÓìWÉWØa-@Ô…Sy°j—p¶šàID³à€;£ð«52^˜£r¶V× ­«4Ó3èŠF% úæÞdp¶–Æë0»îwR¥Ùùt÷>~÷¹ï!õm¶¶V¤•$êάcDãÚûðÕ5{Z—)]}× ½Ë5­£T#ª¸—ô5†×2˜ Ï€ºrnz° ÆïŸ„µR¼;#~L@N‰‚= ¥bi•Ô˜¾S/Ì&`%‘±?¿¯}éè’‰·òÛ\ @Võ÷ŒÁ´b¯]1ÛþaVCß…P¼Ê(_]—±VŸ©=V Þ™:`g¥EJY†f ¥0ym’ HI |Jâ`•%2‘Ùß…D IDAT˜(¹’âP€°¡!> îïTÏ)kÿjª‚¦Gޱ hò`'UÛöÍÙ^ ïïïxwI¯”º-ƈ?þøÿüç?ñç ¥„ýóË¥|F Hûs9h}$÷È3  îKíÙHøüzbO¶í ÏÏOüúñß¿ǯ_Ÿøûï¿Ò~™|0ƒkEÉUH+Ò÷>M?PÀiT‰Û èïl$¨÷+_/hUH;Ôl}²dÓjXIj,QQgšzº¤˜•±;Éty½²}¯0ŽF­Â^gÛu¥¼ „HS€‰â 4áíP– Œ*gbO‚¨±JõÈL²„€P”e!1Àö_%‚@b-áyªTÉJš+<Ƥ—ðA´*`Érnq¹¢‘—ˆ‘¹H‰BïMÆŒààUÛ÷Ûý¬67ãßµ5a4§&]ÈÍæl£fÄÈ8ާÅgÃÞæ± Žd¶ãVÈÝûáÔ:q,_pÜ:†âYä7Òó´”Y!†àÓ^›¶Å`@«Ý¨¢3¯Œ•á,’Ü÷ʤN™q•¥‚ìM˜*Ù˜-Mm ¸ÙrmU{á²GòuÁ©LK#G ‡.Ò“p¢ÆžõÜz .ÍRnî ª+ÓÉÕT­=€ÆIç­½>òfÍ%Þ5úêˆ Ÿ=uVÉŠöçx ²)ÏeMeêµ/f”çÕgœÇ”Möz€2ƒÆ#Ó§e’dJ-;Ûši5‹W)@’†ô4ÛÀ²Çˆ_*‚+S+—…â‡Á@=NîîºäÄ Ÿ°`ƒ8 0 }…,›·W£WšÃ™Ìl^\§"6†œ}¾Èù°£¡Ñç^:4^FZ”Sž®>[ ÖÃslܪ$lÛ .“—²vA%Úön+wÓe)MÁ|\ö|¢2ùAê•t³¥€Ã’Úxµ 6=™tg¹•䲦dÒÀÒ]4š4Kr½n^_YòP(¦þœhOmþ[ýtÚ†l wÏâ°þÆæãu¨féýóR¯_kl¿ŠC‡Î<íÏÎ:{žŸ@Ͼñ‘“‘z÷÷|fF\›ß÷ןtaæ^²Û\ökõÉ«úÙŸ ±“Ûs–ÏO˜WþWûÔt€°,¬ìÆóúÊ?³^¯–ýª]é̬}1Ué®ñíM÷GQÃ}0<ÒÔ T¼LòÏšGseõTü‚z†U·_RÙ#33ùŽqy%'\ìèTƒôõ…?7Œb¤¢âuÕz?åE1)o 8X…9@u’azÍKÝg¢î}ÓÀèÉ7löÒ)ìCË9–™•–<_«R݉dí«F Œšùr19ÑŠKx„ædÖ Su= 8¡ÆÀ¦~šKÇïX5ö³šnløg@ûKÒßáçÆ?£I•Õ¦ž)kܰ8ù’;ë?˜cÇJKbR*Q«;ˆJÄrÏ G2é—‘L2XÖ²²§kf‰[ò4B÷é…Ig|í‡í’AŒ,9åXÑmHX‘v»Úäù#61Pçyì%-ÎîS*ŠUñzŸñ¶½;põ0¯`yþüãÿñÿÿ÷Ç·oß*˜EÆ~ÛÞBÀç§LÿùýŸ%Ð/{ ‡2¥GOdP÷Ê–ƒbß¿ðë×|ýú¿þúŽŸ?">œí{ae}MR¶š­<ök^¼žÎò54ÁOz1Э>^h|ýRfc{‚}Ǹò:¸sí« 5¦©ƒU1ež\EïHR¥ùgÓæÜTÐQë]“0š.§92sI±¬/Ÿ½™íPÿ-ÙZ Ù¸}O@¡0·ê{Ô"ä·@òØÂâ7rmÎÌìé]%†T¢@ ü³{®A‘‰¢|vB8 ȵë ò>[½»ÑÚƒ¥ç©ûã@Al,¤P‹8@ŽZôeƒ] àoD»âK @%a„`ðE.Æ\Œ¼áÍ}<ÙÏ®—ˆâí]~eúÛÆ!Ö&Hµ=Ì|=Šq ÐPŽëbŽL+Œ4hY˜…êjQ¯¢—ûƒæ¸ôÀ˜MÚÛßqûMˆå4z•‚´bTµölz8Ûl8p§yn§ -²~NB¼–íÜpç÷‚©gÆLÞUåƒazOW×v±fÓð `á$}œ~žUÒ®};²Ûš1˜ÙYr£ÌÉçõ3`Íê¦hzöñ}Çú¢¯/¼W¹iS>™BžY€kÆÄŠÕô Hvžö1á7épÐK&Ί1‘§@³Ÿ5ò#ƒ¨šÚþ÷Y-È3FX_ £$aÀ—^†Î”‰ü*î•Ï4󜭵WX=P‡Ëû;c ®Eó3…¯ßËz%ß¿N›œëš™2z“M÷ÊA}ÅH˜¯«ko²Qò´:“_e{÷ªJödº‡Ð$]xÅ€~5(äw™LWÅ÷}zŸ,÷¼;n•Ô8cP­˜ã3d;(»;?ù†a¶2™½ªk~ÇoåØW†þ2È·GÉ+Gðœäb¨Ý²Ø7ž±«º÷¬Ý¾Áw H,Â]t±§·é£ŠþÐîY²<€Ý n¸1¾å¬¬ß4Ä``Ÿþk¦ÑUÒÞxmÎÞYX‚Ì«ZòêL½eg2íWžßÑwµ=·Û @—'æñÝß7µàÈŽ}fE›=µá!³…À$V B5ÆŠ3¯òúfŠ@2Pá1ù€=3xOÒ¡P<À±?ä.–v]wQ„æ·}Ž}6»‡Ù—*¥„ÃåsâàVk%Üâd۶šJTõøøÀ?ÿùüñÇPU|ÿþÏçÓ¾Ÿ7‚~âíí Çÿöoÿ†÷· ÿý7þë¿þËeŒžE&mdrˆKͤeJ¥‘·{(ާaû^‚ЄätßwÀ…DuŸèì6*>Àݰ´Z,ëó«ú=yO“ü¬ÈFíÒÛg$=Ì# ê ,˜×¡Hö2ÄjŸ“•¡¬&)ô?·_¯ÿµ!]‚i¤ÆŒ Äîy()ôØFæO¬j{¾§gbÂl÷ qO7à@Wt"©´Œ|DJàÆÈ]3%ö<ØyÙöRnŸ” 2£äÄv«-¹šç;ÙɬRæƒÑÃvôxŽ‘ (Ò sót8úÉÂ!d“íì«Ã8Œv§ZÆÙFè°‰†èQ¦Ü\JPôäDZeNÙ'‹‚›ÁÓ óÅc¶‡Ù¼§.ÞÒšrZ€™\—ÔCÊé†nÌú>„ÐytÙt2.i‹öå1w(ÔÅ7Ó âªS<µTÇK*9…KVÈ Äy…¶>kðVEø]<óvš€£Ì*{O­<ÂBcåáe÷»¨<L25wE·Ï€J™”SÇ2‰<5¹|>ËIÕHÁžQ³¯Ì;ÇìzŸiÂÿko¶cI’d‰U»îžYÙÝ5ÌKü üÿ?!ˆa/UY™~¯©ªðADWS53Ï™@GW†û]Ít“#g:cg³õ¶• Òà$XËÜæÒ½Æ°v2÷êø§©_R??ZF[ ñ0,|`à•"h^š)€^k5eS?./g§r™IÂe1ß§Bþùĵ³NÚ ü8K`Òõ7œ6&Î̼¯@ ]ÿæ,űâyÕ3]¨°¥ï\‹–ÙÆÂKÀ~dœÉ=fÚ…æ~`]Á;í|º56èÈè»*2WfówÆá•)øŠau€OØw@£õÞ®œëw þ•ÃYðÂÌZ¡{/v_ÔϾÇìºg¡+À±®wëD¸¹wN¢××’Bºø,´x\°˜²×‰:“ó+öNj¨gy–×1f_c“f¿Ó­ ™¯Ma_•O—c³²v+C ‚ÿ%ê˜[³´æF|º§Óˆï7XV,Ê®q0aÎŽÏ¿Ú[Wóíü:õ2ãÎ×rà·ù÷ÑŒÒS2Ãõ¤ÿ ’„CBL@ŒI¥Iª ;«l{٦Ğ’‚!XÆðR:¹ú©Ì(¨Ñzýf ‹ý*ç¹hÀ‚7`i#Aˆ=À¨ï2Ãö9(³ÿá6§þª¯Ï'È1~þùý§_ðË_~ ðý÷?Š b¼ú¤×z¾@Døù/øøøÀóùDŒϧ‚ î±áÃ93ãk¯µO3oDïïxlOó»Ú÷]-nìÞ¶?S6~êzÎs¸«¿lm‰Q¯3÷^«Åb(¡nòE”ÐÊsÖrŠ­À¸ÿ=Qñ4ãÆVr=„‘QËpBIòN1iÍTØLÍÿ¢[°4ž “Ã<Ó•½d` «ü0Q£îÀ ÌІk%ói­²¦MÚ'Œï©‡©$B¤$"7-´¥0ç:£Ÿ×4$¦ËVMÈÊ â†×î‘iÁiëò–ÔâË‚`rT©ÿÉRü²ô<%õT*ÀHöx5WNÖ½È?xG•'¹!%€‘µ–r ,Õ‚1›#ê"Áö{MÉ´Sç©LÒbU‡éÃû‡RÜJ¼7›¹<ðªõR)£›w+†D¹³Cèì÷ãuÎÝ$&>eädƒîUíª#Ë|®Ée~Ë‚áÆÏg쥫®q{Mg³ÞûiÂÞŒá²)fö²Jõø™uª ðx#}eƲº¢xó¤·íà†¹íçâ |4·>ë.ã@ˆËq–’-ìä¦,ÃÕ÷=è=•Uð´÷¹í°Ÿ=~T¿š7Ko·˜1óŽg–Õ\=[òžB4VS*gÒ,™ÍRµ=E• ¦¤^V¨V'λŠ bÒZ6ŠúbíÆÔʲ:aǶ€™l²AP¼¹21# û¾×ïAèêÏBMØKr8ßå×÷L]‚7 dŽ$òz½Êµ|{{ÃóùDO¼°mÞßÒÏbß%7‚~6¬×ë³¼.{‡‡I4÷ÂÌ·º‰^”ðóÏ¿€ˆð´äÁýùB¡|&$µûiÕE>/óõ«VDcúôÍâLnIÑuAH|º³Þs¯²kV¿ˆd«d€#Ù"?žÈc 0dwwF†Ô!T~žlmŒ¶È$Tr޲ª(^ Dˆ$…!¦rEe‡Ò°•ò:m:cˆôsºÎc6ðT¿V†™›‚óuN fâÚ)ûž\줸ið)ú¦n™yÕ“Ø®/¥£¢€ZKX¡&ÞR5ZÏæä1Þ3’Å4:§æë1Q9dGz!ˆË^05^ZÁ.*Œªrö Š †yRUv¢™²7/-2Ø“€¤)nÞÕ ,[*VÎ)%.ßœ|˜•i¦ÁV˜X›0di\ª¯l&[©/ôêB•JÂŽŒ£Ãsi›L;ï«뜩´.¶Î(úgl–™ÄpŽe½Õ/x%q¢éȨÄÐ6Êžaà†…Š/d½—Qf çÛÐèI0&*ÎV£Ŭ@¢Y‡ßàûÌ|(ò×Ùyßô©Ir`ÎÆ–™ü·Þ”2Yú!-@N¦©Á= Ê~~ð·"’vÒü˜G™ -€ÚºúÑÀrK§]ëvÁ\%èè·H‡T±®¦úû³‚FuùºÞ䩽Ôg¬Æ \_mxÇa^ÚF^»Ü±cbUFÝê€K‡y<¤ç“yýþ (Éô`|Å@i™v3æÄ8p•šuer{U<¯âÍÛfeÈ;®?ób=]ó¼_ßdò9Vþ™¼ãøùRajöÏOËO×›Úù\Íùj(:˶[‰÷˜WÇæÖ„m¿ÏÕkŸíŸW²åUÁ¿’¸ž=wr¯æHÛe=kX¬Ö»Y!{l®€áUs©M«œ]“Vª?Îë3³÷þ|8Jç ºÕyì*Äg¾vR-¸ s÷Ácé •m|¬ˆÈ Škw=©Ù+ó4Yzdx-Î_á?³q² êž3¤£r罤¦Öm€Ó”=ÈÔygµlŽ€5k­XÇ39ÝbDžÑW¾:g€ða9‘À^½ÎWÂcVuH›Ž:Ö$£Œ²µœèÞ̸â÷YÏ|*‰MFqIÐñž$Á9FŠQ!E„ìQÙQQH•áõÊ@U"E$ V¤ÇRWT`S}fsŠòx–dïŒ  ›¬]+’ÉßÞÞ¬^¶ºÖ¤ƒLª‚©|ïãýÞ¹â7•Ó‘oض­0½¾ÿñ ðñøÀÛû†oß¾áããÞ{¼½½aÛ¶Ó$ÃZg„ƒÇþúO¿àûóU$‹¨Ë÷´&®ÎDZ¹ øƒóŸ®,ÍÖÓ²‚M-°Íø–é8.öä&Q­1ª:%uïÑ$Ê‚€hrÅdµ.Œª¼Ê R~Ÿ¥ï€Û І)ÕôϪRhëe =¹\«d†îã‰æ_NPI8' D”M[j™\C žw¥FIt¹ïšY]:{êØ†-pÉ &ÄJ,æ2>7ŸcskáãIý°â.pÞÌð’}ïBv÷Àæ *lD7“êDI2PŒÌœ‹»C¦úUIAì6öð›¡Ö!@Çæ­LtòÞ$?Épä ª˜RÂc{”ƒo6vWTSJŒl6Ó'õId95a5ñÄ Ñsÿƒ4‚7I‘Ë,‹L…ù6ß4rJd_64Õ‹®8Ñy¬öSh%U™uÌfi-‚:c{©lx½^Íü•yå,™gr.Ó„‘d×Å 4•[•”š÷~ÅvXz«œxTµÏk7·Ö,_‰ÂÁCÅ¡€³D¯ÂÀÈñ§Ä‡ÇeO,"ß>e`q "Ę–Åõ  ¯—T(ãk& ½*gÅɪ¯áÙ´rr‡jzHž I%ƽyû§e‡vÆF¬?Ç-߬  ¤<Ã(1¸ `USW>V‡C2­ ß³t/]¸WÀ³÷ºb¿®@ÿ•ÙÊ<½²˜èÔ§çC){dΘ`Ìî°.µuÚºð¿Çˆù3왯€EW¯MøÂá ó”«qdÕ~Ub¸sÎX³}ÿ,eóZêŽK`ílþŒ ž«Ï}`”–²½UC°ýo·ùnÍåÙþž÷âׯÓáó¤iö¢–ÁX nê•8¦®Ìµ;–¶pçQÒÚ1ä¹O¦B €®Ü¤ëû©oæYê\_ÏY§³&âõyÖšÔ]ÿ’ºžUÙ£…K»c…\@+·»ëêh²~<‹Ð´ zµî¬æÍá ‰£÷kTî0 [W{þ?ιyJ°c0y‹zL¥ÌÞ;³˜ˆfH½›»š@ r#,Ëò$r”´!ºÇˆ¢htW¶¾ÉïcTÓw$Q¥ƒQTþ%{ڱǀ£ÃÛ¼mP.óÅç*ƨì’-0,–û™3;ï5-•=”Ÿÿýûwxïá½’5òŸ=„ŠO³²§^pÎaóÞ®WDŠŸ!€ù Ï®Xâ|>¿ãó™à[ÆÀãñ@”Ta9à7¯ug MW´µâññŽ·Ÿ~Æßÿ¿ÿñ?žŸIkm·=ðùù‰Ïg5‰O2[ ùÞp®ðJ„Q¿ªÅ¸çã\JQÌãOm/Xá Ä ôJ ++«£{LkR: ÅL{\*ƒ44KRfR™„¹ñâÓ§æp9)iJÄSµ¡IcTï6}|ìj•QŠ« £ùõÌþkå¹bMëáŒâØk@M5„—¬–#°cHÒ€ý2€lRð¶À«îÜ€7G“zf¨cfuqJ þÍ{eaˆM8Û›·³Cˆ;œ'»)úüFHŽ ìÄ Qœû¾ãñðHa/äï¤Â@¨RB¥¸mW("Ö-0EÓûB_/H šLâ=œ3 LŒÍÌØœy#åøE-ÆüAK PJeQh}arT$3c4íΞXaßÁÆbI1!­×Ù&/!YªÞ¼÷ÇCÔ}Wçú¡-ƒ5])„8ºÔƒo¡}³x;Å)põ­”ižVÑêßÝ2„~줴ΠԻÃsò­¥H‹ãnÓÍÏqnë:I¤ˆ; œkR°Lc]ÞèÁ¡¼þŠÙÕÆ€¶Ÿ³ãòûŒŸ1SøQ¢cûëÜ2³¾ÒjMîtãܳû¤~tÆæj½‘˜Y=ŠØÄ6`¨ÎŸ™!Îé k"Ô3};—n0$ÊãÁ/;ìDÙ{/•ñßRF[“Þ|-óx«¥t «3tN©•ö&¿3sìÑ$ý@ñ7?@n™$@1C,¯'Ô%–T9¤]߃çºô¨ì›w\Ì}ZyÎëÎΕkìÔtRéÂIR)Ft£MF‰®‰^%|!ÌlI¨“‚AJ¶¯¥ÓôiS…)«G´rpUÖž3–Ùðý¨^™’rŠh•ˆç"Ñùcg=¯91ÆJƒŸ€1ÆìdÚó¸Î¹AâqRÌcUBmžwCW*Ã,9©(ÿ.rM/¤g ÚýOrNh³:kPÙý 5ªÚA×× ¥þ»·k¶s5ËtLÖ² ›â¹²v-–š¹òwQì#Úõ ݽïß7 ’騵!´éŽ-`¯Ç ÏïÓ¦´ÎDgcce ¼jŒ&È#slf˜š6fÚôÉzOZ¹» —÷LÀÔßoî<3t­¬Åé[íÌ/mÅà*&Ö@×^§|Þš õºÌÂêg !LB#@86ŸòÏ#DÏ—£KcXx÷8Ì­¢80ƒ©l’›÷(±äEç„ؤ/Îæ–hÓuêÁšìl¢lëžµèØÎÙÎ÷¾K™±!qðqÀ#=àhÒ× Ì¬bG8KI Žu,ºZ(I2åFN4…Ó=Q÷eU&;géY‚HÂÆ®zv6ÅjN§e¸áŒÐŸ‡cÜ`–2Ú˜H±š ì (Êüd;VßâLrØ_ò~?ŽDguÉÕúqÆOSØrý4z²‰Øù¸ÌMï<^ (HJpÂ&›j6-„K³”Ýf©€ú; ”)£‚Vj¶îuÜÃc«~ ºwG„8÷¿1ˆ#ã—íc¯×ŽïŸŸøöíâç;Ê Œ$lu”+ÁS”"¢D•wí5e9³Ù ÌuÝ|!hMg¤„_øüü®,*ÒÏìß<üÛçAŽñÜ•!åZè¨×‘yWCý­òº[ÉaÚj|ÈOˆàw÷cœibÀmÛ @À+ èí‡{ Æ?ýü†ûõWüço¿á÷Ïïøöã r^Ï=`|>w¼bÂ+&„4„H#Yb˼ã!Œy«5έþpê Å R>צ„U•U@!èœñÎÙz“¬ù0˜Ì·à+Mô&m"àÍw`°4{ÔØä5´[ë)3ɪo1JÍ^Ï6€4&çTš Ú6gkÇpTÏíD”Ñï5yï}…h¡{„= 6›‡Ùóx;ļ´¼ÓõsE°6çC€x‚gM´™¿Ûž@œŠß[Và%(³-²íÍ}gf„$x…]e±›‘‹ààÙY îÉŽ{Øáß?e!òž•`É,oLfÞÊ™æ¨=uçÌ]Ÿê&¶=Tê—¼^€ñ$GVSÈÇ4Ž’­¸pÎPò"ŸÒM}°b»ùžœIk·¢=0Ì•ö€"i¾p·³i78ÿÌ{tÆÙyƒ‡&d(u»Œc‹•¥Êˆi%BöÝ’ˆú€•‰Í·º K¶Âº¼í"32Ÿ®’Ï$Bw£Ç.7é¤H£Œ¯/z ³¥!_ùuTÛ÷jctôÊP{¢$†ƒ©ç*²7Ðk¿ƒ& ŒòH)×ÝgûBZÜ8~ºƒ>d) Y¥Uc'ÀÜvð®d_Wß3VÌÄq\ zönÚg£d ¥Œ+Ë0~ °ÙAÞ»)[±Ý¬®¾cÛñ_',=(ZÁ±³ÊK¶Ï¥¬¡cxõ¿ÈÈØÂ)Ë‚K”ò¼{-’–Qö3Õµ<“GÍØ}­”îl}ž¥óƒè°nÔù9gaÝñ79Ï j=È!²RDóÿF‡V ”µÄðйr.£YyŽkNfvž¥Ïž±—Wó¾Ì—$§ÌÁ±)4>îl¿J¹œ}Die:í߶ѲòaëÎ'‰Ó¿¶kÖݹ =ñ¹çÛ]æÝŒzÆT¼bÜäר¶mºoµ è•rü÷Lâ~8;ͬ)(ØÉIÃl5ÿ–bˆÜœ3„s³{¹XÓK` »NbX )’yJ/0|_>2èËÃûÂA(U¹±%0ÈÏò£Å€äŒr°àùü´b,ÎR0ûFÝfŸËA¶ˆË´Ë»¬Íe ød}ùŠçÞʃÆß¸VD¼ßŠfJ¬€ß“*~ÄŠþ„&tF’Éœ”…¢Ä$H¢€ôõ¿% ˆ½6à’’ $ir§¾áýýçR$¿¢y<‹CÏ}‡sÞÞ>À~ÃÛÇOø4³szY IDATÞ<Þ·6÷0‹çÕr£°—0z29™¨GûLõš¤N2–%¾~ÛDð|>±óŽ÷íQÈÙ¯mßwüøñC;ÎÛçÑçïûÞÌ÷J !eØûð†··7ømCˆ±úf…"¶mCÈ *ó#D„ðßvüãÇ¿ÿÇà÷?¾+—È;¤쟟x“4û¼’<¤K!­Ã-ÀZki0ôÍ*3X£yB•† SˆÈ)ªYS²e òþ<œÃÐ7$Gxœ“³Üñ|^¥ø„*{­¡Rz»RiÂWtš¥Fô{>ó”I^T °6Õ>Ò¶qaèf[k'[ƒ)Q*þãÌýë;feV"{𫤑 ÜnUobmê¶Éã Ôohù¬Â¬ŸÙ9ÿö¶Y—~+)Y)3Og•"1 PBŒPF•¾"Âë ÇIŽw5UK ŽQWlTÁ2@E¬x.(!+ëªv’³wàsõ6Æ1{cÕdA×]ˆö€0‹$>-êpd6´Þ¼±&+*Ô7@ÚdDfå¨N¥¹ B.C¼v=ÌH³t˹¡Ð©t'E‹5ïšÁ:‹½m;›³¢?‰$ˆ«8Ü‘u&‹™™EÞÈZ€1„q¢·÷%³þú.³;•\­3ZJÎÎ>÷ŒâWò2ƼO»ç ZüL¢:^·QJzgqˆ™‚@‹Ãa{8åcÊÎ (›‡wh«¿‘Euv­ÜĤ¿cDlÆðl¢BÎCÎSî® ôóu‚VàòÊ“†—)ªt€¤æ A‡qµJgªì£æs²Ì¥¸(¹@…A$Í4?X¬ö‰)»ãd®¯ Õ—þgSÉU:HõÎÖ©£WMº ÊÞI†p1}Ì ºàs³¹Ø®÷Ë9$çc;§š¶ë鸮ÊÀ<¨ë!óN#h%µ›7_R™×³õçŠ÷gþ¬æèÙŸ±Ésæ±y¶ŸŽlí•×Ù¸Ÿí³×í÷E ovOÏ£Dê. 6»Æ#»me€Ý5áN{ùóM °™úFk“º<¦sös# inøÜSu  ®Æ_[ôM®žv”P¶…`óüÙ>™(kà”F5{Øj¼žÍ<š®í)C¬Ýχ=iLÇž±*ï¬ÛgþºwÆöj%a¢å#VâJd0†ñ ¤”€˜š4eBê?{4KS•¹c* …d¶n"Ä I½­$³‚ÉáØ@×¾#•Ͻ^;>_/lÛ›JæÀ?×µ ƒ™€á>]e.Ùx´éNg–&Þ'l[„X½ûñþhšp©¤pÇÌ#˹ Ûöï ( Ìú&{4JLýz#ö!DðÂǘoü†¿ýýoøöí>??U’¸mØ7–1^¯Oüñíwüþûïøõ×_ñü|€éõ øñã^?>C¢ú,•zÀ ¾¶ÅûÊÞð 1·ùª²I4 ‹1¥²íóië´ ýZœ¢­#YÒi’ò& uªJgçÞNeÔ†Z Ö B^ª~"ª$;È÷»P%)€»úR¥æØAåܘ¡Ycº60øb¿dѳL~ÊøÓpŽS2‘6–Ö GIÎ…ù½Ùýiÿ•±K(+Ù˜“y£w)]z›1„$JMt`ˆóà=! 0… ÎbpŽð|lÞ!1àý†øÚ y«ÆÎÄ‹ƒƒ!Ь¦í‡î¤0œÆÍ?K&<ë°o™W+cí±[š'âywd^€§¤Ì1iPÏ>eqŒ¶”†ŠÜ÷erð@É {•¾pTŠG`à¢ÓxF; äÔ¼÷0c@œ½ßYd|hVQØ3æÉH¥oS&[ψ’ê‘'ÌŠÁpñçì1w½™V×dz̺\=À“¾ä+sxÌØÝç%\:Ï:Ög¾šÈ2÷[!_yï¶0ºÃ9°p›ù)}i|]¤I}…•Ñ=rÊ çþU±Ñuǧ! X¤´Íï, hK¨a9éF‰èŠujñzéµ ÁØkæÿµïQöÚ— Ù\§vÄ…²'É´|¨—³½xnRÆ&ï³t8#™¯36å*УXs{Š|~^ïKó†5†ðgþxåšImvL×µf¿hÏ3™Y›åéµLéðUî 1¨¤Rg×4khŽ˜J·ò9,ƒÞá"ƒ1¨©RTƒ³¬MÁyó¨‚+ž8kR!Î$ó£"8§‹„.+=8ãý#,Íç ‰@-€X2¸¦òÅÌRb‡ëjd?œ²Iwt¥ÁF¥HýÚ?í, ” “½Œµ,Oè7cIœƒ 쯒é2жS,@”Ý: ªM-%©h_¸?ÙyŸ [iÈlòžjWï7v'&äD©ós$,Y)ën9& Òuwt”z¬³+‰ÜÙ½Xªt8€ŸI6V2ŽÒ´Máh8?¤úÜfhTücL€šêrdïêÞ´ôÑÙãf÷š¾ð™Ïºð·»““‚”Ë÷Ûûtáz”ÎÅb\, ´|79ïš»Þ-”g,2ωikÌ>enŒÍ†«B½~·xê¯SWscå´šË=£ákÆîwY©õþbɪY`[‹ 3„ù6ðU2Mæz»6¯ ¶G†É1½M â;ÅÕÕÚþ•t¯3Õ굯ÀšÞ(;-÷œU±¼ÚþW˜ØLZ'ëj[t¶g¨Ùµ=z`´«½î,Éøj=oEW̹eÖà߀=~ŸX6&#ÃsÖlÇc7•ÙÎö¿©ÅÅ ²j~23†œÙ1$Ô@¥¬8h_#{È¢˜5KñÑ#"D¤?}6]=¯cb©tû¨C•±%°óÏôì&ËþÝ™Ä}µ&¥EHÉa_4z¯ØÇ”âycå.Ø5ô…ùO•›OÆÌ*’1@‘Э9$¬j{…$JH c\©/%Áž¥sH1±‚^¬Œ«(懕4LhOæ­'0Ãê„øÚÍ赤Õð=%cç)êûË@”ðÞ[`Y®%"bY ¥ÓÂ>!5FךM:\Àn×âñxàãã?ýôþÛû¯øùçŸKR ·õ*ÆþÇÿ÷ïx½^x~~ê=q›S3û#$F%?ØYÉ´A0¬ú±†ˆ‘$„ׯç'~|ÿ†o¿ÿŽÏÏ'Þßß‘’‚W?>?ñ|>5 mÿ¬žUÌDŒ‰Ig¥0‚h`H§âaɨj ª¾êÅçû¤u)s'•Æfe6¡¤ÜïIzÛ<2R'×ôV,(ëlCp:ÔcuÑ­˜•tWi…¡AŒ¢¢¢ÆÐC2!—974ÀÐÈ­¢¨%àäº[•9WŸÖ¬áG'Sèä«JbŠ j=W h4)"7,ºâ\V×öÛótDÔ`=$P¯æÉ:ìÕ,L;™]EήXè€#°úb‰$déhJjü¾©×!Þ¼·å}n›~µ6JÕ1lË’¯dqÚRþ76Ù´™:óen6H.(ø™÷Ðh ÛÒ ÏHg´+ ]—4bŸ»õà2Ī?ᳪ+ÈRŠÃç¼(d]ÜìÎ÷34ûÌg謨Œ¡3)OFêG™Ákæ Ôê ÁŒðg_#è0š_òR46¼–Ò:é“Å$á2-q~í¨Á×Î=ØV^`c5ó†:+¯®õ¬hš}«áÈHR“Úµù{&-» T»3/ŒÖp|켬Òg`ÇŠP2¹`ðÜ—ÿdàóŽŒ÷jqcã~ì¤SâLB1[Wg)¨³"sÕßk•"؆,œV´f÷ŒkÞ™þ.€S¯ãúùe®ÈŒ\Ý÷Õ:5ÊØ®>÷•ÑûÕw»Ë¤ÉÏxϾ_ëi±bBãã«ÅèYa9;“œ­Ágï³÷³æÌŠÁv6_ÎöÍ1}jôÒ)Ï‹é6SlƯ,³ýóLF:²²ÃôÕ3ŸÆ5[q±¦ÒxŽE×ô²z¿kf­Ï'HÐñ<@ =qµ)kÂÄ¢!{º^±'Û€üšÙÐ[NÍþÙoe³tG©QY¥ QÎ4èR){ ]4W÷w–œØYSWMÎÙyá«¶w½áî0YW)£ú{>¤´¡GU¶•¯—m«™>›„Ð`³Pó~ec˜ÀNíU¢z;½võlÞ“ ²”|@E¢ÈìÌ^ÉBZ§ˆÂ,bf¼=%Ô!ÆXÎ ŽûûøŽkžùYºšb?ðþþ“&½&Ç?ýôþå_þ¿üò þò—Ÿðöö¦a^ûŽ×óYêï=þ÷ýW$cd)#ê…ïß¿Cˆ4Q0ûOf›e-cc‡ÍRÜà ˆIQZdÏ£}ß,{>AÂx½ôÚ¼$Ô1“j­ß®ÓS ž¶bs@DKŠÞrdüÍH$®kÝžâ±¾ JêhÍz—•,•í_ÍÚPŠ+ÖŒ¥=k‚ô¿_7Ö‰y Z zŽ¿Ý¤Ì&Ê™40s}æ“×X•°”Ï~TH2T×}d®¨ÍëÂÄêë—LÊc¹6ÃÆFJÙä=À;$uÔ‡¦—(l*ppœìç¢dM ²HÐíý]=¨ 1§›÷HÉPꌊ–.d,Ì*ý ç¼ÒÙº²º mŽKº3~”ìÔÇ{ß1]ýJ7çøm7¥‘ïÄýØË€ŠÓØRi’lª¡Ç‘LHh1WM:ÍÈ9–:¤P¬ïÏb,­Ô ²3©Æ 9ÒÛMùÌàö+€Î±¸¦ežšŠlûë—Mz‰|a†èäq—¹½—Ìuá7“úœ1BæàÊð]c8= cÑÎínôïù*C£óh›J»Ã£a–d57W^,«1¸dïÐçÏŠÖ+9Ý,•sÎd¡nƒß¿²l挼YrXû£„î¸ÑÓ”©3cîÌ á¹|+5^DZÈóüqK¶äñP>MdšÑÁo6ZÑL¦tUdŠy1€Æ1s4S.Þ©–4šS0³× È÷¼su~å¹>ܓܪ”Õ¼N“cLþ¹6Š ‚„8YWõàKyók=‘*ë‹zª?5ì‹+Põ 1Ä9¨œ=Î ¯sfZ6u´;I—,Ù9S0Yg’þ4¸xÅ4[ÒW¾7³{–¶ª ÒpɼϚ<>æÌjÕT;edM>ר·jvÝ-ܯ—íw\1NWß)Åt ².쪉+AÊÆ©ícÛW¥­3ÿ=Þ³ÔÆ±X™4÷ 9#´Í4×™¬7##«z]MÎrĽÑ=&€ŸœÇ\y¿eïÕþßñ+Ï·«æÉάé0äùÀÓý·†¹H¹èB]*£)1*{ª¾*{aõÒ'5þÁÊ´Š&=Š6f’$DBÔ×IÓÓvK™{íûJb¸î/áùB4Ù[–À‰Ô1æoض Ûæl.W°&ÆId6$\ëÑ|ë’VMÉÄl¯·©§$K;TO¬··7||üŒ÷÷wlÛÇŒ°ïx>àóûî¼âœ9Ÿ>þ‚÷5wwΙ‰|ÄæRÞŸ£š°Ç]+G„D„Í1Þ6Ï„ýõÄóû7ì¯OKî3v\ˆxí¯× ûuRÄæ!VÁ‘7_/2&.LµâƒÕh -6 ~ªnr¦ðÊ¡Ac˜rKŸR“(šm@Z/Ó(™5˜×›^~œd<+6¿/kIï¡ÝamÀ”¥Ö&3sÚ]6‹/gÂzž$–ÂLªç ίÚÕüf~æ¨òl†Þ2¦$3lút¦“ÒÚzÿØÔOLêÛÍ$ ¡bu\£¬±mŸ£Ö‡Qñ¥¼2ll`…¾‘Xüà48i/¬%—ia†úÍ1è೟)ø”éµÀÛ›SZ$€=x§†to"¨[S$ÑF—¬ˆ“&!ÎCöŒ€&Lê»åyq›u2gŒ«vQÎzÊ«Níªãªƒ7Þò(™%ý¤Êá^J²P­ò†A):ôrU ®:{gÓ³¸ïñzžé~Gãõ;ÔïUa?².F)aËê‹Ò9€3Få1ÃuÉ÷»Ÿ?¥– ØŽ¯µ¯.™a+ðc”ø”õYÁMã¡9G¾žŒ‘S™aœŒÞJgl‰U’Z[ˆUöfºU<­ÈW)rWîò >¬)wÙÅÈ—ÐX¬Ïñ#ç¨Ý3쬛_™ <6b¥Í¥ðq~mé´€]1RH§íÙáýà+0ÍÌŒ×ëu0nY¼Y³JмS൦ÍãkŒ \Ûa\±\²9û dkUŒ&£5ý¦ùLƒ¿Ì]ÉìØØ8P˜JŸÏ"WsýŒUs·àn=äVÞfêïÀ—EâüsÐ)z§©±*HÏÂ/V`\0,WÍ‚ñÌ´ú<3Y\ËV½bm¬X_³Ñ‹ê |™•îl¿ZÚ{‘#Hž™'wLâÏÎji‘‚WBz‰13>Æ9—•x•-ŒìÉ P>?/Î ùÁ󤘸¯B?Nس3Ïü:’ýu€^-$' žù~Iˆ8ÊsÐ\gØvüÞõã›ÍçUJæªAzÀºjàµæùÓqVÎG˜z+ =–óp›N<ž5¤0«Ä€5]‡Öóˆ¢àAÊ@&X•CBˆ‰±§€•¡¥€–¯°‡ˆdÉeœÌ0yaDÉÎ:ê͵m[—z–Ïzæ¢âo•™æÞ=@¬²CâXB¾¶mëÀ’6h,¡­ãÛ¶áããŸúÛ·o*oüü}ßá½ÇVjá„×þDŠÀk÷øøøÀÛÛ›^ë°ãµïðLPãŸZ?‹Kʾa¥½¿m vx‹kÿüýùÂþùÔ”H`jã’S¡€É—s¬åëq–™VÅãl–ÿBT©æ4E³Ód,G!¤õ3•&j Ðk›M9`­‚OÎ΂©IÖΩî¸Ü‡W)Ÿ³3€^_aÙ'¤%ôþW³ý‘Ö³cBmw½)§r9[*Èjz«A;±àáÕ]¡Ô‡*3oó\0װœsp¬sYw f(`–÷˜àY›Àíy¸ei:¿•¹±ï{ nËsÓC4=P‹Åh›Ø›é‹3餥Œˆæ½S™ MhgTG÷à"`áNΤ‡ì“:3F­ÞˆÇÃ$„YjÇ•fÇ ì1u_:O´Qj8‹0žý›ÉJ¾p3àânÚLª€I1†O‚` •ÆTõþ!"P;HDàÙ«N<åým`œ7DÔ¢÷ì+½QtÃ/TÎT¿{´1Ý2±f ÇJN¶œÌesºÓUA‹˜bW0æ×kQâÑ£¦Ò_»·YÙ\Ga“…§œ7ÿª···Zðú|±֊) %Ä}‚­l‰ö)àûO )`öþxÃþö¦IAˆ=6ö؜Ǔ?¾}Çöþç~ùåüþíüçßþ½süñ>>>Àìðùz'¯„À‰@p=#1»k%1í Ä$Ò9‘v“œ9*ê˜ L²sÕZX™qÙS×ù˜ÄÌöÉ98«÷¢8¨ã$IÓT‚#¥&œfu-^Æ:fbÄ”,êY.b.‘Ÿ¡¼qÖ|i½œ›ú'ï)1šçwÃT¶¹e]ÛQ$C\Íà“†ÄÚ¹Ô„Žà‰á¶sm| "ž5T–§Ë}€÷lsÖ²„2¾D{­-ËšOpLpÖx¸lŸt=¤ì¥²TçkMÊ $ßï·R·ä5*„PšBàÉô«ÜâÚ¢`acèo^'#›&²vuÕè¬R\SA«»"Òt”,kßiW G„Y×rÔÝ^Ñž[‰M \œ%ÁõÀÙÌ>K!L‰ÙZ ßHdQòć)HPsLØÆ™Z IØRÝ CJ7;Ãóï3Cˆ¯:Üé¢+6J˜ÆûÕù9ÑÜ»JÊèü/ {ïŽôbéw$8eää"r¦éži¶gÈüœ ª×±ÿž-C03þ:0õPœ§Ó95Rõs'hvïÙÌ6Wsr\´»ÇѹçÔ8þV~SÜ0êFàie@Ú~þ»éV#ë€Ϻ3¦ÄYÒÕ±èÁD^2‹ŸÅ¤W@ ÿÎîK2ÝÃ5ÀuX $œ½fÿøµ¤¦ûŽÜ™ÏÃÔü~jˆÎë¢ú*yïnâØÛ†x-¡VAZkèÌ,zµ]IÄfŸ£îosFâ8ÎÇkY>'æ`ÓLÚ;2Ú¾Òù_1VÅõ(‘]½Æ àí»š¸Å€Z­ï_™s#ÓãÓç«Ì ³1}‡ vU0ß•Dž±Ûï¦~AúïÒœ4$²ì`ußfçŸ3©øWüäf,ø«ô啇Р¼mçïj®ð*aÊÎc1µ’¸T™ƒ<¹¾t~(çc§ñMYœ%ffüã>26™;ÐX‘­ðtžŠçÊìçî<ŒþÓó5®¾"w= Á¸³~f™X ö·s".ö֑ɬg‰#=¯*sG ¤Œ(B‚Úž„˜Œ bW@XAŠûþÂ+Ä"qvnÀØcB !é˜ùþ퇦áU*`1äföxÅWaÛ´ì¨Ì¬sΗ3XŒŒv 2{0'üøñľÿQÖ•*[êñx”}êõz)Õ$ªýx> 0¾2ã;ß—ýõ*Œ*•”1’‘8[Yè<÷JÝ@~êk¼>Ÿ¸Cx¼¿Ûë `Âçç'¾}û†oß¾aßcak˜h ¢y‡9"e_לôæ ½c2 ¾ØY[‚ÕØ¹¹!•9¥ŸL°U}¬U˜L¾W˜OÜÔ›‰@®÷®á{Õ¼:cÏO L_—(‰'7 Òa®õ]nìªz…‹z%?>Kºƒòòœ‡wdL´ì{•LnáxƒCn –ŸXCyWÉ dïYÂk$é81³wǺdLÈ3ÞÀ®Ys’,Ï ­ÿU¾þž*3‡¬ œ%}’à¼WHÐ:Ó;°#3ƒ33v›PÂmN‰M&ǽN_raŒiŒ¸š¸Óƒ7 –‹÷ÙÑ2–„¥bä W[:zljÉÐ*† ‚àŠQŸš»~)d*”§¾1ŽŒ%ƒq'b1„/ÈnƒÙ¨€pÞŠÂq²d-m3 «rxÉœÊÄRâ3I¡jïw»µáò<ÇÓb'w[qrÐ-E­2$å÷]*Ekyu¨?“%܉ ÿJÊØÊ/¤íÎØ_+yÁœÔƒ£G5)šµàdºÃã«i«œFʶó³3m_æÇâe÷pdhu<Ïîÿꎰ6n°Î‹¾k‰ÀWÊ#võç̰øL.s|\ê ‡çQê¤(• 1HÍd C³ô ˜py|ño¢qlµ¿£òÚmáq'Uî  Ÿ7\¥ÆNÚw˜×H瀮ÆK:œ)œ-Yª?¦±ÒH} 6Sº1®Øg B¿Ç¦ÖrÂÚ"c äÏîQ5f÷á.ˆt¸øúŸ¯zg1?Úõq/ &o IDAT~6?®K§óá&h¼òÏ:[ïÇŸÍw’-W ÝÙ÷û*~ÅÄ©9¤Çgû×:‘Ë9Ûe-e‰Í d  Öq=™RÓï¸xÌ¥¤n¯ú³çIc¢ ’Éç8O&¤™à”è†1v¼t5„_ѳU˜`ÞÙ8^û.?ÿ0¦ò ¦Ÿ›ò £ðØÎö &äô6IÔ`SO~#?<'ƒXêóûx<°‡„°ìl¢â#ùþþ“Õ[Þj#žAÍËþé'f~|*€´³=ðþþŽ_Þ~î;cã'ÄXÀ&‡©IUpöõ ø4•È'œs& |Ããñ°F±¾þ¾ïpV{&(˜DN6Θ2¯—6oãK¿GNóË j’€hlCÙ ðŠ;^¯‡ž)œÖØûÛßÁ ¼½?àD¼Þ3 Xó ¿ýöþý?þ†_ÿñ;¾}SŸ­ÇãQ©x„Å®¡ë©ú75»ëÀ:¶†T‘¥³‹Á¤ä…”‘ª’‘h途FÕkÒZ\Uÿ³²3·Ú¸K4wo…oÌã,ŠD0€eNIˆ ó$•F+UO¬ç&µðtÏÆÑvE绑 ²Rõ°ÛÂ[@J ©kxˆRde-o.”‚˹é `RV©sŠñx‰æu…"5tNÏ6ÑØ¼ä:‡ƒ±½ô½œaGy Ö×ÊžèµâLáÇÆö¢fýkOF4‘hg6VŒ~£ÖlŒÌ¤=YZ "x‚d”;i68®<×ècqø™±<úÇô›D‰áÅÑ/)„r<5|nŸ¿¢ÿ®€„•ljÊà’Aš plq N'ø$9°c±@Œ&È)w4|Ÿ`#±z'‰@NL‚mËL¦Á#ê¤`¸ò™IÎ|BÎ"¹ z@“íû‡”úXÔæ0Ý~¯cQÓHÐÚq>s:a¿$¸ìuµ…=ˆUÚßu·ìÊ( ´õ£‰½'ƒÔ±•êôï]ÿ·\ ó»™ý©L‘>%±õ´8DF†Ó*Ì`Vx$£ ßa¡œ¶Ÿ3 Ò”Ñy&qZIÚõ¬KÖ‡×òøFß¾’C®RÁ¾Òý9¦R®dOç’‡Ëu’ì¸Jhš=ž8Øw«T–/Ó-W^n£?ÉW‹Ï;Ÿ“‰Ô8ô„K³ßÕÞ©¹¸ïs¦gËSÍÚǼ ¼’Îܽ~KpæŒA@É:åé²€<¬ûƒ÷åšEwÏÌz]€_€2t_þ3@ÙÊn5®®RÖîx«uyµG¬Þ/YòØê{´ ²q|žyp]‹w§+@ìîïWg¾I3öðÊ£²gzPGJqC0 ÉÔÎ Ö‘AH§MýÄU*Ô­ÍcûòìD8ÍGóöò¹™ÕGf8/ ú·Á:­ùýŠ…±’ñ]ýn:®nìg Ë»ž[ÇñTç_ö""ëë5Gš¨Ç^ÏúÈM¨¦Y5Ø—ö TA‚%B¬ÉínCŠOeV™ä8› 3{8ÿèXGÅ;Y>??ñãÇß¿ýŸ/e0Å êóÕ?øããÊa­'3C*€h š¼Î¤¤É¶2ÙÀ;Ëœö}odNzMo¾0³2)À°§ˆ$„÷‚‚dïÛÃL·mmËÞa¶–ÅbÎ ¶› ˾ïàçS ûGõ®Š" ½ÖJÛ¶Äñû÷oø·ûøÿþoøÇ¿ãÇ뉈Z7cÅ5ñUr‹›_J^ç¶J¬+Êòo@—.m‹ bI¹AêTœ*dö2Y—ýÕŒdl $½mKl‚ÚºµXXp Œ¨I¨_S@LCJ(WZÖ9ööõ÷,VÏIit¨‰!•%èt÷f¹¡’=%Ð8Iðð§"/ô.û]U957 ¶²ùRœç"Dc(Ÿ™V‰I¹o%­v¶>VÔóúÆ{Ge“ÑIéd&±Ô#«t7kŠ5‰ 9©ÐH)‰KöÃÊŽýÄlîú±ëà΀‘ê‘ãÔk2k ï à*FaÙÛãP8¼—Fó 3]@l,e‚e¶eù‘™Ú•4¼ü{rå1 „7I5 ¤JgœèkJP:iJN`é™E%‚S]JN“Ý®c3Þ›Yq¸bÍ’út1O¿§Öø\07ÇÓ)]¶WÞ@+PóŠ…qÖÑ:‹ë¾C7m¡<>[Šöè'’RW¯+M7r|¿ã¡«6RyGFXË”á!eæNBß >[ôGoº³{svoÏWgö3ðê¼È¹çÙ“×Ý”&’W¦)Skååu'‚{:V÷f㾚kºBg`ÄΓ+ƒçõšþR³{}%)¿ô`Z˜4¥Ø¿*xg ä˜Ñz»«9Õ&ÓE¶è0Î¥Óvqä¸ûåîðÕÜþ³ AúBwí ¿ûØrý󘻇¸J=cAt̓ ©ÇêšÎÌ«»Ç ›cÚ¹|ók><¦Å„˜™œwÀåk‡qu-ßÿ®¤z~½Ó FÚ¼šyØ­ÖÏU ÞŸÓºõ*]Ç|:7î€e+ðýì¿ÏæÏ]3û¯€%h ¶)ðpšǡ!I_> Ü¿××kÞùØÙø™Ž¼âyC(Éirä8w®€—¯É-ȸ2ý§¢Õ>y3¹o5´ªT½OYEkÏ0šý#›þÓWë«é\:zÇŽàjù*«c8Ï€åY*yÏpÈÍt7 Lóê4×"©È¶RÔ±œeo1š;¹ òHIæoõÜ_CA»9¿ùR,Çñí÷ß ‹*„€·Ÿ~.@_J Éœ÷÷w°þþ÷¿Û¹ØkÚ]QƒdöR߬{{ömøé§ŸàœÃ¿üËÑà)S%3ÉN)aOüöÛoVÈ+¨ÅÈh ¥Âë¥>ÌŒÏÏO<ü†Ç¦ÞC±¢²“yÂñ‰ýùR3~IHQð ;ˆ¾ýøŽÿû¿ÿw¼^/üå/1Sv†gÆ·oßðÇo¿ãõzâùù½0±ÓžÌ4^ÿ7&3‘O ¥Âg´ºZ£ç€6º‰ƒU 6fÎâ¼6eêÊÞ’ƒ ƒ+e& %JR’Mf\ul+‘òø¥ÿäVcóþ\^X'4åçqOi|“!ݹíà,9`g’?°Ë’BÅx4Àôw’àœ˜¢ÌlJCZ¿çÇ›kü]£Y2¤"CcsRT±~Êê=]Æôü¹[2ËxvS,I P?¤¶SfO•Ž]ñ/±¸!±Ç;/Œjâ§$ˆ&:®1ŒgY$Íd€kÅž¸’ñ 1¬…Æ É+ïË Îò©ÀT-V|- gK>\g`"™q`°r²Ž¾w„$EáËÌL/0\û‘Šyr\}+³á•oÕ4:·Xzïü!rT¿7.ŠpªôÍæ±„ã¡¶$CeØÝ(°Ú"wÎ6»gf»:4Èübð´£qižã}˜1Pæ$ëtbÍ´ŠVÑÞád`ý÷Š ×K˜îfgEòôyÔKØî²?ëóó¤¾árÂÔjÑ1H¢O+ }¶§ôð4Ãl»Õ8ãêÏ$Sfa?.’IYΕ[ ëlžCŽi+ìˆî5BÀX·ûšã1-ׇ 뻨ëñ–;Ñ«ûÐ%õNÆÙ˜B:“DÎ ¦Ï;÷ {ºGpù"`´Zh°¸ À¬<”î€]0»ã«7°ÆÔè³5ûìú\­ý_5æè(?Ûw®RnϘÁ«=J=°fg¾¯ü)¥lÇ?ažÎöñ™Äñ.¨sÆÎ½ó™«ÏU5i'Tï«Àê=?×&û«¹5kÞM¿ãÅøL –< û×Õu_›yh¾cÌñV¶á ¤¤é–mã\’Ùi0ŠQŒššRBtì¢,™.{CåÆvJØCPIaJfÎŽ¬m?ŸŸŸj~Õûêõ|ë"Bx~âÍ;<þé/ œ…„ðzâ•ôqž¦³e_ž2­N5éaHÑLÖ·âõx<ðÌæê"ØÊóNëæý?þïxÛ6¼¿?@<ŸOˆžû ÿýÿùá!ˆøüüŽ·‡Çcs–"÷P§vׯ˜!$ˆ#óH^AÌøþýbŒøû?~Åßÿñ«€oÒ¯çoJHi÷`î}ŠuõX©ƒcM—Îõ½˜ÝP[Í=+«2©°ÊÌûªW/Sõl¤z\0èÖÞ%æ_j<¸²[–B”‘%IÌó3?> ¬Ú*W”æ{æ±X¿ïŸkU^ ÇûÔ|$ˆ"#Èåï¬sI×¢öìAEf¨ E‚÷dl(%}DS¯ž½ú_¹d~åês—÷Î »TןŽ<â3®ÓàŽàZ†™SÐ Ý¹Ñæø„=‚WªÀ£h´0‹?4_«*ŠCQ”z`t‚¸¦IdxOÕó>§QÌÓÓê“f–«ä²v›™>wÏM© ÞÑKHDÔc‹rì7@Tîˆ!pjO¾h°Ùm@U68Ạìu‘Äú¼`js‹G¢È®Cšl ‡â6eßI“P'® Õ9¾tæµöH8À+‰Õ  A®‘5ÕÞWfFÄ‘E×Rh[€²/4Ù€ÏÀj½Wf‡Þ–~¨±ÒG/†Õ!cæÃ‘Ê»×;…n|Ó<²¼@>eÇûXÑú"[ À?tÓZ{5 SAãóõ @Y¼3«³:~dê1Õ3ñÖ [«Ü,%ón"Õê³ö÷ïž©q™˜{z€Eæ]ï‘Õs·ûu·Hn »ÉcÍ€•çÕøùçk:MrõýÓ©H;WòºÓÅ´×o,úV ßü¿ñ"&½½oc’ÖŠ}ÕîwWëŨ86F¯<±FÒê;´v›èÕkgÈ3ÈvÞYB›6…R·6~‹# +wôfëÇŒu2ù³5ev_²GâÚ”KFߪ1qW®8 qXI#ï˜M_Èwä†ôEÉZmôÉ’=:®#3ÖÕêº\ßaMÝYÏØíÕ['Žÿõë.€w6Vóa߈hSû|ƒ¶q”ÀðZ@ —yïL4D¥Fí‹ÕÚ¿Pß,Gd Ú-.D‡tlâ¾YÑ7¡Ó¯ÌäØ5*Ë*"{h-x)˜w¨øCæÉbÍýl˜eRÒõ ˜îχqÁg ‡?z´^ƒygþj»¥× ³´¦ ñ̼»}Ì9•""ÆJê+ÔžûƒIý+ F ÷¨¨’ùÅñŠ!EìQÌðüUÒùŽDÖ00í±½#¥„×ë…}ß»ó\Jš²öööaÂïŸøÜŸösöŽ!1`ò2šÔ^•-#y?´kP¾3\wžu D<  Î@±DÀþ|q\Os aµêÖàa_ŠAõ~’Œ!8€¢Mbµ0DÌŒ=–3cH9e=Ë[¥°*% BJȧ•%Ç¡fÄ Qþô~WÓ<Û{Ö –KéÖ!VÅŒ3SöÍ0Böµ"•iÈ1°9ÆÃÞ1Ø‘«3àÌÈþ±ù²5Ù)PU,ḣV1îH) ›Ç"õ%%†ûë´jÄswÎË÷ÉoÎ: 51ç)Ú¢™‚.,Yƒyü[5°º˜¦Cä¹~Á¹Ys¡0f…X=€F8ÇMò‘šÑ…,!ƒÊ&—‰Žm÷¿¼o>ƒgêuжp“ Ï„@Împ›mý|N…œ ˆððïʾr9J6Óã¼þ<û^YêàáÀ¸=@Îe‰*…‚#áõ,מ‰ñжƒÁB)ÄH’4*6f/3}½C7ðZ[ç’ÄBõ­tt)RÒ£¡¬Ò}m˜$tqñŠªÑ’32ò=néÁ…ý”݆ɟ£cÕ§{Æ\áÀÐËÌ@GÞ{8ørÍ$ "‚07ÌP¼Aä[_ªT8ë–¶‡‚Ê”Ks¯0cèeŠo«ÇwÎAbÔ$ hªG,×WÊórb ‘×tRoºœ„’;©ÕU;¶(^“{2E+72NA4†3kÂM£%ÏûSIóœ !O—4tÚÔ™\—dÊ¡Ø[±qZ?µUéÜÖæ+Cæ…7õ¾1’ŠÖ1\œ¤ ºM’¥¬eí²]ÒßÐGFf‡}†^‡â=kÔ3 ›{ÓÂ(³¹ï| <›`q`ÂF©kSŸFƒ¾°h&Ì ô£4Ä¥ºÉåõ,`Ùån}~ÚûÙ®"Ñ®USºå{92$Z¨ÖËe¤³U…i#SLÕkDHý?$TÚ‘ñëØ •ǵ$„}QŸïg( ©vÕ1û~  _%µ@vSøpç Û©7­?Ü¡ÂÞúµ“÷¸ë¾Wµ}CÃË)Sü‰ÕdÔ$•µ{õàqÎ\•—Ô¸ôjÜ›#«IŽ ë<MºF]uú¢’ÂÙ£’z SRæ¶fó³ÇøÍ•B±•M~•­7ÛŸ™¹[oWŒ¦™„o|­Õ{s¬x“vÌz>¤¹Ö¢j ôKgŒ²«Ç÷Í$Z+ô,UxöÌŒ­]S†SÄÔ¤8§ÎðV¤ú¿Ùa¥¹ ’%_äììGÅE÷ç!†ƒ’S"*;1—UOÂTY¦\é{…Úœ±®=v©•½LÍ9ª²#ÕE>”ÔAJ`’¢J0… îÝ9•ÔBgœ'-2“¨?K‰3ËqR×å¶Éfê^6 ²‡îèᛆ=ÎwMuMÿ¢’¼Vy3÷E$(×5Ò$¶9ûü™pQÄ2£C¯åž2LJ¦µä Îm¶÷Õâ3–¿ ÆTiy+ˆJ ‚@×\IIT&ß ¶Ž ;$(û'ûò’ó ¢8ì{Ä+èÞó „çž°ÇPÎ/;PvÒ +j|“CüQæXL)êž¶mŒÇãÍÌÌ aºö#Ĉ=ì6çá6AÂ+Dl¤Ex²Ä÷¼ž>ü¦ûA¸ñ¶=êÚôš<¼ÇûOïøåŸÿ ÿÛ¿üÿòÏÿ‚_~úr WÂïß~ÅïO%¤ßðîŠûÚm¦¼¼SP«&Ãê c(IÔd:ßœŸ’Ö§Hš–G¤ç”dÒÍ’^Ùɼû3¬˜ŸRJ{·ÞeI`ñdƒîÙ`²0¹:ß‹ ÇRö„Mþ˜.;DQ5¦Ø¥° gˆÉ«ŽŽø'ÙàŽ’ ÑË2Ô!ÍYAJ—LY—‡ç žZeÿ]ëI%†&hœŸÕ ØŸc)Áq Š¢[Hxp¶œ<9ó?ˆ0¼Yȸ¦ÆÈ7”‰ÀŽKÍÐ6™~Ûš³MiÏ· ÏtnÏëùl%ÁUZ×Xï\ï·Ñ"˜"‚‡ß4‘`ç=v»æ>=£/ÑÎþ,%éȦI`Ú–"!”±ÉÔ1yÊEÎÒ4fxÿ{!&°¹ `gàü¦‡èÂlr 8s鯒C)ÑÝ\Ìu»‰[´ª‰©§yÿ€@‘ò$;’BHHq· – Ý´Ã’x¥æ [qÆÓNx)ve²Ù1!§Œ—Že“æ)`½QaêRÎ:Fé`ï–ÞX¹c£Ž\t]©û<_ñ+8“ ÞMƒ©&¾eš;Þs’¥ÎôºÀ¡L%xrð¤(ÅYC =ëFßí´Ï:ç3 óª“=û¾«îç Pœ]ë£üde~½~Ærœyñ ¶?ëÉ’ýÏ‹ºñZb{zóØ+ÉÝꬼ¹F ]bŽ,®ƒ‡Óuj%W?{ÜjŒ|Õßi¸ÛâýŽ÷Úá¾NLêïxÇñÖø¿ƒ§s?¾»cvÅ\Çt²V¯Ìݯ®ÁJ6|Æâ›^mØÍ”<°N»Í_ø÷Œ9=ÿ^ñ ²1,ך³Ð–;þ~W)¦W,œµmÆù÷’3¬)8\¼[ CÇ_“9±™Kê`>/pǺâ2ÔÞ‚!hç¯1dÀCƒOr(‰l&DAbjŠ<î–1€¨¦R'ý]ʾ¾þw ÉŠºPå*t\C‹¤:QCÌÒBg¯›æ  Áûo–â=mjºLK[‡yÌÕ´>w·f×Ýû.$Óì5Y­|Ÿ²3P_§Ž!Á5öÆ•!šª%‘›³Wæ {îÎ5!Ac,)ƒ!Y¢\Rÿ§ˆ´ÎIf."p„yÿ(5^–õe¹!)ƒÚx‹1I\‚ºw;·E9xÉÒüZÿqb³Ë.÷*FݧmSyáûû»&%:ø|áS `Ó¾cÿ±ãõz!† &쟟vÿµ†ŒBæ£ÅHxóðìðöÓâkW©£sÚ{€"!вà>xóøþùwÄý õÚr•Ÿ˜Ô‚I02AuÑ”s'£gHaÀœ]ïUrß,¦¾ßDçϘ$iÑÍåK°¢MQÑÍÌwŸE'‚Ÿf[šq7Nœ1І®/¤§ë£õR¸qð]½Ù·Ñe/|8f‡a˜ŠÆS•°³N+-eb« „ãÏ{m3]¶¯ŠésóêæpÙ€‹W);w@•™TÃô°Î0NeËíã³oࢺ-ïxsß÷Lž•'wâÛKúå2tÜÀ7½±¾R\^…Bt÷Yî¿þü~¸Ò•j©Ê……š)И'ðEIÌÆF{ ÝÀ<MéWr­–Mv¶Wß5µ?÷"ÌÃ<˜æ,’;&гï8~×YwÕì Öt,Ê—Áx9k ¬ü‰¦¦ùe/—ƒ àð½ZÇfìÙܹëC7îãWã뫆µW ƒÙkžM"|qOÇj×GÊ!žOtTÝMªï‰â7M\\a'CÈÕw!u”„’6îo)i ëT[g÷§5C7Æ{Wœ¶Þ+h>•Q¡ ˆúú©1œÏ©Ú©¤¦#€¥Oªig“”äöß©õkjl&25@R*óRçS}<1u–'cˆÅqPa¯}MCi8«‡Oõ!jíȨá÷Ê”ç{¦‚•zÖP˜1<﮹gãbæ-Š‹ïp%•Æ2 O?íC*dòù’H9·¶ÞNå\]Ò­zÖRŠèý^~¡RÂ4 7á@_ØV×f`!7%qYúçÀÎÙ42˜†´å¸˜Ê¼ô'Ãé¾^ŠØFžg<~µQÔJ³sÄKêX¦Ž1"šœ»/.}·F¨SÙ.àX†”Ä= x¼¿™<8 š’÷|>±ïѬVjÁ \Ùw}LA¿ƒD<8®ß#¯mÛððoÝš=z§R@ìçɾë¾+Ë#[’d *³©^¯W±")¬\( €YʘR_ ï}ñýI!€ \J{@ÜÃòlE ÛàÎ?ÊÞûÚw¼¿¿#ù„Þ¼ì NMè½ÖüþýÛøýÛøÇ¿›„ôHh§+€¢?÷ÐàQœͨ§©¾gÓ–E|!¯N˜6ŽÔêE€H‡õ¯õ°t3öð˜2xo/ã[ ¡ }áH:uÃI›R˜WVÁ•l¡—@§”tºª›õzØ06߬úïÌ>äé¾O¨Ž™l^{:; æåþÕZ ŒuüÈÖêLÜW.ïÔÜ÷Öx»5vU¦Š|ùðÐ vÈ%Ëäôà{Ø(jÚaÿþ\:Ù$F‚šŽ9~ƒ3Ð)A ¤Ý Ç+p¥Q²*'{°³bÚ¬ì"@'q«ïŸ†®¸ùméHµTGé:þÎ9uª#AL±nú-h!Íf7)pZ$¼õÖPMw<=Œ„Ïbz«ß &É3SbJrÚé¾JyòÞ•/o@íßQÑvóTSþPÝ<«•–[¢Ëu¤yì@ÍÎZàp™ãrÿ›‚µ[úyŽèm¥DrÊÔ9Rr'É[™=2Ô†ËBæ43ûo|-#ïæÐz‡±b(ÍÚüï›ÞŠ™x§Àm‹ãSgåßuµÑ긡SFWl:Üg¯™¾üý¸+\¾êKs%íi—?ð9cO|¼bf?­™Ttf:>V¾\”÷ãK6Û3²2¬j|6ÎÏÀ«„¸³yv%nçí4Èrù9fVyOëÜÎüUè@{þh__~®‹ÈCfsb&åóÓ ô¾ ð\_‘‚Þ]V¯–=±®÷•Bÿ.#l ÔË—Ö¸Ö[ð,”h½þ¸Ž¡”¥%ñdßK™ð½°ñÈ@:|˜›yÿ[Ž›&Þ½óÁ¬á4™©EiL oDE|¬a¾Àô­ß dëIµQ³w)~sg{»,ïÓѲ£?ËUaÔ¬ˆŸ´c>¤áÞ³­8™¿¹ Z¹ÂÒéût@óËÌC‰´YÌ%%Pƒ$HH )!$“kq.¦µÁNÎ!†€°'1x!°Ûð`oTê‘¶Gv–ϪŠâ‹·q±y˜äÉð«­Ÿdy¾j6ÝÚ¤! ’½Ì\½úÆö}/V‚Ê«Në4»ä‘pl'B ‚$Ø#RØ!)êÄKêå•BD5Ð )âµïxîÖÅ~ƒ3&ØóùDH{Qyv ‡;‰UÆ „>??ñŸ¿þÿùë?ðÚc Ëß©þ'¨+Ó*U ™Ætm2v–#05úöóGëá˜Hj㸦ªK÷ØŽõ”¥½æ?%TÇs»±ñ¶ª¤ shêó(±2È@©îÿ\×Ë  !"Æñ4P=4»½¼ü¿Ô³®r}–T¥À\SŸ•‹Í®Ðæ«sŘYSóþÐ1°p\¶6ªêƒ6 ;¥cmׂI!Ì%þ³3\‹%´ ¢,SnÇSžË™Q9¾^©ß‹éðd#Ö"M٠Ű˜ïy$ÍIW‰Jg>LEÃ>vbp‘úE!‡‡{ƒÀ©‘:y€ìXÓ·‡ÆÃ:oZñlÌn2A§W.›ð6­ ˜ÕˆùQª‰cpż›Æë ½kœÖ7KcÈZýÒ‰n¢ë3~ÏS)¥ãe*G»8HµÉN#R:¢ç3ºáèy4+ÜsÅ{_¨Ì³´°ÀIRAûóq"êßKd®Æñší@‡÷_ÇÈÎ,™fÚ¼½Ì¢4RÆTYF©õ4e²¹ŽM„ê ¨:•Þ]0;g¦ëÞ{<– `½A$ nµQ¾«[Œw¿_2d¼æ¶m;¼OL{qT…KƒåëU6@5‡\qüÉÄ[ÔL°U!µç ¶çÓ]Dƒùcm1Béäa|ÿxÇÛ²âË—/X—’̱C2l¢Øžïx† ¿ÿþ;þýßÿýí·&c÷Ð0°®öJç}|íQKIéðLî†ÛWû2sóQÐWN‹ío9 E‰–O­Ðif=Miÿüƒ0†¬æýáP•Bó×·P‹ôØä¹±­ý`Jí9"‚c…H’l+ö?K¨A /êÂAñ€ÙŒz®¼Æêï—1:§ðG6O#Ëš~ŽH(¾Ni£ôÐÎi¡5fPJ¤0óº–³‚As{^(1ùŸ=§´S*Ó§œªB襮Õgf›Æ˜™ÁäÀîOŒo 9x¿€xA$±·4º^ qŠeCã9ë½Yn[XQ€ –-aÝN%ÏLŸX% e”;iòÓ0X™Àš Ûe+4>¤¿ÇÄUú$RõTˆÉLßkT»úD`òÍÁm“­>-8i àŒ&Óǵ³'Õi #¡žÔôëeYAÍЊéþpW„íSÆTôÚä”ÜC$§R ³&xÔÀA©™TRE¥—ˆú‡›††à'WÇ®ê ËÐrÏÒA¸“Z‘m‰ \¨­9ÕãXïL§úºôì¸Ã}&~Ø:ª$Ôµ“ã"—dT{‹¼žÅ!¥)rejÞ³®úk8cÛtGÕ%x?b·ÞÇUŸ¥µ(ïKÕ•wܤTí@7žséùÊõ‰Lžóá̧` ”o2,¯m¼ñ9’0}må=s|“N¢†s²3«n6/Ij÷ˆ|ɃG4ø;àé¹WÏ\ÊZÿññÈn7XÈEdÃ|h¯ûqX"Ÿ'h||àŠÑt£tÒV‚Yî]µæAù³rCõïÏÌw­Šæ~3Úè`äàg¬ÊÑ€çp¦œ|†Y(ÉÃëÌî3Ì£3¶oVFûæÙÙ9ž\=‡W¿w6¤ºcòþmþyܽsdð_ŠÚœ›RžT1 viÝîÁvyÐÿÿÄ¢*mÑ’Èà||ÏTùhæ“öt%m®¼*dàt&Õþr–5ûå$4ª’ e0tÍînöNÕIøi_É,¥žêªõ9ÈŠZè]3Ûˆy•ðÙÚRnÏ”ÌjI×Ô˜ ¾­…µ'ƒ•ˆ–KÔ<ÄJ &U1FFT…5([­Mbh„BH´mÑXÞpð¼`]ßšÄö÷÷w„Ì+jK€@X×7p2–^×Õ€+Rv²÷+˜Í«J£tö,¤d£•dм®—÷~¿Î¦§²äå*•¶OhD Z_H¾]¹w °*”ÎyKÃÓ%Ed…ËÏÄD±žZcÀGØUð|¾ðíÛ7„ð§?ý _¾|)2Å×Çެ?ÿþ?>ÞñãÇøëo¿aÛ6xï ƒ,X¤û@fgHéþ2gÒ)­(´3¶3qæ!6ó°ë÷çãçÖ!Tê‹\OŒzýdVlýê„ »,Ï«¶¾ùð»¶eÏŽr¨f÷àìZœ*¹±=ü½Ê—² àŽè@3¶ùì³…£ô)ÏWJÏڪϟÙúï Ç~>:7ëòów–äy¶VÎ@~ú¤GÒgqO÷ç›ÀÔÙÙ{kš?`Pî9ƒlæuV Ù÷ª®Ñêéýž˜âì à£és¶^xJ±òqøØ‘6ɇW ÉzÀQ{.î L Üdƒœö:Qj±5~Iz¸Ÿ±Ï …·Ú]mX­HM"e‹ØŠÙQ!äه猅踭¹û½^£Œ™ÙCqÈ…K a*­TŸsŠzݤF6 AK„À‹šÁÐ`Éx’dc‰Ÿ‘ÿ•2§a—Bƒ1ª‚èæ°\zMŒˆA »éõzá㵕Ìܳt)„€eYðåËþ½ˆáe -,Š/_ÞðåË,Ë‚íùjŒ óðYv™¢3ݦ¥¨ë~N€Yö᪥L5ûSÒÀ#¨)’¶°É@-¢–ò«ûDpd¬¬(š^cl¶°møx>ÍÓêoßÿüg<¾¼ám}òxüò˯x~¼ãÇp ¼¿¿ãù|¼^/³SqÆ€cK=ŒÞSIMÌý{s•k€ÃùÓôŽÅgé8|ë•05àÚ×·½RŸ>ØŸÍ{P–4J£Àêë™g(º–´¹»Ì«IмÖòÂÏÕ\g}Ññ,Y$É,1Ll0Ì€Ju{(¶&Ì 7ríD߀9ÒÖãn¨ëëR'JÖ }!wׄ·IF|ýt0B'úN‹ÖÛ©È&¸/DGk´µê&¡ŸT=‚öi^“Twa ÝKä×35ùØ$Ç›ïÝ7Î&ñ ‡b¼^wæûO‡¢šª dV@|Ãè$uñjéŸÛZ+?ó£ºJ¢Î„¼O²ì'ǦæŽVÿ|jUÿYöÀ]FÛcäð=$Y:[›gì§³¿?Jí»‡ óéõœ™äß—æ\{T1\NýÇ>Á¹Jà›'µßƒÞ#âLb4’öë+SilÞ§fŸù*ùrÆLyÀ\]û;×x4©¼ôc:\«{?sÆÀ9$ªLëšYm3bf÷ÎîܳLN꫞u¶fz†vŒÏØrWL¦þlC7 7ûÉ­{3úŒŸyngçÝû€Ù5º#¾wÞ\¥™R11î¼$áZð©È“­¸(wvùg÷Àj>_S#äÖÑdžþA îö:PÃ(ºÅ®=óÊ`Î “(~ša1“h×!=ÃÏÄíßËrþêiƒ¨b}ûÒf‰]<®bÄ!a-3ì¥Wâ‰D©ü^²BTÄh~fþ‘‰Àö dÝâ.Ÿ“l*®‚W X‚­½lÉ1ê3j ­®ç¿~ýZ^'lÉtÞjfvv½B€Ûv°"ïÇü´’Š(ûÅ,ÝïëHƒñü÷GQvü·ÿößàœ+É„õ0—ˆðýÇ7|ûö ¿'™_f”…¶þÊ¼Ä Ð3Yƒug3‘ì×CB´¡Q4“y‰^X‡h€Æ l/ˆ„×GÚK(‰üv ¯#²Ù“Ç6Õa0ÈeVVP™ýG,Þ7»Ì6«¯vO©~Ÿ3EϼqGRã3¿¸Û¸°þÓA`û÷ê=@Ž&TMŸ¹§hçA—–ávé͈¬ßNÿ®ÕgFd1À œ ü `x(IQ Qs­ÈLá­!(3[œÙ€/#Â0<ìL3æXàXÅ Ïjãc"°30Êy‚w\ö“ î/>)Ô8³¥z…kÀÜc8…ÏïQš`B^­‘£½0ÌE#˜¸ }AÃÉÿ%žÐÜÏ™:•j\5‰3ÖEýš¾qÚ ÚÓÒ6iMÉœ¤‡ÕÎ~kw¨µ&µº§»lÈN:¼{1ç÷¥C*TMWé oà–¦æ>&:rYPÊib)uzŠ*Å«ét’ÚO8gÍãhci‡}4¤Œ^IOÆÅÀ1­§¥ðºÂ%¶QGÍ/^N“‡"ûhÖ#˜ÓΨk>'g×0w`}ì’”ìï0§ø‹d ¦O›«5=TÌó}\Ò!Z9/铆x‚”ÆáJRfm¼ZÑAË{¹¦ðdjÁè½ñlVó„$“ULA,[?ÔhÍëÿ_«2ÅbdbÝ7#¶Â¬€ÝOi¤ÇM´Nó¨ 2%œéTFT'g äͶýÔCÙó€ºÉnï}Õ§­è¤!£ãõ›ˆç ò À{šy”‚ž!w¼qšó¢É€ª¶´CöHÁ>IN½zú‚ïpo; üSàå 3¦œ§ OµÇOŸŸ ûé Pœ×£{#¸Ho›KŠßæ:PË´:¼wÿüÉÈËm—Þcš”¼ûndÉT®Ij†…šý|0Íd¦g¼39⌹5TG†­æs”?–ÚŒz0¸õíèýæú{Ó¦éÏ¥ î0É×Þ,ThGñ®ëÙ=Í÷o³š}íðýéHÞl®SÅ¢.r”‚ËÔ¯é<ß:º,Ï&÷;lù¨Œ“Û½ƒŠ¼¯Çò“¸ÔKÍ­“ø*óíÀ:<ו40ÑßÒëó0Šš3éXe¹×{ÞmÅ\ì­’_ÝÀsªc‡iÇT#µß³ Ñ<è¥Cš·}|â.5t’Þy<äs¸Ô ­NYÆy ½¨þ$×kÞûÄ Kk-!Å`<—óTûߘ„mO–³”A“‰Qa©18±4à%[„MšÔ°W4ÿª¼ïd€D4êôìñ B|¥½Æäu}Û=µRÂø¶mؼÇ*+V`ÝŸ_‰z™Üý §Ù¶€%žƘ?œ†¿™â½ÇÛÛÞÞÞðëׯ´Ê»ÞûFJEDøåËÿò§Æ&Å4ʬw‡uYáœß÷ýj© AƒÉa*«s  &D&lÏ8¶^ö 1±S’FÌek Ü3Ô~¬>i1Ä®iòË“Üó²É{ChÀ¡Î Ù«`Ô½Žk´ì®ôœ13‚tAâÃìlË>YHëW†,ù¹Ïdús1ŒcwôBØçµ¿‚õ oÇPªÀJò^J’Ð.9d5•+·~Ø@êí bªcRëÌ_ P¨,ð>'œSÞÛÊ;“2ÀéÉ/GùèÊ'”k-–øhÓT÷½]AmKTc Þû&Õ³(ïÞX3âúu½ÚÏ_5y9…°7&>ó{¸[@Íœíû¦eæD?š“Ëi IDAT€õ–5š®¡®èÈk“ê²í3ó·>ËÈq÷ý÷à¦91`´UäÚ.ßš%{AÅÙæÆ Ñ½)a6ôTbŽü•£Á]—j3b¡Œ4Éõ?óÐÙ_sô†·½'ÑŒa¡„ë+N=eùÕ‰zGcm×±Ôv‰U¦çF“ä¡9ù™lÿýfÞÈÜy—OÑiÊ¡K”~Rq¸¦“çm—Hræ8\Ì{༩í=®Ø+#Ðô ¸˜%;Õ›ßcüˆ|:e=&OÒ¤é)Ñ?^Ým&þKû:Ö0ž3S)€gio½|[U‹dqv/gŠQÓ~×xù΄ü,]ïÌÌúp/éœmqõYf¦šÎ>½>Uß=;뤚3Ÿ"@LÎÀj@¾O¤Îîßgl³ûw–Ú5À%æQºÿœÍ†µTâ°—"L¦×îì8óÚ»ãËö3 L}í5\Ã'ò½³†YQ]ãÆ{P=›ÈŸÝƒ;éªg!5W@z´NöÛ>QøøÌLü§`o ¨§f“ÛAŸ¢¼†ŒqLϘvgÚMÞgøp®÷˜˜çŒÓžU™Öw¯•Ú?>Ý:ò~˜uü]/B(¦ ¼NfHƒ+[[µ!- Ÿä‚ì–dv®UC˜Øû¥–ì%è{C˜e¸A›$©¥šNP“™w.õ?®Hÿ¶ ¬Š‰¥#*6Öä†lëúuP”¥åÙƒ*Ë–òëu¨®Æ,êzÅì}+"EbgI‚•u Ìüý¹mÅ3k]W<´ÊÍwNXîRð¥ß;ð²IQ’é¹·ÕX¸ºÀ/ÊÛsOh£Dºúrª½“ ζç`¬0C³ˆÇÛ›ãdÿS…jILõ¥€É†Ø%°A`ê ±;xë+ÍÈ[à(PÉÒÆåà„}d¶,ÈqLÏÅ~ïëñCz}ÇÊ›1tU5©wÆ}Ï~ŽøÃÏ¥>b ¶k’r³‡íçSJûFWÛÿ pòZc0iÙ[2àeÿ-Xpl»„u{¦Œ•Õ?ìòžeà ïÎÙgàXxEXÁ¥4B*j0“ #Σ<3ËêàO–é\{ÀP¥ÅŸnXO¥×ÕÕWƒ´;¤¦oòùô2«2‘œ˜ÌŽ<FÅÎ,F²üS£8é¾ìeT.OR×ü[›¢Þ:ÈYT,ï"n¦”ÀÆ–´&èÍ7Ñ0Xˆ\3}OD)½Aš¦ßð;(4†ÓBuF ¯“d²gQaˆ+g2»éϬý1æÞ0?/Q0€&ñéèâ}ûb½Ië™kvŸF âq-_<—)y¶Nó¸aL\>ŸÚ>ûG`žöÖ•‡Öéìy¹Ú[zÆõìþü,¸~õ«ß榾tÉ6»’Ú]=“3)èÙžw½¶g]ÝÝ3“§eÖVI|*` ðÊÍ}b̭ˆÎ^w2´ª8è©诱vçPöž™â\-€$/Óc:¡ö%%™°z²g}nxtû¹Q¡ž]gYiõ>š<•¸îÍ ôàÔP†•Ÿhks‘ñ­öœÌ´RU(“™­‡–µe²¥¬+ÛuˆQbĶe€JÍk³Á^I¾h¯‰1Äçõ`ï "xm[2€e€“NµD>³¼bbk­akh³Ä0cùmÛÌ kÛŽ‰®åÙˆÉl>Âseðž>_Á˜5)±ºFRïåÈÀÚ-Fèëa/_ð‡w÷‚‡±bh1àqc…r¢<Éù–à¤$YûñÇwH Uİ!nÛš•¸añ» ·#€,®3±k¸ñ)j‚„ÁøÇb¬»±B$2!*p•H¾j5EJ¬‹‰_î»28yìá©xêI³î^Ä ˜¯s‡ífðUÓwͬX…6Á}`$ÕŽ·ï»‹†:ë_Ø|ÂÀtü ¥åßùÁ¶æØª/. löؤ’ÌJ`’Šámì<â2a ¨Kjf…c‚'q 2p ³ba†KòC†ÍMRØû>ibVÄG¯óÖßµöì<›’ÇæþµÂn†!0sËÀj 'OàÎ6ðÑ&Îì†EÑNá»Ó_Qé{߈¶ŽÉX½öLª« l"žôœà'Ú*… ÄÔ0uöéBï¹ÅÉ£.›™¦4!CÈ3Kdð}3ÛA`SO•ïTô ÀÁŠ!B=õB¹0 .@‚ò´á¨³†t$A©T¸KÉ;NäÝp}çb V&¸ ¢ˆÛæmÚÎ…ÃÂt@lüã ]:7÷¾éÄS6‰ž4ž—@éP–µ<+Ø‹‡•ÐOyD]¥Xõ!uCWÓY‡ì”SéW»ÌY8³û}ý}Ïü´>{fk¬ž¦ŒåÚwÄyxôŒÒ‘!&®g¦çwÁ¦ËîŒQr: üÌýê¯Û•ö ¸úü=ó¯ŸB²£)ó¶rÏ/³ûÅ|™±ÚÛªngLÆû /ýé½h$Q˜ íF×¾fFßa#­õt:Ì@øë=·úù*—,¸;5㈅uÀºZ‹WuÌß_%ÍŽÎá[Ñ-°„NëóYºèÌôøš¹L÷Îsfï!¨­®Cw™{3Æ~FÒ®Ÿ¹¯NûZKûe0âtÿ«?§'¾õùfÏѱæïRÓ T µ£b‹½G^¿Æ¾‚Œ-• ûËÏåÝ#5ª%Ø…°³¶LÒ'!b‹f€þ|>›±Úçªþ§ ÎRÍðöö6í-rJ^VÙT"(’E{Ýk}Â{ Fúøø( W–.µ¼ï&!ûOaÈêÏckB-aÿŽŽÔÀ;(ôi̱ïË‚ÿëO¿Â3áëú°ZžvÕ{gFôÑ~ßë’¼—Ÿxmˆ1à·ßþŠeµ{þñažÍÇÄG|ÿþ Þˆdl+fxvöÎU>kÆʾQ.*Œ-¦@.h$¸ ’$i‰§$ž \±y2Á4;éíB.Öë°FÒü×=±¡o¢.Hc¯[-¥´«rßCtTÔû3«Xós÷]®—¬ZÉÀª ôsîùlo]=æž'¸2Ëp ¬Þ’#8oëÖ'Ï«J9!!1 »©C„òó[³±ê‘Úû¼°ä:Ìa`¦­§Õl:«—}¿ ö´®¬=wC¶i69¡ósÉÏ,~¾4¸tv„´M›ÐJÓ|áC ]’J%O%T&lµ·Ž¶×#{¥ñ Ê€XNã)ž2»WÔÌó1&ƒîFç;ðÄe*P×Õœ¤ƒ£æœTær±Jg|6=ÅY×ÔÁì1›†Ï%c6Òg˜$ulkÃzÈ©s]ÒÒì=Fg-ôÞØx𯖺ùûÜ™tϚبñð}†L•²ØÞ¯¾Pφy]D©w{úf÷Lå!£ð5³«ï_ÿ¾¿£4L·acp’”v´ší³¹;Œ´kVÀîƒshÐÞÛñÚݯ‡ÜZ;W„˜§øõwÏûàtÚ¦«¶)NmóÍÏ3å0j$œÇïÇeíÌ€ŒÝ¬užbwº\3’úóidz}ÖDŸ5ZwÖñõ¸Xf ±Wl€ö»·^GЖO¿ÃÕϺîfÍþLª»¯½óFM9é³Ë˜éùuÆnêc½Óê¹{?À­¹^¢}6ð™Âßm~š­sñk$¡½+å½³Þî®Ë;l®‘¡ýg á‡àî‰ËÓu”¦3™]®kÑxÌ™ˆ{úá\bÞ›=°hîSçwf*ÿÜçÉN8úÜõp—Gà<Õ)Œ‘Š ì¥YÍ ÔìÆY,Ü[„äÈðœÖ&BÅŒº®¦óìÍJœ’Ñ5û)Db°µ¼ ÈémµI|¾. E fUBŽÐp°Õ€ ɲBÙýDöáà¶Yb›÷+ˆRbzJ}tnI?3)zDA.3†Â†ÄþÔÞû·oOÀöxÃê=XäV] „ /0)X8:° 4Ïí…oßÿÀÇë çØXX¤XWf˜§•sx,¶¾ v„Õyx·«cç¡„¦ÏDNŽd FÀ !`>@ÉþIZ1"!³Œ‡çÎ^W1²ê¡ìmÃá]b*õÀ\Ï)«ö$ÞýÂÙ­Ó‘Çʨ±™5sÙn6~*Ô±Ù-5¹õøi @/OKê5Ó{ô ņ›Õ¬ßñçÑfýÔÁ9ØÔNÎG ä,Hâ®nþ³ ¬Ù4[_¹(9-]°gïqæEg!r:¼Øï ®L›ëg¨ŽM¾ò]Ýßã:¤)ëê3¬–Ï\ßúç RRЬØê¼q. ³Ãc ÒȼÐxPŽÎ½<‡´³i1Qfgþ]àìÜ‘•i3Þ»ÖÙýoŠ73‹.Rˆ/`У÷ <œ¤åÞq+Ó9®?xÀ¸}øªv&ŒEKjsJÏ"*G¹™C³Vj‰ _üþQ¿Æ€¬9“æN—M í˜f) •¡4’­0tÚúóÏöŠr6¸.Jb´Ã“Ç•sK“â¥)!°Ô|iøˆI(·s$$ÖRf©*Ô™âÄç45±Ÿ¢ Š †vÞ/ hzâ6°Ø{ð¦Å3 @“b4éÞëõÚg§lÀÔ²øb]²…–Õa™¬÷Ô<032#+yd½ªº/û^yïñx<ÊYõ O#2°âãýÌÀš€´f€% eÞ¤òû=Rüñã›ÕXL5.lïßADx[ x{¬øúx3sw¿Qðñzâ#¤ë^x… ¯í?žøÛ·oøí·ß$?°83ŸïXxÁÛÊx¬ H7¨œ'cÚ°³°%<¼GÐäQ&;¨J4ȹª†“–EK1çÔ#"‡jXp‚höhÖqaä9¨ªéŒm½;Cçyµÿۂ˘iLÒȵN¶pÐÖ&§œR‘8g£)ˆ©\γޒ2oáR„œ²§ðD`×bÌ€J8ìùT Ò÷ÞÁÎéç;œ³gYöÌŽ"Œ›”Ÿ•·Œý~‹Ë Ÿ±Å\¸&ø…A*–BÈ&GÌ`g¶_"Ž–bÈ çlíØu %…²N¬ý™MtµîJOnÈý¹–ŸÙ¾>È?ß{v¥q&¨ÅÒäF3ã&zÛ6¬ëÛмNÕ«æ¼°¼Onôi£›=ó$#‚……T!‡‰×™˜ T Sç\23Ì©ÎyxïŽ,¯’îÆ9h: ÷¨ñŠ>—ä…¢õüC4Xú&3 Û”žR"„&ÐBˆÐELÿ?Z²"¢löШ€¡Ý *¦ÓæL;ܽìÞŽA„ãžS&=åæ@®`Húæ<íñΗb`Ÿ€W:׺ðÍZÙŠäX+Q€3B½,å3•røÙ«MO«}“b×Ú š¤£Îƒ½C6‰¢¼–zÏ,Þ/f>¤ªÕ °ÑÆ]¯ßS"SÀ“çHÜuý"©ˆ²MK¢M½txÀöó › eÇ&KDŠIvìNY6¢Ÿ›Z‡Ìvsû$TÌ_™|·)eÍ{ÞŒÓ烶„=·€ó>iÙwYhñXÊi(]3èÉY䳈MëRó­*…nž@á•‚¨-¦íÏ3@0’‘Õ÷vÞfP´î;²¤FÒÏ‘=)±Ã³M£¾tÍOûyŒ .6~Ä ëe3pצS1€Í’o©b¾OÓþÃ¥¸“T§¨–´ÎQZcÖü׌Ùrí#µÄÝôwXW»à¸1_ NƨŠylökØ;+:l?ŒƒiûÑ[íŒ6SéðtÈçal’I]ÙƒEv K볈¬¡²Þ{09–s0?›»\Í~¡N^k™~åë˜ý´uâ13†­ßâ¥Q1gGWœ1lvû€Ô4Ì µe {kZÒžT:µ¸íÕV˜1S¡äk½T #¬—þuWI#¥k&s_DΆ…½GÚlð˜ˆåõ4g@«‡ÜX¹Æ§LÄÚº?G?Ã;ójë™}¹ùÍÏW½V[#[÷é­èƒM²ïÌø>PÅÐËÏ]Þ7뿤'Ó ÕuUh¬YN®<•Š4ˆëLß³q¹æ½š|Úî,±*U«€`®J`æŽDÍ`¤Îê䕨¤ã!A³µì§4TËçCúï|‹ñ0+éšj¤+nIk/HõªäÉäÍ“<@Rõ>•4ÉÖÅÞØ·é[©¾âÅl)œ³ô9·”º[Á À6§^¦„3¡ tïû¯ª¥w†´ÏH2Xõ€šƲ~$°KÄÖO Á+8BÈk7S*%Jí×?ý‚mÛö”±…•¬ÿRàñåÍÎv籬oøòå Ö‡/Š•#^¯€çó™R*½eëÃäÎA¯×+]MQÛ[g²ÇÍÜœ3É›F¬«7Ÿ/ …q%ÐS„á^þÉý‚õá‹ÿ”óÅ—·ÞßßAªðžñz…T» óŠ/„-"¤}CT Ѯӷô½$y(þ×ÿúÿÁ9‡/_¾à÷ßǶmx½`ÛžØ^/|ÿö;¾}û†÷ïßðþñ$ѳK)‚gÔ)@ñËÊx,0£°ˆŠLÑž|16‰¶fD ÁëbŒ.°0T¬V÷Ìøx½ŠíŽwi•I4ðJl•óríH¥f ʽ—i™÷!h¬žq®ö¦Ï5‡6„š:˜ àÅݹf{@U¦Þ‘²±=[ !‘tì#óÜs¤ oAeŽíߥÞN…k”P’*3F{²¬ÓäCµï‡ †cs33òÙ¾4ûÌWk7ŸíZŸËG¦åŸùy?ûk&œyží+‡gäâ1Ø=N1ež…ÜÙ+†¿§Ü<òÄpªRLÉÀ$IM)™ŒWÜ}JEƒU“öBê~Îaœ›ø™ùÉý̽ê$%n)€*ß·½±Úm7 œÚÄ&‘ý³%Ñ¢§ýÁÌ«-§ªRñ¸2»4Ò0Dko««W, •aAfˆåï¹,’†Þ˜ºÃÙ0?ƒ¾Þï Vo>R¯—½“wˆIN蜃_í:G Å»ëñö†euñ…<øÔ'<ÖÞ[2¢m9,~÷5fŒ+=Š †'$¨||ÿØ¢à?þó?ñç?ÿÞ¯p‹O€à ¯5nøøñŽíõÙÂöÂñýÜ(ˆàHÍëÊ3œ_±øvÀêòùÈ»z' ‘aƒ£‘ Bb+^il{”¤ˆ<˜Aoå6ÕB¹Ÿ.=Í¥_y¯±uiŸMJ/åº> «û’¢G'ýk¢0Vëjpãy³¿—ØŠ.RxõÅ01VM`Pº `f°¹§p@á%‘{2šŒQ•ÀìÕûRÃe©Þ~Ƥ½©à}Í\†£ùÙ/\Nß<›´K‹ÓàÔîy’:3¢g¶TCÚwg`q®Ín(Ìû¤êí½•°÷~ÃSUNj+ÙA× œ½^¯ÓŸr–%<5ÑÎŒ‰þpª ³æ½§žS‚Æ€ÇE»¡Æ÷l±Bˆ Âôiî±B£ ÆÌÚ–$…S µ T6P pj êóÇwü“ö½|€™ñþþnø²A£@B„#…w Vy“¹ê9pLX½Ã²K `R3íN@hfZŘ}¼<˜!ÈÎÐO@__§2§ÁhWǯ¢e‡ÎÏ·òü‰‚*¯7Õš Ì{ý_˜ùÔ ò{0~÷Ïê>rAZ§ y¯m(¥ö<Ksƒ1ÀÇlT äá¬H”+ààá]ÅΠlb¬9`]b:k“)|uíYçSÍ©Yç Õ~6?3q?3nŸÅo–{ÚQudg>|c@jã¤÷>ÿ(<ܽf`õ²Xî€^¡óëxi\¯8mü¯˜3€f_'¬ÑÉ™Ž61<I²†}ÌÀÂaÕ³0›ç½{‘xšª5k î69£ô’^ƒçç]³´·; ¬+0dšLyâ3…Éý?ȸx~ïÇ©q}*¢;x%Ð'@Ù3`êNZÞèì¹ú¹­ìè犵9êšµ1I®ºÉ>cž>ZW3fÔìß¹íktj0~7õìŽ÷Ñ왨ÍÕŽd IDATÛ÷žüþä<<¼/ôhí{Ÿ¯f¯½ã7tº“Žx~|¸ba]wÖÈ?‚™÷à Xbì16¾¯¾ß,ÌäøæŒ2=°1Lk€l:À®¼!¯îåu9Zo³ë²³ªÓª‘îÊ5o¸2³5ðM&ËtXÿ;cÅ%ÏŠå›À¤¸’F{#Xí Õþ_Ëq¢ 1šŒ‹a¶1Zß yeç(7ÖéïÅä«•Ùæ]ÕX{¶K´„÷åïÖ¬uçGcöŸÁ°"oc†È˲`]×RÏÖCë×kkdLµš‡ˆðžÁ²Ä*ƒ#@baM½½½%Û´>ŸxÿŽû×Á?°½B üZØáËÛ["í|’Fj4ctATà4?#¶ç°DpfýÅ€/ËŠ¸}ÇWï°2ãÇÇñã€çó…ˆ[HÀ ¸Å§5¥°Á³õÑ ;xG–0ç-qn]Yp•V™Û´ÉÒaÂòÄIbê½·tAUl hȘŽÜŸÍ]òåg† Cvîéy:öð4¹gV”ätú 4iêñ“$©0+³,R’¤ÿkvTÒü5¥`®© ~y,DçÌ?â@ˆ©õ¤Ê„}(Jz\¦¤ˆ;Èävé&³³ïö'‚Å9󲪆Ž`@WúÜE6Èõ58úûf‹˜º&­{ƒìÜö_ÒxÃõ,¬ºÊ Óæ¿Ešÿ¿{[ù²·dÒP¯ÀøþÀ9Äp}b)%Ý"!x5ë¥dÔi6•¹aHèê¦êº›ÍUª‚¡l†‚g’ÁäïÃõÏ«P²ÞT—4–¹°v#ö,•Úi¼i:@mS‘Â(JŒ” d©%˜¤PÒ¨%ÉJ*jdñ¢'™l®1㥉ŸÄÙF2“ÕŒL`Ïš™fI×h&ˆ¥k9fXEÂÚ5Š¡?°dô(»¹ùµ¹ì¨)ÀV¬R(íÆ·Íu1)LksxqvÈÜ2D=g‡g¦ßóJîuöÙÀÖìn"˜»5ÔKŒ¯·+ÓÞÙwº’~t™7›?ÇH¸jüÎþü®ÑùPÎ…Þ,üÈÑ~–öuÌ'd©W ³»€Ò¾~â)øÖ{Cí?Cð÷þš±Ì΀À30ä °:{ÿº8»bAîÙgÖÒû42õ¾b¨Œžõ3 bü,LžŸ*Ñi”xÊ6jÚ¬ÿ#¨÷À믗V~õϬ»~¼ºòŽ5ìæI™L”i²Öz“r÷óÏÍgÒFö½/ÙN4R× ã4¥+ ðîgU´¡Ig,«Ù?°«Œtüƒežgçê@ò’!ÜüÝêç&,ª~]? ³¥4èÖÊG°ê (…;)º`‘$+3ƒl‚OÆìexŸêñ ±F5«9X÷ŸMÅ—2³U2ã!& ˜|²²›(áíí‹É d€eâóùÂ+1“v¶•T)cn÷(ižÏg~žÏ'¼÷øå—_°®«É«÷Ìï[ƒ-¼#"¬ëZX!dÖ®$I£$™bØ@%àµEc%ðêŸÿùŸíº§¾çË—þõ_ÿÿöoÿ†?ýéOq+ŸÿÛ·oø_ÿóßñ—¿ü¤ŠÇcÁâÍ›Ì;3Cŧ©"ÄÀ&b FK„7–‘>­‹7o÷ýÏßþE‹ùøÀçð OM.rJpž±°M¼3«GƼZ¼Ãš<:‰oËñ,N< ·8¨B^;šÈ($&‡ãì¬rt爤ç¤ììL˜lÿbÿ¦ib9A:ÅK"SIñDóüRדç÷¦!€Ìi&B%(àä·ëÌÊw –Éúpæ$Ét®Wø$ŒºK÷:E‰kRH]JOg² !ìØól ÿh)‚ÚÔÁ.ý ûìšR ÁU[˜ÕÎf´vq”íg{¦ô9 3lSÿpb¥Ö¡t} %i­g ¬îÍj¾rÝyO¶¯ƒ2‹-ïŸ AØ’Iüâ‹ïU dÕçìH àwÊÖœ:]è¶Ã‚Ú³ Û§¦†ÕÅ™›°¯fñÙ#Ãø¦Ð*h(=ÚinL éÖUì¥é3ëG˜šÔ3ÛùB9ü °•6¡*-Úöp5ÃÀºãf{¨©ýÙè½BÔáç?“…ÕÍÄxeó³Pš2_æ×ìÌÛé$ŒB0î2¼î0SfßóȺ8JÞó°ªJÁ?7¸`ë¸6[ó=2’èÏä›3°xäyÅöª½)ï€ú? ÜÜsï0¬î<7§)›¸™r –«¨ñŸñFÌîù{r“ž}'0 8÷‚?ƒnɦ ÿ l$½Ÿí]Í:Åά:\=%©ìà{hÃÆXvfLªö ëÄ<ºdi"ׂäì‹©³ùiI „Qm/²0"säf¶  ©ûÍ2¾-yDEüñãG#œ_cê¤Bö+¸0ƒöuź®Íù•½¯²|°f`-Ë£²7WfeèØùìäÏðÜ6¼ªÐ•,Oüúõ ¿þú+ÞÞÞC€sŒý—ÿÿïý/ø§ú'lÛ†ÿý¿þ—y‹Ý‹u}à¿ÿ÷ÿŽu]ñíoÃüÇ€A¯ «÷ؼH·€—8.j ŽžâEŒŠ/K7 ¯VïM¼^!‰¡–ÄðQ Xüj ,[Þ²¦ë“–[ïN®Â¨BˆS¸ Üƒ€gLbˆBÀºƒ‡ëפa@^Ð|öñxÐ3´3xÕ×iÎq2b§î )” °2'ÏÙ?Š èDIè²ÃŒÛ)¬t¾“ÝJlËÄEÁ/öÞzWÄ(‹«Ù†‚÷¾%K E1îå}1x©­7˜ÒßI?K êÍT}q¹þ³{ä“i{N&ôž hiÏ ƒÔÞË1¦õål S÷ö;x¶K{ËŠ³ósY–Âm¼@]@-hCHÉßïSk™A $í“kǨ¬™œ¡ÖHΚÌy3ScÓÎI"r¨iƒcP¢¢bH¥'HÔLà$ÉK|-3Cb F¥ékˆåï7gþÓØI´øDòt%/»ÕˆÐlªŸï$‹yRsæ]t%Á½’Ç—£Ý[õœ,ÍÝk÷>¹'úG1JF´ù~Ï:;W÷k®·üÑãªù ˆu×TûêŸ ?)éœ}örºuYûð]ÝÓ\’’\¦Ã}ë,¥ýŽ2eQןí³LÙÑçûY¯¯Kr-¡  åŒ> ÀøO¶»ûgÿ Ídw˜» óh~÷ly`ZzôiSJ……PkõËÒÈÉ^\{$Þ‘µþ{sHïƒÁݬNsÆkö¥æ³÷Þæß•]ÉŽ?ûŒÞan |P]Õ]Ÿa2_Ýç9ËoX¨]Ðït ÖÞ¤þ‘¿Ê(ÕxÙ» 4öËbØðÕÂhœ •Ó@ÜšB-)i°íA}n˜"æ9嫿-%°-IeDæ««JÖ%*šC!Òû;Ÿüp¨H£ì,ˆ˜1Wû^i’å…`½U- RfB™Q¼¥ªÆ†Ñ^¯É<ª%_Åȹ¸z>Ÿøøø(î¶mxó°ÊÀS¿Þs²`fjyo¯Û¶­üšµUŸÕ‹3"I /Á²¸â©å‰¿à±®X—žt øxÇëã™Ì± ¯Íä™l¼Û¶áñü0ówžés°i mo^rÆbR-õ Ç€^aÒ{Çäq%"x{[ñþû;8™´s ¥" /pl)reÁ—Ç’€ÂÂl¯'`}¼µõ¥T2¾˜j¨”BXƒ¨õYæ$À1Ч 3ŽBYÆZï{m°Õì\ß3:d:&uàéZûV©š§4'¹_ö¤r$©×J K{ĘSˆÆt#À§>nÉ&ùˆ PrŽáØÅÂî2)*5)ê180˜Žk;¤} ëÉ0&\~Æì5ì(Æ91§&º˜ñðü*¤!¬žÓYŸ{ÎD¸I½w!'¥äIBþ}×2êú¡î¯Ï||cˆ žÓ׌ Îä¤Üï`Û£jÃö¼fêPÕN Ë{ß0€úų›î)yÑÔóCR›pÏð™”mÿl˜Ò[÷I¿k‹!ÂeQ3H%õðQˆ¼ Ñ1e‚Y[¥MVÌ£*°åï`‹¢3çmâà’'Y4–haCÎ5d-€ÅiºSRµ=‹7'×™ùã6ô"+&ú1V^(9ö¹Pù´Mã*y½Kú{)TÇü~ ‹ð5)7>ŠV’QÖSC®Ù}öYÛ{Ð/è:fxÄø)žXtôWiÒÒú‹Š.Ü@ÚkÉîR¢63mŠ®´‹j;µ1¼,ÏgN®’¼6Ãi30jt›uZ®žŸ™×I ¤Œ«fŒªþ—}?ߥ´’•\´ôfîZùAœ55€*rLº€ãtà[¢ 7תM·TÔÿ4åì†lÒYŠæŒu2ÿêï^fn4Ot3®þ~“O‡u¢i­Î< ³wâÓ`–>Ø3€fàÕ¨;óIõg™ÅAOù‰ÜT»ëSÿ~ >!؇?} DNŒû÷ŸïÜ…@ì÷W†Og`ÝÀ8Ks«¯ßó{ZúYLýèwHc2èÑæÚ'ÌóaE³="¶!(HåýÃð(5F‰ç‰ÏèñsÔLöžâØÿÓ¬÷Ùº€¼ ½Ðñ@ªoD,®ˆGµä:»ç»GÏ9ãieŸ+&á¬v½Â]»,꙾£øò¹/,—}xÆ ¨Ï¡Ú»­Ô!„R*óÎZªXZD{ˆÁYŠ»"8îáGiâA‡¹¼~t^÷¬l"–†ÂœÓx«pŸv€`5ºP†¡ÌBB<0ÑÀlÞ¤éÌÕúúQ­ú@ªWœHÉx˜ÈÖdH5šD)J­êyåC­a•BKë[Q*_3ÆQTÅöŠàe…÷kyB4ŸFóÕ’$ÛK #ŒzBÎÒÁ ˆÖæšg‰ž¨`‹¡=ßÅŒ¿ËŠÇã‘äûšÊr K4Œk¹¾ÇÎ-i}f¶ÖGÛ2¨•ï·SDŒ |‹I)j^:«ÿb‰}QðñãÝî /xs ¶'¶,·ÜFØŒÅÄØ¶ˆM#¶—¹ÿ•€·¯_°>ÞðŸù ˜Ù¼½B„ÿúº½À!âõaàCðúxßH¸½ð·?¾ã¯û_~ù€â¯ý+‚ä`…yZ1°,Ž< Þ늯o+‹ýyÚ“3¸âÈÀïü^+%°*›ó?–Q €õÞƒ|ºGÏ-©g’ÄM’ï²æûÛ °3¯¬jÿW©¾ÐÆÂ&›üïŠ%—úçØž-ižqÖÝã*§ZB`Þ[Ì´Ýs:«À‰µ%`¶×-ÎRAŠÕ9øÅ[ )baS1"üÂXœOj(Ii}ï †o¸²½„Ôö%ÐæíGmxE~cŒXbž[Õ³ÒÔC‰cé<ƒÉ'å’I5ì†îõ¾Md= /ނߢÁÙ5Ó”JÙù^ÒF¯ˆ@bï³, BåߎÝÛwsýý2x]¯ºÎ@1Ñ?YÞûŠ€r”ÔçÚGDJhX_Ûû«C7ÇæB«GkÍâÙTtÖœ¹A1^à5ê>ü¬3Í}¦¸E-qçF9âe HF®í¦¢ŠˆN:`ö¾YZbœe§S«”˜¡ Š4p’ÒP´ƒƒrAâ[+Dºþ·ƒ?gÄ"U<™¤þ½Ó®3ÿ±3ÆÖ+e7í¾W°öðY#TG»žþyWÀRgZZoÜŸaŒ¤03‰H/Ei=ESœu@Ý¿§w #fÕ¾¡´ µV{žâÖÇÌ_Å™÷×µßWŽÍR¼ú¿×üŒ‰ÇË™'SÍpÎDy&¾Ÿ®¤~zœ6‚Ùvõ¬ÕÓÃN{Ñž5‘g €³=jöùï°/®ËÚÿl,ž}³~Ä€ëò~ÿœïy:e8|–¹2tÌ€a@?µ·üìùÒÛœ±g2¥9kP?ýùéâ;Ñ4ûY§ÑwïëŸsv¡žîYwÅzÔ êgŸ¯Ïø¢}ÆjäÅwÆÊ;“'Ÿ=g!5 º×¯î6j4¾»6>s^4ûÐá瞯ò] *ÔÈþrWùGéi?Ž]$„Ö)á3ZäîY©Ÿd‚ÀŸ«þ³i”’hÂT©éÎfíTmɪŠÅ?RTI‹’ŠŠï“&×x•œ´-ȉiBl€Z¨Q1¸ÖP<² ƒ 6`geðâàüÚÔç™aó*žSÆ" ßknߊ%J^ۼʿ÷ööVG+V¿eD[pª Û놵fSÔ,Œ~ÿÉ5oÁ ÛjY ¡!3ºB ‰ÅÑ$ž¥Û’@Å%yéh0Â’·0¥L,¥ˆ¸m,Í[ð¼÷øýûضÍä‰ÉçËc‹/•’lHñŒÞ_øþzáûÇ{bÒIIT 6‰Ø¶'˜"WfrîœÕo‹SxŸ˜J„b¸Ôˆ›äp·$j{Ji…ÅTp«<àÓÒBR»Þ¤®5T¹bp£²Ëü-ÀVñ-k,NRµ†éûvœ‡n¿†U}1bPÕøË¨þXåºah‹¸™À>T$ƒ#ë˜ €Ê î$„ó Ñ¼MÌ8 õõjZþÙ„©kÿOî|œ -ïX0¨*4OxSšÂñŒMjŸ2!ç¨H7ù4ý:)$FcSIåÙÄæÀÄÕ§ô´‰—£@û^nȰӤí%¡[¬†|/èqלγ†sƘ5ÌC3íΫ($tÒÜèÍOë4®©” íz£À:’±oÒ+wÁ§Â, ÿ¶Þìgi_WïÐîÙŸN-UQ÷:_@ªâ¯¯Ï4 3 äŒ:bÏø?b¾Û§ÁžICï0cîÊ5DÆr»CÄz_ˆ”æEìÙS~Ö<ckeÿ¬¿þö;>>> PÓ'7³[ CÀ¶f˜Ö{^Ñò{­ëšØ{hTþn1F„œ9çàÙ¼¢²qvÍú0à0}!P Òý×(–è!nxÅ‚D<ß¿C‰ðíûøßÿùX–¿þ韰ø¾®8È+@a?çùãxÿŽïß¿ãÛï¿a ‚ïï?ð Ø¥u¢ž‹'øÅç ž¯wv¿I”@—.¤‹Ù7Ï(«±ó>[T%äanÌv}ɱ‘,{”­ D9„í÷7“Æf R±¡sz¦¤Úž÷Ú• »&³–%)w4yQqò`Ö¢4b5ÿª A²DR÷¤½äéíX<PjIò=—e‹#@LÆç\2q¯ÌÒ]zT~ɉ„¾ŒŒ°éš~‚ÒÏXÈ…Q–H Æs%@kDøqÄ Ç@Ì’@*ª¡l8ßÏÙQ‘qåÚ»fgßî|ýˆöõcÄâÍkj]}´aùÿçûí6-þk¶ÍW Õ0ù”䂳ä×0sñí«÷¿‘×ðÁCk„œÖ¿ê©§põÓÛXÈ gûYÓq7†¾gxè°xHÖƒÊû…ÌED U¡™÷¨\’˜RJ„Øï¥Ô¤ƒ®&9²´:8m­ú«‚éŠ]uÕÞ‘SœkwbëGIÏΛ(¥¡éåŠ=Ëkðþ–RpQüPÕ›ÿ¯]ÓI<l”wãÓ;,›³w4ÕÏåãO¥°ÝY'gŒ‡H0’΢ÁÏ&àsæÏ(jßÍ„ð.ˆt‡)Ôƒ¨gMÆ#ê;?÷êšô×Q Hܺÿ3ÖÃfÖˆN7›»ž:wï™Ùgšà3¿¡; Ió{ŠSYÑÝ}w&“ú{-b>â:»Oÿ'˜½£š¢?ï®’GÓç+†à]àtÆîiÉñÀv¼/h13é÷ P*Ï-ómCÿ³AÃúëƒìûíýhî͘{3ðûêy˜ ÉfûÎ xôÞ=ϳ{Œ÷Õ}N'7gžF9°Î¼Uêú/"A^ŒÙí”|ÇTe\c§ºMjƒf™.!ɯ¨ü ÇKh ;1Q €Qˆ yUI#©¬¢Òìw@¬X Q³dKʯ÷k2…¯ç¨x˜ÍŒ= ^`6[ÉÀãZeq²ÒB­¢ñ‰i„dºž}# šd€FfdïÌŸ5yW98,Þ^ãÈþ ä20ŒS*ƒ°>81·4TUz¡Úºq¼ûÏf )ßåeõÈnÕ¶~rJ¡‡sfaĺ›³ï?»w'€ Çgõkõ{ —ä ”$½4ëŽÈïØJy/×() A©Ù™N{àó^é¨ÌÒ〣9c¥0Üì}]‘’Ö{F †ê¨üç~41`ê‚ö,}«7ëºNEÃøº;Ýo_q4<Æ2½mŸø™&µÐ#+ŸÆžLßšÝ݈ZDüÊ“g¯7šg2ìÌ<øî¯By<‰ÎdT½ñù:-|.¹>º³–Vçëª^§h òGµOnÀBl½>sc/d¡Gkb8\Åĸڶ a3³íPü®=´=Ót Ĩÿ;VŠï=–e1¿)Î ;ír½ !62sóüëù|¦¹=¡¬”¨ý¸v0Þ7Á–DÈ c#¿OþÏç{ó^1@?ÞÁøòw¾~ýŠ5l!Þ§ÆÙÁ‰OýD@Ñž’¥JØ€°C0qÛ@Û#”žÀë…—„äsöÂÇ÷¼¿Þá`À“ˆ$I£±Ø¼£ä¥äàÔänëâ,iÐÛ?Ì.%扵÷¶#é·;@Z&lêK‹/‘(¥¬±¾•×ûî[†ä±d@R¬˜žg,öÞÓêjlH㛹­('é™ÄÏÀ&1à9'ü18±®¼3 Ð3ðX} Rƒš_–g“þ:ŠX×@°N‹%õûѼ™Øä~5»‰a¿Ÿ‰/Þså¶ÎŽ…÷ЇŒ+4’C&|¹—9!Ò¸¸âífdÛ—"*•SÁÝÓÞ×Õíµ5D’±ºæÈÑgçñˆUi÷8Ðì=°ÎÚϰÚ#Ji÷þ…¡y6õ¼bšô‰AgöYŠÐ•Áï)ˆE瓯ž©’Â,õs)¥`6µÚ©À–Ö°'B9ç@Žª …ª;/¢¹ATû)úÁ#Â%ê u(g©þ«ãnË}è&¦5¬7£ñ÷éHõ÷éÛ¬ é°còWœ¦üÌ þúõ¥ÉbšNO¯¦{£ô¼³Bô3ì²04aKŒk“Œ%ÎJgê\§À}¦™·š”Èr ûŸ_-¸™L«6WV@Hûg“d¯:äŒY1i¦uçñ7Kƒº (Ì@™Y£u‡-Ò²…º×]6…W ”yóýgÿ¢tz Ï×Ì5> ¹j|úÏp¶G4ÅZf¶âp[3vÒÌstÝÎXVgá)#3øYƒØú”èåzïÍ»€Îl^3»ï2pî&l¶¿×_Ëãú8“œž=ëgûß0ùŒÁ5“õ^X#Ü ¿òú«åcƒ S8 Ý>»î|·žYvgß:[[µ1íPž©cÉÙzülÅåÙ®“Ï^—Ô@JÏÊj×Q}>+!E†õéÀ£ûr°Ïo#&µvÏ×Ùl¾—%öQ.s˜SCY¥x2AršgÄ ˆA4s¹(Ä+P×óÄŠ¥.W(‚$)\¤\e¯œ e韪àwÐj‹¡Èèâ&Mzël𔽣ê×…$vÔ²,x<ƆÊßG ¸z>ŸÆ¼*L8KV³ä²œsXB–¨Z›×gˆ+ïiÞ‡°öêìÉŸ3ŸËooo¤1ÆeYàœÃ¯¿~Åç<ŸžÏ'¶mƒ[</)IQ±ID‹q =3„þÚÞ­InœÉ<€ŒTU½Ó=cû0ÿÿ·õš­íl%)3HÀ}w ³ÚVf*©R™ àÇÏE“蘬J˜ÀZ“I c‹>gðã ã=^›š¡ÃYÇ©nK8¢¡¸5Q4åÐÀ$ØbzàËšœn—.cìR«€RÎ%'Ê“õ+³ó&|šßaÀ\ëÁbfÉ ¥Ö¶1}ž){–Ö°S9¯—ÉÛ³“Œ]®vtYv*E1%€uú5ƒäÝ”$ƒÆh]L*ósš:hmLâ‹ë·3Êô‚¨¹»zŒYRÏ´ÂÓûP$€&{D¥Oá2Íät?€a1®€IQ6\%¬÷Ü 8©$†špÈAßÔ¼ËÞ„ÄÙòˆÈ5#¬˜‚‰Ïå”ie>©¹< éó »íyMHÍÞ¾éû¤ù’ž×RKÑ-ë¸fl)(¨k)sô3Û3áT)Ö„pÄœH&{Å@¬˜~­$4½ÖìPÏÂScîYQس¨DÌ!nô•Í©T' ëCbF®¸JCêÔú3¥ÏX6ºø_bÊ׿:l_Ç—3òžVÀ ®6-ô÷¨ÖÉäwtЭïï¬À”REÜ1³C*!dšáÍÏS?9§?Ô”ÄTxgꢛ3ÌL¤šËâþõLÄh¡‹÷ÈPZJ—¨Ù@øñA|6ǦÿOI`ÇVÌó‹Ìðy)¨;-¬ËAó¡¼ê‰×Ô0½°b–†Þ2çoY{XKFêûÐw"ˆæ~H€U6”²VpÚõù]³/VÌ"š€"÷…iÝíy®—³ëí“QjÆ]¿¦.ÙEôŒe³šk#¸Ç…Öô¹V Õ(z·6pw-¥iñ,( ~Ö¿ãC¥ÿÎ c‡Eëcþ'ÀýÀhöFpñ3Çe%Æ´€a.yÅ0"iXA$¡$uÀØ2ù€ÉSzo³Š´ ”÷c® hV:ë‰î J÷Gš…“l9ì&#ÔvžqÃîJìByÕß&9Ï–L%¦Rüêð9Añð”YŽèVÍœæ}J[c°h }X¡Ö€Ï >4ŒÍt?Fifz ö(KQpJ~½h–™’)„YçO~Æl<ìÇù;ÄõA½.+óiCfØÈP x΂Lê(ù¬~½kÄz}Ÿ¥‰‘¡ôþú #‹‹„;å=ãT:ø“ؘ˦›>COÁ1§ ÍÛ ·Í” ËÒúÖ ŒEòü–‰‡W>C&Žæ 5õ¼Þg Ðkª±Ë‡6W~ÈîÄÂGI= P™& Ÿ›¹S{!&+ZV¨Ê*­‹çyÀGÉÞyž8Ââ2b"ûËdï dønâYþô »¹\`&&ýñ>sqfsøøóXkqr€óëïgòPª~å¼Ãàã lÓùYÀìqøw9ƒn/Ú0,¸:ǹûùëÄáÕü\Õ\‰áâ¹{Û,ö}Ãkwp–p_8ÞŸ0¡€qbdì&°Û†m{áõz©?Õù…Ýýë–±€?ÎÅt´À :`Œ7ª~°ÎáýóÄÿý¿ÿŸè«¥Œ¯ßoM˜7Çáu0ì=6g°;I€ãLJ…5ޝ}ƒ5Æ›UŸ$çö\¨ 3,9X²zfƒ6çkýÂ&ÙÒS¥uµÄg(I·B`ܾáó­&ó,Z³}¾O0Æn`18=á”/A>< ‚Îp"D£}ÑçFÿSÍ{˜~/^š#+!ëÔ².++ÏYõœJÌ3CA}«bl0$ F kÛ¬Öë`Xvë°Y áµ ÊÒŠíDòÔB2y°¥Thá¯L?Œ5åU’_[bxˆJû¡©Öá¸Ä4FîÁz}Îò›UÒ½9‹ãôU’dÙÀ‹¤N@ñš7g.Ê¢#â‰äÁzh…ÙvìÛžÏ)É@N>N»®© ÖZÀÚ곞ö*-YÇ'DÈžÙ}åÚj’S¬ÿOßÖéµÒ¶â¼1ŠI„pú.u¨ë…¸ÖJϤõqù®»Ôwá–©fŠûŠY2ÓåNA/jF3¤pE៱Zê×™ÉS²,Szß±›3Jä†õ±.¨%pó@ö÷îŽqÀ"·÷dÕ N›ëhìëlM…ž¥+6ã]ͽ9ÃÆgy/…›y.Ìd3&ÓÊÛmH«wÉf¡û~.¾‹`–Ú3Pzÿ‹'l‰ºèkS#;Tý†á5bÍæøŠ…W{°<‘Mr1öò©œ+Ÿ¹; Ï•¡ÂCËt¹a,ŒÖÖÑ¿§ySÑà‘gë;5Zõ<&ùñ2—=¢ýìÔ0HVkÂŒ‘ ')~«k¶.1s´0œK|¿#7š±oFó0?ƒ÷¨‹ðå5H‘Ðôiµ7ÑÊ̹\'&Lêùþט!uvÎô)ê9b­›Ì«õ¾TÞ‡ 1{!×$iÉûuªß?{o¼®ÞŸ¦ù3a¶”ñá›õz.k^¿fŒ©™ŸÜSYòåìîõwüëuèîÌ7cIÎ:Ä#às ^ŒÒ蓮ޅՌ^#¤µ™Ö{\;¦JÜ{ú¬›¦ùšÌ7ŒÓÆKW×°ý>M(ÉÂÚ½§^7s“I|)¾S¤=¸Èv(ׯÉ^ÌÚ¤·Ì“Õõ†ÓÒj~÷>I S0”qY#DγVç©E'«d1ï ¨Î-Æ^ê6ÐÄ8ãë%0;Éðr’âVD8…%vµ×èCʇŽçòÄþªÔ( §*Zxž§žŒm΢Gd0y(s¬~ÝÀ0»Ë´I \¯ "ñ–õþ†, êYeß"¸Í(Û-¦¾Ü†}ßU’ Ây€C@§>ËÖA¬ƒÙv x¿ßø<0$r!ûÆÀŸQÎyz(ÃÊð²FÁ*>v }˜öÝÀZD`NÙE7`c ̶ ›wÄ¥à/ç+Šä Žò×ÔÎÖ±`18Þ'ŽSÙ~ˆó(ú]IÀû-xÆû 8CPY,‹ÎWføD6`>Ëφ8IšæHn4-üC‘&ÑÐ"J(£DÎDbÊ»&C Ç´À8n  ص™X›±pN嚆¯MC‚=´«DPÿnãÚáH¥™Ê£ème¯Ÿ"4M¬¡h?°R©U³Hd^÷¥ž 1 RéçCÃ<ŽHühïÕ/ýùäÎ>'šF–Aë:†„–Ñ^Êi%?ïÆàë<.*©t-Ƹ¾ë7OVfì©‹8r‰™©'é.³Bí% ÿœÙkH¤S%…ÊEQŠd½YKE‘—Á!¤Nÿ›Å“×Þ™yêüøŽYo™|aP”PCÁ^€½äfvïf,ƒ'ò“ 5;g>2 ((Ò¤ÖÔ ›Ñ¼°öGÝ õ‚Ü?ü<1Û^I„¦àUeÿž{¯œ;O˜'×Õ‡Ü{ˆ?ï¸nÀ.}ßfÏÆlÍûNêà ½FüòÐ7ç©iüGÒýº]'sÐľ„¡Ô딡̺é%B‰)}¬Ë¥±œƒæÂjn=õ^»“è®ÀèÑ|!Z{ãå×bŠÙ§å4ï+Wï¯QJá¥Ó}½fÖöeCóÿ?¥à0¶`x²>ŒRHÛt7š(ã XJÄKo§™„{vn™1æ¾Û@\Ú9& £«seC-Á»Kd|²oÝË(¯)­-ü¬VÁH!ŽkïDÒCã4Øû½´ò·Zí] Ÿ«¾Q2¼G妣3Ъq˜~e¡lzGÊ L!UÊââbBÞ½ŽÍ•zlðtçˆâg%1•—g‚Hd«%eƒPd;gsvïs*!Ò|6E–£sˆ°±JSzaÇ’A¼÷øóÏ?p+Éð¶”Hö¸lÆjZ`2­·2dFdšx^5É>û(•õX“ëkK¦ðÇWLSä³1ž×Àx%õ!²•‘øø>ÞC¢ N°|ê=Ê8>dO­üãÊ>†±Féx†£½Mve’ á×ÿû¿ñó÷oœ!À8›%œÉÚ‹ýö@ÎìQ•´oN UŠÝšFI¸Úî¨l- 0cß?tÏ¿xür«jÎS%ÓøQ j`eÿžAÁ+Á'÷É8½DIk|*ôÀ£ì¶ø3+eSöOÓ;3þ8“fS»_E”ÊûÈÀDk4¢¹~J Üœs `›30°¶¹(½• ¨R&›†ë›S†¬KR»œ6œRåê3™ëR=÷é³e©^°fuñh^¥üŽH03/å9¨Y[ïêöYðÐPýuS®VYŒ®{”\9 s}ôw¾Ï<Ž ãâÚY^±žtëF‡¡ÙA\0Ÿ½Áìh ’εFk°þüw‡´».۪㶚ŒOw>@#±¿kŠ|çãpm*í»±Í…Ñ=îHcfÁÜ|¾«àCQ¢³*Ø–>(£kLOæÜ˜Ø ³YòÜÊ›iT£”4ú¥· «µCȬÀ$ú¯ƒU#†Ã à¾}fI…5=KjUpÔ- òƒtô|?y–Æ]õ9Ódæ!3[_ú‘½ÊøÆëòÔ¤ñA‡æùpõÝø÷"±›¯]+fГût¤®ÃGdêÓÿŸŽ8¼>ºg© ?ϤÃ÷䳕¾F+1 pt>&°ÑŽœ8=ÔigQ–ØT>ýúù¼AJFÏF"DV•ÞUˆ&.‚UÌ–d ¬áh¬XX8lÈ‚û–æƒH°Yõ¾rÖdÆ•‚WÊ\3Fç“H¸0œ â‹ò¤PüØÏt´Þ÷äŠ'`W}örÎ]dóO|‚‡j”E³stÆìٙÔì…©õÓk½7ó:bæj"*!\Q»VìÕ€ÒP>*´Vñè1:ÐåkfY2ZZˆY,qZ£RUêD¢\é¯3z;3Ñ]\!˜J]Åòà2:œ­šïôÍbð»ÑÙýœ¡ª3ÝŠU´>Ø›aÑp-Ç“@ƒr£à D]—ÆÚR—îÀÛÕë%Šë ð .Uðz˜^ƒ¢2y¾ï˜{O*3IWÊ0Ÿ·w÷)Ñ—i!w¸c¶ÕÏõ³ÆS¶Ò*6ÜØ{f× œ\1i†ÀRºÆxRäИÚgCïÓ›Ò$C²ÖïäÛwc8Ï,'Èm¸A DÏ™x+‰áSî*!&ÌØ€åð(X¹2PBÅ|÷||—59cáŒX^CÀ6Qøó}H¾zeTškì$w<°ê/”sF71&)ùæ¯5,iгý®|ïÕðœÝÓ›úÉõ.ñù ¸y·¦¶ë«Y¾>Oì¾Ó„xú¬|$õ“&IÏÄÿ;ëÝ0˜’/b´ÌÌÒîžIKCÕÜ×j*—í#ÕüœÃÆÐÍYß^ûê_ÖZ0 (pupë™ç2Ðç3«úÂG¯=ÉFľ¤«¼×’×.é^˜B|ÀêÃ|a"q”+2A}®ª}ΟÊRï'ã8›æy6@‡É~a:>pn2Tùî&™à¶møã?°ï{6gOÀÕ_ÿùO|}}ÁDÚK¥…éµÓú•çcb¦×ëϬý›·á IDATù<Õ`5C+DÏkLd©ÚlVNFM± êåh#xUïp!£ŽõóÌ >O„ãÀyžø<Þð|3}Vëùû Æ8|l;@Œãë< ïÏ_øë¯¿ðë¯â},8NÏã?Ãûë7‚ÿRvòA«’ÁÝXÛ¼6}¿¢4.¦Ê&~nc»5ܹŽÑ˜?`¬O‹ç33GVU1ûApú&õ÷ àCJUTÖ„ÃSdhIŸpyÖõYY]iÎQ'™ï÷K›™wý~©ª“ýiõ¹Tv±2£M‚³‚m#H @Ù` ,©ù¸3„çxXKØ·xžýssGˆ¬-“î,Ô»ÊÊ2HõKÖõÃZƒm«ÃS¨kŠ¡ò˜ò¹Ž¨×êÂüK€÷ßÛ«2 Û)z9]§?SŠß“út•:8kF­³Qâì«?/œ†ê¶ `ݱ î+²,f]©¥Ÿu熇ºæšÆÅDOGþ,]Wuw¡¾ùs‘|K2Ñ8g‡¶ž7:DÕ^5³Â`Ê´¨L„W…íPÓÛ¤h‰ ?) ûñª'ñìœíw`Y¯é ]ë28-³d¸1;gDw|Ä:‘+@yÇŽxBEŸ%k(ЦóŠgè»(ó»bjT`Œ?ƒÜ+€jÆ0š-â³µj<׌ŽUwÿ©gÊÌãj¶v O“+úsý÷p“ä5cšÍ®¹o|‡qW˜÷kkšßO#¿Ë {ÂÀZÉÞGž 3ÆÞì@qXÞ1FåAS鮘ÿë ÈßÌܧöŒ£áø]ÆW†–yî ÑÑ}'_â`­Áižœa0´xè»È³óS:ŒÏîSÀí_{ÄÐï&ó{AÞ7©Iõøõôñ>3g:¯@ »³ç¨ÉºZžt½Ÿ&˜®ÎÐïJÊG`»tULÝ–ͽËÞ8Ý'¯»úøL¡“¿DÖ×á(•— E¦ I–’e†Tþ»†šèßÓ»Ç$Ã…_£šès>#&¯ªZF·}ì—&¿2wÔãê >µ7L„"Y0${ô W2¼(L ®lm->>>ðãdžÍY?Öâÿø>>>ðÏŸ!XÁ¶m0Æ`ßöœ@f­…8n é}jðjÔt0K‚cóó1µM¸€ ùü%‡%ñš4à s}³àø8qž_ p~}!ˆà}øÏ¿þ‰Æ?²ÂæõúK‚ã8 !ÀXà|øùóŸ@ af¼ß_8¢Ô2ù‹YÃØ­…5z½›¼6‡Û«lÐÅà10–‹P˜kãoœ²š’Ú¤$ FÐÊG€É’A!ƒÀz½ÊÌNà£×•UÉáY˜àEô5…pŸ}=rÇ(-ϯþ\³“·Z¿IÄfÕà_½YYåÄà :Áf• ¦Æí›Ž;…˜ˆ† ,YM4¤†ïN ÑΖ šò'°Î‚Ù\ØK£S_è+¼#ŸÈ,›•w{PÏT‘z\!=ëOš×£½rµ–ÏþáM Ù…Åf‡ê$³õÇUNX¿K)'ý›®$ xZ¤ÜùZÔýØÑ×û›æÇÃl4²%âé &2fô…Òè`2NK,©jß•FÖêÕ$vÏÙQs‰Ï¨ü{«I, È»ŸQßñL¹†.´¹!óꦘ™³ûô»~ŽÏ —•)²í<¦®y ÎöÆ]ÁÅËÓ‚¶‚¡¶÷˜< „ä¶0X¿·Üz@ÍäÃûV{aF ‘,ºÑOAêëæ=—”ØJš1, êûçsëÝSî_âJiœUšÈ0nÆJˆF+©[Ø›Pæ H ã¥ñg’t±À•2¿hèŒÖßGàÕ‚MÚ=­íZZ;ëP}§ \± Í Sv¶–Ì€ú~§&Í“ïï×½û š¯kÏL¶×|ê¬×ó9AJ½EA4¢jŸÓ¦SŽÞ*yo$‹8‘SŠ»1ÊãnÚä»öºÆÖˆA5Pî ³9jbq‘ö†4vÊÜ(d“ÿ­]ß°ôD|"­2{+Ù'L¥Õ¿¯Î‘«3Ñ LZù>hgŸof3q×лž{%9æ µë¿TÏUÞÈ*ý»¿j:ÿºFnî.É”˜6vÆûè3F§>ŸŽFÖ)Ú$Iœ)a8É”=„¼&†'& ÄpdXEEÚóVfnÕ>SÔw)ËI=œœšŽ[£é\8ƒÇqà<½‚9qo%h8*_U@ýŠ(žÁƒðÅOï<Ï ªTÉ8ýëë >2¼Ò÷ìûŽ×ë…?…£”@`°- ±µ&†d¤†~z Žs.I˜|Ðñµ1¡LB0å"\¢-QižPL›¶E™þ-I*ÅêWö˜H šÈ<ØŸ`ÞȦ´ržøüùŒ€pœøë÷/üúù»ifƒƒú0Å´ÈW”¥qÐû¥HTGàe7ìVý•œ±Ø7‡—S‘%ä$rYG›Û2¨`ŒÑ°ÍjýR«õÄaªŸŸR×jR`\x Ê&V)àá<«¤õð‚ôïgd’/Xœ^…ÆÌ´bä”NŽL/mT¦¼æh–$ßÕ›’SWSÓ[å°È~Ž)íʆ¢dt¯É¿Ö¨H Ú7+pØŒu¤ÉƒVC\üQ€5¤ì7G Ô$V\ÎD6%KšTǧæ_k´Fâz~/Òää¡WÖ †©®‘íB·N*#¬e5çö:Pb`ÍöŸÑgEÒéɳFìˆ!Õ¦–Ê”%>ò’­½_{¬¾73Í]mÞÍÅLØ'³®nÏtéi§£ä«;XoàÝSŒW]皎7êÊõ¬YÇlÔ5¯?Ë @böduD³»óÔ™;ksacì²p«Bnö`”õs/}Þ¾;BjG?}9»J‘»÷ª˜›kad›{a¸ÝÈ".EúôE?ôJ¹óšé”gI^Íuõ`[uèèçS-¨½wV’Þ°]Í¡'¨¿ð€X…A¬Ø}c¢äÔ¹ð—ÌÀtŸW ÏÕzÛ:‹¯ÏdMs.àéëŽJ¥}+Ç{ï!³Vª‹œsø—ùüüù3‚jg>Ód¥BW¸÷LÍ9~bÚao Pωž¢1º2¬ärK"‹ML­µÕɯU>(0(×ÿçÃÃìN½‘8`ß7l›Ÿ$x¼ß‰1§÷7ð KÊœú}¾¶ñcß¶lñú±áÃ0 ^ÎáõÚ°;§¾ ìAÎb‹rN“¤¬À8ªŸ­±ÍøfàQxz†µ‚œAy:/ >2¬Xpœ!„¬& zõf#KxûŽìª$§U KŠ¿˜ÈÐkW÷'s{#£Lw ’aº%Vós#Ø£µ‰ —³Àî6XÃ*ë³*Ô„ÁCÀk7Ø­Î-A€%•Zk5½0JM1tÖÂ9›Ù€%¾í9¬–½ÖuTOò ÞGN77;‰m~5>\׺ô¼®Îܽtð ™¡‡fëpú<=“j€=iVÕgÚó<‡Ìî™hŸÌíDjú*2’˜(ôÖÚáïÁC׸õúF»>.1-ð£M) Öª¦ÃööÞ­NÄX8õB›˜Ñk_oXKqëå‹=³¬¸˜Û¶]¾$3¬AÖôL–^HõxÔîÿéWB¹JQ RBÈ©.ýC_~½9ëlŒf÷”Vpe²µEjiÌwë÷®7Ù2—ÆRCfx(ÌhY«CjíÑVRkÂ…Wÿi:jq?Çz°sVøIEQo°Èˆ0qSÒ›CÇA|NBúйê«ïoÈŸƒ“hhüu'£ô€~M{ Õ÷RLgæÝ£–O¡õfæ‹ 9¤PWŒ6£þWZ‹fL Æ7cð<ôDRtvyî:Êqê8§ô˜IÁ5žóéú%z7T[£^’Qû“Ôú¾l›Ƕ ]ɇÎr­Ò€³Bt%áFeÿ|?`.Öûc½>÷…D¢Â§=¥•^]°Õ|Ëã ë"‘XÙyÁã çÔ÷ˆ¹Œû¨ÓgŒzÕô`{Ÿà;cöÌ ©SÆ 7¼<èÛåý!qr“Þ+™6×Rš~¯í×íæsæ÷ƒCõùjÔôëö™·æH¦°ÚCúõ¾ÃÅ蚌-l5.MO=;ZÇpýJ×’ÎgýùqvV©ý?F÷§þ·Ñù±Ÿg3@ú³–hôÏËÈÛï PµLîëçÔ3yJ¹êç aÌøæ.Å2¥Úê<Ã"°vSöQ²èÖÏ¬ŽˆLƒ¡Ö¢ÙÜï¹#O”'~*³s_™zþt¤…¬¤ä¿(ËÀ•ç zj( ÅuªÝg Ãîˆì›Äl ,¹éóõ~ÖD¹›…s{®™¾ÞoœgIä(7Lf}°PV dy`Ú/Ÿ÷p Ês’ŒÐwg«´Þ§¹à3ÏñÖ»HÏûÇ û¾7kê××Wcü®Ì$*s~~fú˜¥±Ý¶ /óÒ5(~ÞmÛšgËûX¤Æ1>Ž#¯{FbBžXõ,"mò’³øØ6¿ÁgfÒ!@ÎZˆs€ì.‚m0ØÈ@‚‡œQ¢‚%B`V93^ÆAp¾URH„œ">±9‡}Çæìç›±0Ä>°‹×ë…×¾ƒ}PF‘­ŒìëZ$„ êØu¬k2Þ+ƒ*% zMHtnǯÏ/0(š¯+ ¯æþ‚RðJ”ÕwúS½×X=­Bð6‘q%q^'¶W¥V2Æ´g e9†^÷I›e“Q&h–âß-2h»9’Ûæü×kƒÆkßáŒÀ@°Gƒvgu sFÞðÚ,ÀÂ!¹;M)4#Ñ;Ë©·šD€î<»sp?vøSç«cº¡@ï›1جÓy}zõ–s[óŒ% :15GµÙŒŒÓ×m}cÇ9—Ÿ©4wÒ÷¦¯Ÿë+I]ýÿ5s¬ÆœS–åqàè—p‰$ùy{ä3¹`OHßg­kRR6¢÷€5 þ‘êÅ´/¹µñ ìêÑòÕ|6j½™GdÏêÎû,ÍÛWÏws>™0Xhé9,µ«ç¬ß'î<—¾“~úˆ=»8{ŽšE£{^r¹›«óêS–ØÝgÿ;}½Î™áØŒ>Gs ;´ïŽ‚Ê™³Jå­I²‚Ù™¨%ËoQÍ8VÃ×[P—`8@{4ûÂ(ëlö0äê2 DDÁ3…9Õ‚²k7g±Â-Ðý~¿›gô þT­•þ<¹¶hMàÒyêëfðJ$žðTÄ¢ò­ (Uçßœb˜¾†ëyZ Ó€×ë…\¨&À,„  “ª®é„ï÷[™Nñgꦾµ6N–J™ŠZ8ŽÇqàëë+•s¯×+ÁÖÚ `%R‘1þˆ¬ŽW8}þŒÖÚ|}B±in87¥OZLÖHk->?Ëgzý†kH†°°p4ŒæÈØ11UR%n*MÛŶ;¼œ*Ž[¸,lb·% «-~>=«4MM¨×†€‚Dš|‚zòzb…$IÞ+xueRyVã}a‹Uß6QCö ÚEþœ¥Š±É ÉdÄf“«…Jaí—æZÚCMİU%«ŸÕP€3 £&øäðÚÌFx½ ³J)hª£†ùnÃf|LÒDWÎlÆ‚*‚LeN'Y!X24òë÷ÛQ±N7ïú=fÈ0ÌÀxÕ„LÏ ê¯Ïý³k­Ïuí2òû©IRc'­K Œ\ªëzc ήA~mrò¥Æj6Ëû4)„Oå<3ƒâ;êuÍÜö˜}Ó/ÝñÖt»$Ô¯-MŒýìºg1è=1êVß%ü<‘Œ:…3IÕÌè»7/  YÊ6ûÎó( “'Ѹ³ƒ_ÿ Ô&4é´õlš•Isý½«vu°4cïŒö{eÉÄz.¡¸ó-ËÞmCKÚ8x x>5@ŸÏñŽí4Â6™sQÅ1J.¤IÄL’ù´ ¸“]¬gß-TV€d^„CŸNÆ7s®M#”Î[jö¾³qI¤GÒéç­ØjzOCüª¹2£qÅ:UÆÖ˜Ñ“Ö›™D™/ëoÍBhÿÞµílÙBSÄ&vX½.?õû 3cÄ*Ôq—¼×RèIÍúS{Dyê]$tƒvÿ_ËÝfa·Ò6#Ë1»/Œ›¼ŠÛ„Ô^‚¹jœôÏi~¸’r®@–Gç4I‡kÉͬôg/o! ˜Ô¢íxGƄ阯i^a,ïîÙç3k…'ûÈ ¼ff>¹/×=ܰ}jØÎ9æ5t¯Ý?7¡™#Sö~)_6Á;M: ©Á3'é› ŸÞëÉùª™—7Þo˜õçgËùUÏî!{S/¦$ñ«^VíÞÒb>þŒ÷Œ÷õÂ@ˆFמ˜uݤ(‡‰Œ–†@Rº’À2CÁ1>’ã:˜@´ åï"ˆ BÇÐŒŠc­& Â×y gÃȨ=¬S¹a…³Dà«ò; ‰­pž…Õ‘^#„Áß¿æ÷ªë‰Þ=¦b!z5£c@ÎÂ'°jßà^;)Èå*)]‚аϾÞoeo[Mh$hš¡·Ñ´Ó¨üÚí [üúú¥€€Q°$ø8ÔJ‹ÕÛ5Ö£IŠj€œ!lÆàüv‹m3ØœÀasÎÎ:8ga£2Á‚!`Ûö$¸ü¹õñŒó?5Ž“o[0D@d ¨/ >> D« VW¸ pÀ¸xY‘ÀÇ´ÁÁRˆàeE ½ˆòº­Ç‡*Ü%gãÞï$ Lm®¯kú þ?ÁÇ$@•ï;c ìŽ`(ŽûÇkÎPL!$®"xµ9“Íþ38e  ˜äÎL%´v8×Å\˜¬=à“˜VºÎ iæÏBEác§ª£pê›0‰7õ “%ŠÚT ˜xH0ä<™QGƨ¯®SS?Ôä• {Jh<¨Më3mJqœ* ¬iéþ—[æèF‘¶Û•qõ½—ÕÜ«æIarGѾóu¨«’¿>¼ÒÔ'³Ä.|ƒ¡3±Úæ'šàYŸº”k uÿf(?¹c>Ï&u¤KÃJŸMž1GRA9’Ì sm÷ª(ý®Ê*Í’¾9gÖ,š»ï{f¿0gÌ«~ýià‹1kkâU`ÁèÙx,®˜ wéŠw÷êŽåsw ÿÆ_œˆÌ’Íöy;“šÕŒˆQcdæsy—òi à' ±Táwrã»$»§€Á¸ÁæÙÀž€_£µKÁ«ù¢eŸ€‹‡ÆhÏu0Ç¡3´4S]žŽï“ïée £F݇Y?ßg‰É+QŠä°²¼&n< ï׆YøÎ©ñ×”Ø 6,$4¦Ê#l¯÷¨j¼¯°öÀêÇ(¯/¯ÂÄ‚J u¯îÐß\5'Ñ…˜ÌVÀM7kžÑÌv*ß[7 úB2Ééo:v” 0AaLÏ]s¸kˆV~C ’5gÙ0íoßíòz‘RÆŒ‚l‰å•Šù’Þwemäñ f…¡kú¡uG!²ÚÅpfr„â,AtÑWŠ™ñþõ|z&­8 Ûë•å"‚×Ke_ç8œ°aŽFß‘-dXì›Ãf ~¼vì›ú/%“pg»‹Ÿ;oD±ÔzZ]ê9˜á¹+1¯˜0gð8cª ¯ü×| œÌ`aœ^UM×%½†þ AQe]åNŽ<3©¯cì…]®»?×kG¯/›MÚÓ?Ml*Êzv0ÄØÝ2€ ,}®¬Q@qsêg·9DVUbsQºil%uf´Á %¸@%Ž¥¶uÎ! dæe_ïŽ}Ñ­Eë&sϼëkä^Öï}³·r²öJàé÷´ÕùÙD¹ó•0$ p}w¦Ÿ‘uF)Îõ¾–<ûê5¼¾~/W0±°F&åýέGe„>]x.X_|Csf[ßËdf&Â#vDmÂ;:à$ÓÅÔéèŸ0¬ê„±‘„kF_‚‚ß0°ÿnÝßÈe¤i}ž™6vĦW}Ìç|aÅ®¨'>çwËdYuNGR¨ƒiT¬¤nC‰´÷%X%Õª=`XK‹ÿ!ÐÃÉTš *³†\.¤zÆ ý ðï;ôYá3¿Wk†ÆÌvÖÁï½vZ/À"Á ÷¹Î7^2öfŸ;tQ£”ÐQÔýŠÓ×B=ŠMÒÜÞ¯ŠH”d3°Z¯Kƒ £_õú=ZV컿 .ŽRÿÎ\Ÿ|õ×ëñÍÝû÷íÇ8ÿÕý/LÊļOb½®fÉàŠÂ·Xsîn3™ëÓ¤]ê™z©£Êã„Qê4’ü´ÀEB%‘Šß[ µN†5 1]Ú‚½-dƒðcðh þà¿<ëëÓ*¨e­ÇwòàÞ$½?Cô!OÎSã(xZ2g_ ³Ìï¤Ð‘ ÁFç9­ƒ È´É… üJ TͶ¬÷øK æ qWÿL @-Kå,ˆ¤÷Ë-c¥ÏŸÅxˆs —ç.Óò>Ǥó¥H®ûs­Wåwý°œ8b `-ÏÓÂo‹OÑc— »Á{#Rù¾a¾Hô¥9Oœ$ÍIëÁûý™ÏÑû¾ÃÛÊ›Ð̦۟%2û‚ðP2”@Ä”ž˜¾BÀéOgUúw¨‡ñ¯Q’®÷ÈÄHòAk-$±Û *5!€á¾ºÏ 8 ض Ø^{k-g ¤r?v„  Âq" àýyâóxC¸}S@+2ÕÀö'Âybªœ2I?^;>ö /«æà$ÙàÝ9‹×öÊë´1Fñ¬…íˆ A5w0AÏ\ˆŒ˜Ü°Ï‰–19Ó«7•?cª`bb˜p0#°¨‰{dÑAœ·‘Ï „eõ\cRÖi:&âyOHça#ÑFËK뀔 *²5L,5‰2aÔ¢H±0–bz#e?,k)ú]EUL)t¸$ÇL’AH”kRö01—˜šd¨Ùcªàâ\ŽQ@¼_UC¯±ÈJƒ1nP³šF ù”â9ÂFÁ[w‰Á}½Þ3«û Ó®{Ôù™Hî/µI·ÖõŠ1FP'çmc Œ³—ý¬þÓÝÅ%÷lœ~S¾êÊq`5àd=KÖ³y^ ø9‹¬+VŒ «_-Yí3÷|–{ U‚µWÛŒeYË¢Vëe ,ÐÀ/ªHø¾x—ëàGûÈüæinÕ0»xWR÷ü ö âDÕhv-VsÉÑJ#à£Ì8^Ù¤YÔÌ1êÑÄ0¦ºáeòºX›ð µÌ†pñẍÃÈ#F™$¡“J“š›BBRýŒXD P…àÁâã|ñ™ÑÔú\„ÊØV×Û^wV­æÌœÙ5ð'®kÉëõj¼£Ò×Ï”ú'×ssçØw¡@}ê]48¯ký\!à8ŽÜLjšZ IDATY’˜2¼ê¯%°iÛØ;Y=v|L‰ÜÍæIîE,ð8;Ï7 P÷z©ù<‘àˆ÷ë ÞŸù½ ø:ÞøõþÂ|ôb¼ßo|}})Xæ“Ùÿ¯“`,àDSúvgaÀedYÃpDpp±ÒD}?Êù9·…›†°©×Ò^A™wž“#ûŠï3dI ÷§g0‘ý®RŠ`š@H œ.¨ó…Æö#„ÖSsæYY7¼b€L”b9YѼžÀp”X±ácâk±¬®* ”(Ë$¼6ÁÁÀ#+CcÓu‹žj„°꙼£4ÌmÛâz&M˜×¼2ÊX*·>ä®gùöuv6ûŠI<.ß×ï}˜[ýìõ‰~…išñê^3eLŽÕŸgV#õÏáõzMë<Š{ËÈã2O?8³¿Ï€2fŒœuNü=8Tn¤&=Cgv¸-þ!Å?KQâ7ÕºÓSiu©l8“)ËÉœ®í0޵úº…éfäÈ?KSu3–Î(…l.™ÄÀpŽp£äÉbÔ5™¸×ï=3é^1ìf`B+ ü.H¾Åx{Êȸèf)VÓ÷YwÉ]£kÎ õéRSGÐPÀg,>¦ï9ë,ÏŠ›UþäY}ßS°ª¿?½±n 8Î@Z©¤—£{5cHÝ1Qê¹ÚËÀžDÜ÷Þe.u›©\Y¨$Akê‚:ÿ<ãÂäI €\yØ$áÌgpŬËßOøÞów`=ÐjϪާp4Ös°”—Œ±’ð2f:qà[õ,ÕEO¿GŒn—ÏÏr1ôÄÍ3Õüw…=°AT5Œ»†i%„fâg•Íòy ® Óy¾Þµ p§PëX̼*GQÔ#k½Ÿ¬öòÑgMŬàYÅ,ÐeÔИi£ç¼NQ50û@˜>ph•Bø¬¹j7èFg‘0Y¿ÒX™%˹¬ªç¨)ÎÛ:îMþB¢L (€%òsÅé\0°„4EO2›+zQ+EêG¤œ·GnbTÔ*ŽÚƒ)„ŠqÅ Î2˜ØáO{Úß„¯&ÕNr6|6À˜—6ý•¡©xIJxú>ø\_¤Z"ÍÎlKÝ#€¦žid#ĬNÖä„é´®Õé‚iî–® Ö2^d`(1&TJcêßGëQÕ7L£TOçäµú`“€ºFÝÇIʳIEKæåõœµÖf j¿Vnv‹Éo’¯;fáô8óုÀè}ßá^{”Ê ŸøüüÄﯯ(±Tƒùóëï¯/ï/HóÀç¯ßYVèCIª,€#àˆ`,ǔЀTˆk¢L±–|Y•µÕMÏdl>xˆVöO`Aˆ•g ÐôKŽæìŒãÔ`à<¾|€Ào« ó31±”Åç£É»2µÒz$5ZLÃØ.ìáö>¦õ@¨LñÛˆRBRO,‚2óÎ*=‹Œ2ÂB8œµØ…ÞC Rv[\ßRZzŒ\ê òÜ‹¶'Ïë2?å˜.)Ý5p„)ñ¤eÿÒåºî˜ç³F½¬ö¦kidY4k ŽÂðFµÉ5]Ú4Ÿst¬¨£z/ÿŒ³C uZëܪûz'»Û™€÷àÕè[ôj Ô (ë_§—+ŽÞcvhiiùvÈX)Ækfx0/ÇÃ$¬'Þ,3VÅw¼)Š9$-Ø/c¿Œüà.LµWؾXì;Ð=ð53qumêß5Â;º×ÓŽe®oyÚ=­Aºï(„šù²Vò‹v±âxP V],åÏ/ÜÏuîŽÒ"WÅ…ˆ\œu÷­¥ÌvσY$a.åýÜîS1GL†Ñ‚<7T^ƒy£yžº™},{^C°öšêgä÷Íååäžù×ÝIïr*ÒÀ‡.›þ‚/,ܶYá ohôiyõ5Xã–Lº ¸†À Þ#xõGóžñN 1|PŸ+áí÷áDç‡t_Ôè¢àóy*HÆÌ1`BbsýWík×É*>¸òDÂåüO±q#TØž­]Œ‰,·”ÚH>ƒ´Ž ¼ÄÊÀðF`8À9g]ü¹zm5· ïú|”æ\CðC@)­+IqTÖ¦¸€|¦ªó£=b”pØ7žû µºþXIÚGjŒY=Õ×ÖZ–¡§f]Ç÷͹zœRRbßL+As}?Ûœ¥jìHëRšâ$º†]2ô ŠŽ´ŒB—LÔSf¸¥ê{*„gÓ™é™\£Cb¾xçR`®…³©Ð¿Öl-9ò#v‹R×Õ§MÄYe.‰Ç¶Û¸¹ÙˆMÂÕ Ž¤zrKUÎûOØ!í:%KQÅ$*l´d:YAíØÆ¯UQîœ8«‘¿¦\XX<8»](‰äàóÍe1ág³“C¦%§UÍ-#5Ú=¾ÒuYR<ßDzò*¨Ez` %¶>@JÔÌjŒÎ3ç(ûè¦ÜRÑÉ$šØM¯jРíœ5ãºC{¢ÏW½ñÀ¡YÈ›uò °¦i(šfk"_ ­Ô‘ÍׯÕM¤žP©C#‚[Q¦åúyÜ*éW:Ü•gÎfä^7?7jtTe¤Ï‡kî=%·gGðŠ¡iºXî<û) U›Þ÷Ò¬‘ÜlÆLkuO?.þHIÓXÉâNíti”‰ü•?ÛžÑ#Y¦""š‚Ò|.Óøè1¢KŒÏŸ‘[@ƒ«.y”u8ù×…!Ã$zP¬ýŸ\®±:HTì^?JØ,û“måõCõ,ŽšQ¶’|ëêä§Êÿ4‘•LžäÊ”ˆ #-dNø˜a&ÆS*½‡ ôÉòçøÿ 8uÁIŠ1t8ê¢Cˆ"û#É!„èë£f¯Ì SzSÅÝ®Ã\I )y~˜bn«óÁ•56Ljb³Y»É6îP“ãx޲5%†ðTú>Zg„õ,5Šü‡€$0N ·•„³" ÏüÜ2€…'‡ë‘gfïwYÖ·ë®6’íýÂKTÛÀuàSRÄG`Õ*$gÍÎâîú$³¹óZ ×5F¿n2kÃØ7³lv‚éÛp³¾êyN×ÂÚäW ª‹‡ÀS)P\+ K›^_JÍ‹ÒÀZ–hbáJ¤r!¥Wù“1"¨Uö7ÛxA(›Ãû‹IëŠ|f–9á}¢@œÏ¢‰Â(R¬t­gðºÏÄÏ/B8<# +‹†¬ÝÊû½‹¤0°°±ØgX‚¦üÅZ‡9D6Ô8|€Bšf"{Dˆp„ŸŸ¿UÖ®ò½t\bö8ÏçñÇÇ>>v¼6u'òžA@ü{÷'á_ÿõ_ñßþñ/ðþ¿ãý¯ÿÀïß¿ñ †±;~ýTÀÄíøõë~üø¡{Œ5°fËÀÞ È­›Çé|êEï§‹ÒIrzüx}à zí»Û Û.eÂæç<éZ}ò‰3p»ÅñŽÀ[ð€÷0QGÎ7<~þúÄ×ç¿~ÿÂ?ÿùçyÂ2e/5Yˆ!šÑG`ÌZ•hºÝ¾8g°`Œàe d,›ÕšÓ‘ƒ!«ÏŒÑÄCÄó/$AmjàŽÀº¾±ÊÅž 8¯€rÐu<Áqx|'ΠÀU`5`?<¼‰éšP?,ãà½ÆN®›… fÒdB]‘”åʼn¨Ïb’bTÍ“o—‰ã¨ç¯À÷X‚MJ²qÏDÞÇ!žODûÜ5¸6Ÿ­¿¾¾à¬‰~X[d§–½LxVHÍÛ-pž%,Á9Ê ýžu”ÌâìÕõϪL5ÕµÚª>ßëY+ûÝU¿Jƒå63œÛ{&AíUy¯·…Ìó>!H¨4ÊŽ(±M,ÙÚsªe!žŸ@Uzalp$P\ýìÔÝiÌŒ!xAf´õ¦ôÎ&‡„öÌgÄ4©þ,ìúzÖž›x¶ÔàQñÔ²žÚ ¶97‘¾­ý“ZgܹKì‘ÑAe„ÖÎ@+ÿ.5“ÄßôÅ¡ew°–ðÝyo­:Ÿ«_!ðcéc˜vÌW¦ì«ŽíLŽ1ëÎÖæ“52œ :GàBéj†.Ý¡›ÜÎ]饆@_€$BºøX‡2Ú˜l Ënt¯m^IÍFìÄJ+Ø™½TÄd‰N{uSеxcEç™yÀ˜Ëg}î™Ñà¬1$Ì¢§žAQyZ´Ï“<¢å®³õs$U«ç°¼ÏŒÔ'`ÒBFY,eàåZÖ?7×Ï||¾KgmÞ‹p»®®Yȳû4gØÍfG^w&è3¹áŠQV¬]Ïï¡ïB^C&L·‘gâÝx¬ö®™Yè¨ûø„A^>ïDÂÞ {…îìP®K¶S8åÏÒu"Ëë]\E cÆ)W7x=p䬞§ë^ÿz+oÆ‘d¶ó¤±3ÅWkÓ=‹ö>\`v ³=Š%ãVîÍëk!4Œ­:åo¾EYn€7Q`ÿ](õ¯â´ b(È•? ™% •ôʹQa@mß±§F÷¯¼Vü·Ä2©$… ”„Jv)>XB‚óðJ ˜®·>þ|åX&2…Á´UM˜)2jÒï€Þ`)£}ßANSñ>ϳòÂÚðu|Cbç°ï;¬µðþPöQÕÈ­ »q ÞþãÍÂàßþàÏ?ð?þý¿áÿ:ßøë/ÂÇÇÞ§‡áõãx6Œ*@}ÑöhÆþùù¹¬ÿ^¯œ§¦1&o®mÛ°½TÒxø3û)sJØDvU˰C”Ô&ö'FŽ0„þ8ñ~ÂDÒ„ø|#øðâÕPž)À˜Tj“`€Õ'K½“w²¤àÕæ,v§ yÎ8ì›6—œÑuy³.²wv½F¦†tO3 €”2Îàe|lqøSÙ}!AY™W1MðVʸbYèRi äT=e]é*Ÿ-âx 3áH>Ê~]Y2—}àÊóoÉ4{T²í1¤À‡ÊGÆ$¥KˆlâƒmwjÖžbÖÄž7$k Ö%€ñ·­Bº’ô¯g ÊvE=PKÌgçö>Á¯ß_z‰ûJ¶7 R;Ïséå}žg³>öRßšØqMV Íù,Ÿk¦«÷~è%–®¯þ÷žE&"€5—¡Æ„Îj=ìÿ=½þHu•×Ì»eu@y}]§Î"œ‰lé¨bFë˜ÎÑaDdÞ-`æ¼x®Ì~GQ+™Å(%å*BÓ‰[½VÝ­KšÚzïM\Ûq—é}»°2»g Õ €9;Œ§¸"½šGý<’ }\˜/RÅãk¶©·ªPÍ i¥#cÓüòPci2}W¨õExñ ’ÜY¬‹Ù^"–s÷ý§¾léL-ŠØbÒúä>ÎçùØçd&¿lÙG½_¦åj+©á6Pâ¿=¿*.{»'`EXêY#¼ȼ.ÆZI°`-#Î×3eØÕ…Xm‚|Ç‚˜±' Ãa. í 5/k·YÞß5Qæ É3M2Ý@ßFûĵĬ쥖w)¸Oæÿu¾wA!5@Xy`ÐÞ¥®ÒíF`e¦ßX8õNDK%Z¯«4È1~ŸÑu¤Abãõr*(šLñ `HŰ•Õ~ò$Ê àjü÷Ù7àIµ’(~Q¯©õ{$æÙøùN’ì  $%>±t˜ÉŸ‚r£Ï¿úYemFÀ‡æÍÇ^‚="ÛÞ×î©dŒÒ­éêI˜d)mެ‰,Æág— ÌÄIƒ§ÿÜI‚•äpͺQO£}$yßP­jÓöÆÜ=¾ÎùþÌR-•¸ù QÙ{Lœìéܘ‹¾´·&ö©DÖ— ¯æàŒ60÷,ÄŸ Èö(MWe0œQâœËJfF8=Âé»dC KqƤÂׯk·=¯ýúßø÷ÿwœç‰¿~}â} (œï÷;OËqa|m"߃3D„¯ß¿ð±ÿÀk+éyNe½ýøó†I_¯0çyb³;H¢xZõ:"³á+qÜkCy¯^H»…ç€÷2“ÄAØCD™ƒÞ{8յá,c±Y kMNÜœQ–•!lŽÀrÈDï¥ÈTÖ–S¦;»2­}Šsq}5QÖªÀÕ}­@ÊP9#PA)eÖ^å¨' N¯`VJdÖ9çC9iªôò¾±h‡^´ý/MØ“„ËdHô’3œ¥dâ®Ó©4Ðè{ÙØx±ÆÀ:ŠR}Q£|ÒBV1C°ñ>Y­,E91Á9Ê–‹ç6g\¶ºP€½U™”½ô¾6:§Ï¬kånO™½o}½\±NGLì~? A.áõëoÛÖRz™dÍpíëŠQƒ¨'—ÜÕ“={jTÏÔ¶M=ÃlÆFK?ãêjÔÁœ™LjÍz{ùî4É¡ìie+ÙÙŒí3ÚØï;MžÞ@r6{Cç»c&‡»;4Í$u£CR-˜!ºëÃß¼3ù„M¶ÿ5h³ê6>÷±1‹s$¯ê%tDfzp.†Ê0»_t‚õ¸%„{T›L дpçrŸ:1Z$FþqísFMq“ePyœLãuAÃ'…w^i\ÐÏ Ë×…õ“´Í;ßœæýX†i›O¼éVÊhSù.[áÄš±TfÆÇkæÛ¤—‰ù>º5«¦YUý>Ú%½ü·gòŽüú®ž÷ìºÕx çîe‚³F/Éhÿ¼—O×ëÏwÎúZ§(ÚÎæ_Ggr“ÙšÞµÂ÷ Â ô}ÆF>ŒpœÌS˜kû鼘Ð÷Œ©»V[äÓ…ÝÞ¾g»¶°¡¼'Ý=ã£g~¾®­ fWëîÓuú)à³bGÍ$Ú3ðj56+¶ßÓ¦ÂÓõü)8÷¤™Ü§!?yý&aYca ÄPãaÔ>>°m[˜$ú…8Ž?ÿÊ,‘}ßá\¹çÛ¶!¼=H®LvÉsrZ¸p %1ÆFòCk*_ÀQ~fF †Ê>ɼ6‡m³Ê´r»5p›þW»SkkqÔÚ¢ä}´o"‘’E6TdÿÁÿÎÀÊýs‚ÇáqœÞ°(¸åƒà %µ*ƒOc“4å¹iŒ žy¿n(ôõrYÐFÅðL±P¡8vÆ8£c b£HåýÆö D ç68«{§u»sêIfk“ PbÂ缦) t«Jªq‰Q žæõ|]ž+£êúñ®I2kšÔõãÐ3~ÞÆ×ºz­š}5cÒÏØƒu-3òÂêǬ·Q?·•oq¿ÆÕëhïíZŸ5¸çj†Ôhc¬A›ÑHÌ©Z?:Œž:>’3̼Šî$>=@¶*‚Ƈø96‹V_uÍïè‚OŠÈ•ô±}YôîÄÍEFP'ò%íð]!>2e¿;ÄŠÎ^Þ4ûÂúT‘ƒu´dˆÈR“¨9ŠÛÖ£XñVkÆt`°úäs÷О=QÒ?ôKî-}"œ3†FÿÿŒ®°ÅTµ‹RçñøÖ¬Â~¡_³µÚ4“«'²LâIJÆ ´™—LZt3àkôþ³÷îS:ïÖµþ:f…;iÅÄ©Ÿ³š˜¾Þ† ÐÒs¬ö8}¾ྷOSYRs %Ïw¹þ}z¯PSÈåÑ:¿ z_®%õŒ‹ö­G{ef6˸é2’‘Ž÷¹++yöÙî˜UO«Ñ³? ÿXy+Ö Š¸2{¾òú¢‹™êfòœ[Êì3°2–vzáb„=‘½ÙÒ2RÔp0ƒ&×èþÎæôÌ‚¡Ÿ»WÐ<í%ávî?åï;¯¯Î4=ó»˜FßÓƒ:Oζu]3 ˆkp´Œ³þ{{ ã]ÈI¿ÏTµlpFFPpJ–Jy)±AûÆFÿ}n^õ7´o¤¨+î¤7 MÌà¾õ÷õdt}³´ÀCe4P3YÁ¸ §%+jÄbZtF|„”ÎÀ´$!œùÌÀþ~Õ̆‘ñꬸŸ±×îÀ€QŠÓèðÕû]@K39˜ÇkïQéKÊâ ØJÎ)Æ3c=š¢é+? í*ÙFÂ9>³Âsjô¼(j¬±·àø ¶ºÿOXW³k}Âüš\£†À ¸É: v>Ïqyض-ÿÌLB”ÖöÍefRÝ MX/IòþÀ×çƒ×ÇMí[Ë’´®'JÍjIן$ÌœåˆjÞm²‘¬²+œsø0_Ç'ö}ÇëõR Î ~þü „h!úÚ85šw{ƒ#œJÕÁ¶mM€C÷óT‹ œCœ¿–€—uØ_^NÇs*M3¤#ÆjƒÔY•¶YkaQ%CSYŽt¤ŒwnkIñ–èS%ð"ððAÙd-üáñ~8ƒW3w¡ø½jäž.ŽîtA4áM¥ƒãp¯33n+ææhm!#Qú¤ÀE"‚J/õkœ”é– \»é÷YGØ"+ËÄþŽ#RpÊU •%õIJ€†s‘Hc6Â5,©~VGÓ‰y¬Îú«³Ç̺`t}#{™—ëè,Õ3GÊ  G–yùYzXÿy¬µ—õñŽ >²ã¹ãþœ™%Ï5EnÆRê)¤ýÆÙ«ŽR,Ò@æ…Ê¢–©\&]<?ñY…«Hì:¥æîŠÎ¾@»;(>)&/㈒êH+(óe¢™Þ ¬KR‡87c´Í$)OiúùÊ]jª#Ðr—9°d?¨æsÄß¶_dÄ4Ñî×{oph‚6´É˜"CFcP|¤y;B‰x оbmÞÞ IDAT úw Ó1òBA1!PÚÔ´¦è¡jsJtëf‘´'Œ øÿÔ„&M’¤´Ê `I¡Ü€5wÀ  ­ÜW¦‹—ȧf Êés¾½Ö»9þ„½5¿†9{aäi´¢"nº•ø)Û«î¸ KvDúñ¼.@Õk‘¯5¦Ú©AhlpàÞky¿L™Çè*ô÷±7zðKºƒã<¬äޱÔk%ó"Ð`O® %‹åŽô΄i”=vB3/“¹ñµ/Ïo‹®‡m!ig…™?ÏÀsOòø©õ´‚äœåÌ&o"lfÅ—ñ×ë²iäõwä!¦½^iÒ%³)nî€"{B¬­ç.3Ã8;”?ëßå–]X6’™Äéÿifž)ýü6M‘“à éoJ.rbj½—.Rãz]›åšÄC\öY^ʇÚL¨¼?†ë›Õ“'Ó †!égÉvëfžÛ±9dRÆê¾å÷jÖ¾Œ™iŸ/`YðæóB>¼¬ÕÅ”^S@mëDšXÆÜ™´Ëˆ¥÷UÞŸðáÈ€û3ËðÎóÔ¤:(K&V„Ô@;6Èë„õ”Ê%0A@ÆåsBA}šÈêÞá}–æ„v‘˜ F\$‹Û¦æÉ÷KS¬CNIµuÑÜùÂä¤jrEÆ·)èâbNö>#M•ôÞãõã#GÇY3VMé´Ñ“öë½K†ü!¦Š™(ß’ü}ê`ŸVšã8šó…Û7 tyï#Pd‰glÒûá½Ç<\pÈPöŸ %ÇLLªdf¼¯2ÿ‚Ÿø<" Håé›ÑÁm›Ã¾YMÜ 6g£9»úˆY§ûÖ¥¨×5` ̆»¹kõ|Ïñ&/+/ôôŒ÷yÆ€BÁN¯&í€A`‚„3½süìA,A,Mƒ×uÂt‰¸9‹ÒHSèT ´õ6*©ÿXð"VÞa’š"í²da,G?*“nCÉx½Œ¨ç•Û¹ú‰œUÐk‹þV6±áLJ5Wv—‚^&ß§kÀÉØ©­ÐZ¢\Öw™œŸ…œ¬¼ok`éšNù F1¹Ò\õkʺúó¥óÓˆ¤qgŸt× ­m"j¢ÊÊ/uÄÒ5èGa=YeÔœì_ß­ #ÖHOùJ ’ô:µÙtϪ ÏÞ\}T€ÕúÈYAU›“¾d$>’·€§Z6Y§Hôö4fu0Ó°Î È‘1ñ ±³ûöDv™$O:³Îühì€gòùòòxâõ)V£khÞC̲»;Z@ú…®þÞÓ‡a’`ïð´c;b—¤.h[ÈÉÒ|o%K¨ÍL{€$§Å$†4àuNÉéŒ|Ia=ƒü ÉÅè{4&z¼(× ÁѸÔ)"³Í¥N•œuQVÖLþ2¨¯! î7é¾+]³Kêõoä­w·±­ÖŽÄ€lŠCé6ç†ó2Ûi`ô.Kð°Oy™í&Æ<ÏL.¿óœÎ˜wã8’H7 ’ øŽÑÓ3©z6e€wÜ–ª€«Kj¾/¥Yÿ’)ìsÏ1غ–ðŒûÛyR¼ {„öóA l¡°yS§·NQëý!.Ï,è–ý gð¯‡ÀzÂêVΕÜoÄ<šÌú¤‰1»ŸO?רƒ¼*0zÖSÿìÌç×zš­YO=Rï²FÉŸëu¨;gMRVQ%Ž.‘ã¥iZ’§ÿå¾Ô$¥èìfaËÀe’ únÐÅã©M‰.ɲɣ*ƒUpœ_9Ò=„¬ãPPëcwÙ|½ö·J5ÈÌÄ8•´IÆR½ÁÂE ¾HuÒ5&)aÛ¶áÇÇGöŠjîiàÌXJgÝ´g·uG».¦ßìA!‚%V‹„âþÁ¬tjÌî4áÌHŽ®¯Éž%–Æ+1¯ÔÏÊÁ à›ý×ÀFP&Õ_ï÷BZçWN*üøøÀû­ |ï÷;'’£þXÖÅ.xøpò &`w.‡É³LÇûôop8•ác´6}í;6ë°ï ^YlÑ£i߬J I*o/{‘oÎp ²’1aDssc‚WæÕû8q¯Î Ðâ¨güóçï@X,Bбӭͪi{”s4UOþ`Ð&‰ãêuµ À8KM“IM@3G@J Ö•…%°Øb©¡ÞJ"ŸvgÔ ßZ.ŸúýÖl0Ø7R}K°ÆaÛãø3G@ÜD“wKU³së’Q:ø $Ïj›‡©µ# Þl¯¨0WEYè•”Ðc£:¤Þ?f4õúu­ueè/X¯‰éá,}Âáìӿ׈(ÔÖµê«þ:ëkpõ&ÑŸ%0§azY³m zÕ¤WÓôuíÐG©§2×7a¤»œ™…i7=ýÙÒ·&ºð‡žAU˜?š¬`ÖI2¸TF*ÁËÚ~"‚³„Àç%Þ¶þµJâ#¢\à’Ñm #Iƈ…22j«ïo{è£K”zMlŠ¢Á½¨‘ÿ:®´$$ØAG³hôÓ{¥Äc,Œ5jmrw¨OAн>€È%•±éÙ˜ÎÁ¿6ŒË N\m¯¦ï¶yÈ<ϸúugEm=çõu7+¡YLòõŠUÙ[n]^AåzœÒü™-àõµiw±e[R††Æ}#À»7£îÿÞ{â]Ÿ‘$£¤ ø’S´ªK³–²Á¤Ž?M:æqL: /ula.l³Kñ|µ ~÷,i»×èÌï ®ÅTðèçQ ¢Ö‘Þp;Ñ÷û†Âð»‚í†Á¡cù5‰§R–úûÊ{µ…Êü-hÞ'Ù6r 27^zDÀ÷Ñ᤯ž²]æ>?*à{‰~™ãWPúâ?6yí¼¦ŠÀtlâòà#O;6¦y>¼b,q|´ ñt­Ií×LËH¡œh>}×´>Wèç3Õá½çlSö‡Æò‰ãÙ&z;åJ5pÆ(Ã*1bÓgJÌŠýÓÛ”i1žÿkï¶%¹nd n3€t¼I¥.uuÏÔÿÿÒôS/uOMI]S*é\2Â$ÌæÁÒóôH+WœŒŒ‹; fÛö…½z?ž>û¾&p¦Çâìíg?¿¦Ó0Sê&qxIYÙ€-ùR¥Äî‰Év 1E`V3n'ŽàT”g&• lXåcž&?IÌgŒ4&@ÚÞ·-‹yÄͲ2+¦ÔG’ÀyÉùCoZ♀°®‡ÐŸQ_–Ù™i)¤¡eÏYz3% ±yxùª^õÞãù|6?'õ©v}\Õë½>½gŽÞ†(õçÞ{,ñZözÂPJg]ú{šËë—ÞKzö¾S×Í(X[.ïïº U “üï˜}HglOŸ1€²VÙëc6A.'˜#zÎ×cœ%ƒµ¯¡e-½ê±4J%hÌkœDtî;3’/^yáÔ —¾ì©5Ñïq½¤½3–ÈU*B¯èý[ ð¼Âàê³mó~¥UMü{füå5nµÒÚCñ;]£¢¶L¹êN —ò±3fQom¼&kÖmów¼ mÁT;Çmooh›úò>œ™4žu¯°G)]#Ya/ù£gv8º|²ßôšÒ3~ïõ^1Æšzzék«B¿ˆ{ïCv™tÍÖ8›ˆÂö½]¶kÞ~Àg¬w۳ꌉÑe¸ r±¯Ðå^ù ClÄêzå9:;ÿz{ùHV~Å0üæÏ«)¥#FVÉ <­5@‡Éç©O•ö:ßïNt`±]ÉöÏöžÉyoO<3NEZ]>ŸWSò½ÏWk4¼Úk~ôÞœ1ÂÚóv´?ÏŽ>ƒ°\×#VÕˆ! ùÙdM å(\–òÚ¿S#Q46OÝì‡ a—&£éP»>U5û+¥?I˲` wk:×­ÇqHñ¬dÔÍïI¾V­x@½öCl€¨¶!iËš´”*h Ì\1—òGpš]ÅþH×oY<ŸO<ŸU"`ùuÛ¶!8ó"‘œt ò.žmÒ®a«®aê#Ó€«'Uᣵ̧OŸ*ÆW«Fp¯òR§D–ª–ì},Ëëó‰wúëðññ¿üò žÏ<Öëú„ÁOŒÛí†Û4cö@ V@dÃúÜðx¾c{>°¬“ÊÙ?·Écö„ûͼ®fç²·Ub‘óäó ¡’Ûç{ò mëˆH¼vÏÕÒ)¢™;;<ÞŸXEDX‚`Ý€ l m‚˜.X¢)°Á*ÉF=1CÑœ1ÛûÍ‘µ­º‡Ôû”dÓvlÇ€‹ÃGï’z€êjÿÆÞÎyødø.‚ùfì’옡»c“ü438ÂÅ—3Mv_Wl˺V~r¤Æ^.Ù&æùŠ ¬ZÃVó`x2ù÷póGl@%¡IçÝ%‡Æ¨ ÖuËþ^ë3¦1Î·ÈØXñññÝîíóÛ¶E–aš,5˜ØA°.ëò€lO¨˜y? ¸M÷›ÇÛµ<—7–ãØq–Æ×û~Ž*#¹ÐÒkϰ6 'É)Ã{TüöŠÅW˜z‡¯ùA_¬Wöܳgéöñ« Mûyáôû¯ê¨W˜bgLã×Àä#îøl5ç:qÔ–øBY{HÃÖÊ?+~ ‘ýAièÈ_ø#Iãc²ÅD¼ ;p–¬Ûc5”òÀÔ&ÆSŽ’Ç•÷MÒ9וݢ¡ï+³,kÇ6•!£%›ºGCôeY°®+¾G°ÞÞÞðõËW¼½½ephÛ¢Ç8ƒ2¤@è°"JÓpçÆƒÇòu­àȼ›ˆ ó|ÃýÓ¦iÂ*ßþ¿|ÿŽ÷÷÷Ìä²!5åéV’T1Œæ©jÒ+ƒ5Ö/%€µ,Û^cGɵÉþó,#$¬ØÖ'T‚Øo¤òHX°< ¤!û!‰˜ÜÐ!˜•cLŽq›=î“Çm6“öÛäà™0{>&·§$Ú@…MrXX…ê`•(ê=eKu0€©N­«³oA±F@+(̰=Ú1hdW‰¤dKd›“,s‰Š‚Ü@—ÑÒ[+ç!FÔ”çÌ‹ƒ—Lî“Ñ}4ðW p¤˜ç ž%20ͨÝy†g2©üäàÈzÆžbéðpõSĺ¥Ä$jP#I§{`H¹/÷<ìzýg+) QG½b¹‡—‰ž­Õá,¡~à™ª£ú]Ð¡Šª\£kP²¯z$‘J?êØ4z£4ù¶Nÿ¾g|Ö:Î6БÑç1Rv\Ä”€BK7;›tŸ±ŠÎh䯀+# ƒçJîvÉ?ëPdú7¢žÑKËÿ6Ÿ*.60®ìš–¾gÒ+©Š­Tïè%Œ6•ãç®ayK¯LÓÉ`#”Üxì€L|ÐÒ„²ñ·:saý‘ˆì‘¤R¶Èðž_­ñÓ†zÔø¼Øˆ\¥ó]j‘]ü]bšÞ‹cÀEñ«þC¯4%#S÷Qóß‹ˆí‚ÕÏyë-ó*ÓáÌ„òGþ×+šk^=ýúc!UÌJç€Ý8–<5εã3ÕjÔñÑ:´´ ëÉlï]OÔÛJ`¼VM¦Uàv”†FÄ%Ók”RÙ+€ë×Kàð•59‚F@ú™<í¦Ïž>4'/Ø3“kÄÂëçßY0}ûïÌÄ.¸\Õ>sRŒ#–ü1¨z_?’¼úÊÀájPÙ;ÿϤ°WÃÌW<Áz¿ÿU ëª>Õ¥ŸßS泪÷&¹2ýMLf.R…«tÎÈòÌŒоGnŽL'óÝ"«&³¤”êå›Ï=½X¢7U^‹%hR¡Àº®QN÷¬"Û ˆ°BU2ƒ™ˆDm-»¡ý=kL ,×µiæJ?Äu]ñññÇãaåë‚··7|ùô†Ûí–M•öfÜcrÞ€5ãöt½ï5…bCЀöª”b¨’üŸëúĺÞà úÄÓm†:‡@„m]ñx<ðýãç‚UŒån>2?ö}k]W<# ·{wŠ +ã=ØT@*À¶Žq÷ä ”BQ[‹$– ñu“š—’AÔXq.®/†©4lP –xG1ÉŽ¢…laCØ,IѰ=BXL83nó„[ö¼ò˜á?zï# ËÅ`.™aº9š@P—YIŽ9ûø”Ï©¬¦”Ø‚`y>ñ\6óD[‡[6¶`†îk2sß"€Å„¨P\{È DABz|k5‚Híý»ï"€5¡Öý=+Õ*{J_tf"˜á½I mXâé½}ƒÂ³Ãä';#Í’žEèg¶ÈXÞ'ÀÕ<‹ç˜¢i`Šf¿¤Ý‡«Ø:LJZîxÎñEÝŸ$ØëÐó´¢õì“’¯Si·Tz2¶[­.;еûÕÙ€²¬/zCÜžë @je”%«¬gÌžü©Ú3«’2ÎÎÏÖö£Âù3ï†ò&–(Þè0íÝäžÇS[ ¶®÷Gÿ›ëkÔl¶¸CªçeÑ“Üô˜&¯L _yýWQÂýñ¼˜;òî<(½÷q†æ_ù^]M5Û \/mo4‰m)Žíï-S,ÛÍ)y>”²Áò¡oZRL(èßœ«&øêúåߟSÜäp­ÊÆçÌ<ùŠETÞÛ ¨ŽEÐÐãéŒÑ3bÄÕ਼>FŒŽ³†÷•&®• ½ê5ºg#Ýü™/Nb ýΣ‰os-MïUrÝ(ù«%VŒ&¿½ë1µzŒ–zE—À÷Yt1uÖß•?Ï+~=¯€±¶þÝðµõ$È¿…±1b`U€†Œ>»Tñlo';À¡§ghAuvFk¨÷|Žö¬²pq®Ÿï¿ç÷…‰8}ôt_-¬þ™1°ZÀ¨»Ÿ6õÕcñj˜xöû†Ã— IöhÐø#`×ÕÏlß{ï|z?[G#píêu_½ß«ú —Øþã@ îÖ û÷5ÁP©1® pѰ{ò7  ß$Jc‚N¹¶JÏO;è3I”äæ»T¶iƒ‰i•ØWéž&–Ò–¼5mÿrð¹*þ»Ç!àù|VÒÅôoÿðÿ€yžñv›ëT.쌦*å¹ ×f°«º¿šâKéOb}<ß³1õ|3_­5X"ß¼Ý1­+èã;ÖuÅûû;–eÃÇóQ…›'xâȤáÊ,:¬‹Ò,™,§ûRõB Üü”m@aV]§r!Mïyv΀=±4±›3–Za"DÀLŒ¹-$ šIÇÀìÓäp¿Í¸O>ƒW‰yu›\¯˜MJhï›ãðJë¾´J.‚y‘ehéˆ& Iú'‚°iô»,›`Û‚&FV0%á,d† àºw<4œyL_±²rýÏq0Hví+ÆŽ2P21ÈÅZŽíž‘QhU³wŠpc;·3 4ÔÏ Õ,¡’=ª»9šÉŸõ¾-¹¡re›Ôdµ¯ão/Ñx'˜„Ó”ûöwŒüÐZ9eûµ£sïZ…ÖÇrýëüKµGO¦˜Þÿ™¯¯ݨýl„¤ÑüG“õž‰Z Æô@Œ^<šÎõ -ÐóŠéöˆ‰Ð&ˆ´‹lÄ 3pjä|ôz½`j›{è\W’WNŸÎØ+¿½@>6Ï¥!v/:tä'Ó»g1ª 9OI•T2áª$KXSº¢´ Ö¸Ù­¯úsÉÃ#ôÁ„ätQðšB:•ÖÂðüßU¡?˜03¤“FtÖØÌšõr=ôC®Lt{ô鳯ï=¯²®~”yvÕ4Ÿ1DG“QÁÂ'Izg“‹Þô¥m¬ë&mpð9 Ûxß²‘I”ý3 m´wŸÉiZðùÌ— /9gþnÌ}ÿ±VZÜ;#Îèý=æP÷õÅ ÜÎĪ¿Ž3S ª  +5­0dÈžXíõéÉ~dÐÑ+ê^e€ÖéPèÓžIDeìQ‡ì yx?!y¾è Èvz&ïÒè¾DFxRâæ¡‚F?ÍjhŸ+ì_'=ùqòâ¢kß zôpXÖúh•æàÅ9¥'ÍÂág•¿»¿ì)z¯“Éÿ&vêðÙ¯ñ:ßÃ’ïÊ'­¸Ÿ§¯cð 1ñß¿ÞÉÕ9b?Ï ÇplõRfHÍæì-ãƒ(yr÷l)LC ¸ 8I@M’è%Võ µ¤è\š$ëÁz"cö> ü”v¿µ »'V®’ãv»ã~¿ãíó«E¡xv çíïI‚œžÓÒÆ6Ëîy”ÎuKéÝå”Û¶a¯E<39|<¸É›y;“(KL€  ´ÒÈóÑûÇOü4á“ÊJöÀ5ÓEŠžJÙÖŠ2«¬|^#Ð0±yØ5ß-Ù¶‚æ´-x¼ÿŠmy€Ä@ +¶ìχ˜’i$;cßÍŽá'`š<î· ·Éaò“&ÏÆ~ó.§Ö1¹ìe~ESöRN²¾ôúE¢;›ÇÖƒf†Y€ÇsÅ‚ŦæC¶…€eÝð\6lþW!¸¥Ñè^âÖžÊuB–ãš×a}V¾Ä£oÿ·:¡2…'´ûž‹ç†ˆÌ vq(—Ò·U€Ì³7eV“nrd(Å$BËd„˜ ¼‹À$”«é IDAT!;DÓÿ•© ÜŠ÷  ÄL•Bè¦| ˜×õIª­öÛ³òêl+ 2mºáˆA4ú}=ØÕà§Å2F8ÌY½Ü’"z¬¬(Û¯3”R#ÒÓ1§‡/u=»›÷ê{McùCR dÙ ”Q±½”¿¶yé €•~VϬö õüÊv X¥?9ž²¥”Ž,yEî2z* œ÷§ <ÅD÷¼¯F¬…+¿ž5²¤<ž±îލ3ý0ã¬]¨åÚ*ï}Zgagá´6Û†,o0A€Vâê²¼G¯‰«µöª?5O܈·mñ‘Ù2N)ºF¹Gר~íÍ”9>²h´ü: ‘ôÖëëìõÕûÐ5u%éx5ó–È+¬†ˆ7\+¬—Óµ³CíÕÉÛÙ´þŒUUƒ¯úˆ]IjÏ‹öõŒX¸Wò¤´§8×ÈûøK…)< ¥IžÞŽÖ©‹“§äò#ÒÈ@?Óñ^Ä¢š ’!K¤ã¡f¾}f^Š]?{ƲÃ1PÛóJè6â>_½ˆéöœ>K1ý-’Ú‘Ié+ åã59,óà¤Ü»ªh¯HëפPȽÞú9×Ëóp—èÄu¿‹ðøU&TùýòåTÓ@›ç™óß”Ö6þ÷r?}l¿/ýݼd €ìrêvPÖ×ã&¶Ž”Ò ÃRZÎIÊfN•ÜçïöÑyˆ‚«d“!ˆ1E4Õ‘î,ioÏp”DÑ>¬ !€‹~"Ëú¢dp]׊ÙÓ— Ýåu±Û¿F$ ‰¯Á/Û°ÊVùÕdY4Šß¶ ¿~¼çßã½Çýíî÷;>ßM2øþ|€˜ò Iņž<œ'8òðž Ö˜«$Ý®`m¤JïsŽdE-þY›@#{†×ÇËsÝ<ŽáÉC(Dp<ûa@¨<¯ '"`ïpŸo¸½Íøúõw`n·7Ü>ÝàÜ‘Íð øùï¿àññ‘ïWÉ ÏPl 5e{ìno3ÞµôAÙVpôWr 'ˆpùÙ)‰3î³Ã<[Òà4;ÌÞaòæÃäðŽ0;oÞX1ù‘™áà@ŽAq횇WQE©\äYý€‰ ¬Å: ‚ ækõ|˜/šˆXa3@‹‰¡dÀ˜Y•“ F‰¦J’ÞJÝo¥slò§¬šqíÄuÐñ’Ì–0¬ÎÄ fg öR†c“2…¼Þ™ ·ÙÛ9¢ibcc‘‹Æý+ˆ|Ô}Öý˜ƒéIÓ>$ºUÀ»ùz”áMgd”úßi`÷Q׈©Ç,÷’Ñà³GHAr?™žŸä{•üïFj²‘|°ì;Ë^¼wžm‘Ù*ÃzŒ¦QÑȃ«d@•ØLKéõ”éw-aë¾ç´‡·`_{®µ&ûåëxcp0€PÛyB’i®á0í€H"}ÈÁ~Û¤›œ‘Mò–µ’àzš˜$¸€iLÑáP“à‹Ùóš&—µø)Ý`—k ¶Í^ö…¸0-Mcžçx(Ž ÖÖ,¼=(Ó!•»=eFë2ƒw¹`:€ök̉ãÈÄ´ß4IÄp mAöí۬j¼‰â(CðL;ILífàšŸ_2òÌãfÀBc¶òÑSž<Ø»àœîBÀšv^ÁÑàŠr²Ç´½h€’£¦óà )U¾Ç;š|sÕ8ØJŒ²•*E¤\Ë“K šGº&0Ç3?äQVV5pé{D ŠrÚWenJQÍ“*{ù¦mFy‚¡Dµ–ÁLŽóšœšf7 Ž“ŽDP°xí#œ°K¥e½–ˆ©ök®I#Õ:Š»eQ…(œöØ Z¼o=˜Ÿ¦É:çµ*c .Žò%)dSÀO®ŠoŸýdÂ]š`¦µcŸãŽ,]6MÙLe€=¥@AÔf¦G†bÁ@ˆévŸIGý”Ù=¥ÅÅå¡Ýxø¤à« ŽèÏ"›üÂRrЄhÁÌI©6Å Ê~ ûþRþþ>cpÿx 7¨YIS±…—_JæÝ ˆÒÏ@ó¿ç=qÀ„¶é-vÿ_‚=RùJ”ëÃ9nLÌÓ3ÇH°3œØe_†M%O≹š0SòÅ}iº8/€ëýšqÜ!©¼CH[¦« POÍ9“xÊÏÅÉvÚïòû@J]0×¹)^otc®Óþ¤åëÊž&÷Ôà!ìϵÌÛjªMɹˆÌ.™x}–`ÁSî2@÷×Áyµ){lš([r~Îõš=ïZwû¤™qf?§4öµké]¹N“AnˆM`á^ƒ9âb¿ÖøœK®\N‰ê³PwËÍt¾ÔÏ—Õ”ï—)þ>­ZIrœ¢¶ *`ÜqïÙP©õg±×;ygžÐcKç8E µ½e +fç@ÎhšnŠæî"¸Ýny@é]é§°® –e3¶Ul†ŸÏ'–礊É{8ï![ˆ |…§cŠˆ·û=ƒSæÈ&qÏ·sˆX!a…J”t±¥£Bßá=ãññúIáý AÀäoøÝ·/ø¯ÿå?ãñxàÿùó¿â×_-½ºhNu pŽ!JX4à×÷wsøúå ÊŠŸ¿ÿ„U,ÛŠ€€M7H$8fHXAàá>;L“Ã<)¼Ûðùv‡ó„ÉÞ£fšfg ‘™‰sò»ƒØÁ¥ó3 n(ä$N"óåJ}à².€2žÛ†ÙÏæÅ¦Œç&X¶€5$0‘c²z ?QÂsY¢¬Ð273#* $%ˆJJàÞ}TePwbWª*d3 ´¤R*¢Z31D*‘9ڙ„]öG€K=´¨äÉ$‚!ؾj¤¦½ï'çlXמa×Î(fyv°fï1“Æ0OvNÆ=+È Åþ^Ò4MHLÎLªÑc‹¢¼ÙÎç|®'cKkÏÓP©HìÛ¸¨¿ º…Øc6J”4dÁntÏĹÍ5ñ䇵J ò´¸Cúܺl»¥²°úVsZ;½® róä2ðÏŒ A€$½TÙ{†²WÒ×RJ\†I¨*î÷{à'Fªˆ`žg¬ë³ÃˆÝke‡„Kì]‰ƒ‹y𱄥Q€%€+‚é|˸R¯¿ö£Â±¥…µàCo Òcq§Á¯Û„~ŠÙ+ _¤¸ÓIjë².›9O4Ë®%L=¿¦WLî[ÑÈ#dÄüiu¯¯L(_‘x\]“Q²ÞAVtÆP0÷*z«^¾`Ý´ ŠJ8ý¡ 8²ÇÜÖz&YieÃkå\avzä R#Gl¥ásM£u°ËS—&¿v°ðùäü"ïŒtÆX¥3]I´ÎÖ[Ë^8cT]y µé=ÇæZNÙ!Cï«ùiÔ^ÃrÏH×1 ²ovݲÁl@ +!,`ŸêpQŠ_Ù[[`îÌ‹É;îJÏÎýšJùO+ƒ<“_°ÕŠfú*­Eu”í7¨'³™t§¦¼~_Ç5× ¿hg,¾³‚Ô`^}\íY—QÓ'Ÿ±–ËëÞ—*%€©®Q2€¥{äÙ^ÓÛó®doûýr]Êô?úÆï'½|æŽáåQƒÚ.á›pƼ¨ö–Ô,î̬vŸÙ'°ñ÷k?!êÊ3¦ÜP¿Ò°ÉŽËÁÝèó )ué™p;K“´`Iíà#«5½`kÌ´M½Ü+Ýúµ+ÛŽSMÃÒ(ŸSªŸy)<î÷;Èy¸iŽ,gÀÈp"… µžàø¾¹ÚÒy|ðFÄžjš–€˜ê%}"RK‰›cR\Ìdÿ¥ÆÒD¶râikÀg¯#fÁ4ÙPsÓ ìÏç>>Y&¸†˜46|þòŸ¾|Æ×¯_q»MY©Aâ€}¯{¸Xã&wôy(¯G2Á¯ùŒ×M „ˆÃü¤Ø¨ö 2ùb88Pöz‚DôƒÌ?в¸æîÐwÁžQˆÇãý;¦‚A…*b}|àëçwxïñ‡?üþÇ¿þ xòÙHr>Ë—mË©†!|||ÇßùÉ|ÅBdš•–b1&cúÜ&‡Ûì0MdžWsL²cdcpï|¯rÚ]d¾Ù½qUO˜"pN´šTâz•øšŸb è˶eÃv‰ •ÉͰݤ¨fˆ/jµžh’&F° `î´r­Ö¾§WO„°Â¹©²]1àÎå¹½WI{Sô™rÃÎ)OšÖF6WnŽá¼ýć(t cž ±õ¤i@Á0¼½½å³Òž‰ ì.@æy…RáU1D7Û#5T½VbÅÎ'=öÇum©Ã3÷¬ï%YK£œ)ÙI‰‰ÕSW•Jgõ_o°\~]iSêgÉ;ó%#¶{Kò«£F–_þwÏk<áCÓ4eð=TÒuiÁ²ž²¨W/•ç7U‰ÆšƒöE÷¨`vÇi`Üh?Eå@EÛKu®¨€ç«ëÞ ¶ OD5{k/îwª.ÇÂc/Rˆ® –^þ~éHPFE< báûÆ•-êÕ†àLÎ3j’ÏVW)Rt˜½’@½.¶Ï$ >¶íïËGC9=4¼'1¡WþMûzä£ÄŠZÙoVó”¸ç]6¢Œv¿{¥ºP-U”»5yJQ¤6ÖÏe¦HuÛª«þ\Ëê,GŸ—ŠÇ¨u\ðá'èy²Yy» e+U:]{áÈl¶GUîùììÑ{8FÀ*35>ˆõºknm²)MZžtL¸Gró>@ˆÁ¾HÕßÛ'_‘x_ƒ÷t\PåzíI„Ã×õÞ£ÈvH­ÖÆ)ˆ%ÀÖÊ7÷„³×$¤=o)cÌìQìíA–þ=?dLÒ6¸àG$±ÇÏi(ÕLatY{5ËŽ2ójg$—ìK·3›ˆ vÎÑs¬ÚQû¡f#‰ÀèP¢[ Ü -l™ë¥rS-ÏN)h§½³þè;Uï!ñœ¤²>áRûX¯!¾ÀÄsqbNH“¨ÇRÝ×6„qiœ=,´Ž©žyé×pWÆé‡}“^ôÃj_ohöž¶^-ÖSúZ\ÊL†öóÎ8‰^8޾—ÖÔƒ¦Û'°"Ã0€ ›MðE¡ÄÅÚi¼EÓ9K]ëú3¯ï’BÝ=Tð|>³$tž&Üü-ïÙ%pEåP½íSÒ¢*‰+®,‰×8ÄæÌÒàLV¦´×Ì_¾|›'|ýö óýfc¨fïp»Ýò)Íàƒ1ÙSGº3R£)¡|fY-Kd1ŒÄj A¯°(²ÁM¾Y×Ѭ<¦EæóÂE–`òŠFF ʆ붟Y ǰA !ƒ8ª ]ÖÜÔêºáûO?áv»á÷ÿø˜'‡¿ÿÇ_±I03fï !Ø•rX–¿þú3~úûÏ&×\MÖ sà™0{Æ}žp›<¼SLž1;3°ŸcrTUöqª¬|¹zçŠýŒ‹~WP­³|Ÿ5Ê- ³öMÛ*‘¡¨•,µüÞë£Ö¤ú)ýè¶ž4ûèîCud3}DŸ+.|‹;`âÄ0«yXqRXØß'x2f)à༶ß&g /‚É9xO¦$Å<ÅFÉ»Ìô&5ðΘqvæ:Ù÷s!p7PÌÁ•?:õ›ÒÉ0Š*&vêÍGJ­ ìN ý&çáå÷Û}Ó>¥¨E-ýŸò>àºÅìa Y9W±›ðP¡JkY+½F<1qG,Üþ}ãS& e°½ýíPS`7£¯¯[r+N ‡vÂZ@÷zèö#ë}bu|¯Ø4d9½`© Õû÷·¥ÊÓMå蟒½ÆLN"`h”ô87Áû9§ û,Ý›`„HÜq¥0„›xz=°{#(#õÚMŒ³¨(Sÿ عE¹àÄS¾Ò×dàªZ`Äž(YÉç)¥ ~<ßñ±<å´n¹üt»ãó×/¸}z³s2ÀêÓ§;þñÿ ÿåÿ¿ÿÝïL®ªÇã÷÷w|ÿùüüóÏøõ×_ñ|>ó¿1¨²QaælRŸRíãY•Z5zi¯LFòD~¾íRæìæ2P“8&eÖ¦ÉÖ¾×kÉœ bR0MlIèIˆ^añý=?>°I€›fܦ þŸÆã±PK¬›\%£eŒ]—w,Ï'T#)„°Ei³ÝïÛ4cž·Éã6ï^L ”ºÏs÷ÓÊ€«¹¶®Á^õÆ »Ìú‰°¸#¹üÑZÊÏâÖ}-&[ÄÄdóÌ qPí» <ùßÛל·´@DF•J4fW´Ž]È}=kú›¬b2d"ÀqLd“!:6攋àž#“»§ŸáÝnÑÁ̘ÃObX0sô&ó=Ťa í,"B­Øš¦©3j걫|1¨mëxwÚ3—&ï-#ÎÜ’Ÿ½;ÃJ*{‡iq{góÈ+71²KåG ®µÏ|¯_í}N5Ò¶m¹?.{ì²ö.=Ô l;zž¥ºY¿M aÏ$²MïI”ø–"—ŒÓ†ÙK~*ib½ºÙÃ&è;Í'¯€q•éJm2ÝU¡Ò.¾6³Ôvž¥Í•ÅXb)dƒa /3$z_£Ð‹EN›e_4³Úk¬/¢@]'=¨ô^âä5s  2¾2 îQ1‰¨óþ¥ª{¥¥?Mk¦™WkE2áI¢XòˆJo‡OŸcвBü\hÞ·Ëï'MWºSÆnä-Óm Úì *;„]³¡¹S–Ù»8”‹FþG”Ïø/£&ú¬)¿¯ÒîzûH™byžr7fõÌ[f]oÿ+‹ösŸ&­(ûõ¿7@0¨Ë°ÕCGÖ3o¬r@0fËemýè)›ŠÉkûšÚÄÈã bœxW;ÐÅçm:Om|UƽOÐú •£ýŸN£½uTz¾Ât}…µVþ½ Œ¦½ß{F?cDÏÝs©öÕ¤ Ì„R†º{4Ž Ð=4†IRE@Ûž€uA÷ïQ#Ùåóiô½I‚GgÒt×mOGlrFÜ™‰™"C«|v´»˜*áÀl+ß×nÀ'ç'.Y¥#vè<ûºÑ3îëésÑU„ê{¨I奖u× ™Dâ–öSœ#âhÎÌ`ò`?3Ç;óŽ!gijQ6XD§›hê÷3â\‘”[¾l’×I­×Ò9BÀºI¥êýèóçÏhHl‚RRÕûc¯u«€²Ñócà´dð'ýy<x<ÞñÜLºF¢˜çŸ?ÂÛÛܔ›žgüþÛïðOÿôGüç?ü'|¾ß X?`½A ˜ØáÛç/øzÿ„?þ§ÌÜ¿ÿû¿ã×_͆ôé¼Ëö+1Œ ˆu@nò`ïr½7M»÷^XÅR#`“ ¢|ÈÀ›é4HF5Á|W“‰x%WóvB¦.«åA8ÙÇlÈhñÓßÿÿøÇÂ~ÿ{ü·ÿöá§Ÿ~®öÀÉ;pL!´5dL&&Û[E6„u…èç“c8¼Ý'xÌažîÓd ¬yÆÍOðÃ3Uïß< £T‘!DÑŸ1Ž’õ{W°Ú6¸`FiJ%E¸}Ï5º”êKÉgUÒ^'¹ÎÓl‘ÄüX:(G²µÀÎÞ#h ²!½D›ØSövN1ùݯÈ15dIŸõsQ†YÈLbÞbÉ`Ÿ „bæøµés.~ÎØYÓä0±IçÉG¯g{ž˜B€÷®>o5™èÛÏqý·}Yz¯ÔHÄw':€.%ëzgXÍsØ}°kâJ»ÿ‡mþ[Ï~¤bDqäìUš¯wköç§>£V¾Ñi=1ògmÿ;Õ€%8–FC ‘¬`k$ùü…àœ‹2lÙ¯·˜:ªy{Cü$©&¾5WïIö\ZÈl¢ ×-’wÀÊu —u¢8 “m3Ø•P¼àÇtÅÊ8ûÞÔìfòZs¥Æ¸·Ù´Nû#“ï³èÈ«HF’}ï›4å9Ká)ãU“¢ƒ(׳âo4ùŽ÷Ú·¿»û2WiÏÿÆÖ¾‹ôÿz:Sê²ËñpÏ 0=dê s¿?¼ÿNÙN؉ú›Ú+ÓœÀº¢0dDCfækétg:íróúQëgIpÏØO¯°¢ú¸œÊþRaÉè¹^ýÒF÷¢`A¹*5€U{ð‘^ƒ #6JŸÉ¤‡³¦8¢ ª•M€h®Þs3’¼2UÕLÌG÷þ,õï•gù5†ãñ|8{>®$Ÿí3VžŸ=ÀfÄ^î…WûÀqí‡áýíMݳY1<[«wƒJÞo£çA:°Àê…#Tïuà¡uu-"zjë·’?ºî`?7ëgEq.ó<È£§^?³ºëðÂcä•}¼z=¸Ë·¡=°Ð©{âe€¦†Ä0\”SMÓ ÎÏ`vJØƦ!“©‰¤µhÌ-v»µ‚”k?ΦŽëP²´­°žÏg°ŒÍ˘¦ÉØVÓ7OU]²«êŸ+EÂ`È¢×ÏÈc6h‰uõ|>ñxýúñŽm}âÓÛ[fô$ß›°nXS¨–& E±­«™_=ï®^w† $„žØ¦'ÜD%"ä‰câµH‡R6M=Jýn°¶#t{r—!»ñM5nšä¤BH"Ú½î(¼¨A‰R4(æˆ ÚRRÖCG“GÖþsö)¬*uQÎ3°è· çSå¡GNLBñäO=FF™Wü¯Î¶ÑTóø3e PëÓ’Ì&÷F_‹Ô6Ši4ØüÑ_ÍI‚Ìð~Ú‹ØÂIƘ ½`È ‘ @uüÝš=ÒFÓ”œ„§¨R ëë¾'Ííinh¾?ĵˆCúÝ+@hÉFëz“ý†ˆù¼Ù¥ou| 5]TWkí¤yÿ-òíúoÑËa W±ð­¿Õ(Þø |ꙞÅWÂY“š÷zíO’Ž!mÈ/Î+ÿ€Õ“¦·ñîW÷iüŒŒT™Rz˜=/Uc^0D¨îz÷8û¡g°oÔróž¢Kð¦Ì^IÏÎX·WOï÷ŠÁ‘è ”+š”$Ùÿ~ÍuC Øægû#¥‡ž2!`ƒJ{œª2ö„+% =K¨δ~TA¥{Ïö?œÞß’ؽgƒ žñ¦¸vdÝC-Ÿ“áÔ9ysUæÄbK{!aÀ•öd?EH¨ÅÃóÛ1—ï `^©ÅÚÿ>•PSd×t¿WqZ'¾@RÔ:¢hŸ¥TÓˆ}f\el!`ÛFž Qòdõ4~^Bûž–Ø# p7óê4Ù4Iµ°>>>b=‹¦y¯¢!x®­ ÖUò§J’¹]þ·Sgݰ† ±ç…齪±i"X³®+BônJ –ª1®œgÜîw|¹¿pµ,ËbkÖ;|úôß>ÁÛ|ö¬ø¾8&—ÌÀ‹luÅ“³ö¾E1ßo²bÝžx.Ol¦šTÑÐß±ý)€–eY@¬p^£ßªz_4ß2Kß”¢vݪ¨d‰’*‚n1å‘Á…O×ä<6³Ë‘"lqð+ ÅŠç¶b[`(¶ç¬b@TŒa1VŸ#† ˜¯j\?aÛbj¶%n;ï1OŒûÍ«Û<Á0{Æmšq›¼ù,9%i.X ¥Ø%–š«ÏärÊž… lÁæSJ¤*cÛÖÕ®Ù²†(!7P/ÄDÕ dàU”Èn’„Ï—ëé IDATMÛ“´V#cµ4Ê¿u1à>µñQÀ±ÏIz“U)Xsä'¼¦˜8™=§¢çCÁŒ‘ÅlŸc“™ãO1…Sò¶³5àÜl‰…ÎåY¾cÄ{BPuæ^MO8:÷I4qOÖl錎k; Å’|¹#,÷Òcp¹¬vÛ¼B€Fµ‘¥{Z¯mg™ÝWØ ¤^¼ìnk[º,()Á;Ew÷ñ•ʇWâsiÌ'3EŸÁ5âh ìåЯÖèNúºT7É!È+âÞ3dÙ§1Kò]¡zàð¼‡7H pÞYúçá´²fi ˆži¼§¨mÒg õ¦ž=ŸŒ´Gr’äÝ‘.FÙ”Ù ×*en$¡i)x¹!?LÅv¢Ê¯;36èd9µ÷ÞgCóƸ‡ÌŽ¢³¦®×Èî&Åtx(¯Ø8-År4­ý¹H?kHK¦N¯hëM­ÏÀ²öµ§Ÿßc~q¤¬§û›4Øg×¾ô¼ÉQÁ' ²€o=ŠÒê7p¯°Ù\E‰ýQ–E7™ŠêØv ÿùz8²A®’Ïæ£ñ¶_ï:˜W`ëÊWÍÈøë¯ï[99I¬Fפ—žyÅ~Ôì™@•Ô±w­œk¢‚;V½Ö`{É0$Ÿ­•Àí»å0¦]ÏgFø— ÊÀ»ïÈœ8_ÛÇg.ׯ±-ô28àüy<y{E^ËN1‡Êû;zÆzIǯ S"úbiÐË)Þhï°î|03ÚÓM‚#¹9ÈU³gÇè …Ç…µœ0í¯½Dªý¿u`%Ï®ˆæ¹öé¥ÈŽö–£¢–â·ÑàVlK”›0œçbPxv{k[@zÌ!Õg{Êoe)^y^ ù~ £¶üŸsÞiÕhãáÀ~†÷ØM ž£ì)5Ñk°fYbýS2V"]#‚µ;Û*'æš8Ôì¨UÌ„ Jiv;Ìè1xªƒŸ¤kèy4¨ïËŸËß7*&É5òÐDÔFž:|M5°§yïéìÅ$]vk# é$dž5é½³¦wÚÂod&ښ矯æÃÑIÉmÞ;gpÔB+l:LÐ"ÄwZ”¿;­3WŽæ_b1cy?*°$çö¹â>p¬5  ÒKÛªç*lksÝËï™±>,p ³ØÃ>4#v[)GJ÷R É3G" JVܱ^áø¹”"¥ Dñу%´öÂj™WÙG+Ýßø>Z”=3Ñó†+’“´ï1Ø“œ &æ»i=ÒyˆNrh4'Lþ˜ÂR*†^°t3fiºáv»ƒÜ“1É&bœ°û®¤½ØñdlJ1Áˆ½„tV…ÞRJø²_V`™D.™³[}ôööfŒ«ù^ù´´>W ÄZƒfÆUj|Jóu »/@±Ùa-Á®-~n«j§éæñùnŒªyž+°)«ƒ€gî÷;3HÊà “Bƒlg«—ÑõIJúýûw«óBÀsYr2Øý~7@kMõA 2#÷%&ë›ò³(,ËUÂíí .šÉ''Õ¥éú-Ëøx|ëޟƈ|¼¿Ðè>ž«IõEJ7Yj¨’Ñk²bSÅ6ÜüÒ¿Ï_Þð/þW,ë#šËÇk²-rÈî6¹Ù4Mð0;Æ41î3áívÃ}fÜnŠÙkž&xž2P®™ýÃÑd=¦°M³ÉÂæú_Pf¸yoò-9ÐÖÇ&Šeµu%¢x.>>žY2šðx®X²5c ‚(‚-c6n‚îûµT{2;+YÖÖ—{ëÒ:÷‘q`'* –ª“W,þÀÞ˜Y³c8oç…Oøl½<;À«œ3¦!2fŒie>G=±\®wëÍ;_ÉþXåàŒwÄÙ2eMiÀ»÷|¨ë,.(Êq™àxªk@-öÿË·ýìüØkª³Áô¡¶ÃuÑ®¦I5Æ^ŸQô²ãjXÎ{®ëºÄUûU:ƒ‰ô(g8ˆ½^ÏQ•¦–’êض5{èIª ÕuZ–-Kåµ,Ó[à®È÷ó1jO"ÎlVb@t‹Rܸ¦[9ØhýÏ{þå"²3°F7é¨-¯@éáÓ6•Ù)óA×n©IjAآ٢@l! Ê€Œ6öš³wV¿ß©Rq’ÉfÕ¡11l¿ž ú+Sú‘§Õa‚øŒ”þÎuÖÔˆ)Æ×ÅÙˆýqÕøö&ô¯0Fè·¾ ûߙֻ¥,´F,š3ÿ¨‚øXr^%i8•õ&Σ€ŠqVW“àžwX»QöÌóµ¦>˪”xŒdq‰;4¾}ÔîG9$„ÓI{+³»Z“¯LD®ž§ö•“˜l.ïÁˆv&ëúögo}–¦º§Fú{®Ymh'e)¸ ²ŒÒO.ïO3}ïGG æÊÿ¨>õ~6 ˜+?ƒ<’€õ< Ž_O¿‰ÝØcî¼âAö{ï5¶ÊÕÏ?»®£÷9JnVË@P8¾wå!(´sþÔ: ÝÀc$ÖE¶8¥À𢠠X3¶-+”†Ëlˆ ÷M²÷s^vi×…\t$5Ù†!ª ¬[•‚Vê%°Â‘ TrH‰UÀÁbØ·‘žö?VÐ=;U2Äb.2Ò(éDØc.˜tgìÎÁYwµ'…,cF`ë×g½í2nR…ÄZX”ào³Iȃ§ Jn—-Á’­y#lIÞÍžµ¥ds—ó!;Ð8@‹M…dïÌŠƒçäqeÒ¼Ù˜ÓÙ7\˜üöSÏ{÷'[ ´‚ì`–Äæe[wO, 3µ¶mƒg{ ÷û·Û óÍü“|l*—å¹ÒÆÄ*ØÄZ%21Ä;KÂ+ÈT‡¯ñë–m—,¦Ae¯9ž&¿ƒÑó,…"ìþ1®»Õ¬Š#[Á9‡/_¾áÛ·oVóê™FÏøš6|ÿþ¿üô~þùg,˼½aÛ6üúþŸÞîf枺%6‹Æt›±Éf×óí†÷÷wüíoÃú\°®›±SƒQ•òºVšz†wÀìÛ<á6;Ls4kŸ}4n÷p LÑ´Þ³«Ö¢i{5¼¢=uÒ»i¯u÷Ѹ–·h¢ Ð°l‚Uìó!<Oc®ÙvMÒŸ˜ÄHËtù‚±Q4Ia_’!~„áy¨3Iâ`ߘRDj²<nÃ;³À™i~²Â!2 9'âg¿+ïmïÕhxŸ- p†Ù •Ž5}zöDV²aû~ÿ<¶m©û¿X—µ¦ä]&SÁð=zõ~é§ÇŽ/•.½óôÔùDýpÆ.o1ˆªÈÓ`½5fO_³®ëŸA^ç  ê~•Þ°½¾±‡ëô²¥òaÔ_3sÆxFj ^Š{Å ß½4öD»:¥ªf0õ̻ԾøS”™C(”‘Ù-¢ÎAAö¿ç©.hOy‹÷ØS2˜6ÿDmOuÖ”—£ûCŸ~fœ2‘{€”òd[%ô›"Å UŸ¡q€'h§ÁkÅ8—0ÙÁ뺠DZ€gêTÀ^IHR‘Ú2LÒÆÜ>hW‰b5Ûl«šQQJ,–!{ 8öØóìQíHtx°ù„øzxÈvª ùÜlÄ1¿¶ vBöÓôx÷«B\k™Z«ÈÓ¡öæîžozúšÒïK×>_÷ ™ˆÍûI °.ÓJk #©ÎsÔðáPm€Pñ©½ézÕįϤ¬§î%Zì®^J‚FRÄ>€_Ò1Fl§2^÷,ðUÙÉÿÜ(1eÎÐy¦Ó@£:xš0€ä‘µ{Cq÷ =^†þ=EÚåHºÓ°^¾Û‚ ·]ÃrjSÑDFFçµïÀÐLŸäмShÛTºÒ ݉jÝqÚ]÷¡ÎΡ`¸¿6ìzï'íkf§Ét›Øú¾¡bã”Ï·Ó<laËÇé~n‹Jލ.Í·sã¬[ó~zRÜe䦜Š$8c¥°ÆÆI6éQ¤²Œ0¬ØVĶ™_ k¬=àʳ1ú_¤5×z‰‰à4Ô;‚Ê0Á3Õgƒ‹øz"ã91k“— ‰FVç(vŠÆÐæéÌ`¥Ø€QfÔ祖¼ä˜KTÊz)Ñ;c¡Kùãêïk÷e:‚RÙ…êôÄ̦ÒúœÖòg¨yÖ #¹f §úGmÜÉ‘ÎÆ1išßgœ°ƒc †M`,Å &egxÔ™•¶Ž‚¦†i«$ƒ[Y “>`÷vžÍãÊO·ZJšYWMˆAzî`ë9¯+ïÀ0y ƒ%z>)A·èÏ%‚e]ðx>ñ|<²_V7U1þï=îo7|úô sdÖ'lŠÌˆÂèœ{.ê÷äñå]º¦Æ dv¹ÞÑ¢gJfíéÜOÀT>ïÃCá0E€.f…ÝdÜ^AdÃûÌ:²”½ L$V6Æ‹ìÌ 1O>3E¼s˜#óìv»™‡nX–Ë㉿þí?ð§?ý ÿöoÿ†çóûýnl‘û“÷¶™ Ž¡˜ÜVÆí>ÃMÿú—?ã/ù –m…„͆š°^‹b ÈóÖ9ÂL„y"Üf‡ûmÂ4nÞcž“gKt“Ÿ##ÍÇ=Äçp%%¶tÆìÝärmÍ~Îû7BÈõš)~lÝ.kÀ¶®XÖÕ<°ÔXTKdÇ­¢ö\)Œ¥µ t3éê¶™Œ5“ZZògdRà•(ŵ,Ã{Uڜ뀘òZ5ùÙç ‘ýjì›dÄÎ)=&‘°Læ}å#[Çù\1ò÷Ç^˜ŒÕ'S h9„Ü¢çdzušnv>©yŒE.4Öu‹i†G‰ à³±ÉÒùâæÉÙkJòžeÏ—;­×jÿ1Ò¹‚’ WôïQÚ^²ÃãÔ+ŸgŽÑðm$IlûP‘-ïeåù;’¡¶ýwÛÿgà.í#“a ¨ FT)%Qªµæ,ÜЫ¸kCªzd¢³Pß2Zðb§um11|ΊŸ“g_>S5j°ƒÖ»KˆÀYBØo\ìõrŽ.$W±’å…=K~ûQß„ÞD»¤ñ—¹Äg“Às¥wíGïáÕ¸]P£Æ·÷€[Ç^Ú0FÅæ+&£Iíé†ÑÈuJÉQb¦ô¤+°²êëÒjöbXº2m ËúšÜ E²ô¤B#Ðât= /wmÓôŽ“ˆfÚ©¢ãGïö½µ× Ý~ èÓcàŒdˆgi†#¦È+Ê+f쯲]Ž×±ŸºR‚Ôg`ú(µNɤS†ØÈïÌ×lÄҧνÆñíÛ7|~û”íÌ|™à¼I›løõ—wüÏùü¿ý÷|}©Á8ÑöƒÙ˜šäÒûc¼ÍŒybÜ&ÎàÕmö˜'Ûä09c^e&¹œjïÜÙ„f"(ƒÕ”J˜‚¿Œ[…„`‚u3oÛÌûjÝÖ8$”–âÚU¬ù>J€ ‚W!>cE_TØE”©ƒ=™ÿ+>°å °µË`ì*6)™cü36 Iâ’MFíˆ@cò€'c_9÷ê`Qô-†.‚õ¬Ö» 4„3™c@ÕâjåÅq¸g@€ ›Œ¬ªŽkT ewÕ#¿Rß_Õ(U I³÷'€f4\k"WõQ¯wkm3zV3½s«Ý'®’¿G>±g,Ú~íÚ˜àüÔVè2Ùüˆ¢¿{(qãDF¢³Å‡“&åõ>H Š“-d1Õ)4¶ñÌKKŽLšäÙeš^NߤhEl2`1áÀ˜8KF;,v:OQÓâÿ%Ã*5ˆ#x;w½h2¨b”Å›`ë¼Æ4‰)“—Žq÷‰itÊrÈ_\L=KöŽÔšý‹´*VŽ®ä¸l&Ó|æñCSªë˜P7æü1±¨/ Aò´ò¸¶%3 ´(Ë„H쳃ƒ4e—K4 2y Öbz&EvŠöqjCÙ7& î Ú-U#í·Y‘ ÐR®‘™i ”ÿ˜ý4®h»Sê,Á¤.€8. u¸K&âkÂØ,þÔ¾³×Œ¾ÿÌCêì°ìrg‡ïséG¼´n{ì¦ôŒ_…(h»oà˜âÕ3¨¾–Pާ_#O¤QÑГD¤]'ù,É © ™nõš•*©ê³W\Œä†W–‘Ä÷·2ú~xig²ûÞš¨ÌQõšŠ?ú»¥Ö@MéXÐ.€U H2‹X¶o.ØM Ê ¬ä­R²×\yçä¡!8XÛëi¶ê}§ÂPr#›þ-ùt"ñ}„8 Pr€‹’22†q4/>&à‹àb<{Ú¢Éï¶E+cZMÎ-ÁSL¼ŠÇšq´s€'E`‹ýð¬™JõQºžhå]óå:îe†íYºè™tð¥ýQŠä¾¦Á©ö­™öÔ¦hæs…3ƒäàœi‚ñ|ÿÀóùIJ<ðx<°<Ÿ–è·m||MŸ>}§OŸpŸÍÔ|]ל2hfÅöuf.ïñíëgܧ÷[àȹe[±„ ?ÿò‹5‚ÞšSõô>gÂaóiãÜó*fªÏL˜œUnŽ òÎÌûc8&¼M70)&v@:p’2"¨»“XÙÎ "8?!Èj˘dÈ‚ïÉÃîóÎŒì­ùý:é S†p)nŽòzy¹æ X["Á(ð¦eDÿ(Q½VÀõìÝöÏ·Æêåp¤”K¡­OÖøýö½¼F*±³á´½f¹ôk>ë“}ys{á–jÖ2r\f|xz O%Õàn¡dZR‹æÎU3¸¹¨{66 뎖‹–&ò8¤—U771‡²5,¡FK$œŠâ]†MÀ¨AÜé–çi6å‚.ƒú“Ì(2ä–²tg—Wµ‹³ž\™ïö¼cº›jûLúµˆãÜ1’¹:aÈz)?:ÞMÆëë Ÿ'É·¢|­ÇB—.ØÙyôz¨e é³. ´þjN÷]d/|Âac‹Ï,kL…₹¶¯«$;92µª…z(œ÷ANˆÛdt¨¼F¼")é5Ò=iÛ()¯»Ö;~xg¿çPàÊCìUvÍñp¡†!F $1c[I[ùó’l¢°®ugÖaïyt9ÛKÎb­_ñÀêMó:wª»þ{kvB˜¯@´vÒQXWRïák8y}g{ù+á!í{h'˜" ÚMû+Ó`Kÿ™º€”¡$9 _Ñ~ž¨€ÊWÊÒÂLÂ'ÐC%1e,¥0o Ààñxä¼ò4iÞ®h+ÍŸ%Ô^9YÍmO b2UæòàÈøp ÙÈqþ»g?|@nÅfÓ³Ãì­A÷‘±<ÁyhÇÐÑ IDATÂì& ÜÁ9ÅÄ„à6x¢hLИV…~§÷ï€hjäË!O ïûB¸¬  Ä•ü…‘1Å—köìÙh÷o×0u'ß½s²ú|+o©yw£`²-BPDSôcJÙ]If()é‘£g©qöSI¡Fê*ÓóüQ"ãiÝŸÏ ›"xu{ŸŸRš•¼q’d«°Ê˜ù-ÕCé* ¸×`&èÇ÷Kí{|&2¯$H–/¾½½áíí–ÓÍÖu…lfb¬)©·iƧûîo3&vQ:ëVÙ Å)õÇ?þÑv6¿³m3¿¨½ä£dCqçäjþ­Ä ‚ùkÅÚ©•–ÃÚº‡òU’{ À˦Š|=‰Fôl,-G>ûÎM³½Õ€eÝðüxàùýß¾|ÅúñŽ-ÞüŒm[ñþñÅmšñíÛ7üéOÂ÷ïßá½Õooo– cZ-Ëb켘¨-«dÐŽ@pD˜˜p›ì5L³‹É”ÀäÕÒ'“ N±™žx¶=ÅÍ–tGQá]V*‘ieì+¶ëÄTy7/Ñ“ÏöVûâŸ4LØ6Éi„[؃2¶(Ü"p¥`(™Ü; 8 ‚J|Æeƒe¦%ƒw\׸ŠÉ}¬‰Û æKEjÏ%ÇAˆ­Žá'¢“ûÔ$ŸQÒí=àp›Ù€Å¸N9²ªR8Ôä\]Ÿàbmï‰Až€°ËÐ…É|Ùb²ÝÇÇG^ßÞySöSâBjTIbæ¨döVÅfŽ»>Çä¬b’j!/ܯ¯ú =í7Ú{“ 2CW6%Bh©Î*ö|Ê×Ô5Ě؛E_嬠Aa·Sxs›Òi˽T‰S$¬ ÂSÅÏiÔžI}Y·ûT¿†Z¿>ãS›ŽÄ ë„!øtƒŽˆÔaQÔT8knB3Qßoœk¿ý,Th!3ÀpK’bTpšV†Lí7fZŠ¥ƒ¦w!عðìisF‰D‘Ôw%1ê/t6A=æÄê;b0˜!¬A- ƒ«Æú¬=ØIJ¼4Z PϼýÌÃ&OHš&®¥1Ž]gì {˜yøû £»SoQ»$ŠØˆM@n6ì×Ñ‘Fºm¤Ø+fdœ¶æij*Fq­;¥‹Ù4Wl’Þê³køÔc,Ø$ I‚€8­Ù¯½± ´bl%ykóz ùèµ·‡O(LÜ{€{ïÙn§!gÏç¨ ¿b·ôž³^¢Fk`Þ[7gFŸ¯˜¿Ÿ™gÚ°«ô0;Jš±Ž²ôïõ÷{ïë˜èvV7É„ú̲ã5êƒ`Wþ\½ô8Ý“!ȶ7)-•†C£r?j÷ž´?äFyÀì}%͵b`‰5µcéÓGŽ¡ÖéïY†£ûsž$ØåßÓG8CþwV! Uâ.ÇvÕõLàŽ6™e'¾âDR_| VÍþšå3o cÉ@½`¦äTªXà9E*ùE©á&õ^´…zÍ|<—"N½°6 ©Ömƒl&•Ê ,Q¼¿¿çä¸4éÏ VØ'´ÁX ƒ*'×}<ê½GÇC¢–Á‘öÏÊ{Ç)Ü'ð*`·CË9ÌÎÃOŒÉù‰>1ÁOŒ·ÉÃ{ŠíQÒä7Gð,˜ êLÚ¦±YNr«2ª½ (í¿WìË|С „á~ØÐ@ʾÆÔŶ61‰P¨L…»ÿcª†bÌÞda“Iýí ¢NPU öZ·°™9“ãÌÙŒ¼ o£§ÔÎÞ x¥mÙ}ž¶gNóKn—×Ã4siº½Åsš¢OÛ¨¦=¾di°²LOkyˆÉï ¼z® –Åä‚ëºbyLà6©ãàTR¨Û·A2³1˼ƒ7 —®ŒôE¥0߯)&ĸ JbVw=§mÏC àUÌIÑ{¹6üP6lY1…VÍöY%¥¸—\Õ@’F´®_Š‚8ÄÊ”õŽà=à =…&;B ”$ ‚‚'e¶9•žHà 2>ç ˜2 ¡‚tÔ<—A‡Ö±dewASfÁ¡KÞ{`,;ù\63}ˆ€œ3]ÊL‰R½ìÝ7Š´äÂ%5ƒ\YsÕk=ûHAôŒqt]'bç»Õ×Û4Å•T®x[–ï{ç~˜Ü÷ÇÄåØlÃôÚÖ>u†áLTßseÐöµ×q`÷Úˆà}8í}–þ€Ú3Åì6 û|:ÜøÐb$i%sPy™Ö·žÝ…ÌíJu¡Õ ^M#·L’™ îÐB3…G` AÚÆ”³Ò…zX0;¤”Z(f*§“5}ƒ‡&LyÖ …£FovâV7­tòíÐ:cq´ÅÙÈ•¯ÅÃoŠ n©\å´9?òæÚ2 ¸úô‹§Cƒ{êÍ:}‡íþTX"3ï$0ºßd‰ð½\Ðíý¡É8ó*m¬.fvŒ$‹ñm ÔТ ©/ÀV›ºFÃ6ä¹”•†V#póN»ômÜ¥Zæ&ñS¯§úZ“]g&õÞ]dÓm –û¼¼‘%™f÷ZqóØ1¼ˆnîu}Ô”=&F’ HqEámòwå“Sr“¹­äR0ÏY„‚NW\”o ¤TØV'Am}XRѲ¸Å,˜ ·z}Kƒ[“Mt ¢¶¡-þcÅü 61«5Û¡4åŠ#i€‹XŠ–Ûlþ¥CÖçO“Ý Y£b[!Ü… o°:½%¯mÌ{†Ò3öÙ"qÊëí–Öòì=XáV“l&Dç‡Ñækä0Nea}¬&­Ø©RŽ €œ·,Ó£T½sЩú„º@,Æ·‹ä~±ê½Öià K o˜««÷nƒ²÷²ÜZÝx¦eØd#6¡¦%½ŒJ^±­¨cx鹘ÛÔÎUo›º×o›÷zøWYÊî¾6.Iû™0sÕ\Š–ð:髌—¢Å³Žœ`L‚Ô5êÒy VÐ=7 ‹›‚šˆ3Sc —‚6XªÞR•)Í Hä9[j+5ÿÌ’ p²D¢”Ä !AFšsW{lML3rN’àÝÐ"§¿NˆÔ€¶=÷yIfSK |á<$/Œ–Ú˜&kèïÓlì’µ´$fób§¾+15iF1 ù_åŒ"ÑâÈcí:Ì%á (HsT‡é²—Y6E=@ÎXÝppN÷òÊôv®4)³€šO ¹”šIsð Ÿ ¾<2|P†gÀ;ÁËè0%ÁÀÀmÜ(€JRÖz)Ž›<0‘³™ÏbÁ¬¢÷°/åÓ‚ÒR7%E]¢L£ýœî€ÍVK)På.Î’IØÚ}%îjMR@ jJM! 78PÈC á1’9Yh# ÕÚ¦÷É´#[Aœ\º¯“Q©Ô-¥%'äû’£¡cñpÒH@¸ l™áåã8êº"²¦]3µð¼b‰+œÒ²7ª\î|MhźŠ&¼ßï ¸J))`•|¸Á‘‡#‚^^_qûðŠ×ñÖØˆfIÔzr¾ yU:àyIجìÇ –o=Eï_îøôKV ­÷_r¸Ï3Ò|7 —‡•XŽ·€ÑÊÖ,Zå° ðƒ™áKDÁû…ˆÄNÜ$pÊ´›‘Ià\h‰—’YåŽïÀŒÖôë:ìý³¼z|APÐ, aJ*ùª œ’’– sÂ×Ï¿aG|ÿ2€â„! F­÷YÁ9L;3ò 8Ú?·{wÑÈ$¥ÑÝ¥‚H ò¨©eIÿN¹±(×L»¼ajÖB&ADÏñüÖB®×eÃf«{Q„´1iûŸy7¢É†PÄEöW¶ ƒJcË%Ad¶ý,7?ˆiŠ*Ÿ3¦ÓVZؘ%$™óâqU¦œ´ ½O3À*ÕOfœ;&VLÒ†wëA­ÏÀZS¨ù~9Ñý=çfKËd@¼´Iõc|Y3ûT+®)k¤Í2g¨,ªÖ6Ù x¯FîYÓ É±*IÞ!°úÝÜÏ lÅä1ú‚É D‚’NYWLîj¹:th³OUú/ùÚOúýqk–üŒµ¨ƒG\±ç]ñ¤ƒ]ûîS´ÙÎv­Û„a¼é0…UŠ  Äâ ¤> 63äeà\È< óÍe#ÅÖÐâÑͧ)ZŠ`„ä ”"RšÄ1f!HÙì=>¼}ÔAM(`DU“ùUq-­¹gÿ˪‘ÍÍç­ƒÿ5ÑyÄøÀcžÔëjš–Ô¿nœo÷'„€·×W|øðÁ˜#Êâ˜c²‚’Þy NÛ"#NÁ«1 ¸ êyce‘×µ_ŸGeyUy\J R fLjéòST†Ø4M+65£3P/&ÄæÌuFÇãŽÅ Èøü¸°š¹ ¤ ˆþ®Ñð<¦¯˜#Ã[òb.iNHœàÉû•qóNý¨œÃ-Ü€¬`ß<+ œÁ•úBàAðÐ #.ª ()#s6ù¸ÀkªÓ&‘^‚#xc] |pcnA“1 XôÞûÐy ©EE%D©ëÓ2W9'd©ìòõ:^•Œæõu%íßúúî-(ò–AÛaSÆà”áGÅYŠ£ú;"x“F«’ÃéžI6è*\DåÙê9æ`d6³v23ýšBhƒ^æÎþ§ä–«àìšsNÆ¢JqMV„ N¬¯¯‚ͨèà·íñ½ë2X«úoÝgò‰UA¹ì)ÞS÷±¨Šfúçšì³¯ÏÖõW_Ÿ­½í€;e€Õõ ¥÷ž{G$Û÷söù3¯á3û#&óªö-kr¢#ŸÒ=¦övþÒ_äàÂ^ýsæ“t–*¦^;ÞXK3º˜”¦vrÁ†ZV'Ç®ÉÛúͦ%x0µ?ë{¯GÌ‘Ü]ý½1ÌG;ó°Ùšü]ÉÏ€µg´úÞ¯×XQ^Ï€¢³éÒ÷aÓ^½·댰QŠ”å¾žH A8•s.×BVì"gÑÉgE¢[úÉÁšß•›ØÛ+)â–ù±’œíŒ©Èg‰]½çVß$í^wež5Zõ“ÆL쟣å^Kè¤Èáµzpå;´ú‘§¦îg žyÙ4…Ý©Áæ™>þèž_¥Á]¥^],WûÓ´Ò$‡Àö6EöÙs»NY,©0Û‰Øúz•K°ðhm-Õikœ~)•Äú;¿¶'6{ñá×-ã€ë¡Èi\òÕz”ºMÃÞ~y÷,Àu(ç~OiÉY½Ï¢²š©gÉÂüÅ@ü‚¹ÉŒªœ¯ú>ÉžlψRŠBf ÝÌÑÑih*¹@ @}²ï™ç„‚„”&Ã<§ÕuI²öœŠYÌßgir¦tCAœ3`,f5Ç^§+×ßEä`¬, tél[ÙioêμIØ4h»¦èp÷“]6ß `)¸ØØ}lz•¼t€'¸àn“_©Ñ^j©„-66 > YÖûˆ6y RU4KqG§ìwKOsáfbFBÎÆÄÖÓWAOYXîË™¥Ì&é){0´­¡œL"7CRBÉȱK!$‚ʃá‡Ãx³gœŒ¡$]XJ(ûÈÊäZ˜åB’ QÔãêËý+¦iZ­­êá¦`·²Ÿ^Æ^^^pøHi¶dJF à}[»µ/pÎÁ“C ni~%BÞQ{FlÌ1dR†LQA)H%CRR ·÷H9!Í¿ÿúbŒMŽ#qa¸ÎÞ šÉ÷µ}ð/ÇLªI D‚\¾ ¹¤Å_Õ؉rÁ#͸0¢†Ì 1NHE¨CñáKÄB®Ì\ø2=”%a¼1V°7³yž€È²1¼×KR;À¸${ÁaKÁ ž1 ·qP†Z—0è84‹œW¦•½ŽžàxmhÏ\S8M½SÔ¦&Fõ暣®»êY%£°í±ûgežg¤\Úþ² µ‡×ÿh@xí³TVi±"TŘJ ê,PÐz" ²k’+³Q€cgfèÊV Þiâcà–0è½±¬ ÀbÖûâ½W‹ μ ÕÃÐ@̼½ö ëzap ³l Ô‰¨¢£^¿¾¶l¤²n/_Õ2B(Lï(A~ƶÁ«þõ téë‰3k #9›e,=¾,ÏüÚ‡v½ý±÷õsY£2²ãæ½-~ä@Ù0ˆË!€ÕÛ3lí3®êoÝÇÓi¿v…G\Lm¯iÎÇsn°Ž¹~“8*ž· ›³év=ŽšÑzƒi‡^W ‹š,CàJ]G“¨ ö"A1!âUDé Ѹ§}?ñ¾yÆ 827>B_Ϩ+ÐëYB|‘tóÄŒº2ÞŽLï¶Múöí/H>-¯eg ù~t ·àÂé•Ýu^{²É¥ΖzúŒÓ>gkïhynõ÷³Î×ÀWAywR[¿™öQÀª´Íu/--òl½^yðs—>\Ï@ä£0€Õ=~’Àø-Ug×n{Ðôm-°ÖyÏ»z>ŽüÊ®@±C í`§ËûtX¥ç‚‰Õwh÷ó6 é; ‡õ!&Çr›×ÂtímׇhœéðW§ríy·müOÖÚ³=îjýÃt2ÙÚ¦äœ=‹g†¦:\ÈÿÇšöD»¢åèwîž©ŽQÖ37V 5(>©Luñ¦Z¤þ[ƒöœK‹()uu„™FK÷ûPÔ›ÆäC1§&'jR¿9¯<*”e•‘Lº¨}iF®5ÁM½³ )ææVZ;_3f­uõÃVÒ»2·í&°Û¤2êB4–gi,»m[ce·­%¦ ì”g(cñ6àî17(ç‚™€ƒ‹ðÁá6+Û'7cXÃRž¢Ê‰»³ ’æ¿tU·~ ‹µ”~p…wÕƒ ªè˜KZÔPǶªž.™lDÇ(ÐÄ4,UÐyËÓÆ0‹z\E)&K¥–ŠwSônb´z–²D“Ù&öˆ9‚U³‹ÀU?!¯@‚ó¼ öêd o’e_×µÅëWµ­Q ¨J)·g>¥ÔØV˜šçÕÖÔ¼î!c4)ðvÓ2R)˜çy‡@ÚÍÛZ…RÎÙ)ËÔünsê娼óí9ÊÝ@‚D;l.ê»DÎÃIÆ\2œÂjÐ>Œøâ<ò4£DMnœg•ùÊd³^Ä-,¨âQkìhò-gß¶ûÀ_^^ðã?à?þˆ·×xF ˜æ„ÇñÓÏ?ãï¿ü„»]“B sŒÈEå‡cð:jÚ¢c@Þì µð€dçVQkp€¯|ëçzo¡ö¼t{5xïÛ»¯%<ñåS{í>½ßc*Á"V×±Yà…Ú;'ÛD“I öƒ³B…(au~¸1S/-^˜mÎ~þâc½˜ªo“á»Æ îq½zˆ$ü¥íÛ€–Ê뽯êå³Zhé[ž+ÍÞ«ª8JÜ“MxŠîÕ Ç½ër ë¶÷²­žõ5glÁíõÜš¨ï{x9à¶ý΃¬œ¤¯naÛë[ת?+þŸÅ½?c.ËRöxjô{túbìLñ¢êb¯\cð›Þ«ŸÒµ¡³_®\d`|ëû;m26l‚g aẄ£{peeªvðˆHùzëµmäz*çó÷»^°|FãlõØÚ?hIþXR Î&¬g`áÖ_ߤªu¢P§¾´bqmgü.Ñ€EOÖÜYŒ÷À:k k$^C¢žSå„QE' Ë¥ßmœOÀ¥­ øY~úÜœjGéöYÝ‚‹g^)WÿôæãgRÁ~Í=3¾ZïÙ3ö‡¼\^ê ²¾1jb”k’×Ò…î5HY<ɰ¤yö¦ïkÀk³¦ëþD‚ŽKÜþ¿l÷B¨l¼z‘s—Ï[9‰YÞ­×*u+×÷bûü3Ê»Ï÷«ýªù –ci¿”=KnãµØ¡‡»?·øÀã 0FiÚÛƒqýxKj’©®¦6D’ bõ²£ *ué~)f“i¨g˜÷²hƒÜ¥y©çŽ~}Næe Ê”°«YÚ” K4zŒ–VeÒ‡*!”ÍëŒKkë¨Ä55ÎâÅéàù+këVYÊŽ÷+“_¬Ì„ÙøB:™g0„ÖÒyìü÷ã®l. u{L6æUõÒ’ÒKI½F!å*w0¿G©òV²³Yý¾ 2H”YÅ Œãˆ)&||%ÄP@%ƒÊHB Öt9eÀBNäò¬= '„’àh°À„ê»f@_±wëç©©9êúfGðÁÁ !³Ã‡×WP–Ô‘tlSхŬò­]@ù•’A@frSÂ0z¼„W|÷öŠï?¼áæ”ñåþ@Ì{Á÷߇ü?ýòþÇÿüWü¯¿þ;R.øðöîæÁö2¼ ~xA„ xRnŸ#ðˈxϸðˆ3bÑ~‰œÃ4Oøë_ÿf}‚‹²îª¿.ðŽU"è cùÏGÛèÁL}Àh)ˆj:®RAï5iÐyçœ}d`ªîMXY‡¶Ž«|/ Éâs(+[™ªŒ0U0¶`žcûÙ1&¤\@ìá° ,Ô˜|`‡s6ÜÛ¶L,€ô|jfïKáªo“XÒ ¥¹:œgMô ÃQ†w:|sDð^žÃà1VèÜ$ƒÎ‘™è[*§y]÷A` s°4`˜-›ê©™|w*½æKe®ç¢;I £vFî ¨¹Î{û›ào M{‚ìHápvÖl™KG ®^%±üŽªð‘ºmI€<"õ‰óÕBâ¬F»Rv4¦°s—ßÿŒ]u$ý¬½Ä–}öŒ}ôüô6[ œ”’XWl#iÒ!¾\ û†“Öè6ö&ªkzi&î9H$Q3É‚¼Í(+ {•2V)™f V²-ì%FzñÕBgà–ÿK‘ó»&ÿà{öœ-’+ f ½÷gŸM®¿–‡g¿€Ï¤¥Gæ3iÕ³ëóL‚s„ÄŸ±à¶ÔÉëk¼BäÔÏê x|`¡à”~|ưZ±r¾ô€:’T@jú IDAT¿mAœ53BVá Õûäè1ضkn{¯>tÐLå̼í„êºÝ4ß`-^0gEI°Ž˜¨WÚg^OW ò{@¯³Í÷|ß!Ó¦”Nn‚CÓ÷µ¤p{`z+Çi"º–äþýîŸû£ÉÑÖlùÙ³û©ëq ãõ5}–rù>¶ÎAÖ“ýç=^\Û}ðŠ©{º¿”Ô¦\ û3%Ë*m°lXSTx9÷eiHªWUNf/f0ªAZ eþ:\€ •&e3@Ÿ¢@$!uÉÕ+ED'ø)šŒP õyŠÍ ]:Àv+Yl5D*+_”5[(Tš10­ŠÒ~ÊšÀóÅk«”l÷g)ÊÛðˆ>©Oì'ÓµaÑÆ„w÷»²-ÔçNZØJ2;e5 ¨¹®éñ  «ßS¶&0¥Œœ£E¿œòŒ óºisV<äÌì‘̓¥‚‰•õÞFåj?UâQêíè}"%‘ÒùGê OJôœa„7Æ ÁlµhMZªL.×ù¿ªç0 J S f’+Yý¬bšÌ¤½>#ê %D&5, çàØc^Õ<>hš]B’‚9eLÑL­Éüµê{¯ Ï”ºþS‡Æ… \–†4&KjàU4Ï¡š8·Ú¿MÖ4 †aÀÛëŒãˆÁyóÖÚ¤ÕVïWÁYÒg>IKè.P!H. Ì%"ûWøÑ#¥Ø†Ú5½Š²µ ØRÐD”…âÊ" rQ£ï[ìëÔ4}ij½…‰Ô?ÉbF©Ú°ÅÛW”5§2½ïoøøöŠÞÀ|ùí7“€êkz¤0iãßãÿü?þsžñÿüåÿÅ_ÿãoxûîG4mìíí ß|ÃËˈaôäàXÖXnÁÌHq§O¿ãoÿùøõ÷ߺZH‡G ½Tž Î3xÇ*®ÞVƒCŒà†!à6ŒÊî³D» a´ ßBWê ™k ýÊÜÞÒïrQ@²“±bE³™³ë¢iu ^å6th~YÇqJ©…ÊÔ5Û3môwȪyÏENðç Çû:¡Ö ¥Âä”éÉðÌ båÙXoÅÌî ví±š¹£ÀyÆàŒYåy(CïaM \…kV¯®O·Wgu5£Û¨-Ć[ÇݵbZõ2*oäuÚ)£‡/e~òÄÂæY¯xÖßn“M· «Eâ—‡âËûâÍ:¡S†Ùvèþ5Ã3æÿ‘Gõ‘×ö¶ŽÝzË‘ ®úûÒ®XVÕg²®Í-°Õ¬o)®ä{$µ—”¾1ç ;Œ6.Å×êt¬ŽÃª¤«d=ØkbÉxL:1i¾L«éµT'9\ðåž&´žgØÑºg®Àž­‰ü{(†GL’-Ê{&ç:pv r›Ÿ-%=a<œ¦µá-¼jT«ùø ;»?®18êTÄu¦|€´ˆVÙ\'Ù(=iTéHÛzí×j94‚¾¹Ž(¬—”\‘ÃμQë mÒߘjï`ÁÒv³lbÑmp)5amñ¿£Í”¦_W@æÙ:ÚNÎjgòÑ+_À3–׳Bæh?úGöè­ÄûèØú0‘IPÐE8KÇ8¢Ò7~Û´BY›ÞïäÜ…t,Ÿo×§àP†¦&õÇàá(µ4óKZÉÑðÅrãñ‹7ïk‘ÊjÑQ÷ugçÃVâ|%oÚ…+æÕ†×ztVà‚åUÌP÷êìÖà“‚ƒßv°›´SfÌý¯ó›äÍ~-#¹“ö¥¢ UB(6AÏÍʤzÌEÐÉä\)¥öu1jªY´¯Í·*7`jšS‹‹ffÌs{‡4'ãÆÄ:•» oθŨ•‰5YÒh=H„RTÖQ*›¼l&º æ²bxÖÔ!ÔÌ^fY~¯tfä%`M1y2̘׻]Ÿ=Gpúú‰ a÷ϘÝÈdM¢¥,9•ËeKTDÙ IS„Da6ÆJ,ÈQW£c*œJã—·€tk ›Ôä ÜʪíjKæ>®«tQŸì¹:ä(KÏÀL`0Þ@.€G!Fά'c¨¬‰›íŲ«Dm·ærZù>–ŒÆºJiFŒ“¦¢å2³o–µçÔûgøáìÀ+ˆ”LbsÑgÆØ&Y*™H÷Ai‰¯Ì [²o¹H3>ÿüù3bŒ¸›I{вªi|XÕ h ƒÊCøøúa婯¡1³<ºUHÁ”fP°Ì×dìH%=¾&Ì”pŸG|ô#‚†³Wð)s„AÂj0]“œšg‡ÛöH ˜R;3«ü¯2”*h¼˜’›ÿV¿—©L°ÊKR-& ÀïÞ>â»·¸ #JJ˜ïw”œÀÈ0sšðËý3¦ûg ^ôõ–Œû—ÏøÛ_ÿ Z|x{Ãß~øßÿo·ܘQ²úz_§~ÿõgüôÓâ/ù RŠš”g`i•¨14Á±€]Aãà”nƒz^ &KƒƒwDœ†Þ͆ƒ±îꓦ÷Dÿîõ:IF¶Í&ÕÎ ¶æœÕ+.—ö_•>*ë*/)÷ægU•"•qJ­Ž©i…eWc¯“‰s²‰Î‰òg5pï9ë°øDiºžÖ0Á)ÈQYnLE ó‘ŒÕœ¢A2ŽÇ„``£À‡ÀEÓ`½µ;eX±i¡Jû°*}¨jŠàÑð[?ïv Ý­/Yýi5=–$øêKæ½k‰uê{æš¿ÒÒŸñ‰ÊáœU½{×ýÝq ~$ ì½³ÚùÈä¼î‹*Ÿ¿&ìq‚½TŸæ}%·»ê—¯¬Û×r¥¤ÛŸ³tbR è·ÃÀ-c먗=¿Æ¼O!<ºYWÌgô½³¯_$u’ £N2ÀFÜ56ÍàλA¥üͬ½Ê¼ô!Üã—öfCpt fHϳŽ$ÛEú숨_ï6™íëÉOÁ¨^¯|Äž!"MKZQà×肊³P¶)@KŠš¼} ›¤6[Ôwu­.(“½"$]œ1dVŸb[Êùº?JìåG`åöë{¶Bõ¨ºÚŽ6²íár´~·ÀçYÑß~6SƒK‡ ~_®u:=˜Wï“Ìí¿gëûutMz/˜3w»yöæ‡gZü3³ñ÷î¹gòËóöœas‚lË÷—KO»z€í¨Âgëå<ÓÙ÷ž=Û{xæ ÷å:@T&ϘQ×gÂ{™Nïa-¯®Ãv¦ÃtÌ{Âàê÷§oCÏ@Þý>—p³ÊyÊR/ª÷ˆ5ûJ‹uAêíRQCtý³4)`²’ÅÜ׸ûdIR”Q2$#šMŠ‚GœWß—RB’ܼPú4ÛyJ`Íšä•Õ<\L†]­ ¶×Úm$”õšS+Ú×´wØ50ÛldYŸ9çÕú®ûër¿7ûÉÄïÒC@ÜŸkÓV¬é²k)Žä­rL‘¼€ÄJÍ9éµÈʆS)Ô¹RH›Ïb4_—¸÷1`p£î\ðzLâåc¿6D²Hqîkr$ãYžµ¼?¿ß5±/`hAéôZ:(ƒÊ« ºó7÷9daÌ)!Ål |@*d=Ì D¯±‚ý_D@’W’Y‚ NÄÀ+e$ä¢×YŒyp™¼Ï¹Þ ÇãË+Q—TÊs2ù¡=¾j*ŸŸ³h^²*ÅÆ0¾@AßÇãišp¿ßcTyš%Âõ!<£Õæ·Û ιƾòÞãË—/+p«š}߆aô ›G᥾Ç·×¼ÞÔ}GĨ¯ãó—ßñë¯?ã÷ßGŒ>}™á_ 0Œð^{0Q²²P¤(/ŽÉ‚2ü Ø[˜e•­SÁÖm]±b·ðÆX“B 1¾â<ãg„Æ×f¸í™PŠßPˆÓ„ù1™10AbÄ×ßCAÆè´±ûôËÏøõ·/˜ª4ÎÞ^^ññ»øá‡ðöú‚·á†à9Fe^ýò3~ýíï¸þ‚ŸþÙX6@–Ïš&ªÜBà6jjs–.:MôŒqT Òo<õ¼ iUï)‡aõü:çÀÎ5& ¡)§… •uH“@’ùQA÷«$ cÄSSéY´Ô½1ÆU]ÿß{Ç7~<{IùYmtœ´J«'݃™x N1Æ•#Q¿7K… n‘«¯ð:Ž€Ì†ï/cÀmt "NS½£¸rΆz_X{î°nê+IóSVü‘eÇ–-³­õ´NP±~¼îkU5µº¦[ÀÇIº•Ÿ½W‰°ò£<‚.²É¼zoÛ~ê™/ïVV÷º>¸«WõŒ¨3rÆ·Ôx$<ó›íû÷cS{>´Gé%ŽGо³štÛ›{ïXݧ¶½cÛ`]”í"èÑ6&³OHé›ð\dµ‘Wóã—˜N5QMVôhŒ+ñ^ʦ> Ô(·Tã8¥´I“'¥¶–ª“ÃúŽÁþâUúÚ•{/·:“Ø]-¤-Â{e(¾eUäœáƒ_5è}ã[Õ«Egiû©¤mÚEŒ*mL -fúÍæ(É¡—YõŒ”FËv×&ˆ½F÷ÐnUÔ5$—iåµ]Û[†Ú­)«1ËÎw½±ð.Å¡¦?mG&Ò»ŸGç̾ã*ŸR‚¤xɦê#HŸ™Û¶xbæÅ´×"Ûá¦[<[ö‘\¾gw9˜bm޶~6ÔÒg,¤­–úèÞMH¶ñh;zæŸIÈ®Ò) ‡-8y G̲cYœz)¬Ä½ÏÏ2ö>‘æT aÙN]ÖsËù!›g¬]rÇ`KqY@]OÞ|FÒjòMÖž%çí]A÷Ê:òzú‰Ÿ£%d¤U¹z0“à*£§~M‰4úüâ Vv&ýϧÍçÏ-ýâ´_€²¼W&EA– Ú³X¦šÆÈ ëûP¢ô§Ö¨:ô,Š‹ÇUÎÒVsFKŽ’5þ<d(ý?ÆlfÐÅ€ÅH]£Ð=¦”§YÁ)“Æ9cÎihUÏ”b DPdVkbK6f¤”m— ¨í­P-ÒnŒÞ·MeAõ{B>*L}Dì {4¦[³uÄìÍ6¥mçjW8†v“drÞÎtA—p[ýæ„Vƒ‡œŠ qЬ²Hä­ØŽM^SMÜët}޹ÉAkMRCxŠœB0Í _ïnN‡Q2|¢# 6¡Ï!ê}X™oÏŠ3›€UýãiÖ+ÿŠ—æ²5$R‡; ã Qh>9äœM‰Å{N!ŒÍ{¨ÞßûýŽÇ㔾N&ßí›»’Sš¾ûî;¼Ž7}ÝsDžã*ݯ—’$Õ“‚b†=>~üˆ?ÿùÏøãÿˆ?â6Ž€#”ßbœ0Ï3>}ú„ßý ¿þôw0ØüÞ(A š„'êCäoN¥&­Ê(øú¸ãëý+î÷»ÞK%§Ì-"B¨µsõÏêšÖl2Þ³V¿z'ºÞÙ;Ü^_à‚GFÁ0L16ñÃí(jÿêf‰˜>}Bqoà ;MO¼ßqŸu}|ýõwüüŸŒ=<?þðOz†‰ Î_ï_1Ç óýR4u’x“¬iØáæPCc\pÞaš0ª}“üÕÏÌ»&ïBuoeóÓ“ ú¥ÖÎ\l_±0“ &[§YÌ›0Û^/–T› ¸¼×¡Ä”¢žÃpZ{Áq¨‚ø¢½+/{«ö¯ûAs5<ï¥Þø:«Q·õš3†¹1)·ÀQ1&•r2æ•É6½3à Z!" Aʈƒ&Yz5ÌgZ™³;¦Æºòì65ë⑇‚¸qT—ž #« Rk€eÈÓûZapú|–弪×hÇnÏæ§Cõ#p-uG2ìþ^m“O¯jêúqx5XêA–Çãa6ïyÏvê_ýÀ°* ªå‡èûµ­e@ßw³µDZ­ßí}®C¼£su©…—ë_ë«zŽÚï­¯kžg䇀’_*VtDH)ÁŸMø/e' úhQµÇæ ™vœÑŒ\… ž= i2M+,ÚE(È1i²K‡ ׃FdŸF(—A²lÁ“íMè'dÛxË89C¯Ø=õ°;Û<®˜[Û¯9’÷íT#L‚^в£žÉ¨ÎP{6£Àg ÛUCY:`te\O¤zÛ³5u¶N¯$â«ûl‘êê}¼€W"@J*á1ÐÃ|²YOQš§U`Áœ1™Áºö©šdUš”Í0yN‚GŽˆ)ë$>Æ6­›b—XS«´1]È”r8TÚ¥ó˜;™§Õ §%ÕqÇò´¯¯ÌU¥§- ª#F-õüÀ»·»zçÉ÷±JÅd* ©ö¡C4æ\)„B*uª…gÌ.%3I–æ-¦&ùƼ’ʾ#kˆ‹ÐdÒBÂ31ágL± %†äÅwÉŽyV¹ÛfàH›Ƴ½ú*m[×e7Ð,¤ì*ÝËhð‘‚TÎ+³ÄÊn‚sæÅÄÊ”‚˜Q,M{˸êj™"˜QW…ŒTÙ¼æù3$Íð¢^IuT$ý6Óø0¾âöúÁ¿äQ a¶ƒœP™ZH5ÉÛ¼®rQO*y>-|©2¬æynÏ^5gÏ9«4íâ|úÃþ€Ûí†××W„ y¼úÎÔûð¬5ï¥ï?~Àûó?ãOú#¾{û¨ êß¿bºßñ˜&$ÛwúôÇzÆ0¬˜µ^SP/-©Ÿ}Z/\PЧ¥ŸJAbA!5çòÊ ó=ëždæÏ¤ó'8ŒÞ#²½Xr—¬W€ÄH(ø÷/_Ál¶!yFI’Õ³.„TT^Á³ÊÆF0‡—B57öUK?v œÓÔÍF8Ö¿;*ÉtÖ’&¶Á2)|š-”£Vu¥$æ¯WÁõÅS9A6¶bÿ¯äë+6pi)µ xÚ*+ž ²Î†§—D6`®lËà Îı f5ÆwUNHÞ¬Ú˜\#8B=<‰Ê²ƒïX|>t –ò·ÐsÌ=³>¸®èÒÔ¾í±Õ3SŽU[¯¥}’¼»¬ƒ¶ ­ÃõÂçskr¾]² YÙö' ÄO­H¶ìª¾î=’^YÈ\{}ŸÓcGï±2 ¶L±…`âwª«ìª ®-ÐÞO´U?Äúó{àê¬çõïaôvu°oÄ+VÅÑÅgf ¾´ ÜúFå"päPH,-f;¥'¸aó‚»ÍïÙJ¢ø µíYxU™X?“U^™H?·…ie'ç¾Z«iÛ“ÏëžûÃøÕúZ*vûš yòT?«ŒÅ»JÝ:r±¤?u¾ÏÒ v«$p΂iN˜RDºr.­1®`ÕœÊòýfäÛÿ· `ÝO+ë¤(³TÖÏCï¢ ¡…úa·&±(U$­än(Z¸·gåáåý£ÁÂ(åêÒ,¸Å•Txô¤(KÅÞGýXe˃Löi²dÌëÖT—‚˜ccWÕ뻂wi ÑØ< ,AôŒyfLÓ„yPYaJ~wï¶Sg‚So±“€Ž÷ž#…ºû‰ŽYLÕ ‹m½°‚W¤>=Îy°wëEÞ®1«/+è€ÂêéVTrXŒ¡!K86†šðfixT Š$Kê¬WѼÄÄ…r‰(’ –­„‡#ØøÛ üðçG¤â3ìYc8$1Ÿ|À8Éʰøv»µ~¡NÛ+›§¥§užX¯¯¯øðán·W}V’^?H+KA øGw!|M òu‚pÁ—¯_ññÿ„·ï~Äü~þûoø×ýW|þü_?€ÙÑ®‡”JZLÄ! žCóì: ©šç¹]Û#î÷;¦ijïW°¯oÅžGœñÛçO¯7 ·W„@(Σ ´Ä@Är’«tˆs4 çl‰…”“\±ñ¥ –f¿’áJQ¿¥ªB [ýÌÁãeô‚ÃnÞc|“öþdÁšjÉl~WlIƒÜý½¦\¯û@lXQ*K½4„T,m¶Eöƒ‹ØäÊX1°¾µþ¼ž×ýù*±÷È˳ÿ¸óŒ‚¬×ÒÒŒÁ$*$B`ýO œ„àc •a{`@U°ÔAM&4³kóÁÚÚçì|¯ø¸‡;³ 8«Ÿ÷l«}}ôý 0eç/“zçÃúï ¿ë•UWLgïõðü¦“!tçaÙ×&Ë×¹CߨkpÍúHI±|ïóúÿ,iPD¿[yeÿ}}2ä‘- aŸd¸ÅK®žŸ«º3ë”þÿýÓÿ ãJÛxf„Üÿð#ðhÛT6 ;Ó kñ§Å—Ni4ƒÂâlíO*êÏÑäÏÕ¾_ÜZë-µècÔˆR]Ôç…æÖýÐåÄDîè>“c^M¯÷H=ž7MåIcM‡h•rÚ³)Ö›ô±´§M¢™–B•°ÿÓš“‚?”ýë˜pýÚtÍïãd³ÂÖßj;yØRPiÕUÉáÑzÔ.ÜãîÜì¬):4ÑþÆÈš29å§)OL§SŠ÷çì¡+cÎÚÚ IDATí[X#{ ‡Ný¦þ+ÿ¼'ðLFÜüÏ€°£Cútwk²tŒ§ÎÛÊ>UC›HÙÏ%•µTgŽ @ »+m¢Ö>g)”K{6š…–\VÉ%9‘±ÈÄ®ÂíT­ti‹å"¢N(·“×£ût”{&/?{ÆI¦Íáë+×`?['–"X  G²øVAÁ ±ô¦d¡B1gÄ\´¹—‚) ³šæ |}DÄ PÅŒ{L˜cœUvöåþhÖ4Mˆó"#)–<µ—?g™¸fUö¶ùU(‡GS§@[f³ÆÚ—Rà­]¤ê0¬´Hu©“ÏÍZ¬¡¯ÀLZ¶Ù#GlëóÕÀ%©fß°Fœ« 5xeÀñ£%4ƒPÄØ´s°Jц8¥Ü¬ÊÀIUÒc¾£¹dHRŸšmd:³¦*£È<ë³\÷„ž ¿º*cRËè°Èþ°yWÞ7À;cL„\Ÿ›Ó\Ï ð`ç1øœyI1›9;tm×Ô³œÔûá¤bn€LÈM(Èj$/¹$”œkÈaìS±ÿw¦4S“KËû`öœ Dˆs†7fUMâ.uÒÍny¦õ)QÀ¹²ñ²²{¢1"SJ˜&MŒ1Y6&Ͳ:œóížãˆ?âåå¥íÙ>xóú‚š°ÃÊ §#ýCP 1Œpa†$è¶VBêZÁ[Jœ$'$*ÈiÆôù+ßðòáþÓŸðoÿöoøå§_ðëCà<†ZG¦¬÷É<íFŸá‹z ©Ï“o¯WDÀy‘5O‚ó˜ŒmVû‹|I¦¨˜…Prü'„—Wøár É5šá|À—ûY f*{”"¸§„Ï_¾à>O®1¶j½œákTo`V±48bà6Þ”}5¼ÜŒƒGp06c £‹~h £÷C“¹ ÏŠ2²¼“¾ÉØj½ „ÖP÷äyJ`^e€‚”tС@W•g¨aÅí,)©¥eV«‘žéݘU¹JÜô™hu9­r4ºÊ$žßKÊò‘DËR8‹¦Ij:  82é ²£4‰°(#Ë-ÀH¨>VŽ-¨,«Àdk‘M§>djŒ¯àWÔ0¹Çï¶êCeªµöÛ}Êq˜e ¨u}C«ë¼x0s%RµëÔNÅ­–ÐZìÔîþ¥| •3X.»P”³~ëˆÌp58íÏÚsÂÙ­Øu\ÖÏ*ÈË¡K¿ì¾‰y¿ÅzZÏtî%€íêUg'½Û³^¦¿¦[g©°‡ÏÑæ>ù£_ve|ÅÀ¸jÂŽšÝžâ§ò@¿l0\3ÖnÆÁdŸwhÀÇ•7Ô²,Þ-ë#Ÿ,À½¡Ù¶ùì£Ïš¦g åì;2Õ¯ßÒ{¦ðß*ë;bîÏÞóQ£.´oªŸ½Îµ$”.“Ú–¯ÅI´-}ãµØ§Ôõˆ~/­;kœW××{‘òô¹:{†ëÄü½ëñÙóþìs‡Íÿ7°¼ƒ' øYŠÝ3PëhC?òâS°ùè™:Ÿ]·÷®¿oöÞã´~-ǾP=ë¦ÿ}mÂTZ{¶›´-@É;^”õc–v¦ü[é,&y½žßwà>[GGàékòlßÞ6ôÿ0´vŸ§} ãy<3VrAM++H õ#Ée‘YœyÌPïŸÌ9c5õžST_,$|y¨÷Õ”SÄ×ÇŒ)gädb|ùò0IÆ<§6TðS=©mÏ+ÊÙ|’Ц<9óÕ¤ ŽÙÔýû¯ÒØýtqòÅyíÓ¦˜J€”Ò‚¶,Ã3¶è6¹i[wiCâ4%¶4ýþ9Z{Dæ¤ÞcYxX5~^©ž“L ˜$¯¤RêÑc—u\9•—Î Và3ËnD¤#u°rtöÔTÞTF¸ q!ÿJQ/ʲâF ã+BP)IE™!Ťw¢¦Ñ&²TÆ…Èn“Ëì:e‰(ˆ(I½Œ¼R¢Rr¼*ÍMÆ[ŸAF•Á’‡ãòh€p.úžª 5» {¶ÕÑ=C@}³ØlDïsä˜qŸ'<“ðFÌI}ŸZL ·A1õš¾¾¾âõõã86_“>Å“‡€Á€ßùó´!÷€åB€Åy$f$††”ÁLC)(9©yuVCï”’¨ÉzÎÕæýÓÛwøÓþ„ÿøß?á÷ßÇàm©À³±ðÄ+C ê%6›„²šB÷¯?çÜÒ´ßÞÞðöö¶ºF5È$fMoü:=p<ðûçϘâŒâT쇀@ ÇmA€óàa(B‚ù~Çç/_ðë§ßñõ>!刘•áV¶Jn r}ê|• KÓ³9`ÎÆÁëA%iƒ'5÷ZuŒ«à»Ï â:àœo²°ö|rú,ýN݇DÄ‚½tR÷ ý{Ñ—éÙ°­W°ú¾ÖOÙ3DŽß=lƒóU}ê=’w‰ðÄ»P¢ê=FŽáHeÁ±²¦HÃÉ3œ™¸{ï0åœÃà=<8§ÂàÁ ÛUN¨àVõ¿bf;/:¯"âÓÚ·Y¯$wͰ1ø<Äh-SsësTŽû‘Rûö²~«½a;Y=`¾¯È¥4 ä*HéJFY/”=T÷Ç3ïÊmøÎq²ûóžá€<%Ø>%DôÏÅÖ*¢7t?ªaŽH‡þ“ Ã0€£Ÿq”ÎîŸ5V[c­­ôÈ4ô )Œ¡êI¥ßcEgÉ›‰NY³rú⣂Y' Óªy(Çñˆ¡qdªzFoÛÅd_H/®LEß 0ì¦÷'RÏg>\ ðywÆÛ.Þm¡}4Éß¿žs¹Ê§ý,Ku’'ì‰r pǨBÛH×7#C¼£Íâìá]m¦; é5SOäyDøšÙs 6ñ\öH–òžð£&¢|Øõ^–Ó3Ϻ#&×ÕÇŽÌ%ŸIuÏž³oñ_ysê̘ÿHnû h9úné0{૘?BZ2ìúk׌½Æ”\±1­€ i^+«uŲš–rül-šyz'˜¸NIé½oa.åu>%ª^ùÏ]Ñ¢×Eß33ÿ°ì¿H"\^k¶f{Ðkñ/+—l2©7Wf”±¯,Þ¨/Ü@.ÀûìFõÊI13Ä M4µ‚Ž!µ0%E€lÆéêS’Qò‘Å4y‘ÀU&!·¡¡˜¹‰C€»Ý”yCÞÒ‹©`Š5´4z¡ cÇP×(ûLY2‚\T&øx<x5M“2„, Í{˜áz×* b¿aÀzyƒs®-8fø1 ”ŒÁyŒãhfÞPÙ=I)©©=­§õ)%ܧdr§Þâ GõûÓï€y¼ƒĬ‰–® †#Êã Þ†Æ0*K‹7p nÀËø OŒ` ZÏ ÑôQi©ç•IœSjĈ‡Ék¢yñêûo75­·ÃÇãñqþ„GŽøû/?ãÓý+~ýåw|ùúÀÿéG|ÿö¬öu(N‡ú’ ¾Nþþû¯ø_ÿñWüçÏ¿àËý«šÌ爘UŽÊÔˆ <s2v$0a§ò¥!¸Àƒz Á`e@‰'“w*ȼ• [ÀìÕþ…Ccú4o>¦…eiœÊ¢’•I{)kð·+Pœ5H I²dÛÚ7RD4œ`0·($6ƒìžZeÒߺœíÁûs‡ÉödÒÍpëœ1®’ÉʦbKz\ù½±šç{¯÷¥z>£3ï,`ðšDL’éÌK¥‰]]oùÌWÀÕ–ù²¢zoE!]W\ŽÉDyßßuÃ:ùd,L¬¥'êÿÚZ·ýãª>ª¯ÓÓ·:®úväÑÐö¹'ö‰ç5×P…÷)ª–× »k½>åÔ”ýŒÐÿŒ­‘zó6=!ÂlUs[ùe¿—mq”ÞFàŒ±V“~·iÉ« ¦“ð-êuÕŒžêÛ”¼-“¨ºl0w‹¹¹öB¢ÔAÖ£°€„ ”,¸ÆÞÊS੽>ìoâ׳­®ØíuæÙrfæ|%1Ú2.›¤w°MÞ<û²¢rÑ4‹”³C즩gi…GÀä³)Èþh•ÈÌÚ(H1Ï4¥˜ç”QX”uÒ詇ë‹WÅÑF¹m ö2yº~Y4²¿ëCÆ­äNdáÏÖÒs€”Qh) QBT·ùvÆsÏž3AMÑ:üÝï žQW Ä³p‰íÄc{ø.SBw $=¶Î@–³û³õÃûG€¯#šú3ø ðª`Á"§^¿÷,e•Z¸_³|˜„xõ¼ï“j¹É©ôõKuáÃöÙ½9:‰d¹œèíŸ×r뼞IG¿å~^ýýY/ë‚ÈÕ”µ{§ Çb¦«@‡NʧBˆ9`U“š°Ï±`NYÓœðuΘ“& ~f|½O jE fÁcž1§læ»ÅR3$swþó®¢;ƒ‹¬Ø±"êؘÝÜÌU‹­ù„â‚MpŸ}hbâÑDP÷†õí(ݨÝÿêIE‹I86l¬#jÿá’XSmŸûæ™!Æì!(‘Òl Zº«¡´M´ÙCr6ß©Œ,)'DY†ˆÙdd³1!rº©¼mýˆÔqQ½Õ¤º LŠ2”ˆ<¼Ótr6xV–`±¦60ÁÛy'm‚^w"érïÝ? jT ÐaD¸ÝšA;HÙ$Y411&eºv+ T›Rg~6Ó4Y¡Þ=”<›D0Qò¤ ‡IW,· ÕïG}ƒ†Aý·² ©{}%‹y™ÒœgÏ5LÖ e% ˜³y—™1u<æ _¿~ÅãñÀ—‡z\ÅY7à¼×ƒà[#؆ÞìÔ ÝÒE*(‘ÀFƒP0¼Þ”­ã‚6˜žê ›•1™³ö®8Ĭ?«|e¼ÈþÀüooo(ÎA¨Ö%NÔì%ÉúæeÄHß}ÿOê£K.êuå‰ñ”o-©Hp˜$·ÊŽëú®>Pp¼ò€«û|môJÊzfš×Ú—ÏŸÕ¬ P&Qãå—᯷̯ ¿ú„¿üô|úô úçÆŸÿùOx_1ŽÁFH*¯þí·_ð׿ý ÿö׿á§_~†Ä´ò«äbœXú- ÆàÕW ¢,KT«aà¨è߃Ãà CÀà3gׄAöÊõ~hrÁæe¹õ`n6 Ó3¥„¹KõÞwÒAeíªL]*S«î7ý€¹°Éöòax˜®]ÂãñX%,Ë0#ïžô#e• ¾rÎpÞ¬JúÐ)ŽÎ1P¢1UDs\à˜-õQïIõ±ò^ew>¨–~®Þ³g5ºgä茦ÕQýg¬«-ð±­é{U™-ÄÉåÌG{"T¸Ô¾~-+ÛöoËY nT Ù0lÌó% ôÊÿõ=ƒ¤mï³²H2FfÏX>b¸-¯#·ïóÞ7æfK/µuy–À~¦&9êÁëù‰‹®Oꬄõã9׳FvÌ®ºçðû¿ûah>Õ7O©hÖU½ØV]áËvaÔB­Cܲ,"WŸ…ºYž$eEç®E¶ §§Šõ2Õš´Ö˜ƒØ¢Î6Q„äˆ=×´£êkÁaÕÀóˆð6rš­ä[æ\mˆÐä2úùµ!ê±îU§_JÜ3ÐÎX'Ù˜•ìÌXrR)E=ÁvZQ¯´s«„×tÎú㮵¸¥É84ªo³S"Wýº•óFzÒ€^”W ^‹”VÉVê׳?´ ®x6 €}\ êÔô2 ZÊIe-2, ’Ã…ì:ÂuÞ'½Ö2 î7kîÌ‚îûâ½U?&—-K3Ù9@Œ\[DIÎ9¤dž3u/Ü’Dzƒß~Ò°×(/©7Ìæ4‡õ@`B[Xd²]M IhûC.}ä)³†¬ É‡S²“d¼Žâ³lÌ{Sóý¡¼ŒÊÊtöð!(„pj|4í?:Ôž™ç_1ܶ ÆgîÂòɬ4ˆºä¤ÊzïSÖë®~Æ®m¤Ufä 09kØ·ÌWŽüElÞ‡rž²7z_ÌKn¯²µpèAæ{«ô@0:ÿ½µñkõÊëåw Lð¬wŽeçýÇÖL“ *8?1f/yÅRÛJÚØžã%¢}ŸÄ~?Š%­`¦ÔÖ8Ø‘30›U†5͈sÆ”°š…ðˆÀ—GB,„Ç|y=3¤¸›Df”‘ã¬^W9㤠Ȏ 8ïAÄHʉ±€}@GøQ}¸È)¨ö˜¢­BC,&é,çƒÕQ&—*9'M†#æ¯ÆÔ¦1ß´Rð„<ÇæáÔö3ïÀÈн£ÖÊÞ{¼¼¼`¸½`G1“&þ±¥û Ì¬——/o@ÞÁ /TfèÍ ½ÊT?}ùŒišp¿ßñåË|ýú;¦ûÃêDB?ýã߇>~‡â<˜·ð‚2Í`ï!ód†È3²ÉõRJ^F}v€1ç„ù1!§YÍÌPç7©Ñöü*äÀÎì `ùÈ韃 ´Ôµ^fÒÄÐ( T1fLÓóœ…)ƒ#0Àãâÿú÷ÿ?üðþå¿ÿ7üøãðòöª „iÆýËüòËßñû/¿âóo¿bzÌH‡&9$ƒ(ÃCŸgþK)%¸jãÁ L…à0‡ÛMÏæ`à\*õÔÿW Ê±ú_9–Ø{çAÆÌ"¨$´šµ7óm[S(µV,\)8ÌìfܧIýå øÓ=P=uÍ º6EÔȾ,R4ÖÍ —Ü^) rN­÷ÐAI6Pß u«?cŠëš4kr›˜'bN >²ùBõAÇ ò,2¾:éï CÁ9>TŽée0OplbäB`ç0¯ûÌðah “/è©( É`>œ=ÓaÔcφß=ËúH긭 €Ä¼/u„ÃÂ:EUu †8M2m’lézzŽú0³Z¿ _°óÅ ÁÖ}!`ö'^S‹uL•ñU?䜣֮¼5Ÿ©[’ó¡ò2‚ÉÖG3Pô JM^}d)á\ÏÈ/]j@wZؤð. k²~û¹ï»+gÝKËØù•GXí­úÁYJiõ;ç—½Ì;¤yn@Ó‘¯V6鯷ZeÄá½kAƒ·¾5ëæ Q›ŠÊ(\I€íÞú£¼3JûËé¬);›~íÌ}·)ö éÂFQt¨ý…N‰ÊŽrD‘{&çÚR#Ÿi^¯ü‚ž1µÎ¤G¾›Ÿ1¨Îßõ¼Fôlt¯kHåâ?₳“Ñ6`Êr˜T!«bq!\JFdGINÛ„¨è_™.¬¬ ö´°:V{ü 3\áÆRÈÉ$‚ –6gþ0™t/íÁŽ¢Äy—6_v ¿õš]Ë€µp•—™ÛT¿ŸsÑvÁu²jøÚˆ“ÛoϾl铹¦îý¤½[›ä8r%x é‘·êê‹vuÛÑÌ·Ïó²ÿÿŸìÌhfg¥iI]Ý™î$˜íƒ@Ò£´­/••‘‘áî$˜;h­5žÂ!\ HâÀLH‘ÍØ\MÎ3Ä­:QeMäâK ¦0V‹HV‰`R¦•ĈÌ38exNá…1:og©š¶³ÓÀ!10`Wøa„w#@‘ 9«Ù’T¦[ýÍŒeWëe2&³r‹¬ )ª4´$|Þï÷êu•s~s`cLÎ)‚!¸^¯xyù„Ëå‚Ë0Öf-7¦þEöäýˆëuħOŸðéË'|þú_ú†Ÿ÷;|ýé®×«×`$É&-‹˜çoooø×?þ þéŸþ ÿú/ÿ‚÷û–e¿þÛ —ñ×ý·øùÛO 'Œdk&WÏf ÌE?€†Q%²KÆ­ï!Œse‘Õû¶Uuìë× qjøÒÔæ,ð`X˜ Éž¿”§X½¹ç‘bÄ?ÿó?ãOþa¼ÀyÂpQFbŽ q¾#N3ò2Cb‚¤„ÑÀTÒQ ܇էgMô®×+†‘*PåH0 /ãã8"£Ê‘DA¬Õ´]×ð†é£Èò6i°H’³=[Æ®*ÃÓ M³I¦ P¿¯rý[ãûdëžàá¶sF>ìS7g½#8´>IÛ„4½Gù‘Q¤pýŒ¢{Ëž-Òú-épÅdšÄZK ”AE‚`l,ïα& •´ƒ& ‰²®†€àôÜ×u¤LÀHئ úZï·uÉQÍó jÉ"B‹=óÇ£ou¢à €àáOÀ¢#–û™wÕ±£U˜ãaí¾àù˜÷ûC{®1Àμ€@µ‹üˆ)&¬Ã)·ï¹wŸ«‚Ò庢o ´Kíœ? qÏ,6öÏ!×cõ‰ˆJϘ"mµ7Å}F¹;b+íoò‘âȘý™gDo¡œ50GÀÕG|¬ö“ý30¯§]uXÓtúñ«²&.Hs–?Óz?¤ì(ÄÆ‚‘®‰ùæ:‘N™ ‚Û2Ô(Ùl\­ ÞQSþÈ8 á3¹àQÞz8µìÁÍF~kJ'-M+ûm¿.ËÏ#wx?ûÚðÕ¼üð¬ Q5¿^ÁMM‘.UvMZŽ”½àkߚίÌ,ËT¡> 8˜L|Ähðh¿9“Ã>Êc?þšg:ïg‡÷Ñ8ÓgŸ2k>èóvæóDD[9iç{fœOt,)ÞU;P¤´,ç‡k®!ý½¼Ç`k?‹wá|ý@NÁzçèÐ;ìY‚koÿZ_Û<”S™àGÀ«3`R?¿GÉv+Énpûõ%u±FUN†õìaÑd?3bÏ`‹_rBÊæM5‘,³àQbܧ„÷9ã¾÷˜1EÂí¾à÷iÆœ2æ…«tf€áUâVÎ1 9‹ÖÕƒÑg@÷,'ë¹Töxˆ¹’±³XªÇ†7¯—çƒëÏ›óîXbK‡Ó½$ÝíIJ?oãªû“ïõ¼Þ‚²ƒ¿X,½oÎD˜ï–C¶n±Áâ“”3#Å\¥8ûú¶i+Œ5i$0©º²Ç«pÄÿ^‹\9œzäeóÓÚÅ!1 Tå $/Ðà%'-àW(úÊtR Óöc •@ êㆄñ‚0ëJ˃ÜÕÊ+Ìú>]¿âçO_ñw¿ù=þÏ¿ù[¼¿½ám¹áÿõŸño?þŒû4ã¿ü?ÿ·”ð×ÿÛÿŽß~û/aT©ÓA “˜Ü*¯õ¿Ÿ8cš'üåûüéO¿àÏoïˆÂpÆÎñÞÃ18¯,ÅËåòдÏç²,¨ô}«×Têá‡s ÞÁL»ÕÿŒ%#sDJ æyBL .Þá%|Ÿî¸ÅÎȬ÷¡ø“y§(`àȃ8£x¦6uuø }Èå2V+Ãejz];ÈqÎéºô^%†Þ×ÔÁ`y7èžä]­ksÓ„VVŸ¥c2«·•ª'Î ¸m²­¢œuO( óZC@Áøš¥/›ã IDAT&ØÊ·-e°€º ª v•Ï×>Ç j—²Ù¿ŒíZ˜´mÿ¶÷ºr®°Jô>—?ëIa¼Ód½àÃè0CE‚ªéÅ— 9K,ƒ²3B‡R™Å[²N}”zìÕ>ÓéÀ9 °iñ„½,lsk<áaÿؘïíŽz‡#%ÃÈòX?‚+G¡A=òLO¢ SÜôêöž¥ÀöÚöÛõ=Á[ÕøÈ¼:³laô=ÂÎØjåý¶÷µÔû!¹*t¸~†ê+ZÁàÆ—· › [¤OèrÏ­ýBë! =DÏ™ï+ÕDóc#r–Öµ_|Gì‰sƶê5ŽGÚÓ£¦mû÷è»k»ßzîÕíû, ëÌüú×0iú(3Ÿ—½æ¡Çœy6Eè­£½Éø3ÆÕQJGÏDOpÎYß¿;Ý[ýëV*Gk$öNçÝXÇ®ÛH{ñÀ‚¤ÓëY¯è©oS»á<“|}”yÔ2Ézëõ£ AkJØû9uÂ@}FE½ñAüFÙ™¤ð‹òß3¹9*le¬Gaýƒò!)Œ¶’ÚÞkõž¡õ ÿØz8b¹ÊIñS>gEÌñþLÝ=õ±`:÷÷;Ûo·Àö÷•lÓñêÁϘ)ºÊ[Т49 –¬Ò?±KŠÊØHÀÌsθÏ·{Â}J¸- ·™3ðý}ªÀUŠêk3Wjy•0—hèæük=òZIäZ¥*ÿ.²ÎbÀ[‹h“¬9zdíÙ¿½ûZ<,öµÅz¯û ø³µ¹—зÿ]Ö]ëY>SiBÛI{i7þ£ÆÎY P‰M‰ØŒÙ#ç F´Œ«­'‡TöÓG@×3Fa/´¥Ê‡ío²‰&g$öU¾˜ðÙ³CN¶NáÜR4Å<škí$BÊr 7¨äiá(À‡«IKR&䤠Pb#šŒ™KQ]DÆAV 3ƒœR cš!Ë#-3$'/€dxpæD*µ+Ÿ… ÞÁ‡+\0^_ d>Wˆ¬á’õ{#kÈA{41R6 :Æ*)Y–Ó4#匿¼ý¨~%åž·ÌS·;· ÀŒ­óõëO5aP?”rŠ—KNZ— .—eó„€—qÀ% ððÁ Ø <HÔã¬,(NÐ0À¹üÇ¿ý;üæý'üÛŸ~Á¿üéßðÿí¿àûŸÿ‚¿ÿ›¿ÇßýíߪÄK2œ’*¤‘9ƒæ —#r¼½½áÏ¿ü‚?ýéOx¿ßôš•µöj‹’®¹,‹ú5銇ɳ¶Î kÅAj.ç¼Ø{ Þc*L(èÁIŸ)ÂCÃ(t¯Ìêó $Qɭɧ=‰ù!‘1}Š™2apê¥äœ¹El} ßû¡¹¯aø‚¥Þy竼4CªWNMLšvªÏÚÖk'ÙY”¢_“°Ä¶OåÇ^¨üܽ×Pûs•…Ê›uÞžïû´5H;x^SH§ßk-ÄÒb´¯ § Ž$ ¾°ŠIñIL6¯)˜š&hÀ!¬×Þ{·p¿È=°Z& =‹—ýu=UÀ’?œw'gGÀù +ýŒ$°ú¶öûƒ3?Ûý½Nl&MŒ®> þßg­7ïCú ÁǵÀ›5¶io¦¡ì²5glj—½¯•Måqª²š]®¬0²mÚL´Jê‘ñIÊ–¤% ¡ú¯àà\SΨƌT—/i<ÜÚg¢¡¬]’ƒÊ|Ð~âíkì¥@ûS•y´¿ð`îüLº{Æø<3?kŽšå¶Ðë¿— KÐL>z@Žl˜XÏY”î e‡ù9´ÚrÉp'çø´Øp~;E{Ô?þýyJ¤Ÿ°îÜü^-½ÉBzÀýYÓÞ|HäÁx8•xø¤Qæ÷1%5jŸcZT.8%‡÷9ãý6ã6-˜æ„÷9aZ"樲˜4}På‰&Gãbð¯û‚ey6!׉8+s¦HåXY"ƒóÊðpæ±™.Óc]QØDÔzh¢Nª+cÎ~¹â÷Ù‚ƒÍß"²¬€Í=Ú™VæñºO(sÁuk }@›³ØWóÏœcyÂåÀ2)ó$«¯Æ’YȨ¦í= ,õ Ü;\ð¡AÒ¿/U)м¶MEy‰‰rd'H¤Àªs¢Ld/ es²J½œJúÄ©‡_Œ òä•Z†árQ£i <8{ä¤ ‘Bf5Egk]˜&jIaT#¬)/à” 8NHË HjÌ,¼ÀAY2*õ)>k"„”™êk ù<üp…ø€¯ìÎæÝÃH 92O3[“Å7*¥¬×,g ²ÉŒ”ÔËj^LÓTerïÓýaàªX°Õ‡ÁoζËåb’Á|úô —áZm0‡Œ0ÊÖàGeë\.—jv."¸ßïöµ È’ëy½‡ÂuÏPfi™)™ä #†ñ7àõÛÏà·;þçÿú#þÇ¿ý‚_þùøãÿû?q½¾êVT³²›Šaý‹ IßÇÛÛî÷ c‘JÔ è§lº¼š·{ýl¤ªd—Û=½ù¿âÌãJ ŸI]‹ÄYÁ%ÝZ<ÃLÕ “dä´(‹/.`Qé/§£pµþ¯ØU7ïHçÈü¼¤aêˆÉÖ`À—îmŠ[N 7x aÄ8ŽÆ¼ Î)ŒVö)Õ÷6á7d:Ù"å¹I9ƒ“™¶ój4e°HæA%Lkú)¯ûOl¼`ë>V½˜aÀW»·b^åaE>ÈMÒêÞçOŸ_ÓxËÏÙž§xð˜-ްºZLÆYØ£zö‡‡½Ïô›« èRÌÓͪÜ{‚À“2û‚[ƒ) Sµ» ‡óé,ï¨÷ë‘&þÎm;‰ç[†Ð£óyý×2¸Ž€´¶±ö¿~g¥P‚Úäëmêp;¸- ˆàUο֌|ÿYWOe>è;ÜÆ³ø‘üƒ`°¿~9çš2H°Á˜le~™¹;¸+×ãˆøqDº(iœå©rò\ú?‚wÁÖvYÓA8,ký_m—[¦Ô§=ô¤0ÏPÆ£éó³´»#YáG8G(íþázfL÷Hqë9ó»§`Ø‘¿M¯}ÆlÛþ{t2×0{äœÓÐ2÷txÙž^ªÞ™”“v×ê£2ªô‘F}o>ßä9ƉÇVŸa³-ê{h{ ’ID>ÊJÛÎÌÜMÀªôËÎT¡×¸?6ß+%¼‚X‚-HÍ6%¬`©£‡çn³î¥O]mAºígåSöÔ30±M ýÓéñûvëŒú¬Çõ»÷{P?vö£þy}nŽ&S%yë#ûn­õ“S!«éñ~bµÙóqþÜž¯ÁÇißKþ”­Æ,‡ƒ—#†gû^2Ë¡GFñnøÐÖ[3Å—çüßñ)}äÉ9Äê›G²5Ÿï?k p]ee¥B5Q¯iP‰sÆ”2î‘1E Š`Ž„û ¼Í·Dx»Eü¸Í¸O‹[sÄ4kâWÌ †å$Mãªì‚:Œãzΰ•НûÔ~°R@îbÖ.ÊMÈQMÚ᪹x} VvÒP÷…í»âŒ¥zôÜí%=Fv™PFä~º¬Åñ‚WShZ#­ bÞL ?8Pf$YÔs¦a´òÁúùøcÊã½j7Œ”N½â«õ}ИZ¤–ÊŠ+ת¾²žMÑ1v9x7Â#Âp ¸òÁŒ=$‘J …-D( Àâfò3›)7 5dP^òŒ$EpžlFp \| ³[†XÁKCð*½ N¥µqQ/‹úp œš†[ˆŠ7fX‘ý•P@Ó—“Þï“þnþVÅœ?šD®°iö÷¨5ν\.x}}ÅõzU0#PÃ%ŠÔ\¹iB-E6³ˆ¦E»Ë&ÆÂYÙ(®œ„0ŒºGJÒߘ(ƒGÁ€4/3†pÁo?}ÁÛËüË¿Þñÿë¿â¿ÿ·Äï~÷\¯× Ž9™?KÅ oƒµrî]¯¯ Ñ¼Ù˜5 , Ä+øcD†J]Ær¢ºF+¨Ð ß‹”ÍÙsˆ'ð²²ê5k˜B)%H²×L Á+«Ð‘J+)k¢¤\%% <ç®Eƈ€àòjŠì ʪéÓ+ S>G€o>ú }yöðíÐSœ„œ¾o±udÏì’Öa‰¦gfpÌH¢:ß © Õ4M@SƒænY£%ÁLŸ'=7ö2«•ùµÝcÀÃm€{Þ7ÒMâ[û}«GÒ–i]jÚ–E¬ÃeÑù°,5ÆL“Þ3G†r1ëà¯ø>:€$ƒ™ ˜T‰•4uw Õ²s¤˜„—ö§ý<-°p6¤8û» »§§rôD¡ã6Œ¸ýµ&œ'/3äiyVw¶iнÏrDL9S'mQ}Ë‘Öä¼w]Zöõ¹’f›¹ïÝÛž~ÿÞz ¥^úž°³Wp­ý)j”6L©¤ `W­z6=Ä©Þÿ‘I; ;^.Ö‰ŸÌ™Žô£feÝ×:Ð^öšçž„°5aî6hÔoP÷›Unø-йâ3Ê!ñ& wíök9q&­lï{ïóöh†Ï˜gÓ1}òŒÖ¸ny÷¹úl,Fj¦ÓÍ÷CSƒDÏ9W'nâ݉>÷¥…䛟Ïà_.”B¬´Ix¤;s¿ùm½Ñ:¬¤’ÀQ¼m޲·ç«¯ ©ÕˆLýƒÏv>’þò)°qš¸Ö;Ì2(•ïð<0©°"ïÍ]e •˜t3Ûm¾ò›5`sñ;2ÃlF> ûa5‘>lžŸHÕÄÜ ¡Ž4 IÓžAtæôÌÌ{{jÏ{ ˜¸ ©ìgÌ.ºGÏŸýžâºÿ pÚûÜšYn¯SÿL+t@íŸ+ÀçV&,t2»‚W´‰7…†%Mæìtº³™µk#cBÌs¦¼GÆmɘaŠ ?Þ3~Ì nKÆmŠx¿-X@ŸbFLÅ€™„*;æB02›"ûÊüÈå©2“v3ª­’Â\Ïˬá賟]C6} *Ë`»÷Á‚úRŠÂk‡½zhÃÔ¬vU´‘´mÎÒ†ešRª^_m\šRÐíoªt f¬ìV€ÄXÈqAð#ÆÑ#f†ð1fML¢U"ÓX­”3ÐΦ žoëùÙ¢¥dÀS;YnÏ ÝS¼CõñtæUHZÁ4=C¼Y½¥$«t”$«´OØ{,`ÒC.@(`|ý¬I§~yýš‚SÆæīɻˆš»GÉæË“*p•9Ö÷Ç)‚%!Mo 'œÔ¨jáŠW F|Ðó€<’R4ðLŒ 8oe0¿+ -ðƒ}v[ôÆ\J)!Æ„ïß`šgÜï³²ˆªTФµN*¸SMùm0éœÃ<Ï!TðêÓë+Æq¬àÖu¸Ö5à†ÆÐ×Ú\ÓÈ GLq_„Ñc”‘3Þ— ‘<Æ1ã"¸¡šÁ« ÁL’ L'7\è¢ÆÖ‰ñçßá=ðz½â·ß~1aºÍøñãþÇÿý_ñåõ<†˜”1 ƒÊÿ‚~öËø‚Ábâ¯ÃÔ¨?8w—á¢×.ª_XÎê-7ÏóxCô »k2ÓÁ+`H&YUΔ&±gQà?ÆŒUÆf5Ùo¥žÞðR¼ã L(ÊY׃_“ÎÈ©d- ¡zÇyïܺ—Õ‘Gð.áRu…åå0†!x™‹ëºtæ-ÆàœÔ*KõiË`ÆU˜ƒ³ å áâc§ûNÊR7s•¹ó¦æÎò8ÊMïZR^Ûs´ú`‰²8˜×8Ý«Œ›]ßUï­Ç³Ú=ôsí÷ Þ˜n&ÝtN÷½ÆF ×ì—%ìàÑ𿪥„AppNÃ:ÔÏPÏ84,Ý5¸¡DÖO:qõÝ PœÕç½!l‘jÿT€¡>ƒ;C¡¢˜i¯g§²_‡p £Üÿ£´^ˆÊ^>Z,GC«²&{†æûún[®Ò¿ãÞ†»͇zÃm{÷ÛæÊlZëp·©cJpBį)ô–øXëÚ|Þ½ŒQuè´©Ï @'êÉ—$mÞ†Aèž¡sº5…RŸß`{ªÙª ¡ÀjAMãϼÑÎî™A=ÙÖCú“gOW;Kä;ŠªïM{pêÄ:ÓZ ÖÑ45ï6û…¾döȽÄd|&‹ý%'?ko·#ËÄò#ÒÍ Ëëàéíî\#}vOÿó¡‰uO·¬÷´{_Ûë·ÿü…RÙjÂËä¥løí¦¦’÷àEÓc°í} ÅþÙé1äVš0'þ=ù€µgå}„¥t(aÛ|œØY˜Xíp$uY«øÅ12Hì¾$}ß™#² ÄC ¸ðˆyY Ä 7ÂûÁÖ¢ÞQq\P ¹€Y¶Æ>}ú„ûýòc0†/—+^Ç Çå2àËå`MtÓ¦Š0pqFœì, 223.ÁÞ‹“ÕÛ‹Õ›%Œ#®nû´<<ÛmÂ}ž¬¾\£ç˵|ÀËå6o:!€#š´.ã>ÏH1bYÒ¼l€€q p–p@TüþJʵþ9çÕŠÏ|(LT« ivD †aÀhrÑT‚™„;¯òoG•É›r²çÍ™dO¯]f1‹ÁBXb~”rI àü!;Ú9‡à°4òç ªÝãÚtíêx@ôè§¥A©®éò3 ˜Ô¦®ï+[J¥íÏ@NU¨^l¶”@Ðuî½Þ³` ãè¼cOœ²3¿2¯t¯_ûŒUJH6ñMmÛÁþf¿« ZâJ[¿·_ë©qöçd+ /²Ï_X™ÖxÀôûBíû½õv¨´í@欯H)UppïuÖS´ï·‡_ìëƒCj?¼Ý^ß-ÆÂR?AÞô±%•³<ËûŸë\ؼ‡20;JK\âR×Wcì*Ö*þBüàUîMÛÿ&yLdfŒ£ß°³Û Â<Ï› ³oø[“ïýMÝ'4õœ÷ŸÑƒk_;mo2úé{³É¾¹™~ï²,ö¤:B ÏÌÛ½/KŸÖ%‰þˆQs}lòxÄ$q%zP †l«U?8³RLOšBoùãÄÒøÉÐ{âŠXç}-žzÅo¹§G¨@´LºÂŠØ¼N“x' ¥ÈΚCÙÅs“/÷!!'wà {™.—šÉ‘`”W3¹r$äœ18_ð¼÷+=~‡®¯² zØ<7g)°Í¸¦)• Hc‡•ÕÀÓ†ŒÍ–*-G²‘oˤÆa‡´›É¬¬3i¨µ´N]ä¥Z’=<eHíõâGÒã£ç¾Ëz8yÖÏ€Ü#ÖEiªtcíï-À½?¥Jøz ØöP:úŒ­Dîè<óGk½Æöû+„ª_Â^ßšƒ¶ÝT÷󅢟ÂBö¾ý ×ãÁÝRœëþÏhdeÎØ-À´7;·T>÷Œªÿž×´µ¾< ·×3¹Ù™¼2T&N(BÎþl ¥ž\ ƒÊ¦‰fÚ\júV̬,)L“ÖÔÁ,¸MïsÄ5ið}Êø1e¼M Þ¦ˆû”0%‡_¾¿«LÐ- ¯R¢¬ÓrHñÖ+ßæšåÕ$½ÞglÓi˵¬g>Ú3µÜÔ:"ë6\ç¼Ía‰_Îâä5ñ+„‡>“pe+° È QOÝ38%¥drslö0ȶùL;~ùïµÛz¹µûÃ0 È9ãr¹ ø±6 Þ+ëà>©¹xCD¿ïÛ·oXRÄ÷ïuÝHc9àÐ÷ð£½d“í=9= ½í  älfÄkúV ^‰0ˆ0š ÉNR_Y¤‹Ã4Ý@H®¯rŽ"=ŒB(>`>a|yEF…d@fMáØùl&ÐE= çÁF&cÉ••&È^–Ë|‡, rZ– œ’š²Se­…‚ÓT0ï†ààììÌ ÌYAcAy?\”=EX4U0¥Œ9ed6¢¯óHâÀ¢ì:‡%gH. µúו† ƈišp»ÝðöþnÉ‚qmnRÂ0 ¸^¯ "ÄU"m÷ÒíþŒãXÁ«——\/—Z³ÊJ &!,lžÏNä‘SÂ2ÝëUÉpÆÛûwLË1~U/ª¸àÛ·/}FŽ Ù­¿<­´Ô8ÊØÎ ¯žf6€ —+|¢¿\¯¸ŽŒa@^2(3®áZk\ïý±nÄh1¥ƒ0#|0&‹¥wæ%®ì†”³ý”Dý½É`i†«oVJø~ÿ_þòÌó ?¨ù}¸Œ}Àu|Á—×O«––˜±Ä„÷û„,À÷·7¼Ýn•Í&âàD¥ãà,¹Nk8OÎØŒÊ²Ʊú—:3nwd^IÞWðÒð:§rÒË ~WBkª  ~ཱã¼î5âTÞšcÖ6ùxb0ÛÙ²—Îs¬Ã¾& ø¨ý£ÕG¹Ð0fÇ¥ÖÐz8F=wx0ÇEÁïwµ‰µ–´ÌM=ÔZm;t^ý"Sàžõ}Œƒ·:š ”‚³{õ!ƒD\Æ`’NÖû㡆ú΃à|ØávÏ[1×.>g)ÀðÎW¦Y85½²0œ·½zY¿-´)ÀÒ¾÷V°ÓkÓW­?“`µEqÎ+ÀC›ysÚ ÞiS£•téœ[k×5õÚûеjÁ¸rÖ®·µ !Tüà(u¼÷à‡ÜZ@Î9‡ HºOúþ´6Ê»ÂÌ+kÐ9‡Ó¦voÓbE¨²³ÛôÏØ×Ö'B@ŽK}å}W0·yF²Áœ`ës–1E•ùêïSL™r©u–eÁõzEÎ\¯Ãdøàº6:áHÆwÆ€Ù3µÒ*:ˆê‹ ×à%Üí½®Žb΢U¯Õý÷Øg&fGþ_ãu&“<~ö1ïg’̳÷rt­÷Ì&S}Ðû¯óÌ çˆ]òŒ­ðÑt¶Þý;b©t¯3nZpõáï?`Üß“µ=˜xc²xÄ€9b¸­Ÿ²[ò^ï¼Ó®*i åÑ#£'¡|R=»ûç³·>esX£Ë¤éIRq$ÓëH¶Ž¥_}œg€}O†}&£{ÆžìIøŽ®U/As?h¨×Kú?}o®ËÀ:Þ‹éWßûg’Ò#úºÆÊlÿ=”¦ž Ü_Ãø;:gŽþ×2cöT÷ÍZså½Ù´µ‘³8F,EºaÅ{Ì‚ÌQYW™±dý}ŽŒÛœp›n³à¾0¾¿/ø~OxŸ3nÓ‚û•)²°%Úm{›ý·øQÙÀ¥z"íŒosÕà¶xuµÀV›zê,)K8éתY¬4&â… óÀâͺN)!¸½Øöü¹¨oN²¨>Kj:Û7Å€¸£xê3®/ŸwÞJ®š¶zr8†ÊÖŠï‹W#õd͸NR‰{[ÉàAÔº~΀·7ðâxô) ,e>3¯7^B„*!c!,),Æ—áŠñõ“1„F,IÙ>‰½úZ˲JUöÄç2«rŽg,óq¾!ÏS•rž•i¥ °g7`lš‡%3¤` Úü/ 0@àMbYóŠË@b eA–a¼šW_V¯;òÆIÖDÐûý^ÍÙ§iÂ}š”óF–RÂívk|I°‘=ÃP Ú___k“ Ð)àÕårA£+Rõlé–1FLËŒe1ß­¬¬ç=æyÆ4ßàþð{ÃüB € »_\®£¡«ßå\DßO¢2`Ч—÷^É[U‚µ† (Ý)Ã7ƒAÇJjMÅ€ŠäªÔZ¾¦?†sM^lØmƒ HŸ¦ ÷_î`Æq´$ÆŸ_?Á9¯RÅ”q»Ý0M¾ÿxÃíý oï7ÌóŒ³1ëK£i¬9Ê*õ5)½‚ü ­p ¨†4ô¢y¶Â0V)ae†… †AS"Çq¹ŒÙ™Hê¯æMŠËÌà4>’É IDAT”±¤¨à“ êë€oŽ©ÆÅß®\8²ûYšSÚ€õ\ B€  Îó¼éE[ÆFOY³è!1í,¼ê1y6µAñ¼rucIL _ûlÈBl,TµT6"ó'So1§r¶ûgËp*磲Áù·ÛK‹ÌÒcKL(àFφ¦­Cö_[%cywNm™F¼†¶R¶ý5?ª“ÚºàYÊtÛgõð„ž…ÃaŠèRÅÏúܽÏT©Û÷Ö2¶z,²Òomà­›öýeO¡±ò+Ф½ßÛ†)¹ëŽúŸöý÷z¥Þ?›9çÆšÀwkêp\ô$½‡ºEüziO»ï=Ï¥³t­ÞÆrÄ0è%œJ¿> ýøˆè¨RP7ò¶–-Ã6é=º zÌyC©ì€G^a+<û¥àoðÊ"ûH ùõ´'Q=j,»kLZÄF6 iÃVU÷Pã»»àä6•t—k‹¾†Û±„ìë|Ðpï¬z4åªb¨ñQj¿OÐx¦É!˜÷qÀ†ÅO£Žžt,í¤0b5íì.Â|:‰0Ó,ìÍ–>ÚÄ÷è¼$r‡ýÞš9“’õ´°„WƒRÃï¶i=êS| \³÷ªîz¬’ËöæºÞÏÀd}bRø6´÷®é­,\³Ë™êÜpho g#ž6Sœ•qÑ®©”·{b¢cT´Ä©(ÓPãí·õ8Ú5l…¡k…¿`§ïÙ[ÈúÜ2ä‡0î {Á¼$¼Ýîp¯W\JJŸæ˜!”ᇠ.×O¸~ú—ë'\ÆÀÝΠ,x‡˜¸*©‚5ˆÄ^oIó ¥è(‹ÊúÏË\ÓÔˆ¬¿—-Œ)㊴×S£}†#Qî¨÷p”=¬ ¸wlƒèsUíHڳɭëŽÌ¡èfDÒb'Î^º§>x¹éÕ *ÉÎru ÅÈœ,XbWw¦5µ±­©Ù¤“%0¦>‡æúöžö¬~b¡±ï¯öæûÛ0˜&Ý·œÓX+÷ZÛÚF ù TMdà=ÊõLöÞ¯A_ !Å9\¬m\[W+‹­ˆhãÎ^£q´v´TÔ:ˆ*¡MÕþÄ`Oçàß ° œeö ¡('hIÔÝKÿV{„=ž Ý¥œ-HCö™z)ÎmŸÆgÀËÞâHŽrä²ßk?Útïè36ΑoVÍÝOR?ÒH]ÿž”ž (sˆØÊékïSŽ´¾{tôߨ‰g&îíbî™ï¥7§qñ ÍG<Özf÷õµî[yo“»ÎÝ>öàøƒåé‚= çÈ;ª¬¯a6’z겤½4Á½'Û¡„ïdÝœ1¤ŽÎbà‘ A$5]PAUÂÆà1¯þI&£òבJÑÈkŠ) ²ÊB•†®ò+ªÀUã&=ŽAXf}¾$e,i›Ø³2ƒ ˜ž³`Ibò5a•|Éf(‹ ³è‘=³­Ë—%nê“°¢“ÀVÏRxˆ¤ùt?å|ß+–͇5¨Bª7‘%EúÂÎT¡'ÔôGG¤o,,g÷Ð;û@¿ß¯á-x…2:ßx¹íuÞÔëU~faKÄtzîí†{åËq­ÛÖ¶r0ì‹‚LÚö{‹#“öI†{Ã(z ¯Û“+zÿ®~O–CòÅÔéÕ¶e BØXÔ×Åy¿Ý†ìkóý·…W%øt<8{‡ 9¬A{ÿn% ƒ;¬­=c[åö󇣵=em`}„ÿ } Yùû©·Èž;¥£³&šøIcèÍ›d/››ýðµ\¯Ì~m7ØžqÜÞ€ípü5V+ëAGÔÛ3åÙúyF ýº‰Šo-Ÿã!rËÜo D}@öÁÑ6 î4ŸÐGvFƒ{Æ].ë3w¯É³ëþì½Öê÷»-€…†FmÃi_¨l‚üïcíêÈ•³é`ïÀ­5m¯üªEôæ .“ÔÔ¹ùèÈUdó\­Œ;ì±NçU¶ÃµZ™ôxü‡Œ½'ÏöË#Àïè=ì=¤_÷|½êî3룪°šžßýgwº_ì'¬‡áù³!ý©ÔýŒ½„ðWaôëº-KgwÖ±l’bâÂ`rÕYÄ®\°ä5ÎHì•ÙáâUN6'BÈ×á¯_~Æç¯_qyù¸€˜4½-rñ ³û°Dd¤m€â,&iÊ Irœ1ß',Ó9F¤eFžgpŽÆœ€J¯}zÁÅ]@I%Ïœ’^ƒ÷¸½½ã~Çûûïoo*¡¼Ý0/I ‹‹'TN@©uh]¹·eÆhÆöDš)N ¦+Ϙggð§‡7–¸¦ž´ë1xDNÅSÆàrž‘–ˆ´¨ìÕ•3'­€$ŠR…Iý™‡8/ 09Øús–¨@*‰ hâÍgic0˜>Ú“ÖhΩ¢ó¡¤è,…ÏoH%# ±—îCŸz {­ua°=2Œôû¨<öu«ùÀâ‘ð° Ý:’÷°£úìè{ϘԌ~WwY ÒÊüö½v{ ࿲VÛ’7–@û€»}r #p®¯X‚ì1›4ÔûêCÖSGµ ÿ3Yåšr¨þnºwÆ-kœ÷Äã‹T8‰šÆ3Öþ£CèÖmÀ˜ÓQf8b.µ Â@²×0y¼|tÞc(-õòá„óˆYqÜìž3žyÒdÇDstú¬¶ÒÕg죖ZÛ6nG윳½á£×a¿fÞãÞ×OÀTÙ‡0ž‡z¾ˆ¶‘6<ȸǥÊCÇË+¾¼~Æo~û|ýò.—WÀ_‘¡~WKvúy\‚8¯^@N=%ç*Áef°h³’ʺ2ÏXæwĸ`y¿#. ÄXjžƒ<Æa@lÎÖt6 Æ’b8?`¼¾`xùŒ0¼@üqÌ™±Ì3²5+Î…Ê”Kh+×Éb*,­æY=®æyFL bŒ*‘³T©êùt0hÜ'©}ùò×ëŸ>®àT»6Ë×ÊÏ­¦íY¹®-5“¬2^acmpF @ÈÃÀ§I€1ašgÜ–ß§I¥” Œ× ^?ÅørÅårÅõÓg|ýöGüüóÏøòåK]Ç`Áý~ÇíÇ|ÿþótCŒ’Ò²`™”96‡W×hý·KDÌ©¦ÕÁš,ªÀŸnTʬ[‡x=†F±ƒ‡AARJà” > ™/Sõ¸I’3HŠÉº®M•fàó#•h $«Y·wdétÁ)æ¤,`p„4mÐû"ô©÷–/À~Iž kï&‚`Ò×’NÂØxêyŒãÕžYBÊÅŒ½ø*yómcÄ%cÉ©i:)‹5Ÿ*ƒ-!Vec²äÇ!ª/­ßÏÞ7©¦…°a¶©¥û!ËY²Ü~?¨IðØC‰0„M€›ö„urÄÆj%Tgk÷LZtôà5è=*toƒ>f©ÈX²š+»I,WÚ6}˜¡÷_«$ºÉOIΟ¿#`åHªy$W>Zg,ÑHk{)}gÌ­3àìègõ“Ïæùì:í©G÷ä¬@Ù¼32< SðXäˆz–.x$û0 94]'lX‹ÆÌÈIÓ!*ßHʸZ–ÄĘbÄ?bÄmÉx{Ÿð}Zp›ÞcÆÛ=â}N˜£v²=ÛÆâ)…utwüõ=éß'¯;Ù®{‡}Íá¶rº‡3É?–¶¨é‹d’ ·Êí¾†a€w«1¼’¼²¡ 4¢Êˆò{÷÷úý>ZþÝ è\ý3Œ¶J©6'Çg5†ã Þ:Åô:­®IR"Èx”áÑ©ë| xxRY3{ê¡Cã²n4”܇‰1еâ*»èb0XYÔá˜É!àúé3~úÝ_á7?ýß~ó[\./ì1'¯‰ƒ>!@ &õœ”™ ëÀÁy•°åœyQvSZ”#ršp¿ý€¤“ʼ@c¼®‘ÞˆáõâVVZ‚ÊáÂ0"Œ¯ðã Ä]@Xb®¼6ˆ¾‘Ä‘XÓ³%©ŠNå—EAª·Û»™´¿«ÇUŽ›sË ®»O¶)jÌ*EÂeÄõzÅçÏŸ• 5Ž›æµüËgn õ[ù` BNê–2«ÔÏ«tª¤IÆU>唽,±NA/á‚÷¤û ÷ûŒåÇ„mú.×|ùéþüÛßâÛ·ßÔäDNšð7ßïHÆš#r 2²à•F„ AbBŽI“×ÀÈ’0§YY‡¤>2Q`€¡^4â0ˆ‡!KØ^Û–Íb«òõ”Rý³3†[Ÿd^…_6hœ,U;ÑC¶äNïõÉ ãàWÿ$8Ïæ¥¤¬Ï—0’ú±éõW/›à‚§5±Õ€+q^YÕ¤iqÞvoƒšâ“7––‡÷6P’ê2gÄ%#²5•+ó0en|÷ 0LÖ”&õoÛœ Yý­ŠÜPÒcU¹ßÛ¯ç Ô—tpdeùb[;möÒNo%{¤2£¹ Z&i9/†¡¤˜³™á;8¿Ê½Whß›Õ;R²óð^ô—yèÒ”A55t GG#l·¤ªkJ±kÃ7°zåj}d_7l­Qú¸½¥E›š×‚µ_Ûß×ÚÇQ•ÇÐRïÛaLjÚ9?Ô“{óöëûZñL°÷Lë…åôzàgd’=èÚÆÖ}:Wó¶ßøK—ºüàÉ{=Ï^©väM]ï9d½W4ðÑ2a%€ì¥ºêSV¶vs}Úû¨Ì+MU¢€Û(ÀõÍ[}ëD¬V7¼/¶]êíM–øˆZvæt$] NžÍg²é#н·xçNÙ‚Ï*gôl'@׎Bz2fjLh·EçrÈ ˜÷)aaÂÕ”}6 Óm!Ü#ãß¾ß1%Áí¾àûmÂûœ0EÆm‰˜sV0Œ'kÑIUÎK] óGXÊ+mLÊ$¬ ¾ú x“«ñÚ@°J|¤ºÁ‹‰øT¶æ-âD0„ F뜑c‚8 ÁŽjbÛÊË´[2ydb8!dÂó£¬{سø`Pq–|Û²É×}Éþ› g²ƒúFqž*3†Ù6e0±ì~/‰ …ÉÁÎ#» öê›;瀦©×Σ ¸x^¹¦)¬¦øRYZÊä•jR¦¹‚0˜2"";°.ã+~ÿ»ßã?üÝßãw?ÿÞÈ0/„aq ¦…FRI ˜¹cNXâ„l¿Ç8#Å;–eFšä4çI½­Š‘-TÞã,m€¼Wfxa!c“8d&°s¸\_qyùd&ÄLf®ì‘²úq…â)ÔXx!Hrhâ¡°šÏfàý~¿áíí­2°bŒw<¹nªUÝ—v529ÂõzÅ·Ï_ðúå3ç‘!sæËå‚q«Ê¸òk{©E} ¤9#¥ˆœiM»óc/À%Î \\Àœ8VCk€8à ƒð™qûåÏp‹JgçyV&Ú‘ÓYX²&#pÂxÁû4ãRRϳdeé9ï+¸Û6«Ã0`°gê.–*)ÈÂZÁRÏwò…•ç6¬.Ý7MòË̘ç÷éÓt«á8… H>ئkœ¼`á/çD™;È!@0z‡Ñ!ø$@Aehd¦Ì,•!Žà¡¾W~Æà‡àÇzÏ]†ÁXb¬) ,„ÔÛ$ R©/7®‚–Y}È´ Ý1V¤œàÇ"±23÷=Ûív«ï«e–†yžçÊ cf,yëײ¸öÓ}†}©ÙwµPãïWŸ 3ͯQc¹#KC@`x8ÕÇÌ<±¯›¡ó2Y¥ ×}fÍw¬ÇT’°¹d ( 5¶!ÏæŒÊâr^Ykûë³wö½OñÜb<²§œÓ÷µÄYчÚÚ97L›¾¢§ìMû”¾ÜÙßÛ³¡èþûÚϽgK `û^zžÒGi94Á²,ÕçIMÝ©þwIØlkûÊ–nê…vïÚƒ‰Å¼¿íµ÷Œ­¶æh%ï}µ,hÙw{|¨<{œ¨¤×z¯{ﺵA ½>ažçu_2 ¯}sª“Íah&6V †àæÏÖWH‡«'7 ß{+Æäqñש@“|p$sÙO”i¼y-¡é±9òn{ÓK±Z ̈\”)écmƒB½ÆÖPöºÀít¦ñålBW¨z )é{ÎÕ¹,”õF•ëÆU 3WÊìêá[ëím@ÕÇà”æ5¡Üù†5väÃôÖÄf3³Rß5€’~æÕ·]o5Å J£×\'lýf܈Ø76íÎiCŸ§’ #z(Æ8Ûõ*ì’Ò´þ¼59ÂÕ‰~k’§#§SP@Ê™7‹³w¿‘i}9§fíµFî–reuËk§åûÍi½>e g8çᜯ“]×<ÏönM¢:a,M¬'Ò”'É• "×L0Y}ÊÃZ$he½md†/Ì>šWšÃ sÞy¼¬¾YŽ4ef}·~3Ž’¤-xTš´"[r«8¦m×Ë÷•ÆÚÙ­-–Ù›pR9 üÚ U°<0öä pº‰‘5a©É`ëÔ†Àië/æÈUY¨2ç-MÖb~³÷ÕÕ£ÿ?­R8åÜî¿6M±­OXjBGýaüé3=¤¢vróH>?ØMÆ*HSåjûØê¼yŸÅe¥ r»òƒ¾ú) ê>³¾?X$¶úH‘Û DÀÕè4%F\ŠaJʸú>ÝhÄ"ºÝ0E`J‚_¾ß° àí}Æ÷ê«3+’³Æx³`5޵µ\€k’Šß‘ÛOþÊ=2ïDM±Ç¨îßÌIÓ0+çŒË0¨ù±½Np>è¤Úm’ÕcÉÛsìHàM:æ‡ÑÖ´Ö%ŽtŸô¶g©EÎd0‚”2éºð„:ù×i¿ÉXìl)©KŽ÷ìýR¶Ò”çÛa5›n$/Zs€I0|käõÄaÁ2ß–/¯?a™ß!œ”=AsÒÆ g©ææŒ”Õ£Å[ó3?¬¤M™Õ4åçdð&t¢Ê£hÈÛ3šÂp.²IV¦VV—÷p‘¦xe|ýú{ü§øøOÿ𻟇ëp ÀIß#Q€ ˜©´×Dr u}éÅÍÈ9‚Ó‚'ÄùÖ˜²ßÕã*Þ\Å Þ@› æÖâJÓ.X$“Ágà<‚á†+>}þr#„”LªÇŒÄzN)ø¡RÝw×f ƒ†€Ä„而˜LËsœÀœp¹ æwD›¸•·Ã¬²Å”,åêz½âÓ§Oúëõ:JŸ« IDATa ÌÈ–lB@¸ŒÆa¸l|® æœmáæ”r´̘ïï PZ³,4ª9ø0*£„´9#e… ‚;ß‘RÂårAä õ,$\‡ ‚BPCùÌÀ4áÛO?á-F\.L9c‡9r\°d5CžE?°€c A“ùÊþ{}ÖaHã›Çæ½3…\Ï=4†ÉÁ’ùÒ<™’ r²ôCýsÂ’æ¸`I3–¬¿gIâú:äFd»DÉ Þe G\B€£ŒÑ+8¨ûA6ƒpqT³ö<¼ªÄ•,šÐ‡B¤¬*rpn€ó¼3 Ò}Ãk5íS’®EXýy.³Yôùw~@â †®û5IP@>ØzÏrõPÓDE½WÓÙßÓÛk¹g8}„rÄ9BŸÉO%HrÌèÚû—=3Å?ú<çž7ç÷½§+þˆÄðY:Úz }_$}FHÕ~7ëïˆm¦ÿ>W ¨üÞšç¼N«÷÷rkО?Ìê8»ÿûgqkð(©ŽˆN ÷÷‰¬O(ñ뮄¥è¶Zy9”ˆ~$¹­—~qÄú5r­Þá´溓œº­¬«’÷PYZF5 Ö˜Þ:iÿ|ò=Û{knûïÝSyåöõéÃϱûC©ç~þè=Ù{!IÏ?æðìú™\î)õEŠxvýög 5¸/ñׇg©«ûÇþœ,d fR";dî1!3á¾0fDܳàû=â=júà/ï3¦´à>EܧKÌé¤+˜¤¬€¥ÊOð”áöÈÆë¤ A6ÅWïKV/¢²¿ŠIýD}“` ¦  î{3Ë%!3ÌUïf½~1‰Ww e(æ ^M¨)£F×Z™+;•¥ªq® !œ@2êp¬½.&ÿÍuÚ×[[éëö|T0p}ßd{ÎÊ@`"ÀXiÄyed0g¹$×Xw+o•G`ÒT²,b,çeEŠV´› òõzµóCY8€3Ãi½'Ã% Î bŒ—ä1-\FMü«¿ú þáïÿÿÇ_ÿþêç?àÛëWŒÃUåéŇȩì‰Å!ÙõñEU˜be”ç ^M·HËi~Ç”#œD80†˜ ˜S‡KY™ aðˆ€˜ÂÕ Æ?a¼¼ ±CÆšüÉ,ÈPSv]—^¯sêà¢$,óÓ2ãþ~«ÉtÓ4!Ns•ïx0P¯k¤=ë$|»}ýúµ‚W%q¸4eÅÇj\.ý{kþSJÕ7' ƒÄÞNæ9¤ï¯x1‘s*;³Ÿç‚/º&ÝQ‚¯ƒ×qï°¼+æ0MÆQ+oƒåÑXE×àq rUV6°Á`ßxY¿ÁIýÏ–eÙ4Þܰ,DD™F!`õ=Sð*;öÚTOqÁ²,¸Ý&¼ßÞq¿ß‘sÆèÉÇ—Á¼l¼ƒ_ï]ñ0›¢&GNÓ„˜fdNH8P%'ê~å0ƒ#àeôpc´¹ dxï1 Œc»y¿J ”Lf¦Fìåï=BÐëÌš7ÐU×s1fOY½®  Ë: ,k»íO ØK¥+ÏAϾ`Ÿ Ç[GYW)ò¦g(ïëëóõRàbŸ~g¦ÓÐa’£¬ò?Çæ±Hæu¥_ NÁ =‹²ùUe8ÊvnIõº*ÇÜú:zø²d€-Ö³À—ï³1ÊÑÀlýìòàc¼g#µŒ¤=PÔ«­I°ñjj_¿½îb†ÿÅ 2˜Õ‡qŸôW™çû ýº)ÏÙ¾^;²ø8ê÷ì³3Ó÷Ä2ÇíÚå-ˆÖ¦$¶×rU°ù FPöñ£tõ}¯’9J CªbmmZ^gã!ÖÑ뉼•TÑK‘l•½ç¸<£)¥œµœMÑR½ûÃÌàV÷»ÊâÈä.D+K D’ ¶æ²Gž)G†Ý“\¿Uãõ9iVr>ð˜Øš·W7NÏ“¶Ž¤mÌhïõϱ‡‰7R‰&½k¿©œQaÛëqdÀzô÷$~G`YQž™ä}Ž#¼gé…e*!ð§²Ô½çÕzåCk£w`~^ùậ#¿¢&‘56G&ägÏÇÈñkdºÏ¼åž =o¿¢'òÄ£½ï£ÏÏ3iõ™!{_õ,6Ta¦Ó@ÿÿþ'®9†žK¼Ÿšè?YK=Jø¹úÙ¿7ªøD4¸BÂkB’Rˆ ¶þ{b 0ŤæÐYåG ²RfÜcIÀ{dÜbÂû’ðç· ï“¦ ¾½Møq‹ˆ ›bÿ~ŒüÏŠœõz³­ ª’ä ò8î;Y™xm–5SÉ–Jb 9J¤<ªÿUãçcR5múV£ñõ}j ºÊ½ôgyKýɤ5Pð–ºXLi­r'§‰¤Âv¾8õct¢ €Â—*†è\¯¦^€|àÉ×\` >­”ß ­Þ"e*9s9e<ùUÖã)FÄe'K;C†wq\¥š¤gí0ŽðÁ¼µ‚6ØÃõ‚œ­A0f6¸º~–eÒ䱤Mÿár¹”=fž¯…É•9çpê 82æTöüÊë:3˜ÆQ,¹Ñ— yìX ¸µèóëxÃ8OèÜ’^8§ ±\]×ésÔ#)›Å×ÃÜ̪Éì°óù\¦òc‘U\ï”=ñÖ{L¾Ž‹'®š¶üšDʤΠàlL³ÌZ”Õ{„ˆß¾áõý½\Gï{ebùnIgoo?ðþªü·ñãm.÷JÁü¢Å˜]Á+=Uîì̔ݕëÒ;½wd›R–Ÿëud5Ë÷nÕ;,–^¥´œfÀ>Hö[¢€,l™WkœAÌ×Ç­zÉZÙSGŽH{ Cnòkß«šÕÑrÖ&ðuÿ)ˆÅ¦O‡¶)D¤œùðÈV4:ØÐð‚„Þ98Nè½ú,êfžWÆìõ¬rDoÁ ¬²ÿžÑ‘³ýEöÎÊCDFj²Ø–óä÷«5Žj–v2¯ô%¬é8¬§Ø†0îü·ÿÿö—{’þP¤µjj¯ÇÜžÑ[¯À¤r4œ¯Ÿ¦énX‡il¥“Ûû☛ÿ¿……ÔŸ/¿çy +ÖÓQ×Z#¥¾Ùé¿·ŸMÏbmö^?ç1Fcòî¯A”œµG3Ük:÷ÜíB¥ØA6Ñ?iga|d‘sÀwO–ôL‹Ù²•ãm§€õ(q‘HQ~Ðâ³pw}4Žù{öR×êÆw/®Se ñ¿Š9²Hý_Ó-àX†GÝ7ró˜Ù€¸IŒL˜øȱ'§9¾6;¬˜<Åx°¥Š!ÞÊUïMw[ÿ´Êa˜´çá"¶µŽÛ¬ý뻥›Ýó½¦ù÷<û ‰ìÁûÿwÌ`ûÅý÷0¨öö¼½Ci7-M¶ky;•â™v/þ‰;×UøƒëkU¶Œ¯æ÷W)„Gg] ,Ô€ãÝg»{Ÿi÷ Ü\d/„€IHÊ=²Úšï®“ù%Š'a ›fÁuÜæ¨ÀÕõ†[|Ÿðãý†·1áÇuÆûuÆmÌ!){K2 ÈU¼õ\9À0Ôî)âGÏM‘æÏLiõúµñ5“Â3ÙçJ­Û£QÙ[Œ¶û{ÔïçÜ@ s‰ŒÅeéQdÀWöú1ï‘”=íª^¹à˜ÙóDÍ>@°@ÒØt!MžJiñÔóvãÂråå¤Å›S÷TÒûd@â$){JDÁ¤kJHPQå…ˆï®ÆüÄÏÏÏøôù3žŸŸ1\θ\.Ît&’…8•†pš¦„9)ãÆ;0y y»nÊ4߯øÓŸþ€··7ÌóŒO/OøóŸÿŒ_ýçáš#$1B¼ïpîzôýòÎ@EûªÃQ£cb À<#ÌWÄù†0˜ÇR¸Aæˆ<:»ÏÞ›A; ()p$Ž‘$!¥ˆé6#&Fƒ¸9—O?ºÞ]@ì1—´FûELvÎl=}½|裂@q–¾ß®ÆÄ™J㇘ÌÓ‹,έ©W­Tœ'c£¸»2³ó‰Öu ‹ya‰îae#\€ª¥fi ¿HVçw*Æé|"õÒªÎqæ]É~”Ìk«$¶â˜q\+õ½ !>ì ZÃȰÙ×€›Hº½¥F1¥î=±`!É]P€™VβI3^Ögíÿµ•ÛnC—Z8Ç&S×g5ˆßºfGêŽ#¹©*¶!lt0ß=w•Wî4ÝV``~ÔÌ^¥ë¨¯–÷©M¿—Ü·§½GÚåð{÷XX‘ }„éQ§`íMƒɨöR ÷Àú³ÔEF+É,5¦G1ñ­Í¸–xÄ s*6¼¶öXA­ÏÒšR_«áÞ6´-¯µÖý}´Î÷ÒQ²¹ý#£=éÜø÷Q¶H1Ž®®S;…îãÊ#ÐhïùØ“rÞƒרöÛóy;bnÝ=æÔÞúÙctc}ÆîàÉ*…ðc´gj^ÇZÚ¼7aù=Œ«=¦êc0ìcÀð#&ÙÀùh`qWtìyŸ÷)¡[Sº&U~acn3ð€·)áuN¸Î ¯SÄ·kÀû8ã:eKý$.ìνôΚÙ0=µd·dŒƒìýÂ9L¥„hP°˜p²&¤Z1YšTc–æ³ pUK |xfn¸w5SsÈQŸGÞ¿[“ëÜÌ̾µâ`ý~B€'lŒLFÒ=ƒr Á–r(—±­È<Ý"Y÷¬vDêµ'tÞ™Œ0›šçó‡3éÑÌ×íwY؉º_©<’D‡:IbaÛíÖÓH»àS ,}¤ÿk«28$wÉx!w«aú¶^¬¥m-ß­]åÖ+©åYÜò¦^@­ÇÊ•–Iýþ[j›œþ×’þ5Íà5hÚÈ[Œ.çùð~m“$·5û–ÄÓÂxö­ì§¸î­ÜGÙ¶îã:k“šI u`_]·àµˆ¨„ð¨ØnŸ«‹czã%Ò%&™ …è]f¦µJËuwÌ¡át6™Ý•§Ôa5%´%°¤reÙ ÙÛeÊI.©Ô5Û€Ðö’)lYŠ„â§„ej&6•$•™™ý.©Lž3Ò‹ ý2')h*FÐo“¤6p³j~/#^›eôa†êCTÿÛd;¥É 0µi£6€ç;d˜‘½™ÉTÖy6G´@¢Êĸ± PCj(vˆÞ=KÆýŽÑV˜fëÌÑÆC ÞlýdSõœy±gP®¾2²híÙÒ—Rº[7¥¸kÈ[µÔ`ðì±?æì™ ~„×*¨Ž¯»”¸Íkµ@½GR¾[GÚG Ô¶¸ÙÎk«VÁ²÷>äL¬þ1P H;ׂv×€þ\·Ù‹ÒιE%{ÍtD“•µ¼n:àä^.¼~-iú”-ÿíÊûΔüC¡ò+ aŽêƒ3%ÂÆŒp „÷YÙW¯·o·€÷[DˆÀ€’MM¥"ìÖ×—Pûi1 Û~x 0“ý«rú¥&*ýœR6¢µTÍŸÔy‘21D›À$`gÉPv†ÔÄ=ŽÔgvòuùâ«•4EØ;0Q"’¥N•æ¤Þ=Ì0HT*%Ñ’ mj®ÞIa‘ͯ³ÌNÉ9Œ‹0É€–$fdŸ5P” ,dןJS@˜âŒ ↾‡ïžÐOðýìN˜ƒ‚ órпŸÙPLj¹TØ)™©6Ç€·75þ~}ý^ À¡0sêWÍ>h6Pd2VC¾fÃpÂårÁóó3º®Ãd¦áüIñ>ù»HçÌ„\H«1Ìy*’± ¤²sð·×±g2jm?ŽWÜæÞßß•}5M¤Þhbïciâé¬ÉŽìÀô>0JÝ&lC"ÆXŒíüø”¾¿þÀ4Mæ³ñN2@&'Š‚BÉvýoÉlM8? äŒÚ—A•P’ሢ#ÈÕSˆÔ[HýÊì}ZÝì='1iRŠ “^ù—êmÅšJÜ{Q¦ŽÉ‹dÐ×Ad23ÝG\–ªÂ¬É HÎ>WZ²1®ì<ØuÈ©€T±j“¥„I9¢ÀÒ¤3xcj¦2™”0³Yïû j2l¶CöZº´çÇóHE%‰V ¨šÓó$è×}}9Û–ÔIíÁœõ²,ʰb5c'=sÔo¨¤ä:”°([Ä9¨dÝÒ”Šð¤É—Þ$‰Þ‚ ÐTÆ*— ƒã ²ö½¯@ùÌÚÍï¥f\-ä!)òýš½fô¶®wk€²ª— ãYV&óÊHSö&!›Y½Ã*&–¡d‹€ÁÆj%ZƒûÛÚtkb_ƒiõº«×Œ‚ƒé°÷mYÈÔßëòõ¬dþ¹UŠq ¼R­Ëjëg[õ´M’\ÕíD@ʯ¹–ç墎YSÀSLHYþŸÓv‰“쪕Z5í„°® -´ŒVâÂ.Ì ˜@nfÉÚº÷*×3fé`%ŸWOCÓy]ÿûVóU7yµ¶¸E×ËÀÏJÞV-°ØÛ|>2½ß•!~W áö}¦Æp$yjijëׯ7æ-}µ*-ÒÂÔlê©7T¦ Õ¬u£-°©– ìÉ[šKõjµÅZ«=¦~O:áGäN{ïyÛ€~„êš%1{ø‚ȧõ&hTÚñxË #¹Ì£ÉÆZκñ Šxˆ°IXëgñˆY” SaZ¦wÕ¸X\özÐàÓCæT+£^ß{J 8ø`vÄèü[±Í}4чª wtM×r»û5¼}¾k¨Zã¾·‡í…héçW±¿ÕÛîg‹dPvÁÁûµ»³lõ=´¥ Æ³¸ö¸Û—r€Ä´+?’ß³9ïŠûÈf†HÔ<½ä´±fF#¤ˆ9×9âmLx½Mx½E|¿áz øñ>až¢8„YÌŽLš\wÄ=ò¡lÉ××DlÌÙ7zª~V«çKWÀ+d;W•cØ¥,*ƒ®Ì¼ÊÉh/f|LÅ>Ÿ(™’ú“xoÙT€Tfe3UÊ™ ©X¦¡JM´i〈©1²|^ëú: IDAT¢OÊâQ "›Õ/…4‹ÊŒÔ¼\Ÿ.òÂ̾J)”Êó¢ zf«±#ë@žðéógüáÏÂ/¿ü‚s? ïÕ ¼ïO`*BÒF¼ëÃp†g•¨===áåå†a€HÂívÃß~ûüõ_~Ãm|G Š(^NçâÅÄíÈÁÃi£êþäÑq‡Þwð½2·ÀjšÍ#éýöŽ$qž0^àú㮯?nWÈ<¢ÃˆŽCç1ô'< úŽ08†7¶Jf)PõôIÚX$(ÌLèº3†Ó§á„<æŒS¹AcÈAê‡ÅËÒAeoÕŒƒiš°zWߣ××WŒãˆëõ­Èµ²U‰<'[ƒÉÎ"NŒIdŒ" ˯¯XW?}þº{²ñy^‡5ƒ£öÕR?«Þ;°0$§Ë•×P©!›¹ºGǶ‹&(JІb‚ÌjÆ—@fT?Ï3f qyyyÁ¯¿þЧË·Û­HJ%.,ÎìíTï¥Yv9Ï3¾}ûfÆ?ìïû†Ž;¸ŽUŠhÏA„÷="()S.Š "êàD ´3É&;Õ§²É-1^__K7MnÓXØs!LÁÀ…˜Tœ#Bœ¹cçð,Êøð¤>WÁàžUF¨{”²®¼ctNïû²†iÅ Ó5™UJ¥ `²Y;Š~·–Sy‡8Í JkÉe@6 ;³¹Jm)–óšê–m¤íGÜTîõ¡ú™Â" ­Œ£ §#€¤òó¼Oº.è°Ö3Ðy—3öUÇç}çíú+À¤¯§É±Cçà}fãŠy™é>¿H5FÁ4·ùœ±€<~Uå{F»j¡üü·j@Î Øg!µLö·µ@ xW›æ¶˜(àáÀZžpȪë‰ÚË©Væl‘ù=Ôë®NMtÎaž§»ZzË„­‰!Û±–¶J5 pOí¶­g[ÊŽÖð]ûð;ÜÎû|–r×½~KQwäá¼7Œßë?Ð5Àæåµk,£®÷R5·×Å×ßPÇ?æ7§…ʽ‘dùÀ)•„œûæPÆÖfÔ4$sînƒjA«Œpï™a ¾ž‹%5Ô´»4Ê7w Âå ¼m„ZLŽÖkíÝì²ùJ44Þ5XAŠîK%'ØúÿxÏ•7Sn±Øã\ÌÔTQ¢êÁ©¶hl/&¥øIÒ(XE@ci®(SúR‚ï†Åƒ‰xW“¼×ÉŠÍ!w¬9횦3‘M«aò¶)¨6{Þûeª)H°$±Â•ùe¶Øf ¥°¢Z'Ùh|]nÚ|Srºvn7†Åœ×æ m¨~+Ó=[Çicæ^hµ¹k'ò3Ý7WϤÒmSfZÅš.ÔO*…Nê©y0F¿ûþ´z¯-_‚ú¨ß[ýÙV›Vu(ìmrÛ‚ý(…ó£2Èm£^GÓ¶6çuƒ_„ÕŸ·>L¶_ßc#¶OÛÁ±„°–Öi1e EÙPï×÷nO¢¨ûM:LaÌS×=p1Ó‰ë¢ôH½7ȤY­ëGp«„Í0Íu° î.DaUP“/ Î6Óʳf'm4­ì¼fæˆä)9HeOiB¢Ü3b A I4Yp ‚9·Ù$!æu•=§æy¶ô#g±Öû&¦­ó8{¨ÔÒR½gU–Œ%êÄö×ÌÌâ•4Ü[j–3w—S”R@çÙ®‹J;:+ƈ#BŒèa6ŸÙ[ \5žïXÌÆØõ¶Ç‡`¾3E(¯I•ˆ¨DPH!•s‡=Ã%F²v6‡ÉúE"ҜБC2ÏŠ,ʆ*dŒ¥È›çYÁƒ¾+–- `× UCÓé¤ÌžœnhŒãÞyLq;Æ'@.ÏÏøõÀ¯ú#¾|ùRX1]×;®S6JJ 4ÏzexœN'ù’ˆ–ëKðbZî\a•&ÄÁ.áíÇüõ_þ ¾ÿõŸñþýÒ4bpOCB÷ŒŽzôÌ I q…ýcB†°¶‹34ý.Cô§S‡á|ï/9„YT'‚Äb8“E‚ôÞizá’š˜cÀf¼ß®øþã;¾ÿŽÛíV Ç3ÿ!W%iRåZ¥F±Éx ³N¸- ÜuOÏOøl~e½ïBZ…û¹÷zÑ´®ˆ0Í+ß~Üæ"]Í2Cï=„ÕÛÆyvʨËÞ=‚cØ $Îðz_É£c(ˆD:-º“šÅ÷g  /§gxqx{{ÃM6)\s( VŠòÞ3 nïWeæt¼‘XÓÈRˆ a}ç×ñ×;tÜiZ¡¨gYJ 1$ê¨ÇûxùÐuV3²‚¸Ãù„q5ñÊ{ θ#,A0›‰~fÖÖšMHœUŒ(L„ÁytŽ´"†çïç38!…õCœ×½P™[`æøLÞü®:cÈ «³ØYz'—þKÁZç{ sYï{´þÖƒ¤¨XBËPušCaõ©L/–:¬Õ³a#j)1Ft¾k²|ê(ÿÜ Òæ¿ß÷½W /^rÊŒ´36L¥µ¼w]ß[ ™¾†;Ȥœ@ç,T2s×ÓDʹâœ2ä êqF¤Ê¢ÞgF–¨ßY6]&o,;F²¤Dvš8 °:vH)•ëWæÍ˜Y~d=ЪÆsš°Ë‹Ñ®}—uº7@®Ó½§ùÚ—ûh¿wÎÖï$t+uFÞ#½yûEä³ ©`y}Þ»Îc’¨ƒµ˜VÁ)EmR½.UÁY2íªµ#1ê/«kúZVZ… mÁ§:p;T­ëÑÍ×&÷ÿyïR°’=V)íŒôÞ-ëÔû&ÐT×ê{ìþ`vWÿ{¾³ŽÈ5oŒýÐéseI›Þù¥.wtÞ[õ¸‚Cä=½þ ú / dïÔÎa2)pÝcÕ×µs޾E¶ƒ?ñ¾‡”9×Ib¶ö^Šßò=lj\ØÖg¬Aº:åÑbø=’¡£z­×MÍa¯yÝ{­4ê-¦K‹V˜Rª(-“íuƒÓö'ûÛmÒyÄ\Ýû³ìùVµÙû”Ê|_¶m-&ß@j1[’¬½ð‚íÔ«6l!à{Ó¬Ö{iMFÊäøá=[Ý;{vêˆÝ‡`´}_ýûžOÑ‘6¾ä´üËŽ ½WrÈ£êÿšçý#ì¼V ÈÞu{ÌàâßäR¯£3 .öÞc†Ú±çÕv¨räÃöH¢ÜÚÇó¡øÈÄô¡ŸáÁ>ÓÞûj€lU¼›ï™ÄC/9DeÍ1à6n!aœ®cÄûñú>ãõ}Äu ˜£{É jksÐHzä¡°wÿ–¦i'5ûi›,ëK}•Ä€(5±uŽÀÐD(b1/àÔõp¬_÷æ[BBêUB*)óÙ‹JÔ«ƒ9.1¡÷æå“Ôh·gBbg Bª¤ç$T¡u€âêúÆ&éz(¦ÎÊV\a{I í—þ5üMà!¨˜*#eIÖÔ2¦D§b”½ ¸`ÃiS0ôxzùŒ¯?ÿ„Ÿ~ýŸ?Ååé]×£?1ø®ï ¼Ð‚²ëÕ‡ât:á|>ã|zÒÔÂY0Å 1Dmœ:ï;üüé'|~~Áëë;¾¿)ëHï¿ÐT1¥4""ƒƒ° » §ë(Ë1Bœ%b£úFïHaÖ4D"Âp ‚ó˺NåŠïm*pK ³3_ NH L) De-vç úþ„ÓðlQ¼Œ9BUbŒ»ì•dYÚ“+SPÆÛõ6âzS«ldžëžìõT q^ŸkqŠ+µÃ–!0ÎÎç3ž>=é}8Ÿq:©O™¨‚D™zÕ€¡ÞB`$Ȭ¢°0GÌ0…Î{ }>Št… Meo–qUžé8bÌaÄ<ªŒÏ³Ã¹ †¦ 'ßAŒÙ—™½ïpî8ïáÉØ&·+®ÓXö¥ÙÐÙ,ÉŒ¡ò+ÄÂ&pÎ!D•Æ”‚1ËÆX€Cò–†6¡\a ‰ÌàŸäQ˜‘âãõ†9E‹>P‰àfLaF©â:Ü‹.GùT®çèœCÏ fxNè¼Cç`^IŽb‘i:c®{â…Ieà•cÉ9=ÈmÄæKç=œyesDÇ5{Z¤ ÉXÕŠ·bòme~ñ jÕoõY. {‡º¶Ýëz`뿬Ï:–U= ã"sËòÆDKªeµhÑA A¡Ú´3X¥'©>Ÿ'3á»Ö‹‡™&åf¯&CξX$³/«mÏ»°fl0_À v¼:Ãïû?:¬×·)ÇúÃÕÀR¤Z½†²y'h'ï•TP¸f]·¬#º#’´z<©ßÃ^pÔžm+g«šÕZnøl¡asTï±Ð%CîݯvJèš¡Û2º¯¹ßÏסï{MQçÕó{?§1©®·÷°—úº×knÛO¨„Pâ’®ÿ¥ìÕ“ 3&k<‹É©!¹µc¯i>nº¶¦ÛÑÞ8FÍ>BVž--¦ÄÖ¯æ#ÒÄ–1öôÊ÷QŠÚ# Ü~W Ü^ƒyÞmY<­Ãd+Áû(Ö¢ö¶½gޏìI“›áâ“b­q.|Õ¯ä>µoµ¬ A»‰Ö¯»’‚²lÊkÿ´@´M,e׬^næáVRzÄ&ÔWŠ0B‘ /&ê½óš:†ö:ÛéZÏÁž_M„²ç½ÅŠÙ“µµò|θVwÛe …-·Jñ“ÕÿWéT ÃúþbÅÊþ:(Mòâƒpü°7]ÜcØí{6ã|>óÕ •°2f×ëlæºqFˆ!ÜFe‚ÍiFJÀ<AeW‰€þÜ«_s@„dמãtCï<†®ÇeP69Ð =äf Yy1¸Ó„<ö®0g”‰Âðv?}fXÚþ‘}°ÄŠ®…TXX5SW °Y“ôÜzè—h1­w–̘™pj¦ÿŠoß~Söâù ׯxWÆâù‚ËéÏfž­´$&®sÀÛÛ¯¯ïx×× •‰±H´}"À›7”GÂà†ŽÑÀ®Ò4 ï)ê–ì¤~•"ÅŒéw*yî:8î0G2¶•+à ³²KÂm f‚ÏÅ'™!Æ@reÍ-‰×y¿Ó=J‹ôTÏeoÓÞ`SÒrc$5{Œší³5 nõAdçM>òó~í¨ò+För•âý䜹|‰JÕdÝìœ%ûcìÔßÇY`‡÷ïœôÞyóÁrÎ!ûj“$t]¯lÞœXˬ&íа—}ÛVu(mkÌ¢ÊÄ Ú«ïUF­~öD¨ÃÃZöM‹óÊÍÊŒbee…«j}X]ÄV÷$c q±1×âi §=š¥ÿÚ«§÷$®uùÙòÞ3ˆ¯ -¹?ÌÀ¨ªw׃þuø‘¬S©mè½ã=…p¶žPÔ·½çý@‘tš#ɪâ} }ϳë£ìÒ£gwï™Û›8í±+[…Ýö¾î½ÇøyݳÏÖfö rÚaŠÉçw¦Xn×ëÑþ· ™øÈùP„[ö]ý\´ÒjD;~¸69Í0ýê …¬äÔ ‚D*7Љ“J½ç(˜cL oãŒ×1àuŒx#ÞÇ€qNˆ‰‘"#¥¨… ,±ÚyP%qóL} ø@¿—`nY„µßA²÷±^¿(Ƀ*g&)׉xލ'vBaŒ•äh#˜=³œý}Ç*Õé7UM·¨?(›”Üé÷% à`•â“%ª&Ñ/h¸¾ƒÕº´ëÍP8 !‘2ÊÚ†‡2MÄÎ ' «Qøý_ù_¾|ÁåéÅX<ônÀ0¬,69c;eÝLz•1 §®‡¤`û¬±E¼‡÷=¢$5k­ž*R5ò x…ÚÒœb@œ—†É9‡Ë錡÷ˆý iº@¦áöŽ0 §w¤0Æ„4EtÂ&!õ³Œ â<úA“OOOpÝ#$ •ù ÀêaCfx¯öÏ:´ !¨6®|™ÞÞ®˜ç¹$éÕõâj¨—ý¥Dµ>Yx›æUzZ®i2óóÏ?ëýêzõÇšfM·ô÷%­¯±BŒ °Ôßc1½OÇ+æ9bšn&ùÑxN‰Ný»ø† <ƒààç7fœºsœ0†½Mã*Ñ cÄ¢¤âe–ßO °ºÃ0àÔ˜@˜SÄ8M«É}]Óm%cõ5Ílµ#„4Â{ÆÓé‚óóŸŸ?£?÷øéóOp½Cïz„0á¯ý ùËÿ…ø‡ÿÿôÿb_<¯ÎÃI N'œ‡“2 ¦ Ó4ðõ ÿò·¿â·ß~Ûòëù±H‹ šŽÕà;¯`•ƒ2E!pxxçÌ[eÍ®û¡&8o¬*õÃc2†ŠïŠQ³²0×ÍõƒzÒ ®{5¯3í2–þ¯¾Öbïš–ÌŒišî<2·}Y}ö5ƒ{Òqpض¦Ý‚bÉÒiSï”UÅ@Q‰Ym‘ Þcˆº³è{ AÒýUe…Áü-‘м®±’™ï¡èðF(úþ8ƒWvo³ÍB[tlyQú³Í`»UÏ?²Ä8RSl™½w÷x§·´SžïkU:ôˆÚ2×[J}l» Î^½×—ovÍ`jùO¯÷v”Mé!êú´eVÿ¨_ÊŒÞV½MIlõ±5ƒ«î§²'à²?Ð]ØZ~Íl% ×k‘Gîù3ןqš¦Ý5ÄÌð­ĸøa¯jGp·‘Ò­žò‘ qdúhÊ]‰‡nørµ@µpy„†¶~µ´Ö·M)¸k€âÒðìijRv·ÙP%Yk5%ÛânNË”Ö&ˆbͨq#Ä&~ÏW¬{Qñ-Ðíóå(9¢}@Š%®467^¶Ñ¦™5q“*]ƒo-jê#9k¨\ºÿ9¾È>i[Ьf(nJ“lÙ˜i–i,|‘æ³Ô˜²ez~ý½ƒcïÐùÈï=?-ºúG¶½ŸÓ7ëýiL¯Ö;ÿ‚ VkO8ŠøÝ¾¯‚T‘vßïßrÇe\ÿÕÃïDhR>wëd{€¯AáÌÊM»ë?¯™ZíaAý~òƒ¶¯‹ö5­¬}æ¡Êʲ¿Ãêܳ—ׯ–D}®®sDˆ„[Œ³àû4âuLøñ>áýªÆí×kÄ8'$zõIBŠ$U×ÈRtšÉí{ƒ5ãµ°Ï)G~o™yëç`-\&ýšªU=¿X¬È<4!õ0`16‚SiFNærÙÄ‘&Ã&ãð:A‡Iò³—ƒ}þdf҆ĩ˜¿ë:Aó³œÙá Ÿ™¦v`$ó®tQµdþ¥_«d€s2)˜1°æ”l?V¿¥œeanÙ“gH¤юšØ¼÷xzyÆþü|úü_~úŒËó.ÃçÓ§ÓÞõ8ΆÓ`Ù„Ù{oé„çR¤;çAƒNQy$:âÔì™Þõ8ŸŸ0Îï·+|߭ͧ±Æ`Â$¹‘SI‘Cï:7àÔŸÀ¤4!Ì#¦Ûno¯*ï Á1*ƒ$%ÜDp³Yç½ëñtþ„çÏ_Ð gSIæëƒîä<˜¬ØMØ 9Y.ÅR]¯Êây}}Åtm“Jŷα»“ÅäÇ!BÙh‰J HE¨÷SÞëNO'|±”ÈËåb©„”÷BçÐe¿*×+jaqô"˜ƒ‡ë;Œã}ï1 „È1\§Wío›RÄÛÛ"ùÈ2çÔóÇ{Ëå„§óàÆÿ½óHaÆ„¤’U»×õ><§bRÙàЃ;_†~EÚõW}($Dý¼Pp§V>Ô–>s&I†#Áèý€Á÷¸¾Ýà&Æ·Ûw¼½ý@× ø·ÿæ¿ÅÐ]pêÏøßþáÇûíV@¬ìËvê{xïq»Ý0Ï3ÞßßñãǼ¾¾ªDtžKý•Ë3fõ>r–ç<«la§²5çŽ"à¸ÈË€œPºxMÂñºî‡C"F‚‡¢` ¯²£ aû~°€{¿Ñ¦Zß÷˜çPêÔÖ„¸T†d\™¹»]²A}÷¾¶ ÖõqÝóåæ¹&Klb5¡×Aäj¸žââýTdÚ©øøºÌˆI±¤çyν‹IÍ=ÁycÛLVŸ ~€”ñÚ»ìÉh¡$å,RÃåŒÏaIl§!Wlc=°Q˜É­ú­H׬ÇRdÁÖ›4_ÿE‚¸L×!]G ™®ëî@äõ3¬ê¦e¨*EŠZ‡SÝ×¼Ø]°Údëµ®“« öúñÌ˜Îæú9RE½7‘mÞMõÚÌi³*µïïBÀRZ÷ °uÿ°%øõ­!÷GH.Ûê‘R¤e²ÞòvÎÏßæ2˜T…­$dzí“EÊËaÕkŠQ‰3h»|.ó˜”cÑç=ÒB˜ßºÑG ÝÖȽÕ@Öÿ½z~ŸM ´Ø¾§ÐðÑy$‰ÛóÙÊ‹e¹Ø|î5µ ¥Þ¬Àº:6¶êvÁ£ä·dûþk†í” OêïßêT÷~G^[ó¼@5ð¿qn¥FI+ïÖçÊ|m) ì€[c¼=FØ#6ÏžTg™F¦æÆ|´¶`Z*A ûL<Ú‘À¡Á2AŒîiã[ÒãÁÝ=cgoØX{|m¢Øš@M7öR@[ ž­±ûÑÄh/Æø#~w­{ü{™œÛ Ù–´z¾á ò÷_g™´¼ ×àG%©x¸~Ý{×â(òîBv™Ë«B¤\gñ쨚hõh‰)"$‡q\Ç“%¤ý¸Mx „o× ßßGŒ·ˆÛ˜p›€9jPEÂV>¸0»(‰IMÚSÊ̼<ÚwKrÏ/Y«š¬`^Š:†ÉþH±Q ˜¨rI@~IéBŠFßÏ H¯ÀbÀ©D£g5¦f0‚¾&éxË`5 „ê˜r¶ˆhZ¥Çi šžËI4ù,›¶ÏÂHUVB2™#œ˜i²@$€É· è½C„JY©–µ&½—×°€Éšê—OÏøùÀÏ?ÿ„çOŸ 9)øpN8 8î0œ”aU$„Ve+û-åAžC@3ê6HRyctCá|”ÙYîÅ\Â)©KŒbìBçúŠSB}¯b ˜nW &Ä>B‚þ½o˜‰‰0Á8Múz~À——gœ_>ãçŸF7 ú3È;Å.S‚€}“@–|ÈÄb2Ÿ+•¾¿«lìv»áú¾HŸ†Â÷MÖ]1º¼ŸeO*k$s8ŸÏxyyQ¦Üå‚ÞšÇ,½u&m†½ïŠdl+Û$“fisþüüŒ§—K»ÞáùùY]žJå4ÏøÛß¾á?þ?ÿ ÿôOÿ„þçF ‚Dô>]ñãíÕÀ,M¤DHêÕ{P¤bðͲHn¼sð]ç=’ˆ“¡‹57u£”ÿNfpî×¢rOï{ô½Wf¡àÈICǫ޻iºáF³2eã_ýéÏøÏÿù?ãv»!L¢É¿añGõ皦 ã8bš¦Ò”©o¨gBÇ\’P§Ž™Á¤rcï½#°K‹dœrG€O`öËý5©Ÿ°‰²…v¾HšëaOÞ§ÇyZ¥K°ÊüçyÞM«ëêTljö=µL«ŸlõCB÷rªÜØ×ÌúkKM'M–µ*;hm]yŸix“‚2'K‹ÌC“dŒ8À#…PPF¯ùZ±¥Ü’,€™·I*©ñÞ;=gIÁÌ,¥ªëiß°ˆÙú€µà÷ž›Ô” ~´—:’Ùí ÖÏá¶·—C¶×#VÒ}Ÿ³ó6þºûVtZH> IDAT&r·Æµ¨ÙûŒ[uËÞµk«ÅÚÏC‹øs„-´B’ö$¹{=òží¶iÒó<—F^ùïÔÞTõ ¦^[€në-~d‡´˜Ê3X_Ä•„pWZ³ÃæÙJ8-@dÅ4©¤@hH¿¶zÕí‹ÀC¨½O¦yÖÄªì ¢>\úu·N½3o®ºáÊ °H«ÈÏ…nj‚DuÜìòçØœôמL+&ð.KÖÚ ¶†÷­‡öŒ47Šêuä¹Ç€Ù»¯»ì7p“áBUòÊöó„©¢ü.L­\Ðo“óZò®#Cö½f¸¥‹^"Æ0( }ý«¾1Ý=kTùAILK bc½ý;§]ÜÝwàŽÙÕž‚ÜÇÆîiÀ[›>èß?*ëûðÓ$±Oë÷_¯­ÕçkH÷>ÿG@ϽÃü#ר¹¯ƒHù Ô`¶®ûrM*׉.®b"¶Êtøs?"¾ç½ï“ûˆêÖ}cv@ж.ë#Ā홷ûE%fÓñvðc~\Gü¸Ž˜F Æœ!)#fšfŒsÔ†?©qoÊ“^ÇwfË9’S·çÊrþ¤$ÐuËw!ݱ­VÓ;‹/ß/Û¢•Ч1TXwšüd’"“}ðêú±^È“wk4:·Dy;8¡bð«Öz˜÷(v‹á­Ê £%ßœ8HJjænìcA€s„ ^Œ“sS*±CŠ&Y“¼¾Yïy4ù‰=kŒõ×1ƒRÒtß'†‚31FDI îÙ5Ëi„)Œó —ËE=ÄÎ=º¾Çó˾|ù‚OÏ/øõëO蜄ðv}ǧ—üòËOøû¿ÿïp»Ýð?ÿ/ÿ+^ßßðv»"aDÀmžñöý†ß^¿áËóçÂ&‰1*O¤ø=÷OàN½Õã÷}ñý,œyfMW«kI §U0œù]`J¨€Ä1&ܦÑXtÚ»+:#!,~m”Y[Kš¸~¾¬Ïc•öHÚ‘€Q³9n÷uOYƒ ùú·z·,Ýt9£|=Ú9Ïç5”ƒ>„¢¥ Ú€Œ ™¼±åâà;½¯Žu¨’Y¤ŒEŽžeðµgP–Oe,¢EÅÖ„|Ûœ¯jÆÄƒí%|Ço{?å3ë.EYXÏÎ*å{@Û*¡VéÙØS5$Këz@x—UÔ¶R‘"¡o.zÛ£¦:ÝpK©¥ÜµÿW½'µ,_Ö= ï‚TÛZ+ÏÛó>²ˆ9J½ß¾öÄ;bHæ=§e`¯¬cóMRyÄ&àII-u³}6Ö4ó0á¸Úë×ü¢˜À#þ{×ùõFÓB÷·ò„½‡çH«»5YÞû€{´¹Öjý½¦}»Ñ1¦ö¦ÿØ7ÛM­H+j t;ÀñÈЭÕ`o¯Q:×l´mn’P&m 9ÖÄÖð®µ>²éf ¼iIðŽd®[À¨þ] Íר%¢M†ÜöZ%Z½¯TiØëϱ¶Zàéöþ´@°í½*›+¨h±¯¶[R+¶Ÿ?OèÈÝoÜúùwŒÄ0—–ýƒ7ð=¢–µ$Œa(‘EûnoÛmÓ»‘X…8Ôë¤õíU[WËîHv{ÄvÝÒ»JI‡)–µ!þ!´'ñ~°¶Rd÷¸GrÔæ€å€}µÇ]ýÿ‰2Û³¥Ü›"%«˜‹Vô%Ä@¸… 9c ¸ÍÀ ×Hø>|{Ÿñ–~¼G¼]#bÐÇnN*kƒ®Æ HbÓkûÝyeÅ`N»¬µz}ÔiŠõýqñ8ºK2Í ‹º³k±SƒX$F· Iå-¢SsÄî¼~¯I¼²tR´¨s›Ò™Y®³Ä¨ŽÞéå è¡3#FtÉl`x„cg,,3w§Ü¤Q‘ÒhQý! !% ‚ý9€ÅZ×}¾6‘i©ÀÁš06&™/QÊç¯2`$‘y„¤a~¥±¿ÍQY žÑõ¾þú þøÇ?âéåç§g\žžp9_0ø3únÀÐ?a¸<Á»n8¡úâƒÕukK=–Þ€Ê)5¯¶Æ2ˆùz‘2À$Œ)`A’JÆ,­Š,Ò½w]¯@ÃÐ_+¯±”ù&eF“¥)v§ÌÁáëןñõË/8ŸŸà\‡iVÐÀg/&A!;ϘBDJS ˜ç ã<áz}÷oßðúúýëoƺ1“&®ë§tÿÜ;8›â—g†ÍdŽ•atyzÁ§ç ðš<ŸLžR3Gœùtésæp½çJ¤,›Ï/ŸðéÓ'¼|zÒkà€óéŒópÆ©?áövÃ$Ê4úí·ßðíõ‡²¡Ì ùú÷ÿÿÇ_þoü‡ÿôÿb8uøõ×_Ñu¿ýö~üömñ aó8VÆÝmœ•Mšh¼A‚²™nïWõ—ÕCŒˆàûüÂ%¨Y?39“u³ÊtHeÞ]ç4Åͱ™—3œIº:×!t üM·×ëLÀóéŒqñí·¿âëç8Vy€ôYÏïiž•–æ`l{1v–2(½SiO Ž;$8Jè£ó â `Õ÷nf)Yª†ªÌ^ý¯ û„˜ÌäôÿW{iI¯ÓÛ^¤?SPö„ëÄq›&PPúP% DI…Ñ¥k™Šä>ÆXü®VªcË©¼lñØÊ@Cövj!î™DÔìÁ¶ ÖšMq–à̃+ÆÚkoyÞˆ®æ8gMAÍ_‹ˆ©r`è>\‘‘edqpñÂ)Ì—ÚÀ°0i1ÅMóWÞ(b^SÙk—H#[¯ü>cLÕ†Ž ;L™<Î&yšâ*=~¦óC"R‘M°}Öƒ±Øô@ÉÓo ažÃޤsYW”4Þ•)eV‡( ;'½”)Š×i­N‚¥e+ÀA”]E >±ã¶E)$I:ñ!Úº SX£îÅŸ%Ç7{ YVJp ´Í@VŒBýs}8do04bY“‡˜1n\ÉsÝ|²kšRÖÊëTMÍ(×°slχú~dS2]=w‹T4İPGŘ/y‚cÞ/1 ¢%+2±&a‰²× FŽYJ–ê„ð „6FYæI MJ¥NŸÙ§)_§¼Y‡‹©¦+¿1aìMfÖAñ+0Ï“`“f8Þ‰—µ• bŤã¥¿Ö|'±ì¬X#kÞÎ9Ëjݬg+¢¶ j‹V}@Ui ¨µ6 ªáo+êý·L°(U`Q½Ou›´Ïe‚µ¾ï©áã†JÚÐôrO3†»r|¤<—º_g`ŠšÌÉÌ(ÌϳìNåÀ¶ïw´–\ë`ݘ””…“€iŠHBˆÐä¨1$ÜB˜nx Àû,x£ôx½%\'‡qbÐÉg”„0'L1ŠH1ØtÚÖ )Š¥ð-´îmXǽw•&p’î<óôúHa0iòUu€¦ZCng{€%e'‡¾Ë’/ؤ¼3#w†$ZºGï3¼±Ú8©´§÷„Þ{t.§Þjó(pŠE®’qaï‡*ƒR€çK»¨~!L·i<V¥®ƒ!Mú>:Br¢ "„ }ÏÕÞɈ™Nš:… ‰mb5vÍ’(›+!ÂyA$Æóó>ÿü+ž¿þ„§§|zù‚îtÆex.àÕåò ýé ~¸`Îà^=ÔZ ؇aÐk•JnVg$Îw¥þCïÕÐ>FÜæ o·+®ó„I”U¦X˜UŽ'ßár:ãÜpÎáé铚R×RQvˆP‚(Í`ß¡ëOE‚–¸÷g„÷+.O_ñÓÏ\.œN—b(/Im¥)KÇÖxJ S˜‘X0“`ŽoÓ ß¾}Ãßþö7|ÿþ·Û;ÞÞ®+ÙRJ ½5±"À4¥Â²È©¶ZïéyÆI“— «@×wx>ñË/¿À³/ÏÞÂÈÕsàll¬,= ! ‘²ÿ’íùoo¯DZò pΡ? x:=áéô„çÓ3ºÓï{œÏg<ŸŸ•…'Àt»A"ƒ…k€Ì3ÁØR ?½|Åx‹øÿññÔ_ð?þ»¿ÇßýòGüå/Á¿üõ7Ìã¤`¤IxŸŸŸ‹wŒªÆI™LaRIæíýãx-*ëRÆE !LzßADë픂5²  ì¸CJŽÉÖ+;°GºÀÏ !N˜âŒ8Bšà HÆpCJ1Í`ò˜Æ€ñ¦C»9Ì!ZÝ”‚XdbÞ NƒÓðôÓ¤ADxô¡÷ºP2•㺘œù×¥hLøì±Ä*eb¸Îìá]·Ô ´°c|ß!Š%×& M´dføþ¤`á|­%‚yš`gF"Æ¢öl¬À¡z+9tCyžB2yR>rnvOÙ)ŽœúIö‚” ‹R'ÈšÙã©Thf²¾ÔN™•G"«´Â\“,53€ÊK—úÌ[m2™«=´ažôÏn1vg§÷óz%2©¿oïz02O€SðÙ¸å€Ì¢z÷u½žñ)˜üÕ[á‘@)jR±sðWƒõª'ÝžAÓcŒK]nÌ•-Óª5¼Ô^‹ìËU{_Œ1ÒÝо6îA½ëDÈ»A—,ͨ²}¹î!Õ\ùïñˆ’r~I‘|–{íÄ®xRe&>ª„º­wõ6Dk«˜ÈŸ/ƨ`p RÜÔL¿t27`ÀÒo%-r¸{yk*¿×ÀPNàSù¢äY“EPΔRs–ϱ õÞd (­ÈE]×a§&nâl-/žž±"]¸Â¾l(gy[ÂH×u•\P÷— p33n·kõ¾«{ß1BÔº¢ï{LÓTÖ›«êRÊXZ'©¯¥DÝKü#_”-`;±?’›Õ,½4°–dnÕPí×ÝV˹}o{2œLi'¸1%2êßyßDh?"IùÝqÏD~/¬e2}˜0 |È ï:j1ÑfI´& G†ñ- äÖWbK5^Lš7Ti?~×»eÖÔÛ=ý8^ íu¶õ„ÚC·hþ6þöNžDéwkÙ[Úð%_4 T§¢ÔÒ?©€êGS=%=xÿŒ@óð(Ye/`ë1pÄä|ô,o™O­µ×Jô8”ØV“‚|ëç‘ ‡ï9 =ô@8Ü›د ˆø‡†’G,н»£É#ùãÝ×S:¼>Bû÷ñ£©’| Öë}ãÇRdë! æ°xWÍÂP’ÔïAð6¼ oSÄu¦Y½–@BAý²BÀdR˜,‰ÉiM {uïÌ8:Ïö¥¢¥Å0c\WX5%&6 J‹=õ°êØ«4ÄÒ?œI;,]Lú²ú¾S9Ÿ1ª1HCï•M˜¼Cñ9/ÅcçÄäƒÕ€‹,úÿ¥Ä_§’R™yÊ•6{ƒË ,J'nSgÎÒ‹¢†z±¨·–zÚˆÉÉ|ÀüÉÖ$LQ+ A°SH®ëÑ/xùò^~ú ——/¸œŸp:]Ð š8xTB8œŸ1ôø~€ï;°WÐ0 +–uö%Šq^M®KAd(§0Nn·Þn×⻓'¶}×áä:ôÞãÜ©×Ð÷pì1 '“Rªá·¤‰NÍyÉ!šw û2ψQ0ͪ^=áÏú7p^¥x5[ÓqgŒ&{W@Ê2¼H‚9jŠÝû|Û³¿½½•&ŠÙãÔõÊ—àuΕ!§ã® }cŒ˜mé:OsTãô,Ýbïq>Ÿñé“2£¼äáŽËéJ¾7&S–"-ž>!ªÓeœ{ M̆úžM¥)Ê îX‡0¾ ïuüå]–}*ƒZÓE©²4ØôL´°‰Z µ£ºbKîкPÛ´¤Ô´‹Ù2ò}©{êÀ¶ ‹½5Ý2”öÔ>˽¦v+´kkÔ’æmÿ¼]_ù³ÖäŠú:m=øÄ¤Ìy»ìÿû¡v5c¬þ™5ø”™H[Ãü=;¦ì»W_¯ípº~ÿ{=aËü%ûÝSm奋ÕG[j¹HZ×øEí?^¯Ã=àüo7ÍÅ4u¢¤)[€¢µ˜Ž$zޏù /ïíØä¸6lKqÚ»φ68qô ïùˆmMÊŽ6Š\Lí]§=£â=ðª%í9jÆåD¦eX¾ÊìksšéÖú)ï“ïMÀ•ÄÁœ ¹ßxeǃ¬Þè²ùc<­ãBå@ »§E>lØ“!ñ$;Fÿll£}jðVÓÞò’²N7Ì"j{¯íƒ¥ie6¹õj‚>l–­°Üú–Õ,¯µôÂV«‹ 9ð¡zè1õùð–Õ²õ†¸/ ‘$Í<Ùø>µávM*þãDÂc/°å Ý—ŠêÏ£?ëýü~ÿ¨™YËÕ²Bí}&C¤$içýoמM%í¢T0d{üŽä-@V˜eƶ5£ïdl¹ÕÇ$Àas"Üæˆëñ>F¼½¼Oïã„ë4cŠ´’ú×Ñó¹qX­[ɺ6:”Xî‚ç i^Ò)1*sâjÿ¡¼Ÿæ&ªž7Y^˱SpË6ŸÌŒÊò5ÃÕÆƒÌ<]ý†ljI0°)OsãXÉDh1Þõ޲ÆÔšÍe8 ÅŸ¦f-¥@ï¿Yâ,טŒõj{£‡±ªP’Ƙ ˆdàŒJ¦ N){t!„¸xŸ0c¶ŸË`tĸÁðtÆåÓ|þé'<ýÃåÃù §á¹€W d¨a{ßõð&<ù`ñàLj^>MS™¦CU·®§8©)÷M ÎÇqDHÌW¿¦s?¨d­ë˯œø–Ÿ\Iæó%ê—Vßç=#êz|î{eBT<)%Ä  m6ž†“ÊÍ’`’iVPwUúö~{ÃÛøŽ·ï? xB€MX.O x¯ rJ²{v§” ÓŒ8„ küt:áóçϸ¼<ã|ºà4œæ l{mçÔL¿ë:8çtúLjàN$HA¦ïÓ ïÓ„È:§~°¬L·À@ xÏrŠfç<žÎ\.Où¡CÇŒ 0©ÿ×uÔ{Ùƒá…ÁÝ ó§/8wòøäÐ匿~ÿ)Ä[€Ã*…ˆ 3|¯õk‘G‹2>é|Æ©ï ˆ˜¦Ûj¯ æÍ4^Gcàx¤ eZuZfê`ס3pö p’z‚]„Y€ß^ßð~q½Ý BÊ`ŠZÿ©w‹žñL 9Ñug~HˆŽ ì¨$zÏæ“—ë¦;2Vžóå|«%£ä܇î1l,WA4UD® 3¨-$!'‘g¬: %óÛ¼VÛl뇖/k+!0,`ÜÖVÎ9Ä)-á2hÙÚÕXlIŠËCV•§ј»ÔyÉÞN\ªÏ vš4«òö,ÕU9xñé3 SÁk±_YfèÐyB ©ÀÕ½7ËãáîG=\[ŒšGÀ½>ŸvRÔ¬{Úï—·Wè-_?²ÌXRÓïCÊêþ¡Õgm%µ$­®…Žœ£¡h}Myý…Å&c &1W¾OTRý éLJ)®JFó¸LV<,Ã#¦d)17d¦Þº»‰w'{¤­ °eï±í#u¿r;¦õ²ê/–=$˜¤uQ­l}¹õï­%†þQ¡º-pkmeKã¸ý'£h[ÂQ‘¼gDÖz¸œëv¿¶}¯k*à`µ˜š¡³ ç÷qž-œyï4@°Öëdºáž/ÏQ»w]ZýÕ#¦Ôþ¦Iw†p5ñ‚ºÀ1i¶ ž¦¹¶m^L|ÈêYòvJà˜RÖAcšÑ<˜4ÞíÔŒýÉ-êø:Ƀ5ÂÇŒ­†IàêÀñ™õGÂŽî=ÿ³0^ZÏÂö3¬÷‚¶¹bkm´¼£ŽpGL²öç»C¢}³—Bz`5 |€úèY£Cð‰šV k‚ߤ[¹Ó÷p[€èx\¨î÷÷#öGÏØq²âGŠÍý¡†ƒFÕ4QwŽ‚YH ¬ç„kŒxg¼Ž o·ˆ·qÆÛq#¦9"Ì|gdÚƒ›þÒH¬_'íþýÕ"-éJùw•lÄæ"õd ž'”©v‘K;Ày‹¨ü‹rÒWfR%Kx"xÏ jeK„-mÐh¤lGÆ^¥ˆFЫ}z,ÔÿÅF!Èç{\= d¬cv#Û’#TR-&AÒ¢U }Âóó‹¦×ž0œ^p¹Ÿç’ÎÖp4 †aÀy8á2œÑûnI˜³¡N æ;“= šŒ¦@ÒT<–BP)ÄÓÓˆžaVÖ˜o7Ä0™WãÿÇÙ»mIn#[‚Û éî‘©TuºæT÷ÃÌËüÿÍé^kN«T¥£ÌŒð I\æÁ H‚Œ¨ÑZ¹$e\ܳmûBèή€WPæSfwM“€r·AÌçǀï?¾Y[n´SJà(ìÃâ9–B(ÒøÂ–iìëy¿ž4ÑÎ8y/—ËŸ?ƧOŸÐuH¼*)ÆmXçùš„p»ÝðxÜ0 nÃ%e˜q9§€q€O—§'¸®C,’3°ç8õå¹ËšìĽøv½÷i„ël2øüôŒç®Ã§Ó„ñõÓg¼]¯Ó€è¦4×§†¬RŸœäç½G QÙ/’˜‡6²¦i˜½§ªi¼÷^R“Çã1Â{¹~Þ{tÝçn¸ÝnjNîA–qéO"ã6®@rßp»Oøß¿þ†··¼šóKHJc ˆ‚vs‚± g,°I ïa¬E¯) †#œp)Ä –L£)ßJ½æ?F˜ýÆ‚ÉÂØ Vë¦`) f3oÝ£}’g)¬ š«g Ź)¬5³­Õ°¶Î“£Ä·ò™erYÝ3­ÏœË__³¶µJÜü[êa©X3ßO$håð)ß8'\d¶/SqÔ€=Ê $€§„­ÐÂÿQŸKNØ­Çöj–=ŸÓ÷z¥½$ùV¿™=•[=÷úõ›u/ÍköÕÚ~¬k‰!°®cÛàËžò«Õç¿§LYXʼƒ;¬YJ²oì›´×=^ÝëePÚªDtå|3–l¬¼^ÞgR| nÀÞ¼kæã¿ªŠz¯7ØxU¬M¹6´«®X•FãœY±%Ú¶¼e`íÅÌï±cZLŸ=sO‚×*æ÷ØEG©†-ºc ðÙG³<*UšOÞ²¦`Ê÷-SÖ¤´‘‹%̺uÖ†Ûæýa¯‰Ïxk³¹~Gl­zb°·©Î˜%à“ÿ©'4-ÆR틳ßÖ&Ø{ä‹-3›–Œ2ÖÄ•½”Q'%Ô1ñ6,˜Jý>H¾„Òº‰°™ÄÔór•,™w‚RÓ(pþž¸kÞ_o¤û,7¼ 6g£rý›úP&?{2ÝEºuPðQ©ÙG¾ö@µE“ÞÖšùõϼ+¡£˜­ˆv‹Ì@j2ëv‚>þÏ^qÐ>°ŠUYâù{²-Ê–òkHÓØ>rÿEF‡Y&—V‰>ÕÁ—03ÇRôíu­R³÷îm¬Ø:PfÆòjè ™ò IDATDPÍB³·ZŠ’à“S®Bbø)b>D ¸1âí>ám¸÷‡ÇcŒxŒ“W A›‚5ójª¼7Ÿqg½¬×Ã{ÏWñ¼Z3Au}`‰µ‘Ð$²%f­X%RYªÁl`ÉJ|²‚YÌòoR¦ƒÑ¹l¸ P "ë ÀYg ,KãiY&ýeºNÙgÈ ‹GãÎKzñ~ÜaÇR(¹a³ÝA,ò¤X¤g0Y⢾zá‚—´¶”"8¬¡Ê¬]ìl?{’šÈÀÄç  ÂËË N/ŸðôòOOOèû'ôç'e`©lPÁ¤ÎÐ_.èû&KÔÔ¨˜q+hàcÄ0 Ò+û©€u1"†€0%²Þ0£w'œNòG¬Sa\‰ìNÒ¯‚²D&¯¿ò˜‚/ SNH»^¯QdxçîÃê3Œ~O«Ô)óBNEJ#Ïà\÷8çp¹\ðÓO?áË—¯8NRóLt§SI캓²®–YËÀGŒÓˆq0>LƒGô"ÛCòò ªÙŒBpð>â×þŽOã„GJxA@ìøqÁçÞ¡sN=PŸÑ#9 îúóI’³'Î8áäzסï:ŠäT`›µbÆOã| C@ °l + «¡x%‰k;8õ‡ÇqaLdàýˆÛíûýŠoß1Ž#Þî¤:çðãí ?®?ðãþŠŸ¿þT@ÚaàÕ°ÿúðûßðŸ¿þ†×ëSÐ:8û¸fÆ‘2¸¬U ]¥¾ctNB$ظR–`P“‡ ©„™yÄy¨Ä ¨—OµþbÈÞ¨²>c"°2³„¡%>VÂ-¢Ùo´ÁD©›ïum¾§¦X+/6ç媙§ÛCžlØ6íº0ÿž€ÚݸPZRB^‡QÙ1rýDE@0Vü·2(0šŽK,r@Ë f†[Êß ñöâÿ+5½ÈÚ³˜Öê‘r–’º=ÄG†¾mÊe=˜´ëÞ©4ÒÖf¡V\…€V{¬ÎŒòØ<×ëi{×ö3KIöŒa X¶å׃„œ˜Ù2:¯û×¥·‡y¯î7ex{Tï×ë} B.$vàâÓ&½Ù`˜®SÄõáñ6ˆŒðí1á6ˆWÖàƒHÄT1hÂbúvDÿÃÙxè{Èüξà}^¾Q@2saŸRÐ)Ën £øZqÊ-©4Ø– ¬¦|Ic¡T| :1d` Á’Ñt)‚¡ˆÎ‰9]ýOŒHHl6hÏ ˆ´èåyfIJ6‘ιa”"G°zSeYRq+1I(I¹¦óõ2ÚA%“‘ìÚNA Uiø dÐ Pt>?ár¹ ??á|~B×?£ë.ŠØ}wÁù¤òÁ³€&1IBföd†‹÷"{ó)H€¬cPî ’"1Áà4­°ë:œ*ËZ‹Ît ï©ì!" ­ƒL~Äð x5 CI…‹i–àIñ-ß“|¢aÖY8îJÚO1eŠÇo×+n·®÷™¥“|€Íò¢µrõÌÛúùMó¹‘0…±œÙðÚ9‡ççgi‚âIŸbföV ÍIœ™iZ3*×ç^‹­½î½ZÃüw9ͱ¯–=UZÈ뚺þ¾öàm6ÿ.Ÿ‡«s‹ò`#Sl£€"«´œs`•2¯ˆÅÃвQ€R=͌ʧóµLÂtæT˜!‹~wÝÏàýDøVÿÓòÓ­ÿ¿µWƒ5Élš¬üÖR1µëç­gð¾jk€?×qw0ÚzݵÁýzM·¼ÁÖÊ¡lÓb ®ÿ;ïg{àMýó-ÿpï§WUmæ¾&Õ—omET?75A¡™vô5Óbò×׬ìåÍu’øÐFAB³õEý>²êlÍ®z!Æ»Ö&+``}¡öhG±EÞž×ÊŒîÖ~J{€Ykѯ=ºH 5óÔd r1fM{*^&GÌš.ÜÚ÷XÛ¼’òçT%ç®Qòó-š)¥’\wd¿,í}®X°g¬?› cópÎxMóŒå> Í[ýžvÁMùoZ¤à­¥c›Ÿ-æþØ•2³4ÙtuÀ/þ.#ë4'q¢qPm^³`.m'%1Å…¹åòúµ'?{²¼Ö½­™\ï1‘²a±Žp@àæe.Æ*Q•7ªÔЬטþÅø! î#Ïèдnü{ÚÀÜ:å²Èµ³‰¿=ôk õ=ðr~xY$ZÉ—mü=¨0®äÙ4 ¶Õüz¼ar-~Oúãk™˜[»¦âÃ.=²ÖD¤öÙ`Ô“ 5½®Z@¡åwÖ˜¸½}Mb”iyH SŒ˜0N cH&ÂÃ÷Z:ø˜ðö +Dö®Ê»¦0f6WŒ~ö ¹Q§w0»lzËÙ¼!{ªh㕌¶\QÍÒ‰Ô7Pš>«@–A‚5 Ò”/1uOI¢Ò ÈEC©üwÌ _&Â£æ» Jb\O¤ÌJš¢šX'gË‚•®¢ì!‘¯ÂD]íJ)ú’Nšq_ª’·HewH\¦”Å.jø.É“‰gimâ4ïë ‰-ÐÃõ=Ìé îrÁérÁIÁ«Óé‚ît†ëÏ蜸ŸNôý ΙR ŽÓ43«¢/ VSfóA¥[iGC6g7Öõ·:á’Í­E¥p™q&ABH,‹ü€F ã÷›€VY>˜¯•sNä{š‚½Ê‘ ¡sHŽåsM1 L#âñx<0ú o÷®×+¾¿~Ãõz-Ì.Ö´JclaÔÀÂšé¾ØóUê™bR“ò€à çóÖvx~~ÆOŸ¿àéé©xMeIDß÷sB_õZÙ{ XzžFôïåZtÆ–FÝ{ŽÀý~Ç@wŒlAH¸N7܇;À„¯¯àÞ¡?Ð_Îøýûw|¿_ñzà—Ÿ¿ýéX"\ÇÞ¦(£Bg0ùˆûx‡Ÿ&pïðôóWœ>}¾½‰WVí3Uö’ çœ>p(‚ ä%UmnI¥“ËHõ Ú Ä„iððã Ê33.— ¾L_‘bÄ8>p½^q½áøà·ß~f›¦Ýfãû?”…w4©³W‰lÐ2¡c†Q@Ür„5Qd„êÇw²Ù,\÷ˆß"AXžõùŸ™ç GULLb/_·€±zÞš™É›ˆ„ˆ„ ’JÈYS–jé#q¯ˆÅÈ}Ni¨µ7PËZ`ÏÂå´¨øµyuíŒ()Œq¥„˜ïÿŠê~31€Lî*ϤÌ$ŒœS6+±Y‡#¬¶I¤˜†YÎ"Ž0†Ä?‘2çF™À…Q—k‡TBIrrtñÏZô ÔŠjËÞúh0NÄð UÖjŠÌl‹1'òý,ùÆJmS˶ҢÖI).p¥¦WuȽÎ^Ò”±9Z¤“çó*Ŭuï( é3¦Ì¨#¿æZÙ’}®™IÉcòâûɦ9”Îi·ù¿×@^ëš®%è{!v9•3›¤*ý\6ÄX±1*–^˺‰Hä³µ©{Ó’CŸo6„¤žubÀ:¸â•Úh"‘§csÜ{ÛT™wší–Ä¥… ·[ëÁ[/~ÇX¹N‹Û“-±ê¦þ÷žÆvÍ*óÁ7¦u!ÔnRj$ùç¶)ßìÖž^›ë‹ÜH†wj{¬¿ÝJ®\O[ÜG ƒ×èõ‘L±f½åó¾ÎëׯMþþh€Õºï†åsû„€l›jk ÅÍÆÚb‰­Ó7›Ú!k6Úúë!Äéм/¬Ïʃé=÷ƒí#þQë»É"ŠÇ^­ Â\MÞ[~d{ÏþG¤Žµ‡Ýš^ÿžßÄÓô£ì® <îMéö&ï±÷¬µlú½ß U{ÐI³Y{ Rù7eeŠìÊX/‘0ë0YñùŠl„µ•/&"ž›Ï˜½€ ΓU¨O”6°Ä ð0}ú§œ.¸î$ú3ºþŒ¾?ãéò‚¾ïa-#‚Ô¯ê1šš' žIVkCæÁ/cÍ&ËÏbÊ“Ÿû^2lTFfÓäMº£$õƒÇ8=ˆÇp“4½q3îJ³8 ü8"L"%sF<¥ØÈuê¬CˆÓ¤à——4Ä?~àõõÿõý†aÀ0ÜW‰ÚQ¯“¹êæ:„€¾ï7 J©mÈa8ŸÏøúõg|ùò—þ¤þLaaÊ.Œ"}]¦*Emމ¯v˦ø‚H=¥ûV/©Ç0"(Ëåt:-WŒ,c L"tÆâì:¸Ü¿¿âïøO\¿÷þ]×aºßp¿ÞÐYIEÌ@Ÿ÷¢±Öâåòûtƒ"×7üãûøí÷âû÷ï‚ÌG1—wÎáä$æÍ±•ψŸ›!Ã`¶êùÒ¹sö¼Z%1Ô^H£e¯ﲈ ¬¿¾Çõí¼þ.2ÓõŠ)ˆä2D L÷á?† CȲL”õ«@•0°gÎ K@v©/¬3•lKÀó¼þsÑRkd^"•A ™„+ÃÀì‘c@láãXÖP½Ogߺ\ÿF1˜¥†3BŠâ¦ñ¥Ãôá´P,ì©Pr³™ýƒ<:îäû‘APïö,ß«ÊìW¸ ÒOÄAÅ’ ”X4Ý1"q‚§yÈÀ X–äÜì}e²¤)EÄ1ë¯ýÂJªnÛ‚'×-ËuÓ¿ Öª­×=Ï^m×ò@Z0w½Í>RŸïÕOYú·ï%Ü"ÏŒAÓÌî%„×=hd–ûù>Ð \rÙ¼vm××ö^ÿ–ë«­ŠÌ<§E×gÐì1Þîýçú55UXݸÒÞ}Ç]ÒQ˸&ÕXk*5p™ÁÞ#2S—È×É9Q$eicfyÍÏDz²u¿ÞÄo¾BÐ׀žoQÝÄ×2³eƒI‹èÈc3ÞeŒ¬oöVþÀ›`Ïïgm[šjjNkmªQ­~=ɨ?sÞ°kdvI55 sõünÏß«%\ë‚1DZ\ÏB;Ϥ&²`%IË"®MÆiNý«ß¿xÌi¤¬$y(™›ªŒÿ²n“^šRñ«IQ7;-ˆ2–bSî™°)dß¶ä2²y#)÷ÐX•÷¥&[†3ó*É&S_ãú½ÌÜöF€-ò’I á¶hä s:Z.=ôeÏ‚)ïI ‚°`If$|^©  ”{±z~˜ÍæþÈa6Ïdý:XìëfyÏ@²>ÄZ““¹(Œ;šSœìÌ£j½·€·Ö~²´Æq:6!K0!TÌÎ-x™jëƒh}h®“?ë=$¦ödn è·CrBͼjƒç²Fr8 %³"}ò Z©É5`­Ž9×L=B=v*²Š­VMØMuZlýÕΜVX™RDLlæXu 6[Sååá´¼?%(…ÝCZ˜†T|t"„5‘XXSÀ0oû˜p›€·qÂëý·aÂõ>að ! ¨>ù, Mé`~¬=LÖg_žvÕk¶Þ»„ÅT¥Yú¬ƒ¯0š,XùšÅœ:VñìT˜‚GJ ëºÎ!Ek¤a ˜àAV|ŒÙ :‰9;1œetÎs)Žˆc›g- “Lϵaa!xôUï$I¸ë: cÔ¿2 S¢Òbƒ˜…ÕiŽbàÉ(Ñ7ûŠ0‹G^W¤ƒ¬÷:RBJ ç¬,]•S¦ fè”—vpމ4ò^Ø‹”dò?Ž£ŸV™l;œ.gt—g¸þëΰݶ;ÃØ§ÓÏ/ŸÑž¥È4,L?ïâT¬û8 "bðS¡ìg0´ìsš d)Izçóç^$‚—Óiö>2œX)«57Mòš2“ña0LLãÃpÇ0Ls ˜"¼†; ÷» ¢"Ktf86 kÄðÛOâ5ޏÞÞðÇà?þfÒíºh8²Ç ÆK)¾¤!ƦBe…Q¯Ç¢¹Ñ:ÇÆ}ðùóg|ýò3žŸŸÑuz=ÀsN$”¹ÑÏÏIQj³Îá1 £z̓¹€_Ì °žwA€ D°Âðó!àú¸‹!ý8H謃ÃNñõŽûmnº!ÀÜ_0¾]uê=àq»#ú!LEê<©—׌µøûïÿ„%Æß~Çïÿø'~ýû¯x\oœ18÷'°20aG1%§¤éœº±2[˜Àd` _÷yÛ·‹ßÐ\¿fy)‘0 ÆÉÃÎg‘ɾ^ßÔ§,!z/€Öà1†(¡!QÒKCŠgL:”$8• 3"ŽgÎÊÞc`“`Yüg-)c2xŒcÜôAιÕù¿<Ç3û+¤$ -Á;f+q–¹†‘b[iô¼z¯Eªë«žLÔzíµwÿ–EBØx“­YRð–ò=å¦TUhŸbJ»ÎêÏ^•òÑ¡6C¨4äþ~ÍtÌÔâš>ºž¼ÔRÌ#_ž2´…Ì"Ì:’ÃèPzõ^Dký,@° @k±[ ѽÄ–'”Yýþõûšì{,Ë}j1‹J÷˜u{àu‹·7Ak­«æÇ}VX‘4Ô?OË…¼ %(Öœ‘çÖGe (µYc´/+-Ïgrsø@‘î™.¿>ÿZùÔH˜*…vJÒì¯iF¦DˆÉÀ#aJŒ›ŸðzŸðã>â:ÂÊ À"B”©[TÏ™qMCËáèÙ£ÕXîuÚÊë·o5-à@Y C¤{™IeTš¯%R‰(7$ÕÄ>Sy_±zJ–}زJsÀÒd2Á™Š[šåL Î賕²1,•ÄC ÖBROö8#ì)m\bòâ×¥¦ÀY‚!rD9;2ÉH_;A“«,!€AÉ K5ê{°f!ÓG5of#Fø¼Œ¹ï:‹ÁÄ1ûî./èŸ>Áô¸ó3\w†u=.—g<úŠÓÓg°íJm‚ù> seônÃÃ4"RÂ8ÍàU¬tf–„5סï{œ²Ï•´gO¢®H>a˜&ñnJ Ó8"è„ÙGiDÓˆa˜0MÆé® ƒäLaØ<î£W„®³8u=º®+2­# >WÃ4âíú†Û톛þ;„£Mˆ!F Vð5V&ìâe“÷¢Öà5üuʤOQÌ÷‰ð·¿ý ýÉáÔ_ŠOW®²dpɲˆ$ôÞãö¸ëõ¼ü^c$R~Fü™äC%u"4¤0 øÀ¤“pýÌ$_@‚‰¦€˜Fxö`6˜|Â-þ1žØYõC0yõ›"ÈœÏ/ÚÐ1¢x{}Å4 øãßñãÛ7ü×?Ç4ŒÀ¤rÊI}S€Ň ÊnY*+4„i\&m•Á°YÖô3X<B˜&DŸýü¢XŒê–SŸY(“Q5`I+‰™¡ ~W§ÎÀ²ú_©q{öBbHwK*…V%6©æËzºå'ÃåO"‘ ³VNÎ9D;€­¸dé9"ߨg‰x^­UGýXJ ˆa×ǵeì¾fåÖia­¤» Ôä€,o³´cæ¯~_Xe±´*â‚Z»¤ôÖèp)©—¢œÆ £×²ÜOW±­T/!gcN°Íõ8Õƒò´ñ%úhQ˵Uûå~=h.¢5MýÞ{¨½Î²ßúžæ~"3/÷R3s®­ â]%M&‡y–~cÇ|}îÏMsíÒF¡Sï籡(ZÜâU¾fnUA émÍ2ÜëujÏåõú™ EÔdD­{ãµMƒIU÷”µU«GlÉ[ ±ù÷™ÚÕh¥cEî)÷,D)[Ï3#†¥?ßú=Ú=i×Gübfou’]jtäÛ†`h£˜?pVn X´XMõ$`ÏÄö½8X 63¦Åæ¹g:ßÚ€ÖŒ³Ök¶¼“ZÍú&†¼ñÙÖ_-&Šë¼g<³ ,aEØ[ä£áWµŠÕ‘¿5c°M)å%“ã5½1¨Ä ¶˜À² ÿ®„D¼˜ÂÌÎëmŸ•Ú(!4&`ŘŠ~‡IÅ¢?gÚí.#'KÃê‰R+™S®}\<Ï-ÉRŽ+^Gtõ5pYïQK€*-eÄÚ$ä©”±[É*-uÚMüWA¶˜¼~~·ëeï,îGNo >SLð!aÃè1zÂ8w• ¾=&¼ÞÜÆ cF/ì•$FÝûX¨çq›Þ*wö=|0]“õ{c ,–¸îå ükÊ.tšID*%aÌqnH'£ÒBKÎèd°2\ï¬J{ 3–ò !JJ)ËKQ¢ÃÊ”%Ý#4q×ûPÒ‹{þœ™Œ¥,Ĥ>NILž“ȋԚ]e‚¦JƒJêÃEZ(×&ï…©°!bŒ°N%‡U½AÚœ Q‘`C²ž:DvðäÐÙ3ìé çË'œž¾âùËO¸<}…-ÀGD")¡ û4 ¦I@ŠG˜DÚ—DØ ÌŒ^½¬œ±8ŸÏx>?¡wb žÄ™Eʘÿ)I†Ó„èÕ¤}ác(É‚ÙçÊO1aI$ %?LS¿%ˆ×Pgœs°l@ˆH>UGøQä`o·7¼ýx-É‚Ó4æXgÈdVfÅÞH 1‰Yw¬jº€€ƒl-«³7„ˆ"lçpyyÆçÏŸñùóg—lÙ—­µ°¦ÓL`ܘ<|ðð~Â8>ŠQý÷×âÝB1i?Ÿ= ²;ÄŠ D†U+"È›X=Ö"¼î¯Î2¢3I¼›ˆµñ¦«5 Å Þ&ià{ÓÁø1L˜¦Jšd}§4a˜!q6½ ²ç¯«±ì!i+û+Æxö ̨©?ê IDATxÖ¦ÉunWþZÍâÈ÷1øé8PR·¬H"’2â€ɒÁô•¯›ìݳ„¯&峎8Áijm "É6ʼÊÃt0ŒÕó‡åü0šzkõl3,Œ_ Â*”ÖfH(µ÷VšVà}kfÆdÍ#a;€C²ì}£@ˆ:â¥g·lxÖd‹=ë›¶¥ÃªžHŒu"z~osú¦ÙôkÛÚŸä‚°ª÷k ò( hÝÿ†JÖJ꛹´c åç1³}È(°™3œ$IX˜m2´¡ $¢8ßßT±à¤¦¢p˜*§ÍÉÃ5Hâ“)φÚ&ĤkY¯oCª¸RÙÕ5lŠ 0ûD¤½!hxŒúœæDP^¨‰Ïš1 k0J™’/u’Õ‹­ˆ¤O“„P@@Iæ%`i&Þ-¥Õì6͹>øÿû&Æ*g4_8|VƒÙZ(f‹‰´Ç`Ø3€ÞK>[ld¼N¹±éÔ²Ä=Sõ#Ƕá|¿QßCÊ?êÔú§–C½×DµNïM˜²eKz¹'«SEZJõ„u£®ØJERÓôøA3Edþ]¼yš÷pGº6O"¶,µ–œn<ÓôøÚî ÜŒ«ÝJ×øp“\Õ{ÞYe‰î±¸jsý=éQúãÑ^¶–Y®Ù“-²#Ьm¦wÙc{“¾ƒÊՑΦíA•‹–Ì@*¿Ÿ¶)ŠuZá 0a|fyñ;® Õ{5r`R:LfÍ’ßæÞwð´få; S t¶5ñÿQ¿*õš<áá€ëðzq»{ SÄКB”èó$ž{³év:Ü{?’ŒÚbñ-¿oïG Z ÌT½„ Á Zt'¶Qe¥¤òõÃI¶6q–ůJ–à‹µY`Dù–ÆÒPöK"5vG1‹¢¾¿©<3¹ð7dà Ž«4.‹Ù¼H4Ùdù§Q³_JAš¬òŒÅ2§,‘U }ñª Ìéz)ÁÚ~ö¨I"UÈÁ [ƒ!¦D rèûgœž¾àùóŸðéóŸÐ_>£?¿€Ø` c@ìÁlõ|’†~ #îÀÑkÓŸ"|–9#@‘µè­+2AçÎ}““ÿ¶•.iœ™UùÏ<âäÅ_K«ÇC@‘Dyo$Ÿ2Æ?N¦Q&ô®+Ò¹ÌD cPé—ü¾ûýŽÛxÇcð¸ß1 âä<ÜÂÜŒ0„âǺWp‚0ª¬+²ªš¡Ÿ‹"aÐ$½ît“öŸ~ÂçÏŸáÇ©ìåÂFV“]>ûÁc¸ß¯x{ñÛ㊀TIb¬FbÀ0Z¶°ÎÀŽ#Œe¶HFž·èlbõ÷²‚fy e©–`¬;õè4%Ò¹ÖH#Nê5k\ â0áf˜þ>€|D2 ¨Rœ±è?}‚ø³1Ät~š&DÝç `¦3KMJܘH€ÒüœL)Qaú=Â]×m†>¼ü€Ç4âú¸ãz½Šlô1•¯û)Îef 35$“ö(^[ 86p–q² ¤I÷ùg¹Œ*jïàü|·êÆÍZ×éleƒDv’•1fÊ ž Ü©”;û*¾Cøi¥®mVjPª%aÛHÄ23±áÕÔ:O `U [jÙ{°²áwP ´æqÌ,÷ w6 ·$>eˆ ²5¼Jrv°x"X'͵`,)°Eˆ>Ë:eGáj@ Ògn¥p9 ðÚÔu'´˜6ï%%¯SòÖIñ-‚Dý{×2·mÈ…Ö·ØZ±Êÿdo{Boë\nö˜-‰Ê&@;€ËZ-S[¦äzg‘šWª%JÍõ½7¼oÙ}¬ÕKFÚ(xÖ½›ÔqcK²çu»V·-”L=`+µp½ˆÍNØø^g/ÇÖzŽ1Š,º„­S¯ú}f^¦¶Å{Fë­E¸6‚omâ{¦à››Ó!@–?ð‘¼m/9oÍ«é ÛÏÀ•än•ܕŊ̄ µ8ÅTüвÑmþþ‚êTÓÛ‡ÀY‹yvdœÜq˜ÌqƒƒÖû¡frà{tØZ­Eº¦U®æå f¼).º9uT‹›ïWjʰÊ)~k–ÓÞBšB÷b_©’Z%4š¼€€¦,u¾Ví µ\·“kÔY|¶l¸lmsBS(4ÕsÓjvy³9αðÿÊÁÝZ?Y·öÕªÑún6èàÃýe/´¬I:f“e öús¬ ÷ÀþÖ&íöF«õµ›ž·Y³¬†Ð”8"q™B-÷ ^1•æõBD² k€/ïD%cýìî…–¤"J rMCŽÎ>˜0Å9$jÇÐVG+Æ ËH ðn5ŠQïgšëØÒ+Š)ÿqý×êyöG ˜ñ!¥ãìJ8'Bf@vñ¾2;)÷¼Ñˆ¨¿êÖCÚÌì«ÁËÙ¿z5Ö\Ëâ¢V8µÖnfD•²—:ÞpaÇźžÙ¨®–r;³Â ò{aZ|Öµ |mâ¾`-•Læ8ЉՇ:ª¢MÓ®§ÕC¯A¼9~Àz﹦RK­@´Øƒê° \±ˆí¦'ÊÁ 90gý>ækI°­ÔÁ=IJkºËL‡~H{Zìüóë¶i®w$;õÂÞ3©m1(ŽüAæIlú~|QοF¯›)‹Õb^›Z¿gò·Ç`kir÷’×K­ ÍžüŽp(½z9·ç³U{X­%2­ÄÃ=6Ê",ÆÒ‘—”0m6ß=íöâZ§c”¸MUö×hÜ%SJbšlâKcÜAî!õ ‰­7Äå!#è‰p(û¤]@“÷ÖaØzfÖ@ÄÞ$i,ï¾~‹™¹y-¦]ààH¶üFéž,x™bvßÿan¯Ã=Ð_^o ~ì¯×uܼÿµ/~6ë}ÿ9Ø+\>"÷DÚ²hŸ¿š`µKÙÄžÞ»9ºÎS<ä|Ž%„!’Hÿò>–e[1&L=0„€q xŒqN¼‚Ì$O¡ÅóD¬h‹•ìøZâ]`kޝ^®Ÿ=ã~1^Gi:lIiƒsËj aR™,1´gŒxÏ@¦áŒYn¨nð2E§¤þVTRÁŒúl9+%Yv˜†x›x?ª?Mí÷'L9ñÆñʘå Òe†yaõ°2ÙwO½µ8“ŒE¦•›œ…ç<’J]Q}.”ýI$ülX€H“Æ]H Ãpƒí?áO?ý‚ç/Áç?ý;.Ÿÿ {ù¢3†)M‚aú}HˆŠ?ÜýqCŒÞƒÇä#|Š ¶°Æàl;œ”ír:й d 㜫̔±¨mrÚ]Æ?aô0ÝnW܆’Ÿæ³œ qÞʶ‘Ä ã,ŒqHê­“å±!Nï¼½ý†Í(&åÙ„›R§Sœ,”F ¶®}Î$eUH!–&?›NžÎgœŸžðéÓ'5iïÏÙår)×ÉZ2n!I#Š©.4&Üz\( N䎘%žÞûJö6'…:çôú˜E`Œ‰¬FïÂŒ›Ò„1 *w}éÏ8NrNî­a&‚sÑ[ø8ú¾Ëk!.Íé~˜TŠ›dÏ™‹ÑvJ*ÏMux¾œñôòŒÏ/Ÿp¹\Ê`îÇÛwüþûïøí·ßðúúŠûýï_ »4XçóYÓ.O%œhüxéè÷×øöú†·ÛãàUÞ&l¾Ù&)")³Œ‰„yÅF:ÌèL‚³š:Hº‡X‘/ç8÷¦…G\Ðò ¾‘²^3ò‹¬œ²—ÖDI˜‚ $ù¯É€$=Ov'“šÃ¡ÄÚ’a¯Î¬ 5#«ÖÃÖ0´gÿÍú÷T9„$©G Hà (UÌ«P€®Z!5*`RüÁX*ÃQ.~Wq‘"™}ðœatN؉¤Àzñ¶’Í„06•]mHMÞY„°ôZï5{Dì"üÿ&ìÕÍïZžÃ{Ô½ZöÈBcîEÚ)ík`mÓËUŠ˜–¯\KýTKüršÝŒHñ²Z&VžW„ýþZÞ7¯gîÇj ¡u2} X¬Áá:$aîƒÐôV¦wêüu°XéSl&0îÕ‘ëu^{$±(ƒuç\¹뽤ì hû\×ß×ªÑ ëyý€µL»òôzýýShïȲHHƒn›LÍ?jpŽ2n5Ŷ…DGGÀÞÚÏ©•ÊÖöœIûôÔƒÅwtŽ”#°½ïÿWþ‘_Ë € -´´ë¿ŸÙVád\3øÖtæzÓX7€ùAüˆ4u ^49¬½†Q«¨H;àg}à¬ß÷Â3N½®À± .ïÉW ëu¼³Î©ÅèªÖù;ÀÄ{×¶ö±«üæ½â ní?°öÂZRÇ÷‚öàŽ —Y2·'ï’ÏF»p^?GŒ®ÍÖ™–Óc\›ÍšæD®åï^Jk ².HÖ‡jË «WX3À@ûÓÉbЏ¡Ôg•+ÜÜ7rÁE)2±2ʤ†Ô5¦X ï¼ðSÄä#†)a=Äû0bTÿ™à£HœÁ§€¤æ·Á{ø0jÊ"€°ô>ô1Éý˜Ê¨SŠöÙùéC^5eVo¨ÌD5ÊJ"õ áìIeP=†³ñ:Tþ$&ÔLuB–ïÍ ¼€N–£¿giŽø—0 x*)ÅÙÏâÙÄD…}…Ì Òæ5q'èë6ñA ä×YidRìJÅïÊ ).ÒœcðšzD¢›$q7 "(H¤h=º§¾üüWüüË¿ãôòg û„dÏðIžýÆ9°µĘ‚G *{dÆ8ÜÀRù¤± kNpÝ §¾Ç³ëq²úÓ¹€Vµ1{9?ŒNT3³ÈO ¶€u{`un¸=Æ&ï€Tƒä ¯$€BÄóåE Q+¬•˜S€W¿¬Çã†ÇãÛí†ûýŠi‹lÅ _N¾ô•Œ ©9ø+rM=S\Jˆ‰TêáŒß§Ó _¿~Ååù OOO‹TÛœÆhØ©™½Jà”ù““Ú2Ãè/g˜ÎáéÓ“xïqÂ4 Æ0âñÔC* K΋Äs˜ˆ×X’Û\ßÛõð1Ї“s  Xðè­;·œ±plГAG¦xw&‘…ñç½ëß•=gˆ=5-2O¡ë-HÍÓSˆH1 ªiú\ßáÒŸðürÁó§OxyzÒd>it~ùå|ýÓWüõoů¿þŠÿõÿü/üú믈> ï{|{ýs3pßy½óLqÀëí·Ûß¿Çí>àþá“Hȳ ð”uS×ÞÖÊúéŒãÆ0œ1°†D–¬{“Ͳ䋟ŸT ÊÄ\çdFCJµcI5-õVŒ -†?K‰ÙÌY•õ¦ÀŒaÀ08µ›ø¹.#ü╤ɻ¨Ø'Ù,ÒÓë”À ƒx%µÍ —V­SšÒÛ‡Ù§8(o¥V—÷»L€Õ>WN‰D܈§‘ž+9 È°H#¸0x51–€Î1¬f ãöo æAˆ©/×QN´ú¶kØÚ¸®›ÖІöÏm"É^-YRfñ^r 3!¦¥÷XíGk–ÖºgͰVIýÊõA+øª5Œœôõ3Qe r¼+!Ìrêêù¬C Ì:}{-e«¼!Û*±mNÍJªkõ=‚JVvµL×çäÛ°é›j"ÁžÕE1kÕÙDsêö¸GpÙëæß›á› {m-)]¯«úúÙb6¶Ú°4³ƒD‹#ÿµGP‹ZØbà䇈TÛ¼@ô7‹}¬:z{”Åõ{©Ñõ¼9®QÀ5=v½x[Èá-o½Ù×&âõ#ÿž|Øêí]–Z‹V|$ÁÜ^G‹Da—¥wè§•Xû/nʳZ¦”G¾_­÷ÁÑrOÀ v\×»æd ®R¸öX1ó÷õ}N[ îRª•œµ„scXïç¨Ö–_ZyΠé‘Äv`Ópñ®¨|>˜~dJ´¤°Þ؇acS­á=ÿ†–G@ëyY{´möŒ E˃®5iŠÑ2‰DVÕ6@i¶Øºe’È»V=¡š§ÄsB £ºï¤æ³Là(†‘Ùûh PI±`ªƒ…|0c÷ZµÌþ×@›´¡ØnÀëâg•š 0â±j«$Âõ~À‰×sÈ^•Á'°Ü¿bJÅÿj „!$Œ!`ôÀÃ'\ÇˆÛ Ì«Á„H caaò1Q¥‡>ˆQâÅP<*r½=ßÊÖ™ýž ¬¥êw}]”‰4‘¦x©ü¢Hès aT¬ ” K2)'€£&e/’FDš‘ö°²#œa•‰ˆ RšÎù5ëô!©wçÂ]’d#‚² ù†! ³¶47 ‘bÚ\ü’› ñÍ‘;,¦Ê·B„×ë"?#ë‡ !… û¯™%—a& úዤ49×Ã?ãt~ÆŸÿúßÑ¿Â>#Ù wˆlAÜdÑ]NŒ¹a1”¦ >ŒZ J#FVÀ–®?ãôôŒ§ÓgãÄ(½ëÀUNÄ$쮼¯d“îiš0G0Lw\Wüx{ÅívÅcçôF}*„qHðòä:˜“‰¨‚äÐÂa¸K:ßãkf] pØ BŒaÂä›ç®19Žfo!Å…¼7LQ%‹€…˜Ò[kñéÓ'|þô///‹æ£¿œgF”1&èk…‹TsÔët¿ß5õ*è:Óßdˆ.®±<Ï2½–Ká“Ü™•t»½Á{ç,ú^©€„ï7ÜTžéŒÕ$¾½;ÁÙ¾°±z?Á…¥ ¾. DŠ˜bX@½i’tÊëãŽ0JÓÃ00ìä™4>N0ùL‰" #Šç # ¡€(Àµ³çþ„K׃0ݨ #¢Æ¿_\ÿÓƒ ‹„¿ÿý︽ýdÃè1yñüˬY'nÓ ëä.þoÊÌ+Ò¢$‰§Æˆ×S„ã„“íÐ9†K† 5 Thò©JÌä|^ÖÉõ¾NA“m+•è-#='àf@=û‰LÁJK6ò;\°H ¡©èI‘²…Ü« Á"JÍÆz#·Šs-ÜdÀ4@§Å9‘°{ö‚¢fl©DBÂ$>„‹=\`)Â@øL©ô@œY¾ „P5(³éX â[&€='‘ÎFü5è|?…åË<'Ï3äþ‹„ZµwU¢ÝáånèVâÍZÚëUë^g]϶šú=2B‹ÝÃ,ûV}VÞÿפh”ŸÅ¥tVýåòý”ðR'£I¾ÈßãKmBÚ˜7Rµ2£Nòûç”´fc0σŒ5€5÷kK g½¬{ñ£Zý<.%‡ËŸÍ ÛŒ+hàšnI¥†õZÚK$\ûSÕ÷¶®ÿ›)ï+ÐhmÙ³öÀZã]×mêê3 ›µ•z˜-ö§\1ÂJÄ(é†+“„"Rôóô@õÝk‰à}Ô"Ñ4£Üi‘гÄHSª@™::Ç y ³Ñ›7ô9¹qWN²ØÚýJ ¹ÖxçÌ,ÉÅÆØÅÅ\#‘’ŒV?hq!…«À5%²µ­¢#×Íü‘—Ñ:Æsu½xØ·Æ~ùsI!`›‹O­—šÌ¢Ñ™ 5”JérCΦÔk  UÊÝ̶[¦ ó-ï›ò|ÿr£›GLÕ&.© ™*oŒc’µA™ÅFdeÈ℈bÑMdª'g6c^›fe‚¿ñ(£Cƒqîz¹Žr¼ÏŸ=†ÕÁ&”)'¦¤ Y‚SÜR’[*éF´™ Hs£éU)oŒvaó3ŸfFÍr HïâG&ÚecºeC%þ;¥ç’ µPhý3ñ#5˜mº§g¯¸Dóg›÷YyAâÐƘÒu%fo7RWTï£$f3ò9ÑÊÂÎÉÀXªñcù¥Ù¬ka"UU¢ßrì‹ÈÜÒjDº/¥¤É‡™Rž¶$0T©¡Õ5€Š„“Ô%C> !MH˜‚ǨàÕà SÂ}¾ÝF\½Å÷{À÷·÷Ç„1<€!ÇÇ„à#ÆÉÏ…"3’þ¿3•¯EŒsb &î´ ¿üÿ>…âk5¥Œ“úyDaD%U‚Î쮣l©”¸° 2JK§ÓY&#^:AÀƒsï$½ “˜æ"À#`–‚W† æÕL `R„5:¥÷žØH2¤³( ‹åùå ãøÀ ^YÓ4HƒbÄÃ$)Õõ^X$&ÎÄÒôRÊi†$Sü˜`Œ® ²¶ ú ŠGKg (¦à£È(R{—‚D:µDˆ L žM‡þò3>}ù ¾üôï¸<ÿ ¶D8L©CŠØö°ÆÖ!²A4ŒBR£×¡Múi ]׉ «?©×Õ§Ë›=®jàª~™!J2ŸÔCc•ðvÃmºâûõ^__ñ¸Ýá‡QRܬÜãáþ(çšÑØö®ëÐY'õ!À«Ö8Žjrþ×·W<LÃ}–üa BœSt,ÒƒY˜TšZ7y®s`„æTIúq˜ôþw=>=}ÁËËg|~~AßÊùkŒ€n]×ß”ù9HQ ñ.fõÑgO¼æÌè e1‰a%FTš“Ewêñôò‚ˆ„o¯ß0Ž#R øüå/øóŸÁŸúŠ/Ÿ^ðùå öÜã÷ë+þxûß~û ÿõÇwüãï¿áõõŠ®ë)áu¸Ëý$ƒÞÊz^‘(bðÞÞÞðúúŠq¬³=N§ÂöŠ~9£$5'RpE€Ê)Fɶf{×áÔq¶'Y÷ðXGñ³ÞîàSBJýùg¼ýñ;Æ·W¤áÙˆSDðÓè1ŽÃ0‰|Õ{ø˜=Ò¼Ô1D˜¼!ÁZ {p Xq2„Î èX¼®«%eO ó6hB_DÕX§•a. Š˜*kaHk- &MØ"±@♩ŸÔgNP‰»HZǰJ±P§šý嬅3šèG€Öÿ,kÔ^•É…€ä§âï“‚/¶-Bô±0 ZC¾,•¯ûšÈ­³/×0{ÿ¦$l(JËàT’Ã)zX',*°UEÐY gœÈ¸uáXdã)EõQzg…Ùk€Î 0iuð£ÇÉYýy/IXv†Yü½ÈÂY[šëkMYûd4í›×ÍÁ¤ÒHæáýyR¦# êa«ÈÆk{ž<ÜŸã.³‚ö‰’Îú:‡•íXÕ…Ì„“þÇ ˜Äs-Å„)ýÙ•!N¸æe-Œ ±ÙØ-³†õ<̓{e&‡Ìˆdt®†Ð+«tÆ–¶ÌÇ€®ë x›G@×÷Ç ¸H9µêÉÅ <&Ùël ¡J F%[*é´ P*Ê@&‡OÔàM‹E·ó³‘ßsö«ûâœë«ç˨ç­5«ú£ºõXÈcÕ‹e%%ŒµÉ=ÁšÙÓ+¦¸I]ך¡bÐÅša™ó6d“ì™¶H£¬TzµüÔ¶ Åxóµβ¹àÄÁ=ÿ¤­”åÀg‡nHDÅCà¼ÊMß>D  s±R:¾æ‚ïJp×lÉœüRï-fR>À×hÀ{ëô‹> IDATÒÕ#Iêú3µL.—÷2¼óõt5|Äþ\oÚ-è‘wÁ¿špØþÞ¯þ>J­<5ö޵WƒLBœ]y>e#OJX™` xYÁBæ•éÁ‘Ô˜ŸJÕ·O»âÐò}ª4ÞÜsš¥ñâe0'LÍŒ# ­´]¿³óÕv"“GˆÀè' SÄè>à>E £Ãöûˆ·)ámxø„)1‚ׯ €zmú.¾0Zϧ„ˆïOLˆ´ÏrÞcƶR©bŠj¥&§ “gšUJss£¬dÄìI’}­Ä̰$ 2†Ô EtÜ¡ëNÊPce Ü/Œ±1ø0bFeA ÿÞÙc`dTk:ÈâܨžN'œº3ãiŒ¯wœŸNøË_~Á_ÿí|ºœá ÃÆüõëüþðýŸ ¶øöãÿùŸ¿â?þçÿ‹ÿøÿ‰ÞйÈX$bŒ1"><0 "â>¼I:å]RüR’ÆÌ;¯™_Ô‘Ù”<ÆˆŽœ®eÔ2 Т >çlñî2F â1Ñ:DÁQÍ B„í,.§3N}PD¥¾÷STðjÂ8X5L#¢Nèƒ9Š1±eÅ è-£ã$ÀE":²Œ ćOž]n¦b­k\—CnÔ¿/iŠYHmÔE}¤Fùª}+†Ì,û;±\/âôy\zäØÎáõþßRg¬÷ûzߪ«Ùçš+ 3¶mÝQΘ°0ÏI¯ùì&PñŸ[ Y½!ÆÕ¬çˆa‘e3Eþ? Z6r¯)§Ù@ð`£©‚ ^‰ü\ °9³"™ k®|=Ë)€²,YR"@dAfÛåžÊ{¿›rŸÌ<ú*¶õú3…S_'Z8©ù}[ÍRÿ€x‡™•’¤¥0iÚ4P=˜N»I{5l©Mˆ7gÌZmÓV^Q2hU3Œˆ lêµ’Š Ð#ЋT±ÇkÏáÅk¥µDw‡ï-ÕÞ?5ñg«žX~~ÀT˜K³-æï5\“bŽzŒ#åÒ^²f[k•n™IÖRˆÖŽGeÕ'¬I>õ²ò3GïšÚ7Oü—ß“©nÛMëH×{ä µçsÔô®‹ô]OFÃÙò‹ÚÓ&·LæÞ5ˆ^%´ÞµÄ2íG^<»Ú ûö½m醩‘hÕz¸² m øiÅ„5ð­÷׊ˆoýÿGÀx‚í¥oî)½>¤æï>JYÐ9í>;kzðâ!O±4t-¯›Ùã »È,Aô¿õ[LÀöu CfÍ^“ýž4q_ÞÃ#Ϻ=IñQHÃÞ^pô=­˜Ý½½ë(Ñsù¾Û{-ñê^­e„ùubÚ•×ë`}æÔ@ÂÌöŠÈ¾gäš,)d—@0믛煬µíAºføêzPVhNù‘„·Te¤„°ºŒ…•Ÿí<5o½²H%*Å863£HýB^MƒO|À0z\°n÷ ßo®ƒü½O@LA™¤Q™.±iÀ›¥(AYšÐ‰ðÞ×Ånn`VRÍ’Øft¬L Γù¤@e4å ©À({Š( ¥c˜lk—e‘ñ$°1°‚õÀj‘bj’ °¶T½EúÀg/^O¤,Ýì§)LRyï}߃(¨g/“CǤ¦½ÂË1ìù~s(“×¶Vä:^Ùà†XO¯†ÖIž¥˜å¨*GŒHð1"&€©ºï³kÀË׿áòò ¾üüœ?ý Ü¿ Ò ‘NuÑ‚MvÆv€5H$þ#F?¯¹>VwB×uxyù çÎx\å‚¿HEòóÀfáŸR…ê$V ¥£O“ãL .ÓÃ'ñ1 xMM„ÓIUFù$ì­q x<GÛ톷ßñnˆ“Gˆ#Â$Æó)ÈëøQͳWE´cf«y:ç麰[Ât¯dðóT87Õ]×áéü‚/?}Ååò, ÎöE*蜃Óɳ¤fÞ!¼Þš¦ÙTÞ€›%†]™ Ù‰a8c¥ºöAYý§Î¢7Œ!$¤Éãì:\l‹qp‰`B§?=à½Çõ¿~à|>ÃzôOOø·ó|ù/øÓÓOøÜ?á?¾ƒI¼£œëáÈʺœ<¢"}Œ¸^ï¸^ïrOLS€1†Û ¦îÝÜÜg¶^xÏ@i%Äx®#O˜¼Gˆ A¥1ÆX1×Qü©4la3£ï{v>axHb¦÷ƒú­£Ç4Iˆ@ˆX„×H©X8ð Xœ,ÁÙ„Ž“îAIäÉÆ(ëå>­ëã"ŸnœÑ•¡½[WÊ™cV)»”d}ÎìžM™W,ãÚÂuÿ%}†ƒJô(ÁW׿0‘ÖZ/éÐF­þZƒë¥\pÚ€ k0KàXæ5³VTè¬)Uòú ©wrmõÌÍ©ß1¦É²È½Œ!8¦œ1æ‘ÍÖ!@«Š[íïa8k`-+Ë7Ÿ#ÂæbF‘IçgÔSz4SɵHÙJD±ÔÑ…E‚$€ˆ>'›lžmDŠy¿JF%dª¾˜SœÕ} ëäq2eèÀi®±$ùv9 Î¯™YÚEU²°ÅY‹¤%=ÛŠT}ñZ¦·;,o( RœÁ¥Vy –Ášµ·ôÔ^™>K¥l¡raúlp…BZÑkæý@¤Õ´KJhõ¤{–E-RÌ\Þ “õŠwñ”#E‹4°– ·üuËkìx{XÌF©G¼‚Å›wéñ§ÙžÒQ“ýž‡Ìžîó(ámu‘½{ö|ªZÍ«§˜pãîQÿZ(óÑ¢Yjä± ìiL׬¯–wÐ{&ù­¦¯e¾gTFî%¶‚50öó¤(ŽYgmr!1ة޻wòùéÝdº½ß-),t(…ÛÛ¨6¾<ÔHêØÌZ wÛMî=€0­´×T’üõ=ß«÷ÌÒþ~}è­5ðtðl%yÖû×G®c Lýˆ‡Ö€víw³ÄÀ£éÕ0Ÿ€M «ÔÁýtÀMŸW" ™4'&ñ1j\ëVñrôùööÃæ½ P­ßå@†*Sb°QFYoÂbÔ”ð&TSfññQ@¨)>$<|ÂÃG pÞ®×aÂëõÇDƒæ Œ1Da‡(0±öX30? Òï]§Å„DF'5,6ÄH&{E•!I.±È0)Oȳ3]_&ä’ h ªè,ϱådŠ мs¾cù¾!Xk„i“Ê!ÔÁŒã¤ÒïœH¥2U¤J¥1LHqÐ x@䤨«L9CVI‚°Ürz]¤Y>TËõcŠ –&A|ÏDêÛc˜ãÁæ„ó§Oøúô þòßþo¸Ógt—g$î1Dƒ)2ˆz½€Iš}¶`Dn4Æ„!$•&æi¬s®:ŸÏx:=¹ µ½íþ#›ƒaM>Ãëd@a98<.pÆ`¼x›^1>$$ñîlp¹\Ä'"ý„É hu½^ñãǦÁc¸ßôúy xL~Dô^õ•BL‹÷=p Dc‘€°Ão2╔ͿÓ(açóÏÏÏxyùŒççO¸œž`È"…²„Î:œ.ç*.]Þ!N¸¿]ñãúŠÑúüçä3r®õíHù°pÖ“€ƒ9ý/ƒfuøüò ®3°`¤1"Ú„®ï`-¡# ÃŒÞõ@4 {@˜XcñùôŒ¿ýòWÄA êq°}‡Ž…5?Ž#h2¸ ¨Ä}ßc|‘hÆ tňi »g¨\Vp<›ïþ¸_‘˜Ð_.8ù³Hn˜¥qaBò^𚘠Œ!b˜&܇1àö˜àc@˜¼W“†aèÞ˜¨x>YM”K‰àŒì/’>Gè£7ÂÄ’@õéãypѪÇ× ûš²¶dæ&Ã‘îØ€0 ’’È ±-t¢ÌÐ’ÁNP7V.¹.Í …Ö™ÙJÇk Pß ª9°BššgP‹Ý‘™j{ÃÆÙó5‚œCr6ˆLÞh­°­Ä ‹Mæä° ɬ]ȹÐ; c ¬ì&kíÿÇÙ›v9Ž#Y¢©ÅÝc˽jº«úÍ{ïÿÿªšêÌ ß$q`6 AŠ”<;ΉîÅ0»vX£Á4Ês›C+rB[˜Ü6WP7SÚ—ö,¬À´,ƒ!|ÍtK½b²#Ââ8欥2ÐRëƒÛµAØ*€SyçÞà¯Ù߬Éå–çz¼•z·Æ"ç+™åœe5FÕÕý[ÿ,¯ÂRè€S5y–Ò¾TüÜ#(,?_9ë^»öm®O—*£,Ï] XÊ×@À Ú’ Þö“ü?oô"K¿·åg‰´¥ÄûÉÀ®ýÀGšþ[ÜÝÛ*žïyÝÍnE Ü2Ö¾ÕèÔfl·@‚­À[äULjµié*}dmqÏÓå‚w«ÙþÃè#,­é8®ÓÖ’–7ú„ÎòM&TnÀ– ×­~mCÝ41gZÈAç^7*c+:³FjC@^Hšò~ÀW’ÏòyM™Íõ£’±¼€nT[lÆ{ ÏÜÛMoÒßÅC*ý(ëë :v$­rí¹ÿ*Ø–DðÞºp ½Åè›0Ëã›&£WÇ¥•ùþY_½®ÝYËÖÒ7jÊo½ñ¬¡KƒÕÛrBÌÖ»e¡²ö«ìêv"$ñ’U–NE-Á­©ì§Iåä&Rx²sñ̪¥s§ž1¬ê4R!z¥ç>1_²7C'³±X1XÅ”8W%𦠤È$9M‰Sªëk¶n5UÖa’GJ¤¦<…ˆ1¤”Á¨Ð{àì çžðzñvêq:÷8õ^$…!ùó%ÄBŒÒ yï™$á‹*Kbç|³Â:â$-Ć첬+ùÿÇ$„MAzmÊò9†¦lnš|Í8IXȤ\d“ŒÇ(›¤ƒÂT3Iö‘¥ Ʀ&…e‚®˜PUDº1Î&Æ Êè¼Ö&7ûBè£r\*ûC×§(t•’Çt2ÃíÖ&Ÿ"ÑÈ4_¥¬1À˜©Ð JOž‹‘"…RÔÊ=˜äTYÊd[,|0ˆª…;>âéË/øñçÿ…ÏŸƒ±? D‹1ÚÐ:V-"gwÂâbaT"òÂraÀ‡Öìv‡’Œ·Ûí°ÛÄßJgÆ•[]çÊ>Á™Ap,Ö)Õ‰#šÃÀ€ãe·s8°Î!’‡=NÝoçÎÝïﯸ\zøË(Ù€‰8"zI ”¯yy¯ìí–'¯Zã"E((5¦½ 0Á€’ÔRkaìÑ÷}b>Y|þü_¾|ÃÃáQÖ’uj·ß£Ýï’,‹‹ñ$a«®»àåå//ß%@1ŒqÐhLo-+Þb»¶]4iÀHC䣓g :ÉŽ Åßȹ#œkÑ4-·ÃápÄÃá£ý{‡Æ9VÐÆÁƒ0xaöÀÅöh0Z©çÆA!À‡V)8»Ç=$`ÈKð@òaÉëPþ=Žc2Ç8&pX„¯rPZ‹·•€ÂÌs–a `ÃégLbíd©s¡À –|Å–Y©2ãS§ZŽˆ’ŒPX=Ì1IÍͬîg%±ìg¿¬äϨ͢þYֽׯÞYJX›6ßS5ԽʲVÙ’ÎLœ5Šïì¬ÿɰžÂ‚ѵ|}šý]غÂ7’´ZNƒ «E’îJB*ÃZñlÔZÃ:-! I*Ø ‰rF£É,Ðtd’F˜åèF›’‡(™‰Å ÍÊ ¸²|j3É›•š˜vé“lVÔõØOüºÌT_&–³ÖÉ—SIè”X@èâ!U×e±X°eÏIr¨u¶ØÉ=Ob³C¥!”È—³ «Ôk‰YÃ…ÿ>JÏkì,¾SÉ6BåÄÌÙh³ÿôðYc—×{Í\B‡M¢Ì`Í?‡ƒì\ÉÔ”–®‹µE:®JF*,SN2ßùñ+lÛ†ÔÏÙÒüýº¾6%Ir’ý囯0}/–k•Áúºÿ\¾ÿÚÞ³N°Ù¶RZ#M¬(s³?ËÊ9EÏB¦æu‰ÆÒy.ÖÉ]Ö[è­xÊ[^U÷$Pi:ï1†¶Þk³)CR×Û:Öv«q^“ám^÷ÒŸ>~”Žxï}–‰’[̨Z?¿˜dyÂižܸáù5yXmÝK0ãÞy[2Ôrƒ‹s-‰[gà\KN·ÑÿUFxU2Çw€Þ[Œ›lâ¾öÞ÷Ε^‘<ݾßÖ“±¸×¯&‰+,Åzr9‡Ú¹Öž·-ðjK“}}ÍÕM¦T.¤>’â²µ­%bn±é6Si>°výðêÞZSÖ+­æÀ–º'%U›~ó ª&Ïm HO™@ªâ¿õ0RÝ 1¸ýKÏ äâs… œÏÅ ¥Ë ¨'Œ7×Ù8~x“T0DBïgO8uï—/ï^Ï=Η—Þ ã&VI¦æ)"øÔ@2ÝXIþcRJ”FHú™œÜ©SŒÊ­£‡±*ÉÚ¥@Ýíš,©Ä¶P)VX&´F/™…†H9Zµ¼Ti1"¦è¡‰:KbŸHjÄ. Aˆ lZ˜ö Ÿ¿ü†~þO<}ùÚ= ‡ˆ#H;pJÇÒm Ò‚§£o ’úGâ~ ã,Ûâ±Ýcß´8’ÇUÓ$¹˜VFÛ™éÖÚQ7ZËç°ê¦ÔQ Ò¸Sˆ£$îYkñôð˜|®„Ò'ÖÕérÆËû ÞÞÏ8÷âµä½ bêF_%øõ£€WÚ¨b$«+¶ƒUâ—f! k­ÜOJ!rY^”5Ö{RÇG|ýá|ùüM¼Ál ­ cÑ4;ئA³“s("Ž£°h8`¼¿¿á|>£ëκ=†Ñ ( i6z%N°úf' ÛÀT ¸,ã¼øÄÔ…e”AdB?ðQ|ºúq@7zföj¦¾dÊLë·x‚É HLÛë×ÉchQÇܰ¤¨kÉ^·¤EE^[Õ×›tE«õE JpuÞ䵪º†cM²kmR˜˜Ab^XaÒi‘f†•QYÊͅ᫵€W"-N¬_' –J@2'\3Œ¶ÉÏpžŸ¯·Ñfñ‘çýM–^/í<–>F뵯E ¨Ø}“ê(Û]+:Öýªk%ÊÚüªVÏ!´ðX^ôxWõ½¢y½^Yã¬Õ!5@º„Ôak=áZ}¼fž{À¥ïÛÚ{×IàØôós°œƒ%ßó·­]j†Õ-²I–Ž¯Õº[½PÝ㈇]™´ç×\— ºš‰µ¬»—)«K6U-ÞbkÖ÷i}=2ÁA-@ßåñÕøÃÜçLÍXË‚eéþ¾p@U3¼Ø¼÷ý]|2æU´ûò0¾ ¨,êrP«q¸µ·Ã|aYòFÊ•Z¢¡ãÌ4»N‹Û°î5L·¤M÷ÀŠëEfRFS<Äxñy©˜ ó”ËÛ>mËÍ)]ËÄv›b…kzÏd:Wì‡Dù¾Å û« ÕÔˆÞ>ŸÈMä«‚x•ZvuÞ1ó²bµ¦+¯+س¼D•˜-”4Õ$IÚ—ÌnQyµÍ®{ý|°^v¬6Äé;µ¹n6'Ÿ—ÓÔ0­ˆs­rˆò—Gpˆ2$ðª".c(àÕÛyðê2âåÜãý< ":xbñˆIÞW>J­Ð÷ÕÖ)n}b¥Ñlý4[ðô².yÀdSZNÌ6«54la¾˜”H™A‘ V(I²g!þ?.™í*­  …ä—hS¢`M’"&/c“˜WÎp1䕤d¬”f¨'*tÿ=íNXQɧªÙ5ˆA˜%)ùËk(öâ…R< ¸#Š`„ä•-Ò¤\’±”’¢D Q")(Ó@›=´nðé‡ßðÃoÿ…‡Ï¿B7ŸÁz‘uÐÊA¹gAZa$™Å;˜J‰ÏW³ÛawØ£u ÷Ø7{ñ JlkÜT€k“ØŽ ‰n–ÈÔw¼¯3æÉËK3ÃI]5É!xò"­´ ,#Fàˆ®ëqN²À÷ó ϯ¯x;½â2Œè†‹€JèÞÏ^õ|Kºq*$…,5«Êï1­+{gaIÁ2É=¥œ0A¤•ûýOOŸñõË7|ýúž`M#aJc·Àn·+’Äa0ø^Rî¼Ç0ô8_Þq:½¡ë:ñæ"EÇa=„²Ù¿S>ÚF»Ô(;h7XZkhg¡1nRªµÕgñr#à2ô?À 8 : npëà¡ù vbÄOèú§aÄïïð ÕHÌ(]’¾œmKý&Ra≴Z âó¯a¤Y‡i r@„aÐ÷=Î}‡îôŽSwÁØõCßû§·<ï8Øï[¸FÎEßx~yÁ¿ÿý;þõïßñòú.€Ø˜d«>ÐQWZLÚŠ\Ls„cç4Z+‰¡Îfƒî\³çð‡Še¿<”õ’¦aÏšì&3Í(Å´iÈõÈÿw9À›ö_ÖªÀûÙûJ7éï•ÿ”YÀŽ‹æ½>¶åcU]C5£x a¡äc–¿jYÇ%†2C® eãqá—ƒ&ï%]Ù:dñ–R<ùg%“µZ¼à¬3,ž…Š`t’NlY›­Ñ°FR'­NA­ óÊj3…r(Ù÷Š×âBÚ´eÂ,À×Ã]ÖE²7¯Mê!•$óÒ+¨î™$·1ÒªÞ5ÕÃ]¡çço-“ÿ]÷Çó~(…\©0#®hµÂMÁ7¬•p탻ž­ s3›f-,j9xYW`¦dÈ’@›†[ký‘Ö5n¡é×µn}of“€Qת¾šêzH¼L†¬uuÝŸ§I%øA•Þa2«Lkz~˜)©à¼˜HBEî -ÿ÷ªÇZùL3e‹Ë…º/_Z÷¬­A³{E™+bÁZjv}hõýaë¹æeu­ ç+Óï[ë[2°-YÕ½)AF—ï{kB.‘²ë¶®<¼¶LÝ· äÖ<–Aª$TkÀXþ™¥ìðÖÄäÚhñ6ƒa 8[2š–€ÕÚ>‹»­Ðï­) nR³QØ-pt ÜÚúÿËãZ°·˜5[ú ]K!,5ÍÁº²)0Uf‰+ ;üuú5™Ú-ª÷úgCIiÜ2`œÝïW ÄÛ Õ¬}iµæÕ¶U`js­Ye5bÝbëÙÞf—&þklÄ›’ç;×òKk™‚ºuƒ××gïÃÌ a*ÔŸåjcY2õªÏÅS¢çÈh¾ÏÀ¼5ÑúŸøƒ}äþ›@j• Ù“)xÚ»L²¨5É%i)Ó ž@¢B  Cdôžq Œ×S—ó€·Ëˆ÷³ÇÛyŰKØ9â³)¥ÉÅä5DóÔ–œö¨xé!±- U+ŸYcº4$:}fªO\&ÕF'iŸÉ…Ó¹Õ)½h–URc:“OU€u"÷R¤äg¢µ@„‰„F^S*“åô5¤K™äi’}¬g1Òc2{@üNhôÂa0Àùü^þŸRSã+ïoÐûMzJÛJl-f¹®@LfN(œä¶ÖêtíYX°€i¡Lã`Û'üã?þ_ìŸ~Bûð¤¨EĶ9ÀÚøHPDŸ@*ÒE®•Ÿqñ·jáڇÃXm‹VïŠ9{†Ö̈`»|ŽV[æëàÔÐÊ ãʇ¬Ú oŸñ~>Ij_0ÂÜáàçÉ×Ñx—wI6hí$CIÏ‚ŽòÛ&?5ì¦ñùÓ#~úéüöëßððð$^C0ÐÚÁ:SŒÛaE&„ ©|—˯¯¯èza]QL†*’vT IDATù^€­}‰ϵ€3â½Õ§ç5ǬggŠ(¾!Êh'€j㜅0hÛZ[ Á£zìž8#Üå²V®{ã`œE`ô=^‡Ï—w¼¾½áÏçï8wh(8'‰[ò‹|7×Yc )0"&O?žyIfÖB–ÐäûË&…¦y€i\™–_.'¼¼¼àýôŠýë_ÇFtçWøþ„WmÄ竵ˆáœCßxþþŠï/'¼¿¿ãý’@N"„Á1 QްFdÄShŒ"¡1À¾5h­…b/2f£` %Ùnf 1yÚlI”(øU©M©ÕYàhé­C)Ä¡nóþütòˆ4œîMÊž‘Ðp¶IÏÂ@+µ8x&Ó©A‹Úëƒ{©À¨×‚¦i®êÉ©ˆ…ˬnæé{y=ŠHª¶²Î+RPk…9'f"•A '/¬Äêµ2ü²V|®$$@Á¦{Ü&+³l³q}N#ÌWËž£HÎÓ½uI%VJfùüf¢e¬ |´•ÁIõ}17é5Ö ‚•ºX%r>‡fÎÚJ”›¾§gÃåÀ «2xª {~JeÎÇ;Ý»[^¸[àÓš·î–´­ö[¦É¯õÞƒJÏ-\hnųfS¿Ÿ÷ᦇ±vÓÊg+1½þù¥EÐòø—d˜ú3‡6" hMq6¹§P«‰K5ÓšJdÇMà¥ú¤>ö5¹a^'k–œÒë)†[,º%!ÃÖ‹ó²y*›Ö†éøòF»Ç¢¹×„¯»Ñ#éxqõ!fšå fyý•c¨SÚô 7ý+c£‰Z»I§|Þt®Ý­™ª…Š ßµÙ›%ÏÍ`ʫϮx*F¦ :¬Èç¦×XRüTJ±È@—q®Ð@óçÊ…w6Í H}ýòF[ƒbs­/_=èk@CÍf &/˜„ÌÏ®¥éHšBçhíç™Y!z(RÐeò57½^zCÆez¦™_Û«Ä·ª9X3½Ôê~^'É”Å;Î_óŠfž€+k­€hÉïÅ_Fd1:1­òtŽË42&ï,3éÉëç-?WÊÜeHn¯Q[¯ï8]÷š SI\µÖ%^¾¦ Ë=i6ª5ŠíÒ­P§qÙ,òJºi~Þ”n ÖÖ˜µbâžúlsXPÝód*lÈ9³é,±0…TšLq2I×Wà‘šI &6¤)l5³{æmùi-¬®rüZÂ8K5™{n$cð Î)DðÃ`)–‘Rk/¬>†1z†èp#^Î#Î=áûû€—S‡Ë@èÆž|j† ªD’VÎc¸ZcçÏtvK{ŒÎiQäZ«ÙºZ£’y,Å À”y°xÈhøÐ8‡Æ0G«‹#ÁC[ g“G *7ÖA3CLò+,+¥SZ˜¡¦J|Bb+£Ñ™òZgÁÁÃ5V"³µÆ8&«’ d0ö4?FŽwß´2­–x+™u³˜í3MÓÈ}*¡NM¯JþA*±Ë˜’· " a¬²-À-Bt0æOŸÆ·þŸ~‚;|Ù‚Þ! š\³‡6;ÄD®„dÜß'p„HØ0mÛâ°Ûãx–s-Úff×ÂÚuPÐÐÖÌÂr£¢Sz%6\{.ž%q¶¾rƒ7 ÒbÃ(Ò±A| | Œìqϸ\.¾9Ÿqz¿àýõ„×÷7xÐuúqÄ0xœ/âGu¹\p¹\‡q*jSƒ&¾ŒrŸ:P¢ÍÁ¥éÌk\ã$3 Š"´b|ûöûÛoøÏÿüØïŽiÍ2hšöûGXçàɃ5¡ë:‘<ö=N§†aÀéý ýù„q@ˆ£0à S, ËžÂ)‚‚Jç’XˆÅï2?‹C €u`…”‚™dd$RBe\gïñòv‚ûï?YX¤ …vo„m@ §®Çóë;~ÿóþ÷ïx{3ã¸? µFüãiK˜ö ÖVYXg'ëa®ç²„RzªÕTÅÐb9*ðA‚~aïv0Ÿ>cg eðýù¼|ÿÑ‹<¶;¿pƄތƒ¤ }D×u“,Õ Ió2‹G±È‹MŒO£NmÛÀ)DÎJQÚûóî”]¹¿Zgf¦É¹ÎÖIÚVÄ53}kH›L¥þÌ^J‰]%L ‘m¡`Óš„¼^èºÆ63éÌ|È‹>.{¹%Ø•¿ß4M‘¼×2CIhMò*Å0v’dQJp͵¡R m4¼—*fÌfözÎØÂª,ç¨ø—©²Þ#ÀScµ0°ŒN *SRk]2fw <5*X9”#¥6…K’@ŽiQR—åÐéüé™äj ¨\Ùf°.@TîòJ¼«´5àToŽ)a4‰ýKi(˜%è4Y\±è¨î‹æJ©iàÎÕp±JG¤ÊV!Ý7¬ÄÓq’¾«"_…’”F•ŒôUé¯2KKÒ­±åýê¾n:wõó1'wcàc˜©8÷L+Ãκ¶åó§áLSÔ75ãÌ97–gõ3(Ò|ÀÎq6_Ê׿ l:~ï7Á©åºPKÆêþf úZk¯,r–õ»0‰þÔ©§°Æ®&þµV:¥'“„ò,zc-¬¹&ÁÔ}lIuŠ_möÀ[XMò­«?«qv–¢¼üœÖº+e`ýË®™–Ô'hsÚÛÌkŒ¦ÍæÜèU*âš7Õ{dmª?y¼l{ßÜJºÇö¸FLï³Ö^ÙÐä³®¡¤õÎY—ƒm3 jÚò²™^š×¯™Ù”)±ù3[L™ê[CÇ·SEWeTÓ@³˜2L¿ui<³¶|‹ytÓãˆãÍs±fò‹ƒ%¨¼ÔO¯>Ów˜S×ÒÀõ5ãú¾äÿ1{æ#Œ®µäÄÙs µW»Æ Üb³­±©Ö"¨o1‡®5íë ³[ ²-æçÍçhyðöuÏŒ­zr·º¶¨)R:ßOŒ-Ã\½þÖ„íÐùÆîR.½Æ¦-2Êå"‰ä#¯)Lå³$,·ºgä¾aŒÀàÁú@èúˆÓðvöx>÷x= øþvÁÛy€@çHE€…jí$ðjƪ½ò– ëXìÏ•â*G׬¹XÉC¥I°f‚ÁÂ&iÈ.ÁŠ€¶q° Ð$2>­X’ž  ,°oöÅ89Â&i†5â;ÂÑ'C^i0LJ+´ÖÀh #Œ•Æ=†°IM†$ A‹9¶ƒ“a¶ufŠ>§)ºü)’Ÿ,³HÀSñÄR÷Wå3#9"F%èDJƤ> 8w'|{ÆËó³0gÞÎèº]7àr鼤÷ ƒÇù܉4¬ë„e8ú\qµŸN1嬀n’‡’ Ú¸$“ 0¢Ý9€"8<>ð¿~ûþ÷?ÿ ÿÛ¯ä3®AãvØ·G4í ….ôð 1âýrÂårÁé$족p9½ Píå³3m)¤f’€¶EPT|U4_<ÈX«…TþíC@òÏéôšòìîGìlƒ}»‡2añüü,¾SÀÓé‚ÃáÌÝÀëë+~ÿ?ÿÂ÷?ÿÄù|Fô#œvˆÊbdå¬RÓ”¥]‘ °¶Æ˜ÉMTÙ¿u8i3ª“É;Cü²˜s84}Ó`è:Ä0‚Hî!<.> =†~Ä8Œ%­D†²6¡­"\J!uÉãJCÁhFcÆ$–â઩PJ'ÀË`íVÊp-MºÚkx[é°dð³@‚à>ƒ<ÚAA˜W”Ÿa ð•`¬¹ ±šíq‹ð“<œÞjøÖÒÎ?Rg¯1°òÞ”þµ:[ê£Xö.JÞj¹¹µV§µ[öY×' ¹IþV.y#ŠÏÒÏr:?ŒÖµ°Nð$³wubf™¹V\@« &lIয-Ç£º”KF¥”i]™ÔSíÃ:g1]ÿ¹}–5`¿A¶ÐJ”`!kég%pGÀ2JärmT±Y˜€;©ˆ>„"+#N‰ÑÊ”•ÈêI¸è*KÒy6^Slm±íÿªÍБféî[̤pµÏ•1ó~%R‘×J¯eï·´º§Y#cÔàäÚ³¶Ön «oY¬Ü"ÙÜRÝlá@5ÉdIºå·u ÿYÖßòÿ.–V&»Íü?´Ò›”ÁúùÛÒ7ÞzãµÔÃÍ8y¨Í¤1T èZƒ¹•(x™p ¼ZR ×’=Ö¼›Ö´·€©µxma+î€Úµ4qJ„+Á7~ÝŠpdŸ¦áüzJ>/±Pm§‡¬–ØIÆÄàY—`nÅónÝKWÇ¿–Àµ*Ó”•¾^ŒëûO©l¤iÖïÆ:ÅÛrÙå¸þ€o/K‰ã lÁõ½y”ÍÍzÍjfÓ*O.q‘_ÓJCXŽuô­­ K‰ÜGÀ­åkäÌ ^] ¸0îX­LñÎýÏ ,µ |›Íûó°<ûK}|™-Š/šËø bðq0ú#Æé«ÀµÚ*&–Ÿyž~Ézî• AÅ" ï?ß,×%Ë(©åç’–ҩ꣘˜p«Wyšnæ#cÌèì11®Ä£Š“ÙtÀH ÃtžpñçÎãõÒãõ4âû©ÃËûo§ÝH%ðjb\ÑR²v+%àO}?Φõs[’5'Ÿ‹˜¥NJÓRE‚IR`«ŒÕò:$Ç`˜à¬(B óÁ¸”r£”B¥ pe”Lk£"i@LŽ$GjL$æ~$ñ9I^ø0J¦ðyC! pFaÅ€1@Û”B¦2ãOujvYOŒ+¶¤´°‰GRòŒPÀd ͘Ö6Ö ÚXŒaL묆i| ˆÐpûß¾ý ?þüx|üÚ=ÕÑ>@›h°k ]ƒ¨<úqÀ0Œx}yÇ|±9Ÿ!‡¦9àxxðjwÀq·ö•kàš´¶ÀЦà„Ù½¨ËÊÏ\ï³)o¡ pbf ¡ïÎDZøA‘è‡Ýù‚n¸àûåÏo/xy}¹àë;ºnÀ0xt—}?$o¤—sË©KÌþÉK¶üÔîÂ6`2€˜’U`ÄH Ü®ÅÛék-~ûågüïÿú'þöë/øôð¨ÖíàšínÆíàl R1zŒ>âtc‡?þø¯¯¯8½¾á|yŠ¢ àÁ~”ç Õ šåœ!$ö±)ÌœšÁ +`LÆç™Å”§ëš¨$ÏËšû}ƒÇö€ÝþˆÝn6Z;è §Ïþ;Î/'8kÑZ«…)ðöö†×ç?q>¿§æ`ÓÀÄŒÆÁdFµÖ°°÷jfز†É5XÈÏSjì´Ö0Ðht›dÃ!ŽèûãØƒC¢ø–9caµA#Ʊ/VF GatCò‚µJ6y\aÁØä¯ç+ Ÿe‘”µNÁY•‚&Œå à°7eÊLÔYïÀÓ"Fj¹˜ûËTóÂÀQ(Ì|®¶%IL‰¦0 ”*—F ²ÞY†¤üj,ùZ>†¼w.¥P"_%YË0±¾¸£ÉåóÖÃ,öìH\ê= ,d(7IÄ#(e@)|Eéá*ДÈÈÂÀ—5Ï)b©Éð6Åú¢H"% ÆnBUÐŒ‰/-|y¯ÿ¿1©‡ÌÏÍð!–—çÒ¸-Ë‹iÀ«®ü…—©çÓ?UÅXú™¬—·E·ðµ!òšÔ°îŸËZ¤+Ÿ²bERyÔòuKVßÐkй­zísÚ¼@n5·[Àü‚uTk ,ec[@Öª±`}‚‰oXK@b3ålÃ+Œ©­©ýÚùY~o+-î–Tê£l“µjK^·fî½&Aú+ ¬åqæ‰ñ`X£ÌK´u ®Üž€`áÖw@R³á´%q½J­ ^}ý{ÞDåIUØüLn&n1snÝ[‰™·=KVRÝÀߺ—9£–ÀÓ ækñVëÖyVwú5±Ùó¢îokÀÛ–ÑåR{~/Ý7½ ¶6ž¥ÚÖšqà≡¶”ÝJÍE?§ÊÿJÆÉ@Dúa¬*>]àÀ«49O ‰Më¶b‚5b¶ h('’Aku™îs¬À2m÷Ã(²¢ÄV©s©\K¹ÝxúSÍY *P9žžòÝšä!ZA ¬`$¥€”Æ~ÀÓãWø?ý„‡§aíclÈÀÃT»Ûƒ$!FŒƒÇårÂÛù„®0Ì Î9ìšöû#v»ö»#·‡ÑìA,±Ûâ¦)Éš[ÏAžÞ_¯Gõ}U1®BÀ8ŽqDw/"°Føa¨ÓÝpÁÅ_¼‡1m³CÛŽð>¢ëø0àtzÇå"Œ,‘Frb(¡ëmJ}’ÁV$y 8™ö§ŸHÀ+Ö@è:|ûö ÿù÷¿áŸÿü'~þé´Öaçð°? i4M“üh?Žb2?vøãõO¼Ÿßðýϼ¾¾âr¹`ÄèG¡ïA!&i¢žµbi€³¡³fe'`ǘä½# ˆÎ9BbM¦ÉL’˜f8mÐìöx:>àÓ§O8><‰|p×ZCY‡”j€8Œ8w½0F‰ Ø6 ¢—cÏ@`ThÐi 1bÏl=Û8(=yÅÔl£,sÉõQ$¿oMÒ/ ç,[°R`ÍA|$½1Ž#Î]‡Ñ÷ïtýˆÎ‹ìzGÄ1¦õ.³[Dâjµ0:æ$œŠ©w£Œ²²Æ¤äÒ2\W@d“<Žy’{eÀ‡¨´[µgañß`%ˬ§~uJ«“¤ Na€$ÿ]³H³85‚kµÄZÈÐZmY3²¶˜ ¥þW|—±d²/ ÇkkÉKª9‘M‚‹ºR 3­ýΪ ¤J“}ÇXaºF•„Á5VÌR!ÿ]ƒÌ·Xß`u·7›]— ÖÌÕ 7íØ‘ü<$¦€"u­5B"e˜íu”à*BðQöSã„éZ(Ûˆa·2JI˜MO±l¡¢­BãzGp$Œ«aì„N#(*€"ŒŠWÉix²ìGï©n%íÝ#˜L0T¼Yßf|‚7jñI:Ê«à}m£¤ …·úª­p²e-ŸÃ¶ £\3$ßl¾¯|g¶M£·ŒÕ×}m£[[D—›í-yä–œçÖõÚzý%š½ÔœdÑ›Eñ^±1êkÎÄZþì5@›Ï‘Y°a¦ïoIðæ×+½ŽM4V«ÏÇ->K­n™Î/ÍøÊça\Qàç÷Ò2½oî§r¼´Þ6Ÿo¼×ÚÂ0©¶¤²[ Ε¡(Óæ&²ÅŒ* …pƒk2Ôj°Cý3´ò|Þ*(ïÛ_‘PŠWÝeÕÝÛ j€g‰¶š™›}[Êõ\Ä|óbÁj’¸ÊݧŸSØÀújWWl0ñd©¯¿ÍX_"_àB¿ÏܯÙ9@rc/2¦“fÀaôb¬.ì+Âà#†ÀèbÄ©qé<Þ»/og¼\z¼ž;œÎ.ƒDÁSHòD_1@<%ÍMé@\’,Õ¢^²"Š÷\¾&å±–DQͪ >³ÿ‡Gâ7d•DÐCQ2MO€U–å&â="À!Fi´d‚Ή•¡`­¤ÀåkmsºSö­)ò0.&éÎjH–¸NM¨x iÅpƉÿ•Q¥ók²$OiÄ ´Ã@P¿•¬æÈlUÓL³ì#?³F˜Ä#P¦iÐÁlZ´‡|zú‚~üO_~Þý€¨°©jö0ö(…Q1|£òÞ%©­ï{xïÑèÆGŸq<<&SvW¦û!íÅ䌨 V;9Vµ"ÍV×§ T/ú±äc‚x…8&É߀Á{øa@¾|mìôÃ!Œ€F9°ÛAÈ@ cï1+‘öÖ 6´==Óô›Ó1¦¨r¥‹a8‘J)zZ$ŒÑ£m<=ñÛÏ¿àÿøþöÛoØ7-¬2Ø»=žžžðéñí~/ì"xácÀétŸÏßñòö†ßÿüoç7¼¿Ÿq> Û, £ü½J‚b ° ˆ7éø¬µ©ÖAžUsO0ÁÚ ÀSŒ“§’ç1`ç4ÇÇG<~zÂÓÓv»ƒ°Tš¬X'Æ@aÈÅ€ñÜ!øqôÅì^é)aš”¤Êy50®Mëp2úOkÉÒK§X{5 vÎa·c UpŽAˆ”ü(S:³$ì½Ñõ=.Ý€s×¥†[¬}? xå“ïV¤²©$#vVÁF+h#`Fk›Ìú[›½ôbò?­üŸrR•ì0ãsSËgÚÕtîÜZ«¯jËys&cµ¬Õ#bJÚ#@­,”uÐÊ€µCd]<±TÞï8ŠäÚ8xÓ¾G«õvNU^Êx²µÁÒ_wÄ”Y@×*¸q¡”ð9)t’½Š±ùú >{2‚I<¯ŒIŒKO¬–M¬:ë„Ue5 Uò#Ô(²pl¸j­ÆÎ™”ÈWyaÙ+ŠWÙ¢ÔZäu³ô7Î5½®jºÇ1«u~äŠTíÅós‰ÄºËƒáš';Ù5df’$QNŒk".iÕD„1xP@Ö§g†³e I€€1"Uuö¶-¢m@Ú@k[¼KE¾äÄ% Ú˜v'Œ·hEpàÇK 5PrÙ4IÁ…’ö®NL®&®÷7»i:È›ï§H¼vTÝ\o~óÿ»}}¶î‹œ÷%ÓŒTq¯Il ’Å(òhV!bô$²±ÈâÙ2Œè#ðzñzñ8Ÿ/x» x9‰ßÕe¸ôBTBœ–¼CüDޱý hmfç`65Nž]‚ÇÈñg dçä•ýy¬ÑœTÈT[ÖQ†EJeâ$T(‰€&ù`1,„ Õ:“ Ù•ø‘$ÀPÀ¥¦q)®žŠw‰IX"É[k@”ÌjÓ$H„×Z#IZbúzH,.†¶ùX¥ÑÍ>n"áBµD:ÀH,;¨ÂJ›XGdK£$™“"eF& QA™=>}ý?ÿíŸøüíW4í{Œ´‡2GX·›¤,¼2ˆÌ ¼].}~Æ^öCb4ncû€]ëðøøˆ/_¾áÓç쯕ۦ!"Ž—K1 ðqÆ7°jD«Z¸¶&s× nVã,¼°BBÀ˜YVaÀ8ŽèaL}7ù`ù11:ÚV€=íÑ÷=š®ƒ ïm‹}³GIçÆ ²ÂÉš„y““7“µø«do+ï›’¼ˆ‡ã¿þú+þþÛ¯øÿÿŸÿû¦…3•sùéñÛA+“d¿ŒÁ{\ú¯ïïøþý;þøþ§xv½¿ãûË+Îg°ÄÓ.Ý´ö§4R©WPž_i–ìÞq‰µT&ü Pj,À}þŒ¤„MrØ78ŽŸŸððåÇ#\ÛÀ:m“WRÒ.åëÐ÷=ún€ —.…HÀ‚¬‹D<#^8 Ç Vfb¦fv­>ÐZƒl¥š¦Á~¿Çn·}’!YÛ¶"×Q"ýiDçœ/¼žå÷©‚˜û ÀI§E/7µ0ŠËJ¡uI´Ö"k¶©Ç·ˆ®@O~W•$&Ÿ˜®ŸQ¦øøC‰èòz×6K_¹V1ëÞ;·öÑzhµTd¶Ð4`&Dòi_cðÌXÓŠa`²ôS˧m€%M0]›’Dj­) tPp•=°T•lXÿ.}G50Ï2Á-uÐÒfN€Xc´ÔÄ IDAT¯§–j—õÚ%˯*_3·4JΖ1Fø8™¬g¼äž1 Ü€;×ÀÙf@“ö¤ ,(ŠìÞ˜IVIÂx8XHà®Q1È^¼Û?ƒÈ£@qÅŠ´®^ÙHÑþÈsK•²åY·ö÷ºÿÜê?ÖXNõ½³¥°ÙJ\¾Æ’ȱEF¹×ç¬Õ¹5@½dn­‘zn]ƒöw³ïßPÓ}ËQjù™éf Þ’e—Íê–)Ø_AE—“â¿Ò_{`­›‘×7È-ðç"Oºe|ËTy-ôž„ðȰÕä—$FÅ›àÕ½âVsþÑF\W ÕXNî–†çÆ¤6k%Â7ëä°¸äwVwµ`aAUëRÂü ^‘æ×©?ïZ¬ðª4 ü!ÀðvDî ­}…•¸dvÍ7Œ¹¤íêžP‰€Ïæîñ•D‘µáÖ¿ö™¶Öš¥ùøÄ â’”§û€®¦©ýµ6ê³Fo%˜n˜¼ d/Ÿ§ùy¹5µº-^/Ö×?ªbœ3›IN3ƒ5fRÃÙ=œ Eõµg˜¼G²ÛeÜ¥=×RŠëÏ2yy”iàâ<dŸàX Ú)Ä"‚øåfø@8wºË€Î~ïñ|ºàtºà½ðvÐ{’tÂ()åä—Ò' ˆÔddg¦öN¨AóbLÅ—¢ò¬«ÆYøW%’Ë›,õµœ1¬*aÉÖ²ÖÊÄaƒbÉU,ê&›ŠÄÐP¯èük¤V© 9ÍÁFÂÝs „-Îé €uÏ€^ a}s‚ð‘Å`yÏ 6“8óY[jB.)^×€@mF©?mM@¶!o±Æê¯åŒå¤lq½ÅÀº·PίéÚÔ–nÊ]ïý™îƒœ+ÞZrÏå4œ¤¥.ÖUÁäଧóëI= ÙxЧ†V‘ÀZ_1° ²a¹^M.¾6±Eo¥©La KÀæÔä\°S*HrãIRC@ ’4˜1ú€ÁÆÈ Œžñ>0Þ»€ËñÇ[—S/FíÈK7b$Nþ :8úŠË*É<ˆ“Á%N”q*4jÐ$·Ì‘ÇDœ öd\¯E•4A`D°'OJ;3i . •kè´Jò UÌÖ“4Œim¬˜2Š#«Êsè›*„Q­$;±9é©’g£`•CðœQ`-~ŠÅÌ×h96k5"¥"Á›&ÇùÙ¡ÔÝåhó|Oˆ$ͨºÀkNò[§4<D³6 œ=Âìð¿ÿû§¯8<þeˆh᱃1-XµPÍ 4"1.CK? ó>‘7+‚³M³Ã¾= µÎ8´íçðíÛÇŒs8Ÿ/Æ ~BV¢ÁãˆÞ‹4”RŠ\ CN7¥ø]Û¯fà D"ðc„.ýyæq5†ˆ³¡v(×¶u-vû;×L&®!bì ¸#ÏœcðÇc $Dòk’Œ(Zäµx2GtC_ØFã8"ú€ý¾ÅÏ?ÿŒŸ~ú »}øˆ}Ûà§/?âxJŽ]îÍ>•Se6{>Ô`nÊ3bEå|®+$æØú9 WUT±RPm¥ @WûŒZª{Kò·ô=]ûþ­¾hɾü~°\'îõ?Ë÷¸E ºø¶•ʾunÖŽoù^ö:¥n:©¹¸Øj¬fé@å½3ùc7Gœâl#Uzm(I6˜œ3ï]Äe,¯ ´I·š"Tr´HéS¬®é½k'd¹à×É%µ~|ÙüJÁÅ fd-¹€ó W¸ô<)”â58–˜OkÈr“¦?³¸$ée9ãZ5v¾Nˆµ b`í`ôD4éÜéÔà:kE:×4Ýwk’5F_]” €éfíyNè0 P ?]ŒCµ– uöÐ|P¼R’@Œ<›¸•û%%ÙØé’,öú®Y¿¤G¹™ßÍòç# ;A±*¦†™âÍ@Y`MþÜ*ƒ\òܨ2±LׯªÂ‘”¯ ùÏ>X Jìì4 ”oOÌ%ˆz-­]Ê—·˜Z³›ãºWW€–ÔµµXßÌ*~˜,[,Ë’2I·¥·kž}õ/WÒ‘ÈÓs$> è›}ÙH>ßÄp•¨îÉf 5M•2º¥øj㘠¥„Y ÀW^'8±_ÞjÅÛŠ (z;³g‡|M_mÐË5€òcйþŸ…Õ•Á;šØÚû {>”u# i0y(Á1$æ¥i¥†Ïýœ=ãÔ\FÞ΃ÇËÛ€·Kÿóß/"ÃŒqd¸œÓ#¡KDÒT¥?3ØböÅ3’E*Ì9›9Â}%Í-…‹I6Çœ“ä>•˜+Y^¥³— ­s)‰.|:™±‹4`¬ì]V)D`B€BCp ü ®B=miXµR«,f›¢ˆÈdö€9 =~Á·_þŸú;šÝ'°ÞaP`çZ¸v‡Æ4ðZãÄÀifL×uiÂÎípÜàv-v»Úf/fâÖZù‡=>þ F 85=Jz—E»;ÀÂx…a &ak«´þë"SÓJÒïŒM@hŒ à¼KÃà1 º )|"K à0Õ^Fi4mƒÃá€ã~/ÀZb/@“b1åLh‰ð¤4v»Æ ’Ã"žfõS= 9ÍÞ—™F_€5çö´;7I£Xaw8âÇÏ?`×­àcDwyÃóé oïïø×¿þSwÂëë;ÞÞ^ð~>ár¹àrîáïŠ2šÄ¶´.ÕÑè{6€TZ@-Ïh­%@Z©yb "©#¬68øúõ3~úáG|ýò Gkðéá Ÿž$)±i$ùÒG\úƒx~~Æ¿ÿ///8]Π"¹ëi_ω¢MÓ µ$ ÏΧzÌ,ä€eg,,À$ñ5¢Â®oŒ…àÇa6¬4­Âùô†×?ÿH ¸ ,%²G?ÈsÑ_NR›jé:µÉ‰yBµÉGÏéˆÆj w@@ÓZ4FÉcçÑh•†×‘ã¡ 5É´lQähIJXX¿FdÖdGª™rƒl";©ö·8KaVŠ<—A»¶Fd_LP»È+—ög… f Ž!ÖíÊ>L<‘áTˆaÎ’S"1Ëþ¤1Ô½†ü 1CQ¸ì§Ö)FñÙE„J-!nÀ*}ÄÒ˜[~\%陬™1’kæ˜|ªŽ@ʺβ`˜Ð8‹]ÓÈÀ%ÕÓNkN  ®‘@›Zâ{kµ†1šIÖ>Ñ®`‰#É‹B€‡ ÌóyÎ5èäFWI½PaUê’â}•ꑼÜK™˜RK2SÝBÄÈa×\„%8z‘ÔÄ'm$ÆàÆ Ã”ÞË lôb_ƒd”5°¦EÓ<Áí`ŽOЇðþnv +φs- 4š¦Á§ÇÏøôå+lûˆ!* Áíñå‡l`»ÃËˋԥ»®±2ôrÒOiö€õpöˆ¨Pæ QkŒç ÝÜuØ5»¦•´b0"ù䕤Á$µ¤V*?G„A—=ã á˜e‰¬¯[Î!ƒRêpöNœ¸Jw,£[-kz$–Qæôì‰ß¢Z ÐÉÃê|Å`ªŒÚwÒ(aF_™ÀçïgÀ/ù‹ª)q>RæIªžåŒ,yå™·\"›ºî'*$„¼– ø+ÃiäÍÿÝç„q\0*ÓÿÉŸy“Ô O@B–>éâ9·u¯ÇÉV%/É¥}ŠN{ÏXú–É=™á=o†|QêÂ¥Ö)ß’ÖL×ø¶yýÚkFgk2ù‚M›Ò®-Ãé¥Tê#‰d[IgËÿ¿L%É)kÇ(‹¿ž–(i} –”[æm‰R ƒW:óú8ê›u Á^^×k³ñõ÷×é‚ËóvKœc¼·@Y–³å‘U3ÄÀØ 3¨¥K[÷ñ½TÆ­_…a¶2yŸ}AA_¦.¯O=Õ7¼É´²«à¶®–5€µ”¸,Ý%òK ¿ŽÖo§,.=2˜zÏlþö„@o^«[÷ï’q´Ô}«¥ úÆúË\Ž|Ó€ñ–ïo|^¹¼Êâ\3÷®½®*éòwÍ©LáŸ+u'ÙátßÞÚoj³ù- ²øç0Bbˆ7N€U„"‚à0DF?ÆH8u—pêGœ:·¾Ãëù‚·Óç>àÒKbZôÉÈ8Òµ' °B+òW5{֧뤳/™ž$ÁPY²*j†)É1$!H%Ùœf©’ d’ý§¼¢RP탱Rð‹i;Ã8Ài‚Ñ «E¢Ä)MйlŽ+Í…b†VŠ}9þ<…µZæ•Î’£Òñ&O%ïÃȆäÂì&7Y£§aMn²™5BðiÂa ËQˆ—3Ä1³.0­º Ê¢9<âó×_ððå7>ýŒæð¶ý„,`ÓÂ8Ûˆ„îâ=.ãˆßÏï袇FI•³RÀ?í±ßïq<Ѷ-œkaÜÔ@ikE2˜¢ì´Ò°n¬)IÏ\ëàüe tºåO!6 é^1Ò9ÎL›3Gñ¸êû—¡ƒ#º±Cßò~Ú¤DD¬Óñ·¶M ˆœ]8± Nû}ãŒqDŒûä]Åœ\®c e–%„ æ)›e`æ”S8x:>à°;ÂÚÚ‘?Æ€÷þ‚×·7|}ÁË»€V//SÊ`ß÷{¬ÜsŒÕÚÃÙ5Tq¨ðCÁIòX$ÕJî…˜¾¾Û·øñÛW|ýúLJ=žñxØã§Ï_±³Úföaˆ#Nñëú÷¿ÇËÛ+¾ÿùŒÓELæ‡à‘ýï­M¾BÊÌ‚^•ê€lì ´Ê·Ù‹ºˆä[•T²IB'õã¼…"É¿6ºqz]ˆd:Æ?ŽI*(^j™™#ƒ¥ÉG‰ >I fŸk ׀؃A äIzLÅÜx†âå5Õ”ÓÃY÷cô•©´H?}ö¹á":@FàŠA‘g›PÝœÉÕ^ å4læµBÛV^Y7`å •ÿ+a&“ƒ6®Ú¯âUpǼ7‰%2¯…[IäY"™küK‹ÂÜ'&\™¼ß yÂÌ6‚ªð‘ ¨âçŒ5r˜Vq ÐFÂ7Œ–ä[k°ÒFî³Ì؉î4(Õ˜RY"ž—zi³€e&_!€µT!¤š5B"DfiôA0Aœâ^%ÀC˜}*R)¤81-Pyà ›IÎsŒIç$"D.ôà#.ƒÇ¥1DB`…nðèBtJc`›‡ýíñÚýšÝ»ã#Úýíî× +‹`lcöíûÇG¸ý#X·ˆ$ÁÆXìOøò °î>†rýœÕ‰ §@ÑCi­F8nÁZÃèFLuÓ —>Àûˆ¦±hœˆ„Z©oˆ"tŠ"TFöûÓwØ~\±¬SíªîYèÐ:Q„±iÏS3—ï1‚–Ù5FTþ™µ×½k•²þNÇwÛbæ.³å͵†¬Ý´*ª}Ä–ògÊ:³4×u/ñå9ÎÇi·š¯5yÏ­FrÍËæ¯j 7µo4.˃[Bk7ŸY0g–7å–Ñù–Óÿ-“µ[ ò­8Î5£êÜðkýêÈþåt4¥JÜŠš4›:óµûhK6¶ehwË@®ö0Øò‘Ú6‰^°Û‘Ê©Tݸ×Ô&½»–dÝ“fn-6[Ï_mè¼<Ž:FV¯RaëÂfí}õ ã¿DÄ`HÌ‘ªÚ_Ü“åñ49ËÀ9'O6Uä»Ù—I˜%æY Ìx£ ͦá)¹0'†Z@V°b–«+ï+H"œfÀ:ñ±b48¢µÖP:Nª°à¬UeÒlÁ)‚Bœ=¿ÙðÚh1Õ¹¡Ñ,Œ­*é•ʶ5ÐlJ£+lCi>ÕbÁPH¦³¬`áÓN@5¥“¿Ub‡ØIÊb’– `IP€u ¦ÅáóWüðíW|þü3vǯ0îJ?€tƒ½mA)Á‰pa-u.~À9Q[m°Ûíñ°ÀÃñˆÏG°ÚVX5*{#)a爗PS‚F©Jî‰ÌŠ’y±HnDêiá´³|]’›Bc̆¿]¯úq@ôA$z]‡nèàI˜N¢ø&µ-ŽÇ#Žû´m‹Ãn'̘yM‘ÒÅ8ØÂQ# “³p! ¥¶°88¥^^O_„-–››,-C=Ó¦øcìpÎáx<âp8O¹=|„ľ¿ .†ÖjI±³û¶cß6à‡ˆž&ÍìI—CªªL¹ÇBˆHjÙPçç¨PË£öëãl±°Uç-íDâ‡Vò¾”|¥ÅàˆUË& I½U„¤ÅoQkfÄZ¥°GJó«Èfo+y ­ SKI8HkðãRÅ RìÓ#>>±‚¤ä™)<ßÄRû‚œ;ö$Ì4È)–‹ôëÈ Zj|%g<ˆ™à1UÐ(ÖRøÄ2@—“g³öqr¸ÜnƒÃàÆ W\µhúºíд-‡#ÚþˆÓéM×£ï躺öÀç±\›+UöËóùÇþ£5Âäà}ൠkZtíîï+Ï2NV)"ƒ,´bF!QB2Ìú›‚aÆúÇ;>n#ZË ½Õ Ör‚«’µk$x%@‹‚ ”PË:¡xƒßÐÛ/Þ©[IÛî,BÜìÑ÷dq[>j{J½ç´öïþLˆÝºï˜ÙaûÖ9õý»Æ5ö½ö°-òcIx?#§ÜàNb¹¢+Ögüužù3=rãz=jR·À5˜£4=`‘¤M¦Éâ RûŒ…ÿ¿ããçÓ çªIÞ>´ rí±mÖMx.³D`1Os<ÿ®ë6¥˜À©G¾G[Føk­ïg6Œgéúu>KjÛ² ª4EK¤9=`àdÉØÞš{fö¿Ç¤y¦-þ 0vϤ¡i×@àr³\ƒ‘Tùÿêý´-}[þa<€v¤ýk¼—°øHÓýìÞÄNÝLOMxè‹EµÃ÷ƵZ›¬éSI!{fúwCöથͱ<ć“x¨ØB¦0®BDÄ –Ç”ÆØš`1N“œOp` š¶éÑv=§3Lw„i4 ïƒÇÓ :ÛpÕ¡i:˜–&쇢`LkzØæ€¦;Áj‚#çÁ¾’!"&…!)4¶‘}ì?—€FÄààõ“Á*@Ç„&„d0zÂ0~Çmphü }g`œCk&´ÁÁ¶P†Šo $SXR\ÇÕ@É=³§ø²‚=D÷£g Ük€d¯÷Z“G¶ =g‹Á´À]t§dÙïóÖ„›º?}äûHµV¤Í•§øÒ’ã±ws v­íBƒ|XØ9mD4;¬í5Ò{t³µ„iE²~ÒŸyŒÏ4ä(sk“ñ-öÒ:ÅëýoßðœJ÷À-cè-°ïÑÏì]‡5@¸é„9Öy Ítè}¶^˜ÜíX’ÒÖÏik­mú=?k<¹ÇòZ"XK V×5‚Ÿž°×\ÕÇŒÁg²¶»® ñx(Ã|Eû™XÚ-z鮼wñö€î}pùYáÄ ,Í8¢;Kòº`K©J’I•±øÆû6ï[û²ÏÏJM%¶ôã³/C(©JÏ@Ç ¢ýÚâ†9-p]§"a¨ÒF6Šì;FVöà ü’Â~¦k§"ãˆQ Æê"ݳõøáiXánVO¨²ái<ñdƒv°"áêFqÆ)à6¸\ü¸|àzsxû¸²Å0b˜¼cZI69×Ú´3/5•¸a*à‹ÞŠ@ÅY£ø:ji ¹çÉnŒ’a¥Ä,[®¡Fd©…Hô4IbWI Ô .!Uó4Ûê22AQ€R Fñ;e ‡³äA£Џ¡°zf-Z R€‚fÙ{´˜ª’HFxë˜YUI¥"%šÙâ†) ´„:) •<û`òºN)pâE–&öô)"En:uÂñø‚_ûÇ_ÿ ‡_þoÀIÃCƒLÝöºÁFyïßÞßñvù`ß'­Ð· \N/8ørþ‚Ãá€ÆX´Ö2ø£„å¢ÔêA<•Ï~r!‚}“”Y‚ÐbZÝ 1Îxfð0Ê@AóÚ’„Hö³™Óþ®#§ênÆÕ·+{]…PöÁÓñ€Cßã|fÆXc»ndYXf0†8Ë}t…™…¦$½r=<+r%ÜùÙ7J"ã3°•R( Ò5^¡•¥Àb"GÉ÷°R èdÍþ¾¾oÅàeÛZœ=KW›>gÖ•¶fQ¸‡àÙH^ä€.§2 €åÜ(@—C ×ËX<»¦‰¯µ çã¿þú+~ýú Χ#Ž]«^Ïg|ùòM×á(‹qÄ?ðÏ?þÀ?¿}Ç?p¹^1¸ ÓäÅû„×rÊLâ—Ç@–Z…mäÔUa(Ä:2žÿ?D¥"h%ë,þžòX6Dx?-êÊ;ûû 8¡˜­eŒ‚Ñ Š‡C‡×/gœÏgf÷ {®m-tc„÷ÁO˜†·Ë;>>Þ07þ{RˆÞÁ%Š*2PÍ>‘ uRëœÆ{¨—„4U¥À¦TDeHŠ$òbû›BX2{8Æcr_ð¦­È²w)çAŠq»A"ËLÅ,,¥´Iº u10H˜?…}R ÝÓ¶z$Å»°¦E.÷)Ìl¢ÍzXÈÛïê%)U> ˆÁ«’d+g“&$}P˜²ÄDÈA#f¦^N@Ô`)¢ÊYŽÙªDÏuG± 1ö¦Ùû3¿wµçim[åGaô(ªX9‰Ý{u3Ë(²„0€‚°6#7˜BÀ”ÁoR’*:aÀÛpu‘ê@d­¡ÛÚ´8_þ‹mw@ÛÑ´-úþÈV@c-Ú¦CÓ4°¶Ư)ôíe˜í«mƒ¦±°šÙ…ÓdPÆ1LÑMPÚB›†Mó çC‡<”IÁ±žÔYè` €Ác¸¼ávq=¬ƱµˆGg9MRËây³Y;~©`¢XÖ4ÒÆ¶riõ¬¯z”Øù¯ yëþ!×÷[ W=`^Û6­ŸKÍ ¬ÏÖü&±g]oáXg{ ³;fÚ“^gŽzÿÿØÁ›ÔÃ÷© bö’ÏP¿ö€©=ϦG¨Ûgœç·Œ”±+éÚ~î@ª´/5ÜjÒÉõö|°vßüçöˆ ¹¥]ÓÆïly{¿G>^K•– Ñ2™æ™„pýZÖÞ:{ÈõÞsüLzßX¸öym1~ö6…b¸g`ìƒçàûèµo½/ÖôŽÞyýÑîúû kmßco¦Vïé¬k äçÀäêQ$lÔFŒkï·û=' ÿŠöü‘Äp$ü Kn@¥Ï}/=u×?èÊNŠ£¤ù bü›÷ŒÈ ˜ ¬¥‡YžšÀñÎ9HX‰Á<‘bOPU´oÒóÇêóÀ0JH S,Œ€sÓä0zÂÕ\'ëmÄe¸ázñ~½àírÅu1:¼g£oR:%¸ÙïʇY.¸±TYÿË‚(ƒ{ëRn ¤( h§Ô †8Z\‹!ª–@£%X ‰„OÛASD£ ´e$XÓrC«90h¨¬W‚ñeÖ°&ñPÿ,1Y/ìgÚV ì5ïËA˜|_HYæ¶ìBªá[KºoRb’ð†""HN1ö.Døè1yh\À  ƤÝCµÖ´°Í¶=À4=LÃl`Ût°]Æöhû®ÜC‡Æ2€Õ¶htËAM+`†j`à>‚#ù1 MÛ9øâvƒFhÛÀ$fe‘60º…±†Cb¬ 0 41{U% „äÓ'ØSÀÍEŒ×ˆË;ÚFÉÐf‚s£!%Ü$… ÚH'E¯fàCš—l#J <ªžy`ÕòÁ­úrK µ|ìÇÊŸÂpŒñîw=«ë·j„šùÈ~¨îÑ>“J¸§:©Pë}¦–îõ,{O Œ`iÚž6_ó3B@~ ³Wxïé>Ÿ5‡ë'°å³f:lMí¶–mDzØ€×Èß&x–ž/¢G”@¢}yãÞ¢¯ŸG•»''Z?=“Å= ß^s^ƳÉööÏ×i^ ý¼7uÝžÔé¿b–ý¯ß?X?ÚÙc{-™ºÏ¶è»{’;°°˜ƒ¯^ßJr,¹S³wÆú÷GÌrŒ- {G:½Å`Ýcºmšà+u7áx&7å/¬$ƒkñ;Jú£ºÛsq–›=fY¤ÂÛ¬ .³gP,ÕÒ\Yã¹ÉTŠYKÓ@l"«Ÿ'Ð ŠT~R1¦EQ>…¹iôaþ;„¶4gðjœ"œã4ŸqqFL.áÇp#.·+.×+®ã€adÀapÿ8UÒi‚‹,­‘Éó½D´ çBg}?èõÙ—ÙU 2ucsR"å›÷>«5,I’P&X¥ 0Í£$a(Á Ak#2e!8tfÙ Ö°lKà ¬% å†Eª£I’±”*,ˆ9ÍJ$€Zs¡)`e˜‰ ,S€Z$71 U_ó畵Ü3La@R©˜þ*Åò2h‚1-úà ú×_П¾âøòO_ š>ÀaL²S øFü¼|àãzÁ0:ŒÞbBÓw8øzzÁùtÂùpf Ôák”bŸe*é;ûŒit8}V#RBR!|–)³”$òŽÙcViØF «a–«ãˆ)8Dï1:W@«ëõ çÞßßçipc Xu<²ÓÁ¶h­]€EuãÃ`@,’¾¼Úä"U è’¬üœï@¬HlhLä„ät9m›ÂFSë2Û*3±8NðÞ€{ ê¦EŒì÷U_SAÝ‹|,FNÆSbÎL1Áe¦™Z‰f “»" jŒ…“ëŽÀ¬ï=¦‘™Y­åÇ/çûƒ"#ï-“÷øÇÿÄ÷÷7\npÑAY…6ZhMÉÊ5©Ò}C–ÎðçÆJ*소#iS)ÎÇ?Ÿ"c>’S`ndZžE!ù"«b?M–®úÄì™#4¼áýL[…þØá|:à÷ßÇ—×3~ùúÎg}›¦ƒµí J(˜Íü$×xÂ_ãÿ…a¼âíín× ®?0Ü.¸¼ý„›F · R p!Ê>G%u5avŒŠ”™ž‡$ĦÙ)Å"CG„’ÓÕå½m^纀Þf (³”¤†Ë¢4æPJêD+u¶¤DÇ%CaͲà5¸dPQa:qJ­ yz2õÐj"eú%ëuÉœ Dï˜Q)é²|n)aãÑh4ž”¬Õ\%heཙ¾Ìfö`5ùÜ \oR„"…˜k²˜„mY‡&ñيǃå ShŽu)pí·ÈhÚPÚÔI÷‰8%žkÍCLð‘`¦˜àá0ùˆÁsíáF>j8euËL'Ý¡m9­Ö¶lÄn›C®úëaMÝX4 ³£zÓ 1œ2h5M+ÃlÍÄÌ\T6,ÞašÆhhcà¯LžCli4m'Þ†V˜Á9\„ÏrCZ^/Ö “'haÚ„ö`† iò¸ø F0¹n­ÂÑtVÁG` @c,³4ʃM¦ìg¯¹™½>˦Sû½”–qè?ÿàª>¦•ÇÜ} Ò–Ìo¾‡ÔS0jÍ>Zc+Ÿ³Öá[Òº-Þg¤ˆG„5ø]Ë C%Äb+ØÛ¹ç¤FÌgÒÜGìË{òÊúõ™=s²}{d¦½åпþEŸõ‘ÚÒ`>kÈk¬=tñÑëÓ¤6Ù>[.øk`a7¿ÏŒÙ±jIÓ#–F-O¹—m}Nr¶§;]ßÙ_cKn¹u34M³ 6ä‰U–(î±\žQ;·šõ=öÍg$›ëb;ß#[tÐ:¯|mCXîµ6x=¹Ü“ÿ}æ5ïHåñ ›€ ­"R·ÀíàÜ¥à=b[âoáO»€i}¬ÍG·R›ÿ·‘X±µYmÊ!¹åS57Ë´9¥xÆ”{æ9%¼ž´Ô‹zL>]ÿø¯ÿ)R·ò{¢°gÔ,ÉT3ˆËß½˜l/.“¤Ñ4*K§Ê¥JnUûWù„”àÀbð p1 DÀÅ„ Ã8b Ãä9žzô¸#n×7ñã}Â0z|Ü®¸ƒø[‰©(4"„¾ž"$j]ŒjC ›¾å|YI@ï¾¥8ËFéb²,ò 3Y-à–%âÂ;I!©âe”‚V$¾F5 ÅBJ,á0L ™z#¡Õ cˆÌ B‚ÊæíÉÊŸGD’$(]@„išøùɃA$n®bŠœ4…87ј}MTbƒù%8œ  ÅcùˆPØKyꯔbod"(C<¹¶–ÑM#©_ýé+Î_þ‚ÃË/€íÕ"¶$Ó"’j|Àõý‚·ËÞÞßñ>\Å›‰p8°Äîõõ¯çZfZ{n*HØC¼kh¹6¹!e£Ú´X÷T™ ;1j¯'´=3pH‚T²ï“Í`Rò¸ˆÇU–ºÝn7¼¿¿3#H€&öcjp>Í2.tÆÞÕr¥Ùñ¾ÆköU]¬÷ì­´H¿Ãük¶6KòLÂË{‹ó1¸àKѶ-š¾a€"Mƒèh&„‰ï1–Î?§Ä£)UMŠÖ"ƒiR„°(bÅ0ó®xd•Š{}ƒ=¿ ňa0 Æq„ÑZ$>'ô}‹¶íù^ÍC…aÂÛí'lÛâHgèÆâ4¾ï-¥ŒµoGˇCùÛOŽ“T?§)ÌÆóQ¨Sʯ%ÎÇ!U€{bÿ³â"’îúÀCCÞ{‘S•o>V*$2 e È‰?Ua)y¯È{@m!`3¸US=Éäó•Ì©´1 ßjž³ÇVݸóÐI=M¡gÇXBŒVÐÄRR"4F|%µÔhf çdÚ”‚xaŠÄÛ(X«Ñä>$3ýKÈÌœ~Š˜8Éx­©ˆ1sýH~^,%f>ဓȈ-€ÖzÑd/k˜T)E6h)Þè<¦˜p<|&Ÿ09ª)ÝÁö Û!Ø”fÙŸm{4 ³­Ú6ÿÝÁÈçÚÓÀ´È- q C#€¾†.²Ê žc²Îp›Æbìo¬Fr.xø`ÛFÎ43_OcÄ@]:AëI|äBòÝÆE¨ÉÃ4¦uÐÍ‚¾`ŒF‚)&œ îáÑ"D÷›Ãד‚±màÔÂ(FýµŸZ^̱¶q iÁ¸ÛW¤<÷ÀªA¦u¿VƒOk?æ½þ{K-´§îz¤´Ú“.ûǽãV]ƒR[Iƒk…Ã^:`fö=êÏÛ¶-{רçŽ6¯w®õó`mÏÂÅlE[ÍÙ–øVt亪§m[M¹6ª˜çåÃsضüÙUZ^Hwàj0JqÑõ³õ&ÏÓoIûxà 4Ó7d|!mRïê”±<-¾;L˜;‡ÿ XÊ…_~zïÑ4F°¹]­’1MõÜÕ]{ËU*i‚5+Îïgzú–D0®^w ää¸UìÆBm]ú*¬A»zï±áò¿ù¶dnkt½N€)ÑöÕÇ4ºÅçÙ¸sÞðh“Ú¹•l±ØÀh¹‰® ë×úë­Çª¯mYü+s~6T­ei‘PQ›ô/6i@j“óºÀz&M›èÖ” KG꯯SŸö¤ÉI ÞD—&IÀ/£–L¬»½M¦0Dz•{>û3diM•p̦¡Ï„[Œ»­„uàBŠéîkõýeŒÙ”Æ–C×è»d¡ÅãUQÐËbU®o^¬µÙ½by[R½Ä±¯ï­(Ï1¯™ù}ÉLEÌ0JÈÞ@YRDð(ž1$nÒÃìs= ¤á³®Øk‚ Å1¸@§€ÁÜÛ€ÛM$:,ºÜnˆMº'ïž,¦ï]ñPAn‚ø½`N,͆³Ù[$øÆçòt¿x9©Â0R„è AhGªSðèV[nBÿ*U’Ä<ÓþeÖbºÚ¨¢›`s qZ^NŒ2&OÊ#ü4 3†ÍÞ•0fA/@) "aÉÐ(„m#f±‘Ïc”ænPçó‰Øç¦'¢ †zC”Ä¿ÀX%R>5{ éÆÂZ èÄæÐÝZ·‘ ¨Áñü úÓ+ÚÃ+lwFTcŠP¦C´ ئ„ÛxÁŸßâû÷?™E#¬68x=q:p8p:½ ;Ð6½L¯ µ¥ñ-ìŒÈbnvÅÛEÍòŸ `ñ¾G"ÅóËÁQô…É÷4²>ˆ§Õ·qÀ%ŒðÑÁ·Û ¸^¯… tèzI :ã\W™•÷Û91PŠLÙ's­Q§ @«íâ¼+ ,‘]iТ̲”ÙPà%¥kò·á†ÁM“ k´mƒ¶maËë˜8µ®%­-|òó>äC•ÎÅk-§Ñ‘P€¢’X#bò¾V¾z1R3¾ô'ÏþWFYh2hL[®Á—ׯ0VC+ƒˆÄìÏi„„îx¬Eû9õ°®N€E®N/s!¤" ÍïáTb³Ñ~–<2‹ YöAÍõEú"i‚Æjkæó¹3‹÷3ƒ«‡3®¾¼ñåË ¾¾~ÁéÐá|<¡ë8Nh›]ÇÉœmsdɳ ÀG®R¬F„ƒ÷Š÷?¡=h“ðrþŠa¼á|úÞO˜¦N¼³Æñ†ázÅÇÛOÜ.ï‡+¢÷ˆÉ‰G¡•*&ó1fÑæëùÜM)aòKLXfø€ašà}DLÌ"Ñ)Â#°!8”%­ÐB Ñ1cØAB$~Xº–䤠• Z™kˆïšx…eÙž{­œàFÓEAŒ±J”Z4ø…¬ÕFääòáõp@gô0 uÀd4šÆàt8À(BŠCkòú Ð Z›2àH9=s‡c”Š ½®Z€šyÐTƒÆµzfønÙ߬Sþä…ì‡WÝcü{}9;ƒÜG[â¹vα°Æœ›ýÛ–Ú¥>×ë>k «ydã“§ÞGøúøMÜ#À”"„àWiˆõë£yÈ$ïïCéîùmyu›Ï°W¶š°5ŠXÿ¢=Ÿ¥­?ê¡1÷šÂv÷†¦}©Ü#ƒôùóø0ÁoOjU÷aØß|·6ôg’ÓG¾P[ïë¿’\úÈcð óY,ïÖÚ¯“?ö^óÞ¿ÒlH¯¹hÌ@NfÙ02Ë©P±äTùwT‡k6î–igmí%+ ¸Á Ë*›¤:nÐb‚óÃä0N7ç1ŒcŒø¸N¦€Ë0²ÏÕ(¾V“^;c‰¶ŽÒ,dCgöÙH%Q0™ÔKBÔò=Rà®ÀÔi*,Î$r ÄÒUŠP‰=S"ŒXþ2»CKü8{Pe/­„†tI}2°Z‹×U6øf‡"f؆ S™iùýã|« ˆ–IK4yâ¡LÌÓÛÄÞgJ¤œò˜÷ ‚Qâw¦DnRŒÄ4ÍlŽK,l³™- ‘ÀÒ ,;$…hZY4­E×u°mÃM¡4Á;f˜Ø¦Gß½ íNP¦GR TwBj˜me´‚67?áûÏøùþŽ×+¦ib¶ƒ68Ž8ŽøòzÆùxÂápB×uèú#š¦e¹¬ë™µ¡ß_;“R«f: œ¤Ç Ãí­O†½­®f€$o—§ ã ij¤ÿÐÐu¾¼¼²W×=S¬6 ¹`=¢fxd©IíqµŽ¯žÙTf1Ô¨, » ï}ñºšÓÿ\ùÚè9É/ƈ¦ï ­)îÙ/‹%©ÄÆÇjÍéoª*k•EÏ™…Ãij °Qž£ÛóZÍÙs,¥€q¸"L#5À’5 ³Œa#mEÞ¤ù½Ñ¦ëÑ `SØ IDAT‘ /”Ò<¡VçÖ½A·>é>´"¿gùñÜÄÁÑ3øÈ¬U?9¸à1Þfi9<¢Õã©™A« µà›eŽmËÍõ¡ïÐu ]ƒ®ëÐw §£uôm‡¾;£m;4VÒÒl Ò Îü¸F!E #ˆ‡FZašÒâ=ÅÓ®³h›¿¾ÊTß'Y¸iDp#~|ûÁÝও»ÂO#œŸ˜©5NhŒA ^|ÅXªkŒ€åâ‹–Ä …\ÊL_BLJl“ˆ½  HA‘Æä#”I°‘ÌrèÀµ,'» Ýï)ó1aš†Ïàø°+ @ڮɋp0†ª–ZùbI0К`5•óÈê$†íœ.›C@H‚T§Åð;3yAÞ3ã_¯.Íû²' ‹¯S ¦Z©nH2}Å\=K›òà3ƨyèc,¬JAk[l@2àëbÀb¢bW¡”FT̼;ZnA¶ƒÒl®®lcÓ@Û#Ú¦+ûEÓ1heŒAÛô"å3hŒeÐKçûP³L^1΀cQòSÕuÕ€BÒ€ñ0)”‰R>¯$]qË~'bÀûˆM@×u»&7À4LÓC5="i\¦„ë䨮a¯˜‘åC«ÐµÒZÍæÿÕü:  '2—5I@à¸p·Ô\y€¸¶ÞY'ö­-I>Ó;ÖàËV_§> «zf£³G’Y¼ç+£ø|Õ}ýýÈ«ö ®‡W{½T TeÂÎ#r¿ª© n)ç A§N¡Û’ý­§÷[Mýg=z6¿×LJ»-ÍRo‰§ÏeÏØ-O1-®-zâ2F2lÆÍE¾^4C|ƒÌÈè›m}­c¼¿†k†Ìö¢¤Ý&yÕÄ žÝn´¦]Ÿ=ÔwÏp}ïûöüÖ¶€5èRK\ŸSO@Š=*%­“´!Ã[³?kÞ¾À+Ý#Ðr×ëN$l´)åE.@ó>²öÀ(ŸçÉÈ<ѤêmË^OK/&¥R%ÆŠ§$Í'‘bÏaPåÈjŠƒäPÉÿÄÇ*òkrž“#¨¡fŸ+"Ɖ§žÃ8b˜&ÜFö1º 7ÙÏÊ܆ ·É!ø«IRð@%ʯ/FÇr£”Ĥ\I3ì;Å“°œ*¾ÆFW °ü¼*Ææ3˜¬˜l-ÞU÷ÂÈ”Ù* k5Rô’,È K£ti<´ŒJ,ûS’Ö$Í„Vb’ž"Œ ;H@$•˜c ’*1åZ¨´IhŒ%Ž97Âr Uĵ"BrWX­ç÷”bª˜Ì®K+æô4Ù¿‰àI#eI¢0Ë”i` j ýQŒæ¯Ù¦ƒ²˜Îy4M Óvh›´9€”å©·i`úÚ¶ J¸þøñ'þñç?ñç÷?0Ž#³¨š§Ã/§3^__ñåå/'öëéÛ¬i¼Ò’%fÃKïÈå¾Òvêl}?e_8•›nnPCp˜&IG–©]/¸\.¸Ünx?X†(ÀU×ô8NøúòÊ̱íµh-K)¡ò“‹âÙ²4fç„ÎpÇ*®]󇹭jk=ˆ ’ì7I:¢©ä4M%é/‰—šmô}_ÌØ•™Í›£¬mïc©U ”0nÀ¢X‚t¹GfÉe¦±0ü¶†ž™™0_B, FuÀ!V¾_7Ü„rÚœUÄ2ªiѲ¤qZ6wCÐû§ìÕåWÖ:)¦É! &Wöø “Ã|ñþBˆ½C˜¸1Ï J:ß¿Zö(2JeFDÂÄŸwM‹C×ÁZ‹¶aÆUײ|ИÖ4…¹g¬F~ !!$â}!%ø‘”áp†¼a*–™iY#Ì2ãõïýF„葈_ÿoðnÀ0^á†Ü4`no7¸q€›„i„›&xÏ~‡!IÀäÆjNž³t-¤„¤¢Ò¸Þ(rŠ+‘… ƒ­Öbhž,$E̪ªÓ)û*qï!ÒÌÊ “VÀjNiÛk"óÿoÕŸ©°ÈY™²fÓ¬ZI$k‚7ñy3cå§ÚZk„q•Ã¥8 “åêaÆÊÌwª€R‚6<à‰Å[MØaìAQ•³’¥Ö~ÈסDËô6" öª¢8Ë#¼ ËH„| F&B… —- T‹¨Y"JÊÀêFØd-’n`š -”a Jd€¶…1iÑØ®0¶Û¶å4UÙó´fI 5Jü©€sœ°›‡ÓA dM)aÍÅPŒîùýVª˜Ù´„€0[DQ`im¢ ±íO¡E6Û¶-Òñˆà< ÞƒÃ0àr¹@5G¸ô†ÛeÄ÷8¢k&| „×Cƒaôx948%ÍgNr˜4Ð[Ëg‹èA¹~gz\,Bˆ¨erç–DpËhK±e«³b¶(má¹G­™]Ÿªëqò´îI׿‹³e‰´ç»µþ™ZAµ~.õë\Ñ·ž÷š”Â?Ÿzý÷ÀÚJ›ûŒIø³?jèkŠÞ³yÓˆÔ¦é×#fÄT‰»FÙ[ £”RˆrÐm- -6UMU¬%@Ø [,‹Z½vpƒ¬úæ¬Õ- èáÍö 3ùgÝÛ速gÌì³ëð £÷@Eë „î€§GŒ™gÄ#q=xÄ⺻Þ)UÚ[`îþ¿ïýçf¶GézS.÷-%žuØÂÒ05=ô’Z‡<ìB÷ïÃ'Hk{ó߯gÌ­½ýnkxrð(òîû6î©­¡Ãbе¸gâ.óì·\³ù÷ä`ž¢OsxRÂ`BbôˆðüõHp n$0N‰™\Àèœ÷pÎÃùˆËè1ú€á6b˜FÜË8•Á˜4&0ù€àÅ(„˜4'PŒHUãž0E.(Ó=•}ªˆ§ìš¸ée6–@5óŠÇ“aŸ8…)esYIª`)±”]<&˜mÅ LF,.\Ö@ ˆ‘ŠÜÏ*i4ƒXFe¶ Kaˆ‚ôY>£ ezÒ•H$Yl´ KRR1&Ž&Oi–ÒS,FÌ,­–Reÿaöˆá­"%f¿¦øÀ趇‰„ie*mèÆB‰¬Ä4š®…i:––õ«ðúò‚¦;¢ëˆ‰p¹9Œ!Ášöt„j;La·Ÿ?ñ÷¿ÿ ÿÇßðãç7(œÏ¯øzú‚óù¯¯¯8N8X6ض,³¶…Õ ”Ö3+5)¾.9Îð)ïÍ­?Î @ˆï)–{%Œ7öUb‹ÿýþñ?¼ãzû@ À4§ÃÇã/ÇGN{kZfDhÍ@²xÉ¥gCöª]0°¬Yj)ÿÒËÊ,¾¶.°sñž³X›¹ZÒE°Æ.¤Ž¹¹‹«çJ‘dfõ uŽ€_KßùÕ%Ä£œY"%,@ß*Õm~ ü|q `A:@ÛÒvöØRšXyì– EÆ÷€_šµFþ ß#š¤)ÅÙp>XùE$Mð.0;6pÞĬݻ€ r±$¿Óyà=‚œ¹ù="ÅŠÄŒ[h5ûè‰Ç^~ß1èN³¹I·ìácL­LY3‘ RLj"lÓâx:ƒˆØËíòÑ;Œ#³¬”ÖÌDÑš½üŒAwIŽ“ÔÆ0 Å€F¤àx8'7Âû 1xøÌÀr#Æá ?‡Ó423m¼a?­ö¿]€nfÇÈl¬¨ä ’‘f5ïJ!†CÏñÕck‚X…ƒÔMYíѦK­ê‘<ørÎo3õvêŒRãåFQÑÞ#3¯J ÍA/l=Š1̼ʾc9ñSkI£…bÿÌ›ÛÏ Œ÷õ\¾Ï›¦]*Uhy§šMÆæn|ÿb5p“ O¾·uù¹ fíÓÿÅ D„(«9F˜— % )¥(Õ#i[´iÓ@ ãŠÔ \‘¶"µ0Æ €ÕÀjƒV,-¾yù½·%\#•ó6¯ª“HÜÅr½·×?f¤'JèY;‰û0ÜÜ?HÙ–<"3×Û¢ï{¤à08N½½7œÞÞñ£¿àróx¿¼ãç‡Ã0–vS$84pAÇ ­!ö‹½eÏͤ!>†± as²l¾ð¨çZ›´¯ûž=uÒ×c¾·zÐÏà=òŸzdÁôH µ~͈!ÏLä‹…ÆFÝŸ¯Ù–jÏT~½å´Ì­çðüÊÿ6Ï$;RĶRæžwl <$‚H»L«-Pà¾LO¬GL¢-Ь~“j½m Õì¬GÁ3‰“÷áÎwi DÒ¦¼h­Ï]S”ko¨MÔV´Ò>ø]`ªÈöb?÷džk¿²µÖ#Ÿ©=¯¬mi„RRŒlwëÿ‰ +ðó‘©þ#ðr°Û1ñxÙBËóû›ð8õ€]vâòùßk û#wwòAóPKŠ×›s¨¼!êëò\ý ¨ül¯{f®)·wñ$‰²0¨ É<Ø?p?WÌ—ÅK"™X&}·On.ôHÅGŒå-X0øb ðâ ‘rÊ— p!Á'… @—,ó ppMð!âæ"n“Ã䂿Œ) ¥ 41ƒ2Ëksš½sb‘÷¤Âlb¯¹¸<·JÏ]IËÒl ŸSsƒQXXÉ3Ó5§ÊßQöÀüÿõçÀlQ/r鈥%”ì_âG’Nš×‡€1¯£4K®”BÛôü^6-{?iU˜LIûp8âpèñåå_^^aŒa?·ËÿÏÿüñíÇwÜ®#‡´-4ưQ¯°ï'a^yø01¨¦b=w!P ðÎ!z‡àäÿÃÄ÷ŸX·á‚›Hw¯#ô_oÌ„ !"!f¿(JÐ p LH0&2s4¤gV3Êxßœe_³°JÙï̯Ƭx*—ªS¯Ÿ%–ÏuBÀVä‹–ú ‰w¡JT@”æóOk%Á@J® ~•ûPܘ}ÆÄ$ž¥¨Z€0=3æåC)I¹K3 ÀþB9­×ZÍ@mL²×¡²)ÅBU]4³ß¸v$­ HòÄ!)¤’Ñð‰€ÆÀ(Ëi­†MÎYæh{DR­R[­,Ë•eàJ3«Œ†">3»ÊêYj\|3‰€Äìĵ* –5sx¢Àu)ïÍrÇì}µÔKïy“GP«.Œç µßs˹G P‘}d3sìØõ˜ŽŸM/_ñ~ááâÏ÷· &Åà"n=aðÀuÒx=E¼ö z8«0º€phÐY‹šmªs%¦Ú°¥Ùî)Ó®]Æ#P=à_{`m)§Ö=i]w弄>º§óY·}¶¯ÛR¸möö‡úûj p­Ð[gµG×Ökné©5÷ú÷Ï}«ÿ2ë_ðHʵ…ö=”÷=`Ÿü+4º=ÿ+YÆÙ/µŸSýïy‘¥§oàÞÂÉ4ô=Éᘷ6¨ÎçÚëªF`××{ @™M€jþ~µ+QÊ×d­ß­ýsj†ØRú§ŒŽµ ûÞ{»Þ0Ö&ÝϼŸ1ò>Ýÿm"Æå:„ôp-×äCÝši“îe}{:çÏ$ó÷Ý3oj-üv;ÝÊôõ©lq 8¼c.Þ¯,áÝ¢É~–E¹Ç\ªß–÷Øg÷ŸõžñÝúúþý ˜µ¿¿¥ÇÏ÷Á᥵†snç~¢¬l_Ë5 Æ^HåÀ^¼ÕLKOqöõI¦›â_"à%žÙ‰ª¤áàE6è|ÄØÓÊ%…ÑŒ.â:N¸ ŽÓ}\ÀívÃmrn#"Á§âýÂæê`&Þ§TŠˆ1°dÅ{„à@É#&_ŒcIfñëU EþדpRÂj¢R8ªÄ)€VköÌÊ ,Òâ‡X¥8N<±UÙh­áô?D®Ä4"'gi-IZÄ¿ƒ’†–ïËÙClªÏ̵Æä yQÅÑXPtF¼nb °Öˆ¼‚/LÊMµluœ6 ›&äÆÂv}aTi®Œø)Ó!(.ú Ð £ÀjºƒHÏøš]ߣo{6ðâe–tY… oøÇþ‰·ŸøöíF7Àš¦Áï¿ü¿~ùŠ—ó/Ǿœ¾âØÑöG˜†Ÿ³²,a© Uqò|M³ô9•iÿ'öú¢1sâ˜OÌìÇ×ëÓ4âçû®×¼½½ár}Ç4±qëétÂétÂ/ç¯8U¬±â©(ë5ø91h ³…³±÷ÖÞ›ÏóJTÞYkÖºx¯_ë8ŽDZqYZ2 h5Kgº®C×õ¥‰Ë!+u bŽ­WÐ I»$•Ã(æð„üüj³úÅóÌÏÕ§"Ì,ÒDQklb@ ³W—süš&ï0#<%@ëbHÝZ³ô©×Q‘ #Äü.ÞCihÂ&õ1úâO5+Ò`K•__°BàfÕüw¤0'¼†0§+®YŠ óª15f¯(EfN(5Æ0“¤±œjf©D ëàôÇš®Ááp€iLÞ±i´"tÇÿýüwضÁ÷o?9…ÒvÐÚ¢³,/u¡€²§Çèá…‘£R(RU\¯x<ù!¥À 0"ø 1®ž×íèxí~\nìEç&¼_.þ1xÏItÌrSðHÐF!jNmœ¢/ ÛÜ PI]„(éÛ½åDý·¦íÞ$!íÖF‹Z2²¨Õ²?Â’¦5ƒpJ1 Wéœh«8•Ò´F‹‡"Ÿ5ùqó}©%Ýά†ûŒ%Ó‚Ý¡ˆ6½‘µ&øÄ§€{ß+ç3k‰„}­ÄïƒMô)hÅɵJ$âJM[6 mÅpÝÈ×TI—Ôͤ Kb§LΖ0WS@]“‡9"¹5Æð~&@`" ù¥5¢œ´IWlðO)Š]H®·ü3L®ÊÉ Té0ÆÂ~ù 6Î=`”b Êûk­Å¡íp<p:ðòò—aÂW|ÿyÅ0Ž˜¦ˆÉ5paŒð/ÀK¯9a5€ ¡ H©6í< „ölÀÌke›mµfí1˜6“:7lM¶žÃpµâ§]•ÕVŠèV?¶×ÕòźO¯÷=ÂÇ3µSö÷^ûcÖ¯gý:ïzPlË-3hNã ëÑ›°}ö’Äö´ëÍfѤÇtûgorJÏýfÖ“ˆºaæ©AÚ‹­Ðæuz¾­MжÌÖ¶Mï¯Á@“%‚ûôÉçÀá’>©*߃-óf%,¶-jâÖºyä/¶wö@«úæØbÅ-RvØ6kýÌ ]ùæ#PâÑsÈ)/k sëgž‘×€ØYX\ÛÍúqÏ™¶)µëç¼ÿÝk[“Â9.÷>æ¸D=ïlâ1Ff|Ô†TO ¶é­ŸŽVÒK¢´¹¿íQ\5­À­÷v ö.Þ‹ÕÆ)„Bµß:ØjfÝFû€cJõ´8Í fdú~ŒÌ¶ŠE蛵‡f\ùÈž=¤1$…1xÇ2¿Á– º —qÂë0ŒFÇl›É{xŸ0ÜRÙã”Db³ù§Ì¤Òàĩ䒟@Þ3x%“¼Ì^b@IÁ*½ð+±ëà$¥ÌÖÐBÌW›£[ÂÔP°Z³÷•<žQF1ëÆ6cefßÀfŠäÔ?’ïÍÓuclò>‘RIïáþÃIÞ@*A›Ú‹J!%Ïì=°\0‚e‡H‘>3§Djù=Q˜/*ƒTM[¢·mÓ±ж°m+Si6®UÚJsk¡ 3³:ÛsâVIV²0ºaf2H â×Õ£m[´m¤ÓmÄÇåÆSñF#¦ˆëå ÿûÿÿÇÿÂßþÀÇx1çóÿöë¿á—/¿à××_p:Ñ7=º®Ãùõ«4[Ù—‡z*H#b‰%÷IܪÔ|ô³’#=e¨¯÷œþ=7ÏÎ9L"—ºÞ.øñö†ëõŠ·w\.ïN8½¼àürÄËË Î‡3¾^Ñf,eYVnØØäšeOSàDºüõ ¡ªt)‘©ÖL*«ô(TƒUFÕò>žÁ‰)ƒìvãÔÄQ<¼û^@Óú­H€³’¶¸ô *~rÂ4ÐDœú¦QjJØ?üoþÚÖàNä°r/Î&0€ÒÌÀôÑÁ»IÀ+‡É f¸ ÃèàS,’6+fÌÖæÒõšàF•Y,ºÈ­µ0ÂØò%®,N¼K˜Û³óW sjÛ¢F]I q@VO§7Š4 1ÍÒÉjï·Ö²ü³-Àü¡Ñ™fá-i•…¶Mò¨ˆÄkÇrÚu@b)^\J8œ94¡ïz$\.7Äèù^4//'¾î!`´6èÛIh;# Þ{„,ó“{Ê{(i²™yB@ô޽ù¼&Ë ³‡Vô“¤¹ôò˜Nä£ÃäÄÄÛa˜FLÎÁ9I{œœcÓ|ˆS\ º“E†J¤˜Õ‰ì8•$õ²¹*…ÅÌÜâý[E°çÐVü2¶¾®ïõ[Ròiaù>¹Ç• Dæ3$õ*™b²MÂìE`¨êŸL\ÕE+FóMCWßÇZ!iÎÞXâ¥ÄÆ 8ÉTά¬0‰PPê2V&¤Ø}N ´i$²,' ­Èâ½ÊÚ@++÷µiÃl+ùžš˜÷*«Íìie˜Ý‘H#Hýòš@fÑò0-)‚J e””Pr@ kU¦wó¿cfråÿK3¨‡|žÍl/£*ùqä=R,F䃙­¥ïÃÕ8´Ìšìû§ã N§w´?.øp#®£G"çëpä<·½š%§‘k·®1hÒY7/¼³Š%´þÞ¬€ÚS^ÔàÏV}ŸSÜ÷TX¢GJµGÖEˆ [øÌ¢gxЇÔJ²u_¾Õß®ÕW:µ<ÅVK…Ø™ÈÔy+ê}íQµ¦£m±ƒê‹•c~k«~ƒkšä3#ä­oëù,^ 1›ÍzýûÖ m ’¬'‹‹× zÈÉïµÏÅ3™Ô–$oËÄ­ŽÆÜKBx¤u­ctëHÑ­ij-U›¤îÁ¿ˆÙÒï({M{ ú­A±­&!_“=Šd½nCH›é,€TæéF±-íZo6´Üh± ¦ Ü0âÇÛwüûÿþwüÏÿõïøöó;lkp~9ã¯ý+^Ï_ðr~Åùø‚/§W;°GN_FÈp‘î*Ð<ÎÞˆ‰æD@¥910JÃtP§•#1¸z¯„Ñ3Ž,üñãþüóO¼½½!!€”©?àõõçöº:N8ö'´°hôÌôÉMïYNËÌ®ˆÉK²òÔœ sU5Uüògkf]èª.PÅH8ïm1zxq›n†¡³3ëê†QÀ+¥ú¾Çáp(–µm©7sŒ6ïßÕ¹dc>?ÃåR¾¦ïlîîµÜâ ¨ÑQ¸a`ùX kš&LÞ#IBYÓôm kMÃkö¼&µâ©¤äy3hªµNXžÕç±’zf RCÏ ©+Ï®…¹{ ËH(”?÷Þ_„; ‘rþʵ.×5æ=-K5Ò IDATsJ¤.VfÛh!,0§Ø ;Eé0…QÞ˜âEb/­ ¬m1Ž|-lÛÀvâQ'¦×Jtˆ±-u±÷ŸC~Bp®ø-Fazïq›nEó£G ÁM,+ @„0V‹äÖf¶nã•Ï–0ŸñÁñï){GJ"qœoöãpã”Ö0LaBô¾Œ)Œã¸¬m«ÀT¥š“åĘÝK=xW?Æy°Í4Â:ÌÁâD2´ˆJ¼eB’ØÌQàe _7–Tk>{B a¨H¼—xèâ£0!õŠÓuâÚ‚f$/G¶ïKМtLš¸NÏ [fxif¦ìÉ),Ò¼V4Œ=qZ­ÒÌp6¥˜Š‰/ h…̨²Š ­ ‡3ä=´ j bÄ üŸ÷Òª°ÆB HqNââkEFCeY¯0Æ€ˆ(+¥ ¸_Åã ìuT×tIö °ŒDØóνÿÚvhToPRFšVåó©Ñ}cq8œÐ÷=†1`òÃÈ¡£bã÷(Ræ |jáaHÊÃS±HÍ– ¥{H6z~Þë”÷¬PX§äÖÞNëž:?FÞ£ŠojÕ·Ôû~ŸlõÕDÚòCÞRp¬Wõóß¾÷Fíë繇»Ô Þž§U^×5Û·€˜Æ, [>c¨žKýøÅŠ`Xx`‘sZ,ÁŸ(7Tž4*™i³J–ñ¡šÖÇRx€¥Š™TDÅÜ/PZóˆñþS]¦´Ç½/ ƒZò»¸W w@ÙBJ Z¬Ëõ#W$, ¦e{©œ:¿æ<=d¹…KjÞ ’XzÇÅ0j6–ÊÔiðþÇæE QÖ%¯S+¿s u•.8³êBY¿ì‹ ª½Ö#HÌ{ŒAÁÅ„˜4Sð˜dêa €ó ‘4\R˜"áízCˆ S\R p 3Ë÷@àæ“Op>!žøßnØK ¬H‰8ú< ²I®‡!ŧ>À{çF¸iœe5ÑÏ{E ›.@°ªÏѵ­x§Ì1ëÚˆA}ò0š ÙMŽùAË`@Iš !Â(žf*äÞ`“nÓ” °ŠåYN¡‹ÔcǥБÁF( 8'ÆÊ⣣•0W¢g`*]k(- ŠPš£=_/1×Ä{UÓtЖA*m Ú¶ƒišñÍ!ƒ—öXŠ{eX&cØÃJ˜¦”*$’1k ŸÏf–UheË}n{bµm‹K¢Z…~^Þ0… |ÿþóŸÿ‰¿ÿÇàíí ˆ §Ó ÿí÷Ã_~ý çó+^OìÕ÷™yu€Õ,÷@žð%u¸ÿ¹óúH²wpZgNéL0 Ή?FPl¬ "NÈ‹yHèÈ“j“Î ø/øðW á†÷÷ Þßßñöã'¾}ûñzc«þ„_¾|Áׯ_Ùœ½ëÑ÷=º¶Ÿëa‡”3QšÜ)øc «#ù…²Šå¨‘S#`C XªD¼çis>ÓcÄ8†{kyWd‚·Ë¥0aˆ§îXLæ­µ€¬wfkº…‰|L¡¤ŸÍ›<‰ÏPå»$MâzSô â³BÁ Á ,š‚ýnŒB—ÀÎØlS 0¨Èt "»‹rÙŽ{–„@§¤¡¦£W¢a™Ml¬„m ebp‰ø˜™ž[‘$&¦––懎_“TÕ&?µÈh´ºÉŒ&N€°ÒâåªeýÉÀUÚ³‘¨T|nµ°ŠDžŒ¸?AbV)#ì§t<¤¥ó1e?ÎÂ’6G÷{¹¶„È´ÇžM¡¨!©pâÁ³Ì¿ ¡ªö4!¯syŸ×DÉh˜H”û ó&1ò„àûH¾Sp±÷}ð¤¤.€Æ²iqµX`¿X Õ *ÀA!ô [8ìúë°é^ñê.±× ;EØ2à•Á)€eX/ M#àg|ä<‡è&Lüà´–ñÌf¥‚·°ï»l‘3gû1%Æ”„­uNâ;æs•@¬±4~,œKALÇ“ækHþƒsŒ4¾¦D’¿d˜Ú«<ß„Cd‹O*E¯WMÙ%)¼Ë úò¦ `j §sNÏnÚ;—ž×!â(éxÌ1vG¹Ù¬1¦°9†T-Rù Vyù@Òië„£žSsÒ9TrÊX™gA…I¡ަÑÕäoS¶æ5,å¯ ÈSIsÿÍy •”÷š„ì”P Meƒt,Ì^—ÚCusæÜñU³fcúãš{{*Ê{U“ŒcÆK°=Ÿã¦Hî¼N‘ü‘PÅD~:N“¾½ôÀ:‡ÕWcí•Hûøw!¯cT×9ÿ´úëyV‡^2 ¦&èç0"ÇÀ–,ˆšÅg$D`1E:äãÖcHJsc)ýN¥E²0gf–"aýDØ2iG%³T¦èå4¹>¬ >°œ6·ÑšÚ3à¢/Bb)Â;¢zP]ð肇'%†ëޱwŒ]ï±é=^÷={8&ôžÐy…αHƒF,º€ ”ùŠòÌØåU6ž€CƒÆx¦¡Å޽MÁÙC³ Ëwr/ØAˆs‡Y—éiÑ J“ŠÝD‘šX1#‡˜Ÿš˜îªTƒÀ}4kðI ¾ †H5 ¢»‰ )ðMd±ˆ´/§zbš €rF‰¼ÃX ¥lô¬ ~µlDòÔ‹a½RFä ¤a ×ísq Ì e5È$Z+›òvÛ®`ۚŠ*J,´5"ŸHGLYÒZ˜”ÐJ Òl¢¼¢Œ1°J$B¦±9=MiÊ,6¿>=?C[ƒ  =3¶»>~ù?þü þøü;~úù;ôý–®/oðpw7w¸»¼Åzyëë[¬—+¬Vëœü”’ž$T ÉîÂâ 0OÇ/æ^皢ôÍ;Œ0j\ð’H >ì±Û‹¹t¿ßãµÅc÷ŒÏ¯øó÷x||„ë$1R|C®p{yƒËËK\­¯$±mL³ €È¢"ÐS& vÞ6º+†¬…áx*6`¨¥# ¦¬ ÛÝÞK÷|»Ýb»öÕîU$ƒ›Um”‘¬—«˜P'’ï´ŸÄÎÕ¡ÓTDEMS²)7@×6]o¼©s¨JI‰ÛíkVŒµhlƒ¦i# kG`O¹®¥Dº´yÎßOÔLƒt'­NRƆä‘Ú!PÁˆˆMÔ¸ QU¤[ f)€º¨{Ì‘0 ¹ Px¬Š÷^¼/ZÜ·¡žTð,Aƪ †“±Â°a† *Ö¾mÛ¡i^£i;Éóke2%€‡!MQœhƒ‚2ÃZÇ,cÙ†Vêêȸ¢0„”AiÜ‹yþT+²Äø}ØWR<㦇¬¸‘¬3>“¾x¾»qª$Ò>hð¬+XÄÒ¤ÿ­~´/ ì³ûáå8"€‘¤aJr"oò;CjvE9 &‚MBȶ *ù;e0ÊjñV4Jç0"‚Ñv–f==¸©¬È lE¥£O¡ÊRùœi%͔ľ`LGÿ¹ø ’”ø\ ¾x,+F—Š@™ŠÀl’ ¦æ»2v6Dkº¿;ÅpªIÑÊ1ãSûŸS>ŒiLÉþÊU÷åSÅÕÜ>“â¸ñçNïàKÀAHM¤`“_§†4RÓ606û¯V¯pDèzF×Ò~bÅF$"hŒGoÒ ǃç/¼\|f­Šåן ;wP·H9܋ԬRޱÞjʱ9Û§Úº9UΕÇá2`¤fS§–=å÷¹Á4sÑfHù.U_S¯ü¹snAA=™ÑÔ¼Ÿj)„ç$ÎIÔŒ»*ÊÁ‡€t¤ãÂQHtú¿^&óH³sÔêòÐi¯Èµ’ÑÝxÀñlªÚœ ®¾óÈ©½ö@8üWÛ´'„.=r*½£3Ĺã¯=¤Ç¯EˆEâ)öð½þ5õ1f´Á³šèªh ´‰€ —˜Ç,2 ¡ (šâµ¥˜ X¼ˆ#]?2¥œ#±Þ$ñ•"$ƒpŠÉ=”y‡A5DÉOŠ_&PôÂz ’Cá*I†îPç+ôÞ¡ë <ºÀè¡°ëÛ]‡íÎaÛ3:OØ{F¬Äè»÷„Þ1z' ƒ’6HÔIBPžÛUNíJ…ª÷LR¸ÑÛ l9WsøÄ8èÁÞÃõbÈËÎÇ+,,UìhUz,ÂeH Ò…ÄD®è¥l.M,ÈUaŒo"3K }­‚¼ŽC,22Rr!ˆc:Çèq‰ÎVñ91Ð:®}Ìðì ´‘ïµ4ÃX03úÐ#€824cYºÄQ ¸“å¦mÑ,°¦…n0Í ÚŠUò‘¿3ÙdZÁØv0m6"ÅPZC©&3¯H’MjØ€¡ë{h¥a”…6R䆰ë:ì»{·—ý>~ÀÏ¿½ÇOïůÃöå—‹·7x¸½Ãýýîonqsu‹ë‹K,ÛÖëK4MƒÆ¶‘¾"7Á§Wqö›T.ãy!xŒE€àEk0+e„½çÅ"¯o­A=v®G“øvÝOOOx|yÄûß~Åv¿ÃëË!¬V¸¾¼ÂÃínnnpµºÆUd&F©‘iÅ}J,6Ñ£´¾VFË­ôÈãj0>4jYÎÞS¢î Ùl~ßï°ßï2xµÝ¼ŠÔ.Ϋèm•XW‹¦:°QÆÈ 0öøÔ‡›Ûâ+Á޾OÀã\ãuš9x‰Ì8É·Û-öûmæv;‘šYkÑ4’€'I‰vÔ¤*ÿûó¹Æg­s*Ô¥Ö@®%…çæ îkÇ7—œLS_¬"•²^Ã&°nè(2‘¹¤@*zF¦(3£± ,Ú8ÊÈmd­sw¹–4ò¤6«Øf‰ßü‰×­ï÷#Sü4FlòÔ,€¯R-Ÿ-ƛמæ‰_Y2ÖN!O¥$4P)m0„×aC¤=“€´0Θ}\/‡Ígn¨¥cE#4…|И¡I<„i¤ÙWTŽ3i¥DÞ´F”±£FoNíUð$@–1ü» qašü>Ê™ŒJÌ©Øñº‚XƒÃïÀÒ늲·Ö —M?;ö ž"œ0þêëÎ Á:öýœ=ËhîŒö"[6²|BC%Ðl$eS1Þ"H …Ñ—®cø=ƒ÷wáaYÀ¼ZHÖ¾|/“”Í .A­Bi‘Ò…eç³J‡G2ÊAÕsô?â¬R.$oÕ„oD»Är+|³—`²òw‡â\BLì ycQß—«{  >ySÜ1òÝ+±—±Â¦¸„êÚ2U»•ëy ¸›âOλbíòpn܈⠃ËÔ6­sÔšûpô¡šÛ˜Ïƒ@|„¬4oO<º2QÕcéУyhB^;ïc ÃTftÎyk<Š¡¬5Šêܽœ;ŸZ"øà8 ÓA9¾6˜¤$êô¹|ttP™+ìFçÁÇ“"K†YíýÏ—§ òŽ1§¯0_}}9ç’&ÏeÖÕ4Ð¥»ôþ˜3Õ/;>g-vT×ZO5ós‹ïl:Åd¬Íi´‡ѸÃ>0=–9@‹1amVÆ–Ðpe‘S$À’ø´¨B>Y˜LÑX£ÊÉSÓ‹Ä1¯-•Z»^ÑÇÈDãfŽ H¡8EàBi‰çñFBŠnÏ”Äâ©€>vl=K’gÀ Wè™á¼Ã¶÷xÙ{¼vÛ×›½°´X[€,<4z–s”„A† â=¡£ä̇^dL:-®q$‚Ž”zaË ²â”)À"…q+Þ¡ƒßK•wØ÷±ÁÁÙs ¤FTxÅ"©Ó‚ÁF£ÜÆZa؆ÒiÃØ$ñ°V¾O&Ì:^_YY;Ï1zœ´ŒÏ,“p¦3[ÅHlI "RìeI¡0¾¼ßG/"—ÍQÐ镦“j,l³ÿ˜V Ñ­µhÛe”ˆ50Ö‚ŒÍ,*(m-”i`m›L&ʕъb¬ø.ÝòŒ4uVG| V‹fèÒAÌùwÝ///xÞmà8àéå?üò3¾ÿá;¼ÿý7löhkq½¾Àÿøê[ÜßÜâíý®.®±X,pµ¾ÂÕÅ%Ú(³Óñœ|,Q=p,( Ó_š÷Ç­ñ;OŽÒо-Œ}·ìû^¶¯xݽb³Ûâñù >þñžž¿àñóÑäêê ÷÷÷¸¹¼Âz½ÆzµB£cr#™ÁÃÞqìv÷èÄ=RiâLSÓÆ?ùgåÈ È²ëûÔ˜EJ¯"ù؈üq»ÝÂ÷²©DÁ®//a­Í¬+U‚UHé‚\-~ÇY=b_ ‹°~ò±1ê-7 C=â#Ó&`¿ßb»Ýc»Ýä”ÄƉï[“ÏÃÚœ™*ëBÞaµºªæ[Rõê:cS[[—À”™÷ªy¼LóX=®ÔÄfÆÓäÀr "¥qÎÁN^Ÿ@ØÄúK÷¡dÜÔÒC%øäà5Sr… ̸Àê km´ÕXÀ%È5f^%ð)Þ8~Tû&†U–ûFÜé=KŸyØ®´ÈOA7±¨H>bãqÜP¯Íë娲Eí²‡d†Óæ;çuPdS<¥4Þ/(𤍫q}oM;‘ªê > ë.2ñÒÏ£ü/5H´¶qÓk*ÏŸ–ÆmÉ  ÝL ÆÏsÀéyN¥pš)5¿&ý;j›Zý;uîû—Œïûƒ0Ëm£Ïž£ó.Ë`È´“PHõ*À{Âv%aîKˆÁ^çôH‚q­)= ã*Ï*¶«Çÿ¹øä¾ö‘¦Sd€cì·c`å\Ö¹*œ^q†‚dn uôЃxz>S²EÉ š#•¤¯Î¹ a¹î™èy˜>»”&‰æ(ÐdÂŽ3s Ô©‚.O€à´xü9|Ô“'_ì"Íl@‘QóÃM4ªÎ9 bX€Ã,`uª>ý^Ï\ŸSÅrM;§µ­ úš†µöÐM²Ã÷ä,ÙœÓê"zƒ”àÕ A9æ¢ü¹”¥Œ³¦QïªX9>*á<É–U:´”AQŠ~S¹ÿ=Í1›¸jž ?Œ qº„ab::ºvqÁJ/˜^¿Ñâ0Iþ'ùsG¢Ðǃ È¾b”ÅZ¿JŽO€ ²$E “Èñb¸4¦˜H±É™ÿ7žçÞ{\ƒ3¢|‘T4èMôòXäÆçËG©€ã€P€[>Ï.†x2ðÄlÝ8Ï^üªöCÏÇ'l»€×.àe×áñ¥ƒ‡-À•j6L"ô (9³ÂÊQº™Jkh·)ä t>²Àj m¡ƒË²H¡/;4Mƒ®“Ô°|,`b08)‚â`R±æeN¬5Œ(îJIT YY £…eÍÛMÚà±$¥X£cŒ{ŠCçÈlù„‹4.² ÄÄ2à ¢O!ÿ‹ƒ€Ïæë’¢“ñßçH`¾‘MCÛ4h+˜v!T+†ê¶_«”øfU›%É$RÌÒX,VÐFRÅL³øoc#³J­iñ$’MŠŽ^av¼ù-!Éd–cª\è:–Žj<žwü¹yÄÓæ ßýð~ûø¿üò ^_ž±h¼¹¾Á›7oðõÃ[Ü]Üâêâw×7¸¸¸Š>Qk龨¦”Ȫ¸ˆT $«âƒ¤¸é†.йª¿w½Ä}+’z$°GÏŒW»^dh_^žññÓGüöçGüùå3¶»8Ü®¯q{u›a\ÝÜÜ`µ„µÖÚ˜T'ò¼Iõês’‚7¯¦ A þ”©Xù>‰æ'& ‹œ†‰`Œ0Hzë2°ÓužžñúúŠív+l™˜(xqqÕj…õr9°¹X60ÂðHÉ¥!K©j, ²øþKR÷ˆcÈúViЕÞ_S …øsõØíöx}Ýàõu –žŽmÛb±Xdùét3<ª´¶–s,¦cÔZ5 šÆ³×¹M´²cá@ò7ÙàN;Éçu ^ sÀ\!ý²FÊÍóÌâ·3¤ö}Ï,lÐÂאָ~*Í»~ ¢tžFþºh¯µ‰ W7„ÓŸMYR¥4¯¼7Ñ7ðÁß&9`1šH Ó¹¸Ðg;†²î®Íø3“t8ö©Å ó÷C;aòfÿZKjÞ„ŠÉ¼y<ñÈ‹´¼Wsoù{™®u~Þø”ên‘ø™ /òX!Èp`AW›ûIÒ›Þ'sy½&Ö#§€„éæý0jNxÌ΃Ï*:–ü>ÜÔY!Ä”Ïè·Ø÷=|ßÃÇÿß÷}Ñh yýàX!…Hdµ±B„}oðùÑûNÅàœ†g‹ -Xi44'›²1\a>Æ~tr_•æËTSÖbT¨Fs_üGÝ^§Ö€Ÿóô=‡)7k‹rrˆª¤>{ø‚g|ÇÔuÓµ)0—¿W)ÍWUszMrÊpfÊNLç'äS‹)<ð9‡13-¤æþvÀy`×^:mç±ÙlvAY²0¶…V-4- ²Ï€#Ùima´¤Ó€45i‘]åŽ J™6†Ì5 Ч9ÁK*˜ë;pß!ì{‰÷N6Qò—€&(Åc)ÂàÝ¡8úW)‡^¡”¶æÀ€Õ¾Y…:T”ŠÄPGS]:z\Y­`Ôp߇[ÌC'‘Z ;N, „½ëxÍ`Ó4hLeÄLÚ¶ 4m‹vµ†²Kh+÷GÙd›˜Ø@‘A«yÐ%†EBIçsªV-`ÐvkñºZX@qöó‘ºP‰TE‡‘ÆÂ-ϲÛ÷[8×E9ªÃóë?þþ ¾ûñ{¼ÿý=¾ÿþŸ À°Fáþþß>¼ÁÃíÞÜÝãáî—«k¬×—¸\_d¦Š Zˆ^-¥÷EòɦȀäÀŸX f×¢$ƒ2h¬†÷ÂLr¾Cß‹©ùÓË#¾<~¯>àãŸàyó"Âòb«õ¾}ø7W׸¹¼Æb½Äz¹Ì›.‰ §q7Ûýzú0–ÕÖAU¤r% Ÿb鵪®ÓÖZìû.§$¦¤ÄÍfƒív‹——ç¼Ñ\­V¸X‰I{bø©p)=…؇˜æ¨Ä·hš‚Y‡<=[çÍÕ‰ùâ½Çv+’Ç××× Ä ,•Íæóù™ÊKV­ž«ðs›ËÚÆtê•3RF É‘:¶¼×S±šuEmCK€Uè¸:h4%Æh)•;”D†RM.XÛ8MˆvUŸZ=\Z> WEÀ$þ^*ð$½K±Øð“ßù¸þò<ßÇÜ ì$at»BjÈYrXzX Lò<ÒÃt¬¸qH O|–XÜ œêAÎ ›ñµãL(àò°ï4-T4©Ù´úxz8Ÿ­r¿ÆjŒ&ŽÊÏpÞüŸ“½ IDATrJô¨“î ¬$\‰#@E¾dßVJÓQ¶ÿ10+1ÍÏÝKŸrÚïœë™| ÉãË•ëQ?šç÷}„iÛ{í~‡í~'{BS.x—÷ýÉ$ƒÉ"0¼‚cµ 0z½Û h-´„çOЊ¡MÂÑc0ã?¯ÿõÆ…˜šé=:B¸ Ù='3ƒÕñ½GÍ»6Ÿú»c,Úc$¡éù”¾ÝZkôÁWŸ·iãq3T÷q¥ßUÚ¯LçáÒœ^)•öå{N?¯”]›c Óœ¼ð°p®Ôjþ¦¥ÎLÜÈ&“8kµÓD@‰(’|­þ-™Ø ,™NRsB¢ÀÍ]ÇéÀ®EÓ…zúÇ€‰r#X“kyßçB,s@ªÞà5¾gþ¸² é¹ch:Àçd¥´Šf =aà<Ê8IœMë}"îÄDJ­KÝdŸe[©0 ÔÆc“/˜‚œ ¿óïÅà;¹€p¨"ÿéZ†¨OÈ,7ùXžü`0äo%»‹ãÄ“|¢RWE:ƒiQƒVŠ \'uCÃäXº"àQz ÐUGØ Â Û …>ùù˜n&5ßC¨ÌœX›ÄÃ’Œ!Mˆ¯ "†4DC+Ñ*ŒÇqJ° ˜†c¤Ê«ÍL>‚Oˆž£·T€ ŒÞ ÛÀ‡ÔÙöò3¢»Ç¾÷èú€½I¡ëzìàƒÆ¶xÙ{t^õËÕX)Ý‚Ì e=ÆèÙ,g1Ÿ& ÌY¸i©¦¢ÌN«±7ˆ"­>Br"Ï”ïØKM“Š´ò$“OE’¼EZ˜PÀ’´ÐÁ(IÇ•¢`F¬V`O0†+úÆhM0FCçâ<TJþ^ð¥wM¥×†"IÉT±0¦,N),,`£ Z+ïa ÚÅíb%Éz‹íb%^TÆÀ6 (Û@i ²-´i@9â»" M à#sÃw1J=ž*ñKrJA”BP´#»€²JðY- $%´CLý$;ÈSú,#è£øO›W|~úŒßÿ‚¿ÿüðËÏxyyÂrÑે7øöÝ[|uÿo®oq»¾ÄíÅ./¯¡Û•\ƒ¶Í •À c4kcŠ2[{T¦ !J¹Wª:ŽX ^dëð²}Æfû‚çÍ#Ÿ>ãÇøüùO|ùòìÖË ÜÞÞâÝ›7¸¹ºÅýõ...°lWP†Ð (вÄðÉŒ+?˜9gÐc¬xÐ À1c^‚é+«qŠE˜}¶Û­°“¢×ÕËË ^__zc,V‹%Öëuf]%–ø®Ïþraœ>dÕ`•±°(Á«1SC°ªH¬Ô¡ØN>W]×áõuƒÝ^À«ã®4Áa[­×ëë'1%2=ÖÀ:U£U×Ì[yÌuðkìœ9k‚Ñuœl^Ž÷HMŸÒ )'˜tv—™Ûh#z8HÂR’€®Êd-ÎÜy†›mHÛ°g)6tTñ ŒÄg®,8Ñÿ…ÅFåó+žÁ4/LuR#+±ÆÁø¬pÈÀ¾òûÁ[+Dë›ø³"Ua\&06}&ñaƒ™Ëà™éØ \õ.RÙW03h‰Ã=Š®x­‘¤1ׯeÁÀ’ú´|¶Šm«¢±VÑÁ^*{[åúUû–ÒW…©5<{I®‹Éœµç2§]²ªÖÞsÏõ9õþœúbä>FJ8õ„0ÝŒÇåò,FY¬ïÅ2#JZsè\Î;ì\×Ý_žžñòüÁj©ÍJE€xº‰¯{‚g@“F€ç““¬5²6ÙKº¯rha Œx³¥Uï|l4S~v3kÿ°2§X:¸¤lNJl ²— "®|EÐÚçýøðz="NL-€ŽÙ• òZÈ^ÃÏOEö8<õ“Ï¢jc…(æOd‰ìàƒ`ëI’ l 5Ig4ǘ §hºiB/Ês4ü§3!K$Š˜xЀ{È&X6%• 5oÃó_c¿\€¦iŽRd€à]ºÃÎßøk}ò˜狀¤§ÐïS’Òé5v$5©úß(ºOé³qPô/ÖÏIœ+úk Æüûf»ÚËFØ”êzðleX8¼/:ÎMð²W¦Ä‹Òc…ÆTþ€AÚà<ÇÈsñSìvˆ…BïBN‚bÈbÚ9§œg¸ `XçW1Ú»Y,¡L#r›è[EÚ¨¥Å][MÙ-º]ï=”#„ÐgL'à(šŽ‡Ðïà Ì<‚eV-â}MÒÊÅÈÒIB Á—Æ9‡m·ÅnÛaçvø²ùŒOŸñþý{üøãø×?àË—OX¯×øw_ã?¾þ_¿yÀýí.—+Ü^\áîú—‹LÓ´+¸´I1- Ÿûý>KÅü”F6t%˜|Xœg„‚Ç~ÿŠ}/rÁ×îO›g|øý|øð?ÿò#ŒÒ¸X®ððî ÞÞ¾ÁíÍ îoîquq‰åâ"§«e`Çs¬öûýh^œz]ùÊУôH.˜¼®¦W¬TµA4ø\íðú*çôúúŠ——ìv;(¥°^,qsu#RÁõ:§¦sñރݡIuM®Qú^L­ÚÆvŽU?·¥Ïïû»Ý›Í»ÝÛø]¥ëlŒAÛ¶X-/°ŒòÇ©!|ùÿXwÈÀ2žµºrº™Ö…Óæ©WÒ\‡~ê±2½÷ù:Obا×0jh|â(ëú˜ EëfÒÄ:¬ÉŽÖ á°þKÖ¥i{Tª,3-ó!N'S×k`3jð"I¡òÜߘ¦ pLÙ[eø&Q’õ?ˆŸfp ÀVH¹`‚Q˜ŸÛ¢ÄY£sza’’‘”Õ’}Ge¤žù¹€Mˉ…IUÊê¬Á©)e¶-÷TÅÏJ÷95U‘«,Ù¹±™õzßÕpŽåÔ>dŠ…ó6ž›§ŒÚÔ˜›Û3¯’TÉrÊÁWJå†}ÉÌšbåRÛ=¼Ç²ÉD@ÉòÞÔdLÌL£«xE:Î2I¹|N²B©¿áÄP²Š¹Þ,ÔSô±fš^š~Õ\ëK$=0²Ÿ‰ ”QÝDÛçH Ì7BKºF¾@Š…“ Í©±·¼çdÂTã¨ÆCôò±<Ò•&dµ"¨¼>Ó'F”StWe3Òa‚Oˆm:îbÂ.€'æÃ¨éá£ÔÁD:öŠ Y‘êRÕÀRéiC£k"çÍYëZÒò‡0N5‘N=ÅÊŸåhM£ª…@ÞD+ÊY¥&Zì(NÅgÈTñ\ÈFŠ¢ñ8–ÿïF¯?ìܢVlò¸Ìç͹]ùpOºW¤Îùzw‡äž'Úr<¦1U›Ê1¢Ÿ“¥p4)7:SÎS ×2þ´çpJT_Ó®E2á­Ñs›"Dà#LàC~Å!+£”„ xjòX÷Ýám:„‘,9dö_pÝà‘d ‘é¥"À&Eš‡KþN ø °ï½DÍG0ʃ¼˜P{Ð{‘º$1 AÒý|È>V¬rèzyçö¤mu±Û;ì{1„æ}»"›KØ_’àÝÀ4+˜fv±ÆòòM»ŒÀ!°0Öb®Œ‘ûg Þ÷–Hi£µó}°ˆã<ãƒÏ]pMau´ìÑd¡¬E·chkÀNÁБëw 0q4qÐ`X££ñ²H Z«²?›H% Ànv±Ì2?¥¢—U6`f’Ê]4Î ‚ÌŒjf8×ᡌ(™(C£„ÏŠ*­ ŒÆêò¦Cìv½«’‰´n@í ¤­˜¬k‘õåNÖÂI $-¾U¦±1º\Ëgé½HK;:†U«ÕëõÍ¢Åf³ÁËë//¯xÝí`í¶[`µr¸²WØm7X/–"³ñλؽ–ç§Y.À¾ÇfûŠ—ík4Qwøôù ~ýø þñë÷øé—ñËO?£ßîpµ\ãÿüÏÿß¼û onïðöö——׸½½ÅÕ•x\5‹VÌ?’þŸfFj2÷MÏ•’"¹”Ò½ˆàEZ¯B\ÛÒk}žg8 ïðôô$žPýÏ›g¼ÿý=~þõ'|úô ]¿Ãj±Æ›»{¼}xƒû«;Ü^Þàúâ—ë« ø¤'Ð÷>ú2¹ÑW2¯VBìCIkaŸ%© R †Ô(JkHçtá)”@ž—Í36› º®ÃçÏŸñùó't]¥–‹®¯¯q}}õr=ÊÒ“˜cr_ k ÙfQM,Ïgnƒ{|sé˜&))1¥ n·¯xÙ<Å:Æb¹&Ùb±”Í’ÙÃÁ².Á·Á›‹ªLª²žœz|Ö ÌË:9±ñÒ{v]w´UzœÖ¤˜T1[?–H}ø³¹{kÚÍë)‹lª>¨mΧ@WyÞƒw×4ä…güˆ …´þ—Éå*KÓüì3ø¢Šæ_ }ÏI±ÂECj~‰91kÉØäÆÀà Yª häaå¡ŒŠŸM¬  ÄÀbé0e_Í€ s(Jè²Gj|=AÅTÂxìà£ã…Rª7ÏØ›¨$é7ºGÉ’ZUš«âc™Så’‡6ÿˆíâËý…ìûd¼)òãÚˆs°g+ÆBM™6§µ{!:GÊwŠYsÊNeL ³i|ÛçvðÎÃÅdÝàdÝêw{¸¾ÇÞÉ¿m×c»ëðüºÁóv‡]çŠgGž?Y+dýVa‡“"EE vŒ—ײ ,š[`ÉÚcŒŽMEˆw£óÚ˜ÀPá˜Ì V`çG¾zÐuÝ×^ DõÎʉ´ˆ_½Yn ¡wà´^ %EûÜ™ÊéÒPÎ÷©~QÒœØÒ¥ßdò$,8†µ£L#Ì5Oy=JÇb­=˧öcÜ'ù\«ƒŽé¸”yÏãiØ-§ãJ&ð!JÉX£ï{a`Õ¿ò Ë.ÌœŸÒ©‡hé;:0‚ ðtI¨´¡óAÊÑŠB!. ÕÀ xôža‹D­%æzب‡íNLÀ&&áÅC[g]„Y“ÍÚD®Ý9žU‡ €ÇÓò‰Öq£üZwòc«Æ*p1SûoŽù2W\ü½vÍ€°V(Ö  š‰åÔ›¡vO¦Ý­Ž{p+¾æèÂÇîÇ”Í6—b1·øM  ˜cÒÖ¹NSíó‰(33kî1¹À;gXÃ¥‰~yU¦•`êð»0ÑÆçÇEA¨ä{׃Bà+ç(Œ´Ð0âæZpy°/ }ðE ƒŠHQ^ÌÙ½3dç:ôœ6½Â¾rΡëeqÜw°ò>Ê ]ìœz™®$å‚O¾\Mª¡XÁ;ÀZvµÆúò«õ%|ˆ²vÅ&K[5°‡ÑRœú¾Nf›‘©e¢i´J÷\‰A¨² ¹ÎÑûCÅ#TÁƒœ‹€Sy‡n¿ƒß½‚ûÊõ÷9õO“¤!Y]$±‘…ÕÈ÷SÇ4A¥ ÀÀ@±i¡&WÚ6ZÁ/º•œ½æH±ä@P'ÒBE`ÖPZ ãS)l¹‡RÖZ4VÌÒ›E+†éÅbµ†ÒMÓÀ¶ X;X0 H/A¶EcÚ̬RÖDpÄÀä´4†&ïtÎÁà»Í‹5–«‹˜ ȰX¯àÁØîwØ÷;øN€Éõîê.š¶jSíLÂÐ ŸAèƒGïwøôùï?ü‚|÷/üôá'üðá0¬ÛþöÃ×wïðõý¼»{‹Û‹Ü\_cµ\cu±F³ZÃ4d ¼’°*¤*ú[1IÐÈH>Þ"äsÈÏäLaι¡ŽŒ…®äu·ÁËë >?=â?~Çï¿ÿŽ¿ýŠÍfƒÛ«Kü×7ÿ‰»›[ÜÝÜãÍÝ=®.®±j×X¶+4ÆÆ­ËÏ¿fì Àbú^˜A}ð`=‘HW­mGÅu)w¬%OMóé‚tÒô|ޱP®)ñ*±®’üq»Ý¢ëöhZ#sZ»Är)RTcL€¦À«šÙüðùê¤ó95Ù”Q^_—0+ã›z[MM³Qa:=GLÜåžW8ßœÓQö³¬gûÂü»ÿM%Vçø b¯—×P$Š%°#¯À°.MŒAMÖ‡`+é¿ë,KLL²áýМ&³Ô&O“y{úª޲"“¾‘jׄ¸?ÎX@(3jFJR‡Óg¨R§ÎY~5µ{ÀUæ¹Gˇ@â{IÑ„4ÙÐ/àÿ¯ÿηçŒåSûós”5/·¹ßÉÚØÅ¹Þ!øiB­ø%öÎáu·ÃçÇ'|~ü‚×ÝÊ(„è¯ÆA â]òB2ÈLuÄæÁ{FïDnž–v‹6¼”êÅÚ` .dvÑ" Ü+gô0ŸÌ^6üçdšjÆ¢fn:ýœÔ`àÊ~圱PcNÙZµýâfÊG›IU‚P¥ªÊ9?ÃÎU5AyÍÒZ4UM­RÒg¦¯a¢€2sv*áš3éšJÜŽÑ«thºJ.ø(y y’Í…L!?rZË$FÁJ€¯ü0k…®÷PÊg“ÙôP¨,“ Œ9àeHÑ;Á›Òÿj FB]E°ÖX\SªçœéٱɎg¢3s×&mhÐEgÃéÀ"Õ?c¶WêV|>I§KEO(¡RÎÊN+¯›þmy]kEUZ ‡n\¢¢ÆÎW^üýè÷eg·¼×SÚp¡ štMÜÙ“ÔܸYUÍó`Q*ÇÀ¬_?“®5ºö±XªA¡ÞQˆô,a¢õ&;uŒ+'Ðò5sêŠ!TŸßœbšü$æRxbg(Be‡Y€M}.”˜ƒ¢Ï‘RÎ8ú/y»ç8†gŽÅ£ÉçXlŠŒÓ *”ŠÀRçzOè—ÿïÄŸªw]‘Øux u±ˆèÓ†˜Ñ9YhB,jRã@¡%Ï…õ3$¸Šì³sJ[¸ô ™Ð´ I§ÓP·£Ùm€‚bÓ~’W†Š×Ê@©«-”Õ"ÃK “b19‘Ê„XdiÙ8Õƒƒ“Ô`çäȇrbÞî¶ÏÛ-ˆ,¼˜«k‚xMƒœUÌR!úRÅÍ(‰‡•UZ"½ãø6ZE­% ÅàÐ …==)\3U°Tãøam@†°Z (Ó¶-ÚÕm³D»_+e4veD¨McØÀRv 2 š$ 4MfÞ@Xuh„ @@’`¬ÂÎÐ ¦µ°m VÀ®ïÐ÷]îj%›O Í ¯/ÏX6²ù7šÐùý~€ýN˜J?ÿú3þñâûï¿Ãü‰m·Ãjipwƒoß~…¯ß¾ÃÃõ=î¯op{q#~Q7w0€vd-œ&xB–ÓÚbt( < ‹y”‘çM×;é:*a%9u†Ik(­Áðèö=öÝiݶÛáŸ?}‡~úÞÿò+à®VKüo¿ÅWïðpw»ë;\^^ãúâm»ŒÏ˜F„5 fx?H0äÙí²·Dß÷9)¨dÒ$©…Àdùoê'•Reó›|Beþé÷¯è#h¶ÛíðüüŒÏŸ?ãåé)š›oÐ4 ®/¯pssƒëëk¬V«l- µ9®Ê¢?×-flÀnRš˜±•dAªÚÌ¥•…2ÇtP_œÓn·ÃËË 6› ^_79˃Õj5N$3±ŒP“ô3šMFnê`ƒxªY3guP«½§µt ´šc€W±.9æÑZ³Àæ¤á™7ceŠ8 ot„±t®üiÆß8ÛØzN–æ‘ñ1Mî‘ôÈŒÓa;‡c@Â:Ê¿M’JŽh{’@–žM<: 5ª·§Ì¸âH½¨FµbbÉñ”ՓˆtºwÉ:Óûèªgof´Š’½—½ÂÒñª"Q7†å£#Ÿ™c²KbÂólTIò!€9ZŠy·‰92ò¢™¶—Çï«“cìüDñó@®Ù:ýÌ1?~ÊMÙ1hu0'«…r®ï{ Ð .X!²ˆ=œØ÷=ŸŸñéË#ž^^Ñ{Fý7LjŽØ<-¥ýŠ6YF<à8€÷„çç=,¬•…%ƒÅ‚ÐtVèè™” QE0Æ{Á |T{a’ò:üìpoYþ\W÷êåëíqTÖ¥àsÓãÑ8TjyFû¤4nK œŒ9jª´v&;&°(®‰>îõ•²Yå5O$Ḭ1ãkš|ЄÂ8LkNºNJj8sêá˜ÓÿÏ™ŠQjÆ`}/ÆÀ.H:@= ’qð!{l”޼˜âÊdFâ–:ýà]?¤K)¢ƒyi<‘6–TÖs˜#LJcæp#cµb– –s=Ʋp49²†. Ä‚ _;¯Ñ½(¹¹á˜Ï›x!Îy1Ÿ1?=·³w,Epîus@n©!½þ³îœç¨z­^Nt=çý2¦÷gÔ ¨€¨ÔèÙEudòJ¨2û´V³`e ðš9³iã.Åù>[rç\œë¼ÀSP މZIj„° ʀɻA¨^Baïz0.Fj»Àèz/²>ç±÷ò»]×GéŸ0gÄãJŒÖKsçà#혥nÓZÇ÷F$VÓðUr°%ºVi‘ Œ@ñh°K²P[Ó`¹\cÑ^@› kZä rNÅPLô!‘ÜA‰œR)MÊ$æŒÐ¼ö—Ü¢p€Š¦´€0¬œë3‹|€ö=B¿úäz Û‚ÜZ •Ü@>ßj£'ÌI­ 5 á%5P#zXÉÂntj*H‰¢µ€lˆ 0­sQþ.~2rm]HçEpì ’©”µÐÆ@ šåëÛkhk`M Ó6hšlÓ@7­¤ê”±P¦1’&hŒ0¬”YÀ´k@™"Y΀*›ê¼¡ŒžéZ$“_kÅW«m—К°\HZ"Æ~ÙC±‚wŒÝ®ƒ=ºnB»n#×mçÑ;'à!À³Çü_?¼Çwß}‡~ø>|Àv»ÅÅjoÞ¾ÁýÇßðpw‡woÞâöê+I¼¼¼Æb±„ÑÈ•à*$æ²¥€˜ä÷²äÀÕjJ–óHž”7‚.h"ì:‘íûz·Ç—çG¼ÿïÿø€|÷wôý±x{/@Ü›¯ðîî77X,VhÛ»:„>>Ÿ!p/©LÁÅ^dG&ÉÇxŽÎàI’èFï³R.XÞwkí¼¿dØl·ÙÔüùùþù'>þ ßKúæåå%nnnp{—+­5Äêaj2_³H¾\e•€UŠL´iºßxUc#—›€¬A&(¦óO Ágà*Î+óX¹†Êít5±ÆÎþ+ÌžsÒ„§Íι†Ýˆ™7«¦^bƒ„Kd¹b¿Ï^€=R‡©ãµPÍ>côºJý7®Îߨ;þs¼‡Ní êŸÏÿö8©ÖÒ<þœ©MÄ8å] ËSÈÁÀ`š  ³žNÕò‡ Ìá¸ÆªŒ#ãÂÑ}ñ Ó®j¹q?`˜@–!¥‡I P•«ž ý%&ácô˜⿃…Xó`ªÕÝÓT\Y¿ÂÐêº}ïñ¼ÙâÓ—G|~|†÷b TÐH+\Ú—(¢(ó™<¡X|ÛrçÅi¸l÷/àqIhuGh5Ð8¥#%ÖôkñÄ*¹ú¬0„ʆÈÜX86GÏíÇkóCàpTuÌç8ÒS‰a’Öð†©Ÿ6U¾åžvJȘz‹Í…ÍÕpéš ø`/x 6ÓnËA¬ì$¶vnb?&:h% ¡÷ çS2–ûP"u)—³a:ÞÔU¶:iîNA6ÙËBvÐY¢BÙx™ªTÉ9*%ÀgQÚkºé€J¦¡Ç&“©‰úœ4p.þóØ=++ˆY'1i ¤¹.c”i?sÒ8R%AðŒKBéY5·à‡€Š ùœòÔ":byC@Qˆ ¶šù=€;Iš÷ßÑi9–D)ŸåfYhÓû“<æ^TPñk“OiÊ>}ÿi d ICì·ñä÷ CÁy>ÈR ‹8æ|¾AP:ëúùꘔà 'JãÌÉΑUÌMèǺOçDiטoŒ•é½Íf£½ÈÿúDÃç̪LØÇ4¿ªÞÁ±ÄÖ;ÏØn÷xÝîà´ÆÕ~]'Ý«¾óB­f%L«Œ‘ÅÇJ¢³¥Ð†Fñåñ{⌀VAŸ'” @i§bX’ݬÑð¬Ð4 ..®pqqYW&ò‡!½j(} ÈåâX)à=cÇ9¾ZŽ=D+‘Q*ÁX¼à{¨àMã€ààzra `¡0„Ö‚wh`´H=I ¦TŠÚ4 óHÇt@¨˜"˜Ø :Í¿"E3å…™ˆ%µ1xq‹Å´¶¦±Ð­WíRÀª¦]¢Y®`M k´‹`,”± f–± ¬mAZ<±h¥mAŠ˜p– ‡¼)Ôñž SrF!'ö¢é¼Y§¡àLÜì¶hl’Rà„.®YA«­]bÑ8Xö™±õ²Ù  Ý^¶¯øôùüøþg|÷Ý?ðã/?ããÇP , ¾zû Þ½ù oÞàÝÃÜ]]ãáòëå ëË+4‹tkÁZQÎ4MMö1êž*Ž#˜C,Lãç15s(F×GÄ]1ÄÀÞ €¥µÓ`¸ï;l÷;<¿>ã·ðýÿÂ?ý _ž>c½^ãááÿùîk<ÜÝãÝ›¯p{u‹ë«+\_\CCÃ÷É»Ã#€3Ãj$¹©÷^Rݘ½TÎÉ#_«hÌ^†ÓǘÝéÜ^^^°Ù¾à÷??âËã#BÀj¹ÄÝÝnïpuu…«‹«l¦ë}bDI…ÉB ]ó©ÏUip^3¯IÿJÃÇZ›7T)1ñùù9§%>>>F&šÉi‰‹(‹g©R  JF¾SÓ©TÄ9sóé4õUéž…Jšî”•_;þ2À¥æçø¯1¨ÙÑøË÷í“øcŒ—cÖ¿#Áªã Æ~­vøëÌ•­O4‰•€Šµ¦ÂÀM?Ï9£è¿êò5Ÿ€¦¾2cÖ.¥~ÍA£¿êWBae>Œ?ÜÄ:SJUTØ 0XœLAÀü·ƒ´0§/F NÁ΀ˆÕýÄ_Hó;:®Ž€Jçìoþ;šâããQg½O(š+ɼï{„è×zí-¼÷èº/¯|üã|y|Æ®ë ÈH bKJ°ïdTÉ] (ÌЊMäH¸Ánï±1OM‡Çå+Ûbm¶†a”¨"¥3KÌ –:2pÈ –iPFÍk°––î‹p¸±lGö'sû¼¸ªdšûûé×pÄûjN¥5Û8`NÒ\+lØ9 nÊÒ?utÿ8„a Z¿ ûðq¸‰9‡Ö8G_›3y;‡J›Šªxð䎄ÉÐ{/™²Ä„ þ&’ÍNØ3 dpj‚&0)$10®¬g6·LÚΙj”ºÚÄ:56­!·S¶ZÊJ К>µ¢åÄáAcDªu.ÅzNÎ'úõ*|<¾øt¡Ðj¶lÒWžû¤_2Öv×A¬y@-ŒÌ´y:ˆ¡M¿qýÖgŸß1À¥Îy„Ô´Õ% ÈÌ‚ÛF„{šü40¨Î+@GóB8ô(¥gÌzÊÜ0nRd&CãP„8¤8X?é†sôÞI¬ Ï’èApÞÃb쯘§Ã´Øu¶{½kß9°ö{ç3ûª÷aHcÙ|8 öŸ*™8¨Pòê‡{‹=•çpLá ”(AäQ1ê6µoYieÑ.–hìD:{u)¥  GC -É›‘¥È*¶@; ñ5ƒ‚—š8‚V*~…Bß¼‚˜°‡8Å`8; 8yòP ZM1ÀHR¢‚N@6’grÑ4q½¿òzqvÔà貑ƒ3¼x–9xx µA»h³p±Z¢Y-Ѷ ´‹L»ù_Ó `¥¬˜²·+¨˜"˜ ÖI‰éº2ZÛ›£É‰@ÊGVh4)†úƒ³ËÏÇëÌ‘LFƒœ0Ð4 hj¡ÌR˜ï:x­Z´­Cßï8çqus‡—í¿|ø€þø/üóŸÇ¿þ„§§/pÁcÑZ<ÜÝão_ƒw÷¸½¼ÅÝõ ÞÜÞáââ W—·0¦ JkV`Љ“ÑðžƒÈIH‰ÇÇ{º?Ù¹„U²Àg`%žTž£={˜8G.MûýOOOøòôˆÇç/øûwÇßÿù¿ð´yF»lððæ ¾þ澺{Àß®ðæöw·X, mÀèÊ$¡Ð1ã±èŸ— ÈÔ‘-A+ÁÊÄbÊV|¾­±#öGÚ;¦MY2Jí³¹îàsõøòˆß>þϵ¸½»ÅÃÝ\__G&žEÛ´ðu}@3À’-EòÜP᳦Ç~QS“óš-Â\¦Æ<¤ûˆ^]¯Øl6xzzÂÓÓv»]®$]p•ý®Æ²Êá±!;òu¯?§ æÿª\gŽq•ÆÆ´S]ó ›c‡ÕXy惙 ™c Ÿë»zÍ;˜×ͼkÁSl’sê¦WNEàÕx#¦0Ò/ UjêSçÇpd÷')½Ü Å«TËfötïÅÃ'éÆÇÇ–×G¯ƒ‚FiuZ6ñË´èü÷Æ^_I™‘_'ëPbR >; ©kˆ†ÚœêA*¯ÈžÊþ»aÌzš4íJÿ¯0a…Iý ØÒ „ÐÏG:þCÎ3f÷Gµºòhð¿ LczÕRóN}æ±&pé_äíƒLp¿ß‰µƒóèºA>¸ÙlñéÓüöÛGl6›¨¾m9$EȢ苜ƕg]LaïC‚O‹%ÇfïðüºÇÍBak–J¡u«ÕfP|>)x°6Uæì¹sÈ”ÈRc®#uø0Èy%xNE/d¬Zcd}ýAà•š‘…óZœ†Y•ë͔̑Ý{hä–õµpH–¢Òš6y².ädïü í ÌœqØ)êZ¢t•1‹µÅu ØLß«÷bRê¹Dÿ=\;ÛA:à®(Ds?ÖèÙ#8H¥ äx¨AÁƒ Š DF•¦tãr÷r’Šq§i>F-Ÿ2£Êk>€¦”ñÐU¢SÉç4õçY?‘²1Û¦ì¤áþÖÓq樋ÀÁG;qs¦ÝÇŠªr|Këuç+€_9~¹r?ÇZìÌNŽù`ñ˜¼Oau,Ap:ŽôÇÁøó´Ö£ RùÚ¤$’´8Ž«‰¢]^¿C¿«2E£Öe’ÂX1Ñ“çFÑÈgKZÂeÇnè.×$% õœV]W. “˜JšF}ç³éy’4ûèÑ×3б†¡ŒÞxév×áußa·D`Bç€Ý¾Ã¶ë±Û÷pÁxÙíáA(¼R‹9)¥€­:ÉÜŠœ¨@t—;D f©*ÙIÚ$þš£¹?(²žCÁʈͻÒñw€Ò¦±¢—÷€" ÔJg¯(¥´€X¬²×À0Þ½“B%°¸@†QŠ|@@fŠwà Ðj1V—B^ÀJgcp'…ê~×Ã(…¶mŠfíÞãÿþÿ/üòþ|ÿãxÿþ=þüüº®Ãêò···øöÛoqw}ƒ¯îßàöæ·×w¸»¾ÁÅj ­ ´YÊZƒˆç\­KF„Š2T›!”å1y¬¥óö7ã¹¥ þs4:åȾë\/étÝ/¯Ïøõý{|øðÿóÿùŸøòø!¼}÷€o¾ùwxóp‡77øæú ÖíÍbÒ >Hr({ÕRôKQïƒÄ‡àÁÞ ø ®ÊÀŒ10JÃ;’&ï«äÈ>mPŒùÁ]×cßwx}}Åãó3žž$ êÓ§OxzzyàÅ%îopww‡ë‹ËlÜO ô»}” € —k²:LÔZƒŒ>`bku4ý®p6T=^^Äã*™´'ö³ø­ÜÝÝE¿«e¥I°¶­È[«G>RS í4×nŽXs`Ö´f™²Á“1ëÝ:•šÍ±CF祺2ÄÐX÷ðL•˜fj0œkv^ßh—õã¿ Ô$csõCb6öLÐs›%J q’, Ò÷%w)±‹s «‹GëŸäM:ºÿ¬²D¯ò¦Å±«Jh@¯ñܽ²x¨Y8„ï|á ‹ë¸raü»áïRÃ4Ë+e&L3š!nÌËúÎñ¹:üúß±hd€=}šgáùÀ¸=±­|'²÷´ø$´Ýï°yÙâóã|øý#þüóö{'p!é"ÀÃõ=´‘°5b6Sà"YReœa˜çP4˜Ý.`C=^›½Åna± ÀŠŽö2Ñ¢~NЬá¼þèX+éX êb<‡Ì,,¿GÑÔü« òœÒf:ï;ç´çHÊýù)Ùz)¬‰¼°íÓ¾[£ô’cGf,×’CÀÈ«+wɦJøL@1×Ô2Þ÷ø¡3"y…àÁìÑ4MÔ;}ßeà*›æ&‘ÁoG¹8ÿ<%À–¤ ö’X Å^t×'‚‹~)x´ˆ#ú¶8ÐР@ZÃ$ÀA1( "(ho!‹G.r2£†QÂäñ0–TFöFŽug.€¥ ’Ò:JdjæÒƒ·Ë@Œ±Ò…§0ª>™ &O© «&ÄóˆŸB€šÕé{KÊȤ¨ãäééþQv B¤cåiåCfV%„¼Ö!”q”wOhsJ+8þ¦ bI/M€d™ð—®É㔫l¸\æE\ŠVÇì|œx%2~|™ìt1\9O$>Emü¹áP":¬¦fyÇ€;ïc <…Ñ1L8 `°£®n:6¥\JzQ Yê©',:¢ ë¨ïÇ€t”)éÝо<…&]« ®å¢,û¡H gøÈÒy’O&Ûy<„ÈOŠ]à pÅyI%GúÜÀ…á°‹){×K"”$s¹€ 4:/à•óŒ>ÆîzÏØô;6Ø{Ænߣëv½Cß9ôN^³ßuØ÷û}/ <‡»‹ŒF€—žSœø§ÂžÄc C‡%Î4IòŸÃ(›µê’˜×ñ{­ ˆ ±$£¦\Ì hÆ ÅŒK!JÀ’åÕËõ%lÓÊFš«J+èè ¼—xï1<þïrXj öŒ…]Èßx/óZ”ï¹DÖ0TcÑÚÝn/þUDÐÄ€ï°V!è»Í3–Ðð®±¼Æ@Š‚0HØKˆ‡¯«@ RM4™×1J[®}'L%h@Gi;$5Ržu ÓX\\\a¹¾@»XÁF£iÿ*Ó, mc›èqÕ¶M4j¿+¥-Ø #Ë(IJTКºÛ!ˆÃ°V:x”Q€ ð¡—çS) 8mÀžÁ½Cðç&%…† €WDðê÷xÝîà¡C›}÷ ¥€åbM¿ÅO¿½Çwßÿ?ýðw|ùü þù'àêâ·ï¾Å»·_㫯¾Áåå%n¯nqÿ€ëëk´Ë5Ú¶ÍÒ7ŽÈSˆLMeä  hÀPŸ¯”tÙ÷ÐlEœß¨?HrйÕçâû¯1õo»ßb³ÛàãÇßðÏýÿøÇÿÂo¿½˜ñæîß~ý ¾ùêk¼½ï®»›[¬×—h›ÈºRÂôvÑØ<™›'£ü¾ïá}?ò¸Êæ"Á(•¥¤M,•101e2$GO«%`%ÊrUœ(¥@!`ÛíñüüŒçÍ >=Æþ‰Çãó–Ëwïîñöæ÷W7¸¹¹Åb±¥ú±óð¿“´Væ Ðj$TZgo.šXÃz–ɦNÒÝCPBZ¯µ°Ôº.²®ž_ðòòŒÇÇGl68ç`­Áz}õz«««Qú&€ | °•þbïx܆M5ÍlÆ›_cLÕ5­S!¸QðËTJšýQÖ>”%Ì*ú÷Içž²×qc^cjþ†!˹¶!*˜1AúM9¡.$ øLãvðCRóu eTŒ~g¥y4¬çôÿ±ö¦Íq#Y¶àñ@, .â&QRfV櫮ꮪn{mÝßßÏŸy63öª«r«Tj§Hqß"€oóáºT¶ÒhJÉ,÷ëçž%bµ;ùmp¦ öJÎ{dºù6x3± w{¾ÒœÅªä®>0“G!®beØÅ”év tÅ0jÖÜmð%íã šJw_¿GH%k—ösQƒPLÞ… ±ÀJC´_d‘Gf°B³]¡DÍÉ.ãz²p¶ÞG5·f¶qÛþ?íF¾µËUG]Íì@ ÓÍ~ !¶e™a›IlÖÚëy‹PçÔÇö#Öš: -ÔܦfïV@JPC0­ˆqmÖ%TžC+Eïcl¡ BY…Ât^àúþgçW8ùtŽÙ´„óõ¡)ü~ÄŸ®HhþÐþ^0ÆÁIè´Ÿ;jž­’Á„“€å°š!/8îæƒŒ#Í8†Ž#ñóG*iŸªuéÁ1 Ë,D’"ÏË H­qNª1Œ¡F JpÖòŽžî¢}yØJŸdH÷!Þ§òŠPãL×ÃzÛÇ:mïËÊ€žù@²n±¶iJ_ÖCØ€14Ÿ7 ÍÂQí+¤ì o ”>«¡¡|Å9Ó`:†dÆ…ŸC‚‘~=•Ò2©æ°Wd`°:¤ƒ·<–Úž¶¹w[“¸’ÆØGÇóU­­Ÿ°C`NP쥔0šhë’Q|vˆx 7' ñÌ~Sȼ¼Ðzý¬µeDT¸Æ¦x]ήN–uÚëØ»%xm¦R›eÅïI«MÎÚ,°¦¿Q¿‡Ô* $c„z7î{%¡á ·Þ„ ÚÿššØÏ2ŠÇà‚GÊÅîNOóÚ÷Xq‘ÔWà1tß›ŠmÛ&y-i-úÓ+סë÷Ý¿EÓ»~úpoÜv[ÎY÷!hkÒº^¶¢“¿«Œõàèç s.ßó`e}ÜÆY0+ª†FqoÜA_2Šƒg”»U!m)±Ëdá×RêˆAôû¥!Ë¥&@Iib|jË¡Aa¥2а(µ²¥±(JJ,µÂC®0×@a,Ê’ÞWÏÕ€5®•¤€ 9ÃZ?Öæ§œÓ|Æ}Áx¬Ð`YJÇx#dÇk_Ë+Lgˆ딀×k Æ_$qÚ&$_J… Á´6uQÊêócÎ’I îg5ã¾{Ï‘0 0á;\,á` pCÀa°1¢V›Õ°¦@ÐZˆ„ƒY‘I&¡¸!Fæ‹láýE8‡/ŽêÅTDôdÁ9£î°‚…ñ†û\J¤Ù“áI–"1n !“ " Id².S$ÞÃJ$Ã1X¥ÞË*%6 8‡åŒKŠ~Ž$`p¼Þ<úëi!ÃÖ›)ÀøTIÁv‘ך)¥ÕÀBiEë®50J#Mœñ”gù€YXå¥ÅÃÑn 0Ïðéí'|ÿÓøé?âäÓG0W‚9‹Ñ‡ûûxñü+ìïîc{²Éd »»û ÇM61 $zœI8(S6Çf(ø½¤Ù¶×ÄŠ¥à=xBžhnÑ·ÂÂa0P"]žS½ ¥$ƒïÙ Ú9Váúæ¯^ýÿþ¯øøñ=ÒD`÷É6žbw/Ÿá`ï»›O0ob” À“ÊR:©µÔ°Óš¼ê´«*¯(].vD9¸$ù&‡— û*õÌ4õ@#?Þ…MHY–¾ã° •™n^æ˜N§¸¼¹ÄÇOÇ8>þ€y‘ƒIí­ ñtÿ›Ù&&ò…ªjò® À€³ªI3­šrAQ5”škL¿GWW­E€TRPe™W’ÁÙl†»››Š}圫 Ú76&Ȳ¬×g«>fÙiÐÞ%wì ¹é’ž´}Lâu<¬Cõumz^µ¬>iO—ߨ"h°Úƒ«-ÁïK·ÑöžEÿîªÙš÷sµÇβ]›¡¾˜Âµš™¿Ný¸*Ñm•ÅÊ2ÖV_ Ñ:¶$«$•ËÎq™XŸÇjÝ 5KÏ?°1è×ˬ&ÚO·Á,•ç-K:ì¼þÜ×¢•-€X)]í»·ë2¯–±ó8=ººXe¼Ÿç\âHÆ‘…m0ÉXOà–ÿž±Uƒ'¬¡d NÄ• 4º„)´ ,bjp!ˆ¹<'×élŽóË+œ]\ááa8QÉYÌ!1/“å®g£›ùj?æý«ƒÖ@QÌ ŽB 䯢°Ê‰5¶ö„åŒC3çÕY¸©˜„‡Y9ÁT{k8íU ž®ñÐ%ýn¼&x§²-¬ýÔÍ@v `Ûz¨í§Ë ÌR dŠ.Ë¢ø=&ê^b¿ŽL±ë5å×÷plZÛN%UýÞÍùN.Ûü‡ƒæœWnóÁ>6ëšTª= B„ò˜~nE“[Ï–pÚkª- [±;8"ƒ=²[ä ©H£K¿™å•ª¾È6bápÔ²è˜@5îÎñÊ7ˆõ€yíkÛ–ø…ϯ´Ö~·»†ëл"3+VG«xŽã–]ƒãÍ#0#ï•Æyµ<¹* ‹|kšìh×vwè°ÖÒ –v¤dö<} Óc¢[E隸»(}e•Æz™!èâ"îj4»CÞ ŒÞHrâtµÐýA%-«Ò»bÜKÑË"X Ì1b=ººAÏ`ÂÞÇA0gt#!¬ÆÒjÊ·1¶aŠ:&œ‹jÑÖÆƒT=êÊRÃøîGi¬ß\:Xã ,Cácy•FåG¥­C^ªÊǪÔ¥vä]UäYe4ò¼ôébF‡Hyø® }FlÊ<”!6iö1g¼ör`Ϋs<ø"¯Ø–Õæ‹Ñ—ärT #ðé Ìûûy ÑUàws%3ìÀþâpB"M¤2A"€[’2zÎ7X-m"°A@ œuᘡæË IDAT'8ÒDƬ;2}þgéú)–¸³ ¬l©*¿²T&t,ÎÀ1 áæ,„#o-R…³[b3oÎ.$÷©¶Ú*¨ÐÉ’"IÉÃ$ÈRŒÆo4>"+#–÷æêI6Dšfži5@šÀ‘¤2L¯|u$˜Œ|¶ ù=„”¨ ´ÌVSrå&¨ØeÜÏ#΢´÷”$cSp$€8Ê”)aÃÍÃ=òbæü @ëãíCŽ4'6E¢èûZ•(t 3œÜÝàôê ïÞ¿Æ»7¯qòñ-®®‘Éi¶ƒƒ¼xö{{{ØÚÚÁx<Æöæv¶w1o˜'¼ïãt ~]—IHI$ðŽ»:! Þó Pþc ø°î1/Ã&<(\É*€éý¤”ØÌ†0Îa®KäE»ù³bŽé|ŽW¯Áßÿ 'Ç¡Š;c¼8zŽg‡‡8zúŒLÍ÷ö°µ±…Á`)X.h¼€bƒÛªè7Öꆄ»A¡÷¦ñBp¤’’!‘x6¸"²tà¢6¬©Cjà“L5æe޼(p{‡››üüêg\_\b>Ÿc{k G‡Ïp¸¿‹Ý'ØÜÜFÂH‘T‰Bá<ŒiË·YÕ•l-I˜KAþׇõšßLã¢nò4ÖJ?ƒIIE¶)Må¯2›ÍpssCrÈë«ÊÊb2™`ss£ÑI’.=]ÀO€ÅZ¾ëHÚºl2âú9ö;m§ ¶½®º¤}IˆËŒðãÎúº L_3z•[z[jù%`Õ*ûŠn&VZ,ýœ/¶7ŠëÔrë$P.kl>àúR0nÝûÒ@uÕ­ñØï»>½é=Œ¥eµp›¹lÿû¨®j"/¯¿ÙRß«UV`°,œK°Ôa-0”7è\Ȩ1ì™—~G¶(ºµ’ﬥfH`—†ý¯õLeG^­ Jô†íA~¯ŒFQäx˜{«P¸¸¸À‡pvv†<ÏQI* ÛÖL¾–u˪=[›L|ÔŒ³(´B¡€¼äPFx›c'\D̈öHÕÞtŽž®ã#ÿ'±ÂÂ]{îøÙ¨Yfý{Ü@îòîZ+º˜Zñóh|}ÝJ¯´._¸pëû½²ÒwlmRûuͯñu±±=yÄ'FðÂAu{-b=È$ó2 á;Ì‚qXnáÀå9£¿Sî`Â-ç$Œ$y€äÁ˜Õ&!äaHé½c¤à‚¸9ç´k%ýtÅ·ÝøÛ´¼s¡­=†ú\1¬¯ëÖÌ´“>ºu—Éy£›fÛ°Òfè-zÔìuRáúØf«&üe z׃½*Ͱ݉]`§D×wYqÅE{‚k%,¶Vmë„øû„ 0& ˜ƒ6ΉÙAè>ÃË{OXJMb`°ŽL9çÊz™‹7š4ÊÖ‹RãJà|˜Ei€i (Ëy¡+ò¨šŠèÒ W¥2(51¯œiŒÖdúßGÇ:‹úØ<WŒ;$þºò˜éÇ\fUž8ÑÄÎ9 ü¼F’!JŸ‹ÛÏ%³ùÝlll`´1¡µ”q¯¬ƒÒÆ'dšª¸¯WÚÏÃMûƒ8ÝNxÓú0Hh ¯½Œ8jï» Û«ê3Gòñ‡ù ³|ŽYžcZÌp}wëYWǘϧf|ýÕWxùô‡ØOzo-ãPk Ñj>-‚>µ?”r¥yx÷¦œ|p¨±¼`6Æ`>Ÿc:VFí777˜N§` ØØØÀöö6&“IÅX‹7%]rÁp½É‚«ÖæeæÍíä¦PÅSJØÁtëXCº ñ±FSì1L¢U IóØøÚ`Ç—'½^TCÞöosғ̵0[ˆ­º¦]þNËÆ×*µU÷·ôëó`Z–‚ý% ŽËì}õ÷ºã°S‚·Æ¦»;hU£š­õù}{ÃuðVt])x INÕT¹Ø®„7ö£¾© Æ$,ó²Xg+©¡6%IÈ=óª,K˜ÀÊÕ>M· ‰ú,/P —×7øøé§g˜Ï ²±naÔô`k/bÛ®ýgcœ0ø´N@+‹¼Ô(ü`˜a1$p–,‹œó 5GöäF$+;›. '^»c2HÈiYáwÛ “e]×÷º$¬}@yë2âõ-n˜ÁÔHË<åÚÇÑö»ê;þÎ1Ô!3Av¬B=ÒeH¿¿\f@SÍâ“RVä2´»b Zç»Ç]†ÛÌP%¹sLÀ$,IV´³ ¦Ï̃^ܵÏÖ⇅ÌŸ²Ä«d™ÐéYJí…¦«s·¬é2;‡g:)NWú kÝ 0 ÚHäª.LßÑ…àÆƒÔhQ2ëÎiø|£ëüò ë;©ÖçJðLZØ8G÷6¸TA`=‰ mð­oŒöÝŸuŠ…v‡(øcÔ@_AQî—Æ’·švÊUô=¼]ïíë:át_]g×Kð„:.<°X0R”Ñ5ÈåT–ÎkÀ ä\ À±¦ó‘̈’§Éz ÅyЃ€)^ɦ‰Lø8zMì©àËâˆ-eÁ*Óum–…²¬Ë#¶I¯sµÿI—l£<ì«I›ÿ^/ôfYùÁZ©¶«W]IÇa|}éÏáa68ù3º(Ý®’éE€X¿Ül9D[@p þQÆ!/…WLh” 0YJRÁjî Æì±Ôµ/(ã1sO—´Ï-#ðp¾ m[Þ´CZÚD—8h¤k¼v5Zšïç–lÁ°½ë+`B˰‘¶Ñ*bK¬F‹n}óìiâ"¢´Åˆb[¿¼ un³ŽªøH!¥s0(ý-H'1Âу-„¨¤ˆÒG8“Æ9\€¼ÚÔ @¦Ð‹ K—æ¾=÷M¸]àTW3~ι±uïµh¿èÅy7}™î¾Í.c‘ÿNÊßݹ±K‘×.@¯žØ—¾ØçGvmvIJá:¯.vZlê¾`¡a¸i]ÛÃÃõNíÔ®÷ÿ’â¤Ëûjqëè`xÉì%C¿%ÿ¼[¿À1/í¡käMØC'Ö³$ÄO¾óÚˆ:ˆhƒ7]'SmxI¢sÚƒ Ö1ÒDsãH¾¬tí¢`¼Ö6—…2(”BQZ”ÚÂX†iQb>W˜•%Œv(µÁt>G® fš¡T¶Ú€ª&áçMÆÒX0ÐÆÁÁXë) ™O±á WÍ7Ál—€lŸvÇ9™0×0aå`\@ÿó>ØA2÷¦Íž—£1#X§¯[ÖJ298@¢N7"-FkçÀœïð0U—.“)2oÖ.œ…YÂËôœU•·@=‡’ûÆ€?÷DpX++¯ ‡” XN¦ëÜ[ëXNÒ8ÆHÞx3Z^y:«áL  KñÞÂû] F ÎH‚ÎeT%íä"A:È€D`<#ñ¾9ÃѲá2 É2p™"IGI™éÿ³Œ˜VÙ\ ’V›xé*f}ÊM0Fðޱ~ü[XÇaŽÆ‹¬/:­o  âÈ ÏHF‚3(Í  U UÌ‘ç9ò<Çít†ëÛ{\ÝÞâãÉ'Ÿ£T3L† ·ñüé.^>gûϱµ¹‚;œžãÇ_Á«7¯ñöí[œŸœb($F2ÅÞÖ6ÆÙ '™Þp˜a{û)ö÷žcwï[›Ûi‚BYäåÌ{9ø¨À] !|É:¤ÜÏ@ÇÕ!{$±d.Xf@0KlìP ù¹ÊY§ `y®9@9r3›«7×øåͯø?ÿ^½ù³|Ž4øó?ýû;Ûxþü%ž>Ãîö.&[Ø1ŒHì8¬2(†ÑÆ©Zn§ó{©Oþ%½D0R¦È<Ì žQ‚Ò<>1`–¤ÎhÀbQ*Ü(Ü3\\_áôôï?âääÎ9òîÚßÇógGØ}òÛã S›­–JA9Wqíú îþ>I\_Úoߦ«KÂèš›ÞÏm+ú€ÂnßVöèÍàºN—/Ø2pã1@Ï:àIÓË-¤ÚÌu™M_"±ëcð,—øý6öÚºLŸUÔº ͪdì®=dßÞ «F_%Ûm¨ÛG%®bUu}ΪôUì°UìÒu¼Ël¤a¬ªæFJì­CŽš„¼Ah{ô6X2ŽdÆhX£¡ËºTÐ¥B© ò½Š¤ÎeY"ÏsÌæJep}{ÇŸðþÃ1®®o©¡ÄÅJÿ´>P¥=Wv­f+„<"µ¥ý@UŸƒ“Ƕà"öëõjΫtÝ>϶øþÇàQŸZ«ëøcÆV{_¯´z´ÿ]ߜؖ†µ;I±l=Œ­ËjlÎm¯®¹Yk½tº4ˆÃÿ~¨âqÎC’$(Šbéó-»¢®‹ŠÇ²·¾ g|ðž*ˆ6sŽ‘ÇAÓ@€sz À»ý›bËy6‡`uQB&Ĭb1TçåY 5ƒ($4ôù2µ 8Û°=Ì¢Ö5é‘hݘeÓ]€I×϶ýºÐ*m‰–>˜-0Åš›d]ËØa5‚ǹÆ»¥E̪n×2ûU“Bóºð¦ì€¬£ûÊ«G£ÐÇ Êwkଠn.3Ù_åo'MtM¾¿>{®FÈa`*9­ž™…‰ƒÐ’W|©àAØ:®J–ŠÏÑ€<Ž k¥âX¥4S; ë ϵ±œ¬—KtXí»öJ“î}ž+JT¦¯æ…B^/ûsȵAYj”ÆÀ†R[ªDéý°´­½çœ%&P•VJù¯{lÄ~cÖÀVÎê¬b¯±JÊ6"‹–ˆÆ`Í mø=…š¹‘ga¸XåRTfÖäKe뮊%†ƒ”-F–Of¥Ï”°œø@,t=kŽ‘î£,Å(ñ –OìcVƒÁÂ: ! ˆãþÞRÅ ¤γ¯8RIrÖDÐ5Ñ ×´eÁ±BÂ':ßIô¦ã0°Up€±–üL§KÀ)HNßçttÌÂ12¤wŒÓ}âIša8ž`2ÙD:!™LÀJÆK3²Òl ™&CϺBÈ”ü®d&¥gJyo1N”8WµA h²Ö³ y;ñˆœoºÐÍdpR•8¼„Ôyà7¤>Yƒ²Ð(”ñrÁ)®îpýpƒ³«s|¾üŒ×o^a>"‘_={Ž?|û;|óü%ží`kk *à׋Ïxûá=~øáoøåÕϸ»¾B€gã Û›ØÝÚÁx05ÀÝÃóBC ‡˜ÙJ¤¸z(p;¿€H$†Ã 2Mªù£oBqÍdhq¤IÄ„ÞïLÔ ,á£àycÖñrWçÀƒ‡„±Ð¥"yQàaþÅ^¿{ï¿ÿoÞüŠÛ‹+ ’yù ¾z~„í öptô“­m)e Æ8re=ÝVÞΑ­QÎ(U’åäsX”Uòo”,(òRJHéû9¥qNã”­<òí O }pPºÄÝýnnqrs‰_ýß½sÀþ“}¼xv„çOŸak²‰'ÛÛȲ © 4 ÃHN©•BQ–¾iàb½c ¥ ¸ ‡àˆ>P‚»56ݬ^_´ÖÔÙŸÍQîîîpyy‰ÛëkÀÖd‚ÊëªÔ¦ò/çÏpI’TuN|ü]M±e¦Ðë2Ú‰j]é0j§ú¹¸ŠµîÇåÀÄo®:ý2;$™},ðÿŽ?ËÌòã¿ 0,ï Ðg]Œ«¯þ]fu±¬AùFØcþK€Æþ󮲚 ¨Ø·N oŠë˜kÀf]¹^Ÿ ÷2FÕ:^]KX€ÙüÛUr>š/ •Wi¶EQ ,Ë Èb2©$éRJ¤I†4¥´ãDˆV«o¥9ZW ˆÉk¼o£Õª,¡ŠÖË­Ö0>®Èæó³9îgSÜÞÜãÃñ1Þ¿Ë›[hgƒ1OLöëµã­ñ`«T›a´l.X?}­e}ië {ÆùdF„†˜¯Ë¢tTëLïþµH ]J"䕇cöןÕ&ýùïS×­ÁzîR^u ñžÑD ·xêòîêúðø½*¿pª=Y ühzšNÒKX¯¬]~ eY6ì›ÂçÅM¦e“\ôê‚{``õuܺ&è6»)ÆaAŸ_|«É¬Ù5x³[bÁ$ÁíB”# Ÿ’$­¢JÉK£Þhö³UéнZs°ÞÃÎÁ;Ë¡?#hA—ÑQ»R`â‡-ÖívÑñtä—ÔxÏ’ ):ØP´á×ì®…´ÅV¡ØE‘o$a̵ϙwDÇ“_—ù}#, ÓqÜpu¯YÛD®)Í« ,O LÙDÝ[ñÖ«ºC}f÷1®GûüWy‘ù0âzŒtŽù1Ã[I…žùÆaÀyB›0æ*éuE(ÉÃøsU€% Wèø[Ç`¯60Ú +,0§Œó”`ú½Òä//”ùÑxKkƒ¢¤M}© ŠÒÀ8F •öFî¦ÞX´Ù`™J2)$#bˆ¡´=fI EþFÄ" 2`§x”r ¯ã¦déÓ×dð´ñ _,i©™™ÍN‰lyôqÎ!¸€¶¦òä’ÁO† ?*—Rº|úŠeLŠ*¡1ä½qG›hÁÉŸg RÁ‘ ò®’ÒG¸[^lœ;ÿE g’£2çŒAròÂ’œƒs2n—ÂÁIc(ÂXp í=ŒÒ„ÃXCRH«gȇ+!ÀHàÚ³A ˆ£TË(hƒ2 ²1’t€l4ÂÆd ›Ù&I!³™s§”˜d)’lT²K‘@$8æÓÕ„cB´»Éð¾¼.ž™ZQd*¼ŠU`f(¿­÷‰ iž (k¥É“Â8ÜÝÎ0+îò9.np|q†ãó¼?~ƒOÇï1¦øÓþ üö;îîáÙÁ3<úV;œ\œáÝñG¼}ÿo^ÿwWW`¦ÄN–aok;[ÛH’£á7·S|¾¼Åùù-¦…Æa<(‹›9†cò»b’€‘potO…t`INã<ñŶp¡,}ó)‘B°Š}î¼|£š³Ðég^kÁ9¼ÿ] c-æ:Çåõή/ð׿ý >¾ÃåÙ9Fi‚úÝ7xqø /Ÿa÷É6±1™`¸1÷æìLXFƒ; (ÈÄ΀i‹²˜ÃiË”ÕX˜BÈè¬ÀÒ @oµÖpJdž‘Ílèòh«`ŒB®rÜÞÝàøä#N?Æß_ýŒù|ŽÉhŒož¿ÄÑážlmãàÉ.v¶¶Á¼Ç•*KÏ¢%ó]$ÌØÆqWæì~>J"“ö˜µT¨5Ó:›cÆ[—Öyžãîî·×7˜Íf¸¼¼DY–H„ÀÎÎvww1ªÚ¨òk­©á¸k ¨éÕµLfѵíbbµ ]RÀBˆ»Ë±<ÃZÝ ^-{­‹ÅÞ·aîR´-þYL‰vkyq=nSïz%1íã ¼.²]¿u^§/ø¾ÔÄ{Y-·ÈòÖ*àg)äºì™>™R|Œ}¡_]óǺr®eŒ°¾ß[žêº}@Õ*ï­øùë fAbW{ï:çP–$O/¥¯Æ_J)Ì˹o†HA@V– 1¥lonVsb{Öx2×Zû¦Œ‚. 3eÞ $ƒ2Ô\x˜Mq7}Àýà Ç''x÷áçW8¤H+¹a’$d A± ^da_¹Œ­Öµ_¬Æj3vã,´bd¢Ù…dpõzË|ödu;ŒÉÛóM ¤„¹<\œC¯Âª=æcõð'MÓjmh3—Â5\HW¶¶S=Ö7¾âfHÛÛ=´©µ±ñµ”°Ì‚Ë¥™‘Ãk%´Œ6^Ä  ¤ÐZRÕÜ"Ê t»Þ‡s iœØ×¤¬UÏ[Ôûöb'Z«ÑMy]<Ú&fíÁÛXµ»umC¼ödÑ.Àê”·Zc[1"CÒªàI2uI'ã÷ïºÿBˆÆÃð€Î¶uÀñ‚"eZÅQ××àþØX+Ž6h¡éþsÞ,€IâÔ^xÚ)’~Œò6u²¹0­ ±Ýщ¾öCÞîœt-æœ /vw¶q¸·­­LÆĸâ '+k´ ž Šä¨e £àm Ð’xQ'<‰þ_VIŒqmÁ%Ca4„àÞÖ@PcèBúgÿa:ÅTÏ1×9ήÎñóë_ðË›_pyy‰Q6À×G/ðí×ßàéá!v6¶1Ž0LRÀ:ŸÀê =xRúæƒed»@è jŸÎŠ&» þû`d˜o,ÛÁV¯U®Ùb6ZÇyhŒÔÕ÷rÁëëk\]\âîîI’`gg{{$÷€)bñóÆ®wm–Ÿv2œ“r¶lCmŒjãÖëzØ”¸Ú_ÆšVbp7HÔNC\P4m º»R’«Ë¬1BãmÒçËÙµÙé29ooäÛömDŸGK»1ׇízì1¬­ÇÈÁº®OW(Ï2 ªë^ô´?&Ml™Ú¦ ]&‘í®Kù@ÓÕग़3f­ÆàqíƒB€„àqßöºêO}ïöÄj??}Æöë‚wíïõ…05X´wßK{£ôY>CY–xxxÀÃÃÊ2¯%_¸½½ÁíícØob<ž@© ¶·ŸàááÖZ™TÎ9Œ6(µ‚ò ÌeY@åŒòÒxÏô FàÚyYâa6ǼP˜Msœž~Æ›wðð0#∥ë,„cäÉ]P¡¸†œsh„\­’vyì ÁIq%,4Œ÷ÃÍ‹v’Á€šÔÚ1ï3Æ45Ld ÔéšçãP¬ö^;MÒ†ßeC õx¯êÆ…mL8çPJ5|'c_{µ AŸ ¤“6®“5Ú`]{.‰÷ÁmrM|8ç=zûÞCu¡Rªj*…ñþ­¸¶Ia}ÿøJíû:úüÀìpn±»¸ŽD< ¥ÈÅ](ߌ&Zf‰ÉÃÀ )Æ Ì‘´ÐXE¦çŽÃ2ŽÒX”Ú / ãžmEàb`@iz޼´ÔiÒe©0ËKò¾b yaȰّœÐy¯,kÉ'ˆK e,”õ´aá-÷BÊ2XK^OÆ’%ú/çˆlQ8Äà$F§ƒñȉ©^Œ@#îóx%G¶äôpÿ9kú—T~}þ{³§Ê-j‰`pœû=be9¢‡e œ1$¬öJx˜Ø-$£P 2Î& ‹Lö-dü´Ó•îµ’' R òòJ‰,õó˜ ‚X4̳³8 ×à½e!ùõ 8«a´ ˜73gÂYpøÛê ArJÜñw0Ìa8ÌŠX1ÜB¦)&ãM 'H†# ÇcÈÁÃÑ&’áBH˜ Ò ƒá2M¥¿ñ¥óœLµá\ÊV€%=qX·w«È¹,dEá,œVH@ ‚ó×ÅA WfÅÓ|Ži‘cV渽¿Çõí NOŽqvñŽqvuÆþøõ üÇ¿ýþðíïðÏß|‹ñ ƒ-Þ½{‡ïþ ¯Þ¼Æ‡ÓO¸¹¹CbŽñÕÑ3ìní K”Rx˜å˜•%~}õŸÎ/qy7ƒÒ€VÞ·ò!‡q3˜«KpɈmeaÀ9Cš¦à’šU·m<AшÀˆÁpŒA–a”&ÈGʲD"$à)‡ÌR8NÅÎ@&‰ld9Ò,Áýü wó)ÞÄÿø¯ß¾Áíí5˜¶x¶»§{»øæù×8zþ{ûØÚÙÆh³ÝuÂzÂÕfðÿ=º¼X×í²/óE²ÖtÖ¿ëÊçËpúR©ßoùÓö„m3%VÔ¯{üëv‹$¾|[æC»Lê´LÒû˜{´ª†^ÆÎZ7-}Ùõï›>uu€R †‡õg6›áææ÷÷÷ȲOŸ>ųgϰ¹µ›ûkÜÞ^ãÍ›wxÿþ=îïï±³½ !„—ŽKX›U²0ÔÚ@i…Ò(2jŸÃË[‡Òš,9Ê¥6x˜Ípusƒ““|ütŠ››;”JC I%¬·ãÇŸpÑ`zöÍ_}>T}÷£žáÂ^ UŒõr8㓉5åÚÞËyuI;i~6aMʰ ̨.BH{]æÉÖ“m¯¿cû+¬Sišö^§¬PYágJÏ ožW`+ËréYvi»¤€1Ð%Ñêê¤Ð`qôå+xÞ>ˆ@oó2DF×7±–\4©¼Úlp¥>ɨ@² BÐhÑ[H`ìÔ± úL¸Yk"n³ˆjʾx·íà,ë-ºÌÝ ,<ñ@b<0lÚàU >± H‰¥fË>·Û‹u^}çó¶k_¸^Â=X>³ žòÞ.VSŽ þ(:úªNiã߬I7 b|ÜË^ã0¥‚ôzmîj¶ÝNò¬±–ºÆ:J,d€3Ê((K~SÚXX”‡$ úíªtÀB+òî1yaP(B)ò¿ÒJ`Ĥ€u>jžKŸÒ%¢ç(´ƒ6dÖH ùe…ŽU ÎÚ|V[OAf0Ž<Ïh!ŒJ@L-2UâÞ\›„íµggÎ{@Å#™';ó,.Ðç}ø<“‰Ã9Jd &è‚…¢7&gAµJ‹3 ÞÌ€ º&Ò„¾ÓfñþAð`Z¤á÷Ò%Æ,ÉÔ8÷Îã@š ˆl€Ñdˆ4!Ð(•ƒDÀ2 zî“,ñqÆŒÒÒü|PkÔéz jInɤÛ8£ÁAiÎÒ5pðÞGµ§©ñÈðØY g5¬Õ°0Ä“R‘ oN0ÙÜÄ`c9"IÙÙxr0F’ÒkÉ€ØVY6g²ò&j€Tá¹@ÛÜôÔ@Ř[I y?0×`]0pGl×À´c°°¦–ºNóó²ÀítŠûbŽ™*pzu7ïßáÓÅg¼;}‡ÛË3l§üó7/ñço¿Ã_þðG|÷»ï°1Ù‚b ¯>|À÷?þˆŸ~þ;Þ¿~…éí&ƒ_mnãëרÛ;ÀöÞ>¬”¸žNqryƒ·Oprv†y^âþn£,¤L0à’ž ÀPL5‰ã`%É<…àŽŠü¢èù6¸uÎwg àb‚#Mà‰D’P<f RHoÀ/,°µ9ÁÞÎìïbóð)’L¢€E®5\ÆñË«àïÿ;>¼}‡»Û[¸Rc'aóÉ;»øæw_áÅó¯0y²‰Íí-ˆÑŠ¥Ñ<³Œ’øJ KàUI~#´öiÀZò „ƒcŽÒ9}‚“²X…±$„¨ ¼ ˆ×çÄ ”³ƒÁJk\Ý]¢Ô 2IpS>àÝÇwø¯ÿú/¼zó Î9¼|ù_ý»›Ûøîù7Ø0‰qì“ÜP'½Ðe˳‘ËσðmO«XöØn -=Ú,ŠEíLÎ{/2NÏ”6eAò˜»Û[œžžâââÓ‡9ÆÃööö°··‡ÉdR™ß4†:2f´·Ï!xzÖ ò~ï¦U‰aËtmÐ*þ ›¸eQ—,³ dûRP©OÂÔ®ÓÜ÷x•ôoa™ìñK¦/¤›Ä•À‘ûÍŸùX€o3«ÑÖ×H}Ì5ü-©‡]ÏȲñ»Ž~—¬° ŒÕá qxP÷ùÔž»Ëâ–1±jb©ô±|hÖívÁœ¾Ô ¥*1Ÿç(KUÍ#ÙhŒÍ'Øz²‹Ñ(…” ƒ”ãöúŸ>pÜ?Ü!)ôÖ° L"¿Fk-ŒöfðŠ3Ú*¨²ðžWQ¡¥Zxž—˜«ó¼À,/p}}ƒŽñáÃ\\_Q3ØL˜ã4ÕצÃ#æ•kx'Y†³ðõR&;$Œê]²n`ž Æ¢y9<Ç®ADà=ÞÐË€ÝöØ4‘B«Ïϸë÷bâC;}¶­2j¿IbðiðÖ§Œ3æ ì˜ÜígÀÕJ¥0öºXn±Zh1½Ðö†Þµ¬°v‚Düo·p_±”aÜž¿e׃ÿ;– .›hÚL”ÊsªGûX](oÄV_”nZqWŠ Ñïø²Äà¥ëËb}ƒ¨}£ûnà²Ec ;ÛɸjÓÛ G<¸ú²®gñß|i±aŒm€#ô;a·p\]Ôæ¾…®+†yµ9FœcYg,EŒ%°Ë¡Eo®þŽV—¿B,‘ hãüZ¿SÙÛ²ÀU†î«â¢—1§%?0VuJŒcUZ›õ¬+ãˆÒl ÷ß'mþ\i”Ž£°:)M&|¹6”ü—+0¥Æ´P(rÚÌjE –1¥u°Æ³©8¯7R@: ž¤`p^f&) yPµµ0Õ,ª Ac½]çjÀÊzÀ„Uæ£ô=ëÍŠ¸ô,³ð¡‰Uñä\]Xä@A÷˜X7Ü‘”1ï Å)ˆÁ%xèjИ”Œ@Éé÷%IÄòrÕbí E]˜¥>ÃXÉ}p,˜ã@ªj…΀äĺrš8B2ád[#pîPZÎ 8s H$I’T@ÛZ>+„óò? [Ia5¬³ÐÚU ɸ¬[f v)¦?ç:°†d8N00F¹ŠÃá†ã 6660Qª`:"Ï+žfHÒ!Òñi6Oɬ=IH™B ñËzÄ7hÍïœU²ÀFÊæ’ù³%Vé|U‚$•àÌqhLÙKL‹ùyóëKœ^œãøó)~yû'ŸOQØÙF‚ÿŸÆþó_ðݳ#<ßÙÅÓ]heðúõküøë¯øá×_ðë›W(‹9ÆRàÅÓçx±¿‡¯žaggL$x(K|8ùŒ×>áøü·w3Ì E&]&Eêýɘ¡.®äÙ ©<®Ò4…ð ¼A–xùv Ú”ÏEétŽ|>‡ÖSÏbŒQ’]*ÁRBÑ-³>åÒáùþ!_ñÁ!ö67±ÿd2Épv}‰«›Küðó÷äquz†” l·mJŒÒF£1ž=Óý§H7Æ(Áp——°e‰Rk‘€!¡M¼>àÆ‡0XWå;ç`aa¸G3yR%OJFI‚A"ØfÑt@ ’ n F(ŒÂíí-s°¸›ÏðùÓ~úéG¼zõ ×—Wxzp€ß½ø û»{xöô/ž>Cê¼ÜÏÊR²]i 8)†M;0$‘0øŽ‰–ÇUHéê wÕAkdT¬ZWwªK­1ŸNq‹³3œŸâóçÏpÎaïGGG˜L& °ÝÕŽ¯oË-¬#}`ÛºMÃ. P“ÁmõGÛ¨½Ë{3®7ÚÖ2ÆÑ*³ëîjÓn™ŒqºùKA¦ßRõ3ΰô/«'W½Ïc}©~+ˆµî^¥ë¹ûóó>O¯¾ó]÷v)WúêÒ®ÏìbàtBÍ{´Jþé–ÞÓU, e{™u}Ì–á1a$ì]ÂëƒÁOž<Á³gϰ··!²„#IŽŽfx¸Ÿ!MO`Œkì{(õ´„s 9¼ÖԠѥ7ƒ/fâ!iÐ8‹ûé”q˜Îs\\]âÓ1¥Ý^\]Bk‹4x…<³KWÊ%Úé¥ ù®û¹ ìlŒoßШý´êæ3u=é«^Ëj£rVÝ[»–t¹ÏÂeAcÙ½?ê Øi{/.Kgmã0mÐl™Ì5ëÛ{73‘T¾Á¨Žj…6^Ô¾–]²ç®sêód^vMðm&V[âƒRÊFDcõ{á$¼F}á⻓bnªD´5± *† |ì{¼rÉdßg¾Þ‹‹5&Å i.Ë ×Säµ Ïx£gYáÕ8NôS†—¡ÉõÀ ]¥õ„ëoL|?šÛ`ÆuéòÛòÓú@Â6ÖÇ(kêŤÊ> rU§gÕKû;7vébÅZc,ÖF·AÉøµ¾÷äèÖ¼÷®azÇ”sà,%#w¯–«Rù4±©æJÃX@) mˆ­dŒE^(L Ã%æJc^”ÈU‰²Ð˜¦óóÒb^”ÄÀ(Jeèx\i+DÇiò–L@øH`ÎXdé ~æã®–7odì¤ ´ÄÖ±Ä@pÆ_kcê/k‰fX4ð,Ç`€”÷øò‰©õüÃ*³vgÃÊçwpb6HÆ!$1¥88›sK‰‚œ€ )ø‘Œ$Áá%}tÿÒÀ„ðwuÒ‰ƒ˜E y–9‡$¡ùYÀBà%;ˆúO4$„d0†(àœs2?·©Ò„c%ä3be¥ šiJ©q‰äà¶§¤GÝ0g`÷‚#O1!„{¾é½Ô˜¸_œ*-,QØ x‚Td 0 'Ȳ!D’! ‘ŽFH³!²á"I!²ŒR…ð¬3FmCØv!©Æ{E(™á×\*DÕIŒÑk¶Qíªq³`jë,œñkã0Œ¡0s£p5{ÀùÍÎ.Îqqs‹÷>àýñ{|>?CžÏpxxˆ?þá_ñù#v·&Ø}r€Í'p–á¯ïÞᇟ¾ÇùÙ)~ùù'¨"GʾzòGûϰ÷d;GcÜ”sœ]àÃñ >žâêò³i€c(GPJSŒ12K5 p”9L ³;[[ØÝÝÅÆh@ ƒ$˜4Ïg¸»Ÿ#Hf¸Öw¥Aî,ò²€ÕÞÿI2fQjûb Ã4öw¶q¸·‡ù§ïðÿú¯øÓïÿ€áÓ2Ç›÷oð·Ÿ~À»pqú 0›Ã ìln!Àl6ÃL+À<0‡ÓbŠëZ»3™Aø¤ÍÑh„™{ãÒÑùAQXw4ÇX¥|Úž$“i&Hj*¥„iÃP|Á‚-°20X«P˜¥R˜™çw×øñ—ñÃÏ?áøø{;Oðç¿ü ¾>z¯ö°¿óƒRÏf3pÐÚ`¥5”OE4Öz?CŠLï}%¹—M«-wXt`–ù æ:i£õÓDÒòu™ãêâ777xõŸQæ†Ã!ŽŽŽpxxˆ,Ë*ãû:¥+>¼!ml3È–WíºÃ?è¿®õ·]˵™WñƳí Û^ƒ»€Â¾ã~Œ©íº²°¾†]ßç)lóØ4Ä>`¦ThoÒºØ0ý³ŽøoyÿßÂ(ëò¤YàZçWSß3²Òê«}Å–={] ¬þcm¦m÷P¬ª×WËöíäïöþq™Ù?<ÂѺFó5~çD’b0àðà)žb{{V+”dÊ\az7‡3óyÁ`@¯„,-”.`´#£v­¡±®Ê¼¨“R}ó½P%ŠR¡P ³RašÏqvvŽ÷ï?âää3®®¯¡µü‡áU 6.¬…6ÆïOÂ.•Á2ñ(Ë™¾{_ïãiÊ#ÿ´æp`ÔlæQºOÚsÁ!s]Vtá=–0ὺTA}sq×:ã+]{{yvw‘qºößíg¬OÜ·~µë˜.ïª ŠÃ¨*æUϺÐåÁ·lž‘틟plâÞ%óêJ–kßÀö…ˆ¡`ÆÙ(èumJa«{…:>LB«’Üúü—ºÐ×>o¯¾HÏu¨ÔïÅ›©qqÓ6X_V`t ëvŽÚð‹i ¶¢kV×ÇSRƒ?OûZid¬m>œ1KÆUi m¦UlÒÙUTÆ€Q#° ZÕalë‚›ï½Y_'9¥Íë£./ë6ÆþZ«$ñg6Œ9‡Ò¬2ÖÚ¥%o+뀇¢Da,ŠÒ /IÖT(ƒYžcžkä–cVN:/0Ëçh¥C^jXxš1àÞä[ð„.¥””>'3É#óà`Ö++”EzbbvxµµàÖÀ îéÏðtfëX#ªÚ\à˜ 08oäN264¤^*èyßT[O;8„_8¹7xG^ j1H2l÷Ij‚K0A$ŸèÇ YµÜ#a‚~”$$€Î¸3€|Ë'é›ã’€dŸÄÂãWpÂ"‚<€|´¯ôl˜l8À`”‚Y&9²4Ã0K‘È”Hè<«ÂùtÉøy q’RØ'eB’FÀWZCøcs‚{ ! òž=ä9Ä-2¤™Àp˜a0L1@•&$ƒÙˆXXÙ\$H²˜ĶÄF³¬ÿÙê.ŽyÄ¢j¥ .¬9ìÁVÜcY8!¡­ÅLk\Ïðáü¯Þ½Á«×¯ñéô§''кÄÞö6þõ¿ÿû¿ãþéO8ØÞÆdcŒó«+üíÿüÿøõÞ¾ƒ³ÓSèr†Lp|óô)ž>Ãöæ¶&{·0øp~ƒ_?~ćÓO8=9ƒ*4žB°¦4Èç3d ÂÆ*T=#FH.’Dbk{‚g‡û 2’ †ba” p?›"É©Ë[”º2V$5NÃiAlìãðÙþô/Äï¿ýþù»ßãho ¯_¿Æ_ÿþ7¼úõ5>_^ Ïsîìb<bk² !./¯ñùò ·Ó<<`øa ™eÈd‚A:DŽL0Þœ€RˆDÐëç Î.¼< ÞŽ¼ªD"‘:k9$D|òTÄ  KÖ!å² `‚áa>G^ÎqýpƒŸ_ÿ‚ÿóý_qzvÆþýÏÆ“­m¼|v„O°7ÙAÂ(ù•sŽyYÀ8‹RéŠ-Oþ”&³–ß ¨$ry:ß*ÆKW-?…V•Ùù¼ÈqssƒÏŸ?ãää777HÃÁÁŽŽŽ°··‡$IuPèwù[ñ–y>Ãú€Â* YŸœi`Õ4j×mm¶XßaY]¹ÃíÅø-`Ê£¡/TG¬ôðêhÞ­b¾<öØ×­ç¿øÚü†ãê“ ömø¿äxúÀ†Uà^{.\v]×1±_ô¨_ã r¨eR°¾fö*CüU5DèÖ8žßáQ˜F–eçÇÇä/É9˜ØØØ†) ŸãíÛ÷8>>ÆíͽOŒ£c°Ú.ø-ÅX‚Œ,í9tÕXŠ¥jËÔEUsdƒË ,aQj!*o¬°ÿî³­éò n“Y\gú`,[ÆLìÏ}ëi|m¸íSÙ··\·ÁÑå¹×^Ç›` c-öï’¶÷ʽ<Ö<¾æ¼'—% ƒ-ÒŽö ÚÜ6S)¼Ö0‚I\|#ºS B ¢ ><;tÌ]%i[ CWÒC¿Ñó WìdOÒnŠqŒv ¶u L»@µz‡õ&»ôM”?ËúiÈË:}1™‰_ưT™-‚Imôº·ðuµ¿P›B¹HolꣻX‚ÖÙ^6Õ2êäâ"Ä+æR˜ìšš¯›4îÅ{êÖš¨W}F¨³KÍ.Z§µðì ¥2(}œ¹q@®5yXY†¹RÈ•ÅÃ\ašç˜”ò7Ï Ì ƒ‡©Æ¬0ÈóyI”äBpD‹¬$ ž1‡HÀ¥$˜pàR@ŠÒ{\I)‘øzgtŒP61yœsàÞ‘i¦ ¥zi¡ñÝ%ÐG«Žïµ>EÊó°¼5{<á3ˆ3NÌ"ëŸ2ȽìQ0î™ ÄÄ ¯ €“lOp’;K^qn! 铨|2!cà°dŠÎɼ€—Ö¦ËaŒ &`Oòp2sÏR`9‚ùÔ1?ÿRû ‚Ó<ËI¢˜H!S‰Drýqs8b]8CéË>‹ULò©q‚ApI©# ×:  VÈ*”#Ü[Mk2MÀ$ƒÌR † ’@6 ¯¤ápž$²tˆt0Ä "Mà"£·Q“Åy†)è<|Hƒ•á UH·mY!ý–1­yÑÐZ|^Ãó]Ïp’Æ$% fVẜáíù1þߟþ ÿûÿú¿Á˜ÃþÖ6þüÇÁþå/ø·?ý ¾~ñãÑ ‹ÿý·Ÿñ_ÿßÿƒ·¯ÿóÓ˜Þ]ccáùîüþÛßãéÓ#ì>9€A‚›Y‰×'gxóáÞ:Åǧ0ÆYÁ2ÀМ"G’I§Æ¡±ýÀ ÀÒÖ‹q"À26àC X’±2ãSB3ƒi>Ǭ(qWÌq—Ï0/ ”Z{¦E–qlnLðâè¾ûîwøø/¿~‰ÍÝ-dÃ~ýô?ÿü3¾ÿþ{œ¾ýX†ƒ'»Ø}z„ÍÑe¡qsu‹ŸOðþÓ nîï¼Ûgßÿ„$I¤/w$žLx|h¯ß IDATÏ-™p¤’IaÃ@?+¥)R™ “ AgY†A2ç@™e•„2È) b ÝBY?+ skqSÌðþík|ÿý_ññí[ÀüñÅWxþô)ž<Å‹£#ìììRÃ:ˆ„V÷÷wPÜãÆÀò¸"Æ•g†¤S)ÁÁ¥‚‰FM÷ØM<¯Éalû†TÄLÊó7w×8??Çéé)Î.ÎQ8þÇï§{ûØÚÚ¢ßSŠ@R.þ,³gÛ3Îéøy3õ·÷Ùë=¯õÇÚl«.Øg³Ñ¶èúú-Œ«å̬dœ€·Üãìüoß¿ÃɧϘNç02¡fdHš±—˜!¥„d©=°ŸÛ+4Œù£ÇÙ⸵h½Y_÷鯖Ò×(}¾Ii:Úßë Zs{ß¡™Ü‰ˆ‰Üû DçÓ•ˆ7Ýc@*Nåëc›YhœÅ6?–v<ŒÅ؇W9Gß7UˆvË£*¨W‚¯—nNÞÁ¡‰ft^ëRÈu5tê{Þ’Æ'Ô,êÄø"Æ[p‰E[ƒÍÓêèÅ7),Úô²‘-SuVé\YìºÛcî  .3Ë`ßI Œb`û&ÿ¶ÇR×ÄÛð„ó ¦«ñuoOÔË:¦S‚?] Ÿ¸p e ÉðŽ|ȤsXƒyå`À›Öjáá¦k¼¤)i"ïÐþI÷ž<ÂÚU´Äc$kÿlŸ1|ßbÒL¬Çv,‡hzX¡Ál.Ü¢WŸ¤²6t\4‚˜+$@*?ÉŠÖïsýÛ²?Vca0VW€"É¢xEûqŒ‘Ð8bZùgXsGË¡œ@®”Ö0ΡP ÷ó³óÒ<°4¸Ÿÿÿ´½×—G–æù3á"4MM«šÕ=ÝÕÕÝ[ÓóGïÃ=gv¦¦D“Õ$‹$‚ ‚FB¥áî&öášyxDFD&ÈZòäI™éáÂìÞï~bÂá¸fR7TÎSÕ uí¨ƒk ñ®5 1ÝÏÚ•‘)FdwHÒ6y* €‘Ÿí„ægÂ* * ‚îÈpÒ=ÙMÀÄKÌ}œoB{¯Äöz,-äÕ,¼@å5a®IË Olo“D9NÚô½ nY-°ºÑÖX+Ó.iºP”ä `[ö¢È H# 2Ûq^Â;ìõ©ëÙñ6M…UŠ¢µÉ ÀdÃæ”™SJu¤ày B£L$Æšª‚¢T 1ÔxWâ£d/ZcP>MiÈ “\›™´'F/¬0/ž^Ñ»dŒîÐX´Ž)ÑÑu’;A+¢Òô7†Ø²`°9`¸9 è—”=M¯WPö{ôúÛØ²GYŠ|M+‹Ò¥§6ÂH ‘€OÁˆÙÄ,¶àUwŸÉ¥”0ù"GXVËXX1­i³}¢ËÈZhRAåð­çš˜êKPÆx´ÏÓG¸pv›·o¼Á¿þæŸøð—põüEúeƒý=¾¹}‡ÿüâ&·oßæÑ½»øj„¡áÚÅó¼ûæ[\¾ø§Ï^D›’Ê)ž<Á—w¾ç«oàÙËý䡦)”É£K4c-Ĉ N@Bƒ—ö:—Ìö£‚—‡‡lrj<Á–ý²‡)-ÕdÊAUñäù íî2­köLJ¼<ØÃ¥g­,-ÊZ®\¹Ì¯Þ_½ÿo¿ùç/œ£Áñr¼ÏÿþÃÿâ¯7¿äÇ{wÑÎ>Í…Sç8»µCiK^ìîñøé.ßß½ÇãçO©¼Ã–"°ÿâ%ÁCm E1ašÍÕË[ôˆÁ±1(’TUd(aYYk‰Z±5Ü _öô†ôz=6z}†Ã!åk5ÃþèÕ+Šö絞y”EÁ°×§ßïcŒø 61pïÉC>ûü¯|úÉ_½|Éųçxï7yûõœ?{ŽógÏRÚc-N˜L+š áâ '`¶6"ç5Jc:5•R mLƒ A+”•´D²Ú)';‡v=ÍõVö‘N@ã»~˜*ƒ€W’2ëxþü9/^¼àþÃ-ëª,K®Ý¸Îë×o0,{ô ¬Hžœ>J;’c·[–š÷¾’é®›5QJ|=Qþž…a‚F­0é9ÓAáñ'bl-3iïÖZ]¿šEpaxµLÅ𪬨ãM²ÕZæ· ÉÃE’¿ Ó¾×% ÁI˜ê«Ì¶cЭój›_‡ãÚãX•ÈõSm'½®ëã“*'CmOâ·LeÓí!W)WV©^V)N åâø8ƒî“z©­bPe÷eýË:°pÞ [ämqXP‰¥B ×ëQôÄiš†Çspp@YZŒ÷ìííñòù \ ‡›V9‡1Šªš¤>¯!8GÓ4„àÚÇ9G4J| «šÃñˆÃñ˜Ý/xþò÷ï?äÇHbÑ&rZ—êË%ýmÈûiØéþ9r2o°õj§l6Eò¯@E“ö­Ð‚Y*¬WeI[ëר¹3VÑ}ódÕzB¯’;®ÚºÌÔE¢F÷wu½¦¿W›b)H•1›e ¸,ûT)|i·Nîçc &ïÇ|vÏ‘!ÕÛ‘àœ ÍB¤v *BÑ+Ñ(I!÷B"Êá`:ª#@Ýâ¾Ö}?6³¨V雫ªZ»©gà*¿F{Ck :'åÒ kŠ̶há2ƈø ÄP5o<>wb;.÷1™Äj‰¿j£¤ç̲;ˆb—ÙE/—I±º´¹e·9%_Ôƒñ€›ª”¶”𮑛~VTè0—Óâ|<è2íµ×-nÊ¡eU)rzCj̳–8ú¶YënrmýÉéQ)AçÒÙ¦f°.±5ŒŸ—¿© ˆ{ÝÍÉû@ˆ¬ y2Çà[^X¼Ë’¬ÄâÓ3“ú¨ „:-º0«VC­píÖâðíÆ›$–ÀS±[Ì…dV “ºBi+÷©¸‰ÈyÉð=jƒó=gàaˆž¢F\ØSéçÅCU74^áƒøW¹ ¨jsUŽª’”‘Ñd*É#•g<™2õ¾• 6ÞS5ÆËÏ{§ÚÙÒMh …oB2û Æ>´W½B@›¥„Ñ%©O6<–ûOdu’bgµ‘{ Î3bTx×P¤fYE(‹¾˜¡IP3t“[Á¶gåg½F‡1­·ŒÀ;‡#(ÞзCŠ^!¯g4ÚX% t>™¬+¥Dæ§ÓziB¥J ¨Ð°QYŒé£Ui³ 4A®•*-à †[›úý^^¯Ç` Ÿµ5½ÊØù!@ë±ñQÞ‡V©-ÂïÒJÞY£Ç\3+ }ú'µ\þ§:þVDO7¤0KG]ã°…Æ`hkfƒ ýÞ{/)Œé1'‡lªÀïþîÞ¼vƒ_ÿ݇œ:u m-/öøó'åö·ßñõWŸ3}úˆéÁ Ê¢Ïå‹ç¹té W®^åôésø 9ô†{÷žðÍïùþÞCvŸ0ue z¶Äû¦;æØB( iz"F-ËZ§ÂÇ{Ïtâypÿ®1œ=µC¯´h­Ç<{öŒÇãc`4:  ¶§pÕcgNŸã·ÿðþîýxçÝ·8þ›ž¿|ÆG}ħŸÊÝ{÷(Ë>ç†[œ=}Ž‹g.0ì xù|»Oñõíoy¹ÈáxBP[”âe×Ôè$¡o0 WF‹DÍ9¼oèûRØ'Ÿ¦ˆ–5î`Ì~#2ǃþ0y`eÐDËýØ/±eÁpCÌÆ77lllPX) ½a VÙÞáÒù ”Z@«ˆåÑÓ]¾úêK>ÿâžíîâϯ]ã­¯óúõ7¸~é ;;§¥ÐóžÊ9¢RÔ1Ðø¨ˆñ’zšS••IE±N’\­“ÔSÀ+”°)IàºVÙƒ4Éc;uFöÚË€«ƒcÚ·eÔ ÊŽóži3åðð{/ØßßçæÍ›wfMøN\qÍg¡@«€ÌU€ç2ߥFê+€žÅ¡—60÷Óy›vÉÇÈWN³Ïþ'³ïºR¬U@Ø¢—î¢BgöóËIªõ|ê>¿Ùë9ÌîôÖ½û[/¥ÐDß0:Øct°—ֽ؆ÌĨ¨}‚§žxêjÚö“®©æ,@-ØOFâc[9žïòàÁ>zÂ?Þ•>W—DeH¢ ÁELòM•Ð yoÆ–©7Iö*³ô“9¹_°|éþ½ó9_×™:"õøä%ŽÚ`­Jƒ"Ê¡1Ò¹ÛVxt‘˜j[„b¶^¯ò©ží7¦ƒcˆOl“vCGÔ‚`>8Ó!Ã#Áç~=­:ñ<“ôcÓú_y—Î!1õó…Ʋd?9+àž?jq#ª 1ôÇñ95F†d®‘ät¥g„¥dëT§^\jX¹G›|?!]!í. ¸ƒ­A‰b*DÁ3/˜w‘ÂКà#Þyy?JãÒý¡×à˜Ã®RÁº,2±+ \¥Çì8ËÁ“J»]é—±·Vm ‹ÈýIÌÐg7¨ZKÓÍ'-Z‹¯·(‘\»–i}WMV£­[ÌCðKêU2ÐEšäÃÁó}>úäc¾üüsvŸ< øš¾5œ>{k×npùêëœ9{Ë£g/°¶”NåÅ‚#*‘yš4ÀÌÉ­:y[u?ÈÒäÄ€%Ò>R(†ìÒ e‘gU' _‹Mg‘ŠÝ€µ–¢p´Ïh4b4ñäÉîß¿Ïíona­åâÅó\ºt‰×οÆÎÎý~_†hAµM]^Ûºl%«$àÀ¤7‰Ùý?ª£Û|È ŒžMºUçß#>±‚Õ£rV‹Å¥õ[ëyå¼ EõrÍe>]'e•¬ ®ù¹2·uŒšŸ"G; CgVë­’)ž\&y³ð“JÊVÙN'}|UFÕrÌj§e=ØÏeÀ­;‡‹÷÷ªÔÌÅŸ]&wZ¿Gß¾ Cl‘1}Ò{äUý¼V1—V-—'®c{ií?íÖÉ —<£—sô)e°•5'‰sÛG kÕ9ñ¨}¹?N^…ŽÃÑ„G»O¹ÿ>÷î?âåË—¸&Õnè¤àHÇѤ“ü±hWÒÒºšA©~Ö#‚“ >³Za­ ™J#‹àwˆ‘ÄÁGQQ¬0óõìZÖùZÇî;®/o÷ôaÌ,¸dÑsqQr(ÿ&þÀFé%J!ZöX÷x3ÛªË(îb-ZëY_œêçÐøåc‡ j…]ïáљզ ¶0TMº‡Ñ {¼R çOg¶P —]wÒŸU‹ œ]A‘^•ê·h@v”Ysœê¾Ö"kj©yL”õeÒ³U~N‹¿·ëÐ¥ËæÂ,™@¬ºyóϬÚDNÓºì},KÅè"·«^w‘θ®X-{¯­v:§« ·e?säý.\¿el³£×<_Ã@¦gÄŽù´Óù=Ìtê¢ N“ë@Diß6Ã#ÝÖç+,ðx' ÊôÜ&– Âí äKza…uã\#€UðTÞSGAé] ©ª=Óª¡ò‘Iå©g: Iúç¨'Q»(aZÕubTEœ C(MíP ^ zñÍ’ À§¿·Q¬Ð³Œ1û9at›ú6+%r<«‰‚JÒM“$o ¤ 9Æ>ß‚îIú`2QôAÞOög ѷ׌âíÛÔ•ô÷.MÚcb;å6Æ(Zÿ&›€"…—†Ñ”ŽI΢(J¤Èˆ1`³×•ÑX ¥Ö(¦°PêˆM@’1m’w–žÝgZ'¦Z»~% \ˆ¹'›MëT@¥s”*«”dFèÔ¹éÐM'Ò¢éc*>Ë[o½Å?þ—¿ç7þ=/^`¸5äÞýùÓÇàæ_rïûð㙳\»~™«W¯c­¥ª=w|Àí;?p÷á¦Ó m œsè¨( 3ç —•~¿ÇÖÖçΞfkc“a lÊ4˜gôÚ1žT(³GÝxF“ çÞ‰G_iÚX‘~'¦ s#ÍØá ` /Ÿ¡BäWo¿Çý?þ•ëW¯ñÖ;oƒ5|öåg|ñéÜûþÜÁ˜^‰3^iÆãùø€æ¥¡×æü4¤¸?¿4eÕÐ7=T”}¼,½ ‰&Ežª€íhf̺Bó6A†5*¦ñC€U‡z¨"+U>­+‡“qòi±»»Ë½{w¹wïOž>fscƒk×®qýúuNïœbPö:µ’§§‹š–¶“غ&1½æA 3ÿ<æ¢:ÄŽðqÖ*=“i„#ÏrªïG,TȲA7W›åUá:‹rÁn*åª0™ã|™ŽKæú¹Çqëã«xrgz~„Áuä­‡Ÿü^Ö5 ËP]fò«cëR ×B'˜^åú°­ó¨ZU¿JÎõsÔW‘0žäëÇS¯Nê…¶ŽT°îggßë;`KÎéò÷Ú .Š @Xlƒs>õïÁyïðMÝX¹—Ì̯Üë9W3™L©êšªÃöý½C=zÄ÷îóèÑ#öÆ¢ª ³áU[‹vÒ¢¹—˪€H™9h’U.{ÒáóyQaŽù:ÏLU„v²2['Vœ¯Zk…¬’SÅEUã½[»vÌHÁZË‘bËœÉû‚EÑ0ró5ŸeôÜPç¨OšZ±N¤~¤Ÿ‰Àsmÿ©”€\Ù ©KèñK^µó&ñÄìÜí¯Õ’e4‹àGA˜_YMJO÷SËø­oL*€E¬vÑ#jQãÙ•ö-[ŒÛÎÕÀñ©ë6É®Ób‘Ñi\¤õ.Ò¯[D7Øã¢.—-¢«"[—™’­órZ×¥¬óÈZö^–m`ë6ÉeÅÚqÓ¬uHu–"®º6‹€Y—¸n²·Zë¾Üཞi­”"jaHͦªù¾I\èÈ÷™©ãeÞqoO•ù†*ä=ÎÌâAƒ«Z3ðÜ4•Lp½€+.8\ Ê…( )¨C`ê¡öA¤‚§©=ãªf4­™Ö޽ýC\P4ÖGD·`ʈ¬Ð+ˆV Õ£0ÃÄÒ‹Tª• øŽsÅü²Bh1|YRFëùÔ²R(C޽ yZn[¬ì3”lShšÐNÌ— Bô­DÔ¨ÙB¬së“XF’(¨¥a$ûʨ‰—UaÀ(™þ˜$s1F%¿+- ’X­é™ì…1ÆShùžÖ7K…Ž„KQ$ÓövƒÔb>£üþ¼Ñ(윒£4|"],­!¸T`X•d8ЍuòÆÒԕØ| Á$Y‡µ` …Y«â]§M\“^ÝCP*yOé`鎵œ0Wä=äË7óš‹@9è³±±Å`sƒÁæÃÍ †Ûbà]ôzEAYö%Nušïf÷òŠõm@~ÜÔõ$Í[[lóšdQÌö+Ý&¸xž?Ý¥ijªIÃöÖ)¶¶N1užîÞåæ··ùë­/øêöMžîÞÄš3eÁõwnðöÅ×8wáÛ¯S wØßßç¯_~É_¿øœ;ß|Ç‹ý¬)™L§‰¹bQÁSOd]I ²CQÍ1‹ÄܱiJf;Ç [yø´S–%1jß èÉÔ74D¬‰\¿z‘k¯_áƒ_þ‚_ÿÃßóî;ï‰×á>úÿ_Ýú‚¾ùަª9µ¹Ã•KW¹rá5†ý ªªæÇîsçÛy°û˜Ñ¸ÂŪ4½”rñÐõ}ÒiòrŸDeÄ›ªèQX¯…qŠ6iѸ(kkÓx¼ç“´ÙP––²gÛB]îgñ kT¡&(8sæ¿xÿ}þáWòúõlonòâÅ þòÙ_ùä“O˜Œ¦œÚØ¢æ,Á9vÝçåècKžŒùáɔֽ>e¿ß&N•VSKÏXÊä¹Õ+ ˆ‡Xc(Ë’~)ìÄÒH`Ba-‹-ðnuÀ'Ós£µXñ7Ë`ÂüÚ“T–V£”êÈö£ÆÕ”ÉdÄÃÇøò‹Ï¹{ïýAÉÕ+WxûÍ·8wîirªQQ£’ÿe+ÆO’þ,QÐʬHì°Û[)­¤!¨åœëUu“^1ä í$;Î¥ØvkKY_üÜþÒMJ\d^­ª‹Ž!ÖX¯ *,«÷^5™p]‚Ûê5t• óñ¦å?àø[€{'e~ô8Õ ?°u×ôo•zWxþ.~ÏbòØ«²ôN ý-¯áúAöz³“<{¯šî¾îº­SˆMSŸä·u·÷øF€*W7-€åc8’j¯”¢i𦡮k&“ŠI5eÁx4ʼn18ï@¡¤ÌJû¬M íno×}~MW¡ Y¥”YæJB°ÂÚÁ´î¨²äý'k–¼F·ƒðlíãÖ*˜fdµÀòÞ;œXK^YÕ¿Æ£!mÊðÜu5xß´¶J]¥Rf`/úi‰ÿtº>MD³ëcL! dv×®iZÅ \\c²W—AÖ}ó×5b$Ü} ØF¶DéÄ2ƒÊu© Ç™=vY;«¿ã€˜Œ.j‘[m°> Jtués‰K޵KÅ[&uMÜ–-€]ÿ°E}ü:äh¶ìýߺ̤}ݵYGa\8½J±j#~Õï$I)í4b±æÌïEÜoj®=DÒ*²Æ8¢ÇÂÜÅÎeb-rµgH·,)¡"y-Å´ÀªNAA<Ÿ’|C˜Lb²^;‡ Ú\ªº•˜©G¦Þ0­<£Ñ„ÑdÊtZ ûªª¨§ñ‰¦-Z[ŒÕ˜dfLòêBÙôþ#Q…ÄηâGà\6hOl²”d—µÙ9NvÎ ¡»k•RÛT àu}Óº \¾µŽØL!UJ@*%ž¢pµXo:¬EÔL7®7gQ**$„˜ ]ö›Èû²—™RÛªÍ3 IDATŠB§>ÑY†Òjñò2ŠÒh´ÉÇ F{Œ‚BCa4¥ Ö`µi›Qk‘cíø§ÉZ— âY*7n±]órSé˜çÑF ëKéºÐèä!¨’q¼HeC2ŸW¨¢ ª{ŒÑ"ã, tQ&¦\’¯êB ¥s²Ÿ1UJFLì¸ì•@[m4:ùQ ‹°“ìŤ}¸µÍ©S§nmÒlPn nnPö“1»FP`fšuùõûÊqCŒuC‹ãd&¾ÕAv}\r‚bZÇBl¥œZkêºf:­˜L&Œ=ƒ-}‘£Ýyx—[·¿æÖ7·¸}ë{/©Ç‡\–œ;‰ËÎsãúeΞ=M¯¿É[Ÿ}Ä×_ͽ{xþôYò~,D˜ä» ™|u K•#yïåCXîµ ¦[S.˜N§`-÷»÷ Ê×D,Á(\ôÔ®"Äšá äׯó/ÿøüã¯?äúõ«œ>—ã1¿ÿë§Üþæk¾½õ9“ƒ=úå€×_+—®²³s_=ÁgŸ~Îóç/yþlÆ;ŒîaµÈ2 tàu$FÓF‹ËÔZÞ縪Ù{¹Õ–Ð8ªMG¿, !0™L¨cÚÔŒ'ìŽØßßgt8itŒg£W²¹5d£ß§×/DV;(»šƒñ!g·vx÷·¸vã:—¯_cëÜi¦®áþé|ñég<»÷ˆs[§¸vñ2ÓºâÁ“]=Ýe<ž²w°OTŠýñUX‘6”e¯×²1û…¤!–EÁ ì%c÷’b8¤,K‰XˆïV¿(ôú ÒÏÆRÚ‚¢Ã²Z®YZ¢Ž xQíºc”nËÖÿ/á>šªfRM©\ųgO¸{÷.w¾ûŽÏžrúÔ)Þzë-®\¹ÂÎæ–¤ &ÂÂÚÄö ríbJ£Ô)sNARâãµ& æV ¡C2gOfíG÷ù%,ÿ8¢½Oòæè‰ÉÛ*ׄ>x×´þ'ZëĈs¾q‹Ö¢’àÿæ§6Ð?çû_Ä:>UOÍ1¯Žeéä!Öß·:IJõ:‰ÑÏe„­R<¬KþÖ ÏÏe€÷ž—õ˘x«@¡U4‹OöIúŸåaO«©uì듎Ïú¼°„Ytôu5óÉl>t‡Æ®eWe†Ul+´i$Ù·%Hº i]­ëšÑH˜²Þ{F“ {Üð˜'Ïž·Õ´iGQ…¤ Á¶båuФ4ÂE£ñž—&ýeB&æZHýË–¤¾,v$&¦þaÆLΞ†3¬ÔÀ™-‚šyXÓ!i„åvC³>{}¸J:¼ø\uSlçiféÚ: B˔ʽ¥¤ª‡¶æ€GKäBëµ—•2Ù²µösœdU’üÓ¥‹ÑhuCüºÇ³ÜB¨Ó/+Ý‚`Ë9â{}átfYH¿¢f=µZd¾)-<«¯“‚ «âP»&Çë’âÖ-jÙ«`1rÙBµÈâê¿/£Œ®E'‹ °Åä¸â}-X‹…΢œð¸ bUÂÇ*°jÕ¹_vŽ£Ÿdó_7ú’û÷ž°¿¿/ÀnPè$±lš)½^OÎ…ó(­(2x ÌĂˀ@D åà\;Ýëy/m‡J:2š¸d⯉*2öxëÝ·øð—ð_>üù+Ξ:ͳg»|üɧ|ñÕM>»u“/wÙ,,×/_åÍ·ßáì™sT•çÁýÇܹó?þð€ñxBôâûg±i=R”¶¤×/¨ë)FÉÄ6yÉT<ÔìލkÇË—/zý‚“É„Q=Ź@UUTUESûvhf¬"Ô …íSZÍÖpÈÖæÁ ÇÖæþæ€Q¨(Š+¼uíï½ù6Û§v¨¼ã‹¿~ÆGù˜‡c\¿zíÞ¦Hì@±±é• †ÃxP”d•=úý>½²l-‘Vôû}ŠÂP‹I&¸Öj m0V.“dÈ:16•ŠX[¢"Œ§÷xðàw¾û†ÐëõøÕ¿âõ×opæÌÙ6)P@¥ØJƒ“AñíÒ´C•˜Àò¨æoLfWuRœçjÕae-iô³jZ§¡‹Žé^OòÈYæX݉ñL=ö–e˜@¸8™>nhxR€âxpèd ÔÚ:P¯?¾eëãò ½úIr±Ÿîŵ‘c‡kSOpýŽcVäú©àæqé…«ÒóVõ%?••¶ìS¯ÈhzÕß·¬/=I¿òS~ßI, VlÇÙ§8WӤТ̤Š>à“´¢eµäº( Í›ºÁY]ÑÔŽÉt̓ǻ<|ò˜»ŸpppÀÞ˪ªîÔXËG‹ D—MÓí‡[¹uˆÇ’\i«˜KÙ¤ €Óâ󚓽MR3¬S?eë‘)!*3ë1—€M‹6;ÇáËî«eJ*©UüµsŒ.çÜ‘=e†P%¬ªüý3) €‡^Òy#:¦~#ªÖ*ÆGZ+žÆKòpˆ‘ЈZDîAß²Wpˆ‘Ô"Ë@=¥zGPQjAgÀ_ë[Ü‘³¢H©ÀÞçÀ>3ë˳AÜ«|Ÿ#&î«nмy¯Z–7‹ì U¨“.«šßî 2i— '-–Ñ»ÀÕ²E8't¥™žTÏz·À®cŠ­^4gŒžåÔðåÓ†e…à<0Û‰ûªBEnýJ´Úã&*]VΫlâ«™eë›ÖÒ³|"›L‹ tv ¾…N_ׯLPšŒÇ!§Øµ„yù÷4½hÍo³,!*šÆPû@ãó´j<“ÆQùÈxR1ª‡Ó©0­ªšÑdÂxZS7‘I­p^wÒ( l2¹¶¦ ªôoÖ¶2EŒ–Í/s'f$I"©Z_1F_ðp Q’§|ƒá覬f Â\,k Ißžw½tãž™÷štÎҳļ ¾Ö†¨Î…”™6 /¬“ÌšÓK¦ï1= J̴ă Óz¤#¬”0äHÌ-i´ä-¬¥° ½BQ3¿*c…&Ô Wb”Oi‚âï’¥D°ZLü³×K7T!»h¥°ÊUBÄXMŒ†BÊ^I@œVkEž£É¬yÞ³¯›1I†—Ü›•–„9£…­ƒG#‰‰ªHIˆZä5Pé=ëdÌŸOº,ˆ\º§’?‚ŠØ^Áææ&ÃMvΞ¥·±Éöö6ÃÍ úæ(@|¾3ˆJ\¤¨¥…ßÉÀkNÓ½ríNvàA%9*aæ³Ù7ŒGSFÓ ‡£ œ:sžáæu]óçÏ>åöí[Üþæ+~øñ6Ïž>ÄÐpfsÈù ;üâíw¹xñ56†;˜Þg/ùêÛïùêÛoùö»»LFU;5U‰Ê}òkK~G1F¢ Ĩå>KɰÑ;LÙk©ìíd­˜é™…@w½J>£ÁSR7žÒzÎô\¹pš_~ðÿþü;¿ü»Ù8už ðñw?ðçþÄWŸ}ÆáÓÇœßòëk׸tí*;§ÎµæÎï¸ýõwܽ÷ýÃ)`(M‰ à=V z=ñfð ÓÑSš5=í’²—Ö‘^™À))ú÷ü(¹ŠétJÕÔ­X{?h)¦bÐDß0žz^ìƒÇQÕœ9sŠS›ìlmò‹+osêôi^»v[–|óíþô‡?óã·ß‡K;§ÙØÞ¢‘/¸ÃÝ»÷ñS‡ Ð Šz<Å”=66ú t*èõz(©ªªeJÆ…Hˆ’0[U Î×<}ú”€ÊgÊÓzŠТ ×/(RB›êY”löô¬üÎ^_–Ea(‹‚Bkúe¢˜¼fƒ«ž>{ÂÓ'»üõ“OiêšÓ§ÏðÎ;ïpõÒe†Ã>EÑc–p ÆXLJ6*Áö,A¼ò`$|Ci$ÝÚK·ì„njYèì×KñÈ|}šÖ%•ØZm»ä°Íû§'Îù]Íꯓ$ã^%<9ÛéäLª“~í§€XK™ÚòÀŠutç•0Âr*]\þª'ˆ^å\®J([ ç¶8À^Çú[ƒW'yï«ìb~ê=ºn˜®NxmNr.~ŠÉÿâów“ëèùÔ'¾f‹ýHN³SJ¡òðÔ?ú<4–µ)ƒVÎ×-ûJ<°ÂœïŸRâ[ä½#4ñhBãSÊx5åà`ÄîîcÕÁíñyasù0³~Ê kK±ž2øÏ4ïè“_Wç:è”4ò±„€Í)CËLº%q‹È|ÖÕ®2YŸ!ëÁ¢e h×ßjH±(ïËÓ°îÅ_g–¹ÌÛª»Ñ,úP-dËþ|£Jké†ÝXÓEzÞ2sýãØ«V«¨ÉÇ%£¬K4< c«Ðüwe›ëüÆÑï#×iEÁØ5é_wÍ›¦‚'«ºMiP‰Ò8}æAÁl`¨´4÷ 1ƒO®ÍbMðói±„”ÔqÀ¤žR=s8ÞÃù³œí7Þ¸Îûï¾ÇÎö&§Ïžá»ûwù¿ÿ_|ûí÷¸ºáôÖ).œ½€÷žÇ»OùòΞì;‚¯EQ !ŰìqþÔ¶77zôË™÷˜OÓÖÊy&uͨª988ÀL ΦMM=m¨&y•‘Þï‹tªäs¥¬ÁvÂ6› z=ƒ|ôàk-ÃAŸ­­-Nïl±±±Qš—/_rçë[|ÿÝw¸ºáê¥Ë¼óÎ;\ºt S4^!æÅ’ô—Aè ¤˜í•t!)†E!ì,e[c»÷£–JOºÓô¼¾ç;7­yØ”¡îÌÀRAšžYÍëæSsõW®?íZÉ{TkÁ«e‰rËêåW]«?‡Á²Žñ󷃳8ñ`áoÁÄ9©ùwø‰ Ѻ}â8¥E×UõøOO>üŽG,HVëâË~n`wÄ9'’­ðc[u½^Í÷* ¬ãÔAËŸ‹=ñbÀÛª ¸.~ÑU´(â{‹¥¿Óûˆs¤%hš˜@Q߆Ù#.‡œDœbÄ#ÉòÎùäw¥¨]“aÊ$Yd¦eït­2,¦P²,Ïœ…nÍ‚š¤GÓZz!¹y”“^x0°Ô)ɰg‹ÖœÝ‡@]{rû/Õ@gWJÒXÛ½x9Ý©»wo¢ËÃ1eëþ{wzUZÛ‰‚4íëä‡Ã­ðXòÞY(cZð„à=™áܽ©ºÀUQGŒÏº7TwYg¨Þ5Ÿ[@PÕ\Ü´æeƬ”Àu¿·ûZÝ‚¨kV¿Ž¾½jÃÈM\,ê‹c]öX¾žË6‘. ¿ìíj†•Zd–©ùdVûÒ4Í,±l>™RPé°¦\GÝþn#þOÉÖ»íÖL0JG ²¯ ±+#.*bðÌüøÄÏ)*CU»Që©«†Ú¥Å³ 4Þ1ñŠ =öÆ5#Fã)£iÅÁáˆÃÑD›†ªbÂNÆ 0kJÐ¥Cw’r#'þR›i¨rã£'âDN§#MKùf–ž¨£øæÁ‹|. ›*Æ€GL •cוF“SôÀ¤Ä:mR¬¯¦V¦b2NÇË‹€Ò£-Ù_kCo`ÛûÔÕTü¾tŒô­Á«˜X?²ákhš€G¦šó0M¾rhW *©ˆ51¯n'?FƒµÙ4R°~¯LɃ`mÑ&ñiÐJÖ,iÀ…©”S‰—Å1A¡“ŒG¡Ñ£°¶Š´Q-`„\Ò²)KÐFX¢aÏÝé:ŸÞ[:§J¡L˜<>™‹ ºäcÓ&ÅH²¦¦WØ”:(&Ù1(¬ž™<­ˆÁ 8ÂŒÅbÀÇtþ½Ãû@Ñ+éon²}j‡­mCN9+²ÁÁ@€«0“Þ¶~WqF%î¦Lk-LÂãèú'màæ$Gõwq°“÷ÉÚ5â­fg‰.$ªõááˆÇOwqUÍk¯]`gg‡ÑhÄ7ß|Å×·nñÅ_ðý÷wØßߥ©Æô´åòÅ \½t™+—_ãÂk Úðè`Êÿñ9_Þ¼ÍãÝçTcOtŠRò;%¸š¤±Ä7£5eÚ÷ʲ/{bÈA²ŽúäM¡‹’Ðl!ïµßP×Ó‘]K]»OÖu2…·ï§\¹°Ã¯ýwüæ7ÿʇ¿þ{®]¨#ß¾ÃÇÿ‰¿ûšÝGÑ>ò‹×®pýõ·¸|ý-‚éñÓ]þüÇÿ—ï¾ÿ–G÷]¤Ô}¬2¦Dk'Ò²2€õ"±ž¨Óh0NÑ×v–šäßâïU´Ç¬µ¦q¼o¥Õ®i„¶îE’º5MCãkÙëUÀG 0Üpp¸Gi ÞþÅ»üó¿ý–þç¦_”ìïóþ_ÿ7ùË_pÎ1lrúÒ%†›ì>yÆ×_ÃãÇ©§ ƒ²?Êz=&MC¿(èÙ‚ÍÞ€í Ο>ÅöÖ›ƒ!ƒ¡$öÕ.0ØOØt-ïèi‹ ÏïRš‚qÕ` Ù{œs”E)òðд>vÎ9êª"ZƒÓ0ržgAˆô“ß\¯(åø¼ãÌ™3œ9}Šwß}—~)ëî³Ý§|ùå—<}üˆªª¸qíu6vNQGxôì9Z) +L/¡tk&+ 1‹w UJ·ê™"¿F¤ ­Ø;%#ÆÄ M@µÂ »Š(ïÉ{‚Ê ] *µZÏRŒ´JìÜ83d×FBSH‰ŒÑÏÕk]¦zN²Êi®F%v˜2­×Çb}—%Z«#¬y¥V3“V5Õë§ëšäÕáIúXÀa]íyܱÏ~~µ—ÓªßyœÈªc[ -Úè5©{«êÈUƒà“‚&‹*ƒÅžcq³(?š·PñGšêuRÈE¯ß¥¬.ÓcÁx™…ÊqíU÷DöS:Éõ:NÚ¿j€¿(á:ÎsyÙ½½ŽÖ­–ƒai*bþ·¢—&ùS'uxS Ó*ïÅQ!€S5M}c2Qï—­¯Sã$}Û9Çd2a2­ǼØßãñã]žìîòüùs’݈§ª*Lò6ÍÁ2ZkJc1Ú´ý¡-fLçЩˌ¶4Á·ÒÆv ‹4&ªµ7Ì„®DO”,RïùÖx=xg¶©—Djö2¥}—Fµ* *ʱ:×ÓŸ1²î[£Ú}lë ežß ž#RÚüý‹é«ÖÙE9èâ DµÔsåz·É}¸Á96 _IÄù" t.Ì)"ªM}¬«:©!´0Ô]lÊh¦u-,-ו‚zÆM•BÊç1„¶R*´aQ|æÔpÙŸ¬©“Lö@Í”‡£i{n›.Èô“5€–ž"Ö .{¥ÀÛõYZôƒêDZ¦ÑòÅØÇîE^ü|ø°j#p‡•¯µf-{½ÅædÝÄd9]4‹_öó]êáq)]¦É‘iãšãZvœë â—!Å‹“•“°V1§ºŸŸl½Æ‹›óª÷ýS§L‹hùýiú¢¸Vù]9­)OåC*ºUšT ªÊ6–¹÷ÔÁ1™V„h˜4ŽI娇kÓºf<2j"OökªšÃƒ±°7ŽjZS5Ð8ð9‰O´6¨” ft6ºõ$*´E…Ñ[˜%@K uTÖŽ1ˆûV gé¸{#ÌN ¼˜ðib—4*h”%÷Y%&ãFEù¬…9d²„.Ðz)™Dw ·—¶`0èÑï‰Ñ3MÇè"¢ƒ'ˆô'( i:£BÄ¢ˆÖÌ_x¡"+$ ÉŸ%%šÔXh!ÖDªg­ÆÚˆµF4÷ÊB%¦“˜¯‹ åð­åëÙ9ŸC%,.i‚„z«‚—DC%¾IÖÈ1Jr¡J¾>]‰£¡@£Û‰“mèÐ*BEÏî’ù¾'Б:¢0½"éΣ$Õaðé9)Š’*8Lôâ5Tè­—P À’ŠO€¬‹OMsÔŠ²ß£7°±µÉæÎ6[§O±¹³ÃpsÛï¡m*ŽIÈ:®°}UFÕºÂÙ{ß)¹Ïôx¥ÄðÚZÃhrHrðçåÞOŸ?£Ù>u†mF£>¿u“[_|ÎÍÏ?çÞß3¢bM)ׯçòÅË\¼ðgÏžgkç4£ií;?ðçO>ááî3ö^ŽMAÑ‚ªÑ”¥åžècXÍ9å-ª( [hUbŒ†–’÷VUý~íMF£Z“]†ÍÍ!ÓjÂÆfŸwßú€û·âw¿ûo¿ý£ªáëo¿å³›_ðÕ×7ùñ‡oèëÀ•sgxÿÍ·yýêë¨r“îò_Üâæ×·Ù}rŸz<"z(tA]7Ô¾¡ F)9ç•1P\t2¨@HÏ@OÌB ´•é¡-ûsáÙyˆË´?$異¤þYYï Â5¥áŸ>øGþÛûwÞ{ï=®^½L~ÿç?òç?þ‰½ç{ôŒå­·ÞbgûÏ^îqóÖ¾ºu‹èaêÖM4R@¶ë“­L$¡0¨ÂŠl.†vÂîœc:1:Øcôr7a¬B7 ¥-Ù*{”›› ƒvïs¾– „BÓ4 Óª’¢YÃîþ!£é”f¨B`¿éëÙ3g8³½Ã¯ÞûW¯^¥šŒ¸õù—<|øÃýbTÓ)ßÿøO÷^pïñCIB,úlnn²1ܤ,KŠ"§ˆ–íPE€¬Rþ<'öh¢H_k““7`’‚£²¿d$"y(‘™U9±(¶lr%¹ Ë÷CòJóη <©UŠö¦Ssê3²MH,ˆøvð4ÿÌ„ÖÀñ5ég–þÇÀrUÝZZd ¢ÂÈ *¥.RårÁ¾Š&ºQ^|€Õ1Ò³U1äë&Ë$bëTËR g7e8v3]e\¾èµµìX™_ËLƒ37•$”Å×Èhí‘ë’XÞK·Ä0>x¿ôú,£˜¯¦}³i®™AfSÂ¥×þä”ëΙVVXL-ìëÛEP©N ¦²¢UVòÞ»â8"”šÔ µ5ãÚ1m‡uÃÁ¤f4®M‡“)£ñD¼­*ǤñÔµ£qŽDÀ…|^Æ–bž›4`:K„éc´’˜”¶«W T’â^ Õ:¤F ú4½H_‚œë |=GÍŒqUÔ’ç=`°Žh±M7ˆ °NÇ¡è¢K’ç)ŒLTí÷ê´€Z«”ý¢I UX=`r8B{.’Z|–t ´ðÎ ’ƒjéÑ!‚ŽÉ¤Ý¨ö=ç4,•§ Á ð¦¨È’<­ÅÓJ©H‘LˆµžH$ÀJ|¦4ZT”KzÒ6íPáIï…l¼’z¨)Ê4ek¬LãžI 4*úŽOKç¡ ÙË-Ê*v¨ØÉpÑØ´Æ†ˆ¶VtQŒÀË^ ¢¶3IVì€AÎ)žz¶ááe¤„Ý¡uI9è³±¹ÍÖÎ)¶NŸfûÌ6·wÐåm PJÖ›¹Cå[m }ÕFã$ÉM«öŽ\„4MÓ6®yjVOÇøÚÓ3šƒÉˆ'Ï^2uíÄ*«ªŠßÿù#nߺɭÏ?áù£‡øé*4 Œb³_òúµ7¹|ù2g^{ÓçØ<}žbc‹ƒûyr8æá“=”·”¶‡Õ:™Og´Tù ¶g°&ÄÎÐ¥}³Z‚%Œ‘çÃ.~Ê1y¶ôz5ï*[CÞ}û~ûÛßòïÿõ¿òæ×1ÆðÍwßðùW_òñ'ÿÉ×·oÓ3šKç.òÞ[osåÒU¶wNóloŸ›Ÿþ…?þO¾ÿá1OOôñ"ɱP mDæ\Ãt2m º£–g+ªÙ¾>uƒ™“œ[k±=1,'êÓùù{Á(Íáh_ärÃ>s'éDÏÕ+7øÍoÿ‰¿ÿð×üæŸÿ ï=Ÿ~ú)üãyp÷*DÞ¼ñÏ_ ª>ùìKnßù†ÑhBÕ8Tˆ”¦Ä¥$q£ÓÔPZaŽF#ª¦â`rÀÙæ,çCæßbg{›ç{‡<¸ÿˆ'q°?b:ROë”4ÛPª‚¢4l œ9}Š­á€ ÊÂг[[[Äyþâ)Óé]¦Ó)ž=c¬ AêiMSUlolñÞûïòË_|Àµk×8wæ,ß}÷ß|ý5Óé”=“½?~ÌÞÁKÌæõä¡4 º ,û ‡CúýÖZÊ¢O¯×ccC$ˆý¡Hûƒ zEÉp8¿-+^[º#·ÖZ¤¢:­wÆH|»0PÚI3—”–UW:’Öÿ˜H²”$I*/Þ}¡ 1ó‰G)н bµ“îd–»N*t\ êO]Ç^å5^Å›hðõ*)ƒ?ï¿À£«åGøÊLÛ“9NêYûs@ºUïã®ãÜ“°æÖ¸¯WIðÖŽ»÷—õ’ËÙ?Õl€—%w¯ò:«‘G¿Y%Àí2Â\“\-`•O¼ lµFl)Ð eÄ´ªe88Ë0×{yݽƒ}Ü{È£Çyñâ£$!¬ªjF¨HuAfGå>«Lûgk®±Å+‚—ÁOî+½b&?ÇpS ÞP®=ÏGÓáÓVË1˜ñ*3­h•ÝÖÃ(±(Òð^êñd[y$/÷ om’Ã,À*t<½r*àÜ=·€µ,Xu[õFXÁôJ÷XÔíuVÖìÞöN’ºÅ.&1±’9zã#AË5õɬ,÷½ÂêËþf¨R ­QZ¤ƒÆH˜I‰T ˆëÈš…OµícJV©?ˆQÂTb®[Qóª /Ö>‚wÉ%u¤¶+¡ën¶ëÌ(×°/"”z‰‡QÌñ«€¯H´Êh^/F+."ÄÙÛgOÒ2ãöeàÒ2 a>†eôÔ¹Ð%Àel¥“|Ïqåq2šEYW¹LÓ»(õ;rþŽ™äXkWÇâ=· h[ô1[G3>nò¸è9&žq"l‘â|句ϽvA/%Kðà¼Ã9=ó³ò‘q]3™:¦.0uŠƒiÍþÄq8u¼M8˜ÔL§AdÓ†I#"2d‘‘ECãƒOÚñ$…)úkkÈ´¡Ûv¢Ï¡´yò™:³„½ÐºÕ ÑàÝ,ì$:ý……Ü “ŒœReôŒýUh“L£ÅäÛ(%r=…"%‡ac±ŠÔ¼äIRάµ”ZÀ.“L­š³{°1ysJk¥ˆ®…RRê^×[¬ITab+ UZ ‹¶$quRP%É\ÖH*bÔƒ›=ªKôçPØDÁ&†5–¼ ¥-)Ò¦l ù,B‰²W*¶¯©”‹V«¶h@Å6­‰Ú=-s ³ZJ2s×I9ke/”ëd³,Ëâ•ÀlB oÄ(Kj}šd)ßú¨ff EQ`%ƒá&Ã-¶v¶ÙÜÚa°±‰-û(3›­ck W.¶ŸnxÒ‰tNéõzIÒ,“Qc ý~Ÿ½ç¹wïG*¹úúœ9‰GÏžò§?üž[·nqëÖMžï>f²÷œBvú–Ó›\}íW^;ǹӜíg.]bxæ,¾7ä°jàñ tÑG=¬ñ8í:!"…“bCX4˜˜ˆºnóôw©æ÷”¢,Q:R×SBP«’;I‚[³¹9äÚµküÃù5¿ûÝïxçw(‹>w¼Ï—7?磿ü? ª¦œÝÞæ×¿úwß}Ÿá)öFüá£ÏøŸ¿ÿ=÷ïÞ•5@IѾÕߤi1ɆCZ)…×2%ÌÊhL9œŽz›lÓõ1ÒZ£‹ä!ÅL¾&ÒÂù½X«Èö¶0Íž¿³}j|`sg“ßþö7üË¿ý–÷ߟÓgNñÃÝùïÿý¿óÕW_1èõ9}ú ¼û>¡ ܽw[·nóèѦÓ)ÖlôÔÓ†ÂŠßØ"sÛÚ‚ìw7šTL÷&<Ù{ÎîÞ>ž=§?ˆuÿ€Ï^2:8 ©ê4Š”¢Îö{4ÈŠsWO¤×ëqæôý½ÒR×5uµÞ3­*ܤ¢o ÃBsxPÑÓš7Þz“_¾ÿ ~ùË¿ãüÙsÄùÃÿú½LA«†z4áÙó]ž={†oÛ[[˜§Bjˆ"Ñ7Œö8x¹')H Œ.°)±ìõ°½RXr¶dkkK˜[}1±”’8è‹—µšÂZÊR|» mZ©¤Õ3ž$ÿ==çÑb;r>ñMÌ¡ •†.ÔGê¢îEQ´¯kŒ:q²NBõ* ó:fÓò¤®õɪ¯bæÞ5W~•ãüy,¦WcÔ®“±àøáðÏaf-óË]LÉ=Λé$Ó*IéqÇÞeHhžD¢ºLåqÒûã80ì¸Zÿ§>c''—±ãV‘8V…GÅN“÷«z:•þ¡’”A߸¹¯‡„UœÀ«Ú9¼w8ç™Ö5µkp>RÕ ûûû<}ú”'Ož°û䇇‡T :¦SaJ¥ÛÀ)¥®žID­µF/$7Ϥ ÐV˜ õŽ=—õ3º{<à•Œèg@Y5PQ$‚RkQDäÚ\Ïì9²Ü0¿Ÿnÿ¯•ž“ χLç£^˪\Tútñˆ•ØÀ¦ÙºqÔ£oÙ3[ dªí•ÉYë2mNÃ{¢-û "5hep!&ÏÑ0B–¾&|@ºSñKxP£ˆŒ1hC¡uR(uÎKXðüJà•ˆ:D:q"¢j¯*¾HŸ‘P‚ÜQŽR á"ø³x—}½+[eJ¹j^<­ZWÑQ»ZËE°§û=‹Äâ±®J\&Å[D@õ‚Qì²M¥¹LЏLšx\apŠt·[öä?g°®é\÷XW¥Hv^tí†w\ %+R]ÃU‘®]°r9@fæÎU÷ú‰¦Xƒâÿcí½¾$¹®sÏß1iªª½o4L£áD‚@‘E#‘ÐðÊŒ¤‡™¹óÞ¥‡™‡»f–FŽ") E Þ£áÚ ªËe¥‰ˆcæaŸˆŒÌÊÌ*PV­ê®®ÊŠ sÎÞßþŒWÓT•:{•¤¥“t@>B宂¢ãõ¢tŒËŠá¨`0*ÙŽÙŽ9;FU`T:afƒC‚Â;“’!raš´§ãY|h¢ÌŠÌ,Ä(ixZ7ò‹ÚoÄ(ù¨qðs½¦ÀhÒ@E˜XbÌ.©|5#«6«S+%ÉÏIL2A‘\Z•bØ“”­YL)ê¶þ{nLcØn X™°(·É4?&CàÉlÎzOÅÑhÄx4!·BÒý‚!1¬"^GbH‹cJ,iŠ­È¬°çlšè«ôÍ*ŒÉë)´¼¯Ò{5 ­ÂtsjŒ®°”ªd’”XoZcki¢Nò3Cbe P–e‘, ü«MáuΦ©UªÞèU„è[fʼnµ¦¥¹!¤i‡jRæÞdTI.1-YQ Ñr®7£+ö™é<×S•ŸÞ³m­í’*–÷ûØn‡þúë'X?qŠõ'É:=y¶P3¼C©”sd]ñºi­‘¿ƒôã¨"yÑT¯â­à¸sçŸ}ö)ÝLqí‡8î"ŸÝ¹Í?ýÇ«¯¿ÆÇßäÞ½{”Ř*N÷3Ο=Ã¥3§¸pæ4ΟáôÉÓ\¾r?g.\äÔùó˜n—Ýш½ƒ{'æåbÎ鉯µ®CRQ16@V¬ì E˜;Ñ0þlnÜŽž¬kÓë8*Wâb…Öî»ï>¾ñoðï|‹/ùËôû}n޼ɫ¯¾Ê‹/½ÌíÏ>e²¿Çåóyô‰¯ðÈãqòÌYîììñò›/òó_ýš÷ßÿ ±2-¾,ÑJÑÍ{øII ÂxÒÆ0A$„J‰I¿Hýö”Á†ZÊ%Œ¯c’ʦÀ†Љ9 祫Á ÛºÇ<ÏöîçŽt,EaùÊÓ_áÙgŸåK_ú]Ï>ûŒÿÙs¼ð ŒG._¾Ìc¨­[êøê¾%È'D/.*ÕÁJ‰_®VdZ” FIo”⩦lY3U_ +´üŒÅ¦Äã[ŒZš¯EžVr\º5HŒ‡J‹Ô_ËúÓyïºÚºföN%|qæœÍþQ´2i¸êr*(lžá£BˆÁ\L#óK¥ ŽµWvL?¯’§²M©æu¾’jäkB¨¤áR)ľ9¾0Ue¨Ð„²Ôö%$§Û iùC¦¤Á”Fµ¢ôóÁ‚Sað- á<`pœhj¬Y2ån~ß1R(–Iíj¹Ä"æÖ²xLšÇWIIæaóì«eMO›A¶h£?Jv·(‘Dq¾VM'VyMµßÓQ›Él h8’ݰ,¡îJWy´S3‘›?ÞeZ“œÖ¢jði )Ím8ãP¸ («@á“20MO*†…c0œ0MM †ã‚¢ªMÃqEÀ*j¼ÒDe…å¥4J‹·SmÜè’߉N¬“Ù†Á¤²ˆ(/2;MF­l’ %FePS bpXƒ>tÔI’g ô–Ì[41óS­ó)>W aO@y?:IeÃÒ0õ½R«<C¦V²Ú$0iÖ5ø(_Q•c1@/'x7!ÓS3ž´"hÑ|#Á¨d"–R“GSÔ^6A©B% ›JZûP:’0V‹ÄG {K׌1$?)k›i[HÉm**TtÊÄ$kÑb@\ß÷rÝ½Ž€~&±¼D*Äü^©$&[-ªÁ²ÚÄuúLÕô_šMƘ´á†ÃÏ µ‰­ft2´ö sÄPІ^+´Êšt—vÀ‡÷•ç~6-’ &ùeÞ4ålm¼ÛÅdycú¾lMùU2ñA¢¹cŒt:U5!„@¯ßåʹ‹<õÔS|ï{ÌSO=E–elmmñÜsÏñüóÏsëÖ-FN<ÉW¿þ ¾ôÄ—9µq‚á¸àå—^ç—/½Äko¿ÇÞhHÇf™\Œ0Æ’e–ñp$Aé^2™¡£3´Ž¸à©ª’ª†LpbD¯Ñ`;‰mHLú¦àŸóìlæ ,W¸ @Þõ‡äÛßý.þÆ7FüèG?â¿ø{Û;œ?žgž|Šn·ËÎÎÿñÚ/¸ùÁG29wòlŒFãÄRô;]¼ÕNä§*НVÍRJ­†Ì) Z‘¥‰{M¯_[ß³Ýñ„ÉdDðâ“g•&(‘ø0ZQVž½ò€Á`À¨(Ä6ÖÖzlnnòÚ;ïpûöm&“‘4KnܸÎ3Ï<Ãw¿ý®=ð Ýü˜ßüæeö÷÷é÷ûìïðÙí[ìîîc¤ÛïqêÔ)Î;ÇÙ³§18Œ•Ó.D¼ T•§tžíÝ}v÷öÙÙßcRM-c×@å+œRu Z)ÚbóäŸÕí4 W¯×£ß[§Ûí²±¶Fn³)Ø•å Ðe­€[ o.QKkÈ­Ð~f]´ &˜¯n‡jMõ_×#ð/ÂjYõ3ËjÂi¬üÑ,«EÄïÊÈZ4h^f,ò(j×é!ø•ÀÍÖ÷ê¨÷¹¨q=J¹²Hb¸¼G¦‘¯ºÞóõñ²4ò£À·eýÌVúwöÕqŸ—ÿÌý¸ü˜«sÚd‡쨙ە+o+ï½°[ChL´U+ÕY)…â“UyG^u퓼O¾-ˆ7Z}|LžRuýÞìÍ2Ó`†WKLuÓ#ÖŒ*“DS`Ê$‹!êšF3MwžK•T‘†q/ÀBºÐJãc¤«-.‚vSûˆè@;ìüVŸè©ù™™1p›glÍ'T̃`ª"̺ü«FwzP6ïÅ5ÿú‹RæÙQó㈊K7èE Ó¢Åj%0µD8ÏF;êu–M]1”æý[!ÉM:áÃôUÈCÔí#d:«BêÆb=wžÝ¶ÌËkURÏ<"ަdžPK°"ÁW¢ŽÒ<•®¢ò0œ8\ÔL\`\ÆEd0ªØŒŒJvÇžÁĉ/Ié˜Te¢›j|°²k#RQ½ÈsÒÂï=Á‚¯¿–Šø”ì'‰g`-dÚ‹":ˆRhë¤Crݰk¢® u¡­ˆ* ŒLXbÃÄÐMª QIXDÔ-=»|* ˜‘üž´ŠIJ'SÓú¨'&bJ^OÅ6™à+S­Ö€5šÌ:ɘ^§ÍܦéP ŽÑp,Æû1Ò1ÂNóYlÌ'ƒŠ„ l%C/Ëpfäýh ™‰èPƒSõ„–¼0ÐËuJÁ l0ÆÐ¤Kɧ†÷ÄW*Ö4X’„I˦«Sú¦|dXíèw@1†ÖVlX ë(õô¹q3ŠÓF¼íXƒúMjL(˜Ém t(œ+“|5Ÿ¾ãÄtܵa±Óç½nM–I;šŒ2E_ŸšÀ^—¬Ó¡ÓëÑ]ëÓé÷È:"Š)‰±6¯‹q¦i5Élq¡jo/}lYàq‹ú6Ýß9G–eìííqûöm®^½J§Óa{ï€ÿù÷?æý?à“÷ßaû6î` Îö ë§OòÈCÒéuY?qŠ3.sùêý\¼z?§Ï“å}¢—¸¢ôTÑ‚é¢L-Ðy[VÉ¿.%‡‘{ÓÌ“¯U¬Í#díÓuqA’·ö‰hºX’ç‰uªÚDî»v•gžyН}ík|ùË_æüùóìîîòâ‹/òÚk¯ñá‡2 éwsž~ì ~øaî»ï^Y^y÷žÿõoøàƒ›ÜÛÚ¡×볆EyÐ8ˆš¢’Bm1+VÊ*zF³¦×pUÅ(FzɰòÑpLá<… -ç£MY—p uh2ÃÔ¡5ÝÖJ®=xï}ï{|ÿÙïñÐCÑéd¼øâ üë¿þ+Ÿ}ü gÏžå‰ÇçÂ… h4¿úÅó¼ðË_1MЙm†ÅxLžuØØØ€ ØÞÛmdð¹±ø,yÚYK´–q5&¨,±^åžÖJI*¢–¿jRƒ¶]T¨´oÜTƒ[¹0·tža2;ejuº1ÏsN¬­‹=ϱ­4Ä<ÏÉ­! þYk……g䳯͵ĥf7×C¾ä¹å}¹°~;«ä‹=‹jÃEÞ<‹ IDATÜóÞÉï2ur:½.½µ>ýÞÝÞ&ËPF'-ûÏŒfÍbfïYV N%†ªaeÇ„÷¨f²f™moßcss“#—/_fcãwïÞåßÿýßyû÷øð“OÙÜܤíÓÏëéµpó—®Ñ?ywq*£p KœJNŒJ‡w‘µ^û®\e21<PŒ‡¸bD1â‹ ¸ŠÒ 2’̶6 ªÞ=&7âàëÙ¢ }d²Za2ÐFö·Ó§ÏpýúÓ<û'ßã©§žâÚµkܺu‹çþõ9^ýu>ºùwîÜ!Ë ¿÷øïñè£7¸vù yÞåÕ7Þá?žž›ŸÜboo@ô‘^¯+&‚wŽ"yLjLª’Üà~âd—µµµ”šéÉ…)ÇB£-“IÉf„êà€E%Œ¬ÜÚÆÿ/ÓkLê®%·ZK⟄ˆÿ]ž²Ìð‡ßúüý?áëÏ|µܽu›ŸüÛOxóµ×év»<ñÄ—¸rå k¼ùú[üÃ?ü›››IÕ)CBt:Bå)&%“ÉïŇª( T„~§‹Í4ÁÓÈãFÅl†Ò£ é+u…’ÆFȃ÷iï1™–V„<Ë[мõ:f⿽³C·×Á'?Òó/pß÷ñÌ3Ïðõ¯=ÍÙS'øàƒyí•× DNœ:Åçw·øè£O¸}ûn2¶œƒá˜q±KðÆã1Ãá˜Éd¤áË‚à+¬2ä&§¿¾ÆZ¿K/«=åý“Lu«Zî¯ “²b03)\…+®¨(”¦À7RBØ™ÔÃÜ&ï¬ä»•Ûä±ÕëÑídäZÑÍlÃít:Ó´Ä–wš¼ŽM÷[’~(•Œ•Cªs§©c².ÅÏ•… üû‰£äZ_D®¶ ˜²yÿëþ; 0ø¯þo‘÷ÌqØ;ó’Ñã²{ŽÖ,³ÃXtLíjÙ^µ]¥xXäÓ´È,½ p.RcÔ}Îʤ¹¾k™$r©qü€ÝüóñE]ÇyfŽb˜çþ­KÀ°ò¡ÂUçKŠIEôÕ xÕÿ|Z#¬NCoï©‚£ ëÊ9Ǩ(‡ìî øüÞ;»»ìîØßßoä…eY&û‹äçKÚïjƒö8{άhù°uˆSvM)×K¯â] ô.±f§¬ÌD-2c´žö,•|måïjj…¡tÃÔA‰w£Šâ›ª”™&z’ëÓÇ©ÁmòQš&™+²¤ú°6’ÙZR^ûJS÷,uŸà4~! j3J­`M-zj’Î2²EUUsøÅPŒKTYõïÏ’w²¤ƒO¢Â.Ó)Ý/1­Ò׬‡çÞc³œ|De¿JÅĽî/äšJ$ª‘:]k±™` øj§ªCS§ÇT׋¼Ób^ù“B¢’½EQ‰µjGÁ‚¤$j…E…&íLݘgÕŸs¡Ú^ÃjÌPbzÃtbÒH]|CKlž€ô‡<¦j°A/Õ¼ÞÔx‘æa3˜¥ «E‹|›ñ5mîâ’©Dº ´m&½±‘+$}hp H·¨ZôúS »ž™ ¨9ŸšSÚùELÓ°ZfÞw=mŽ5+g†Ü©ðÈZ³’á4Ïš:Ĩ²ùbãÆ4éÖªM- Mú[ \y“Š!¦÷œ®fÁ6 …‘Äz$ƒs¥€Ì­F)OðçJ™¬æÈè(rÊ; §(£¢†¢Š”Fe`0*ÙŒ ÇÍ]Š*0*ãÂSV¢ývÁH uÚW%æÂéa)&O Èxò‚šÊ)–x&Å&B´.€u„n·›´é‘è¥ És¡ÆV>&Ãr‹Öª‰J•{s FêøvI†s1¢—äA=Ë€TѧHÓ(€•’t˜ÒeqŒd*6–ÚŠH–Rm2aÏmÚ°<:r•ÓËåØŒvt­¡kÅ/K)…Õž…ÜDP¥øhÕ,‚*Ädnn…&=ñY¿‡&R¹‚h¨C… %6„±lº²"D×hïc,áãa¥nže=œ>‡’rUÍuŒ¬‰`’¬'Ó†N,­W&’› c ÆŠ¼“Í®™ÉÝLjó1ѸcÒ~1C{6¨D¿­AÛØÐqµª}¸¤(R5ÕÝh1z®Sp¼—÷è#>z´ÑôzkجGP–hÅ ÝfŠÜæ ’O’öÂô=ƒÇI™gØ,ÃäÊò~|­‡Í3¡×À~ÔÄèšg(Y4Tö¸ˆ=Ð$¥&±´“%~Œ º^C´²ØšMì§E»K  <›­ƒÁ>[[Ÿ3 1Vqíþ«t»9ü)?}îßx÷Ý÷øô“[ìï|Nyð96–œî÷¸xá§N`cm³gÏrîÜ9xè:gÏ]â̹‹Ø¬G">jYáŒ!PO¹äšX% ïZfyðÒEήw©ª‚¢Sù<€ ,Kö÷—ûƒ&•#“² ,ÆcèeŠñhˆöŠÌZBCë’Y¼š°¾ÑçÆC7øÞ÷þ”¯=óuΞ>Ïþþ?þáÏxí•Wx÷Ý·ÙÞÚd}­Ëãׯs㑇¹ví*Y·Ï›|ÊK¯¼É›o¼Åp8”ýÚ‹—†ÔC&=“"¥‹¾JŒ=èu3Îêñø£×Q™e\Nè­uÙØØÀ9ÇgŸ|J®3Î:Ïîî>Ý›Ÿ’mY¶wLª’€¦L!®°9ÑQÀ £˜L&dÝœ˜ŠÆÈ=c4üÞ—â»ßý.Ï>û,.^äÞæ6÷ÿü¿¼ôâoÞÿ<ö(çÎ^àå—_æ—¿|žo~Âp8¹©ñ­É2 Pyß„"ÄTŽö÷𵼍ÊÄÀÌ8’Ç¢¬A‘àYkÉl§aÕkR“D¥åÞ®\ ÏE*7gÝ™aXT“i\pä¹e8ÜÃZËý×.óÄOð'ßûc®]»ÆÖÖ?ùñÏØÞÞ¦ßécMÆ[o¿ÏÇ"ÓÓl­a¸G'²hï<›w¶•gtp ûu{bÑ¨äææ=nÞ¼Éþþ¾À÷vÅì7±œêš¥×ëqáÂYN÷rzÝœLCAT$Ö†ú*HÈUºWøLY”ÑT•—¹|"!„à01€Ž(vâX›ñ®–àÍËÎŽB´ã K¦™ ¯HÐX)!C+qcé8>TËL1ÛºyöÚ2óUžT‹&/Ë<œšE>=”‹Ž½.~—½çU´âyÖÖòøØez^šT¿ÀS‰i°IKNM«Jšè:}!ÌÞg1­âÐ-S­ÐÊb¬4M*œ+Ó^‰ÏNfUˆ‘Ê Ûªt‘ÉÄ3*`ìÃ2p0ž°?s0œ°?*ØN—žaáðQã¼j"Ici:¤t91=ŒÉDM•EQ6÷0‡Ê7¸¯ž> ’€w8…щÎmƒ›uÌj°œ7àê®b‘¡d½qD\2î IÀ‘Ê-Lc2Oñ§é}©8• EY"VQ +˽N&Ò@-Æì¹mdò’)15nFÌÛuÄê’i/ ^ŠÄzª0JdÆ(ln1±½æT°&Ý+6-¢.M‚’’¼NK‡˜ †¦¸%êÆ¼Ò¹$ߊ‡=ÿ”ÑicdÃViƒÎÒ¦[KÞ‘t™8‰\Ò(EÔ±%@œ>õrVg#¬ýËGB· åCé8õuC¦~QÊbJl˱ݜ,ˉ¦CP^g)Ù-Á¯É^i™lé¤Ñ51 kéôºdYGèÈLÓR¨M Q¨/¯ ÉG­þ‰¼{Ù„ ‹/'ŒBbã›Ô±9ãb"€°«¸}û6÷¶7Y__çÊ}WYï¯ñáÍ÷yí·/óÆoðÙgŸ±¿¿w+Îô4—Î_àÜ…‹¬õ7è­opñÒUîà!Î]¸ÂƉ“˜¬G49>j´Í„}™â†.®5<ãÔ‰ b%­ÑpƒÊ‹4 tÎÉ$·)t« Od2™0Ž•ãB®ªª¸õéglt:¸I/«4Ù‹(Wbµæ‘ë×ù淿ɳò,7n<ÂþÞˆ_¿ðÏ?ÿï½÷ƒÝ=ŒQ\¹z™Gy˜ë=@¯×á£oòÒkoðÊ[³³?Ä•ÂF¶ZüТTÎ'³yñgð^¤Ù1ºý'6Öxâ‘ëܸñ½uNž;Ååû®²qjƒƒ½^yù·l~«3z½ƒÁÏî~NU‰ñ{ŒŠ"9†\|/´¬URcºÝW•h«yä‘üá7¿Á·¾ým¾úÕ¯2ØßçgÏ=Çüü—ܺu‹óç/ðÍoþçÎ]àÞ½{üÿñ·Ü½{—»w7™Œ‹äí–'°%6%Q$Ñm‡š]²HðŽè|ª«¼˜®"ûŠ4‹f¦Ìó|¶Æ 2éÌŒ&³9YÖ?«ÓÞ—«ÉsËxN`s£¦‚½a¨µÍ–Dr©4O×èwýšjfµŽKü$u)¢ðI˜7Û?ŽÆQ2墉”Ô~fr3¿q»¹(MB¬ïMIGˆºvØMä“”V& Å:ÊCVGb+¥ÑÑãÝAòª'(œ›ˆeì+J“*2®‚ü¹ˆ £‚½ý £²dp0b03žTŒÊвД!0(mx )Ž;Š¡w×<øíÂ(¥Z¸à[~R4ž5uü©|¯¯sDÅ»J‰n½ž(+mSEaU…Ä Ôtl&:h‚˜}kZ¦ïj†"/À•'—˜Ã× «˜ØqÓÿuà )qOð¹.¦fB“¼ª 3òa&S‘L  “Yè$YšÕ†n.’ÂNÇ$Ëç¦Ù¨r['J¥È_‰>4)¶kÑAqD„¥†jšfŒÆ{…oL#eãSQš„Ø!—6í ²Þ ÌG:D^^K4#Jù$_‰)ÑEš½ÌÖ“6•üËÔÔ\=íªJ-*ÒÔt“_®PkøucôÜDŧl‘Eñç5[)Æ©×ZüÐjvÉ$3·ÆX‚µeeúeT‹ý›çXµÖÑÐKš%FcòŒÞZWÒÊæŠái‡i5S@ï8iHBöic ,V©H4(ܤ$Ï-(p¾’6W‡”ÜbñUd<œ°½½Åæ½Mlžñèã7X_?Á'Ê/ño½ù&ï¾ùƒ½-\1ÆWCÖÖ2Î=Áƒ×n°¶¾Áµk׸þð#\¾úë'N¢m”A,ÿÁG´2  !F„îƒ Ï]f,ëý52­8qrñp„ ÞUTµâ§•7û´˜—[Bô‰ÚåâÅó|å+_áÙ?ý÷ß?ï¾ÿ>/½ôÃá“'O3;^yåU677e›$sZkªªÂ uUš­éÙ^*º…¹¸½½Ëþþ>Z[ªª`2œP•ÈŒ&7]ÄÑJÁÁÄ”Å6ƒ½=ª‹§±œS§ÏÒï÷© G%Ãá„Ê9ÊÒáBd8žPx(«˜8½òšZLb£•ÖÀÖºj²Lä“©Ó¬N³Lð­¶rM‚'”ŽªCyed}ݼ{GÌàm-Q”Äß<1¯ºÝ.(E·Ó¡×“tÄË—.ðøÃ7¸vùv½ßLðå“™²m(~7¯¨EÖq¼ ïrŸ™5X-²Ž |­ #:Nùªï<£«ùÙ8eûÔ ˆUò¶ã¦ ×Ð~Y¼hX|”Dq~H¾ªWYö}«Ø«Àº£¤¨Ë^£ñ"fÖ4»®±BCbPͪNµûŸ£¼u¿ˆ¬vÕuTMðXúˆ"ßv-spŸäÜâo•ävEIÙ2hùÕTå#Ìaчp>à‚gT–LÊ’ÑpÈ`0`_ü­¶¶¶Øßß—õÏ9\Æ¥TÁÚC©N_d¤¯õbÒB]ëºf¼ºð³>ÕšH;s…æiU3‘2IUÑÈS=<Ï@œ—òÖCžZâõ”Ùi´J©æm›Z×^³ªI2Ï´øÉÖkö¬÷ÔlÚŸÖºy¿‹üµWÙô4{¤o±™õ¯ª &Ìaq€Vÿî¶OXíq7À7Xƒ¦1 ‚Æ&RK>ËYèˆ{² à‚¢Òí<>*lËÿ¶éæ“÷£€SòÞ¬Ñàì}:’g«3Œ‡têÿ¬Ò‡À@=£X Yý¡g6jbR*#J&m"˜ S¬×`…IrS€b±‰ÞqRó/Îs ä€Uð<(ã¢;ôµy õª)Ï2æÕY-uÓ¹lÂ1Má›ìôÊ N›…³ªÁ›—z.Ú„j°U&“˦WGŸy6š‹èZǤ3l}>¢°ST³Ô Ð È[~7!IK…5ƒ¯ #•Œ«@QzÊPRzͰ ì*£ŠƒqÅ`<á`0a8ž0Ü—8ñ²L AŠH&“6[%-p-i•.¶ð¹ûkÑ9QuŸ>¥B‡9“Ò*¦¦¥×iÁÖÉôr«E¦N«%Å£ar…ä9U¯bc&î£è̃ è qõA×u´L–¦1­1Êõ /Š·•QdVÓ±F6"]+_ˬ¦› RŸC'¯Ít§ž]][§@)ò<ÇûJ$†ŒÎˆ‰N_?&J‚KHfŽ1Š\4Òâ™Z²œR¥KuÐ3,S­ŠÖæVHfØ:M#´ iÚäÉŒÆØ«ˆµâíÒă«VQ”ÀÂEãüÚSO§ëØáˆÙŸUK¦ÓÔB‘å‰ÎÕªÔžr&¥1F<Ñ{ŒrekMÏVLGdL'ûëT¡"&o | ô%¡rTA2‡ðÞa4”å$y%&Î3¹vù UåÙÝÞá`w‡S_{Šo<ó4Ï|õ)>ßÚá׿ú5¿ýíK¼õöklnÝb\ŽÙ8Ñç±'ãÚµkôº}îÜ»Å+?}‹·ßzŸ½D‹¶½th”M FSÇ+G@’„U mEÇHa¹Ñësrã/^¦Ó[±¶¾Áéóèvû¸èè¬}Bå<{ƒ!ÊiF²VG…·;ë'6Ĩ»ªJôX‘urˆ_–äËS¿ÿûüÙ¾Ïýѱqú o¿w“ýô9~ó›—Yëe<ùä“ܸñ¯¼ò ÿþïÿÁ|ÐìY–‘ezfR½Œ½Ð0\WÔ µt$™PžíúŸJ–k¼v-Ѭ!¦ç¸jÀ®ƒƒŠ—.]âÚµküÕ_ý%O?ý4JGþþÿ‘>ø€K—®pêÔ>üð#>xÿ&Ÿ¾‰µ–'N4ÀœVÂvêô:­ë[Á=¦å%)ë?H£f­€úynŒ“ðC½x´Ä R¢Ö„Ïn;JKÖÖzøÊqppÀþþ¾He”FCQ9BTŒÇ›S99…&N¥ÕI¡m³ dh‘’K}J·­%ZØd:¦}8sÄE2© .P¹qb…¥? 30ºa¾åñÒ:Ø}€³ëk\8sš“kýC²¶º:ˆ+¤q‹|e¿Hƒ¾l(¹h0¼ L9î¿·<êÕå‹þ¾Ì(™šd^R·Ê¸ü(‰âñÇ:Nßô»¼ÖQÇ=ß/Ì[¿p‡¸ Œ8.›mUØA]?¯ !8ŠÅ¶ªgiO˜ï+ç$™!1bšÔÀÄ€®¬rRÍþ{¨e‘Öbâ’µGQ¢O*&“ EUr0ŸÀ´ºwo‡ƒƒ1bOaI@Ö…0µŠ¢hö%_ú™Àžù¢æímj¦OÕ Ø›Ò/ZŸÚ©×Òh©!ÍT®hê4¹–ï¢ë>«*™ú¢Öû¡,ãµq8ÇnÜ­ù¡ÁØöj ã+¶jæy@jV¸jZDþPJ5>Çí½yžÂœiz-â¡o_ ³âü„’†ë&‘+lŒÄ(^ÌÁÓJ”P/ç"™‚ʈ"À'Ü"!%Ù×’m‹ <3¸² Û¿ÑN'“Ȫ™kà8xìªÅQµ˜Am³ÄöÅR‡nÄúFõK(ÍBÑúÜ›kL“ ÍnÀ5Ê:O¯[´YÏSW™-®’¶ÏWÕ]N^ñZªq [ˆ´^ õŒ‡Àü¤c¤«)Œ‹éã_|ÓjoêÂÞQ‡5ôµ$N‰çGí§ÔÐ7•Fi›ŠI˜#¾I•hŒÜ’*Ô”é¦UÍf T1à*Gé&T*¯™Tá$2©`{oÄAØ=¨ØŽÙ;(Œ &ã4qHEiŠ€‘û3 SÄ«0ŽR$hmB—|x¦ ¹Zö5_ðèª4ƒx‚ÒÉŸ¬††ùc¤în6•~·ðeIìñúÊ2ÓxjiœÑHú I±íÉ …׿«n”5>ÈlÌ[#ç ¼ëkÀ*„ØHÖjF‰4²k5¹<“«yféæ"¡³&[VL+3Ý ‰acÄ+ÊÚzâe£J4ek4*˜ÃoC£ªßg?8-—÷`¦ž*Nã`}é=ÖÆ’1+$P&¤&1b´=¿jI ‘  IDAT’Ògåò%‘ò,bUÚX[oZX´¼:T2NŒóëÛáb¡ah¶æ<Î¥8áö󜰑´®³ž¦£Ji‹µÜsê“hßTðDãÅ/LBðj*ÕS!¦{T<«\ˆq„ÇX‹Î,h-àh#_u’~23y]²?àWúÂdIÌ«šIk¹(xçéf>³”®b8¢¨&|¾¹ÉæçŸsùÂ}\ø!¢R|øþ¼üÊoyë7¹}ç3Æ\U0ì±ÑËyô±û9{j ƒg£×åüÅ+\âiÎ_¾Ê¹s0ÉPÛŒÒyöG²¼‡2Yš$‰wZ kÔTU xOëS OŒåý˜¾vSZyFjŒ‘“'D.a8â½ÄNGïð®ä`o—ápÈÅõËœûÚS\ôq|€ÿxñu~þÓóé‡rgóSvv·èŸÈyæ+_æ¾.sâô ”¶¼ýöÛ¼þÆ»lïŒ ËèôúLJµåd‚¯ ¢¯ÄC¡‰üŒøè;-è"X•ÑͺœìŸàì‰3(4»{C†Î‘Ÿ>‰>¹A/ƒߺÃÖî€Ýãý!wn.žm™Å;G–å„QÅh8Æäk}:”±ÖϹpá<ñ—Å·ÿäY®<ðv‹¿ûÉßóüüœñ`\ãéoü!gϟ㣛ŸðÃþ·ßz‹ª°­(«Æ\}&$¢fz/~SÆ$?—®º8õ‡ŠºWr 3“ÍœÔJýÜ×¹i˜YD M#ÝÐÆröìyžýÁÿÂ_ÿõ_sõêU^yå~ùË_âcàþ⣛ŸðóŸÿœÍÍ{Œ‡cNž<‰µ9ƒÁ°ñ\ ^j+W–ÍÄYØY³£¶9*ùbÓg[yê& D2ûÕƒÁE–IUqgs›í½²,C«Ø0ªª‚(2Ê -•Y•Ÿ-{^íygš:Däå¡rUï‡é¸}b'ȲŽ0·RMèÓôºÞuì%°¤® |bíjee $ ¨¬ Š¢h¼;¥f˜ ¬‰gU`Ѩë(ÖÎ*ÕÀq¤×óõý¼œñ¨Åã€_ÿì˜ãœ—ØJ[ȤZQãÅû]*_”‘µêß— µŽJé^6Œžïó‹H‚m <Öf˜@¤Dφ¡Õ6v¯ëçåÒedŠùó³( ]ÖwhØDWбz’í7i‰Y\ŒK$óºæ’T’fE­(œ§JL-ï=…“ýjÿ`Àp8äÞæ–H·¶‡MOÛéô¤¯£ÑˆÑh”@­)°7™LPIfU§•×û”1µ*ÈÌXº„ ~É5€åb˜~ŠÂbšÝöLÁ¬Ú_W)¶®Õ>ÑFéV ‡øÖ½à~^¤æJŠ­5*¨o=ùs;q34ÀTí«kéš–^ íÿV§¤Ç† =êÎãó@ïªÔWmhlbê­˜óí«×¡ë\ç͵hÛï4ç)ˆqÆ ±ö–²ZzI•Y´XwV)¾ñY«•@™Vx­©É WS…Hð*™¬›ßó,34½N†Ï ÓÉ1(òŽÊ çÎWãÏ·$ÄnºöÍZ&ÔÒÝÚ ×ÕX HüïÎ{ñÀZ„ŒÍD›·þ­}ScðUµr[æáÔ܆KßåÓËÙI¤@,l,òêú¢X«µôú[i‘Ñ¢„­›Œ€ÆËkQšßì|tá"Šæ2‰fm6·lcZä¡0ƒô/“f¶Ø+JA¦ N©)£Ê<©°Ly$%ÍéÐPˆ•¡FµèiCtç=Cï)\`\Ê*2)cI ŒÅ„}RÁ¸Œ ŠŠ¢„²r¸(Fq’aéfB!DO7Kå8_èÅ™á³0²°`ð¨äßM8tÒ·§™™ÆÒt3Qˆ>u˜FÌb0Q¢i­@K×Ó}%€[P’!&}SkP£¥°–3pŠal<—¢Ž„’tïJä”ÖBf…•gQ€(#ÇÖÏ”˜êH7GØIZ‘å­VY‰·šŽMÌ”èQ>`­€‚ û.™ÕÄ4SáÈT¦Pò7ÒDŠ.¸”¢˜@káëÈ‚ïjidšPzŸ$>¡‘[êÔüdŒ©Ùƒc<Ë3¨Ó¾®•Qi´©ýÊB”Õ§ÕrM×ù@}È·-®u6“R:•І9iGH…‡Mò;5/Ozw¹®ž¨…Ѱ9‚ÃQ‘–š&ý3&Ó÷&A¹.üð’ÄhÄ fšž)Ʀ6žJ˜™Qé²´x¶ ©Í7žl$Ö'J_b²œÒ9>þôSœ>w–¯~õëLFÞ}÷m^|ñEÞ}÷]öw÷Œö :Ö×2n<ñ çÏž$3†^·Ë÷]åÑGçâÕk¬¹‚κĀxaøˆ ksºk½d›ž%ÀdyÃéÃ{LŒß¼VŠ $‰5$2W§:2•ëô¨(Œ.ÛÉX´÷œ:!ik¾,ö±½;wïrr}ßûò“`3~ûÚëüâùyç­·¹óÁû£§N­óäï=Á…‹g¸rß%N9‰²†>þ˜“ë§yêɧ)ʈ ça°?a_LÇLŠŠápHQ¤´¥4% Þ“i“$ⱑ^­¯oà+(ÆL&¼ò:o¿÷>h¯*nòÅî?©(‡¸ÈZ§ ‘QQ`Ñtº]ºÖåbÅx8âò¥süàÊŸÿå_pãÑǹ{o—ŸüÛOyîg¿à·ÞæÁk—ùþ_þ¯\»z•ͽ}þïÿëò /0š°ƒÞ'¹i³‡ëCÙªª$P©%Mª¯y¶Ç¡´ßVá7õbÑÍ`oÑЮ>­%nÚ{G¿ße<Bä;ßùÿÇÿ߸ñèãEÁßþíß²¿¿ÏÙóçøÉÊoûjÃä: œ“éu¿ßOÉVÒ õ 55–×3I·Y§—€*aÎÚ4ð©¥6Y«>›Y¿|@YdD)¸²l½W‹Î Õ¤ Ba(&Ã2íGK¯aqšŽ Œ!ÓÙT*Óï‰í ˆ”´ClØX15`±öŒ¬½7“[Yíæ)½PÅëk=1u_ ©˜‘w«ºA÷¿ȳ,™û()Úl½®1aËÂú]€«ù×: ,‹s õ/¢˜µ¶ˆG‚Aó@ÏQR½ã°«–1£–IËÆú¢{å*vÔ2ô8¬»U¾º3€ý‚ëæiËÒâÊ>d^*{ÜÔÈEéêí×m›¼×õKã-é=®oª²,) §ÛIâ:Z©Á(j0Ý…@ðŽñDÑ£B~~8³··ÇÖö={ûìíì2™L¨*‘}׌õ²L6Uh~¯Ž¶Ù3¼÷T®íQ8{=Õ ãª>îiPÛb R-xŽæºu’ Ö{ˆ×¡ÍêDV3S·ÎÜ/ . SÀÕòôU“$À:é®C¨=“ÅgÕÔ¾²)¥ÐÔƒÖ–´²Âþ…ÅåimgÑ15×?³ ý³–áËp€E=v-ã¯ú‹jñôU:L³–ŒÑ¤žM%ÀON‹–s>Š' V|°b}]ëÒ(ç6“ÞŒ,'KôÆ‚1ö ©}þÚV›¥Õ¹[ø¼§OYò ‚ªÚZG˜yj)½MR«f´FÓܘ¯µ6¿™N7'x%Ý5„CÔ±E&æË¤6«<¯ê å"vTd:Šv½ê¿y°jš.¾C›@T‡µ@3NmrÆB3ýeòÄErÐy0OŽ7[⥰ˆZÒÀ,ò¥NœlÅðÖÒ)S»ô´’VLŠûF™"è)t“©mˆb@ç*…PžIå(œcaPI*LØŒÙÝ1–.â‚ÂWbò„sÓ¦ÐO¡o©ÖCò]šñRh}om"›å$ú³fpÕ¨¹Ä‰Šƒ$‘M W“Ø4F¥ôç¼nˆ)­/I Ä ì›[:Ö´L§©#Fé4‘ôZÇÚˆ>¦÷‚øn! Æ4Þ|šRGHàU2ÀVÉ´>¥Yó(ÐÉYb_u ]EײLXJ]+ˆ¾µš<Åfió±~i ISl¯&¡I×Dùd"î0F')GÀû$aJnP¯Œ÷Ÿ4å…•HFë©LpSÉ`òªÊ2ݘP#@¢ÜÏò=FûFç?ų0Ék+Ö©¬É§¥~~¬n{ÔM¥9ÍBïc3íª™±5¥Á'é­¼‘f£¯#xÅ,6S9‘ëª&ÅT6ùªà ®B)Ób.ŽìJ؉J›æ5Ch™çÏíµ<\YaJ/kAU–( Ϻiöªfâ‚WÅÈÉ!´&´1ÍBEJê äY—Íí{ܹ{Ý'OŸá«O“#o¼ñ/þò9îÞþ„ÛŸ|ÊöÖ&åhL®áüÉ5Nž<ÅÅó§ˆTäî»ï*O|ù+<ôðcôû§(ªºÇp$EFÞíÒéæUŤt€¥¡0’ÜÓ½\bJÍ5X3Qɶ“@W §“ÑHÐÐévdS¯*L’„¢`2'Ùà_ÿúwèö;üö•—yòöÛorçÎöw¶9ÕësýÆý\½z•KW.séê%Î_¸€íäììísá«°78À…ˆŠÁ`Èþà€ªߌÁžàeY2.Jöö÷ÙÙÙckk›bH¾¡¯øn G#¶··¹tî •ÑÕ–Ñ^Á`{HŽñxŒ*Jò ºùªã8Õ]c ”NqZwdòi!zÊÑS'×ùöwÿ„ÿýÿüï|õk¿Í:üêùçù‡¿ÿ;>xï.\¸ÀŸ}ï[<ýõ?`\F~ø³Ÿó/ÿôåD<÷ò.“ÑXÖ$kÓ3—Xœ!Ôóõ™âÑ*MôiïO'*Öû‡IÒfu`Ú÷´«\2¹7Íd»iD¡&~ËO€øTk(OY ¹ñÈuþæoþ†?ýÓ?"¿úÕ/xõÕWY[[ãêÕ«|ôÉÇüÛOÆí»Ÿ +…«B¢î[ú})Ä÷ööš”Ûáh 渭‚sfZª5ýõ3_ÏZ5ãnÌ:ŽHÜë m(ƒGEù³Ò´¤’Â+Õ6¢´Åf"eÌR2“5–àc#U™‚³uøòÉšB S:ȱ»š½±–锺«xZFÈ:ŠïV)¤CR"ó^޶Z˜kIþÞïtÅÃÍtºƒj¿®#šòe Ð"‰Ï2ߤU0½b€;º­bFå󴬞œ°VX‹÷Žph<.‡8C{˜1ŽLǸ ±q†0¼ìý¯WIêæèEÞ9jѱ·¾6@,ª¯’e$] :&¯ÎvßçÔ¨¦I€èC!`RW‡…ýÉT–»ú¼¯òþªÃˆjÔšiU–%“j*¬ª _V p•¦ž¢ˆÈ¦>K>bˆT®j˜Z•w´ÚÙe{{›½}öööØ (&r›a•¥·ÖBˆŒ†SÆ•s"OÔ1í^T, È%ËmÚÌ¡!f½gÕÇÙ{©)F£»~ÎÜ«jÒäµÖX5`D­PÚ'¿W=“6߬ÿZ7}ã̵›Iõ Íg¥j2‡ô¶¥Zеa¸ª“)D¬ÕXKú@•ö ¥±Ñ˜»GÚøÀ<60hÏÛÍŽa«Xž’Ö'Á:µ—°¯e™É=ÄÙ¿8ÿÒb˜µ,¦)›ò3ÚLUQ'&SDæQ‰Ù”˜i­:ăQ`­‘ÔÁÄ’ÀRzÍEç­y-N;šªÁg´™Yêð¶º]’ûQÔ !õ1Y][µ8…pÒKÑÃU1½Ó}À¯œØÌûEÍG¡Ö «e›‚â0P3o\^/NóÁãTË4ØmͲÅzâ÷E&7‹R@ÞµwÇ¢)ÏQ~Ë|Ë1;暬vÒ™lªµÆ Ö-+Õ~?†Uê5U[Yh´¡ðPyE塬ãÂ3žˆAñÈîî Ù¹·½Ë`0¤(=Þ ²¢Á;…K)P5u5ñ÷‰Ê£È£»FÆa™¶’'Y  Bœ¦ÆE½ðœ=o ƒ.ˆŒ«>_%rT3Èy- «?„%ÄÑF:6k€Y‘ÔEr­ÈÍ”NkJCïÓ†g™Võ¦ÄŠ@ 4øàPx´rÉØÝKÊœò ë¥6 Ï”PU3éÈ3E'7ô¬D¾* ½®"K´êNÖz¬5d&4¦¸õ&•édo5Ö‘§©ú?…u+mð•&Ët3É‘çuºfÉú1»áÌLä¢Hžd±ô) n:Í ]–a QåxJ·&n lßOsøö¦j66jšÈ1 Ñh=Bëšynú òÉúZË9ð-ݘ·››¦)5î]±bEÓÉà]èâZ)1xðsëm n& ͈÷»OòÌ"e9I÷¿Áƒ6ùÒ‚ó¨BYG°µÉh]ð§ùZ âBàƒwßá£O>æô©ó|ík_ØŒwß|›_ÿú×¼öêKŒî±·}—ª˜`‰œZ˸rñÎlàƒ£ß±ß$³–Këëø(Üe?ú$ñÆþüÏ8sá¼y \‹AŽGkÍÆhƒ¶m™Íf ¢Ï{^2pýuDd{Î9B*†»êT»c»=0y–ŠÜ$5 ÆtÈÖb|6l_®µºAÍÍ_üâøÿñ?â…^àÝwßåßø3'<öØcxïùƒ?ø7üø­ŸPCbD$—¦š(ˆù{®#¶··»‰ÿîî.¾iOÔýzêx6•ó¢¬Ü£A%I%‡4…akë ››#¬.p®‘sWX´µô’ä–ƒdŽžA)cMÇ i Ì.W Ò°­Ð  ×i¯×)ð fS¨T¡cèRJ—ýͤI”ýĦ‚e>¼ † F%[ۛĔvÚ&ó~kT'›‰)’¼kõª@ŸøÐ6§1ªF‚ö ï«‡&ü¢ò¹uéà§ Žû{Õ/â¹¥V²‚æ, z ï:ï×ecëÓØV«À¾zÃìZöÛYU߯ë/ú~=ë,d$!\õžò;áD_wb¸®„¬0§˜Ö‡×ïñ2@íx~Öy…àqMC® FÉRÁ `Å(^Ž¡u½5Ý$)¿ÔzA¥d·”BØÖ Óé„ÙlÆ{wÇìíísŸé´"*I§=+÷Ÿ“ug6›QU ³Ù¬K–mÛ ›ò.ë¹ = ”®¿`š=9…ŒÌðCŒáD䃢ðÈ^È…•c*ŒÆ¯XcúÌ5‘Ú˜ÎiÌÐågÕ÷RÊåþœ3äcÔâÕ¿hË’±>C*?,«¥†,œØ¼Zj0?'öÔ(¨52Â.Id:ýéG÷^FŒÑºä•L†cP:þNÃÛlbJý!>¢˜©kB¶‘bt(-‰lÁÇ”h &s¨¢ÌÏÒ8M똵-³6PµPÕiã9>nØ;8æàèˆãªåÎÁ”ÚjçñNC!S‡”Vè8ß1éïE+;œK '£Õ!S0› ÓùTÎÇ€÷®“”ö $忇bt!æš½uÁZ›™5ܼ}‹›7oráÂ9~ås_`P ùñßü7¿û&?ï}öïï1>:dz¼¾bscÀµ«ç¹¸»ƒÕ­Í‚KåsŸÿ;ì^¸ÌÖÙóx]2‹Š 5Aijç°EAˆ’**kÜÒ€ƒ¼N¨Ž™*^l‘àÍœH/pJ† ˆG›1º3@—õ'™ma…˜–ãñ„{{3n|t‹­žyþyÞ}ïþàßÿ ~úÎåö÷™Ž÷PÍ]9Ç‹Ï<ÎöÎ6Wš«×ãú#O0Ü8ƒw`‚Fë­,¦ ”eb?¶lêfJe4ƒkWDâ•g>Ƴgww)†#fuÅÞý̰ ªjBkRQ×&7gÜ8¸Ëûw¹±¿ÇµKÙÚØ”Ú¡PEÏáá7îȵܻwŸƒéš@‰'ºšŸ{ŠW^}™ßþGÿ˜_~…·~òþå¿þ×üõ_½Áä舞†/~áïòÈãOòW?ú1ú'ÿ7ï¼ûM%Þ&….ФÖU›&ÇMíÒõ2]A—YºJçX]¤¡€¬…ûNJ Ô£Jû‰¦ -©ÊC´Þ3Ô2Inš¦ó½ªê™4QR~\Û¤æ) ¬åñÇåŸþîÿÄç~å³lnnòg_ÿÞüÞ÷xò©Ç9{ö,ßó ¾÷ƒ¿â`ÿÆy¦“J>‡±DäµbdnŒS`ﻆ¤ið®«[ràO¿¾*Mù «]HàA]K3xx˜Ò’„ÙZ Ú ð”öWc%¼£HLÔ²,…[NF©‰Ò¨è…É« ê¶• I 3¶ 0%UÛP”%ÚÈ:5H …Ñe­¨«–Á`@Ó¶²§•WµÉ¿Lxç¤= 667F T1Úâ}K<>ˆ_gQr …é†yð²D‘>;%œð]YNc­h–˜«™‹“ýU]-³,]b<È‚ãaͶ×J«|œ–#ïçÌø9ð±Ú;,¦ô®‡ó[g ï³7jo0”ÿžû¥U*Œ~³’ÆÉªe;‘ ­×)Fúþ§…\-ï·«dxžÑ¦5.ÎeAZIjn#ë‰-mJÍmºÞ°nô7ÁwLc’Òjc”p 2¸çJ©™íü˜Yô=ËBI˜ ›slr®¡q‹Ì«¶™ƒy?Êû·ÖF¤‚1PÇHU·4• j&“ ãÃC˜N§|ôá ªªÂ¹€- ÎlžéŽßJ¦ãcš µ\]·L§UZyï“:1øÌà†Ï÷oà„¿óÉä=–Xòœè {V”ÈÏ—EÑ%k#žKù³£Ð…ž÷L Štl1̇ëH'X…ˆµLDRØuú ÁK’¬U)Á<™UÚÅ¢DØGâg¬TìÔ«$ÓB _ ¬®#€ôñî^7¤užÀp.홞¾)ý|MW d›¿W™Ô$¹¯Ÿÿ¬œ_«Ub³‹èÂ{/A'±§PIˈƶ ÈS}¼%ª¥×·âÜûʘÌd¹`ö]mœ°Ä¼óÂxÓb󳚘v>´K¦ôºîbZ?3ãl¾F‡tyâ‰='dϺü|÷=¤V!aµÒ?ê´ˆU`XØY5¡é/ð}äò´)Fg>¼4UXõ³ËŸ©Ó?/m Ëñƒ¢dÕiòÈ5¨ââ&ÖÒyWQOl¬ÐÊ÷‹ þ„wÕë¯{hO›0ùDÁ–T¾$‹S™_D$ç×ÉGï QQކ"ô‘ª•¨øÚ X5k=“YàhRspÜp0žr4®9:ž1™6!m„àŶY)I,è$=æHý\r=#:´Ý½®:SôSRÒb\0›[‡Âg/Ž,^TJ˜hi‚“ ³lÐ$)šM –ÑŠ"›Ç#ÿn”&2È&é‰Å”'$¶HH¸ó©˜“ÄÁ¼X™ô•U’°˜ØŠ!ˆRôå„©fÛ&"½°ÚP²XYeh'`–‰Ö`uC¡5F‹çJ¡Àj‹µòz…†›UeE’êÌ>JZúˆGc!{é´áEƒR> a>ykÛ¶ó™ËÓö<8ˆ|®ÓØ'/^® IDAT”P‘‹†å\B}b2™#¬:ÆVf›æLLo±“èõ'\Ë!*iµuÇÄÐ+|8|ò— Ý”³Ú«’ìq¾$[ònålºŸQ*Hœ‚ÉÆoÚ”µ„.5tžy™.©=  L´}ˆ¸¶¦žNðmN,Š8cLÀâ [Ò±ÏMH—¦ËqÈ k;ŠªiðH!ùá͸¿·Çùóçùâ~•º™ñÖÌ_ÿå÷yï§osïÖGŒ÷÷¨« ‚çâù]vΞçìÎ&›[%[£!.žãÅ>Á /½‚Wåp› ‡T^ V0`Ŭµ“€¯i¨ær”<Й›èÆd|ž™‘ÙÎ2,€mÛb­4õMU3›M¸}ë÷÷¸þØã¼òéOóþ{?ç«_ý*o¾ù&~ð>û·šÇ®]àâî“\»|Žgž|„‹—/óÈ3/RŒ¶(Ë!Á‹dZM †6Dñìò^ ŸŠqÔFGØŽp¶`0n0Ú`4áb`ÿð€ñÑ„"Èï‡B [ïZ꺡nkÆG3&Í”›·o±5tò«#.x§ÇìR“ñ`{0`ccƒ/üúßã·ÿáWøÌ/}–½£1¿÷üs^ÿö·ùðÆ\¿r¿ÿ~‡_øo½óÿß¿ü?ùÁ_ýÃÃ1e1¤ÈÅ•š§{æ4Íü'J N3“h^h§E)vpbÂÜo4ÀÇ4ܰÊÊÀ'D666˜N©ëšÁ`Àp8¤ik\ÕR&ÿçäúuÝrîÜ9¾ôk¿Æoÿ÷_á¥çžâ¯øW|ó›ßD©È />ÇÍ›7ùÓ?ýSnÞ¼ÉÑñ”`8A¡iyöÚÆw ŠDåBs”ë+­—Ãyk“ÚÕ@¶t7Ä¡œ¾"Oh»9W-M£dmI“õÈÜø üaÏëÇ=o«Ò…¾%@mYƘŠüìuwjØ­µâý49¦v"ÃË{bÝ4 0$@µì#ÆÄ:2C€Hó›Pòaž‹>»2ƒWmÛâƒcz<¡mkªF Ú]êÇ´²]ˆF¿'Tб¬fmËqSQÕ-ÕlÂd2ápÿ€½{÷¸wïÓãIç¸5ÚÂJ ]ÐzŸÎÉçu]/Ê3«*„…p¯ì;½ a RÇf«3Ÿï€–ÓØ—¡S¦,ª–À*)†‹”ä'–"y]åAjãÛ•’Nú€gHîŸÌ¾ŠÉªEÈ:**IyµŠâghÄIBCbÇþ7ZKbMç?hÒpԚΠ)1¿ÔÑŠ]EŽKî›eöÿÔzž¼±PÌ,™k.ž,}B³ß¿ÝÿGݱ-òÞÿ÷uæ†c–˜otA\uWôé˜LÙ£§îhõeŠ[-Ò[bðÜ×ø¨p!R9/&ìUËáñŒãªåöÝ#ƳšÃ£†ãYCÕZñÑÌe ’2Á …Ò§½õ±Kh‹‰•Õ¥u(tLi}ª3QÏ bdž(»BH/²±u€ª®©9<³ÿM5åÌ™3\âif³ßþÚ×øöë¯óÑï1 BÍS—ÎríÊ.\8ÇÕëð̳Ïsí±ÇÙÂk1¡­b:&-À¥sÐz‘»ÄÂlÚ×´8ïi}  ñ›{4% XCÎnŸáòÅ =z»÷ïsëÎmf³IòS´-ѳŠv6åîñ„{JuÓ阒’|Sc¡ñ-¸|ù2/<ÿ,¿ñßý¿þå¿. þíøyýÏÿ„Ÿÿü…åKŸÿ4Ͻø2Íÿö¯þ/ÞúÉÛܼy“a9`{T2›3 ÑhßI,èÁ±{¦B’«ÄºšïÍV´¾íY]„xjæðà?—\¬hdÇcñœÚØ #À CA£ð‰­0HŠ¢0<ûì³üÎïü÷K¦©øýßÿ}~öÞ;\¹r‰+W®ðõ¯¿üËï1ž3›Õìl¡ñÂòu³š¶–$+Y ®ñ”eyÂ74§fˆ¾Ñx>N­5(•}?MjbÊ3Qéü«“Ÿ =ÃØÌ´‡9›#ÆHUMe°¡HŵÑÃ:…HÃ+Íp6CŽ1R–eÇä"Hª‘Õ•ÌÝ…‰î;/3ƒÄ *Ë’í3[lnnvò¡,;iš$Ù&Ë&…•oŒé@û®9‰a‰ÇŸlŒz(yàzsëƒ+<Ä•5žV«T«d1§úg=Œùodå¾B©Ì¬XnœüJ‹‡å ð:¶Ñºó§z2Åe?*µ ¨ëÉÕ ¿Z½ªæï×çKƒóøçgý=pÅ5=@úí$­‹©ñ ÄôŒJ­5k„•4™L˜U³jÒ •½÷ yn766(Š’­M†Ã YcJ“ ±DP:…õ¼•bX¬¿3ûDü¤æ2Á¦®os͈°¿2è`æFéIk“`ŸªÉ”I5ã`zÌýÃîݹÃþý=f“)1±Â7‡vF#J; õß:ñçl<Õ´Æß1Tóg‰  Xì¹û€‚ iýB"|ÿ¸ç$»æ>N6dK’=„…G’q[mº÷·…N ¬¹¿µQªÄÕëƒâérè9 Ð¥TwÕõ?*),”–ž‰ÎF$ùŽi·t²\Ðu†N@›žË[Xû|/Z–×C嵜ÖóèÅ¿3÷Î â*veö‡m׬ÙwÙ+j£”ºˆ‘ä?Óy¢Iß•ÿq1t€WÇ.7££ø;&Ï´¨cWÇt€•Rýxô•’Ëe «;g)©1,Ý>¶©·}ˆ¢cž8îN$•BüNcR­cf­û™>Ój]ºa߬ö4ÓñÓ>Ëi´ä35Étµu7îÃ0 ÄL[Ç";íy¨ Õ]ùAùuçJ±>Ê÷D2EïüÏÙ,§˜)‚Δt)¼]€`,2w òï!P9ŤÑTÎ3™U§ìMÙ;³4a"i ¢çШ<’6¨ø]‰.=t© ¥‰QùÀˆ‡—V*B‰Í£âÚå \½r‹çv¹öèužzîyž|æyF;»x N%#k¥Ål“@ˆŠ68œó´^¤¹hÝ<‰ˆgÿŒnb© £Á€Ý3;\¿zpwï>»;;ÜÛ¿Çd:¥ª*¦Ó)MÝ2”„ qÉD»%ÈT…Ví­-h=Ö*ž{æiþÁW~“ð[¿É¹ çùÑÿ–÷‡ÿž÷Þ}WyþÙçxùåOpáÒeÞùàC¾õÆ÷™ÌΟ?Ïöæ³É1MU3<»Cˆ2I‡€wï݉½2„Àh4JéRbˆšÁò¨ÀG2ªóÉ…«á¼0Ù*”NÅ`H²ÿiCËöö¶ö&Sv¹æšaYRÕïEâ6 øò—¿Ìïþîïrþüy¾õoóGôG\:w–×^{7nðÕ¯~•[·>bss“ÁhÈåË—Ås%ˆAýdV±c#ŽDŽԠµm‹Iä6MÜóJ_ʼnzN'ãw­!(KŒæDÊÕâ”X†0«¬'Zzk|¯ˆ÷aá9èäX]óo$íkrÜFó-ÛtŒ¬ ä*šS½¯–¤ÅmÛr<›rppÀøø˜½½=nß½ÃÝ»·™ÖU÷z¥±lmnröìY6F[œ?wŽË—®°½½#ÏZ•RÖë?–È b­àº}ªišà*uI‚IZˆž÷{Hh[\Úzïqu+ûÖñ„££#ŽöO'ܸ{›Y]QÏ*‚óX­nl²91 ;vZÓÛ«®[Y·ÚdïÚ“àURd¬’ôÎ÷¦üåWÞ»«Ò3—_O2ÚTG@ÐI.ÖOšµÚHÚ÷R?‚ëdœ+ïøD_–ÈföU2×í€*’Ñ2à7 0Ó:Hú5"ËÔ ä,Ó ‘V%3*¥¤¢O×Y¡Ní»W ÖÕüú™Uu~öÉ^6€_f^­¬éyÏútƒØdM߇{•=zéþŠ«w«ï¾D!³f=R=ÀkÝÚé·±«"s]²N¯c”¦‹XdkšœÖ$Œ™þ—Õ±w¬U”Vc‹ù”ÃÂR‹ ·Ê“5ŸŸÒ5w¹–¨"Á4ºAµDåPÖ‘T}ùYeat–Ý¥Ïg"¥•„:C¤Ð­€ƒé½­‰X;gW¥+ŠÖÃô:½ˆ^Ò”G±å‚1!è…à‚àÁ{1[öâS¥c?6À53P¥V ëJñì*ŒÈæÄóM’:æ!aYSOJ$ŒËp¾.èd¼—ŒøY  Kš«é6›œ(‰õ§— ÝŠÝ:Ÿ˜|ã…6Ým~¾3•ïàËèçviÈ,ù|4öîUaª¾„@Ç•ëÖ ¼íäB›~¿užj:cÿþÅ`[”˜"³"B71Љé|‹wM'ÊÆÐÁê¶¡,‡Œ†&“)÷ïÝcc}}üI^zñ ÕtÊwþâüÍÿ ‡{{ܻ˭> ´5Á͸pî >ò¥ÌfvÏŸã©gŸá/¿Æ¹KWÙ:sž¨†Ô±$ ¶¤(,>:TpÝ5ñ^¤Å&Z¬6¸èÄ/nÁË!Û^eSù é|¿\ÿ…däžüïHExaKŽÇÜüè#¶¶¶¸xñ"ãÙ”o½ñ—|ç;¯óÞO~ÄñþmL;åÚÙ-®=û çÏŸçìîyž~þEžxö%Μ¿ˆ.7™6 ÅÆÆ&d¹Btx/@Nn|ðLëI'¿ðn‘iŠÒhc±Z´ýÆ}sc›ápÈù³»\Ÿ^åñë°´ÏÑñXLm˜O¨¦3ÚÐ2sŽYpÔ^ zåC`„aCüÃßü-¾ò›ÿ€GŒ[÷oó¿üóÿ•ýð޾ŕK—yêÕÏñôó/`Ë Þzÿ}ÆG3þÎç¿€k*ªéŒª© ªÖq<žP55J)Æã#™¨W•È7bXuÔueTbY¦¦ àÆÆt2åüß­“rB6_Wò(’dÑJÄdMÓ0°ZãœC)‘ ΂0Û677øÔ§>Å?ü~‡/}éK¼ýöÛü‹ù¿S5 ŸúÔËèøÎw¾Ãl6ãå—_æµ×^•´?;Ÿ¼Ž™N>ºu‹vú÷îíáÚk Züz扪òœæ]uòú¹œ8‘îõ%:ÈZ•ü&ÞƒaI"ìÌq;¦º2às2Vòj '¾²¯E¼k@‹Š¶…ºžÍ™p žé±ÌtJyŸ˜oÃAÁÅ‹F\¸pa9À¹¦;”àÓG–¤%ª«áÔB@P~Væ Ûδ†ØI|d޽®è?=¹ïado'©<«L‡@z–ÕÇ•>h@™W뼡N3‹_5¤ý¸²E8=xä4ϪÓÀµlý¢@Wÿúÿ¢ 8“üårˆŠ5ÂNÜ?:äöíÛìíïs÷þ=nܺÁ­;·9::ÕJô´UÍ™MŒÒŒF#ŠbÀÅ —yé¥OðÌSÏJ²ç`Ð5ëI,'C¢°èƒ™A«¾Ï9GÓ4sÏ«A^EQ&oôf% ÖË÷ªÉTä~cãöïÝgoo£ÃC´ª ÚZ¶66Ø8³Ã°,e¯䜧©kš6±À‚Ç5"á®Û†ºi»Ï˜¯G޼’Tp™Ø§X4,÷½gzN¢Éõ§±â±(ëbêCì¼>5FK=”­2tê›ðiU^,K½bw¬zæÁ$}Ï­”`˜“Àš(Æ"ƒ–ˆBEÁÀHwÄ(¦ïFcêÏmòJóÉþ xÁ6tð§’e–Á©eyíiÌVuJÂëƒH:]ÿú¯V=ÃAz×ü÷8—†öY_Ýþ(«º½J‘’è×gŽIíŸ< cºI¥ûÁTýÔ@­˜§}/ôŽ¡ÙchÏûHÓ1Úu¯§ÊD¥mO5–,PCî¿Èìâ™R ~SË>1®ÓØëeã*S@W,}Ô¾ŸÈrRîM?×yQ,ƒZ únÖh«>÷ºB`ùg×|«z™åßY6É\ `ñpÍuÀÚR/µò½—ÜÓ4úÚŠi41é´•,Uã%I0*çÏØO9<sp<㣻‡Lgžã錺jq^•@QàBbã¨Ø»ÆX„ÄgòQá}Ä%ÐÔw4}a’¨LÉT9[6Cƒ(IA15òs2…úXÓ±E†Öb¯Ó góölæ, ƒ$FP62  Ò”Va”,Ü…QX +`–5†¡•@kä{…ÎÆ€VÀ cQÙ§CE‚MųBR #%çS„u•Y‰‰©£¢€Y9fF(¾t 1£]J ‰XFKsb´ ËÄŽq’ôÅdÜt“˜lt˜=¡Nž_•¦˜d¼“Fœ iV*ˇFÌU‘ÜYpnT °¦‹îÒâ:ÿ;¦O}?.ø×[ ;ƒv½k»\¢sñЗªT8Í “< ÏJBºï¡cè-H‡óîÕ‚¡éÉ©ŠÈEé74j…ˆ:×.Mf’ÔÇ<e$},x1ë>>8d4Ãæ™3Øá¦€‚½rï=uí’×SÃ`0 ,‡ã)‹¡˜«VÇÇÇ|øá êºæò¥«<ùä“4ã׿Åÿ˸ùáìß½ÅÁý[øjÊÀ*Š®=yííMªª"^ùì/óꫯrå‘Çmí€P{ƒÇ¢‹!>œ÷_‹AgTsI’êö­ ¬Ú úkfNŒ©)_š°”ž›ŠòŸ¼õ61^~ùe´Ö|ãßà7¾ËÛïý”ã£=B=ag¨¹zý:çÏnpùâ%ž|òI>ùé_fçÜe¢2m<:†[;8ç˜M%yÏ9Gp mg© >Å€WÔu݃.â…ácÀ(Û½v¦Û¦dc4âÜ™ê¶b|é"ÇÓcIZjjfMMÛÖL«šiUQ· .x'ï­C¤T†Á_þµ_㳯~š?xŸÿ‡À÷~ð&ï½÷eiøâ/}†ëׯóØÓ/Í€½Ãc^|ñ%6†#¦ãlÊ!™U {‡G̪¦{¾¦õ¬šÍf€Õ¶2m¯ë$oO€VUUÌfuJ]¬h’ŸKPÒ¨£+M±“‡ŠÄæ‚-'<™$§ß¶€áøø˜[[’‚¨TäúõGùò—¿ÌW¾ò6··øýßÿ}~ô£ñØc±½³Ã[o½Å;o½ÅSO=ÅsÏ=Ç“O>ÎåË—ÙÚÚÀ{ÏÆÆwïÞåç?¿Á;÷pÎqtuÌÑѳɔ¶u˜”ø{Ò{3‰’O4ø‹ìl]˜zý,Û2¬›î.³,úµÈ¼I«†¸$‰wAfSˆÄ5%.{ùäÁjÇKû‰BØvŠ!1zŠÒ2‰~Þøf€6³7æ5¦ ÐP*1oM7œx?v»Ùƒ¬:–דuMÒ2£K©Õv§)(ä9Ö+¥h«Xù§1ÂÖÕF#-üo!%\ÿÞÇTZn¬d>¿Ì€{8÷ ÷\ .®O\gÚÿ°¬®õž4¬ èú8cÓ4ìííñÁÏÎO~ú6ã#БGŸxœgŸ}–G®_G˜ŒyûG?âgï¼Ë­[·Øß?ä£>b0péÂE¶··»àšåÀI`y€+Ù¯š¼Ê^RmÛž”}õê¨àÒÐÛ{Úô%iºSš¦aŸããcöîí³¿¿Ït|LÛ¶èd`åÒåh(lÑ1…5tÒE')Ã!ª¦¡ªÄ8Þµó¼þ:¶Ü÷-³[û>W§Ý»«Ž¹“€Ei{ë·Ž'¬.ú’ÃY9œx Éa…š@êWaïÀ<¹ZDD•¢tDù€Nö#¢öIZº§ÊïáãÊ  «zç3©®Tát¹ðríÜ?þ‘>ò÷–¯eÿgû„šUŸ½ÃOÖ(4rÕ¯“‡§F<–—ß+„¹DYÓ…ÊåÕI/¼ÅäÅ20bÈÇ“6¨ÅôÄŽt²@¾éMã“ê)þØå‡g9P+½ö"I£ºÆ|5p»‰ýwÞüÃID³QW-ì R5’Åu´åe/¯UL¦‡‘U®–G®§®3kÌQÙ V„®Ù]eÞÞÝ èù&sŠbì8'éåÝ ¤*xLjü]P¸äëÒº†ÊEªŽ«–£YËá¤âÎþ˜û{Ü;8bÿ¨ÂÅ’¦¯*¥ ÄO(xñmZ(â²_U "…Rš6a_)qøÉð•l"®ó±Zuò*ÕK tØTû]‘Þ- ~nÒš¿#‘üÏåÏØÉ×–ã•M–œÅÅûÅ :ÃB›eŒ…B+ŠF•…|v[h ­±F¼®ŠÄÆR1`Тa'¤T¼ì{•'º"]+™Ph£ðé,øO*çÍtÓa±Ý”>t ;ñõé6›t[X#~SÀ  VhÓ‹Dwh3HéƒÒU*eRÚ”^Qè¾=3Ê Næ/BHàœ0ÜÄDW|ž4b¤™ÄPòiÓKþMB‡‰OÈì¼Ä² >±ª’Ù~2üݸ+IÅR³ª•à&¦´AL÷z:I+3U7_9)Ä…eНîÅÄÆ”Ø%á Ϻ ò½àçæçÉð²¹—âÇU2 Wè^ÁRÜóëˆìe³´æc„%C$à”¢­Žö@ÚØ:kÐeÑ%„ˆó.É×<ÁµÔÓ R%ï=Á ÐuíòvwwÙ»Àëßü ~ò_ßæÆ‡pïö‡øfŒ¯ŽPõ!ç6 .žegk“ãÙ1Á^yõS|ê—>Ïõ'ŸÃ F´^3Ñ´±D»g0V14–Ù¬NÉ ¶›IàOçw®ÛI¢ÜçÔìy£˜7ß|m ±KµÓã©êºæƒ÷ßG)ÅsÏ>˰(ùÖ_|‹ï~÷»"Ÿ¼ýíñmv¶UŸx7 IDAT v/_äÂ… \¸x‰gž}žç_z‘ÝsllÒ$&Ë`4DkËtr„÷‘a9"8)I9‡kZš¦N ¤zîYå™@eï„Äœ) bÄ;(JQ”¶`𣖨  žº•×53šU*òUíä9kÁy‘Ímnðò§>…÷žÿøGÿ‰¿øÏßàç?y¿úÒ«<ýìS\~ú6vwØlµâ‘‹ÑÖ¢¡=w޶uŒÇc0nO)¥ LÛ ZÄÓ5“Æ'5F ÀhZßMøsR•sŽ»{û4MÃt:¬ÎQê2Y/Ë"„¾{F]ðàCçÙSUUšpmÃp0à‹_ü<¿õ[_áå—_æûßÿ>þçÀg>ó{{{üáþ!}ô/>û.\àÚµkììì°±±ÁåË—‰wY_fÿÛÝfz|L=} ÁÑ4ž¢™pª;¾ ®l ‡‹ƒµ8Qœ,+O~€Ìe>‹æµ,¤.õ|¯¾éD÷D"m›‡­’%€˜ˆŽŽ¶­¥AIë^‘B*‚§K`]fè„p^RxŒs’6™½³†EIa„=WƒNfúZKt¸HÄryã\jѽ¨øþúJèš.•ꇱ¯NKó;m¸ú ïõ¥J-êJ™bìÖ¬uõõÃx[ÆHøoX­úÜZÞ\f’¾n±T:ÍreU²ÊÐýa@½ÃÖúEÿyXãø®§ˆÖ†ä;•A%±°\}äŸûÂçùì/†«—®L¦G¼ðÌSüÉ}ºm˜Õ Þyªªê¼>;O§˜YVIn×ÊZå’D03fû¨ý~g•aNÄÍ¿?­+ާöÙ?íÙ;«iZª¦fZ5ÔmCãœù•l«ð‚|¿-§0.c:6=¶î*òÌ’„¯ûüB%#*ñM&œ6gVUHŠ•ˆ?JéÔ‡õµÎãVÃrÿ3^Ыõ—IE«TËAxs¹ j$‰Au&òJº7|X›ö—Ž<¡{€jÄöêeC®uzY–¶n2´ è9I-·ÉKè$ú¸œ×Ä^.KWEÿ®º‰rA¹ Šõu¨ÚtW1’>ÎÆMm×y‡=xcÒ''7Êwj·õ.9]I-$äÐZócW:v Nwm£ü¬øçX<Š:´T.R·žãÚ3©ãIýƒ#îì¹»7f<¥j[‚×ÔÞ‚*p]#h0º óoTZœe]ªdÖÛ‡àAE\çÅ 0¸ b·K¤KøË±Øb(2G<¡­—I9­ñNds'ÓU÷çÜ´/ÌéÎÉO({´š®Hì¥DÉ46v@•É 0Èñ¸2F'pH')K©(—Á#(tµb,nÞd4âå“ewxŒJ&}B'Á‰&ÓP=ä´F|){‰'‰qeò} h)51bµ˜³1F¼cŒÚ#z| b”èÝ´™jå‰)¾¾*Šf? fôbì™6ⱞ·øÒ"m:–Ü„GbÔ¢é€G×¥ÒÌÒó®ÕÂ#Tñ¨ãâ„DÍ'sÖ"ó3D—cjÉC/m~FŠï=J+Iì&@!m.iŸ¦U‹FÔ'}ÖÏ$êd,é|ÓóÍê<š"Äàå¼'eT2Õéy{7D1iÖRµUÍt|„™>Ê ¶6ÐE‰5R€AŠ!Ð6Ž:1ZfÓš]ž~â)666x÷ÝwùúŸü?ýéOùèßsx÷.LJ{LÆ{Ú³³m¹|å<áFë@0ŠÏ|î—yí—>ÏÕÇžE•Û4±À‡ªÐ:…U %h' po [V|s2S ÆÊM/÷¬Z0¸_(b:"|¾õÂÄEb>&/s2ñ½Èññ1?ö$øÀ»o½Ã›ßýûãrïÎ-ªÙ1:V<÷øU®^9Ïh{‡k=É‹¯¼Æ¥k2ØØ  iÑèB=´­¸–Æâb`6ãœk–ËÕuÝ%E #ªjÚ•‚^õŒ^“‰¶ÖšÑhˆRâ T˜<Óµ(²~«@6RD²Ç‡–Ú;ê¨$ݳõèÊãg5…Òœ¿xž‹W.óÍo¿ÎúÚäí·ßÆU3®_½Â§?ñ ^xü)yâ1ìù3˜Ñ€à<щazÕ:¦³Ôc0Ü`0ж GYZ´Røè…‘HfsÍ:‘^傆¯vZzœ÷ ˜«©jœ ¸ºa2>–TªÃ±°µê¶“ØÍja ç1Q’œÀÒ´S®\ºÌïþî?á7~ã7¨ê)¿÷{¿Ç7xüñÇÙÙÝå[ßz7ß|“ªq\½t™ÝÝ] cØ¿·ÏÞÝ{DÙÞÞì$3Gp|<åþþ>‡Çcf­#h…-•ø¼(€ÕP׊@À&Vl[ݨgÎ$UœŽ¥Ÿå)õ2c~ANØù_éµÉm¶È¿/`™"$¦·°¨¤ Ó õ›‘`-ƒÁç\š›êľR(#Iˆò9IM>ki²_–MH²jÎòHç5„€ žÖ ç\èî“|å½Ë\MIŵĨRAê üYžh–}cûëzÀwu’Z7ô]häúõt¬¤¸ù¾áùbCª¤.HC”UaF§A þü" ‡ýFøAƒçÓ†á«Ûîµ2ÀªBò‡Œ½”Rµd\7\>Mòøqÿaù´s±ªA_õ,Ÿæ§¤:Ú¤¸#¶··¹~íQ¼†'žx‚çž}+—®b)ðx¶7ÎpéÒ%6F#Îlo¡¯]ŹÀùsgÙØQMSMåý| II¸Ê,+çÚ“Iw t¦Kšï¯CÂÐz:2I^]ûûûì¥?˜L&ö±a9`÷ÜyF£Ml²1Q`Ëfâ=韋Æ{f³>@Ý6Œ§ªY“@ûÕý^ÿ|çýG¾Ïš:„N^·9Û*%ÂCam˜1÷éS]j0UDÿ^ÎÁ9ù³vžMŒ²2|Š+ÌÎu\X÷YWéó¦ZS' «*­5R¦g»+æñ*[%+¥;+"cż½4–Òˆ’ÅZ›:I-k¤b¦¡*¤õχµ’¿åÁÇ2£è¤Gm\Ë~]%¡ìR —ÔË©„ë†ù3(­»•>„òº%ýÄ< ¤«í­Zr0'˜ÏYJ–†j…‰ûò=˜{õS-”´M~²±³_PhlêçÄ‘EoµÎÄ}™ÂæÝÜ+E%¹Í"p”̉SQQ¤DüBÃ(Z™ÄˆèPœSù¤q™ËÏ´T»²A :íjßó*fï½ÐåºÈñ9†©’”jÙÄ,Ó;û†úó‹Ö7¸—ö£,ʹ¯CˆÝÏåF2Ǭæ×A%¨ˆiˆ ,J½ˆ÷¢+{q÷«+AJU7 ëX $omæ Vw³§—4¤k£:çla£ ¦-eað^ ûÆx!F|Ð4±`æ,³ªæ¨rLëÀ¤ñÜÞ?âö½CîÜ3žÕÌ*GÝšZã £Þ‹ ròX ŠêŽÑ Ô¢9\žtD²áp’óˆXº»F:ÝÆèŸ‚,É É¤ È±´9>׈7VžÂ+trtç=jQáEI¯óÙ ŠÉüà7?¼ö5qz®œÙäüù\pWGœ½pO¼ú Ÿû•/°½{žÍs(5 öb<­Ó½Wj ­S™Åç›CÔàqÉè5ÝÙ¼ƒ¢ TºBĦÈâà[”ÖsV‹JQãJÒtT f“1mt4®ææÍ›4.põÊ£<öØüíÞâ;ßüï¿óSîÜü€zv@h¸vn“GyœÑæ?ý /}òS<úÄ“”Û´Qá‚FiKŸöV¥ iªdbÓfÖWÎ9‘4*a¯ÆzÎÆSÊ&ÐZ [EAYšdüZ¢U! kÀšÒâ¯EÀ¨†=CcQª¤j[fƒ¢ÐLg¶÷Ø=·Ã•Ëyÿgïðÿæßò­oÿÇ“#Ξ=Ë'ås¼ü‰OòÄOpáüyLYКB€6u`Ö4T§i0sCÛI& =À5*IôÖn0,bgò-æ¹99é‘“÷ ¹Ð2s ­ohëF­²K•š-ïhœIŠkñ ÆÇÜßÛÃ;G}xÌähLÛ¶¼öÚ«üÓòO¸víßüææÿøÙ={žç^xž{÷îó‡ÿî?pÿþ>Ú–ňk×ã¹§ŸáÂùsŒÇcö÷÷8žNÇé“yv<Ö7-ãªÆC°kKLáP5ŽÆ5ØÖHÓ`-QÊ¢ ,K”UÝ Feæ±Ö¸æLY%ßWZd}v[Jݘ™ è9(§éÄP=OAk-.FŠ¢À5 ¶(…ÑfSc—X¼!ˆ¬°°±¤iš”‚˜™ƒºcxy'†úZkCy.– Vi&ãc¶··©½Hi‹Ò =ø hjV ÛÎ;šVöžétÊñј=SàëZX]åàÄÔ^e/¬(Àˆ5† ’¤7¦úE©Î'Ï'I…ì<ÚJŠhôYâŸ,7ç¿mkta‰¾×æ>$0FÑ‘]¢Dö­‚_ÎÄÄÏSÝ13R“ÝS ³ÎKwµª¡ÏF^ç—vÓ¨3ñUúó½—Á|É治¦÷ˆÌCÃzïC7 ì•©aŒ1tl•Ø3ËI¹8 ÒÅ…áÜ<%ûÁ†é‹ö#a­È|èršœq5ÓªÏ^ZÇ “Ú]@‡„MRƒÁpéÜE†eɽ³çpD.\¸ÀÖ`ƒ’Áîï³1qíÊUÌ#–²,¹rñ £¡m*ÑÛ–fVÑ4ÂÎéËœ0ëµíö]‘éë΃RÔ!a!‘p/ûÓ wîÜáöíÛŒÇcšj†sŽÂ6GC¶7·)Š‚aQ¦ð˜F|a€‹UÒÏf3š¦a6›q<¥Õ†YÚ_½‰u™ ¹Åˆ bk"k¦ë˜'$ŸUÝE?æd\I¿ë‡§i²'í<µÐ-J='—ˆm‰g(­¥>5½û#³®nÒë§>)Z‡q®žK¥S"¢î5ä|G¿hÒÕ7MW†VKÚ¹°M%apDï)…ÌL•X¨(C4…hñ(«h#=‰l ….Ä"F‹¥Mö‚’IAì<c¹5µð§&¿f&R“<;EÁ ¸å!΂44)"Ä„½—ä¨çVÒ׆EÙ:(•µNNÒ×yß2†a .yOé¢dС²tP¼™ (Í É}^mê‘òp3{ßõAãì÷S=xƘtÎç¾fÝûÄ(!WyIÄk4Ö–´M#×ÛèRSŒ) åaú-æSÈu1Ô‹Hd—è°„$.Óï:ÖÊÒæNÏå4'þe–ÕƒÒ–ÒU |Ánšfa3/ f%Ëë4ªò‰ ITkéÍjkÿ z sˆ2.ðŸoØ( “Be‘]…æ aQ¤I1§…e`4ÎGjðQ¢Â¡™U‘iS%yà!wޏ½?æà¨bRy¦§n"R¥°Ã”&F“ àA'Ä=ê°€®²Âg¦»ÇPóéW²b@³×Ì›4‰P¬’{ŠùújNîÑAÚÐvñã 2ðI ­i-þ^Q)jß2žN°¥! 9¸¿‡ 09<â©§žàÕW_åý÷ßçŸý³ÿ™;wîðôÓOsåòu¾ñoðî»?ãxZá½Bámnâcdss“ÝÝv¶Ï°»»Cë4QÞáZ‘§¸9žNøÙûˆÿØlÆææ¦<Ç_¨¿BÆYÛ:êºè0¢•¥(æ^¨ETšÆyT¤‹[ïÖž‰^À/¯dË“úÒ`å¼Öm³l,•H¹þ‹‰ý˜™™q”S´ oV-2T %›ÁL>M±µe4Ea–êPÍÖÖ–0…=¸PQ ¼4mKa暺âèpŸz:£®¦ ¬Á=Ö¢bJ²….œ¢_ƒj\c$$`™¨;v²sa<(l‰ ÚÕ¸àC cp.`ŒÜËu]cË ñ0´E:zŠb@i4Óº‘áqL¬YtJüRÉ®ʲàÀ9œOž´yR®>žüìA †ã³ô°¬­‡Iý[Å0Z¨OýóÁ’ÆUÒ̇=î%7þ"­ËÌÊC½S-KH^˜ég…®ÙÙÚfTØÝ9ǬªÀh¦Gn~x“ `<3>>`ÿöM†EɳO>ÅÆh³K6JSO'sO«ZÖö…š?ƒ¹^1š\Åë(œçºn …ºmT:ž²¿¿Ïí»wØÛÛãÃ7Dzè¥f–v¶·DoPS Ãô­Ã· º$À@{ïÌú„×yt¯’ö=È—p•z«G¬bj.ƒû™ÐC²øPhQ)“úP{j¨ÄÓka>gP-¯?}É`®¯Vy¨wÃ’¼÷Âö{³&Å2áËçW-…öÙu‚«LË– O-‚WjEBàÉ‹|úâœ_¯ÿ:ý÷íà2Ewyñq½–QÊå›(ßpëÀ·_d³>Mo>‘œo®âÙ/V¡!Q%…®“BHtÕ¡³6ï «tA&Y:U‡‚ŠÌÂK `Ô4‚Ñb8šVgϸ{Ûwïs0ž²?™q4©¨Za: ,Î'0ÁR>úiö®惀Sô˜0}À*öÀüô³I.‡™ÍîbgB«KD“€•䥢LÛb𢥉˜ê%­ )t»Ép>{:é¸C«TŠ. ]šF¡}ǨH‘ÓçÒÆgµ,Ì¥…Á@S&ùsA¡#¥IÚu¥0xñ¶2†Â$@Éx1sÇ0(-òìŠÜ,ùÔéÞµZ¡ J$mÌ&½N„P´$Ãi•Í%½.§L¨¨0vžâ”ý¬OfxISLC2vF 2•&@½|?ïœb,E@@*RúEÚ¡e!LºìÔ¸X&ôõÔò~ZEж›ng© ”ÝHëâÒÇÒ„Œp®ó/K,Ä6%ôÉf¨Ø+%DÖjæSŸlâß3|7¹‘éi.l»r1n×tóyô½©nì Ôœ£š›#4•ˆQŒAëm ùSD,‹ŠvE£ÑF‹5q°ééP4´û|>@ôm)Q8¨fŽ]C¨*¦›g8¼wDã"Ά£M^{ùÓ<òøÜ¿{—?ÿ_ãG?ú!?}û-Ƈ÷™NŽ8Ø¿ƒŠ-;g¶8³5 rcç.]â•W?Ëg>óy®=ö$Åhk7 Ú•¦õ‘6aiÛ1!»îÄ:m{÷Ã\.ÜyYåÍž òÊS2§êŒÚÑmŒx8—ä— Ÿ3kç9œN¸ûþž¼þ$O?õïüø-¾öÆ×øáÞäæÍ÷™Mö˜ÍØÚñØã×6¸|å~ù—¿À ŸxUZÌ`QS5-Mè䥿œ0.w¸FØAÎ [È5µkiÚ¶·3,ºFôïwÓc)YkÑ…‰¶,;I¡’4U0gssÈÁÁ¦,(‹!u]cŠ­5{÷÷¨&3®_{„ÙtÌý§ÿ‡o~ãëüôí3, ¯|ú%žzê ^|ñ<óÜ lmŸAë5.*‚Tm½`Þ›§‚1 !Œ¶sF¹»-4eYÊW-V•Ч’9ÕÃg¨‡ø¥"5DGHÏ›€´¨æ€Ìd2¦ª[¿t•êè˜g~õ)¼÷ü‡?ø*þ¯sî¾øù/°»»ËßüíOØÜÜä‘GåÖ»ŽÑÚP¹–?ºÁ‡7¯1Îï^àÂöy¬µÔuÍáñ˜ñxÂl6cïÎ=~üãóÑïã¦C­ÙÝÝeggMÛzªjÊ´®º¤¬h">FêYŠ-V;ŠbØ Ýtœ§ãF¥<±t˜¯©mòþ2Ùˆ¶WW:ï°F$*>ú´£fÏIÕ5|:¦=$ %”2]òªkƒø~ ïA „Öõ¸ê‰)³”’¥¢ x<>hŒ•=!DIÕòÚÆwllŒF£IR˜55‡G‡rx´«¬QÜ»wÝÝ]Î=‹µ¾ …ê¼Â²ofè§z)üG¦@)ñöŒAQå|j^ÈzRW-eY2,6äüµ&x‘c†ÿŸµ7m²ë¸Óü~¹œsîR ……ĸkuk4ÓÝa{žWójÆŸÁögðwñ‡£'ÂŽémÜÓênõ"©5’(‰")R¤¸‹€Úî~¶Ìô‹Ì<çÜ[÷Àö0Q$TÝåÜ<™Ïÿy~ !T•À8G’e­)‹u)0i j€Ò®ù½‘j[a«š²*3'k$u`8"Ã}Ø ¾*Òj„~“ˆò$bÔæHž{"¨úYæÉP-nú~gñ¦žÎþ¤L°¯r9Ë8Ð̘PÒÜÛÖ5…Jed"c¸=ðŸ÷ªäàÁ—Xyž“/æô“”«—ŸÎ á‹3Œa:š6ëztŠÅ¡4¡à K¯?hÖ_‹£¶ŽÚ¶ c “ÙŒÃÃc888àèèˆQhLÓ”A–ÒKSÒ4¡ŸõôÒð‡RN´’¤‰&IT3ŒŠ«Xú1]øÖÂºŠ±üj™=,ÚäC“êTíÙ6"MVÎß]Aˆ¥önÏêôN¤((‰°NGFóÞuZq¢åx¦¡¡Ã@íX28Ûbxq¹ÌÂ5>‘Òx¢‹Ñ¯³Ýa‰dÉ.z%¬‰JC…[ÛÎùœè_u­»ÞÝf-â,ùÏŽ5œêµçõ'ïWã¸ÁÔD6¥\«olzž«ÒºçØ×ímº¢Úº¶Öuß{UÌjyë_w·©_ùÕ5@­õiW;“ƒµªÞmªñmZ7ÀÇ–‰î±7¬î:]|úûŸÕÒ±y”rí £Û‚¸) ¾ Àø¸›Ï¦¶À'»)-³ „2±÷Òoج “Tfè+mƫ՞•¥ÌH¢q±”LH àtŸÒZ•eQûiãxVó壎89strÌñhBU{©§rÊ;´?üNK“ÿݽ_רaØ5*ö†ÍÊjS†ÿ*Û†Ë8TR43)h3Ç".®74Áid‘.F#\cÙö7o³Õçš €p(ŒM Ô IDATÏšKouWÚ+ˆJ¸ž$^°ò¢¡¿æ² É0-¡%¤Ê-ýÔÿÌž¤:.¦¡YH„i±3Áaà1ÆZŒlí÷BÖXã¼£Æz¸w#"áP©ß,XÓq–È\”\…èdëEÀòo¦qþq€O:á@ž œß+D˜Ž]¸…ËNË^âÄJ´7éØjuhÞ“Y6²…"Ö4¢ˆ%ã_t\‰ÍO’dI k†Ž±C|V|é{Š kUkí’WÛ—Ú>ärÞ¾Ù à6‚xcv}¹2YHx[œ±‘h1 üçy`þ#¯R{>•î#d\Š Å:åÅæÈ¬‰"9Ò»KUñÎY¬°¤™bžÔN& BH&‹œÑ¢BM ú[†KW®qïÞsìÛçá—_ò½?ýs~ýë_óÅçŸq|ô‡_~†³%I ûÛ)»;»XW1špîâ¯|ý›|ûÛßáêµ[dÙ.……2·$iM ("TŠ’~“k‚(«µöÎŽÀ6Yïð¥ãºjY…çÍz‡ _WôÞOËЊ›¹*/8>q||H2Hyñù™Ïø¿þÿ“~ó6'¿äÓßeЃD,¸sÿ*•ܼs“—¾ö{ܽ÷2ƒí áÌ« k Re¤‰¤ögz²4až/šH[U•Mã`â®4‹Î;ºF’4m¬8íB …n>£Mû%&l2GlbÂú¡TÂèdLQT úWŸzŠ7_ûßÿÛ¿âõ7~É"Ÿ°¿Žçž¿ÇsÏÝãù_àÒŧÐÙ€¼¨½èyi}‹SYPÕE˜Î» —.% ‘8­uÃ_‹÷ùÕï¡;ï·ÇÞ8ß¼£ANù¥pHðK‰ Toqϲ,jJ[=Î w™OgH,jï2¯þä'üÅ_üÇ£þèþ€o|ë›XkMf¼ôò ¼ðòK<|tÈ/^{÷?ü˜EጃÑ!ßûþ÷yë7—¹páƒAÏÇìêÚ·\•%£Ñˆ~@ž¼òÒטÏr&“ EQÐÏú%Úø5=I©ƒ˜W%u]†ë×O½=ϯ¡q1Ml«Oè¤yÍòC‹`µ5SÛe°º ºw•Á᫜A¨‘óÛž%1³vžm夞ó<¿eÉx:a²˜qpøÑhD¦—.^àúõë\ºt‰z½Y–5Ÿ£vë?em‚Hºìú4ÆP‡kúáÑ uí ió‚ÙlÆl6c:6j[ÛöìHÝÃ)*E$Û»{ìì½&›$ŠÝÝ>;;v··ÂRæ L]’¦šþpQ€íxU^ô‹Ñ˯"Î<©Cêq‡ËMN§MŒ«uçš³º;Îç5"ÖWaNý³ø^gp´6ñÄÎjCûç<®u‡ñÕ”ˆÞã×É8ÄR‰öû#ã#ÕÖZ4‚žJ¨ëç$ù4'/ LíNE˜â*~vl RÖaÄ܉wÏçs¦Ó)óùœ18::iD+k-iš²³5ðOZ‘jíyáVñ±Ç)uã6QJ6ö¼¬˜L&Ìf Ê2g¶haò‘a×]ûºççøÿW]WkyšaoÝ}â€X¨Ô®;-¨~Ùk;¯ÒãbZWyŒÑyOÔV…5K[µÎ!Öu5Ï»r¢Âš«FÄw]3ì&€Ç}b¤ûˆä`#C±;œzœh½\v´™“çßOÑF7ˆ]«ŽªuŸ¹n3_ס&Äé¦^VÆŒK¬)ç6r¨Î2ëÄkz“nÒýÝÄÛªx·.EÖŸÖ FW[ÏW#Öã,6÷Uëô›uöb¸ú4|ªàžŠ1™%K£š¦!>èöÔµ ­oá÷…[Î}€å¦F³î'©’]½O 7ÜÖå]×Þ4ÄÙ7Ÿu5Ö]g…W"”.ÖGH”ó13ë"„Òo8­0¡ÁÏ7n5}©Â´SSÎjÅdQp2É9ç<<žóÅÃcN¦,òš“ñ8x@{X)BÆÛnm¯×8œš×%4@g›^ІÎ#dó;"ØUiZðh6Ì~ñjÍ‹)l ˜¹Æ¹]/R®Z‡"í÷¶1º(l³Zw£³ÖZ_Ù*AÆ‹bĨ"¥-Z´2$áF#…ŸkaH„ð±<¥Ê¢©}öWúh`@ïYh Ñ´Vhá¶Ž^á‡x!'6^i]îZ ’Äc#ZxbÜÌÛ¸˜8ëÛýðê¸Ï/ƒ•>~ãŒõ(ˆph­\K% AîNƒ‰¤6µ¿Þœ[ã„oê“!¯îœC9‹’ª}ûD›•Ž"R´< – gHïøÒáòˆ –¥ó.ר“=r$‚Yrv¬fŠ¥ü¿Ç¼6Á%к,Ôÿ¶‹®Ïó7NÎpHvÍÚ!;×d‡µ ŠŒQbtu¥%IJ›ÕQ¶Péo@þ18ß7bñ›d‚”B¥‘b¬w¯!"€¼mt’havm‹Šo‹´WSæ'$Zi*eY“¨û.qééÜxö9œJ9:8äGÿø#^íW<üÒÇéN°¦DR²·»EÖäÅ„ñ舋—öyáåßçëßùû—Ÿ¦ßr2[ r Ï!lÁh^’¤}tfɲ°!ëL=ç«m²ìr›WPÄ(°ìlôhø-BÆÍž_gMàCx׉¦ª=ã-QÞsððKf“);;;<{ç.ü—?ùϼûæ[|öÑÌON¶`«/l1Ü:Ïõg®sï…çyù[¿G2ÜCd\2$/ýó¨BW ßYÕUòœÏrÈ-TU8]u(îÑøYiØ‘~#,¥¤jÌ£ó Õn^@WÂG—m®êÀ§sf‹9ZkzýÓñŒãã»[; ÓŸ}ú þË«?ù!Ÿ}ñ)W¯>Í˯|‹gîÜâ¹çŸçÖgJ’f}ÊÊR9ÿ«+˜æ9yž#\5ÕÆ(¾ C¨®xå¶ALèXëîÏVt7„¢¹¯ˆà¦rÍzeE;„‰Yk-y^ÒK{ôtB>™h½åðÑò§ÿ¯¾ú*·nÝàû_þWnÞ¼‰q„`w¯@%šñtNÒës81Í F“™oË:Ÿóèèx·°µRô{Cvvv¸zå W®>ÃÕkw¸}ãUUñå—yï½÷øòá'‡äÁ½æœkXeURU‰J1¶¦(­oÉu}ÿú é]Ra¢Ð… w4IÏ»‡ê5!vë¯)Ø©-3¨ù¼±ºimÅüøùTªü&ÄÃãþ³9dYKo—÷‡øCQk‡Î©$ •„h’RN yU3Ë ÊÊZ8:>¤ª ²Œë×®qïÞ=nß¼Áµ+WØßßg04×\t’x‘Éï‘Ò,mx|Ôþµ¨Š’étÊd<æ/ÿò/Lx晻ܿŸ¢¬Éó‚ÃÃCÞ~ûm=|ÀÑ£ªªB)MY[úƒ-ž¾~‹Ýý‹”N‘öwÑÙ1:pùé+ìììPƒ~Ê'Ÿ~†5[ƒ>ö÷¸|ù"»ÛC´äE ù56´åÆÏŽËQšÍwÊÙù¤ÖWm*\Ðy|Câã†ÇOÚNþ$Ž©'4®ØÏz¼ÿ­Ÿô{7b¡êbƒ\p\JïH/‹¼qVE‘)Ïs?T)ò6:„"k &ðéÒ4 æD‡qx÷²ô®!ë(KÏçŒÇcŽ9<<ô1Å“‘w@Û ¥þ“û}ß$hª¼FH’t•«C ÏZK¢áEå#‰±˜c<]0žNÉs߸X‡vAö!éÖµìSÏQ{æu‚JXËé _´ ZÂ7±ú’ ѹ‡µâ»?'ë4mÊqâ91bep--©M7åâËËçkۼǩ–§ÊÕü}5?™v$¬o­ORºÌÁQ ´"Œ0$±¶ásu÷ëÑü"¤hΫ.¤®ÔD^»ë•x2×Õf$‘Ýh¶y’ZLxÅ$W£‹¬X/‰cÐiåsu¶-\“BúFõæzh¹’ñ5TZœŠ°®Óâ׈ŒêŠ‚ËH¨'á[¡8äò©¹–¢£@/¯=Âv¦lÁ´­í`M]rÃckT:¯¿mÁî!þÚ­Gnn„'}+¨@{΀„:”:¸x®©Uv¡Ãg؈¸A³Xáw5¡SªÚ2_” Rö/_ãö­»\¹v½µÃoÞù€_¾ñ¿yë-N89~Äøðª,H”£ŸJú¿Ñ|ôpÌSW.óoükž{þWoÞB‡ÌŠŠÉ´B¨-àøø‡¤7ئ2%ªœ“Ï=Aè–‘ pdYÖLúüëêÝZÈNlYÒzÙ]grj:âw3TÊ·©J))sïÖ8X̦ìl ¸|ã:‡‡‡üäþýà‡|þÉ'LO)‹9Þäüùv·÷Øßßãkßú&/~ý»ç)•„lÈ´¶~Fi,®H£ŠTi¤ÔmÍxí7ÞþðàÀ3ÂGŒ6ðoXªÒàI³l)¢Ð°¤Ã‹÷’àÔ°^oZ‰H$Um8øì3”Ðܼz…ñÉ„¿ûÞ_ñ_üCÞ{ç5¶·úü‹o}»÷îðìýû¼ðÒ‹ì]¸Èd>ÇZË¢t”ä•¥ªæEE^T¡ÁÑn¼7D±D–I—uÕ´,i¹„(Xåt7ýq£uüH3#C :Þ7IJk´Ê ê¼ÀGüôG?æ?üfùœ÷ïþßùÎw zž«—&KûíÝŽÇ#jSy7ž5Ø’ç¾ñЗvøõ6U FVô,dLæsvvÎQ#Ø:·yp€šÑdLe+jWPÙÒo¤cqö<›Y>AÊ)DåpÚÑ“•”>òÖð3}‹•tÞ6¬¬¦vµ¯©w5Î:já™|Ö–(«0KC;ÑÄþ½3:ìñœ‡Ð+|cm"%¥©IDØ÷Hå7ñÁ¥ÍJƒõê^j{aým¨ã†mcò†¢®B{äœEž3™MyðàÇLJXWñÔå‹Ü¾}›gžy†[7®³¿¿Ï¹¶··[±t…KhØ^‰ Õ S•|òñÇüèG?â—¯¾J>÷Ž‘O>ø×ùW®\ãÊõkܾy›õ/¿K¹˜R¿ùõ[¼ýî;<:âƒO>áW¯ÿœwîsíæ=.^¾DoëN88:¦¨‹EA¢Áæ',f'ŒOŽ˜Ïgd©æêÓ¹w÷.W¯=Íå‹Èz©MYÓ>t ÿ°ë&ìg±ŸN4;'ÏsLY1 èõS’dØ)xð¾Ä™%$–*ìÁUðyÇI×á)1γ»Êºb:š2Ï•£(|\±{MÄØTcpËCÓ³#lv%Â/IU‚ÖªÙ—J¡‘ Ò´åi­Š±•z],«-ÏZ¤ÍcèF1ãþÆGdvÙ‚yÏyÍó¦-Sè&c„ C>RÊzMÊ™Ðb2€&AÓ4bÑî³âƒàÞÕò4G[v¶m]+‚ç»ÑÈMnÏÕ¦ÁŽäLц‡T÷s³I´º®8Îv5Çl^+VÙâ«kk÷¿O9 ×¬k›~†XÓD|Z'ë5 ºO· qº)>V}Z%sk¡eg=±uŽ¥Œ*ÂØƬ­fÏ&àYW ëª~Í£6gNPblcÝ‹û¸ì{÷€¹I¨ë~ÿuéu6»åŸ»j¢Ny]›‰PT!¥B H9u+½Š T Êy×ø¶>„™TJ#)+˜ä†ã©w[g%¿ûâ!G£1'ÇŠÚ€Óž-%4Ö)t’Q9¨ªÊ”oäp]¼mZ­Ÿ.µ®‰8áZÇÍÒ ÒuþÀ:¢RhyA(-|+Jãˆòà˜‘ §—EÖsjVâ©aiXÏÓr.ˆC¾ÕCi‚…×!…m ìÂyç‹uÆk5A€RÒó¬¤ NáYž£: —¤Üºv•j±à'?üG~òO?âw}Œ™L˜šKûC.\Þgÿâîܿϋ_û&O]¹Í8¯9*S¦btðˆ÷Ÿ?úÜJ‡Ä·$ ‡CövÏqn{—^–…ëCçm›8 2BQ´ñºn#_—/¹*`yqÁ¢ÃzX7÷¿Tµßü.e¾`+0H~ù³ŸòÿþÙŸòö¿F+Ã3·¯qíúS|íëßäů}§¯\G÷ûT5ÈDRÞõ²Xä^@X,0¦j™qBwŒ¹n).èAóz)ú¸Ê»ê¶µ¥¶d!î_\ˆ¥ÅÈ.V§+¬ò n.‘æ*–b¾À–uYñî¯ßæ¿üÅæËÏ¿àÎÝÛ|÷ÿ×n^awwã:(éÆUôz=æ‹)ƒ~Ÿû÷ïsnïIôí« EÿþÓòáîŸï^Z=€=)+ëqÛ'Ø6@×ŨÎz-Îj!tÎaʺTº ŠEAž{ž^±È—L ‘Kå×ç,¸t‚¸cÂIŠR B+‹EãÞ¬ªŠ<÷è£Ñ Óé”G8ûÔÇ•ñC‹ía½½Õ‰Ú)’&&î!ÂùáŽ"º†$*”’ÔáÌ9™Í)kCžçÔÆ2)êŠùd΢,"õ-¿Ñ¡”Þ›l—®!Ñ8¡ºçÚîXµqä‡Vge÷l¾Dg(í¹~;©ÊGª§YÔuЪª^w‡ûR]ù÷B†´ÉêŸqÖïÿ±KCj¦ud‰D±ÒZ‹gK­î:òqc]h(”^hlnÙÒžsÃó&– Ù&Á°tVv¦Ù—E'ÍÎÌvR>\J{vÜ+^‡Šot,÷9+r»‰-Õehwµ ×× É« ráäZÌÒ:¼Òê÷ðg¸ú”µŒÐ°kõ“®ûj;ý˜3€økùWþûÆÆèMÇÓB–§›à&U×­ÐÍw.m*U¬¦k_üuÚî]V4ÅZõù,ÛÞ&(غ›ÞºV€uwõˆÿDÛü&ñLiqÊÕUNOGUçƒíã=NŠ`I§qµÕ΢œè4lù›u2¤Ö½cb<«É+˜†ñÜp8.ùì`ÌgO8<™3¯*O² ÖÊfÚê1‚¼,q*%Kzá&fÉó¢i ñIÏŠ1&Vl³4å<Ëf¸ñfoýæO-)Ò¾ÊWH¿1"J……tIœ¯¡Ñ­ögúÛ‘ñ4€uA1¦i‚“8úiâÁ绦tâÝVBÚ°àš¦L„f)|äMáB…˜œrŒo Ž áj”ÐÞŽ#ÑøêúÄO¬Œ1( ©Ò!ú@êêïL%ë Zy'“•[;œ©±ÎßÈpžÁe‹ éo>^ ŠŒ ,B ­Iäiá* ;Ý•.û*˜]=C-Dv= ?ñ‡ÿÂW‰ »Ã>|ç~ðwßçÝ7ß`|tÈÞî6ÏܹÉí{·xùë/sûÎ}†[»¤ÃP)55 £éÓYNžSE§ çB•løˆÝ=KdYç–"\ñÿ7mpØñï¿V,O]›Éf ñ é§Ê¤©999¡—¦>:àûó×üøÿÄö Ïÿøoÿ'^zéÎ_ÞÇ Gi}^\ƒŒóC)¦¬8wî½þ,ËØ ¹wç.ýîŽOxxpäÂá’*/ÈË9y6»Ócÿ½c’Äæ”ÅœA_…žÿØk-}¼f8¤7è³½½Í¹s;œÛÛg¸Õ§— H3ïЬʒù¤ ÊËÀ™9b<7‡×ºöÐ*8˜„YÞ#j©¨°®Ûp £/¦äœ0þ3ŽõëhøAË:Iª}¯”Të¨i[(Eø|š—¥¿ŸUÖóQ¬Dpü?³ÙŒÑä„é|æ!ÐÇ>¶¹}n›çïßãÙÛ·¸uã&/^¤×ë1釨íúáe÷`'''¼óÎ;üâg¯òÛwÞa6>kPÂCŽû½Œã£Ò4ek0 ( %ó™å§?ùoþêU._¾Ès÷Ÿ%ÉR~ûþ‡|òù¤©æhþ€Ý=D’1›-ØÞÝó\ǺÀäS¬)ôS2uc+LUcMM1_ðÆoðÖ[oñÃü.]äî3w¸{ïWŸ¾Æ`«ÎÒ¥˜ÞÙ"Öã9K›•'¦6¹‘ž4–xšûûß>–÷$ÏoYäxr—Ö:Õ“ˆ‚Ol_×’W9ÆT¡y¯-ÔˆqÁ¹™¤²qVU¦F%©Äób`Ú-òóù¼aZF#Æã1“É„ñxÌÉÉ ÓÅéÀ K"¶=Ò¤G°²{]:°uÕü;øÔ–ºiš-ëSûû]]EÎb^0ÏŒÇSòªd2™xç²!µoÖ {ÖèØl£Âf­Ë¯}ë È„kSFÔ„@k_Ê”¨eמwåXrè›5Ñ/ç<Ì>Þ»ãã²÷Úe¿æEÙ=Rµ÷ºÎùµ5Žtš•Â*\qyQÄtLª•DŒìë&¶­µ Mñ¢“ V(ºÛE6y³K–-§m IDATĪø¡¾\­îs³6ÆZÛæøÖ×>M ¨(v­¶p®`Îr&%4wšÕó0b½á¥kÞ±Ö®œÅZùjríqŽØî?ñõ‰û¦˜¨[ô­:ºN‰fÖ“neùóa›ã*Þaé¾úŸþ÷?pK˜V,=á˜Ñl¡ìz£ ´üçäï`KKJï܉Í[ëš×e—¬pötmc÷fÕ¥ø¯{ÜñÝĵŠbÛ©¨¥Kà×Õèb×n¹îñ7?K¬TKZñ˜‰LÇÅæ|üÉ Aª5ZF˜±3ÃCšöRùúg§°N0Ï f‹œÂXLùâá1&+Fó’Y ¥˜­7i=!Æo‡5R{ÿE|Mh!‚ÔÑúkm.F¦‘h¨SÏužyjcáðùYëškÉß´@8ÜHÞe •Àr×:ÒâM@ Œ©– ±ÖÚæû:çü”ÁT]5 Ò9zR“hh÷ØûÚ7ãiï¢qNxæ‰SÁp˜bLE¢4BZ„2ô3pð@É40e|H8Èz Y–‘e Iª‘2I´­`ˆ&ävÖG$]3wñ"–õ³8ýI¤ÂÏp&ÇQál… ‘’fãoÂͯ˜C‚L¼«.¶Ï¢‚¶q2ÕÒD£’Î&¤Ù€^¶µÐë P"8bTl9k§`ªYÜCiA¸Yc0¶ ¨ŠÆ-娰uE]ç8[á(p¶¢6s¿yqžKæ×®ËÕ(€]²ÕFe—Õ®g’$zAÎy`7J˜wø=åÿ\tbY\X“ZÁJë–ج-²ztKNÕöFei[¦úâDÔÚšDª¥çõu}¤ê#ô§89Ä©o î¢æÐï$uX ¾·¶©{,*K†¤Ï`ûןy–§¯ßDõ¶xðà!?ýéÏxã7øäÓOyøð!£ã´0HgÈhUQÍOpõ‚‹ÎqýÚÓ<ÿüóôC¶w.ÐîöÏ‘vɆÛd½-„ÔØÐL)”?ô•¶h"ê«“_A¸Öœ‡›Ãúç’$ i’5¼§4MAq²?‹SR•ôÉe¸Whæ“)LJ'h »Û;l÷ûüêµ_ðæk¿ä­_¿Îèà[—ùœ çvØÝJØ=7äîýyå_|›«·ï"z}J—P©„÷?ûåküöƒ±Â²µ5`0̸~ý*¦Zðî;oñË_¼Êb:ck°ÍV€D¡‘\}ú/¼ðwžyÖG%¨4ñÎÉÐΗ&ŠL·Pó(`ŵ6I’¥¥S÷6Sµ‚žð iãñ…`oo÷Þ}—ŸþÓù¯?þG°3èqýÚS¼ôÂóܺ{‡g_|ždÐ#í QºGÒ÷_§ó'£ =ò÷_SáœE ãK Â{kê¶5F»Ž+щ?vŠF”^Ù¸•{‘Ár’wïKIÚc±X •"‘‚ª¨QÂQ—†£ƒGÔuÍ[o¾É÷¾÷=>ùä#^yåëü›óßsóæmPÞ,´h{Î9/úïRÕZ£´…ÖÎR†:ø““'ãNf#Ƴ1£ÑÈ3_fSfÓ³Ù¬9Tz`¿Ÿ”×nL“D¡RE–%lmm±³µÅ`0`Øpng—íímv¶¶èõ2†ý!ý~^’!„gÑTUÅ<¯A*æs_O?NCkŸšyzÊlæ‹EóxŠ¢ð.Sç³&ÑHI"P’r‘ƒ’(”wü‹ UJHá÷q’]–²3{@!$¶6Í{]ÖV eáýz=²,åÚµkܺ}ƒÁ`Àh<ædtă‡Ôn0\¾|™^xgïÜáÊåËì ·ØÚÚj®½4MÑaÝMÓ,8NŠb^0 xï½÷yÿý÷ùÙOÉÇL‘ÏÁŠÅ”4QôREUædIŠŽy¾@ë!%¥ñlÊ<ÏÛ=¶³˜Ð™\9¨œÂÉŒ$Ûåú­g9é ;»{¾44£ÎÆÇÌ'GT…çÔe©¦.+o£^„.˼Y/+kd=¬ðbùýîóGÿÝòÔÕ+äy *’$ÁÓ~V#ø«ûáÇ9©Ö0›ý¹X/Vµ‡®å³É©ØÎ†v­öçØh‘u8•³Ü«)ŽuâÐYä'ùóg•C­m“¯Í² ¿òOÀÇa~|‹¢ð¿òÎXÏ¡*‹æ³>išbB[²ë[ŒÛI­(‚‘!žûxÂ|>çððÃÃCN½HoÂÚãíi¢Ð©&K2Th ÅÂÙO4¼WV N(/b‡]rYx·å|ž3]x¦V]×”EÝèôå%‘ãÒuV­ž[Ä®}ýuö·®¼(íï§J‹à(Sá~]/ ”Z!úïO¦Å÷¡û›.kÈtÏíáš­g²®ëN‚ÆÍ–%~?ÔOüyD¸Öy÷QœrAÐ’Š¦±XÊPL¥|9•ZPt(E±®Ã¿7ŲTKú½„T[z©`»ÏÞNŸsÛ=v}†ý>iX‡ºqÎÚÚS±½®~¡Äêû·bN±ËN©MEu«çÿÕTY÷gt÷Vø{ôºrºQys¶ßÝË­Ó)¬«O=Þ'á‡7¯“RÍ‘eÞ™[EƒjÖ?'×;°8‹ôA.=žÕ×6þ|ÝmÙ‹1”Uõ¸|«û­N³N[jà ,ìÆÕW©z]}óÖ½›lÊë¹UÝêÏ:«…qõC±î¦'„ÀØjù¹8ù»ðr "iÚßœw¾‘EjP%ûTµcQòÊQÕŽ²rŒ& N&S>ùü'Ó9Gã³YEa$•Ôh¯õH„@:œƒ_ž§¤\}VáÒAPk>ìq’íãÒy7Ð:±Yƒ åˆÓY‰Ã„:Ö¶þU LÞ ¯ãä îÆ‹o!:4B[ ä¬E„¶=`òR…Ÿ"sRĆ@‡’uȼ3aIÂâì£nη„ ©œ·ÚzN$ʘҒÍI•Þ”èÄÇÓJÔ':-€’L+ïæÒ/-‰–Í( ÄþÅ ¢¦Œn3âlAéÆá”„­ pGàÁùç:I¥ôßߨ¸Að×H@# d@i9Lµ·VëD’&cEó¼c«Î`­_Àd³¹¦q$ cQœˆ‚Xlpºù_Uháól2§´¿nÚY€¿Q"0 ƒou c²å<Æ›w+†ÇqX7 ¸p9.:ÈBi Ý,F8¼;E*r¸Â`!ZôÜpŸUu¶Zñ*ò´Ž0ÍVHîFq­8§±"E©Jg8™!DÏ·‡:Ešöš‰jŒÀc:!É2µ£pþ•L·¶¹xáiö/^aûÜEçöùàýxûÝä7Þà‹/>çdtÄÁÁC³ YªuI&-®,¨ëvz<{÷Yž½}ƒóûçüû/,ÕüˆÅü'¢²¡³zCvÏ?…JS²,CËÔ·ZÿºÛØ”(‰Ö(iÇnm um[ЯónÅÚáíЊS¥©¯³w©}ôG*ü¤7í¡•AIÍb±àÑ£G(ׯ^C"øðý÷øÓú¿ýͯyðÅçÌ&c†=Ͱßg{xާžºÀ½û·yá•—¸{ÿ’Þ6¥ÓÔ:õñ˼d^œŒ9:þ’íímn\»ÃþÁpóæuLó›wîpõ©}>þð#Žr|xÄèxL]Ôäó9{;Û\<¿Ïŧ.“êÌ»"£—fôz=„3KØî¿Ç=@láŒ8…+Ë©{~fãѶ¨¸|é“£þöÏÿœïý—¿btrDUܺv…{÷ïrÿþ³<ûì³\¾z…im±*¥¨ÀTnQQ[˜ç9³é‚²,áV{¡0®Y‹¤Ô³»+\5Ÿ±GÙ*§du2èVîåYš6Ž¢4M=T¸sONè÷ûh)©Ë [—äyÁôdÄd4æÏþìÏxýõ× üÏÿþ?ðÊ׿Fkˆõ™qÒA¿iƬCõ»µ6LY–5›P‹c«?€].îí³(sæùˆEáÝ ‹Å‚<Ï™æL]×ÔÖ4왺³QJ…v0ÿÚõ³ý~Ÿ~–ÑK3ƒ[ý ê„4 "U‡eañbŠÔL¹p~Ï‚´ÂÕ†EY0ŸL™å Ê…oï«ò‚¼*)þ€8Î)˲yì‘—S¾ÍKh?ù¯ÃN]j ÍTµ©@Hï T M‹–3Mì(MSϲñµ…¡55ÞK¤/Mqñ Qc­öÊÙŒÅbÆÉxÄ£G8ØÚróæMžyö.·oÜäÂ… ì ·öúôûýæë2¯âáD+ ^{í5þøÿ#‡ÇÌf lm {ØÚ‘e}œ­™Œç †68[ýýÔ7¿å“³ñ#0%‰2d©öH uP á8·½ÃÉÉ ý­T&'>zÿ#~þÚÏ9w~áÎvsšpÈß8xÜpx\œïñÑÄõq¹uœ—üüqqÆ'‰;®ãâ>®m;÷,®×ºá&$I×™ºÜÖ~ѽ®^–%UQRW¥w;Fkg'úëÏ ª)z1Î;Â[ÕTeIi,‹Ò7k.¦³Æ]ur|ì›6ÇLéñ½,#MS†½Œ4í‘e U]"tpð‡="¢4δ`aàP©fðg… ¬Zn>Ï™‡uhQ”EIm-ΘÀJÕ>¢íî¦ïºs±MN‹"@îµ–aŸæ¯Ï$m‡,^8¶m£àRôËà¬gè™{ö`xÿ«®kŒ]c\`›æ« 0yçñ¾m\°ë5,1@•p¡yÚx´ðÄn¡mì¶È·ŸVkiĨ¦¿VpÊýØ`1-ìS|#mŒaº†ïÜÕ6¹Œ6}æZ'˜]Bªƒg:šÖ­;K¸ŽÈßýü‰Î5°výkìî±®ÖuFU–x÷¿W›Ïâwך(du5¥Upü)CΆ÷¢)UÛðÝê‹vÈu?¬ ^÷$ºoëêô‹çšŒë¦êܳ@‹Îù6¹MÓšU{ߺœë&gÖj„ð,kô¦›Ê:1îÔÄ­.nâLPdwó¬…W6mµ³8a±*c©jƒ‚Ê*ò:e²¨8<ÉùòÁ_<:d4ž3+jæeI‘œóJ¿’$p…üÂÐV=#tÞ‰ÐçLh¯ë”:8(¬ƒø!ÒÍ!Üy•#ÆB|[ÍÂ!Z F+_ctPŠ6y.C«ž­ QÁÙâ<µ¦‰ý‰ÎaßEgoÁsÎùÖ†Á×JàL ¶‰â +‡T-[q@ /ŠC‰VH¡¢$Q`­$Õ‚,¸© ™Ž”C)‡Æ7 *™ #¨]šð\‡HXói K$FÈöæ\ÙØÄV»ÀV’Ò‹‹˜ Ù¥Åçøñ‘F M†ÆaMMeƆHŸ8åPÒ¡uˆHW¼Q+¥Ñ©Fi‡rŠ$v~j÷@vésa”­Ó±‡ˆª±ötó§sašìBÜN4õÎ KJ*¤m¡‰’ø¿œHuZL"0?:£ ~‚!¶ZéÀÔX£“÷öïÈ îù&ã@U~¢Aé*ÖËð=}[C¨PŒÑÂèT4Ø [Z¬Ú¬3àT'!=_N§þ—H°¤X›‘Ø¿ ùtÞLDšFPPÇ|RRé>ôûœß»Ä»÷Ù¿~ |ðÛyãïÿ‰×^{ƒGøì³O™MOÐÒ ¨ÙÖIäÈ*gg{À›ÏqÿÎm.íï‚«) éîÆ„7WäÓ¡ûLgPÙ€­­Ã-’t2 `óŒÒØ8(mØ:„š&–Åbá?¯„Vцï׉ÙtL’¦¾í¯¨—*,ªÚ E•¢, ƒ^Ê­7ØlñîoÞæÇ?øG>þè>ýäc&LJh ;ÃŒíí-.ìïqóæM^ùÆ+Ü~å%z;;¨d‹yi°V£tå,Z[½„˶)æQJ1H$ç·¤øØæ×^|‰r:¦¯« Ò ¬`ÿ"íAÛHRÏ,DIÒÄÇ$u§\ ™x)…hÚg\3Aïõ`Û z/ëS"1eÁÞp§s~öƒàßÿ>üö7Ì&Svww¹}ï>/}ãk<÷ÒË<}å 2KÈ È,kš¤æÅÂЭ¡ªÂ4?¬C!¨çÊN \âã‰F%Þ¡Úm;nö2Æ/Ô){º*¬ìsVöU^x0~’6œ”ªö±8!çÏŸ§,sê"g>QLç,&S~õó_ð×ý׌ÇcþÅ·¾ÉïýËïpíúud¢©±éH{)h…©*êÚ„]½@§)YâÅ2ž½#8I°?d×°»ÔÆ ÌUÊ1TÆOVç¡6Þt&­>Ê#PB‘Ê\¼I’ÈïOSdp´5<‹ˆ—-ßB”9Â:toÀö`H/I‘‰Æ”ó"g¾5õ8ü㯋’¢®¨‹’¼*1ø‰í|>o"Hyž3›ÍÈóœÑtÆt:e<ûHQe0¶¦*k*c°X*g|éD(”ÐZ“ô‰ÐXç<º ”†Ô´Mh•­PNc\ëqjcÇTuÁƒËå‹—xæ™ÛÜ»w+מæÂþ¾Y*/øu…áhsUU窣.Kæ…áïþöû¼ñ«×·©+Ëp8ôL-Ä¥ùŒ­­ãyÄcK’x§©C¢tê9ÈIÆd^7±l®g‹$ÕƒÁýÞ.çvγ»µG/é‘›Ú;âFG”‹)½L„¿Ã™kJŽ4Q$*¥, ¶¶gI´¤Ì FÇ'|óëß`:Ÿð»ßý®açùC˜ÿ|%‰^ïø9L¼îœ°º‡?õg­{ Êžéš’iô{ÜxÓùdSgS²âq8“MçŒMågE—1ñ³l–ÎY’ÒKÒ û†u)2Ñ8aÁš6²×¸Ò[Šdt^×5U^±¨rf ¿ÞLçsf³eˆ<á³Û-ì…ÅBÆjå}±KîßT,šÖóe£ÇRÄ’¦nqQtæ»P(eCŠÅ'Ylxuå[ž­i¯é¦íq… i¬ k…mš©e'Eo]ÛþÚ:Û×v³í÷LuÒÁЏ%F‹\ð.RG:8bý^Þz}4ü=ƯÙIW~tä€)%ÚÜc÷ú–§?Â-ÍãÏ4ßÄk§{þ?ŒÌ[©OË»®¥]]Cºñ¾SŸïÎ÷[«+ĵ¹q-í&ÐVªniTWìÛ„B:kÝé&•º.÷.ßkõ+œ.Xk~œ[UŸ%Ètío«üIÜMë[ižiÕS6¾p_%K~– ù¸ ùã ‰«““uoÈYYò՛ǪKmU ŒÛòÖ²D7.|U«ÆHeMaGã'<8˜ð壦L%ÆJ¬”X«@*ïb"@¯ëà`ñ€Z‹<ÒË çj¬3ë[íš mëY}ó•a‰F‘ï.Œ±`"ª®.,PqjÒÂé8…â#­ŠbàÐZ‘(/˜¸’ÝN¬5a2cÀÖ¡¢V4Ž2_Iï]UVx(¹à ¤SMݶš2\˜nÔ–_DäŠx'˜Þâ$,õæÃ^"Hÿ)QAÀ’6DË *Ñ^(” ¤ÿê™Y Ã†çfMÄÇy€·[jÍèTÈŠHèŒ6)ª‰µÅØjä¦ÅIOiÀÅM«õw@é@e„:rNücMå›Hj¶7/gÒÇ lâV…ônÇÄêÇÇ ÛÅR+…#*ï¬ ØÜÖÁ"|ocíÒôcù3K'ÞV 75µ¸Àv0Ç'¢16¸à’¦ù¯=8·[*Þ/%U[÷+ýäcþä?þ1¿~ýWŒŽ9:xDª;[ƒ&þûì³ÏòïüÏ<ó Û—.RöúÌÀåd(­}´ÉZz©âöõ+( ö¶û>f°³ƒS’²ª±VP–mÚO–¤Ôu‰v#RïŠuE¾ Ïç —žÚåÜÞ%Îí=Í… WØÚÚ .åÂZ„%K%7®=åcv/â#¬Ñͬ”"Ë2f³‰ÎÈz‚­!ßýîwùíûïRUEó#/'>÷.?gõ ð$`öUhÓ0úq.ñßdõUšýÖÁêÏrobÒœuy’×a5ŠØ¾O, V1úñk·e¯y?´wŠÐRQ!© ¶öÑúE`XstrÌÑч‡‡ŒF#æ‹‚*¸D‚,DyûÛ;~è)%‰Òd:ñ¸Õ XÄ›¤Ÿ.§\¬<Åp–Adˆâ~]×!ÎìòÙ¢ ÏKŠª¤È˨L4£ñfè_çÀ—Öá:œç¨ò4EzolíóP½Ä¸Òs ÚR‘d¥±P`Œm„Cc U]û(¥q´_ëjCe ¶å Ñ1[Þ[%*¸Î…ô<ÀÎ~wÝ5S±%ÐGó=ƒ6¶úE±¡i·|Õ8,mÍAØ‘ÞT B¼ 'Ã)1ˆ~ÍÕŸ#[gë²M·]“‚؈êÂá7EÒVáå«NÒu{ˆØ¦¹®}pU'YǦŠ¿+æÄaÕ¦d˜?û»&z–±fÓßoù¹¯:D7‰h]jõïw‘[ÿ6¯ÍO¦-éîqáJí^hë,®Ý)çYÀô.pk3åÞ~Ì&ÅO4~FÑ£Ã!’'kÏØtó9+Ã~– ¶‰—õ¸)˺çßÝøx0²;£ÓñLFH*•“£)*8™MrN¦%Ÿ>8äãOp2ZW`‚…ÓùÀ Im<¨<ò‚#b#_pytH.Ti›ànp.´oЩf @i„À‹àDiQ¡ÌAжRDaÅŸÍ]ãN‰b€”­| QI#Ây‘H éááÎÕ"ïœÅX®.© V)–¶™HXëÙ ‚šDÅŸ%š¨¢ñAÙŒëP÷+š–CïxÒp•ÿÿ²ö72U‘HA– ziŒ·XR-PÊ¡”!I$u]"eJªRŽ$Qé™(Z{F–¢­·| d§†V´rql“¾’×Jï.Á¹åÙO`}µ6X­õàó:X•ýäÇ?_¥|œQKH•$Ñ‚$‘!'p¶á£|Æ–xÝ­)CC`l¤ê6¼¹%k1>ÙBÃ:㳕*ÄV ÂzȺ±Î³zlû½F@ãÜ"Ü|—oæíϦ?[Rtå¹V@’Ñ3,a…wO¹p}È X騴(#”æùùÖEåT„[™&GFŸlãç"V Su˜Wb¹ø"0»Lpô çE?ïA“Í{ŽPäUˆêô‡$ýIÂî…Ë\ºz“§nße4™òÎ{óñGñúë¯ñîÛ¿a>›1¨óœ­^‚–†j>¥,l <ûìó<{÷—/ì2è' ÒléK¸® ¤óë‘5žÀ¬•ÄùúN„0(e1e…­¦”ó1¥ÌªÏ4’¤^ÔRIJ’õI{:U !È´öÁ#§š–9ëB¹%0%Yš’&ŽÙlÁ|¶`0pñò>Î_æèà?ûOÿ7¿|õg|öÉÇŒŽ¨Šœ~ªII–%ܺ}“—¾ö ÷^xž½ýó(­©dÊhbÙ„Èž«<ç‰ WúƒÃù­ÔõÛ\Üݧ¬ G‡˜ê-ùœ|6Å•‚‹ç/‘\¾Š’Ià)%$IÊ`0 ßzÑIHœP¾µ6ð½b#a35 aýV ákÈCl¸Èsª¢à\ÖgòàKþáïÿŽ¿ûëï1=9$S‚ë·®óâs÷yñÅyúÆ .?}Ò”ye¨ÀJŸŸžŽ£ó&÷íh¡´ä+¥BFøà(?qOtŸL§SÖVi¯c]I©N¹ÄWË6Rc\vm‘^ IDAT²®k»Ž Y  âJ1Rä9LJüüç?çïÿþï)Š‚ï|÷»|û÷k×®RÔ¥3lÛ!/ýAIg)¨Šôßð×Ë|Õ»tݽŒnÜe-?Ò¯;Òj ±–XþиÀÙ¬CãP—?á¬h ÊãAE›UýÄ>ÁŸ\|ë˜óÂäí¼#¬—ôRPåy™ƒ,Éè%=PxÁJøjú$IüýLÊ|D· |n˜uáßó|Èááaó¹,ËçƒÁ€žÖô[ôz=½´YëŸÿD…¦=ãÓ­`܉)¹àlJd³ÇiaÞ×7Ÿ³XÍz²(r¦óœ²î AhÏÑk¿w×ÕïE"…ÀI¿ÇZÂ?„dH|}ü:ášÒ-¢€å¿Æ×2 …µÆ·Vƪ2›§2gL( ò‰glâít£5¨Æƒ&º é 價ÝÛÊ é¥J‘hß訥héÖ™&ÖØu9S64g7oðe^ {[×ýs¬e#É`}’Ο ¥ðÕ’°"d“îX÷Ù;+Ò»ôû°{ßuÛ¤kÄû\S2²òç¤kb‹bEÞc>=­<îSƒ•pÆ $Ÿ†…ºÊ9í"$Ö­™›Ö„xŸƒÏfwÖyÇ™ÒÇ9Lõ겆%û*ôt“­uݹNHZ}3Wop›â|›j)×)£Ý7a5¸éfð¸›ÀºzÊM,­³þÌêÏŠX«tnEv7à~jîyT‚ÊfeÍx>åáñ”Oóà`ÄáÉŒYn˜5¦‰áÁÖÿioú$Çq¦yþüˆˆÌ¬ ‚A‘E‰Ô´ZÓÝ3;=³¶f»¶¶‡Ù·ý?×l×fúдº{Ô+MSI‘ÅûAâª+Ï?öÃëU€feF£DUyDx¸?ïóü*k{çGv7)‰]HÝJÔqµáP‰¾lê}® V}Ü,ĈæÙhußR‘G¥·-¦¥­Ð*ˆ‰Íåï5AÎ+­ÑÁ D]‘¸I¢Ê+í…Ý•"ƒ*Ùout’­®VWR£›â‹!ˆ¥\¥¶E @Ð'¦…_S½sÛ·ÖP¥'2ö¶U%ÙÿÚ¦?[Ëk´ 6Fœ¨@¥"FË®•¢® ©DÔRZcMjCZœúMàöÉ^´Ô:šL&ò2&CV•´¯p]oSŽÑã¢uÉz¬$™ç“ˆ¥uï(kj‹±Ô&.MÀ:ˆ6Eâ"1:L›TºŠº%þÛ Xñ çNi+ßsC4 ”.‡´˜[YÊô&nõqpäm#͆2¡BìcÐýÏÊ×…Jn‡"*¹÷R£L±‰çX¤*›Ž"Ô&‡à7ÖÔ¾ž8–¶ÂžÐo\¶Å{«8QµN}i켸;P5PvQuÅhï W®ßäêõÛŒw/uŇøœ?üwÞý _ù|ËñÑ!*vèè¹¼_áWK–ÓS*«yíÕWùþ÷^ãæŒF5;“Šùâ„ÅrɸÖx³é ¸–ñȲjW©‹é½z-㊦VD-Â¨Šž@‡c[žÐéŠÓ¨ÚblM=j¨Ç#š±ˆ¦jЦF›Üú˜ÉdÄåƒKܾý?þñ¸ó—xáÖ‹`4+4]ç@[ÐR~r<-œmFÉ{б“uÆ J ¬ÁÚ kklÕ€WIzv‹æçâºÃʬ06x›Û‚mŒš¶m±Æ0ñÞ÷‚ÊtÎñƒ|õÙçüôþžßÿá¼ôÒKüÛÿþßñê÷^coumÀ|ŒØZ6u‹éŒårÅd¼+ÐhDØbÞ{‰À¦Ími$N-ºyÍQIÜ ~¦$„Q©¢ÂÚ TBŒK·~|÷>×r‡ÂJ#FŒÑ,—rìºUzDv÷/%wª8+‹1zF£ “Ɉ¦‹8™ÜÉ£I¢äòìíœ4î’دÕà¬%0v÷г;×7ž¹Ž•tÞ•ø¡sŽårÎl6c>Ÿ3_- [k6;åôtÆ|>e¹lY.ç¬æ ¼sâþh„ 7ïJ‹çÕë¼xû6W¯^噃Ë4͈¦ª™Œ'ez®7ĉÍ=^†ðZk%~÷ø£Ñâàà@ÔF7^xž÷÷{öOžáö˯ðõã#ÏæTUƒ2ÌhD“˜‰Ñw(*|ZBÀ´m*¢RÌ+î?8dïòóŒKö´Å‡€[Í8==f±š²êVpJÌX>ó®ë@+*SÓŒGcäsvÓµÂT†ãÙ´8­6Y."†Ås[ÌÏãÑ>I(Zs;ÄQ +0_-9>>æè䘣£#)@0X•ÁÁácdoo¯ì§K¬p•|aõæ†Ìò„(-¢+ç™Ï–©Lb±¶VÄŒ1I¥:™/»õ»H|7bX3`ôìR•Î5ºT£Q] CG­1CÄŽ–!]3™s¶†Õ0²éâÆÐÎ@ÆIg™³Ñ]ÖÑœ92l?o“†ÓJ˾>£@ÔúY;· ³eð·§œ—ýª`Nè·Ù=ÂZÙž»Éúh>¯âñ¼Ÿ» €xžr÷4Õ¾›,¬Í?'›I}»m³ûÇDók6ƒÏ©WˆÏ¾æ^P´åÏú'â´sœœ.xt<ãÁãß><æ›G§/i k”ªÒûéÐê´ÀÊaA6êV ¹ñ>â•IѺ¾ÊÒ$¥_^¯I¢•lˆ}–Ÿ² ¦]Q̳H¥“Р¢ÄÊ_¡¼@fƉ“û‡€ÖTV,kbq‹AD<1E±’3E‰ –k× ([ G(ùw”–‡KÞÐg&“0qBz'ÃZ‰uTZS'€pLbƒJ.¢Úh‚4µ¼‡º–ìvSƒ`”OðÉܾáÑÊ£•ÄuêJD‘€4péÔø£ÇZ“b0òWÎdçë¶À)ÎÛç…¥Ýϼ0‡Z/šˆ¢&†ã¼´^)®ˆÖbQ8"^)´±´«ÈÂ{Ú L%Q½ºÆÔcts€­FŒFš‘€Ùµ­SãWÅÑÑ´EaÙ̵߽k×ñ!ðÖ[¿äŸ~ö_øò£?p|ôˆn1gÔT4•D…o½pƒýèG¼òê«\{†j<¡ i×IÔ¶n페>À`±•ÜSΖ'rÀÈQB­-AIeö*mÌÛÖÑ4;h¯ M)ƒ5ràM&˜ÊG„6Uc­µ"Šfßð9ן]yó¼šI¥ùÁÞ>*Â/ßz‹ú»ŸðÁ¯Þ"´ žÙÝãæíçyõ7xãOÿ„m”­ÒaÞÓ.ûXXð-(Y+Ê}î¤pB¾N­µØª*M}Öo…ŽUim5kÇæ~dÛ%‹9g¸“yÂgELTJ Øw:‡ÁlÆ·wïñ›ú?ÿÇŸá‚çûŸÿW~üÎÞå¢Qœ.çTMÍd²‹÷žEÛ&–šDŸ½zMÖìIJJ\F›t°«KsWê””²RDa0Xׂ€] xß–5!DW¸7EC‚%Z“: 2ÀXƒÇѵžy;cé:)Ã5"PØ ç;VmG×9TU3j*i—µZ¦ ‘tá‘UD£ðJãQŒë1¾\Š@º2ݶiB샓ƒŽ¶4“†K»—ÐH Nt^¸Z%æäû(âjY«m+íb«Õ‚UçY¶ Úèp¡#8;Çõˆ¦iØß½ÄÁÁ&£Æã1;£ VW²÷À ¢´NªäüîÌò-eæf)Ч;¾ùæ‚鶴eUôïiòOŠnû݋ÒEl¶ÂÕ§Æ6§[á¾% ûb!«Å¼°­†g¡¼&eñuç X­¤Å|º\ñøð˜oî˃Jkàññ1Ëå’q#¬ÅÝÝ}‡›£ZÊ)FµMØ’õÂ-ÙVå^†´W1i¯šœ÷K¥%~VÚ;áãµ txRZÛ¶¥kE óiÿT)SiF]žÎ9lžó…pRò$bQ”ývrbö-ű|~µµ{¤HBjœ•³U=‘®s¬Ú–ª œ'L‰i®™*Òó@ jž a¹ÖÆ0ûÌõ?#t:;m°V•fA,'U˜È¹àH©>¶8, 1lˆÆåüÜåIÍç£MÑ'‹¦Ã=ÅÚýÎF·­aÛZô6KrÎüîtØÛ¶ñ²†ÿl[ æ0¶¹&\5μÿ‹Öáü3ó{αäexKP'¶9äcŒØàI±*²ª(Ãë- ëñá /6õ'd¸Ïs+É"éKNVx;r@ eƒ“Õj¥Bú{|bdï<µp›ZºÏª‰ë9ßíÊãúEhDµ Ѝ|RæÏŠ]Ñ»´Þ ¸` #7µ‘ɵWÎ'è­‹|ùxƃ£)÷¾yÈ×÷rx´dÙATeGeA’åE76µðÅ àî˜"FJëãŒ8é\j;K ïõ[f·Q+ðŠÀ œ*è“I³šÒ“V@ù¹ÖÊÁ[Çž”éJ §&jâ_Q·Om‡ISs[jõ $ȶ,$Æfp`LNBk!ôQ8R£øô Ì"–N19±Ë÷Xk#¶b%¯E%¡Î¦…•US¤Bnئ’¿ºã£5 œX:?# ‰Šµ=BõWéšàî>”ò‚J´±vŸ¤>·Èå5;$^P§bPªˆ›™¡Gj«’ïÂâ°¨`ñXœj QÕ;˜zÌï¼ÊµÏ£nܧøü÷Ÿò‹_¾ÍÛ¿ý=÷¿½ÇὯp‹S-*¬0A.úÐΩwÆÜxéßÿþ÷yå;/3ÅB¯¡ ÌçKt¥YÍç¸n!±\k ¾Ãµ-*úÒxƒm#Ñ&Rƒ¡ÅëhO48Dè¡_&ˆ•÷}K·„§Ð¦ÁT¦j°ÕÓŒ±vmöö¯pppÀÁ•«„ï¿û[þùŸÿ™÷ߟ£‡ß²<=¤²šñÈb•âÙë×ø³?û1?úѹtå2ÍhD´š6ÔhÄØV,§ ã[Fµ´4¹èéZWî‹ÕjÅÉɉذ‰(+ÎUÛ2ÞÝc6_Ê;h‚(ƒp®š[WhkqùÚÕ [W¨˜2)>^URÓ¬L6ÁöS×8¨K÷]Ǥj°£†Ï?üŸþÝOøÍ[¿äèá}®ìòÌÍgyùµ×øá¿ü—¼øÊ«T»{tJ±Bã£8©\çKízf>)QÁƒ–Éuv}ŠëU”ño„SÔc5Ò!Ai¬®ÐÖ¬m¢”ѽȼöØ8óPÀô‘½M§gÛ¶òz”f¶\pz|Âb6çwï½ÇOÿæ'ÜýâKÞ|óMþòßý[î¼ôTUYtS¡}E3iŠ»!Çrö÷ÙßÝÎYÕˆHí<ÁˆãoÈòòyâζöRû—n´¢ga!ƒmd½Wè\'¾‹”› ,©q8Ñ$Ñ.ü•¶m™-…VšF¢>³Ù¢8vŒ1ìîLØÙÙ!ÆÈrµ’ƒI-ía"œúrPÚ,¾D;Læ!*„éb²[0 ÷ß ÷°2Vž÷ÖML‡]'Ù9Dô„q‰eç½gé;ÚØWkèn0¦B#œš¦]HQýJŠsÈƆ>=_â°-­ó«ÕŠªª˜Í¦L&NOOqÎ1ÙÝe±X0MXu-þçÿ’ˆæwßçþ·÷¨› ÑÔÜyñEVË–ÃÃCV‹9$°6!ЭìíÙÝ{†çŸ¿^‡“é‚ÙÜ0TB;c1WLg‡œ1;=F«ŽnÕÒº%ÁE‰9ùY,Ô£®m麎NOO±Ö2™LøôÓOÙ›ìñøÑ1ι©Ì×­ˆ%íV÷ÑfqÓÓÆö¶ž1âÓ»¨¶:²ž"Âx‘è5t›œ7 ßŒí‡gy>̶VÇ‹œ?ë’ËjÁr¹b¹þ“kWÅůµÆVU¾VÂÀP¢âãc¤M­ÕjÅãÇyøøˆ/¿úš¯¾¾Ë½{÷X,r@WšñxÌÕËW0ư7Ùa2™`“èP—ˆ Ç»6ÄÄâ:ŠÑS)ŸÎ`•By‰Måë,…GÚøKi3<™Í™Ïçt­gÙ¦÷Þ¦¨•¶([aáLróư~…h³[;’„0ZQ³ûÕÚT„aLâ‡f1¥g3É™¶ßzËE F]("üªmK»Ÿ C±"$–pÌyRyBAK礅ë[Ö3–ã>‘!‡„˜P „‘“ : ¥8üå—øà·Íi¹ùyïŸâí:h¢Ž©d¨o÷Qš•–µÙȱ›Î–„(€”äÉä̆4©É¿©{kwH1ÙÒl4Ü$ëžmP¦P¹K yÙ‚1•ˆ1A€¹& œ/š=Êšr¿:**eQZêèdläsO÷èðõøà]âDÐ!?¬ÓÀÍT *"¬Ž ƒ“zzUÑ©1­7Øf‚®öÙ¹ô/¼ø]&»Ï0yî&a¾âÓw>ç׿y‡wÞû-_ݽËáá!‹Å!qyDEK]¬¿jQ*rçÅ[ܹu›7ß|3¹«ÔÔÒ­1x™îu‚æת#(/`j­jV«…XóAEE=ïFZN½7 &D…kæ…õÓv+VÝc¡®-£ºFE^6M…+v‡÷S5¾«Y醱ºÊÞÁ5ö®ñêwßäd:ç¿ûo½õŸüáî{—Åé)&:lXÑèšçž»É?|“7ô§Ü¼}›f²ƒCÑ¡ Z$†¨²&„x¢µÜ)^–¦ã¢µË÷êVÒŽäBdzìQ¶Â¯ZlŒ¬ÀÙñâ\S>U”õSEvÆ#l*é@YB±œ§Ò©¥“âò=¬ÚŽÅbRŠzÄüô„ú‡¿çç?ý;Ý»‡%rçÆun½ò ¯½ù&?øá›\¾B4–˜îDƒõ¬”[¸'i¿P ¿Ï¦æµ¶ë$ú–˜B¶–hI“˜Pù9jLŽg˜ò ‹*ÐåÁ’Q(«ƒ¹ßtÞœM±Ha)NVžñd‚V ·jE•b‡!‚êPÀá£Ç,ç ŽîÝç¯ÿãâ_þšÝý=þ÷ÿðïyý‡oðìõë²a3Šñ¤AÙŠ:Fæó®s˜4“¹2ÆR×2y×Ö”÷TöGŠ´£e}*-¬Ã»J<=SÊs®s¿œw(Œ´)*…BÄ$¡A°Y©CÙ5ˆðááaÙïUư³³ƒmjÚ¶ezrÊj¾ iövËwº6U\‹°oŒ–8¿ëd蕞—*ïó6Ø"p±ô‡òv*í ¥|B%º xÄË÷˜ªyýU¦–uE‘¢òöÉΩ|3[6Ù«.‡´'ˆi¦TDRtÏ"SD¢÷T)"2å3[ÌÑu…S‘6zêT¦¡µåGo¾Á»¿z›ßÿæW(e8>ñÙ{ïrrzÊÉÉ M3BEáL1zŽŽ1=>ÂØÑstø€v>gµ¸å²m‹8BÀ£‘käøð˜º®Y„ÑG}óˆgž½FèÖÖEÀô^Àókü¼¬ƒ˜aæÛF5„rŸ=(åâ=àªöަPÕ›iŠu7Ãùíàn3‚58ä÷@yæž'Pm;«›ÂÕðÏØtPóéšÌÛˆìê>Ól–Ô ƒÂ‘[òÄQ’²!ºä†Ë Ÿ³SqèeC€èÞ¾¤"â:QZZ]•‘r <‹•ü¬££#qïÞ=>úðÞ¿ÏôäXÎ+Z³;–&Òñ„ñxÌ8ñŸrK]>+Zù| Uµ&|†Nš¿s3xÝŒä°ï[|ˆ‚¤åÊÑ®:–c1]ptrÂt:e±X¤u-¹mü6áSØŠÆTx ó=cTŒíjðÙ›ÁµÄÕ­ìѳ3XMl] ZoUiùíAòÉmÖçJØ|wǽ ú®.âÔf "*ªâÂjX¹ù}(øžM7þ™ì+#OÝTVçvspçÈ¥ˆqpŸ …Uá”m Y= FVoï"Ž€R ¨LvUÉk¯S©‰÷2«¥m­¨MJ˜t^ > „ÕšÁ& ‡JÉ3^0¤VÆÄŸNçÝþ¾ g˜P¤B­\x6\'¼[aîùÉB\K€dƒ\_ôÔ;Æò\É®½܆ãSá£:#^ h8ŠqÀ¥áMš|⇠á+i2ÛZåÑIgØpŽ…w9]VõN0•^c`½%:]ßÎɰºë:¬µEü*Mžë„| V KéIï7&ÖšRÄäx¬Ò‹ô ‰o&}”z‰÷$Γ҉@[™Néò™„Äc“ÕÓ»Òä-»8ó>¿íà»ôÃG…çF´õÔŒš}®\{gŸ½ÃÁµ›¨ýkÄ…ã×?›/¾ü’þð;>ÿô²˜Ÿ°\ÍíŒgƬæKºÅ’Ýñ„›w^äÎ;ܾu‡«W¯œR  <ÅIìð~EôND¹à‰±“ï5Ȇ¦2ÇûNÜ<±çæÉ†ÐcmÉÍѦø (&ÕX¦µ‚[áb6Tõ„º® kÓfÙ2šŒ8xö6×o¿Â¥«/õ˜·ýï½ÿ{ÞùÍÛÜ¿÷%n9¥[žB·Ä8Øßữ½ÂÿäO¹ý—Ù¹|™:fË)A[šÑ¤@žcšˆª4ˆ‰éù(Ž©ÅnlfCðX±ŠKQ‰»Fñé.—Kb]¡+^i:ߢŒþU=b¼»Cðž•›‹ˆa-u%N’ˆgÑuSÑ­$va”Ä Ýª¥Q†nÕòÿþìçüê¿þ‚~ÿË锫WöyùÅÛ¼ôÝ×øþ¿þWì]¹Âþþh•‘¶“Ÿ·lÅÕѺ®¸†újmq~"fµ5EÌN’Yãqåæ«¡_š ’³HŸu!TÆŠ?ÆBjî-|ÂûûûœœžC¦«Á×w]»0øñ ¿ýõÛüÍú+îßû†?ûÑŸòÿæ¿ãò‹ÏQïNÀFca(‰Õ¼ÇÃ(ñ•êº.¿Ã{_b'›ðù‹¦¯fco¦7$ûÃS±•És<íOTÔå„SW£ÄWqk®/Š+·ª*vvv¨ªŠåbY‰¹Õ2‹Wù¦µ.@ðM–ê™}Ķ ³Öè ÎQnFTØ4¤L"Öã#Dˆ\õÕ`>ºv„'£Ôf$Ë•³N¯É¢ &X´´§I)”Æhï=óù¼¬SÑDö¬°ëjcY†Èéá!_|ò !DºÖsÿë»Â& ¾°³Ï)âÇYêÑc*Þï÷¸Ö±wé€nîÑŒGÜýò+qÌ>d:=X.眞ÜR\ø¾+q¨÷”¡YL"0AãWžÅl Ž3egx/Q†b›žêa]ýE‘Н¶rl¶Im¶lms.lƒÍVÇÆI” êtw\ˆö|. ¸ÕJI!Ȩ8’3q<}(r ­è| [-™Î<<|Ì·ß>àã?æó/¾âèèç<ã¦aww—ºªØ™ŒÆLFÌ)Ò)ͪ„HV"àåu=§_Œ¡8P»®#ÙóǨ>°\®˜Ï2•hà|¾, úµÏS™5äÃæw$×ý:»-F¹Öóë Xy­®ªª;YÓ›(TrÙ÷נ¥a@Žpæû9øˆs¡€¯‡×Í0&xá57ŒÆmWkîЋ¸pɬ-.&8¯‰E¬”ïù®kn¥dÈØhœ&¶6ïËÂHJR*·ä&¦²J‡1Û‹À¢tÀDy–XöÜô "ÄF*-âÔft/¤DÚ"fm[÷û÷£žÈðÞ†5:¾É†ÚæðZ{ñ,~Ý¥ÏpІû‹óØž½þáÿÎŒ®óÖ4­×™çœãÍ)¨·ú³Ð8loÌk£13hûÌ®1q૳yñam} ǤX¯Û’7GÙ·BƒËHá+pΕ©AP2M2Y©ÀÙ"„Ì%Rº·;n7â|çUYž—]ß¼`Îû3å=ª’‡JŸl–“­\@LåáZEQ°ƒ•/ÈMP–¨GtJ3_zžÌøúÁ±WŽyx4åtÞÒ¹XbP)$œ”\‘½­åe©2ÍÎ^ çµKnüÙàɆS5v†t`׉ƒL’•B§ø’Ž ƒ§±U©á-€a$ŸŽ.‡ÕÒ¨(- |•ƪ°:`ZGªÚ&ktLSœP¢ÒR§Þãœ$ëJ‘ÆLñ=²’ z’Ö’y9Œj%QȦ©h*êâ³Zn’É¥ÅQclÊr§š^­ J‡´¨Rø,>œÌÅÁ½dŒN¶â' ÒAMÄ!b˜NXĤEŇN^o )º˜{ªdÉuš†åÉxnËŒYñGpxç“0¤9íü@ˆ1½ß|ûF6[D²Àš4¹²X¦‹éÚ ^Vïer“\[ÂV#Å[åaÊDCõ,4•[8†sÿ$àêƒ%Hrlf^‚¤es•¯ e×ÙZÄùÍCSreÕÆàbŽNEŒMÑãÅ)aŒD¿r^$®´®(t tªÃE‡‹¾ð BçÄ 5V+–fºTxv¨'WÑ“çY˜K\¹z‡n½Äs7_†ýg`îøê£Ïxï½÷yÿÝ÷ùâ‹Oùúîç´‹*ÝQÅ 3Q,޹té7î<ÇÍçŸçö͸víM=ÂûHëeJî½Ä©-­E8‚j‰z•„[)6:Om¤ñ•x¹VMÄyÀ{ŒöønÉÊEÚ‰X´Õ˜îo´-SõhÀA£| ssy»»Ç•gnðìÛ\áf|À'Ÿ|ÍoÞ~ŸwÞù-_~þ~ƒU-µê¨õŠƒ+#.ìòÆ÷_ãÙgŸåòœ>þœG¿À4cÆ»W¨Æ;,´EU#l5*ñ0›®“¨DŒ–NŒDí‰:µiEôNÖœ'5É }”(©Q(kÁXºé–-1vTMMðç¶±i#²¢sŠVK¬Û°“]f+'ÿ¿6,æs”,g3|}—_üôùà·ïóðÛoØÛÛã•7Þäåï¾Ê+¯—W^;nPÚ ÿ°s¸ ›²eÛ1Oѹá}Ÿ3!teãc”.n+SÙ3M8i·…µ&Иžý1|l ÅkU¢/"ðH\5…›ÎÙ­Gb™&ûèèKÚù’ùÉ)w?ÿ‚øÉOøå/ÉåË—ù?þÏÿÀÿä_°sij+uòÁf>Ÿ³\J|JàÄòÞrÌj8Ô«ëzMà¹( µmÿ±éîØV¼Sâ6[â>G¨ÓA`©_,ŒÇã77Æ0›Í˜N§h­KßPPÌë}>?‰:<Äoc—nŠ#g6òliÞ}wõi¤Ÿ6Æ&¢ÏÆÏÝrRé=›ÍÖÚš¤es½²½]®Ä-]YZסT¤©,ÑËó „X“âJXÎOÐÚòî;¿Â­Qž»~ƒ½]^ùÎËüÙ¿ù ¦³S~úÓÿÌW_|&ŽÇå ïºÄÜTåÚõƒFpyrýtÊ—Ãkv‰–ÆBç„mv!Fäœ(ŒVçz/º^¶ÑÿØÿ<-÷jèäºè÷? ¿•?ªä¯ì€P:¤kFöo:C¢ÏÀ¤“#A+Zçh—K¦ó9Ëù¼4væ¬KC¹Ç°µÁT5ÑFŒµDv;çi]Ç£ÃcòùçŸóÙçŸsïÞ·L§S¬®ØO÷ýÎÎMm× MUÁ#À’Ðs„Öeòšl èmàªú6Ü#¶nJ²m—ÌW-Óé ''Sf³íÊ [1ñ"º H×\E¥ÉÞÔBð¾4a%ö"¡¸}å>˱4mHQÁžwµvðOÂ]fÈúØ W­ëèZW­!í‹¢lÒwª×˜«åÚ*%ZgÛ­ oOy[¨5Pæ Ë_ZCeL:§È¦É¼M¯ìðÙµá|\;‡“Š$þÜ®¦/yOŸöجs¬¼}\.Ãêó9É€¡çŽGÜZT—WJN½·cxo::õF¬.lຠi‡N«þ¹æ‹·í¹“y”a—Îþüži,©¯ÄœÞÐfbŒkm†™/ç‡î°¨×œ[›ÿþykdÿ,>ë^Ý<ËåÏ|ˆ Ëv2f`Óٚσg îÇÿ¶xH”ÆË y"ØK•øÜYEr¸™ÛvñŸ×p‘u‘ãê­ÌÝV¹&Òis‰Y^1 € zUj_£Œ°Ðâµ'bñѲô†Ó…ãdÑñå7ùúÁw¿9äh:gÑB›'e•… Q?Ìúô3GçAò/²W'_Oµ ÒËÍûVMD($OQ¥‡ƒQéÁôäU”n’5ÖQZ£¨"FE¬rXS4΋£Æf7ÇÇ@•êv#!E5ÓÆLi -1¬1¸èñ^¢Z ÐT‚ÇèÀÛƒ–¹(ñc,&©Ë••ïBZÓ¢‰K†,øÆ(ªZÞc ÁŽ:©á:¨dŽÖJ\Mî£>‡Ü[ë7ôµrƒ˜ì .Y§ÎuXU­s“‡‘&ÂÄS&Q!=ðUÎÙ—…_§d®.–è_‚‡—–>“øí1{.ÓEIA€îÙP¥e³&¨ÇRû‹ùæ' TÉH]lÁiСÄîzNUXû™¹Õ$žb8˜˜ §k1qÞLzÐgÖUÿ0Èã•`—2ÏË`e«•‡H¤I锣‹‰«=>/ö¤–œ$ˆ‡V)BâÌ•ødÔ⦋"þ®ÚŽ…3x5!Œ¯Q¯cwn꫼öÊ›L.]egï€éÂóð‹øì³/xÿýßóÑ¿çÁýoh—3ð+vGåZüjNe=c»Ãw^}•›·îðò—¸|pPì½ÙÑ£)¢£Ñ&qBb@ޝ\Šzqjy؉sD£U\­‰£ã½D† ÄÐ\{:;w”Á‰CÐhƒÑo5Øšf4AwÙ½~“goßá…›/tÅ×÷ò‡ÞáW¿~‡÷ÞûÝ|Éj9g¤ZÆ60iàæõk¼ú›\öš¦¢jfѪj[7Ô£=êfLU5ÔÕHÚá¬ÁŒÇ`Ã)*œ[}›7wT :š¯ÙWE”¶t‰[¹6|Q¸ÊÏ"ïèæ§ÓÏRŠU%=m,óé 4ÓÓŒ*ËsÏ<ã{÷ø‡¿þk~ý‹_ðàî=*¥yñÖM¾÷ÆøÁ~Äó/ßar°7'âqð.xÚ•c±Z²L°ÜaÜ/OÏœo‹«r2ñ§®ë”ÈëFv(å‰Fo=@¿9"˜a¿²n&¦±pêˆ%×éßÑ*;ÏÉÑ1LJGà<¿øÇŸñ?ù;¦³þí_þ%?þ‹?çÚÍØq“ø(‘FO9®“™@ù¯!Ó*‹E›Ž«ó¡Ã8Ô¶½ËåpÏÀZ×Z¬R©Eþ~²c#³®vv„]“ë°ONN˜ÏçÚÝegg§› ª³mfÜœ#ü1øme@ç Ÿ$rl/ÆQ6Ë=‰K¤J‹rˆYŒK@þÌ?ͬ,ZæŸç½g9_0Ÿ œ=oô5ŠÚX\”=ør¹L?×c«º8¥[/ûH·\QU >´|ýÕç|üÁïøöÞW(¥øâ“9==––Þà7ÕZïz´Ea@†0˜âГ†S‰ŽFõV!§wsÃÄïË/©.bïc6ÛÎ'OâËœ… ?½èyÑ¡oÛëÝ`?Ó€¶ÁúTJ`¾X±\JÃÞt:e¹\ži^BÙ ø; ƒHkM¼Ä[§S¸÷í·|ùå]îß¿ÏãÇY.—TUÃ3—¹´{‰ÝÝ]l*!ð+"Tp®Äð¶qÂtžZDîþ|6ZI ïjEÓÓSŽ%9_¶i@°L“bÝp°×¹Íï}M4Ö) ¤*õhUÆ®­ÓuúßÚP:Ò%¤vب䟖⓮£ëÄMƒ:€Îb©¶¥‡Öï«?îüú¤¥z~«!–´€Ö¤÷ªJDQ•\tq€Ê0[9Ðçq—¶"BæÒ$„–íNkjmJ¡}Ä+†š „|Îg­);Dóó£ {Òç9d\ÚmU‘çQ釲p®z°ê†³'ózúö€>j­úô¼‡Óð ZËú×2`h‹Òº~Á2ø½ë²Ì£Ù]÷ èíN%ùw¤½+*]Z rY†œËþF[h¹ÛÈ¥ªñ1Ò9è‚aêàÑÉŒÏî=âîý#¾~pÈÑéŠÓÅ T…1•äI}¡f´ô`£z‘Mzmß8 YpÚlCxÑO¥ƒvúf×~·ÄöR‹XŠÕYÁ”`µÂêÔ¸”ÜL±FQiÑ Kkq«$׌QJÚ ¸|Œñý!$;¢Lº9bA÷*t'O$‹i1=¬ä5E+Œ ±;C¥d“ 4’ƒ,9£ò5]×Uyh•ÜXz`á QZSÄn(pÞ;À”lX+c°•)q4òt[™äÒJÑZ-ŸC±=÷óè'zq¾DƒàRœÌ¥ƒpLŸ¯÷\޳ª4 IMŒ¹N]%€»MS À#ÐxÒ£¸ b¹&4JZá4">ja4UMD@¼˜ì°É ybW»_œ|I ËñT•YY±¼/¢\ Ö(|P(›é¬c·¬Û¨×­º±pB`}Ó¡ÀEUi*[Ð’sn @ö‹‹N"LvMhº°ê'ÑJ\®Ùí—ÓŒùù”ˆ!M‚eX&œÅÆÁD‰$¶QÓv‘e¬ £g ¾ŽÝ»Íåßãêó¯Pï\ÃèK<|tÄÈ_|Æ_~ƒo¿åðñ}³Ür¡ÅDO삽ËûܼqëÏÞäΫ? íH„(‚ëRÆ>ÊaÖ¹tϦI¥^®¿dÏ\ýàå¿ø!˜Ä{°²Æ*]˜zÞ+œƒ®ø -WJ OH£è"tÞa”¥®ˆŽ‘­°Zxƒ®®¨®\f÷ùç™\}ŽçŸ bÃýã)|ð>ÿõ­æ“>fvrŠï~5£Á³?2\»<áÆÕ]îܾÊk—±ÒâÚ9¢_`m±5ÐQaYX,–„Ö°š³Ò­NntE0 ³3¨l5mè¼Leó¦9;$tv{e¢wÄäh3bP¥&mÊð FVѵ-¾óG5šå²KÌ‹ #–óWvvPÎñÓÿëÿæŸ~úŸ¹÷K\·âÚµ+¼üÊwùÞ?àÖË/spã:ãK—ˆ¶bÙ¶ŒL…ï:V«ŽeÛ²Zu¬ºVuNˆ"š·m+ ?c©êŠÝqÙ¨«J<6¦u¤iš2yΓõ=ŠÄÂÐék6Åk•·ú6AuC‚Ç(/60*kX­¨ËéŒÙé\Ç—ü¿ý«¿æË/¾à…[·øÿ—ÿ‰ï¿ñv.á”üÞÝ ¶nˆ1²X,˜Ífxï™L&ŒÇ;¯Ÿ5[~ßX¥¶>s‡ûœm°m€a ÐP0Üv ËÏ麮S'ƒ"»«²p2›ÍJdpwwW8L[°Ã6ÈóªÊ·Á«Ï«¿h7ôÎOÃ’ÅÛZ4êÜHÍÓüÇSØWAmDuèK”ÒÅÙ6Œ§äï+7[®V«4a+¦=©4u´4ÖRQ†÷mBÂDÁ’âPÚ0M¿'„À/ßú9J)FµeWbÕrÍ÷e:¡¸ÔÍGàp šÿš/¥ê} Ö»ùªžÝt¡³ð‚Ãöð°¿­Öþ"ñ â¹`é§qp=éz8Ï5qÞÁ}›X¥”’‚è£Ö*² €óžÕRÚ4ŽŽ¤MpÕ·k‰™ÙsXceÀ"Z¶ª…#=OŽ9:®ÕÝ»wùúëo8<<”æÚĵºzù û—ËïÏñÀÍ2Fm²³«NlI¥,¹ÊSm ¶®dª îªuŽÅB"‚‡‡‡Éõ9§ëV8úûBÛt–Ò‚™ $6ýb”®£i“.|[›Äð6E!õ›p¸¾…ÐÉ1‚ÇAÅäÔÖu¬–mŠa‡2~-N2“¹ÿ ¶ q=òœŨÿ?â•ìËòù#GÓu^sTNšPb˜VéÂ=–pÏoÊ©£á~º`‹P–Ó"JâT]Im™’¡&J8¯ZkTç1hŒ²%¢”4ºÅÉ|׆ÍÂå™7øˆ$%&û(qøeOY\C´È¹~cÕÇ%Õàÿ†ÚvÈújÛ}/k¿İÙpßõÖó„{•8¼Û‹"6LA¨ÂoÌÿ®Öñ jhJê¼õÝ¿þÞ¢¾p±éß&äŸ7Û]‡?Çnf0/ŠÕmºµžÚ¡sÁe3«ºíÃÚ¶Ú¬ŒÜ¶ñ9ïÂyRsÇÓLáÊ -L R žWÌ02‰ò‰ö”ìÖ ”%*M§4«6p4_pÿè1÷œðåý#¾~xÂá©4 :¯PHS†(.­¶Úïó`[ èp2Õ[×ÙÏûI*M(âeß´¡1P… A„*k 0·Yh¥0$ñ*F,"öÈzè…•=V ã*‹CF‹€elDO•â—….„S=jeúṄ¿^ê‘…Y~†ÎâKô("&zL¥J}¹Ñ«¼LU5Dm$ƒpibH¯tŲlÒ%‚x/Q¸ 1ýƒ¤g%eÛ¬+QØ{Œ *$çVÚ ë¾Ùoó¾Í è;¸ôÚ"UeÐÆ@Šò( (áD…èA¹¹lB•ÀfCTtÇy¿æ“5¢wPåhi‚jS‰[I Aç8²½ˆª×¯9ï}‰"æè.jQZICˆ©qKõM)Éæ¬uɇ •]„µÊZ6&Ùæí=xOáÉ_KõJÞku”ïÕ7YTÃ…9oTE¬óI”[?ä+5JsNbÅ Ó%V J¢»kËqÁÐbqf„Ý»Êåßc÷™—|‡Ë׿ÃhïY|Wñ³ÿò_ùðƒ?ðÉ'ñíý¯˜ÎéÜŒ®›¡qÑx*£9ؽÌõ+W¹ýüMnݸÉåËWQõ˜Î ¨[ <Ï]ʼö% œ;¹£qÆ+œWh/Óÿúæ¥4FWx]'•Ë]çp]  H щ8˜*íu*Ñp1RU ±¡›1û—Øþ—n¿@uå ÁN˜GÞ÷·¼ý›_ñé'òðþ×,SLtT*°[i.}ã*/\¿Ìåý†Æz–GéÜÛŒPZS×5q4"¸1HˆÑ5ûu†Á)BzÍqN=^i¼2D4]%½j„—´»»[j¹12i&S¡JekÅéj’ëQƒ6‘H+÷hºG+çqÁƒ±4¦¦A3©>~ç~ñ³ÿÂÇ¿{ÙÉ!û{cnß¹Åëo¾É˯¿ÆíW^a|ù2]TÌ]K¥¥ùíôtŠ[®X¤iynŒ%‚$k£Ä(VÄÒô~\bi›Ïd‰šô ÒÍÃÈÚsH}V«}Kf_yz¶†Nn“®ë°Dޱœžr|ÿÿÓŸòîoÞ¦™Œù7ù—üø_ý9—ž¹Â²]á5ÔuCÔ‘½½=ŽO%Ê’!֣ш¦iJɰåg8Ñò.Џm‹ncpl«ÌÞ¶ÿÙd˜.W+NOO™ÍfÅu5‹3èôô´8öööÒõØï9ò{Èhvž»ìi"`çMŸäxÙüÜ6ù`ÃÃÃEN®§HrÔI\Éc4ø1:5=K”\‡LÙ?¥çÞ¨êKëuʯºV~vç Ê#GSBtt«Žñ¸‘ÆàÚ0_¬¤AF͈étвPW5Y-磨mŽl4IØL(ú}Æ&xØì˜÷–CNjþ‡qÈ 9ñ̵ìÒï%>©uo{Bã¢ý{ï²>ßí·y½œYc`íç\$X=麼Р°vŸÆ²Ÿ6 ¤œ]«$6OO¤)²]®dmMÏÛµõ…HSŠkUJ°4m×ñøÁ·<|ø?|üßܿǽ{ß2ŸÏQJ1¹ví{ûÔU…J°óà˜8WDˆ©Õ.;÷T9­o~ÖÂÁ˶d¥ÓÅ(ßi~`)£Ì==íÃ@Dâ¨DŸXT™¦•è½WšÒºDì2[>…RK¢ç]ŲAŒå~µ#_;±XÅao¥”@ô>ei Ƥh™²ôŽ,R`ؾ¤‘¶NÀ¤µ#ÝÓ>?rCq§‘¢£UÔ4ªIÖt‡ UT,©qÍ>Œž¡>¸ÁäÊó\»ó—¯ßÆÚK´KÃïßýˆ÷ÞýŸü Ÿ|ú!ÞgÑž¢M@Wb¯–ûѲsiÏÞà¥[/rûÆmö¤hq;ð*¬&=6RäÒgzŠÏ ðª‹èNc‚D UÔ½£A$::çX´ÂºIèÊ®,e4.í­2ÔÚÊ”0Š3ÖŒGÔ—.3zö:7nqõæmªK<~4åÞG÷ùÅ?þœÏ>ù„{w?Å­¦„0e¤–LFšÝFñÒÍë<ûÌ>×.]bÒXp+ÚÙ…§®k¬²rÈYu´)zeŒÀÈ£±Ø8JQÓÄÑUf„ Ð!²ò‘eY¹À¢ ¬V1µ hW[KÓ4Ô£õhLe›òw…Dm•ø‡ødÇcŒÅ{GÛ@3iöhšš‡ŸÎ?þíßò›_¾E;ŸcˆÜºñ,¯½ñ:¯|ÿ»Üyí5̸aVÌNËëW·” 9Þ”ÆÐqÕ:Çr¹DgæIˆ4VØuciªku±àçHIÏŽ3©a+Ý~8¦îQ“*ÄrÈ\w¢’š«|jWL-C61å¼'t-«Ù”ãÇéæ+>þà~òÿŠÃ‡xã7øÎk¯òú›o@m‰•¦ªG8kTŒ|õÕWjè'“ »»»ƒ¸N½vྷMQî"nÓæpj›@³õ¹½ñç²0¢mX¹YÌ{OS׌F£"^- ‹]× ¤yg‡5Ìü.3ˆ'‰, ò ëÔÁíq‰M(ðybWÔjíW1`³'}¿»)î=´J.ÜðG9k.bheWGvÁäuL†bªùŸUU• ø#a_µ-«ÕŠÕjµ>‰ÎNmc¤Q3*£5RÐuUÕÐŒ*+Ål~Êx2JÃ̎ѸÆjKÛ.! ¾s¾Ô“î#~ ³VöñÌtü¼¢ŸÔßrøÙv^Ø–öxÚ¸àëž{þÕEN‚m(“?†ÇUÞ¿Ñ[˜8¹É[ú5ïXÍÅá™’Y¸²¶Ng€Ì¸Iâ¿–’/0q‰¶-§G§|q÷+>üðC¾üòKî?x€ó-•©98¸Ì3Ï<ÃÎεéãp¤†BBbM¹Vâ­£†±õ÷|\9k۬Ǥuÿ¹uc±X1_¶Lç NO8MË{\.—¸Î—u…ÌANû\ù=ê $c>w„ç3©YM¦•8å|2ln3iœ¹çç˜)úA/Êj% Á’ ¸KÓ`ÌW{Lû|‰wÈþ¯¥q>E0:‡d¯3ˆ|® ‹PÁ"‹qHÏ‹œY)n3x>­ƃϲœ§Ƙ Ì: ×CÑl¸ØtT˾ǟM7£õ›¢Ð¦kjÛ¿¿-~ø$qÛ>ØíÉ­Í×ì®õ}IÞè5þÕðߥp×Ödö¼E·´®¥›xóƒÏ?ܧÙæ—Õ;¸Ð)¥TÜ25‰[?øM0{ÎNoªŽ›¢Ö¦]m­Òó‚‡àEì­Ì‰2:ÌÊÍœ&(ˆFŽmAË&hÃÒyN¦ ŽN[¾üfÆg_?ä«»ßpºhA¼nÒO4h%Ÿ¿M”–=mÀ;œïЦ*àöaU­1â N¶e¬Ï›å)7¥U–ÆB£‡ÔP'bE”v1b„•&¸NYFc¦2R£[ÙHSW'±;k¥MP›(@wôpïDœÈ–àÑ(í¦ºÝoú=µ•’Îü¡©¡® !Õ±šÄó26ßTH‘TYü£¼¼/bÒ. ·0eÊÓÚ˜b‹ÞFJÒÌ9/¶j¥¥,eІA›Jb5ªJ"R(0ñߣ ©â´±$¹3ý=&[o:H„>JжWŒ¾Àí!@P¸q.ˆøÎ%Z%/ëE‚Ñ« µÚ‰é#Ÿq ªh±K©BãñÄ0teD†eâdËë“*¼1açß­!HÆ[‰HÆ(­•™!‡`]&ÀAž™©=Sþ²V¾³ªÊ.SQï½tøRU/Žâ˜c)ߟ_óà“¨¯bª1Æ'Á;»6ågxbb¤ÆÃ -b1}!º.²¯\5"Ô4/2ºò—Ÿ{…g®ßæòs/pz8åÝ_}ÈçŸ~ÉÝϾæÓ?áøÑ}ŽŽa­¦1Lª±w¢ád±`¶Œ¨jÁx¿ÅNL}Íîx—qS‹«Å$ZpXE±=;çÀ¦‡”H¢Tȃٷ˜Î£œ/—YˆÒHSÁAëm+SMçó:—Ë ª«šÊX*]¥vWCÕŒ±;;\¾y‹ý/°÷ÜóÄfÂ|øúwŸóÎ/ËïÞ~—‡_ßevòÜ‚¦ñتe\+n>»Çg/sûƳìk¢´óS4šýQYG¼÷Ô£Ú@×­]Ї@‹Õ4½'MÐmj‚6ø(õÑ*Ý{&´´™@ë䳘=:‘Ï0¶FÛ ]YšzL=ñüõ[„=Æ~‚²i n*L%‡˜6ñ³|*úØ©w1Êrÿó»Üýô3þþ¯þŽÝçää„ýý]^ýû|ïÍ×¹ý—¸tí¢Õ˜¦&®Z|Û´¼‡Ùñ1mȆ±ÄÊ´!z/å Ê[Uòÿ7#a$‰îËdm_ZÑ{6‚:G˜¡aix£¥ÍAÖ³àqË%ËùŒÓÃÇ|ûÍ=~þ³âí_ÿ†Ýþõÿðïxó‡?äùnÒÅÀ*ˆ@¼³'ÍnÓé”ùt&¯7Å÷÷÷©ëç\yv¶mË(µrmN*ûçk8ó|ÚÆ}Òý¼6¸¡;fèjÍá œL&cèºn ½··W@îÞûĵëÑMÓ¬9š†ݺgûSmqõoBÜ·‰jM¨:58o¿¹6ÅV ŸÐ¢}Þ^´LªQkÎÝ0Ät\a(às眈 JIS¨±‰%‡vb\sê-–ËäR†ª–VЮk…MÖÉ@*Ç´BX,VÂØÚ¶-µäËe`w²ƒµ–¶•‡a£SfmfaP)E×¹ò=æg^@sEûEMZçAÎË?×[bÃølXo¢Üv¸ÚOí¿~j~ÖV1y(4l¹>ÏCn<ɹWöÙfýÛcWb¹ß–Ë%³“SŽŽŽJLÙjq7y/{ìÊÈ [6£J+¢‡•ëxüø1Ÿ~ú)¿ûÝ|öùçâÌSŠKûûììì°¿³["ÃåwèuUÑv+§å€ï“ùœåúQ½³#ð “ 6‰¥]×1N9™ÎytxTø]™y•aîMÓ "fé»ç2ŽaP0–Ó !D¬Ñkíy}²Jàß’bYo•á¸ü¹¶m·ºÎ±Xu´cÙµt]—îÁ~_+¼—AiˆOjÛŒ[#ãgÎgÿ ç˜FÝCD†`'"61‡3Õ$᧪\V¥s³v¦aÄ3ìŵgjC3…3FJ#ðÿ‘öfÏqdYšßïnî±€[2™™µdeõR­îiÉLL&ÙÌèaÌÔ±žÆÔ]]]Õ••ûR¹‘L&w;"Üý.z8÷zxÈìÍ`$@ áqýÞs¾ó-!â«§ØD©…´!hrØ™±ŠÊh+\f8ËçMX¬¬dÛÛH;W}¾:SÕ%æ®Ü+ñJvçðœb&Ûzðáù¹-mp¸µÉݰ6±œM[‚ë2W%+^Ú×U\c@¦¨.±é‡@æ¦Â¤¼o¢öY1{Ë™"6$¾ÅËû[Î"Ûmè×7_Tå&TZS¢iÛ<%]¥h¬žÜP»;LHkÔÁò»ÚüXå ,Ó¶âah꥔üÿ}¼ÚoÈ0‹lR“¾¬oŠ1ÿÎÞ¿"•ÈÕDļlr²XLèª&j‡G³ìMËó×GÜÿþžóàÙË`ð•H2ÛÍ Ø"!.z“QÉl>Œ²Nncº„ eY0Q7¤”¥(‹^mî¬K­âº?J®ø/‰ŒÎdý´´3¤* ¯ÎÌ&pF˜Y®VT¬ Ô³•U11.Ü ™¡Œ³Š£1«0I÷ÉnÅmˆþ:-, •"®.)JÙÐ\GÑöŠa ð¬‘ƾ®uŸŠQ‚–¬QT.II¾w22~ ò$PÊâÀð/öSZa3hšvAŠ”£ð®ÚnIåF¤(ò@Y¯ùð-5Œ2ØÊöžPÂT\ ›å‰!DB”ô7Áº¾©¡÷ïÁËëÏF å½VÁg–Yì¥C:B²á¨˜b ¤­+¬ŠhèB'I;!³­”°T’‘‚¥2!v™’®ÑÅûƒˆ© ¿ò½ÉRÈ”õõ)Q!‚É…Ú80£$áP‹ñ¹ÔäTlmW,QÉËÚÐyŸðBì°¦B;“¥‚Ù¿-‰'„Õ¦ oVMu<£ *f¿UZ‘xÅÜy[SácßÉ÷k‡Š•,(ÍyYÄÞÍ`¼“êƒ7¸óö{Ü~ó]¦³Ûœžx>øç¯øöëïøüãxúä{^>ØÐ,N©GXIŠ.@³Œ4ÞácbÙÔœw†×g/øü›ÔNdR³É¸onçó9wïÜf¾;cì,ãzD];”©pº¬é–ä—⇕}ã–]ƒÍI)]‚Ѩ&t¦[R×5‹¦¡Ë J)…Ì€ï¤Ñ•¥9¬±ÂäR‰Él;Ù¡¾y‹ù[o±sû.“ùMb0|÷Í>úýŸøì£/xòP€«±n˜ê%®öL'p°7ãÞÝ9o½qƒ{SR×B\bbRÙƒ[“Oi"* û4#l8Ù¨_9‡QŠ:.– 4A0ø Ôy;B› cGTëÓûÀxdi½Ö*vÄV–‘%šÆ8¾;zÎîΜªamÅlwéîít3›²L0Ý=«0QÓ5-Ÿ}ô'~ûÿüw~÷>œ3žyï7ïñë¿ý ¿þÍßppû¶rDW}À/#6Z\NŽãŒØÈäÙ¸ %DÅÙ¹¼¾¾ˆrŽñ¸f<çæ'½HRkWƒ.MƒÛê‰ „>CÔë^Wx0R´&iúfF>—ÚÅYKŠQL`ƒ'4±í¸8>áÕËç|ññÇüÓoÿ‘'/žóWû7üOÿËÿÌ›oÝ£Õœ¥ŽÑhDModþêÅK" ;®‰)±7ߥÊ̲á°$¥ÔË ‡àÒfƒ2,p7ÙV›SÖ¡r©“6A¢áß%Õ§Ðð•R,—KNNNÄkIkööö¨ëkmoBß4 Î9vvv˜Ïçk`EUU}¶ ºmJ6Y5WÉd6Ÿÿu©G›ÓÞ®[50›¬­á@ï*°á:¦Õu ·MУ0xûו½¥´Öï±ÊrøêUf»9Ú¶e–×LŒ‘ªªèº®oâ1}óœ1áþ=€Øg«¸°}ƒ«¥ ÂÐPÖȤrX'À9 \]]jx„í½Š;/uvùPJõaMÓȽ‘à VûáÀ`wByið©Ö?¥ÕV‰Ê6fâð=Ülü†e²?ô…¹j½Íjd}/Òײ ®Ö6›×«®qˆ„‚®iY./xýú5'''œe0zÅÊK ªQMë=))´±+‰°m#L ããS¾øòK>ùä=zÄùù‚jTsãÖmvg;L*×çÖ{1…1ýr-]³wÏQ’~X¤<…è²%‚2ò[ßa’üßé…HONN89¶Õùb)3…3£Úö¤Ÿ¢ÔgƒF=nQ@Dñ̃vZØðƒu^˜UÅ–Âf´¶}3]$Á>E”qt!’òk-)­‹E–n¦DˆdµÄêˆJI¼aWÒrpmàQ¬÷SiÀœZ÷ˆSl7½ÚÄ6ÿ»øTe5Œ¼F"NgËœ¨bÖž=Íœ–kÕCRJúµ’Öèóþ:TÞe©²„º4€ºž8¢Ãi‡ï[bÚøÞQÆâS€>šÖ“’ÆU Ó¶Tc#*’”ú¾¼ìWÎ ±ó%Íp“¤QÒ å~ kah+p©øŸ­¯ÁB ¸´wäaµ„Ø%2`¸Ïùnƒ0²¾m³žKCöëUìªÍ}窰¼ÍçqÝþ¸òÀŠ}¯*äúÏ^µ'½à†uP±^(–e h´Y³d(ßoWr35hô‹tæ+ùàúßqÍ,sެn·M„p˜Z°’˜¤+½¯6©áRë6cÆë¼º¶9äo;<7©ÍCsRïÅSÈš„«V[¼ø/[cLEÄætéyþꄇŸñðñ3ž¿xÍÑyC§g4QC”ÉÄ;Ȇb”êÙ1e+‹ý&É%ÿf¬·ø ÿô o ÛKÓߨ3dtZéꇫàEÙOA5£¶xöàQùu¡")¶"ûBƒh­M6úÖŠl°’”·J¡SZÀ˜2a¹”&¡bÞh [eu˜² ÚÊ!fuIÖ(¿_¡’ 1ˆÑ{Jà*ÑO[·Z?Öd¦N‘…åF[mLUœêm ({å„K)Òu‰å²c<­dÊk J[VÒÖ”Ø÷û.ähd#:v3œ6ß(²D0dY^^£™QhÔT™ÉÖö׳ë„. LÒ+SÕ}o2¾’¢¦\¨žOaRÉãC"´¡#¹5Ù˜ÌôER9³™&†½ÜHÑ4A~¾4A6^2 ¼lÌ(ï“Ne”ÈîT^g™æ®æYaæ%â¥&3ä÷ õE¼Ò[³ü$Ñ6gWa« `X¶†¶Sy¯ jv‹V1ÓvnýŒý7ße÷àMÌhNH†O>ú–¯¿ü–¯>ÿŠÏžpqrÈÑñ ÚîmÊ‚Š´!¢¡ñ4Ѝ4£iMBÓ„&ûK(š‹–£ó%æõ ­0¸®¬€ÝÁSW–ÉWnì0ŸïrçÆóÝ #:v¤18j'žO)%Ž}'÷›ªh—çÆø.¢­/_üœÊ‚qBKhì¤f<ÝeïÖ›Ü~ûçLïÜ%fPypÿŸ}ð Ÿ}ð¾ù†³ã#L„¹ ŒÝ’‘é˜ÏG¼ùÆ>÷îÞä`>ÂêHl.°J¦Á©4 YBÉRØ ë V¡²Œ#Ê=bMM Ñv‰¶ó´Yû!|·"—N¢Z8ϵ ‰|~½ãœÎ’„bçH& š³†ÎT87cy±àù‹×¸}¦·˜Þ¸ÁÈV4¾ýŠÿðG>úçßsúì9{ó)÷~þ&ïýæ/øÕo~ÃÁo0Ú£ªZÞgŸ°ÙD_gv©üé2+¸c<{IxÂw-Ëe“¯Ib2™ôìIcdxáœÃêÜ@¦ÞkgSº‚НV¾z A>ËWJXHH’ˆjò`¬rb 9_–-íbÉן}Áÿð{þø/¿ã­_¼Ã?üÃ?ðó_ÿŠÉþ.ÊYÔ¨°Æ9Ú³sºåR ¨ìáULÎ+ãz¿RôŠ”²ê”ë$W™§^Õ(o6ÄÅ{«oJ6ö«¦iúbïââ‚ÓÓS¹&UÅx, t×uœžž²X,!ôFíÓé´7sÔÃ÷ꧤº]÷çr ÔOó)uŠËl¡mEúf±¾ym êJæÎU^¨—üSSZ 1Z3—OéCLœõŹ«e}Œ&ìv¹1ö¹ž-unç}¯ƒfÊ ^ÐN 2Àß§lnØn¬®ƒÔXÅÓÒ§p¥ ô&ÀºjJÖkú´•:¼Ôó«ð¥ëMÚËà›ôã¾RWÉq®óíFÐokÀ¶±7¥·¥ö½Ž©p%ÃpKòåšdÈ^NZ^\,8zõ’ãc1X&oy¿ºß“2t!0žN1JÓtb¾l[?~ʃøÝ¿üÓÓÓži¹wpƒÙ,³­"Øl3AÈ5G¦åëìqhÌŠyWX¶ÆÙ>aº°)BYk{Cúž=¶\p||,@Üi–@¶->&1b']™™|º’m².SNúxleÊfÍ–6ô€…Ôªë½e¤Øv]×3¬ÄïªVHƒ‹Ø?·Ÿ Í¿eÿ»Ì¦F\þ=FüuÕêzè"ÇŒ^z’\Ÿë~Ÿ×ýP¿Ø”P"Ã2³tm/D]’ÂÓÐ7ïÓ.w±ËŠˆ¸Ñúǵ² &†7“4¶À• lÎÕ½Oñ ]¼$Ußz}•º6W©ë÷ªášÜÆd’DòË ÷Uçé¶sð*lã*ÐÿÇXWÃûmœr 6d`­ ÊP/©5ài›‡Öv“û â%½u¨a/–m–é¼8Ez¤äUÌ×?~}³15{X õ›ˆà2⊖SÛOqÖÌ-7.è€QjåŠ?¤Ë_'•Ûvè¬/vzƒËÍ)ŠVŠe{ŽOmœx±(Zã£fÙzÚdxúâoî?æÁ£<}Äù²#$MÒ3"ÂäÒÅØ:Kë5ä]夕¤VÒI’_I¼6(Ï[o×ö:‘¸¥žú>LyR›ºàìW¥T‘‹¯”¢°RTþº€GÎI#/ìBK5)'\h•MÃÖäÉ€†‘³Œ+‡3 ³é³ÉŒ"«× è3‚"kMëÞkget*4y¥ h%«øvÐ3ƒ¤9Ó™$Ebñ2­²°®å·ŽëšÎ79 º®¥v,J4²¹ca *-”å˜Áµ”¯UmkBèzÓý^›n„/’3§E)'®¤.QÕcŒv’€ÖƒÃº7+NY~“´xB|ïוߢ´x¡¤í:OÊÏÝ{•É•úÂ0v¾o'­&³¿4ZG´Q™¡³¤/Äb™š%%Œ"í{¡3¿( @mNœÌþ:æI‘°9Èfººf/Ä;¬×߉èQ9¢Š"¡\OY3ýT+0_dšÙ:¯'gM.äušìY§PùV‹ìQ ÙŠŠ  QÉ30*¢“G§N’}´ÆXCHжMOMªÆh7¥u3ÎÝÓ›÷¸õæÏy㟳;»ÃÙiÇŸ?¼Ï7_}ÃÓGxþô!/^|ÏË—Ïp•ì¯ÎÕ„ è¬éú Æë1Z|²"š˾€Ð œÿ§@ð-‡¤GtšF €-MÔ¥p^ñèÙCBèÐ1`u¢v09æ³)ÓIÍÎ6ìÏ÷ÐDFÆQW5íòœq28;o¸Ð ”ÇY)®Rž¤9]Qï̘¿õÓ›wÍo°wëM”®yùü÷ÿåyøÍwÜÿöϽ|Jh§%£*0®5÷n͹}ó÷îÞbwg"ü=ß`Q¸jÒÊŠ$4ÄHTÂÄ+±¤åЂâá”B"(Mç#Ë&ÐzMDÀÛy÷ãêÌžTòýeú—+Âr‰ŽdÝØÂ‚I‚áÂwÌvöq“š6AКý;wyã­w™Îo0ª'øÿé<úæKg‡Ü½±Ï;¿¼Í¯ÿþï¸÷‹_pë;(SA è˜0d>ÊÞŸ1¶,BËyhYFnäùN&3ñØë@?%”@‰¡£k¡Ë²*ï±óâ!f»ècQÖå¢/®YyKΟ®'§œï$¸v`­!i8;:",ü²áÙ÷?ðéñÅ'ŸòÃ?ðÿÓÿÊ_þÍÏÞ{SW´*Bí¨G#Œ³ÂXº8§]¶L&vgÂ:×£5†Ï°¾J·M0·±~~ÌÏçªú¥0q¶úåb¯mÛœäuFŒ±¨êºîÓïJ:ÞÞÞÓ鴯ɆEäP‚s•ë:ÓÚëü®*Öõæ0rÃ_©oÖì¶ÒÊï3þÍ0EV]ËòÚK¶™Á—!Dÿ»ÕÕ2ž#¯_¿î½¯¤~XgްpVø,+)=ãÀgTB#R\1Í‹z mLºûРÈ÷V~².ͼʓ6°jrÚ¶ >/§O^×LÏ0•®U©÷®>ÞeVb¼$×ÙôݺÖèz b¦˜+R¶©Y¶2±2KO+I2==Ðêä䨗œ @˜>W3Îà¹1e4MH¾¥ñÏŸ?ç‹/¾àÓO?ç‡Ç±Ö2¸uë³Ùl €Ž>`r½TÞ‹âÉÙhQ(#À«­*t–Š×€Y¯‹ó§§§œ]\p||Ìñé '''’’Vá]ÖY‚ýÚÛ–¸îÁ›z)R‘Â9+ÉÏ›ò¬¡¬¬€»Ã}ÌöLÕ3®’ϰ!ó° ±gFzï >ö`UÌ>À))†mðUþAÛ‘©AjøOøSRCûF­äʤu–ä…© šÈøÄT#ûªæa³Ö¦ïy­Òy({Ùïië ¢H·x] lM:‹_\Ÿrغ"PütEö¢r:e"˜(ƒ¿.Dª$†Â![¦Ä°ÞïKÁð)åzÀä.ìÙ´Ö3_ŒVy†›ÁW);/Ÿïi-i°(©† ð¦?ýˆ¯ž½ÊD~pþ–W· ÄÂIÁ?–ÊÛïŸiýZlž¯×YT…¨*·uX7dñ¦”¶ú¥”°%aæ²I¡Ï/¬½2%°§š©xÉ ›À IDATc©7Ù²B¼Dßfâ¾Í ~Óälsq ½«6mŸŸÿðÿ·%ú %^ÃçgŒF9Ç2ÚÅAYF£ejޝŽ|ýà ŸñèÉKÎÎ;’®ÑfG¦ú Rò% ”„Qª÷2Z¿&’6ó¿cÞÈ-+ÚìÐcçªß̓uÑóA­ú ¥/‚TÊôxyÏMÖðë’¶“ý‰¬6X ©óɬ"ƒF6V1ùûœP ¶šq¥1*Š:øP|²Š$°pqË$Àåôs\ºø,çÖ ¬ÓÓÞŒ0…&ShSÑXçMÍÊm*ŒVù9góï„¥eAé €…ùb¡'«¼áŠQ¼Îéd1³ Vpñ7*{¤qå cîE¨BBé k%Í/©Ð§»ˆdpÅL$B”÷AX@brF.J Ä”¨kGˆ­$ÄEŸžDò"u$ Ì KúŸĘºÕæm­xgÖ‘ÎÞe«%(õ²6Ú$0©gÁS¬¼Þ2h)&“98 ¼¯Z÷Ç~¹Hâß S)B /)5™MV®uÞ@‹aþð–ýEõÀ'9­Sûr†ÜX¯À}«…ý%¥Feœ@YÔbZŸ0¤äešJ—áHÁдh,Ѫ)©Þ£šÝÄí`ê=n¿õT³›L«'MäáƒûÜÿæ!_~ô÷¿ûš‹³×ÀTC5 ÂtÃa͈&ÂE·d™,Á'BTDí@[)\µÎ÷¸C'ÛûáI:w…sÆMX¶b*Df݆@{¶ìpåbˆtç×§¯EÒZkº®¡²VØ[Úr°»Ë´®YƒN‘ó]öw¦ŒGu4Tµc:1ÛÝa~ã&“ù>³»w¨çs¢ñêhÁWŸ}Ì'úˆo>û‚³£×,ϰ¶e:ŠÌö·ö¸µ¿Ã[oÞfZ׌Ç5†DìZ¢ÎY¢ Œ©V€”ŽÂ*ò}œ©ò™!(µ¶&&ML Ÿ`¹ø¾Ó´I“ÆÇä Ä›Š( ´N¨Ø’bQ¼Ï*«±É£=}“€oèBƒGQg\œŸ3®gܺ÷6£ù]êÙM&“ÍïþûÿË—}Ä—Ÿ|Àâä5“±âg¿¸Ã[oßáà›tÝ1ß~ó)ß}û£zÆÞÁ-ööï0žìàê)mJk±•ø=uш\²¶Œ¨Py`4;ºÐÒ,.úAj+ çzªgèÏœ”Ä*íª^’"­n p°ªü Q{½ Tø@ÛyÎŽOhÎ/¸89ãûïîóûü-ß~õ5oß}“ÿöÿ7þöü{ÜX¼Ü|Šììî +ÇEÛ°8;ã|¹ #âÆ5³ÝvwçŒ]ÙÃK¥$²ø¸³iÒzÝt÷º³yÓ÷bÛ¹^ê£|å†)%a@äd/c Ìf³Þ“éèè¥u]÷¬+c MÓ°\.{Éàpðx+iœú13îMÆÓ6ÙÕu×I«õ¶ï:°ðÊisLׂ#Ûü<6§Ä½×BZ}¿I ¥E–2°rtr²nö—k¨¦iÖ°£È`¢øÌõéÆJÉ~” XC¼W^¤ëÉvC{ 02øŒ¹–S\éßTÖÕ¦"Aš{Ïññ1ÞûÞ«dÜö c[×±Sþ½†è›‰‰Ãaæ1®|ì5Û®õͺní¬ ù7@¯®ë¸8«ÃÃW™ Ùõ0]×a­¡®Ç Ij Ͳ‘é/_ðÁðþûïóâÅ F£ 7nÜ`oOÂFÓþžï¼4†F)©¯sʶDø¸! !Èð5'é”×Ýv-‹Å‚““3ÛjÑ,iÛV«3k­Y[C±ÔëÀU¿î)mZ™þoT–äa­2(`I¶®Ð °k2ÂážZ$K>ås©ëzÉ´Â`ƒÁRJŠb©×ÜOèÿÏŸËXW}ß꣤A*¸Êv2*³8弆–ÞHÎÖk Æ«ž×fzýæ}^W¾¶Îj¬ŠÁ¨¬l0€Gå08ÚGÚ ±­Áç÷7Éi»@c[”JĨ{_N1ÏO[˜—=´”õöÞß«ŒÏ·aÛR×±¯®cdýˆvHõo¨ HkûÜU æ€8¼Ç½÷—€¯a ±éá½y­lÚ49T«»AeÇP"8 T6wKÊô€pÚðš ‘œ¦J\f5剂Šýã §]åkݲ٠ õZͰ³[žÅz¡—®4jÜ\¸—LꇚËXXù¢ ’q`Çød8\*Ÿqÿûç|ÿøž¼fÙAÛ)ÐcÐŽìÊèoÀðBIC+’Û\,*-r•@ÊIk…€WŸòxi» ]žhë¤úøq™Â´kÑ»)Å5z誾٤n¯`Ÿ½©¬¨¹òDÍ£BD§€Q §ÄŒÝèHíÄHi%Zf“Ä K‚äQÑ‹LÇFµÍ—&³kX™\ª(Í•¦DÚ¦>Ú:&’ Æ•(_URUä¡FV÷ *%ÝN¾_gæWÙð£JØ€¶Îú[#€bˆ‰¨V¯ŸÂ¢ÈlÄáZë)þùý迊 ׆D”ä¬$FÉ“…¢•F[™:Y[¡•VZf)ÄmØhè 1ƒiV 1ÇpŒÓÄè ±%Ñõr?Œ¬=­S¾WW…\"fsqEUYRÌ¿Ûä YÅ|PF1/zxµ’[kÐ.ëÏ­\;1¹WX#r I¦0ëæ¦±¼wåÌ2 ®ôUÀÇ j)ô¯CkDú§ Ý%­wN7S ö’„ѱ¿·äõd3Ñ’¢Ml–='¥€Î¾X½×ÔkSèê†):’E™š‹.Ì.Ñí’ê=ÜÞmf·ßf²=™3Ú½ÍÑá9_|}ŸGß<âñýG¼xò˜“ã—´Ý]:£Ëò¿Ét‚ò†èÍy Õˆe±Ly’b59":µ(k²Ô7ö)[ Ð©B!²i™¬IèÔ“abŒ,›Žº²`-Áwt¡Å"Þ^IEbR\x…íãjÂÅ¢eѵÌdž³£—èèÑñZvfSîݻû¿úùö=îþâ—ìÞ»K=Ý….røü~¸Ï—_|ÅgŸ}ÎÓÇO$è"vÌvköæ3nìUÜ<¨¸ukÊù7Ÿ}䔺Ú$¢—ÃÕÙª÷‹ˆIÌ@E.(*‡h-ï_ðà¯ðA±h!A¢¢‹ bP$ŒYy"ZGœ†±«HQ†ÚBJ´^šãFLf·¸yp›ùÝ{LnQïÞ$é ß}uŸ~ÿ>Ÿþñ}šÃ׌Mâgoßâö;ìݘ1Ûãf]”‚ÐX^pvzÌÑ·ÆcÐõ˜ùw°“ õήª£'´ ) c®ªkF•¡=_b‹5VÖ}e3Û3J¿œ FIU}QY&Þ{LÛÒÓ3±ªªºÔ|ôpJÄ"·*2ò$)½ÍÅ‚ÅùG¯9><äã?âOÿúG‚÷üÇÿí?ñþÃ`g>£«4TšQU3qÎqvqÎÅÙ>Ï.oÜdgg‡ÊZtÌÆØA|°`œë™PW™ŽÿXQ|d[ݳÙè e[…9UíŽ{?®ÝlØì½çää„ÓÓSf³;;;}³¼\ŠïM1 ^÷Mo‹M äO6¸MÆÎUA>Û X½e0¹YÎn“°©¯ëUl‰uŸ”«½<~¬‘)RŠóóó5¿ \àœÃ/NOO%ÍÌ{to‚,/aˆ¨Û•’ EúeMB_Ê—z-߆ FBï÷º±F ÐºïЊuµ\.yñâEÏRiªë×dUU½G i»çT_û^eññåX›æúD„­àBy_®d‡­1ãµ íU_W%õ×Öwòòù‹,õkû÷.ƈAÖH5‡2V¬$rŸðôés>ùôSÞÿãyúô)u]s÷î½ÞÛŽÌ6o‹>âôô”‹¥H‘C*ÞDŽÊÕ×8Ò4âñVØ|kŒGRï‹V Ñe°Y…q5®´®ËlדٔFÿÝÔ÷>C“õõ=9]b>¯åyF³Ç ¼¹.Ö¬Ôlþ±ÆˆìûÈ2„OÂûó]NIEþîDH‰ÎG:£ˆÑdïßYXm"/L>ääAÝï‡r)"1x‚Þ8Oú!…¼¿Ò«+Áëô#æüC‹£mÄ¿xÂz?2<Ÿ¶-¶Méæï ­gwæ´ä«ØÆÛLú¯ò”ûI_þÅC¸7ó§ßoº®]Ão†ØËÐ"J±Õh‡Ó€mf^WÜÒ–Íbuõ6*°Z±—6XRˆúµ´ÃU|©î -×иáóÃ\c¼¨.%¤l¢EîuÝc už…UfŒ!jG«´üÝE^]ðèésüðœžrx|­&tI¶"U’È7™FEˆ™í“4©l¬ƒëbê}uÈ7DL*1áÝúæÌ:R_Ú(·OûEby)»îuºeã\•JQTiùšÍ OŒ‰:bèpÖàŒÂY…Ó«m°Ä„Wé­…édµF¥„I2ãpF¶0Ìrüu)¶ŠäµEŸ'J‘L–gé$‡¢‰‹É …UQ/Yfh­ÆXN ý¶2š;™††@U•¸Oa\é ¢ºüºB…¤’¼w!Ê”'Ƹz@Txûb.±>I)ëÍ–I¸vâ‰d*”²XãHQÕúm“"/äêÀ-׬ibZS—%p"qˆa¿:Üb/5P”Lj8QŽƒïƒà#Ú€µ",tocXÉ­ö–69QI’6S, NñîV•Òi]ò§bOM/šû"+²V“0D{pª÷ÅP©§—#G£Ì¥HÐ1O©²œ°gáEaá•Év"_•ô*y[’GLØ$±å1€ ßB¬AIj³b½‹™°só÷~Éî­»x]qzÑðñ_òèÁ#îù /Ÿ>cytB»<#¥ÆFŒéÐFÑI5]v¥,MèðËŽ ÇÛÌvÍa1y‘×*E@$ *)ŒuXŠa«Âµ…”‰}J%¹‡Œ¦ó0žNú‚1ÚÚUècÚ«É„ŽŠÐyT5"t4>ÒQɇLê û{»¼ýó·ø«ßü%ï½÷ î½õ&»·nb&3NÏ<øó7üù£O¹ÿÍ×Èz{šã&>°’Ç­ä–«%†é'± .ÙÁ_ö}[“ÿ¥k×Ò0ÕoÛsØÄO†{¯÷§íVö×Ufî›gdÁjzxT[%÷—¼¹7 Wù˜o“õ÷j[šÏr˜•1FzOA¿RŽ-—$ÑΊYkÞPMe±“ÈÑŠ'} \1[â!Õ{YÛGp;8RfÏd]gÌ©«E6hˇ±—Òá2P›ñÖê2²§égŠ´«ë\,*|šñòpÁÃÇOùþÑS?ÉÑé‚ v|@ëCikU–W)EðM+QÈ©ø¨ìeå„EÒeÖ”,*Fñ•RIó,«ÚDÊûçïÂc¿ñ•s9…¤øŠ¨âµT¢VÕšämEU•Dªºž©¤)‘É:<•´PD$ :¥pV\«…!%ÓD3šÊˆîZ…ˆÕšª¶Y¢ò{­V¾Ù—)ÅÐ#»½®x¸Ý`Ê€ËR@1m§O‰:ûéd›6 µ¤wÄL߇@³ìÄ,Üg©§÷ŒFÛSœW€SŠ«{'FAÖ%m%dƒn)z­­ú”¼”•ÅŸKüäñ\ö;P¹áûH³26ŽRÄ«|êæ·hˆcK¯m*‰}_VV1¿/ôεék6£1ÅD] äø¹èNr†l¦,ŠOŒê¥’ÖX´uòÞg9d¯ýNl2È„Z!öÅ¿-öÌHqœ6ÈQ0B)óó@µ¤&­¹Ib¶VH3«g+šP¡¬åbB€´¡ ­ªíFÌÞã"Øhè°D=;&ÙÒh5:Éàô“½7Ø9¸Ít÷MâáÃGÜÿö;îý%ÏŸ<â铇t‹3œ8{Vc×ÜxŒ¯*N›ÀÂC°†fâh[¨¬ÁDPZ/!E‘R‘ÐÔãIïϽφ«ž˜„Þ­£gwZ3›íf_ñÜ0nLç>(NÏy*ÛỎn¹ÀÙK/NŽIA¤®!%´±´¾áðô WUÜ{ó.?ÿÅÛ¼ûÞ/¹÷Î]îÞ»Ëü`Ž;–Êò苯ù拯ùøÃ÷yúø!ÝÅo‰¶ã¼kñÎÛ%Gϼ^6¼89çö|—ù¸fb5·nîBòX©œfTpã1VRˆ,ÛåJ>“°°I‰¯œï >$–m¤ ufÿAÛŠy{×u=SHÁær¦SÄæó'e·ÖrÏ“ D •c<Ùa÷à&·ï½ÃüÎ[ÄÉn´ÃÉá!_~ò1Ÿ¼ÿ>¿ýŠóã#ªØ0Ûq°·Ãþ­1zÔ±hŽˆ^QŸkŒMŒ§S­¼¯¾Á¹ŠÉNÍ<|L¼yû€E8;_rtrÈéiÃyãiº€O ;Ýa42ßÝÇ'˜Lw˜Í÷0ÚróöÚv™Ù¢F9ÎûY…QŠ.KŠ7‡D"ÑxßæBJ†ÄE+T´Ð‚ ‘Øttç N^òèþCžþð˜þío¹}û6ÿùÿü?x÷/Þc¶7GWŽz2Æjêq-Q0 ºÎ3˜ŽÆXm$=1jüY‹Îiqz$Én1Kž‡’˜ë, ~L‚t•™êfÑYŠîMãö*\\\ôþóùœ:×+%,ÆÈl6c6›1E.“%ÔÁ«üþ-`Õùý˜læ§zUm\†àÆu¯m…ùfä6vØÚsáê&ÃÃb±àÕ+‘‡Ý sËYã½ïÓüÄœ]˜Ò©0¸‹÷Õ^Øî±÷ìÿÎJvÅSUQ¼J5*‰Ä]ÂN¶›ß³ÑP„,‚ª]×±»»Ër¹ì×[ixJjç°ß|”R—:Ým€åàºjmóU‹Ù+આ³¯Õ6@áµµ”À\ºpÝúÞ\gmÛö¦æÏž=Ëõ“0òR+£µ„C¹ZîGcéBäùóçÜ¿ÿ÷?øˆ/¿ü’årÉ;w¸ùË›R—”À)¥is½*Ãå…n´ÆØZÖšŠC®ìÁª×½Šc€e–ŸñêÕ+8;;£ÍM¸2g+ñ“ʵ Ë××û„O½¼>T½Da‚å^ÓXûÓ{&Éàp]§Ój*Ÿ§Aøµ¦¦(½jy¯cŒ´Ë•ÿl®r›8 I_‹¿j™2§¸UÓ÷“ý¯¶¬6˜X%¥MâÆzšÑë²Áž` bæ=­¬iR!Aä:|»4=ú…De.{ÉóÊÍŽQ=f°bZAÌ[æª{¡7@—°,…ÊÀ'8es?R£bŸº)Š$‘ k[ö¡efÎ¥dû{ßûØ«a 6 S¼ä‘­­éÃbŠ+¶PNNWƒ¡öph%qhë`eÈfÚN­¬Ð{7_>;õÚ`dër ?Ì÷ÃÍ¡ÏÐBh;—.ù}­õ)®±ècXÁJm©YJß6ö·oCÿͬ߬G¤wD60é{cösèdˆxA/ ùó€Nbâl²?MA$V)7›%EO­ ”JU¼w " •Td8±‹Ã⣘émó”ˆ1f‰Kñ,ÚˆQÎ)dÃ"cHŽh|z6DñZZ+ ådò¬+¡ð¶Êr±l8ê³x2÷BûL¹ÙYUÒ «Õ;®!Щ_ ¢zdéìUUÐ •I›Y%Z+bv¼.Ô¿!&ƒŸ åfI¤vÖjR' ¬^†U ëA©*MŒ(Y# e"¢´¦2ßv(Ba¿ŠLPBSd%ÈeX¥ŽFÒģʈV_ «§ª\^k(ʉ™"k3˜å´eÙtTõʨ·ëBðâ{¥ /¥ç«ðQ&ÂÌ(rºì!¥DbbGç%%Ñ9°Nõ’;¥rb—“÷"Å$R¿”°T`̦xõúuÌÊ 0ybÙ(3€·ò¨Ó ,1BNS)õ‘ÊýažÁ#áøeô;&“Á´rKJ¤¬§ªyHŒŽXg©œ•↜p–2dòB …sz-¤Ak©åšÙ‡«Ã³(-bÏl»’'¦.˽†”i‹·´6ëfí“Un åYkñXH ZŸ\ºÈ²dRˤ«õ]NÄ”¤Q}’d_Sxo€ŠPíÀh;¾›ÝÂÍïâf·±“ªñQUœ.yøè^<}ƃïðìñ^=}H»<&tXéñz¥ˆÊàÆÎž&.ºDp#Κu…UÓÚ84¤ÄÇ, Cż^¬¥÷ç“qÍ_ÿ坨›ï°··×S~s;¢éhÇù²Êw×ñìÙÜÿ–ÓÓSœ5ÔÆ’ZOžÅñ £Ê±·;cggÊ{ï½Ëwos÷­7yó­»Ü¾}ÀÍ›7 ÑóÕW_òç/¾äû¯ïóäÑ÷¾"ú–¶Ëlch¼'(Í2:8{yÂÓç'¨Î3ÒšIe0¦cT)fÓš½ýnìMØÝ™0r’žz°·Oeµ¤ &?`Ø€Õ–¨">ˆbÙæ©!†ÁÎ-­—É´u†ÚV}š¦%a²ŒN< rÑd-u1'4Z‡µ#&{ûìß}›[o¾ÅÞíÛØé>gâË/¾æ¿ý'¾ýìcš£—Ð.8˜nÞºÍxæ˜Î**ññçA™ “,Ú'–'¯ñeÉhŒ ¨èQÊPkCèê¶RÌæ5ídÌù²åô¼á¬mèXròò§ß}É«W¯°uÅd:£ªFüâÝ÷xãî[Ô£ ãéœz<¡®&èzL ÊT5 ¨ž¹Ã«â&ßM«àŽ•o_dÕ ÙèO»XÒ^,9{uÌÃûøógŸòý÷ßó·ówüìïðówÉxgJÔŠz:a¼»+)Ÿ¾åìì„óå¥ ®ªÄ[m2“&+ ~F põhDH<ÚU¹ ^¯M¬Ò(µ’j©~¿ÙðɵѶb÷’«ôãâ54 °éº+"„ÀÎÎóù¼—I³©µf>Ÿ3›ÍzfжB»x’u]wesv•A÷eß«½®®cb %Û¾¾É̹Š7¬7Y8×™Õ¯?¯”°Ás6jt½ÌêââS@£ú½iÎÏÏYf¶¥Uª$ì\JéTQ¬;T~ aìG4fMF´zž Ô€½WIº%däª?«t)ù-rŽÅÄ7¡Ë ••&’€uŽeNîìïßáã }u-4hM¶ô#€hÊýƶDÌuµ×ú5> $·‹>a®üüîtFUU9pÂö£q¥4Ú| ýPpÛa1ÊîB zÏéé)Ïž=åÕ‹8cñùúõÆãJ@dí,ÊX‚R´Ë†G?<á÷¿ÿW>üðCÚÖ3ßßçç#2FÞɇMprˆxY~ù±¶1ćï}wåà¡ØBô§UÆäìÄ8Lé2«$Ÿk› ÒŠö&"Ù×E÷Ó›2¹‰!Rº¼2„(“xïaŠaŠÒ¼’I¾ëÀH‚øé>ý iñ^1FõÚoPø—B7(¬²h-EBN Šª?Nèb@ô:nèGÓ¦ùÈÆ’‚ª¬-¨ÐBòÂÊH"¥«ê1 ‰4ªXzËé¢ãÁ£×|÷ýS?9æbÙ±\¶RP› eô*…1头<]WÏ­ !¬Ò`R6ŸVèÌüRý~&7¼…$æäÔ°ŠéÑÔcöbØ'~+ý +eö ^‘¥u”Ä4…E"…L‚ÏI‚™T‚°RJ¤˜p6Bò(¥±•ÂiVâ{e3óØ1:eI^‰aߣ;Yk1|Kev,ÞN>y²±C®÷RQ¨á¬l~m»š¬•çFLØJÀ—ßK¥EîU& º/P3€bD:˜Tn b@i°V–S#Ú È[|¤ÐP;Ù`|O– ):Ÿè¼ÈZd2dºm¡í:RL•“×¢¢\+²é»‚˜Dh5I0­Ü ¡ªªÄçJ—f¡4SQŠV£1Öt>ˆ‰ºÀÅ 1º"Ñ’’Á¸Š’È S侞–o3ëQ>Bt]$z¹î„)tžk­°NQ9a¯iÚŠ)³s6ËEêP<ÌBò$¯±V¤T hËý‘ýÁbž*Ålz^ f•2"¯¾S2½Îé—)Ëô cŒ$«?F/žöŒ²}a$Ë`šï/ÚŠ†^¦@®Ò„I¡Ë VVI X[gú}ê§è1&¢Q9w»¨ñ-Æó;Œ÷ß@oÂø€Ñü“ù-ªzÆóg/ùþþ~xø€'ðü‡8>:$´§´ík:‘ã­U=åìbIÀ‘’¥Y$.ZY—ÊV„¨±Æ¢¤ä%¥ñ!` x/ÏsT{àßÅùùy6ê‹÷IsÁ|ï€_ýò]~óWÍ|>çèðU¦r·m‹6ŠùdƲñt]`\9”1ìÎvh–K–Ëo¹8>fš4º‘$Ï‘QìíNøÕ_¾ÇÏÞý9oÿòöæLwwØßßcTU<ü˜¯>ýœÏ>ú˜GßÇéñsšÐ´¾#)Æp±ô´bé#£ñŒÙþŒ×¯Ž°ui–ÑCeY6ǘ.Ñ>oðO™Ž\f;¬QLG5;»fÌwfܼy“Ú x0©ºkYCÓÆõŒ³³ F“š“Ósš|¸ëjLô­€:Q‡Ž c ª-]h©j1¹oc#q÷ãjD5óƒ7Ø;¸Åü»ŒnPïíãÇcž>ÉG¿ý€Oÿô'~ó6-Ùiæ7v¹u0e2uh©jø6ØœÀªSBÅ(ìK­é‚‡€üþ¶–Q–9EI·îSH+UaFЉ5„Šͬf1ó\ìï±Xž³l_Ѷ>ùŽï>‚¤kêéû7ï²óóƒÛìÍo2šìr°s€M„jò~UÕ.-TÖÈ^©IàíBiULè&±8:eqÑpxxÄ'~Â_|Á|¾Ãÿþ_þ/~õ«_RÕš`Ë%“Ù”ÉhŠöŠÓóSλcšnɨª™Nv¨ë1“É­$P§œ¨Y×XSÉf¡#=’¡™î dFbo úbW+ÓöËÙªWEpfÀ–AÞ¶æÝX››ÈìÅiíÊ(5ïaY,9qìu=&ÆÈÉÉ ççç´mK]×ììHŠâ°€¦s ÞâÿyUñ*c±´1Ök:—c¾é t•„p[ѽMJ0lö #V¸®¥m…5ë‰TÚ ÃϾÈOF† ÷V…tÈFê@ñ%*òyÄ´®"¡xñêÓSñÀÒZS9ƒ3Köª "gÒZÓù@ëc? #Igs®ê½lÄK³Î¬—âšt*iEÒï%íY{R¹v+ñ$$MzQ]HU¬–{ΚÌ2Ž ÑbóóÎF· "Ú%T2„ä±VÓ¶žÊˆçkÈÀhë;BòÔµ#†N†£%´3`D‘V¼×@Å£LÚðüŒ}ãUÌufµm‹Í÷D.š–ó‹%÷ïßçóÏ?çåËç‰Ót6foo[·nqãÆ îÞ½Ëd<ãw~Îx<ÎòðDDª$’¯–ˆ!È×S6iÛðüÙž¿xÁr¹Ä˜„VÂú1NüÐ’[°Ö±h–€áɳg|øá‡|ðÇxùò%»»»Ü»wÑh„J™¥‘‡„Š2*)W™ ’úDúv–¸Æ•z%Ë/žszzÆëׯ999¡íºÉ@)ÙX±*tR8mˆ| ˆ_©ødðT‹¯¤sNÿJêoƒéSÁË}m÷œVºgªuA<´¼_ îÑVêp2ØûÁH:Úìw2Ûj“Ý’-æúÁm$§^kÖöKR¹Á õe©—Ö©^ ´ÚÏâ%Ÿ+ýýXÌØ y_­S~’¡÷,î­m¢ôœ1êªê{Ñâ•lô0ŒLúûa¢«ü­Q&÷â±€>fäERÒýcêžð‘÷û¬´ ì3H‚s “3G øÍÊ7«*!(Zö ŸñäÂH(œÖغÂÚ„²r„icdÑyBRèBò‰”ºp”•PFBŸÔL¬$ õWðIü…s¢O‹µÖ²\.9íÜZ‹Òô ÍÐC› \b{gIe'd²2É^b§ˆŸxê¥ÍË®Ël×4`,%Bðýþgú=Rõ¶.+Ð(l•Ø–Ú a6=­V*мogp9ªA`Ÿ’þ·Ø4µÞË Å ÃNÂ)Dyƒ"3 3Ÿeº1ß„1†KlÛÖ{,ùæTy"£ôzZIŸ€7D^ãÊóFçÈK¹ ™Ñ2&#À)€I’¾R’ÍMiÕÇ;þ˜AÚ&º©S¦Y¯Ñ© ò{:åÚDS­â$£Òø.2iêÊ‘têãÙ•ÆÒGT5%é‡ÇK¾~ô˜‡_ñìÕ1‡‡çøh !cD½Å3á*óϡƸ`ºøñä‰Yț˪\ËГ.ÓÜp)Ò Ï¬6=h%){8ÈÔR]|²\T̵ û)R93ðø‘Â\“ú^‘ÙTyC2Ù¼ÚfpL`г®œ•ŸsÙÐ=¥KJTùëåú Þ?“1¼á$fVW½q¶Î!DiÖ²÷–H~D˜²iã ]ýd¢l^‰ˆË€XÈ)ˆ… °™êB(–òD Þ'–m‹ï$…,E• ß´ØN^«5"5«,k¾W}¢`*Y‚±ŸNZ•ÁQ#¬)…L<•2d%ð‚û¸=)z3h,ÚЛ»÷ÈÐTqpß— Èò×u–ÝiRR´9I&„.S: Ö*«ÐF$}Ú€2⧦Lf„ym¤ªF=cJ)IZJI€ðÊ®=ôíJ½d4F)€B„rò`f(:<®^›Iœ ´É ~PügSÌœ8¨ôúþ‘Óûä³”åŽRlXbÞçBè0ºÓûˆÉ±xcñ–qÄäî_av¬Íï0šÝÁÎöÑvJÄòÁŸ>äуÜÿúK^>}ÌòôˆnqNh.q‰µõx„±#.-í²¥‰–6YÎ.”Ó…2kF2 Í1‘!ˆLN.Ç z}ƒv,“çû£JÅô4xÏh4Ak팹h–Œê JW4Ý1u mëyñä)øžÏ?ÿ˜Åù3g°ÆaM`ÿ`Î;?û¿øõ/yë{Ìï°cŸéÎ ˆœòùw÷ùó'Ÿñðë¯9{}D×-éÂ’€Ï©‰–¤4!9º˜Xª‰Ãf,„¥ ཾ‹è‰É‰oq$=¡q^I’¥Š‘“ÓŽãh›úÉõƒÃlª.MèÁ¬b>›ÚŽÚX¬6L§ÂÔOÇrØ…vCÂØJÌÛ[OJ ]©F#´q±8#¢˜îî`ìcknܼÇΛ¸Ñ£ù>õÎ.KÏ—Ÿü‰ýÝïxöçï'ܘ(æûÌÆšI­˜ŒJwL'5ÖéYðòáÇ|óÙûx,“éœÉtŸÝÝönqëî›ÌoÜd¶³Ïd¶C5ªqÖa‘ ­˜·F`E%2ô³—¯h/–|óçoù×?þ‰Ó³s~ýWÁßüíßpóæ£YEÛ6,çâ[•jÍË‹Ž×G¯HºÃÓÝ;Ó]i º:e°=7XYº ’™9«Eð¯û ‰˜Ùµr/…>eV6u’O‘ÂÜ6ÞC€¦d—|X3„8=9ÉÒÇŽétÊ|>g4Ѷ~-}pooétJ]×=Èì½§®ëKþ2×y¸ ë©ðÇ~fóû¯’l]ç r‰þåß±ÝßHý¤Ç”Á_Ê E?#ÜÚ†Õîî.MÓädà J™ •ßç® ’²;ðZ…jÅ€×ÅHåêJêÖ ¡Í„¤ús-ÄHBaÁT•Èxeö½’æ¤UPá!Í„•RŒ?!¦nDŠžÊ:¬–ÆcTU2Ý ©Ø…¨«±`­ÏM/[%7«u¡ÒÁ±ËL< Ñ €áÿ}çÊs/ÀÕªiOüùÏ_qzqγç¯ù§þ-Ÿ}öGG¯ÙÛÛÃÅóçÏÇìììP×5“ÉŒ[·nñw÷÷ü—ÿü_¹yó&m³ÌÍ£ïÁP¨¾?ðúìü„çÏŸóêÕ yÞV–ž6Àh l:HÊç)ª4¶ª Iц„Ïxy|ÎãgOøîÑ3îÿœWǧ,;EçÆÑz=fzHkߤóÅúÊdiâýÈp½±”žY¼ôÆTR«•ÜÐÝû(]Të¾*ë~‹ùcIŒK)ƒSFõ^G%ÚÔ:™´(|NËé 1Jº]ŠbΞͷ‚J+ÜÿGÛ{6É‘¤×š‹©JÝj¦{†É¥ÙîþþÖûemÍVÐÖìÞå]ªáPŒèéžhhPU@©¡Ü}?¼î‘‘…f¸kÛc44ˆFUfV„‡ûyÏyŽQ¤Š„>ãì}ŸsGyXåzJr2)²“ŒJÞ'Z6. šú‚—D\l Œí… ©DÖ&Z|ãTX^G¬ÕQ2mw©AÎu"X¹V>±à\ÕO} n¬z(ŒrúVÚ2}ñ*n„”xRìÞÐxŒwNyá`iE‹Å¹.Q¨¼¡VÔhŸÑÞ]¦[·iôŒrvƒéÎM¶vnQ”;\,¾þí×|ÿý÷<ýî;ÎÞszü’jy¾&3¼P˜Ì°l¤Õ•²Œ2ꮥ t‰ ò9(“£t¶f9y‡k2cЬ¤!NxÚ .ÙÅü²ßôظyíœãùÓg<þî!OþÀçŸ}ÊÇŸ}ÊÍ[üÉÏÿ’ÑxŠÊ2ž?{Å/û¿sþöŒãÃC^?{Æâì„fqÆÞtÂÁö“güè‹ÏùñO¾àÁDZó³í-ÆeÞ³z;çåó'|ûõW<ýá!§o©ª%mSÑt-:/hœ§XÕðº¡íÀipu‹Î˺"•r]Ôëµ×·RB`â†_iYEð>›‡ods¼ÃÓðôíœé´Â­ZŒ‡›Û»U³œ_H´!³ŒF%e™SŽr&¥#Ïn>›N)M˼º¤X¶Œò)Ó²¤™íì²}û“ýØÉŒ`2Ú~ÿí÷üú_ÿƒç?<¦ºx nÉþ–eogÌ´´”™g6±5.0ÊIåx¼ïÓ€g]Tà(Œq™6MòjbüY‘å#ÙÌ iºÀ²®qn)ë[p”¹ÆZEi3‰Údfƒ¯±;nXs;Ð8OÝ8N/矼åäì[¾¬pÊ0OAçL¦Ûܺó€½ý»ìݼËþÞ&[ûL&[`r‚ÊÐ&0¿¸àìä5íÙ ß~ù%?g²µÍÿðWÿŸ~þcn0šŽxñê9žŽÎÖdEŽžj*UsÖ]P…š°rXUBcq•ðÊœ«¤¯°ñ èÊÉ:.åPïÄ™bôXDqÎ{”Jûc ƒHÐq”ëÀ°Î¹ îH¤g>Ÿ³\\ L?‚Ú³ݺ¸˜³Z­(Š‚Ñh´!^%weQ}{âû¸-ïŠú ³Öþ8œï{!Ø×µº]7Ø|ŸuížucO6¬ÍÖjaŽr% ·æ·h#M›}¬u€/ðЬD£¸<;§Ìr¼îå¨3‰Àí¬ê†U]õ{ǵ iÖQÔ¡ ­Í'„„´&öf:¬©>:8h¿ŠÓ¡Ã¦èѶУ꺡Ì3•¼MW“eâ¨õM+Împ^¡ÈÐÆÊ¡×{‚×âFÖ‹âV:¯6öêëk^Ö'c¤¤A>ÿàGas´»>؇þ甸•:– ½}{¿üòŸùå/ɲjX®Z¼÷üèÓϸ¸Ø£i+À3þø<À{Ïùù9‡‡¯yõò“£c~úÅOØßÛí÷Ejˆ7ëøªf§§§¼==‰-ƒ]Zk%¦×z2­È‹­ ˺æ»oòo¿ú¾úê÷xïÙší°··Ç¸,{÷P:ÄÙGJo¼½“!_žÛ¡y:«äy!§sœ^œG‘í —,–Ë~­H—ÕúÑë$F¿ŽŸ%kƒå´!  Î z€ØÇJ)R¹NŠwyq†žYlÞ÷áý+׆޵ǪA{ú)Î÷¥5÷kÄq¼Ã’Jíë:5«¾¡ò¦ÒpzSüæŠÈµÞ—Øø~¯>“ëbþMÏ4¢ %Œ^c mt¿ ¹bë¯6X\ý{ï `‡-|×åþßâì›}p3r]«ßF=¯Ñ×ÂÍ>DñÖe¦Ø`r]õ@BT˰auSA¡Â@8Òb÷AäÁä`s|ÈPâÅ›s¾ùá%ß|÷˜WÇo©Ð&Æ ¬A™,nh6ß×ûòÐC1O~ø×¹³†b×µâò(7°_>÷ÔR£´Žî£´Îhäá‹’:f£‰|Å7pbiE{±xq´X§ùˆXe•8m‚“Ã½Š‚V‚ æ6…+ÉÀ—yñ"u^T*šQCÌ(÷­â–!Ö躮•÷fÖèøkä)%¶å Â{ŠØé~ó©"klÝì‘þ]O3˜vG r·Îëj.]b-EÝ\›š7c“£UdQ€Ò€±ÌÈ÷—j`‰èõdúAlO™+s¡Àë)ÿŸ‹k`NqÄpÂwjzGçš^ìMB&‚Ð7Úüº9tœ¡× y YÝ XòÀJ6óLGSšì ê®ãæÂ…§‚¸Ê"D_8]†¦ˆÑÊK<‡˜iÂÓvµL@}‡Q"li &$èmF¦hcßð(gÝ?½l ”ê›×ïÛô­2p âÖ ÂÈÑ lŒ®ù é¼A{K §n="ä;dÓ}Êí{d{w)vncF7ÈŠòrÁrüvÎáËÇ<~ü„'àõá!‹³7øf‰sK2Õ ².2¶A—äã-•£n uãpÁ³¨˜\XG*†¡±ñ£ŸøøT §-©!<=²,{@¿RŠÌZÊ¢  †Ë¦åäõO=&û‡d{ŸþË¿1_®Èó1uÕòwÿõÿa(t`’öö·¹{°Ç{·yð£OyðãsóÖÛ;»L&3ŒÒ,çs^<~Ê7¿ù o^¿æäÕ qÑ('ëZ¦P&£nU«é<Ô8êt¦iC@aqÁÑ4âKMrm[B`<‹ëÁëXÇ­!X±¿gç[Bçè‚¥ °X[e²q®\KQd„¬ ¨–®nióm–«Š‹JQU ºÐEȬé "py–±=)0aέ½-îß¹ËÁþ„éÖ7îÞe÷à£ímÊ­m.«–GOžñÝï¿çÉw9~þÕ:¶Ç[»»;9{Û3Æ…¦°žI‘atÍ’<Ëñ†µ{Ö(-¼‰Lšl»N¦•ÆdX Ú´É@É2 ½ð8eQ÷OÂ6¾‹‘¬x¢(˜– .nnmóñ­)«Ö±háäì‚¶m99yËüì”'g/øré°£]¶öîspçSîÝÿ1û7n1›m£µæüôŒ·G‡|ù«_ q|öÅ'üéÏ~ΧŸý˜l\R·-ËzAÕ¬ÒƒOê賌ºj©ªJœÑ™ÑÖ ¯ú¦¬®ëù‚€âÆ*Iª›ÍdÝU&>‹¢Cˉ EÜA‡CÃC‘Šƒ'yN»^d¸jßOÿôqÞ ¸¸¸àâ₺®™ŒK¶¶¶˜Íf„8;;ãââ¥@/Žy†UUÕ­<Ï)ËòƒüŽ?ä˜úOµi½ÇM¯ÞúNк^˜úãøZï䮋0nÄ>àþêƒgš5ºoUA†yžs~~#‚†ª®1y†ëÖ‡À¦iâµ·n¸MÏuü#50«èúìÑ7‹ÑA¢‘jP@"P®Ï+ÃåTîÁ¥Ã¨’ï=™fÌ&S¶··—#ªªBùÀÛÓ7h„Ï$q9KÛ´x9–¶s“÷MhÞ{򮁦e'NǸµJ"Ú¢-rUY·ÄlˆUaƒåù¾k®?èµ-u³âèøû·ËjµFœ5ܺÃ7ØÝÛf21•(¥xûö-/^¼àüü‚ÙlÆÛ·g,—¿¦m*2kÁ7ý¡>}O9cI¼:::ââò žÓ:ê=X‘—#‰Ï´Ž‹Å9ÿøO¿à¿ø˺a4±··ÇÖl‡àu]£ÂsH™·+×~Š¥ýà°aÔá´ÖMÇ|µäüüœããc^¿~Ír¹ŒûÝ;×4û*‡L"> ˜~ÃÍ—D¢^¸²ºâ,‰š ‘K]#@×ÅuóÙp_¾núv±ñׇ.îi6ÝRC¶ëÿ—Þ1j¼L}u©Ô†ñ:5“DŸA«`‚×GöÑûÊ(®¾‘ôYš÷rüÂ`0½†Lâ@ߨ 6*šTˆñÎÏé*Å®mzÃF¸â¤ôë÷=*¬E$šÉ`QÇô@âózgi¢í`Yµø.Ð4ÐS?I éâ¯öJÓ«ß8 ¥WÚ¶u»!)½.q’{¸“óØàL?<»çÆnè*WŸ#Þ…kaæé^ºGÓº±ñ}"§.‰Òm»vŽ%ñW_iŠþýá½Ô»ä)²«Îìáý蜋%oïò¯®FÓ×Z75‹³ÜÞ17%A- 9W¬u‰VÀ~Èâ}¤søÍRKÇ»ì‚á´Ä_Qµ‡Êöõ­0jñ¹!ćAÜ*¶¾¥ªà|ªwWqÊ”"vJA0*fXs¬) ù„e«xyrÁáÉ¿ùÝ÷½9ãô|ë²x‚‡®óäV¿³¸xé‚úcÁ«öç êþàÆýtɬÕy¤0M={°dHàvô÷Ñ¿èö¨šDÈTè¢P2yÔ&N°”d‘$V‹ý4—š@-FÇv?z««‰î¡ÌKÇUÏjÈ2-J­•ë¡s­Véµ›5¤®p„>Q-_?S뢡o÷Š[>ŒŽY•¾wz)íéºèìêcŒr0ñ=ïÉÇ)eüÌÙœÍ(‰×9hT\§ö:¿îDl IDAT?+”¼÷¢ÌÅ12ÈrFéµéx?EQˬ'X!5v¤–H­eúêÃ0âfmi?‰òò¹†ÈÐZA í¯¸®EÅ?ù~>6E×–ò°¹W:µ8‚Žœ«d-¦¿-cž>ÎðÑ}§eÓp1w®âï×¾O`J¹çs›ÅbJ„-Ù´÷£(2qÕù.: Õˆç#¤]®qPÄb‹øùöÇñÁÒP¯‚|K¥ ÚX‚2¸NѵBNP3ò顨G÷QÓ=ÔÖ Š›Œöo0šÞ$3Ûœ]òäñc~øî{ýðã×Tós”«q«9®[¡B‡.YaQÆà 4As9oé‚Löç‹“eã-l>¦vž¦N‘'ÕÛĵ6âPÔš`|Œ@+\'B•Ž£ ¾‡¥ Â)ô¡ÁCnsnì0ŸÏÙÚ»AÐpv>ç·¿ý‚Æ*Ëòü’Oöoà›šÐÖŒGÛ{#îìñégxðéGì°µ½KY–”£Œ¶YñìÙ žþðˆGß|ÇÑóçÔ‹9ÁwXkh¼ãbqAåj‚Ñ´9UÒz„µ†`l,.ð 2ê¶A-î¬Ð1žŽ(òœ?þ˜Çž÷L7í Ël¸ïºŽ¬µ4MÓ3…Œ1(;»@í<™Î©ãÍå×´—4õjNè¡u䙡´ßyº¦Ö±7q±T\v†ï~Ä/>£ÜÞFO&èbÌÑñ9¿ýÿ×ÿàÑ÷èaŒ'Š ·ïl1-”0®”“µÔ‚ d£œ,FŸïÁ·‹µ²f¢—ó9u¶ò@ìyŠ!(\ëÖÓN×bCG‘ë()¬mPºC©E…k;9»Nø+¶@“A—E—’¡´9£Ò²Uæ(3æÞÎ6ÓQɲ^1¯WÌ—-_½aåsΗàϨWÇ,Î~uNsYñè»ïùöÛß³wÿ&?ù³¿àOþäO™mí`Š’¼£sÇ|~Ád4í£¯%%!@Þ™Ãv˜Üaò€2õ­k˜&²ytF ,Y@2X0kÜ‚FÉaÛÂȇˆRV„a58ÅèõþE‡µc-Eµ‡0™’G*²®æó9Y–±¿·ÇÞÞN¿q‚Ú·¶¶ØÚÚê7¨éúNƒ cLßô>éC­jë9ó”+·)…ä ò òõA¡ëC^êZØÌû÷Œ×ímUxöÞLJ8>aVh›õñ @‡uÛ>à»–2 X«ÕŠÝ7ã^1"'f"NÏòÓÎûÞ5®•´Ò7§Š®~_—š|íQòýt|þ¦eìÆøx|dsjò,ØœÝÝ}>ûìö÷÷988àέÛx/mxE‘Q-–\ž_ðêù+Tž³¬Ê²bÂjµ’ˆd×áºß5±0Gö e1ŽÂŸ‘VâÈÞQ¤2q‚zúQ4kÛˆ ¬3‡ê(Ö)„ äÚ¼'·–ÉdB9žòàþ]þú¯ÿš¿ú«¿^‹ X“qvþ†¿û»¿ãW¿ú g§oQÁ³=›Èó1xTh1Òî£Ã'‹kBÓÖÌçs^>Aݬ$âéÖE>Æd„Сm†Ñï_þîwüÝßÿ?–ÝÞMv÷÷ÅA´¬zv«íàCvLŠÿ§}”1Q¤2²¹tA¦ÀÖZ‰ö4-ËjÅËWGœ‹ ¾ŒŽ+›å}D9•Õ¤ë0Ex„EìÖnút.ñëèS/HEfìzcUï¼J{áÜ$ǦÃÄ]Øy·Ø^"Z>ÆÊ‡e_>¹É}DÝ6+4z¿¥ºF#åúÙwÖŠÁ¹$Ä¤ÌÆ:¡6å¡~@Þ³öÖ̽ á):zÕ@œLg¶«‘´¾´I ÷Ûá5ü*D])Eçš^4’u9 Éí£{ç›°ål├óLäoµgÚže±ëÈ(T*Ç.êòÔ¨A˽ ¤J|c…רž7tš.~×áŒÆ[ÑrŸ§èÐÌ¥( Š\ÚÄUïv¶a4+ô‚¨C9¯ †%­­©4bݨœÅû¯îüÇŸßpI˜z'Å6°²ø³LV?|q ­¡ë"'LºnÍ€LñÅ¡h˜REJ¥×Þ];ÜÙhº4ëÏýÝÝp`¥¿ŸšA•Z3ÁÖ„Nó09Çš¯|]ƒpŠÅ.{Ý »NÉ¿î÷Ãläuí9×E¯³Éh‚rÝ„l¸ét–-ÒiéJP>V)BRYtAÀ²êg<=<ãë‡/xôô5o/WÔm@錢ȣh·æ]}Wg×E¯6¼¯ýe¨Ð_ˣ迾Z36DÀÐGÒtö$µN­Î-iõÓš«tdV!¿—è_½ØzlR„Ï*bìNtežc4=Ü=ø.Ö³*`»íã”0ºmr›ïõs"\O „M¥­A+‰ÆÓz¬m‹¯°ãèŸ1Qõ/JÖVfeVT¬guqƒ¹i¯÷€ì½'´rC¶1îm äyÖL|xŒ b›ÔàœØ¨e×\¹ßÂF$ÖÙZ¾_¬µ˜è¶Jy÷¡SBTuÖµÕʯ)‰ §0h?Y3'Ñ–*ï½Ãy9ìª(Ή¸µ¶´jµÙFêàUo²¼_7(¢¢è%_Lðº!Сl6à,¬Û!ÓóR6Â&µËaÑ©h´±/9û'(A^Zg}$±!(á¿…èJ#nšo¡RSˆÉqÁд:‚üK”Ý!`F·˜Þø˜ÖlÓÚ ¾œ¢Ê)Œ¶ðjBÛ~ûß~ý=ß|ý;Ž^Ó,Ïi—sšå9¸ŠQf°¹6jϼj©]Mã=Ï@oá¼¢(FÌv¶Èò‹ª¦iV:šLÖâDб*q!v!àxÖ?àzEflB`”ÄÉœo#U6&ùx™ÙdŠ ßudxnOÇœ¼:b6*™ÝÜáþGw¹óé-î}r[;ììí1M¤)éðù3ž>|Ä“‡ßóêù NN%‹j.¡\š/ªš¶ëйÃd#|ù‹€ÁBиè ,ò¼o mÛÈñètííï‹x¶¿»Ëd¶Ý¯·mëX,lmm±\.9>>¦v6/(âs¦i:2›Å–§Ž¶«é\ƒ÷R)_¹šlTb¬@}µè(Ømspc÷oóÓ?ý‚»Ÿ|D9‘O ì¸dÑ´<}ø„ßüò7<ýö‡/Y­Vr¡â´ZÑƱ3)Ø™Ž˜Œ œ6ò: ŒËœºm16ÇdÄrGVmCçœ*iƒ£i‰ ðÎÈsÝÅMGp9¸YÍ ÌÀfÇëñ]‹sü»kÀyòÉ„UÕR5Ž€¦ÍO¶(Š Vg”º È …,…™±½•±³_l1Ý¿Ç|¨å /~øž_ÿË/9üáMhñê¿ugœ¿}Á{÷8¸y—éÖÖæ¸àñuÒŠY9fRNÑÞÐ.;º&D¶¯\`×ëâ!3¶ø†Tü¡P.à¢û×›@§½¸•Â#uÜ)¯Ä ìã³)„˜Á&ôÓÜáä1¹Òæo>ŸszzJUUŒÇcvww™L&(%vvvFÓˆcC8Xc‰…6ëçKjNÿ³Üª«Nòÿ÷®µ1™úÃm]ïK\/®¥!ÍU†Ö;U}=¢^a˜¾3D@!Á©­×ÈbD¿þjµBkÍh4¢(ЍŸ\±IdMNæ´wì÷Á À»¿WFõF uè¬èÝ÷AÅöð^U œ´yªOR‘I¤´™LG”eÉt:å“O>âî;|ñÅ|þùçc8<<äøÕ1ÏŸ¾àôíÿð÷ϲqxSpóö}v÷÷™_.EïèZV‹«Å9Æ*¦ã± ð0”¥¸wvvØÚžR–¹¨£à ŠL÷±DHIH?‘`¯w¥¬±EQ ”âÆ}þæoþ†o¾ùF¢·[[|öÙgüÅ_üœÑhDU¯(‹gçoøÝï~Çù/ÿ…/^ËÝ»÷ùÉO~Âç?ú”¼°4M½1¸º®999áè舺Zö0d9_GgFž3MY-ŽNŽù§ú'þþŸþ™åªfww—=¶¶¶8¿”n2Ê¢@šH•R½«?hÚ5:"¥kzÎUtr,—KŽ^½æèø Goß²jê8ÈÛ~Šƒc°o„+î'·±g|'*q& XVõôõžqø³JŒÕ¡ÄÆæ@)CêZOç]Ï*ö~½×] Xkl}{÷þ–IMøƒB÷‡œ¢NȄỉg™aLr(j¥aˆQk. ’ÖL=¨ —uáJkªÚL)Ô{Åû«Ñ¶„¸~½´w…ú8èUW[Ùà©^u©~¬7Sˆz:TпV…6šÌ˜;W}\´ó–¶“gvú[ïq¨¸70]ÓëÕ­"×K‰hoU&DÀ<[yßÑE: IÆë(F%‰±qù uôçøŽ)¼/qÌöמ2=ø^¸NRXáC\W´•‹ˆÂQzݰêPd*Cºˆ‰°xWo}<4‰¹ˆÊ | ]w)vîœÃ… êÇDÁ)E¾}4'(,¦ç+¶­Dwuçc$>Öœh ­÷±Œ¢uxÁç蛉 "|ìÑ7  ÚÃ+ ¿J«AÞ5@H&AØÞS/|•­u½Ê§ûºÍÿÎÀ÷1QÁêm™f-‰Çh¡Wë .Ê'•§BXu²’Eíxúüˆ¯xÉ£g'œœ.Y4 ìUR‡Ap«Ö•ßWÞßP ºN ¼ J¾ê*nÌÌà#PW|kég¤”í':^Œ&9]ú @t QeulšÔ©-0'uŒZ#WfÄ’¸)Ò~á¢Hèd¦ƒÔ•jÙ$é ö,7Œr‹¢C¢&"<5’µN#‚È(Ïz÷Z¿Ø^£R'˜Þǧ:ÑM…Çô7üº 4¨µø’ë¢×ù¾6¸q~Ìóø³Õ2Mö5>xÐ>:î²x½M–Ùž=.šòy*R±ÁÚ%í ̺²W´Õ:šGúŒðâ>sà”ŠÍZÛ¹ qš¥B[ãä/V~º4>Úˆk¦É÷Iñó½°µÞ|Clæ7}®Ú¬—²2‘¯¥!HóǼѰ¹$Ú7áq ÉiY>‰Ë¥U,ã:©=ÐCøfm±¢•dÇ]·¢ÜÚ}¯w@;”š  µÊh‚¥S#T¾KVÞ"ŸÝ¥ØºÝÆN÷©[Mã4&+ÑŘ˳†ï¿yț㷼zvÈÑëC^¿>¤®.P®Â»ŠÌ8Š‘Æ{¹VmÇù¼æèlÉÙ¼eÕ|0döœ¶óìíísóÖfÙˆUÕÐ(Š¢?$'Ø­K¼…È·sJbeV‹Uy%M[J ÝV‹ó¨êZ¼Š‚ºÍ£¼Æ·«-™Õ„ªÂ55……p]ËÇ·wøÑ?åÞÇ÷¹yÿÅΔÙÍ=ti)Ê’Â䜾zÓ‡ßóû/ËëÏèÚš¦ZBKåZ|è¬fÙ4\.ÚŠr‹ñx¯ ”oðNÏ\'#б„A,×Vkt–3*J4ž»·osïö-~þ³ŸŠK6¶J5MFSŽ Š‘f¹\±wc›;÷n³X.yôð1?<~$‚šQ¨¦&º^ᛊ<ÏA‰ hq¾Á‹UEÇ8˹µ·ËŸýˆ?û”OúSF[cÊɘ½{£xþô_}ù%_ýúw¼~ú’jYÓužùªÆ+(Æ#–ó/NŽÉµf\ä”V1*r¦£œqiÙÞšq°¿Çh\`­¦È Y®(ŒlÞ¼óøVª<œtX\U3Xp]%׿6äZ‘çP汄B+ê¦Bù–àZJÕ`¼®q¦æììyž1*'(Ñv‹Ëm;¥,fh¯!dÌkCë *ŸbGûìníâ³ ‹–½Ý=ÎÞžòïÿò÷<ýæwLmàüùY®hrËYõŠïõ-¿þÇšl4åæÁ=önÜf4ÚfçÆ“é7î’™½¸á ØL®ƒŠ*Ñͪ©éÚÐóë<±Ì$µP©uµ¶î:‚é¨byïlÒ*Úyƒ[¬Xê1è ÷¢4u|‹a `]׬V«žŸ³³³³á¼¼<§ª„Á1›ÍØÚÚ¢,KºNZíÒáuè /ÏôÇÁû„£á~И¢ÿAÇ–ºÂ˜ñø×íK¯c_]ÇKý£Aò=„6¼gàz0ûÕÐ@*q“Ó ÄCwU7œž¾áÍÛcŠ2“g•N,G™ {uÕPWM| GáÓ…>ÊþÎÎWIÞÇB ÀA†[Ò-ÂGÛÆr"Ð&`¬îc@6Qs:’5h<3)GydÚ•4uÅj>g5ŸÓVÓÝ]>¾Ÿ{·¹½“‡Ÿðâè˜Ç/Ž8_6|ôÙ)÷?ùMÝqrr‚k[\½äìÍ oŽ_|Ã, Xe1f4³··ËÝ»w¹ÿà.7nÝ`6›ˆ8cƒ¥±KiÛ<#S§ÿy¸ guÏb±ß­£'·oßæîÝ»üùŸÿ9!^¾zÅÅÅ¿üÅ/ØÞÞf±˜sxxÈ7ß|Í|>çã÷ø‹ŸÿŒO?þ„[·îÈ=6ÛÁwe^DÎR(:Šå|ÁÉ›#ŽY,ÑÍDÐ}ñG¦î˜7Kž¿xÅÿù_ÿ_}õãÑ”»wï2›mcMF]5ä&ëï›¶m±JcmÖ»Bè± r&I"UZÒ9ˆÕªa>Ÿs||Ìáá!oÏÏè"+-³ë=·oå9´D|tt…áÞÔ{”uE'7Æ3cã^[ ®ã>Î…µˆœ8PJ‰óÐy¨cÙDJÈœ[¦Å!(D§•÷C=*¹ltB¦{\÷¢Oºn†Nª+ ¸áÉì=¢•z‡á”ZÞ‡‘¸çº ÖܲM¡H†¥ô)’L«ü5F†+LÀ $IÑïcÕF0„+ t“4™M=J~6W„­¾ƒÐGvTBõ¤TSb‰Æß§ˆþào’^Žóž¬°ƒ3s,¨Hzi<Ϙ” ñÌj$2£|À t> ºtÞóœÑÂr•DGèËÙ´Öèx6q.!hYH¥ j¯h] Kì´4¬òÑ Bß3ÑΩ—áÂ:]¯m­„…“Ãk+ÅÑûÿCΓ>¹ð„ƒ‹ÆB¶×±©Uþ}ÝâªÒá«OÅmŠÐwèÄ O~ÄäЋ—VeL“¿*xJk}¼ju­A29aá¥?÷‘•·.Œ.JŸÊIL²&³†F+Wéþ’{#è(:‰^Í)áâé0œ]c¿º™Ø yj>üïý êô¡)¡'9'ŒØ…ÅV…Ž­ j°t¥Dí(2–h^½<ãÛžòýÏy}rIÕjZŸá‚ƃÑëé…w-.x©wncº2\ÞÇÂÊ®«‡Ö×(ýâAôÙÚÁÊ›ÉuK¤"æÖSoªàÐhr§"JK;žÑ ãpºgTÉIõíÌ(²,F2£ãÆ(ÈŒ‘FAßE+ìÚÞ­q¨È­_x3žÌXŠÂÆÞ×Wäª]:Ê ?Á‰CK±’{úöATt ù5<=¨µ8#qAÕh©SmÛ@×¶² µñUyZbiÎ ÛÀfš²,Й‰„<\dí¬Û“µY’kŽºÈ,Mü#w*VDû}ŒÍªÃh¶ÅdY´±oF|•5½ W”kŒ½€ý½¢sNèzaÌodדP”®«MÜ` Y¾Ž“ˆ«Iz6*ŠÓÆ\Dï¸à«£ Á ˆV>\Žö[¥-þÊ¢©UzÈxðZ*€£[J+ê÷XéµÔ `œrQظ¡tA*œ×(ßuó%Ãço0ŸƒÏè|Ae2Z;&+(·îSî|L>¹å>>Ûf¥3ìdÌ ÍÅù%O¾{Ê“žpøâ‹ó3.ÏŽYÌϨª%ÆBž´¡¸u]pÌ'g Þž7\® ê4w”5¾íhœž_’%ÕªAÇZî8à³?æÇŸ~Æ­{w EÉöþ.¹5,.<üæþý—ÿÆó§Ïxûö «3.ªF`Ñåç:æ£j=AÌÃa¨½f±r\Ô5msNèŽ(GÏÖí³ZÖèÙ¤`{kÂtRPd£4yžSX‰ åYÆXg ei2!C+‡Íy°6 é¾¦Ìr\h©%²é;¼¯èÚ9mÛ1.c|†ÌæäY âzì:OÓÌ jBã5*Q2Ë÷±ù.U˜•¾þÕoùữÍœ?ûü.÷nnssV’-­ Ì«š³óKN/,W-çó3žýþ'§ j§Mwyðé|þùÏØ;¸ƒ±…<”f¼3¥È­€…Q¨Ìôܶm¥Õ:Ï1¤øC 2ðFÉý öþF,õ¬…¨ÌæÑ‘÷ѽԻ¤cÏÖíôýä#f³m&O^0¯=Ͼü–ÇŸ‚£­áââ¼C¹†¦©©ª%t-…QŸ±¸\ŠôòÏ_<ååá}>úè>·îÞb6›±sÌeØ"_³O h>:¦5 öÎÀ‰æèZû)Þ7ÑQáyðà#Ú¶åÞƒ„X.—(¥ØÙÙáæÍ›üùŸÿ9JÉ0ž”½Pf­{ËE…µ–¼ˆ‡G¨ªŠ×G‡ö­ MUKy‚ƒªª0™e4šðúõk¾þæ÷üÏÿËÿJ]µìîìsûömŠÑ¸k’èÜ3”u]‡‰% ^¹v¹ô]½Ÿ«ªâÍ›7¼|ù’““ÚX‹5VЉzÔˆê‡îiP+g½árJkUØÃý™Íä¼d­8Ò´aà(r}¡”"6—G׈ …• ’ºŽ¦éhš&:¯]ðƒ÷×>˜æÙ(ÍŠå:ýÙ5Mµ¹fÓúֳͿâ6K+”‰Ðߡ۬÷ßj/æmÝH8IˆÃ]릺®aÎ{ßóëœwý:yµá6µ‘‡`®8áÔµå×­½p¥6ËR‹¤ïÛL}ðïÍ1C\Nð±ÓÅ!u F¦œ´¥Ä{=rr•ÁwѤâNCë/ãµByG^ØÁù#à}ÏZÓ*ÊÂÈ0χÆÎtO9çè\ã÷ªººN,k%áÓ5Ò\lu&©-ET¸èúòÂcÖA ²(þÿ3c⟠û3Æy«4mpÒÆjtLœÉÙ9(Àk›J…B< Z[C2%±û_ª Èr\èÄdÏÙJ',“#·AùØHéÅõª!¸ÈÊõ‰«ÐF<'¤âÎê:´1X£‡µ(·õ^ šŒŠ@$ þüÀ¥£âÂ|-À^Ý` £oWŪë``Iàz߆`(t)µY»êýûÆï›n¸p½ÿF‡ ‚Iæ>ßufi¢ƒ%Ç)‰Xy­©»–³‹†¯¿Í·_òìÙ V•ÃyùšÆZF:—¯¯Ut߸u” ¶å®gu]Wÿ|µ¡1-ÀÄÕ‘qàû¦cÄ­²®Á\*½ië”iÉÀ£äI5ÝýÁ?Õ¦ö¼èÐ Q”RZ~¯{Á³žòêåK.ÎÎiê9¹ZB¨1Áa¢Ri‰#^Μ]Ìy{Úpv‰ÄT•¢é4]V(×­ ªz)p]31¿¢q†ÿ¤©¨üª˜ŽgÂ{Êòük2Ù¤+#ÀËÆ»8 ‚ÖuØL¢¶«ùלC×ákO>Ê™LJ>¹Ë¿ø”›÷¸ýàÅlD6–@íç¯Oxùè)O>âõ³'\œ2¿<ï0Fx:ËYyϼuT>0_9§±ÅMAh¡ssĪÈ,ÐqMŠÂ¸‘ÍÆ¸(™· ÚZ(˱— IDATŒ24MÍ7_ËödÌ›»loOz·î»·¸¸\ðÍw¹{÷.ËåŠåbÅáË×|ûýwœ½¡%uÓ¢Ë=)™ÌÆ|róÇìíì`µbw{%æÀÖdŒµ–¢ÌØßßggg‹ÑtB9›‘O&,..ùîÙSž~÷?<áÕá!gç—´>P[E¥5£é”‹ó3PÂ&C ?¢˜Mhœ#hÓšUÝâ}†Ö«Z“—]ÛÉk©¯NʼÃh¨êK¬¢4ì̶˜M¦6Ãä°ÌF³IÁ¤(Ùžf0²´ÔÔnÁ`U ó E¸œÕjAÛµe1¥,¼öªšÌN1z„µ[ KV+G0cÎÐYÃdû€|r“íÐÚu ժⷿþw.N_‘ù%îíòñý›lM,™X`²SŽÙYº›;h“s±¬yùú-góo/WÌ«†ÓÃßóßIÕ àzkw—Ýý[|ñó¿÷[[;„N Ê:Xl–3–®p"|dâÆ;|¨Q6>«µ¦ó5‹û­©š•æ´é]/eVÊÆW+º&`‹\Ømq£ßuœŸŸãœë˲Äû޳3aÖt]Çd2a6›1™Lð^\WÂŽÁ,Ïów†WÙ)ës›B]iZê›=P\ž'MÓD§WKžÛÞ-ÝÅC@Y–,—ËØ¬úƒp*òÈ´¨y–_;½;què—Ö³!ûæ*ê¢mÛ{cÍ[œ’CY†!¨M „kWnˆµá}D¿©i+ê¦âìâ’ׯ_³X-9?½^ÞéOž<ãüôŒUÝe“Ɉ,3âÕ"EÁ|>qQAë°Æˆ¸aÁ©†Þ‰«ÅI’=ôœ$c4F!m­ÕŠ­­-ÆeNn3¶w¶˜ŽÆŒÇ%ÓI-{;»(£™Ï—Bí:..çäyŽ5óó æó%Ë‹9OŸ¼àóÏ?çç?ÿ9ã<ÃÍÖÖ”;wîðøð„“Ó9Ïž¿äO~ö§±pá”ÂLgc|»Cfdo&²ÑÌÑ,¤"§t A>«Í2*DH÷çmïCd)ë £óšô!Pµ Ö7š¦õr>Ì-®®û¢€4¼Ñ±,Êk`%‰y~›˜4ŠéªVþ®!Š5nMŸN8¼‹Üe¹¥ *DèHòüÅ"ä$íÜ"È´"Ü©Ïb^\p&}–RŽæ"ÃÏ“¸hAκhºÎHÂ@)|×àâ³ÀµŽÜÚ((É}“F xñM·õŠ #ƒÆ g9a­óaýç6² }èß/ÊÓÆZï%‘åÖ¥2šL {¶kÛˆnÒý !IY¹•Ÿ¿'HH {q™%κh@T8£vxQÚ?¦Ñå}Önuåbû¤óØâàµ\7ÜŒ%*¶SˆÕð®C{¹)L– X;Yp²ŒVeœ].yôìïŸòýóSNN—T•'Ër2›É"ãE©È¬‡zúÃúðçp•œzŸX3›ï}Àêd›n·MÂÿ€üOˆ*hˆf+‡ŽY_Óg­Å’i­&·š\I$Ð*b†_õÑB£‡‰ ƒZ¹¸ðûØD¸¶%—¨ôs#:—×ÐÂ轋Àì@×ÔQÉ€Ú£/Ñ‹4mqƒŠjáli­EäHðÁ÷IϼÐ'¡"Ëò~ÓÛÔ-Jçoúïíº@Ó´Ô5t =“ˆd3gl.ïÍi]tu¿N¨äZˆRýûÓ±z™ÞáÔußÕ½£¬(!Ï#Ø\­a¹â2Ôùõ<ÏåE¦{Wmfä½÷ø ?c¢u59–Rô¢ÐÁ J™x¿~À©þ³9­^çüõÀݦ•‰ü€±ô±…”­t]À¹šq¹%mh±IQG‹œÂnÔ€uïS”³%·FÜv©0B§¦5ƒ5ž¦í¤ÙE‡žCâ4[é´!ð§Ð^ £ -‹¹ txUàÔ„ÎÎÐv3¹G1»ã}ò½Û˜­=\>¥Í·ÑÙŒª†Å²âÅÃïxõô9‡rrøœËÓSºjx UãÜ%A9òÌŒeUw,›–Ųæô|AÝ–+hºôcÍãk[Ç5Õ°á H+P²`w­ÛX_¼#N8U€ÕéE´ýŠ57/FŒ&cqKÙ“Ù8y«w]×8k)óŒ™Õ´M….[3˽»wøì£û<øø>»{dã C>)È󌋳sŽž¼äåÏ8|ôœ“ׯX-.q¾‘{½(Àjj×Qµ-MÓ²ìjƒÙ§¦¯:œAÅÄjÿç±-Õ»´o×=ÐÝiP!ÕÉùË·ŒŠ\ÎQèØb¯ZR¥ÏÑdÔº57ÖGv³J¥ñF¥ßw=‡W!ØCZ«Õ€cæzVPq´òñïIó7ƒ˜¦s⨕ÿ~íXò>FMûaÌzˆc¢QAtŒ_«UƒÀ¢¹z´â ŒfŠ\de;1Ä DÈk‡b`Š/z9‡š‡$b“ Ï7 5 ¾s×^«é*cЉï§÷öv‡ÚŒ^½è?dË~ߦãC¼§õŸë?z1yznè¼BùØD¢Ögç<­k$ój Z“s¹r<;:åñË#¾ôœ§‡oXv9ug1&G[ãG‘“¨XõTŒ,*ýÞ÷s]”òêÃaèp~™ÔÂ1ìkLʸô“ŽuËžê76Q6§´'t>Æ*J J€ŠJ™¦ÿz™–÷Iè"#Ë÷,o0Õ×+Gט–›R µÑñçé.«×ùð̤\âò¯Aû¾4rƒŒd.¶Çõ"‰IVî4Á‰-Y¸>k¬-<*NÂ%½æhZGhº¸©«Ä).¢§?â®òF9ä¹éyOÊJ{‘s3VëzÖ^¼’ÍŠl–cî<±¬“¢ÞRéäsS±ÑF+%‘©•â „Ô„%M2Öä1*¿„à…Û¢ÌØSÚüD¤PÁ‹Ò¦iýëŠ×&¶Hy8ƾdžà•ï+låZÞd\õÕÈýÃ*Õ‚¯ó„ý]çþH|˜)‡V6f¯U—únµ\D¡st®½òPŒ"kÐ=tߘԲé6j“û }'|Ád h_bý¯2´)©œ¥e‚ÝÀLnSLo1Ù¿Çd÷ÚF· 6“e#VMàÅãüðÍCžÿˆ³ÃWœ¾~A3‹êæ”yGYh”uT¡cQÕ¬EÕjÞ\TÌWžeXU®MöwšÑ‰ÀÀE~ÙÆ¡.È}Ó>º|Âõ8aö!R t5º™£/Ä~Vd9õªÂ¨À8+(”¡0•Y´VìÜœòñ>å³Ï?çàÖf{;Lg3F³)ãqIn š_òäûÇ<}øžðöõ õå‚¶m°V2ÀÚLS{Xº@Õ*\°ÔÃêBBÊbE‚¤ÓrßEÁ¾i°¨„‡@Ú8 @93–ÉØb4lÍv°XêfÅW_}Ãt:'£Ö”“1Jž½xNfå.,!Cn3Œ‘VWµ€ÇxØš–ܺ¹K]¯h»Ea—f“Û“ ·FxßQæ[Œ9>>æ÷ß>äëÿ5'¯^srvJ‹—šû\Sµp±X`²1ã¬À˜Ž Ú®£nVxÄÉèX[Rd9¹V'í3ÁGb€Õ¸ÈmNYäx—«uÓÄb‰ÎÈ3ªmäY“Ås×¶¼©Z)ì8ZH¤\KT×hÈ”c’ä´LÇ9“qÁδdgÊÖ¤ ´Š¢´¸zÅ‚‚ñx„)­8Cr¶OQÞ¦e„Ê&:çÍñ[~û¯Ÿÿ€us~þÉŒ›»û»ZU,«3Zï ZD¤±)zX°÷^¦ÅJ‘g9¹¶LvK™êûÓœ[Ó=ìk./w©*fÔ-=å÷~×ÿ¤(ÇÛܾ÷1÷>úŒý[wØÝ»ÁÞÁÊñŒ€Dw“Ó¨m!ÏÇ”#õk±X„Ò%M#nÌXqFPkðÂÜsmKÝv}[ñåå%———äyÞ‹WÉá1ŸÏ{ÇNre%V“Ö-ƒöÚÁà»1À?|€[.—¹¸¸ ª*¼÷|÷Ýwœž½¡m[îß¹‹-rnß¾Íx<&xaråyÎññq_žÔ:Ëåçx ;õ}CÑëD®ô5½÷=Øz(Ò¥¿Öº³R,I)EYLãÎmà0ÖPýN«£c^Ÿszú¶o"íš"C¶ ÊðÍ7ßñâðˆÅ²Â9Å¢©©ÚSæUCw|ÌÁÛ(mû÷y||ÌãGOX,V2¬‰­‚²wXGZ\ˆÃ¬HHiÎ0´ÝA×ZËîî.Ÿ~ú#¶·gk¡ mñx²HÚ©ÛŽºi¨›Nâ5Ñ!]·4âþ¨¢ãÿá콚$ÉÒô¼ç!RV–­gvVAÌš¼àÕ^€wkFòÀøçH3Ú^p$H³%ŒØ.1»#º§§EéʪÔ"´»Á‹ï¸‡GVuÏ€3V3ÝUY‘‘ÇÏy¿÷}ÞÅÊq5™szrί~õ ”±41‡|Œìqçá¶wöÑZqÞ&ÓóÅ„\lfðµO°_M@¡®7L÷Þ±\.hš†ÙdÊÅÙ%eY2m‰¨ *· Æ#¢–ᄵ–a‘3ä3—e”e™ZsÓç"q¢2#.Œu1ºéöÐí°KÌ«N«›%eNFÑ4ÒÆøöíÛNlcúí u8Ê~ßh¾ùúwüÍßüßsïÁ#qOJdÐw׳1†Äáa´ð)×Y·5d¹ÝÛd™Y;Óºåæ½=>âèèˆÙ|‘"†™Dð•é "Ú¦ò>ó¡ûÜ™ÂF¥6˜K-9ˤ]°¯Zñ­M#ô× c2HPöUíX­$Šï|Ü(±!tû’›ˆöy(äñ[PtÛÑu"¾óSï3­Ôs¼Í£ßõJ7ÞkóÓ2ðÔjݲgH<¨»†nÕ†_7Z¾ãº]õÝ\zs] ý†¼ñ[çPøñÙv’ ™5ú tr&hÓR.øõc´eP-ó+Æ.f¿YR"† °$ýµ¾Ã”ô~Vクklߨ’`ä)¢–²D¸”–ê$òIø#-EætÑ8%‚!bI,@#|º"·‰ª»$Š”i¥× 3’ȵšÛl£­-P0FãGËHTì’­è|³僚¸_×¶òÝ\ó¬åf²­_ÊpÓ8t3‰×6æö¿¿ ë8ïMTËPF];„ZY:†\Üä ÷G§{eß Ù7³í?Щ*ýc.­‚‚öVïåw?°Qù ²L$8ä «tâaIÅqZer[eâVk£XmûžDàÖb¥÷Íf6?±+²ŒnšÔÞˆn6n¨Þ/kû‘QßI• ÖqP½¹ØË³NÂO·ùÒÝ$¨['⺊Z€çmÜ^nhIªênt1Ò9¶B”纅’6ܬî&…)/Þn²âˆL¤TOÀòÝÏ×2gT¯-’®í#=]M‹¦*¸IŽ3߬c+Ñ{×’¼?T>14”´œ">X|Èqj€Ûèò[;ÈwbF¨áz´C=ØÅ1¢îÊX\O9yþŽÃÃw<ûæ{_¾äôð7¿7¥Ð5ƒaÍöȰ=R¨bÀÛIäøêšËi`²€«)T‚²„˜’cR¦.¢!/µ§‡w\×'‡ŽÉ¯•4y„^¶Šý—I¬ ‹Î 1šàðU-Ó=ÎfÄÆ¡Ð4fEô`󒃇¸ÿø.ôó?æöã{ìܺƒno3ŽQ|SóêÙÎ_óêéSÎÞ¾e5Ÿ‰ ol,µ,¼gU­˜;X5‡E« ›È•• ašàxS”F÷>w-Û/¦kF%‡b¹n€Š"päyN~K€ÞRë.‚C틹Ãd+Š‚çÅ£LŠ{‹9Á;&§Ç¿“O9*9¸s›ƒƒ}Š¢`{8`<RšLŠ?Èi–K^?Îo~û/¾{Êê|ÂrYቫPyÎpkD¬ªé £Ä £ ™M£,£ªœȳقºñØÜP”FyªÊ¥ÈñÕõµ¬&Gç²æ.è5(…Ò9áÿé ›TR9†ÕY­aÕ /<š9…]0È®(hÝP憽Ý!;Û#ŠÒp°¿ÃÃ'¹uk]l± #ŠÁ-‹Š×/^ðæå V“ ö·vxr÷ûãÀ [a©iÂ’Ì*²¼DÙ Y͸yÕÅ 2 0FÚϲ|HˆuÁÊKðRo‰xícޱ?yx‹UåX,<'N/^ñÕÉK‚ÉpF;{<ùøs>þ˜Ý½ÛlíÞb¼µË¨ÈÍy¢wÄ@y0¥M DÕBëSŠŒh+ t›™N§Ìçóîð]UU×2B`oo½½½î`^'Èq+V´‘AzmQjÕú¡¿›ÿFÔuÍññ1oß¾åéÓ§L§S¾ûî;®/Ïyþü)>æöí[üéŸþ9û·Èå‹?ú)ûûûŒÇc×Üb±`kk‹Åbñ'ôC-Õ?Ʊj7²ýsß-Ò [MÓt¸‹¶ ÐCµX­ÿNWöÕÕggg\__sôö³ù”ÉdÂr¹Lb™4¡®RcéŠyíyöô%W³%Î+´Íä#¢ÖØ|Œ‹w§çl\\\pvvÁ›7o‰ÎÎ.’è¡×EÝk£SÌHZ¿@'ø$vHMLÃD¥‰JSGܽÿ€Ï¾ø)wïÞe6›ðöí[NNNXÕ óåŠèÖ†žâQ±&³ÕJÖjï#ÎlÇ;˜Ìf¬ª)µ 3`k_qï>»»{ŒÆ[¬V ¼o¨ê“éÞWŒw¶É­bV¯ðQXGQ+ò<ë¢>uÜ]%MS‰ûíâš²²µµÅþÝ;Ì&³¬ª©¸ƒ½\gÁù´7e™Ég#/,ƒDÀó|í|l9qyn)‹‚<·é ºìù ]'‘ÉdÂåå9GGïXU‹ÎEµŽlÅ.Fˆ6üòþ‘ÿíÿø÷½;áîÝûìïïK9Ër™Öyž­ø¥5D«~š#tÈcLâûø÷>Cu]svvÆ»wï8»¼¯M±Ë´ÖÌf³$$Ûl_Ÿ Þ?µ{ñöujŸ{÷ùÅw|cŒ [#TUÃjµb¹\QÕ5«UÝEüZCƒJÙ·¨›Í ÝãéÁÉã|NÝ\ÿ~¿ƒKÇͦ@I¨Ž-Ô"YÖ|ºÐ \ër/{¸›Î6Óû™OËa_`ï?ÿͳgÜlw|/½´™bêó»Þ+SS¡3t.اÿ€dV'ò½‡ hÉzšÎx]‹y/Ö,l›Ì’ž3œ%¦³«$5LÇ<Í´¦ÈSÊ(³ä¹íÂâVʉÞɾ.]£Yfä¹ÄƒÛ¶ÌÄ4‹ÑK3ygjñ©u'¤íÕ(‹2Èÿ§ôh)ñ‘Öpµ°¯¢£±©©X…(8 q1¬Ë^BLŽÛõ¿÷¿¾æáƒ°âC«ÿ÷ú_§£˜&ŒÔtÏˤè \tâºÒ«¬¤”í˜^>í[~¨n#tCœkcÁZëÄ%—kÏ&ƒN8µ´BÇ ±k! ìÍLó2»É¼[øbO¥_sÞklè5.ü—T/h”©(Üñ^Qa\è¼›szµàõÛs¾{ñ–goN89›²¬$~Pp>M&$:ImzZGW‰ ZˆfÜPîoNün6 Ýâú6àÍÍWñQ]C )ç®Ó¤$Õ„¶‹¹V-+Y cË®Ëê0·„èP1)È5±sò˜Q­ƒª¬E¹˜ŽuEʧÉ_ëþJ&¶CqW‘ðëÖÈ/”JuìPd2…ö¾AG‰©ø6 õÆ5²Þ€¿¯¯#BAÞ±Ráˆùv¡ Mà“ZD3m­´™x¾NV$êfRíofºªdÒÍx ““¸›Ñ-W#=ëôÞÈb-@hzBÀ›õ]\lê½ü¾X²UªLõ)®ŸÀŽ `ƒ’ƒ¼-»¨1mZPb¿, t¼‰ü¤p}SIPQ¾Î'7AgàiŒÞ¨KµP|­:–ŠVmÄUmÜPIMˆé—¢¡ÈDpЩÕ,ªˆÖ¥åç66oíQ’‰÷l[m"!ë(à~ºÊYÕ(ªõ$%M#”E+9ð\TDU Ê]L~›bpŸÁîÇ;ðùÞ–¨á5àlNˆ—ÓW'_¼åõ÷o8|ù‚ó“Vó3üò®(³†ìŒ3îì 9ØÝB ¶yýO9¿\\òUA+B0ø˜ ³ •~öÔªÓí0Òm8n®¥­Cn=µ£×¶#×GЊ:BTåCÞÌS•µkCÔ,*ÆyÆîx›Ç÷ïñgü'|þ³Ÿ°õh—|w‹˜`3†Ã!JEÎßsý¿ù5‹‹s¦ççÔÕ’¨ŠÔ@£q¶Ä¨Q8eqXTVP¨­,õJ8QÉzƒÇãx‚2'msã$#Ó#µwäe‘" é°ßŠßÖ•0”ÉÇIÌö  «º¡,Âæ¨j Š2Ëåó"™¶¸Å5‡ß~ÍüꔿøŒÏ?{Ìã'âB”9Ír…öêŠó‹K^>}Æwß}Çáá!“ëF—Ô!à•la 4*ËŒÆÔU vŽ"ÓÌ— \S“e†Liníî3ï²½½ÃÖ@Ø:y¶æ·dyNí…‹T7pZ,WuŠy²¬ºéÐN9ÛÞ㜣 IDATJd…6Eâñ¤Íy\ƒ¢Cª±®#øØ ‚8Š`™W”·(<áÝ5E1ç“O3¾÷~ø1S•QO£ÑÉÙ5ß|ý=_þê×TÓ9÷ö¸»³¶C¢q,½¦QŠ,Ï0Vác`UW"Fªˆ‹T/ëH ‘ºqÔU`6ŸàƒTJòBøV.h\í Q6•Q»œ¸gøôÑu€&(N..™,\Ïç~ÿŸøêÿ¯4>æÉG?åáýŸ1î³½»Ãp¼ JÑ45ÆXÊ"Gk˪I©(¬%¥Ú–§×¼kç‰N8…¯–õœÉdÂäêJ¡ÛÐ8–n.‡ÌTÈ ‡ï|#òÝ€|à íÌæG÷]‹Å‚ׯ_ó·û·¼xñ¢‚œs¿;äéwß²k­ÑÏŸñîð-ú ů~õìïïó—ù—úˆÙl&ì¦F††±«âZo•cŒx•Úyƒ¸b\?4)œ¢‚ì]S6¥-û·nsûÞ}îÜa÷Öåh•¼zõЦò4ŒOüÇ$¬'{ä~ê\L¿fš¦BCí]ÂXF£-Š|йW±šÏ¨ª[ã·oÜŠz±`U7r˜2¶Û/Ä´_'“ÇjMf ®^qq~Åõåç£Ñˆ»ó³Ÿÿåh,û[vhè’›':"°¬³EÕ¸ŒÚL´Rk-Y OÍÚ™µ £ÑPœ^šä°\‚Öììîƒë"²(Ù?Zk©•ã¿øÿú_ÿŽÏÎùìÓŸR†ÌçsÆãqû®aH‡Ê¦£çJKÀl“ ËFtÓ !D–«ŠËËK¹žOOS Ž$ʲ¤ ÓPWãØÆ%7•ïGA:¡Bwàüе¹÷Ý™i‡!ª‡ïP]ùޤ¤%®®kVKiU­k× T¡-Õé‹51lDöâ¨yôÈó¼W:Ô×Èt?õÑ:¨:×UËòA§M”t)‚(ÐëµÀ¦Ò™ª?àMÏÝÝh±×7)>écçnwƾ+ᦀ¿.`êÜK8߯¿§éÎ"mrEë5Ë«m²m-ÿ-\½¤G…þ³¼¬•¾‹OÊk³6[|¡sC€L繘¶­&’€Ò!FbHg¿Qî‰E‘Ë™×jJ›ÎømS^²Þ¥äŒA BÇÊZ`“˜žÚ³ÄEN ìލVj ƒy“mX¤žŠ´¬³ÊHš©-RhÈ#Ö˜ÔÞ·.Zˆ=„[ð^†÷:UÃĸÁ¼òNÖ¿VÒ@þÜ´mƒ˜îyùè:A®ÿû1•eÒ0…ˆ*²,@i J­xuSÄêXf ^/›•¢’uÁ(%ÎܘNÀAá¢^ rº¸ˆ7ðc±¾Õÿ¥íÇb7§ ?ö\trúÄXác)ò¼Ê˜,./–|õõ3ž½9âõá“…#*C–Ä¡Õx™N­yâL *¢MÚh†uëILV"õTïðÁŸ³}Þý–ÂÖêÞ.þ›áM±N^ÛÚöHmô]F"8ØTã£OÜ?%ñ@#*tô2Ak«–¥eI”(•̘í¤Çêî'L@x9˜-B€NÐS©÷‹ä™élºuÓ„Äâq‘"7`HÑÅôœ•Ü B²¦¯£uëV‹M·Zì=ú„¶D ÿïíkîÛÜlâ9¥…åàÖŽ11‹ÅduײéH׃ˆ˜Ž¼ ÇZ¿7íûÞµj$>U[å+÷EÓÅ¥2twM‰ã‰3#MÕ¬"O…!m*º×'EÛ¤ºví’2VÄ#ÙT¨î€ÔN}¼wi’Òºûä&kŒNÍ’4 í 7lÆߟª¨.C“0×UŒ·!pÚšðÄò\tj¸œ¹Ü %ú;;2º…Ä;”òkÇP»éH_gŒ-ˆÑK8>¸.N'uÛ2)Ñ‹@i䀞Z˜å~ÁGCÐQx3@—» wŸ0Øy@>~€*îìN ÈÊ-òñ6>³ÇG'¾:äå·/9=|Çäì‚ùå Íâ£ìŽ<¹mØÝÖìï—ìoÙ)3Ë*Õ#Ìf0ŸËDDøn9ίטDfT›y˜£½–/t—¯ïCEÛ‰­Öɶ†/vp›gb wrs,”Æ¢¥’8lô óŒÝí?yÈ_|Σ'¹wï»wð¹bgoŸÁpÌrYq~|»ׯy÷ü9—'GTW—4‹)Õj‰FEæMͤªX5ª×:Gg6—zõh˜H]¯ÐyN´mYA >m«‹mÚ$¨^ËZrSFဨT€’kFç¾qÇ•…–¦ñ„¦ébZÞ{ÊA!CŒÐBAs¬6¸ªFÛ㜭ýûÜÞáþGùè³OÙßÝ¡JM[niØ*Ç\]žòúùkž~ó-o^¾’©»“å\Î4QÚD£2ÔµcuyÍK4†Q:pä6c¹\ Ud<2(vøì³ÏX-¾ qŒJá5Õ©í ³¬VIFEªgK–Ë9YQ¢04uƒwÓºr¹çc˜ÏçRYÝ篴Vñ Œ.°9dÆbX;µ¬ck4`o›îñÙgŸppçg µÊÐCͳWoøò×_ñõW¿£š¯(mÆdzÄ»Ó3îŒ8¸UPäŽÑH3ÞÊ)s‹F&ú…5\®®ÈíÅÐe…îòÔµLDuâjTË)ÞͰY›ö˜ )Ê@YŒi\dU­phJ›ãQ ï”RÈn±¨=óEÅd¶`:[püÝ/øþ—ÿˆó£ñ6>úˆ'}ÂîÁ†£-p#ê "ü0/QÚà}¤®]ŠQêä4gðb± ªªîðßîÚÈWëòX­V],” ‡ÃNZÃÚm÷{?´»Ù6õ¡}šµ–¿û»¿ã7¿ùMiÌs‰i=zp"7ìílóùçŸóàá}99>br-1Èé|Æ«W¯øWÿêäáÇ]”ðCÃÒßßöß±úî€þc¶ûÈöõl÷ UU±X,¸¼¼dzuÍ›—/YÎD$\,gÔ•£nV4U-nžv’ó0¹uÊ¢TÆîÖ.ó•Ã7ç<£Ñ -J—dyó–[wrôî5V{îÝ3ܾ}W¢™,wîÜáääLö….lL®û.¬ ÖMúÝÆy”F lÒŠ °&Ýó!š ‡&Žç9MTl]O]OñѲ¬¯©ëZöd.¦”Å{¨›ÔÄ@Æò²^.«ŠÆ-i"de —Ò>ؖ댇&†.꣈ŸÚlˆdJwH=*†®ÝOkMtºŸO\]ž3ÎY-–\^f«ŠOÿ쟱 JéFbÄÕ ŸbE®·²6Ìò¸!Öø4ªk÷uú %~DÛäæÙ#·e1PØœr±k›²,Pºë/7mýòË/ù·ÿîçôâ’Ï>ý‚ÁpD°»»Ÿ"¯›ü¢~"¥išî¬ Ûû~¸ý TUÅÙÙÇÇÇ\\\‰»:Ïiš†Ý½[ììì0_I´pÕ‹I›1£÷Îr½sšô%‚Õw=¶-/¯ª*æË«¥¸ âèKðï.–õ"H«4õS* þ —ÕlhÍ)Χ“³Jõ°$Ýïë–qµFg´Ï©…ë7Ý ú½¨ï‡ÖxÃMê]\3—6¢c-ÓtÓ÷>¼^m8ÍâÊÖ6ãgôR½HcŠGn:ÍZcl#Ü`h¡Þ6n2´B ún6Ö÷uw„ˆ kOð¾Ã…诔ǑòƒÎQdJ¥fÌÔz%Šè£¤ Z®[Jt€Þ€Øª–o•†}´Â•êL.:q¶4º»ÖËtŽTé /ËQÇõóï_J%q´EéNTî‹•Ñ赋.z"*Qä\Þ¨u˽<“hº+Ð]룬=&j1вøT÷z'‹OúsõÃÒû1D†.’¸Ù¼¾M2 t:P\‹Á:ßMïü˜¸ÆãXB²¥{&*ÅBùìÛMLûPÌ.ÆTyãMÙ¸T?V·.¹ÛtDÅ•puÈñäT œO|ûò˜‡g<}õŽ«éŠE­QzÐñŒ†"WFTÐd³Ø8‡ó6ñ•Ò›Õ¹®t\oüüÈʇ6ZE!í#Ëå²c/ÜêÖU¯ªkÒº wWÉ…ÐÅ×J«€M® e%‹m5ÉAå¥mÐhŒJR\”7“øT•&M¦ç¢’Ç‘¨H[{ºZ4OƒR1 SJ"iz$/ª¶Š¤Ç¶CCâ ….v&Ë÷# !M_º…=MÚ/kxeÖ·?qÈ×»6ÓNÐJTò,0(óÔð$š’ÉM9H0Rd&½Þæ†û«½«® zÞKjÓø´È¦]ÿÐÐF¼&6‰0ŸAKŒÕ‡÷â “ÔN@•NkÄ=¢µN¢fûÉð‰±²þêT¿, {±èÚ4ijŸøcIœÕšÔFIÁÚI¹nèÐéfë]$1µœ¦Å(t“ΖÖ2”’ §6ß´î4ŸX[ëoIn½UlÙk:)ôªl7c7-àÝ©µÝ+V*„Í]î£Ëâà6qp›rï>ùî]œ. ¶D™ÖÐjÌôºæðÕ¯_¼åå·/¸>¿àòâ˜ÙâœzyAôWlnm[Æe`«È¹µ7dog˜6æàbEí,E>¦ÕíbëžÍ5ÖtÍT&M_c” ÄzS·n#19áºMqûÙÊJ"V¤eZˆÛ2KS´ÌCî…‹20†Ò”ìînóÑÇyòù'Ü}rŸ½wìŒ(¶Fèí¶F[¸Úqòö”ó7ïxûì)goß0¹@£4a4d±¨iVÒxSdVgD'N"=¥É»&ÙÁ ¤( îÜ?àþƒ;¬V+q˜xa× Fòú˜ZvHU#ÕäRçb ESQ´ÊX.—( Ì3òôØÒ¶%kÖƒÛ{P_WÕ,ç æó%u]Ë÷NŽdãkTð(<ƒaÁ`8àþý»üô~½{÷ ‡äƒ“Y./®øæ›ïøí—ßpúîŒéÔ‘Ù‡Á»†³ë†çósâËŠÌ@‘Ã0ËhËÀFYÁ07 ·3¶¶K¶Çƒf•Xå 6X,™ ”EÆ0WhíPÔ*®Æ†Æ­8;‹VY1"/Æ ‹-´‰¸&2´“å «ZÓ”j—ˆÅÅÈùdβq\L¦?ûüæ?ÿ;¼²Ü¹÷˜;÷?â“Ïÿ„Ñx‡íÝ; GÛµW 3Í êz-°Ö©¬c:1µ|µÀöªªºØëM¸®@‹÷œËú÷ß— ¹¾¾æêêŠápÈíÛ·ÙÚÚâã?æÏÿüÏ:zêÕŒÙlÁéù9_~ù%ççç<}þ‚—/_R7N¢†×—Ê$DI,«¾ƒh£µ®=Ønž<éú´Ú`Y}ÈüðÕIBLìÙS¯=Z+2½Æ4È1D>{!º|w¤OŽ-Ýãú¶?_ˆ®cyÛ$^uÃÄ€I¢îM‚À`’TÖçªÿHIÚ TñÌ%7¬µíèx-h­ÅCçàº)`µgöuá70/?,è­k}¡Ö† mæýýoH®ÓR9”×Ó33‰Ó®nb›ZYD7®‡Gs¶êJ©ÚØ]Ç4네¸ÁÜ|Ú6Oœ†ÖŒ‘Ö"­Òž¼sË}¸Asq]Ç?ûïmÛº¾ærÑ™DPktwFhQBòç©AÒ«äFëñêzÎĘ`ú¢¶8+}‡"aÓdÒº7'lðãtË.7›Îñ1Õ{ÿÞ~­¢´¾¿)ø/0b†Íúξÿû2½m¦¶Í|öí“7'M}‰O÷>›MˆróÔ&ËÀÛ“ ¾}qÊoŸòêí9^e4²LªÌ½o.`T$³ßÔ¨èÅÍ‘™tçÒ©Ý!v@ÍŽ3~¿îôм¾…}4uÓÐ4º†0¶U¸-ä2-ÖNß«u€‡é„+‚Ǫ€1Ú Yën! SÕf‘ J+ ÞA ùëàìâd³VgÁ«­Õ¶NFé^ë`“.,1Q8[Yfè—”i½lóú5´ÚvÙÖ&ÅÝH v[ØM{bVyh‚<ÿ®ñ ªÈTk«–_¡ƒ¤ç¹çr`ŒA€Ì!Öé)ÆŽÁT×cèxWëfÝ}¨DÕV;ÞP»0å¹ítL–€àscÓûÐÉm‚ˆPF‹xµ±¨)i…w˜—ü¶©mˆŽû7.Ó|TƧirLÍ(—Zwd16–Z‹Å¡ý§°“”&ŒÞ¦£mûla³jóόƢŠ8_Í÷åznã«f½¡’ŸK&É:}¶Lj !v¢s{½'¹3ý¹ÃyGže¸–{4MŒ%JYb6@g·ÐÅ>Åø.ÅÎÞÁÙmb¹ƒ+Çäå˜`4Ák–³†ËÓ7¾<áùw¯8y}ÄäøŒÙäŒÅê›Wìã¡fw\°7Ôìo†­AޱP75QÃ`X’绘lŽÎ yá ªÄUMz¹“c¤4½æMð(¤íG÷ÚGÚ×;&^SP=ÎC0´ WƒA£/î"¥0*b‰ŒËœðÓŸþ„{î±sç³]Rîî`Æf0À ‹oŸ¿æí÷Ï8{óŠéñ1ÍjŽ+êzN£<ŽÌ]ÍõdÁÕÕBÜf<ÝUˆFbS4„ 5Ÿ `W+•åD›X&eI™É½Ì FÃîÚhË2Z ¬¶âÌj|šø'àu+Tõ’à<™-ñ¡f5_t\ž˜xEÖr£ñuEÓÔlïíqÿþ}>~òˆûîspç6Ãñ8YÖK2-›ÚË£~õË_òöåk®..™ÏçT£lF£ÓEÅ O6’•šºî"Ç­°} ÉaM9P]\\0qïÎm¶·‡ ‹²;¨TUÛ·GL¦3V«š4ÇÇÇ|ûí÷¼|ñZ`õEÁÕdF–ööw98Øggg‡Ñh$Q;›xpuÓMEPñ\__sqqÁl6ãìì"mm:Ü}4óàÞ÷îÝåóÏ?§ÂÛÙ¡öž§ß¿à7_ý–ß~õ;B#.ÉÁhcËjE#*#ž€2%‘ª•7ò¨`Õàš: †£ÆxÆ¥e8Ð rËx`ÙäìŽK¶¶rЬ>3´Qî›%Æ@=‹Õ­—y™`Ï9xCžÙ)3b4¸¦ØŒíñ*(>rcVŸÝ¡ª#׳§—S.¾áÿüúQº`¼µÇÝûOxôøcîÜc<Þ&æCÈ %F+²ÜCNQæ+nÑUµì„žÖÕº¼÷1>ÈpÌùHÖ4Ç0)ò“¼ëºs“¢éºk üÅÿŸÿÅÏÑZs=ðùçŸóÏÿâçܹ}OþškÀÞãvSso6áôô”ÅrÆÁ­ªêMãù'ÿìŸrppÀ²n ¬ªŠÐÈžKý†è† ¤¡Þ£u&뾩ú¼fz½àââ‚ëëk^¼xÁl"`üÕj%¢_]ã\Šp|y‘†}–Âh2%.jÓÆØb¤ÌsŒÖÔµ8‰­‘‰¼°˜Î޶Ø’Åòu]³µ·ìPÅp¼C™\__ñùO~Æ×_UÌVKž>{A^fü³úçtqN“„…›Î¹îŸ£Jð_µ£Jdû(º«Úˆ\^O89;g¹\¢µæÖþmÆ[Ûìßò\\/$fë*p9Å dPð^òšµß9Uäúò®ÁäC¢Éi¼êDqfóiç$ŠJ ü¾ª–ªª"+GÔ§iª$ZÊ2§,eØ£Bäl~Êùù)××çd:c8ÈqM ^-p¸($ªbÒál=õ¾YG~bª¹OüĨMÛEôŒZái#*‘QQâ\“i`3ác…Æ¢gçö=~ñ‹_p~~οü—ÿ-wnã½çÍëgüÍÿúoiÇÇ)#–ËŠ¦vhmÉë+(O6¸BéÚk…,q¤·°ïoT¶œ ÌçKÎ/¯¸ººbUÉ:µ–aÇݻĨx{|Äb±LŸîs®s‹ôã>ýÃóZtc2ŠB¸‹Ef„#”\bë¦O§«Æ3Ni|H‚f›F›R#njcJfÄøáˆß  n G~ `ÝãgoWë}¬î·“v¬× õ”eSZmŠ/-«5nrx}ï¼÷¡3±F}@´H Kô{Î(:wT:’ªp¬FMˆ¾k3m#ºáFT³ïÚ€ÓwII´ßѤÈ^{ð ë5 ²!^µÌÃ~äZøIŽ«žàÃJ½=!ú®q\fï:µ¦7^G9¯&‡YÊ%6u7çÖ°À¨€×FöñAÎÂÉõh#i¤Ö‰Ø¶æª4L÷Z¡µð@e?zï¡<ÎMÜýC§þgÿæg­Ý£üLÞ¹Zâ´më ê·Ú÷tez‰·õ€Þ¶jP?s¬z”ø{^Ñ%bÇÂ(¹¬'dj=ÚP˜•ŽøTO©¬:FEn*ÊHÎØ#sã±Q ùßâªñÖLgžß==âW¿yÆ›ã+–uÄ«ŒYf±4­ Úi.tš€àeÖLŠKvé¾0&‹Ièåç‰Õ3žR»ââ¢YCÇ» vmu­ð=¸€SNZRœÊ´¯«ó][–XâT™vV`iZke³eBÄh±ñ)­ºX ¡"³k#J¹ÔÀ˜~/еÑZ2aaÁf D†,G&2&’ë¶©0vãöµ;ãšEamŽU†hP«D/"›ÖÉñ¥¤*Õ(i,2¹I,Ïa´ÜŒLröXkSäÍCH iÖg(¥¶Ëd=5Zø)P‡Oß,³¦g½n’#FÄ@£åç’ë 1ËÒ{ÕNÖ´I7T+-†ÈK²ÒÄ&€KiRQ²‰Ð6G«An*²€¦Ì¦ ÄØ¤¸€§WµGkCÔ%1f(5"*‹²#Ìà.ööÊìÖ1Q‹×96£tŽ2C–Ó%Çoyõâ£o9|ý–Ë“K\5#¬.pÕ5»E`g×0*=»Û†;ûÆ¥&³r-DÈÇ6ω*°ò ÈVTÑSG¨êŠ&Z¢OuºÑÉ4¾ç|3 ¾å!K“$§$jÚšÏTBÀ¤kµe)øÙ4AakÏÀ¬†á `<rp°ÏÏ~úŸàÑ6¹UÄZ¦llžbç œÖ4ó9³Ú)}ƒT¾gYFn’S«’ J‘¼¤¨q†µ×TXm°D\hXÎ+ª¦ÆE(ËRZëÄórkÝl±»3æÑ£|öùGùä3Ê|@NÆb:çûïŸñâå3ŽÞ¾ÆZË¿ø‹ÂÏþäOyüäSn;É0V£©ë…4Êõ8 J)|¾‡µyW“µ û> ®qXï¨ë“«kNNy÷S®¯¯©W«5Ï)5 6MCã*qS…Ȱ°é0›ºF¡lÖ9#Œ1ÔUÕ9²¬ FX%Af=UµL“a‡s؈ʠY6œ_^pko—Ý-ž,ç\œ¿c9»äwß<%öïé"k‡¡qMâ¶(q–§¡Ÿì%V’ _ØLþ\]a‹Œ§§Çh­999¡ª¶Fc¢‡²°j`´µMí<ÔÛƒãñXXs ÏP×5¨.Qµºrì)¨ëQiêÆ³µ»‡óòz6ƒårNãja ®*ܪI‡Ò%ÁƒgÕ1‘Œ1P„$ˆ U¯L&êf•Dõ€or-Lq)ecB14hn9í^¾nð¾æúúšO>ù„»·ïðùçŸóÿðüò—¿äÑãÐـŲÆXKPš&ñÕ¢÷loïRWsb¨±ZQn ©ê%«•°¹>þèSö÷Ð:ãíÛcþçÿé¯YÌkîß{ŒÖßyßòtO ß"¥×‡X%^§£œ/l:èùÆ‘g9Á5ؼ$Rš«Éï"oßóúð®ª;·GY ØÛáx6›±X,dݺkÛ ~} “´ƒQ¡4Æ >ƒ"£,sêzE™Z»£tîiRTz¾¨c1ñ®:gèTâ¢ÆžSIX®kQl³c°=WÊ™¬çì†Ê­àÔ;ÛÆuC¡ dd?ih±.›0•ÎÝY%-ÄíáÞK£æ‡šT[fQÖBù[tK¯¼¬-áh ï%TÄEðJÜf ‹aúÉ'-{a´êâwíª•íœUk¥ãÊQ~Éæ=x9û†®a^>¶ß>—¸]Zk²Üt±[…»Áx^c0B׸( ä© y´VØ<ïXj‘€J±oŸ„NDt°r†Œröu®–ç’bHh"TÞ3HÃÛ,Ê  Mðh<63¬ê’YCZõŒ<ÈR[º€âCˆdZ낱бT¥ i Êó\OIàéGqoŠ©u]w žMÓtÚ‚÷žÌêõëžþK×v™X˜^ ˜îytŽé=é'ˆÖa«)­zbÔú}k‹¶ÚæÉÐÓ9tJëôs7 dZ7t_ˆëNŒÉ’™Bm€òÇ ·¿.t˜vj½ñá»Áx?OÛƒjo¬°]¯6Ët.– ¤”M`6µ0õjµìd£,U-tülk—Jg<}}Ì·ßòüÕ1ǧ3V•"è<ñ¬’â¼´Á(-­zB®­—DuÓ\Õ«UibIw19ïùPßëºFÒÝЪ‰>¬cƒqÊhCŠõ™nÁÖZ£‹ ÓŠV:Ê…I+¥skbVi%î˜àÒ¢¤DÒ ´jÁìNœR6µ&ÑJÖYH|+äŸß`Í¢g[¸aÚ~©díÓ&¤czµzMòþ®#v:‚ íl†Œ^s@¼¸F¬¤­4MZH|+^umx`¬&/d‘·Z˜WFé ˆy®sLÅd±\/q£Æ³ýŠ›Î‹Xá)µ÷d:˜|–Yá¥6c%Z©ñ*øF"­©1N¥÷MTi’û L&ºØò¦´qÃZRÓ±DaMƒVR£Þ.mÛ¥6½KZxœsh|wÓSƒ*t,°.ó­Úè ½€ñ3U¤Êg6vŶy«åVµÏØn6}%ÿo,J‰X•ò¥™);L‡úȦةÿ^D”Ж䦠®Qgxr¢bòŠbáÖåÞÇLò»¨|—¡‘› ŠùtÅw_ÍäbÂÑ›CŽß¼áúôœëËsV³†Š­aC1¨ØÞιw{ÈÞŽe4ÐäÚ'Á\ZÑò¼”+ç.8j_‹“CÑÕ#‹Q¥H]jþT½öÊ–3–b„.•lŽZS±|½¢´9!º“–׫TâXÌP ó‚Ò†[Cô˜Ç=âàþmnß»M9,om¡¬!F4çäÕ+^¾xÍñá–×çÌ.NX,gÒ„I ö5‹ªf¶ª¸š,YÖžE¨Ä`;¿ÒŠL§à«O¢¨ ãÒ¦}ì¹¼óÔ¬yeY°ZÍåóB»¶'ÖdèÌ¥”D%âTfr4‘A>À»š²”×G…ˆ ¢‡}|›¨ «Êqy5áôôœ³“§¼xñŒ¹“{âþÁ>ÿü'씟¢rÚâ–SJ«Ð6ǶåYFž•èà)ŒÁ7+šV|Œh/÷¸jYKtVk¼Ìš:®È±˜$J¨Ä‘Ói@µÄ•­ŠÄ˜‘+Ëèá}<¸G°\V\]^óÝwß‘ÛÑ5¬ªÖ(þëÿê¿ak{ÀpX2ÞÞ"DE1‘÷Qk !Dô×âÕ&‡5K“Û¹ÐùYMWL¯'ÌSÞ<ÉñÑ[ÎÎNå ƒ0ÃêU%l»Ú'Q89Œc$àºbœÂ RÛ]Óñ{Œ6ïiœë"]ë ï5«¸ÊQ‰S–ÙlÊl:Eçìdöööq¦(J¶FCŒüüç?çÕ˧üöˤZ͸¾š²°šÕªÆy‡Nmt­ëÉýÞþ¼ Œ2êô~¯ªZŠò¼‹ò_^^òôéS&“Y×–5›L™O„W wðQîÉY–ác`Y­ÈcžX§P”C´×Mž—]ÃrˆmMŠò }¾˜QäY®X.—̧×Âv›/ 6¸º"ú@Ú¯š‰c¹ZÑ4âÊóœ²,®JVÃ’åtÂdvúr Â¶óúµ 1fš¦^1›\c´#ø†ÉõËé×TDç9<<äøø˜ÿø4ÿÃ÷ß³·5ä?þßÿÿÿþg>þä3nß{H^ Ø»}—ûáb nÄߺ \ƒâ&|ñü1*¶¶vhÏéÉ9_}ù5UÕppp§‡ Q)UÐn}‡l¹Ù¼~³Q;ÆÈpTâ}Cf ꪢLÅ$ZYÞœòöøçë¬]K>TþÕFýÚ´D×TO¨KÜ"6¢ekÖUH¸ýÌCÕí[¨ü§¥ÖCÕo×íÏ»3S;,—–vµÌ_3rÃFä[Å–ë+לˆó"Ö^Îg>ènbè\qÖûtÇ~;œ×Q¾~ÕÔ”QQ[C᜜¯Û³pzªcÐÆ º3§oͨñ=Ýý¼7×ä]ºÞ[×ÚMV?ÞÙ/$ù±ÏLÿ{õÛ*o>öMFù‡àþ²÷µ‹¸á’{j=þ¡¾5ã,~ð±a7½éB$B¸ÙF7 ñÞÿè›{šÏƋԹ;×vÇu'ÅÔTLÖg£¤)M×IüÀ+G™b}¾ 8ä–Á°¬ß¾|Éo¿yÁ·ß¿âz ÑbÌ@8( Víiºï’Xà“òøCvÓñúob_…ý xpƒÑðÃu¯1bÛ  “hÛ¸`»ÐÉÂa­Å*ˆÁ {J›€‹IA–<¿´(Œ2²™UIôJYSk5YÊôjåÓk-S¡ØFŽÒßÑ=„“IΦÄÂ-à^¹+Œò˜®ÑEºu%N'vñÀ¥A²¯|WãÚÆ‘)˜2r¤& ›¦ !@]W-öhÝŠgèÚ$ò,Gk•^ŸDÓÕ£¢×@ÙàƒÍ’C°/À®ÅÉõëÓ÷\`÷1"Ž£NÍîÕ¸zÉþw¢NÏÊ+›‡$Ä%¾1…à¶”,÷®I-²:#ÊH&]ß±óKë¸^ؼ÷ïñ±NñBÓµI¢6¡‘-<¶µt·Ê½6²yÐèÞÂ&n4’›L·m‹m»§îøZ a=©hr´±  ‘¢p0„Ø!l;—JTQÚ£\wVç 9ÁÇÄ©  ¨l›||Àx÷!Ùp“oáËŠ|]n‘g§¨Vžå¬áøè”·oÞñúÅK&§œ2Ÿœ¢Üå+ÆEd8TìX¶Æ»l,[CðTäY$׊ÌäXaóBõœÃÕ²É ä( lÌÈ<˜@çö‘i[L¿FÞ½žX¦î¼N¡pŒl°B”몽 hEã|çþ³ lˆä@¹VÜÚÝáàîî=~ÀÃO>bëö>ùÖ€íƒ]ÊÑrX‹òã£w¼}ñŠÓwG\Ÿ]0\1_N¨ªe·aruÃl1çz>gºlX® öàºgѳ3{‰ÞjÉ Ö»*™R§¯·™%+3²ÌÑ45«‰JÓ1Á§zâäVU)êàYÎSTÃÈݨ(‚b”FŒ‘<*†Ö2Ì ,‘aQ²3ØæáG¹ÿð?ù˜ÝÛ{(k¨Bƒ¢d¹XpyýŽÃ7oxþô§Çïä°…!+r\j–ª8‰Æb´MSÈT³Þ zJw­OÞ‹kD+ß$([­„†EiØÞÞf>›px|Æáñ¿ûþ9uåh\àÉÇs}}Ý9;1;Õ’D"W<ûþ9¹.yxï>£á»w8¸}›Ú;önñôÙ3Nž3¹¾f5sqrÊ»—¯9=>âÎý}îÜ¿ÏÿÉñÅ_0ºÏ÷ÖÖ—W×|õÕW|ûÍ3ŽŽN¨ë†²¦„Īu®)Ëœ¬,•ƒô™_OïêÆS«ªb:ÊdReâÒ¢‘â« Á œÕqÉ*“]%‚RHàÑ ÷Ô† o¶˜NÁ9ŒqØl‰Š5ÖxFC‹UaQ0 EˆKÆ£E¦)/dZšŒË<£䔥4Zk0™Ü‹½—˜T–)>ÜãÑ£\©+8¿¸æÍÛŽŽ¿á??û%¿lqçþcnßL1Ü%š‚ýƒû˜¸•ÚAL: €¢f0È ï©«Š¦ DmdEâƒXáýiij 1âçÕõl*û kÑYž†7lHmìPœŠ­AÎÞÖÃŇÒr¹ìÄ“gT¡Æ‡€S²§ }Äxò,««iBâñ¥C%âôuÍ ï=ÃáÉdÂåù———\\\pzzÊùÙ)Óé%–VW«$44„4‘¥€mÛÁ4À ÊtûÔ¤¹•h'È}.Q{/_ έSKS”«Õ‚ãï¿á±ƒ¿ø3í`MNݬäwnïrvzÈéé)[ãRÚu×Ò50™XYÿ°±H‘ÀñxÌl6C§†¼õ>°\Í™Í& šéôšë‹Kqš¢É‹yn×Ð]­É q´6>RƒÁˆ¢( ·FäyNÃec ÃAÆr8?=a9»f4}Íùé ³É%ÕjFð Á5ÿioöcÉ–fyýö`Ó|9îY•SWVgWSH€Zâ¥$à…â/^ *¡âñ€ÄK©%hJ]Y™73oÞ9æp?ƒ™í‡o›s<ŽÇMDJ©È¼7"Üý˜Ù¶½×·ÖoœGGq5MKÓ¶"ÔwÐ^c$¦Væ¸å‚¦™ZGn Fᲄ‹w ¾©YÒ¢U *rf××|þÛ_sôæ5£AÉŸüðSEɽ»wùÛ¿ý[¦Ó)ÿÍý_Q–%—g§‚ù¨rž<ºËÿö¿ÿÔþôG?æçþ ž|üÃAÉÕå™8nl޶†¶^BÔ|ñÅD/Ÿ¿â¿ûoÿû^P‡œ›‡\9¸±6¤fƒ”õâ½ËC©˜¿‰ïÚ¶L§×qyyÙß»Y–1¨*‰i^]É¢n‚À7Ï.²ŸTÉ-Õ·Q§8˜¤ 6£M 6¢nÎ [r¹\Ê^&¦Á«R+ÃC÷uã‡ùÊß'v©µû|ÃpWœœˆ]¥6½h£Óù¨+¢Zgê­âuÂ"܈ÞÝc_?Cw‡ò›øu“ÇÍv@ü ·Î--kÐXa=…>R,ÉXõž©‚Ä÷$v®õc™ &›âB·^ˆÙb3ò–Ü]! Ÿ*ÝáïŠÀb^’ïß:@|–±0ãÒ½èÎw ^9ã90–¾®‹Y†h}¤m5YZ»ó‚¶²^Ç 1%ù¾Òççl]¬ÕÇ{¿¡—¬ßs7µ’›ÅvÛ~ý>ýa»qû½¶M[Ç;Ý4!Ýü;×Å£m¢Ôö¿‡?ªˆe›Æ´ík¬Jh:ZØZ(ÑFlË6~ßqSµûcõ÷/\š–ëV'­l!9,¤ë^|Kf*BÔ8¯ +iMÁËÓS¾zöšÏ~ÿgçS®gc ¬.ðQl‘ư]+œ9)eÓS›Ä; X¿ ë/m7Žº`¿ r¯»Z_Vt«E9üUDÇ°Š ö­r‘š–˜NÀZ‹(a3•ºÎ¤Àh±Bj“ÜJɹDªéÄ䇖ÀfþFh'·‡‰(­{€»I­rFG²ÔN"/ˆ5/S„Ø›! ˆp6î“dõ…?¥µÁZÓÃÜ¥e¬%tq5 6ë¦öb½Uª›HlN¿TrüÄ©ÑOWYUתM5Ø{‰ó)ÖÆ´ñðI ]Y2µ6ý‹‘6 f;±JûðºNB¢Y¯¼]kþ0IôR1l É»{Ì*Mè,Úà]LÀR™æ†ðÞ‰K)¹bp¨è‹¾ò7&ú:Æ/†ÍF ‹µRxïÖT~¿âo%ÁP`íô­-ª«VpdɺgŒ’£‰ÚÊÛ£ç↩•3¤—¸NM""ˆø¨ LI5ÞCW»Øj;¾K>ºÊwpª (KV °y1c>›qôú”ׯßòê»W¼yùŠË³êùËÙ9¹®UáNd4ÌÙ[ö*F#+îŽPSæY(¬¥*K\ .²l4ur&{]T’ëT„îŽ_¨~ÛÐs”–ÇÄÔ!1º®Ô‡6‰÷£c¤Ô†ÝAѽvvÇ<úø1÷ïqpÿã»ûD›¡ÊŒj¼ÇhwDŒ‘˳SÞ¾xÆëo¿åâí,—Ķ¡YÌ * išºæòòŠÉtÆ¢†e *Ó)´ªÖ~–6 ŽÐj0ÝæMܱ],Ôt¢³"1ͼκ² kicèðØM¢4RS ”6“ûÄk›ôlêÅRÁY‹Rš…®Þ¨,xòƒ}~ô£ùÉ/~ÎÎþùxˆ· c3Š"§©[NŽ8}õ’·/_ðúÕ+êù¢oÐq©©¯užEë¨}j}5"Ry%k³ÞÚ¿þ’_Ÿ4wÜ=ÏSÜ•"4Ìg×äƒ1ÃÁ¨? •Y$KÎêáxœâé!±äù7FaSäèÝëcfS¾ÙÛãÑýüì熱¯!ä¼|ó’_ýú9zýŠzrÍb2e”—üð“'üÙ?ûO?~Ìááa?ùFÔuÍ7ß~Ç¿ù7¿æõ«·\_ÏAÊÁH:2g Æ£Šá`À`8dX0™<ûÊha;¥Ÿe:[puqÉäzÊÕÅ%‹&;-J£—¨K°•Ø}!¤ÖJ4Ê(LVIÔY­«‘µÊª@ ʵ,æHÜT)´Zã­ÎÅme,™öŒ‹–½aÆþþ>»ãE™Q†²VŽ6pgw‡´.d²Ûêħô„eÍÁ cüÉCþôé#‚–8àùÕ5'GÏøæÙ+fµcïî~ø£ŸòÉÄhgO"ìYŽÉ,¾U,Ûš6B‘%’Ö\í¨ª!mŒ4µÇ÷QnÀ·´*àƒ#øˆ'7$Ý¿*9hskÁZŠ,#K×Å»@½˜ËtX{wWZZ©›FXIÆÈþN Þ@EO”vT×´rh+¶©óžå|Æt:e6¿æÅ³çœŸŸs~rÊl>¥­›Ä±kÁ‹¬ƒ.‹#7’Û b¤^ ì›nÏe-"HìÆEEðËL½¾¯ëàíÝÁ½íwbB-ÚÙÙÁkÍÉå„ë« ¾­¯^>ãÝñ)ÿì/þ’ŸÿüçŒ#´V\O'ÜÙÛ¥ª*¼wÌçsÊ"ãàà€j.n°<ϩ뚪ªX,f½S!Kq­n-ÐZ3ÚKtâK.³ûsØLà<¹fêfkæ×3êZÊ$”5±“Î]¡µÆÈó<¹¯ÄÕ3Ž©ª m Åp„Î,¹Éiš–éÕïÞ.°Z“åŠÉÅ)ËÅLâw®%x×sÛ|:ô…5xïê1V“)ÙsJ4<[5M‰Î±X,T%!64ˆÐÖ¿}Ë×_Íý1ÿä§?#D‡ÖŠ¿ÿþžÃÃC~ñ‹_ðãý«àÙ7_ðÛßþ–çß}ÅÏ~öÞ?àÛg¯øWÿ÷ÿÅëׯùOÿóÿŒGOžàÛ!Óéï¶ÈˆMCÓ8ÚVÞIß|ó RUeYöémN„΃íþ ZVl¥mÛ2 X.ç ‡.ýì/^¼àêêjƒ;3Ç„zñª@[ú¸“ìnq‹Ü02dY–îû•PÑq*Eè Éý¢q!Hr£w‚Ç)³­]ôVsÄÿG—ÖÖ&9,Urpt÷´pc;¬ i¨};‡Oë•°s›hpÛϤÔ&@}›ˆá:\ÎͶÇ-ŠŽµEÔ¬tºü´~û½ïKöÌ›Žµ–0Ùl~ï1Œ:cƺ°òaîXèE*ùšº¥™N¦®kLHi,˜ÂQÊ‚N±5p>AÜ#X«ÐÊàcHéݧ|”AK28 dé\ð^/D•xÊ2'xÄwqÚ$`9¹Í6š?dléþÓ³®·è*ë÷O÷9®‹œ.LÔ{:Ã6ta´-¦xS¿ù>l›®sÓ‰ãͳ¡úàŸÿÐgwÛ3¿ík® bvý†½ùú5Ù6‘fó¾òÞYßÿ†ÅY%ƒy—ÔÚ 1¹ä×ɲŒ¶õD›‘ ÇLœáËo_óŸÍ7Ï_3¿j^c‹FçtLFet:0Kã˜é]5\|Ïö}ÍÛì}ò{ ›£¿QWjÖ,Ä7•t™8¦IŸVÝñjR똢·w5™òÏ F ßBõ ¨ëãg™•íœ=(t (•O:Ë›Ú ;¡·;€{çÒ½ ݃²»j_xO2c\/®”€ÖuTk?i…ñ>!c¬]MÝ:–½ãBZÓçeX›«¾®7¦úV¥;¦œH1ml}”H·p+¥åé"„>eŠSC˜Ñ Œ¸^lb»õN¼ÀÓäŠÞɦÚÞÅùx{GžQ`µÜ7!ˆ°¨Rü£›®ôS>Er …þÞ’)LÇ8’HCz˜ÄéZù= R¨mA šÆCÄ‚ÊÑùˆb°O>¼ƒìa‡{D;ÆéŠ…ÝGÙ:K1°ÐrvvÅùéÞ¾:æù·/9~õ†‹Ó3æW\}E®jö+ÏÞ(gWQU‘ÑP±;*Ȭ§È£ÄMd<¬(2iNªëšvˆÑàƒê£q>Ⱥ(î°L„”Î:®»éà†‘ø/¶ùtèÐFJ)´•M† Ç…6h"š¢ÈØßÙá£'øä“O¸ûàáá.ªÈ„s0.wÉŠ­5³ó+Þ¾~ÅëçÏ8~ý’fv…[ÎðË9¸¯``V×Ôóšù|ÉÕÕ’E:O"„VÑF“]“U=&F_„¬´u:®¬ÙÖjòÜR· 1úÞâ°p–u-¨¨úƒpÛ5Zá„}`,Ñ‹pž­ªTWqJ“‰+ xòjÀý‡wyòô?ùÙOøÁ?%V˜q†­d ´JQϯ9~ñ†WϾãèåsfÓI4&R·‘¦õÀdQpU–cŠ«Å|L%"݈`Ët* º+QÒ»Ù£]Ù¤)M<ÁáxuSð¦–Ò4êbû65©Ùh(MkÇG'œ_\ðÝËèLÓzGU期ŸrqrŠö‘ÑpÀ½Ã;üðÓOù³?û aEiÇ IDATž’—ÖB–X“sqyÉ—_~ÅW_}Û×G ÖÔc¾˜a²œÝÝ]î?zÈáý=ã!ƒ²DCn²¾ÔÓÅäÐUGÒº$†kž ,Gãy>$h‰å'EmÐÔhLðœL¦d6’¿™ Õ%J{ªÂ2T ªŒ<Ï(ócUEU‰PUU^‹K9v&¯’ƒU1 îŒ9|à¸o—ëùŒÆægà_=ÿ×ÔmàqïþG<}úOؽóˆñÁ>£A‰ÑÚU5H¬Æ®ÅT\ÞA}×Ð"EË©4FÒ åÑ{qð†Ê\bdEn‰ÊàBM0‘ ­o‰Æ@Pd:¹–\ôEÐ:#KN¥¶m™ÏçdYÆb6ãòòœ«Ë “ɧ''œs99§­³)‹Ù<í§V G:*r²Ä„7AŒRU¡´& qdŠ(×—Ù¶­ë£ªSèôþìZ û s’ºwëéÅ9£]öövxòä ß½~ËbÞ29Œ½æ_þÝÿÉW_ü–|ü ñÁÞþ{xÀÃG÷yùüõlF[Ióç`0èù)+ÁjöîâFëߺ¾´âÑ£GdƲ»»Ë7ß~ÅéÙYAñ®èi— ¼(yhLf ÎáÝŠÔ ¹l­¥iç´Kµ9³+Ã…Îä{,r<~‚Í &­O-Ûž««+–³kŠÜR7s|ÛкšèZ %ŽŽïP‰iHj5ÑI±—pYZŠtˆìÄ缌º]›†» °M , îÝ»Ç'?&„Àƒ;ìÇüÿå_óàÞ}þüÏÿ\öu±å›/>çË/>ç·¿ûœçß}CpŽñ Âf——¼|ù’ÃÃCʲd¹œÓ,ZZíÅÞKZkÚ¶åÞ½{¤Hªë¯×m¢Ç{C\ÅhºwœQzùe­ðlfuÍùù%''',‹ÕYK²¼ë°\öÎ6Rd\÷-‹)…¢V0ñ."וÄ#1ã*/(¬Çtßs–eÄàW® ¥Ö¢Uñr˜|ŸQàV‘jíL´ùgÓà]k´£ú}·Ö7 )л¯Ö›Òn¶÷¥Ø™Vkç½Ø7Þö3¬ÿ»M×ÚvpvÿlßH5mrÆB/l nÆ;'_ïBHÎ4”œ‹6Ezå¶íØVzÍ¡uShÓV%‡íæÏ&ó|èEÄn0¯ÖœlR•­â²J{.D¼W„¨pÞã=¸°)t«5N·OlbÝsuŠ®œÞ úÆuȕđëÒ&!ñ¬; ®‰Cïkêƒn«ÎÉÊ Ó6AiÝy´M_ù>Gâ6‡ÔM]g›û²ýÞû³}kb\‹ÓöGãtv“]åm¨ÛLQúÿ›‘kný»{wô÷} ·}3ëÈ÷6 nQæH æþk«€ HkÛoØUnñfÀÅ´æwßñ¿ûšïŽÎX6žL—©qÁ}w¨—Mjᚬ9š¤*7ö•½!ÁÈo³úý1 ï­Mk7ä¶ÅFk Ôéšàë6-¶Ò”´Z4ƒ‡Tfä×èD‰6©5Ã$±!ϹÕÉQ•šâ¢ü] Kk‰V¡P¿sÈßOÚtJ¾ÙšdNM7V¬*S»+¤…J£ Grܾ#‡…U Ú#©ï»»ôà£{ÁÊ;YÀ”jû˜^–%8&?‡ÖÝá,5á¥è[ç^“¸äæ‹BënámÓbˆknˆ´­O.(M–ñž½ØÕ?Ä&Á×׿c¾ßW„†<)u›uέÕt¼³7w,/R¼JîÝÇåû«ñÑ ŒIùþU[CÝÔ8ÁB•tv)WX .qBBt(VLß9 Õ–¬vXÅ•+¯¢çÎ¥’ͨ‰©¢Z‹ˆ©-ѧ—³YkÜó¨ªQm4°bUJS7T6GÛ!*‘ ö(Çw±£;Ô1Ã;D;De#Êá°%‹EäêbÁùÑ+^½|ÎËç/8;~ÇÅ»Sf“K”kÈ”cw¨U»ÃŒÝ±bw¬ÉsGž•NƒIñ^kdBÞ4 uÝ@´é¾“Z„è‚Àxcì›»µ)!}V]DrøÔ©µ«Œ–Ú U¿ùÔÉN½“áWz Fƒ’ƒý;þô#žã“O>áOþä|ôä)ÓÉ%ó«+B÷EÓ4_§®ë>B¸_Ü©¸¾¾¦­vGcžþô1¨ÀÞÞïNNúìÎI&UÄŽ,W´í2átOIpTF£¼줴«í[[k1yÆëPóàác”2,¯¯X.k××,æ3«iš%FEœ“æLÓМ´ä†ú†3q]¤ÈœÇH ¶wÞ¯‹X¾{ê9Ãj€®*\ ?A+ܽw—‡DXúÉŸþ)ÿà‡Ðº…{îñðÁ=ŒÍùý—_ÓxIc F{û|ôÑSò<“vÚ$`†äT¬ f³Yï¤iš†ëëkŠ¢è¯ßº³m›Xe“0w3f³FŽQ¸wMÓPUËeÃt:åÍÑ[Z$±¡ã‡Ìçsq^¥Ò.’¾Š#ªò~ 0¦w¸ ©;AõC‡p•€×.ø¾m½ ï·þ±IÛ@ïÓ°Ô:‘(µµ§Ar·Ðk®–Žó¥Aq[”Rmý^>ÁÚÊ8º…ݳñêÖœÎ4Ò5®®Ÿ"j3%B·‡T·4¹Þü:«}ôÍÒÆ›ÆÛZènå`÷M’j#†*ƒðÖ%QÄ6~ŸÖFþ½JâUP´AðÎË£Ú8‰š›/ÈàÖ¤Ÿ«ãn)V±[¤a×§3ÔVöØaåÚ7©P-¦r¯õeßJê}j#\¿–qévÓÁz[ôïæ½Ð]ßõwÌ j‹ëk›Þн»¶mnͺ5`ƒò¦¶ÍÁ£pKר¥în~훈ªÛ"‹ëßÃúgBÖM؇¦·ÃÃâñºùCµª•‹D4Ñ T‹Ò8 ñŠÍÑÉ¿ýæ¿ûêoÏ®iB†6•Ô_†˜xW¬E÷º†7¡Pw*kŒ¦"éÃÚv¡·)é\Õ¬îµ?/YkµÔ(BL΃4½±ExS:©ÕâRg•1éßEÀD2«ÈLº‰T×(Íz&‰W&Õ Kà³Â% ²)L;“>ÃÌŠ‹Øƒ8¹Œ,ŠˆVÂ;ÊL¯gÆ×Â/19q>J5½÷ß9”;QG'öRR¾}XEÎBj¼0&}.©Ý.·" ÅÄR’¯)±SÂJ0¦ï¯ØW!ºä|JM/¢B'âõÍ“:­IȳÙÚïäÒQ÷¨Îc×¹©B©50½8ÓoÈŒÆZ°¹~ϽØÔ¥2tÅæ ÝÅHì3×:¢Z5H(%Íž².8¢k‘#Î,«PÉ­‘”ÉE%Eë/?6‚‹É ´RæeÝ–{Çfª¿nz­Y°ãôÂ~š*­ :'ê,MUŠ3TpÄ9Ó½´•2ÉònS v…ö¶Ø#ìó±Aµƒ/whóÁTèl€WcrZ ž\ñêåïÞñòÙ3Ž_½âüôírNhgØX³3ÔTìdì 4ÃBQžAÉsC–YŠLKk[×”êZË™xcD›,Y›…ÉãBŠÊš®‘Ò£•ïnD•J\9“<3:ÉUZ®½Ìb¥¥L§Íމc'ÊU™gTeÎÞpÌáÝž~ü„§?a÷Þ]ÊݪȈVQÞS*Œ4³š“×o9~ùšóã3.ÞâÚ–f>c±œR·K¢ ØÜr½¬9½¸dY+–Ë@Û¦¢ŽnÈ-Žå7 #mB¸¤Ô¢&_&Ü m2q®µ>> û‡üó¿ü·ÙÝ¿Ã/ùoøì·¿íã/÷¥±H„2K@â ¢LMÄi‰RÇ” ZSZÃpPR +>ýÓðƒÿ)w=b¸¿K>¨ˆe·–;û‡¸ù5'/^s~|Ä›ßñæå ®Î.h\+æEÍdzÍt¶¤ieèMF@clAÐ&ŽĹ`²U+Ì ¬°6'7‰Qä¥%Ò‰lÐ7(I¬^õœ‹Íä`e”<ϵ«Óá.R *šÅ2û"6ý™ yYb7#E6(Xy^Š(çPµÃ8ÏÞhÈî£Þ¿ËÓ?æàá}²AIKdo8bP”¼=>áW¿ú ß~óœétFˆ›e(¤ä6Y¦ßljÛ1U!%ITϪÉ< h™Ø³¢l剽oSÜü­ëPöua€Ä~Ox{ïg½P·ÞþØ»dXì#ŒRX§JëžÕå£ ¥½‡Æ9šV#®4NJ§´MëPú~äyDöyQÎó¤–û˜Úãìø”×/_syrÁäôœ«ÉírJ¦<¥mØ©w÷2vG†Ý¡ˆW¹ (þø)÷> ”x+½Á`Ȳnøæë/øÝï~Ï«—ohÛˆó‘4y–aLN•+–Ë%³ÙuB \øÛo¿åâê‚ÇóäÉÙÙçõôjÆd" foß¾e:1™\prrÆl6ÅÚœA9Ä(ò‚ýý;<~ü˜PU•ÇéþˆÞ%vZ Ër†£ RKâr9çäø¼»Ø›—‰°I.u±BÖ¼ måî•&+,¹*úGߊÅ^ÛB¿>È;73ÐàÑňZyç¡§«ŠŽÓé s4%·\ø*©ÊŒ2·ä™¬£ƒÒ2ÜÍøø£;|ü`7#¸ïW“ Ç/Þðõþžr¸ÇþýGÜô)‡÷>foÿEQ¡­ð@\TxP˜ôÞÐ8Bçúþècš{9$äYE .xše`Ñ6´KMŒŠÒhZž}ñ9ožÇ»£·\Ï®˜.æÔ¾eÒº¹l¤Ù2«øëS“”WP'"µð“¢1£QÆÐ¶ž¢(Á°l—Ì' ¬ŽŠJ‘”Ž£¨Ö @³eâ¼¥¹ëÑ=Ç­“wnh[.Ï/äý"en1fÈr¹ Ïs®g¬54Ë%W×לœ0TdÆReY2{n’µ–år)Õ•¬„®~m­8}’óÆ9Ç›7o8½8yQ– ²¢è[©ûÿÖâ âd>©òC â¾ ž"+z·ºBÜZ>zšºÁd-ÏŸ}Cnr‚RÔ³…Yc›P fã@"Ž{¹Æ­C@¯©W.yÙ¯¤½$›x©ÝÏï}”5·m(öî2Ÿ^áZ)(Š‚élÆ×ß>ãÛg/¸{çï¹{÷.1(ÚfÉåé“ËsvöùÅýÇŒ÷ï L†°¬e}”Kå²?2Váê¦ó<Çfúÿ*ÕÏwûÅ›í‚똖{«su¤Ö¶-£Ñˆyž³\J¹Ád2áz>')õX¯°ïD¤,ˤezµÕ¹\räÅ ‘*¯ÒõêßCju~S=ÛIsmrw…¨Óg"¿—4„]?#­—Dþÿ•Ê>¿oñ5³*í©ÔZssϱ }:ãæµØvÆ[o®orÍ9y[;ÝÍ3·êjÝÝdž·¹nèEšÛZ,7Œ%¢yƒµºáÜ +ÇÖ6 මäª=Ù§´‡a-‰–ÜÃ"ŽwqáîûsÞ£43{iZù¯œøÐ‰§KÒ<*<‚ˆ‰)´A+a°éhƒÇ¸ˆó¶oÞt1`ºŸ×‡>¶ø¾[è&\ܬÝl°ìnÞCÛ„§›âUHÆ”›!ë×pÛÚñ}ñÁõïiuSØZ?ÇnK­Ç[7ã¨k ¯ÅJïݦÝÆíZoQìŸAÌ&£-Ïó[-g7¿ém9ËÕü©4wÿ½iû]E¸DÉrhš%Zçh[°tÂJˆvÀláùý×ÏùÕç_òÝËwÔX9mÑÊPX ±F'h¸1ŠLËôPG޲™TJj5£ê²±k-)ïrÛ‡óg½y#¼g1ïºÒâ ÐNš¦tâE«ü´Õ£ 7Òð—IyÑ9žÜfXÉ +®'$Æ^dÒN¢ï$z¥„ ¥‘¦’¢0$eZQ¶ ¾m±™J[qß¼À¨3kzë¦J¼ŒÕµ ¨)2Ö„Ó‹6Þž±ƒÑÇ 1)ƒV–šK¼‹«¶;Ÿé}’'Ï2´ D_tø]šÒ #Š4Á]=Ý”HùÐQÑûÂõl™»Æ¿Øo¶P`¬EGÓƒ^•R)æ‰A`¯­—ÏÜvùøµtÞË´8µ7v`T™žT»ú™µ†¬o6’Yâ°Î9ת £mj\rxW£m!ÖüñÑÉ¡× ØÝyω!J34ÄrÞ%·`€°jÕÌRó¡w±Ï´‹Xåñ.`d¹<Ë&3+~BL#€îEÛm,bbn (%ì»ä‚sA‘«­-1jÚ¦•H â¶"PT;̆„lŸ +(G(•tN0%Ádå¥-g§¼}õ’“Wo¸<>frzÎääŒë«K\ÓbudTÂh Ø Ø+v*E™;ÊÌ‘g‘AžQ–CŠ,ï³ú>–óå†_é¼§mQ[–Í’¬È1…Øëƒ22!-h”AEE®¤E%SÐz Ú!ÖX›ƒÇyÚ¥®—C›œ“1R،јîñä£'ܹÀ÷ȇåxˆ©rÆã1£ÑP6ÇÍ’“¯Ÿsôö5ÇoÞrq~ÊõÅ„z¹L1Nñ[.CÃlºd:[0_,©S«^zB‰¨ ÝBî·Tm´M¿*êEËáÝ{üüg?ãç?ý1ß|ù9¾]BâÕÜ=äòâ ;.FL†×½;áèÅ+~ý¿âÝé™(æAaB@›b»Q¢tD2ļ1 ºõ”…|>|úÉ'|ôÉcî<< ä倪ªØÝÝ¡*Ì'SÎŽ¥mïìí[NލSÚв¨ç\Î&L5—S/1hM?…:Ci+îà$ÅG[œ6ˆÚ4Zmæ3¦7ÚϬÉQÖçå ¢›gäYŠÆeÞHô;'¹ ÜÃå|.â‹–Á„¸ÜlŒEË5Ë«¯ ßà5&™FO©5Üãé'O¹{ï€Ñ\3Ãx4$¸–ÉÙ9¿þÇÏx÷îœwïÞ±XÖ­¸CQ„Ƴ»›3_.p!0 1F ûÍÈæçòì’“£¾øýÜ¿ŸÝÝ]ê:Eä¦Sf³ÙÊ‘§¡(*vG»iHîÙ6Pd%»ã=å<Ë©ª‚2Ï“4R×u‚0·h".6Ôõ’ÉôŠéõ› ‡cf³®m¨ò ­5‹Å¢wh#U¼a=š¡d¼ ¬µD±VaËJÚ_}z%ÅÕá¼»žóv÷`ŒÞ9Œ*ä{öž€ÅæpéàbÒâ}-ïúPnÎÝQ¤™ž²ÿ—?àáý’ØÊ»éÁ΀öɈƦ‹š³Ëç|ñë¯øC¬ØÝ?äÞý‡Œ÷÷Ù¿û˜áh²ãÊ@[9´â÷í-ÅÎ{ùܦiJiòXb¼'„ŒÊ|ÉËŒëé”/ÿðŸ}ö¯9~ýŒÅt*b‰“C¬66µþÆ(Ž´vYSd9.x­|€ p1"%8¨Š!.vÇ;ÙÝsrzÌ|rÎÁÝL%%Ÿ IDAT;¸ x´ÅÙÝÛev½ Æ­Mƒ„$8t1žÕOÄ.c4¾oÇ“·p+WnSc >Å,á ÅÍÞú&ñÀdC½ÄZI­Ø&!¬’½–oÚ^ˆì]TÖ¤½a*f‰lDX;d1zãÀ”—‚š´¯\6 ­Q¸wuÓ ¬´å×—ù`˜b‘Ëé‚«ÙëþÀéœÁþ=qqhÃäºÁÇ%Þ‡^¼m‰¬"yfðnIa3Ù%ñ¦c˜Yk% êdï×EÂÖ9FÝ«bŒý}X”eâ:&the9WjÓr~9áÍ›#Êr@]KìÔäÅ bÑÔ,ëe/^­3X;ófüðQ]ŽÈþD+(ËRÞ3^ÚÛr›¥}¨¼ËóÌâ|›Î7£K2g“sPLÜËuá&t‹â*±»sÑÆé|­wá;·7L¿rV%×XL9­•¸!Åz·8[ºÁu—|p11¨BǛӽHé}ÄæfSüP¼‘ÞøÙ¢ß`uBì‡Þaƒ9æìM¬Q û°v¦Æà—l0´ÎS·ä|Ö´QxŸÉ]'i+Á–Xc®ÃIjĬÐ*ik6×t.Ž÷’£1Óɹ'L9¿éT™œì†xÒ=Ëë:FÛº ¡s½©0„Ð>ÛÊòºˆ¨Öš<ÏqÎõÏl×fZUU?¸Ø&¢Fä²~­|J|¬‹â7sÁK’CMâáž®zXèÅ¿®•Ôƒ±†è;×”Z=©ñZž½QH´.Ævå ]Úè&Wlýþ¾+<ÛtDÚN¡ß¦¶®«‚·AÅVÙÏx£½A¿W¸ùÐ' t½ÄXÚ²p‘UPìðúôŠ?|õœüìKÎ.g,6Ç;±F%è¶<Óâ, p.‰F"è$$vù~-Œ×5këÛl± 6ÖÝ@·Æ+o|V“‡Ôg’óJ¢“`=¤ˆžZA ¨ ☂ž]aµM:9X㪃ÂWyFžY‰y/n-#Ûhc ÏRk¡2Z¥ÆFE‘z˜«Jgº‡Ÿ¸ö€øô¡v–›3™¸EOðIœ ¦Ùu#ÑªŽ•*©M&/ Y0Bb)¹ôý„t¿A–Ù ƒáªa£³ØÆµÖB©w]¿O»h¿ÒÝtF¥§éYM«{À÷Ùt–xÖ²ê²ÐØÜ ”Å7-Æètàê8cÄÖ¿l[q–Ù´aSzÃT2á¾ðSH¯@Dyi‘Š^÷.)Á$AÒ%÷G:ƒ¨èðÑAlì2àUD÷âè2©Áó†EXoäã¥ÁR6úEÕ/•½-·oQ¼mÛÄ-Èúúf‚"FM4^‹eª}ìð[îc‡wÈŠ]œ®h¼Á©—´Á¢l‰1%Mݰœ/xóö'Çœ¼zÁåñ1‹‹K–³+Ü|Ž -wF9E® 3vG£bPЬ%SžÑ('3‘"3X JyZïh×wWÙÅ[¡ŒÅhÍx§À¤2X­˜Ï®—-Ø’Ìîâ¹Â­”j‘ç§!àúÖÁè‘XS·¥¸ "%«AÉÁÞ÷îÝåáÇÜ{xŸƒ]L•1¾»O>¨ÈËŒ¢(Ø 0(ÎŽÞñæÅKNß¼ar~Æùä’ùâZ¢<¾é‹EͲnY,uí¨ÛHðJàÚQØN—€¨„k¨„É$Ç_…ó 1‚5Ã*cªÆ ò"×ïÞñê»ç¼yö‚ã—¯i–s–Ë%KW3k–\\_2™ÕÔN 1=«Qi¢îܲn¼»B‹$ô)%‡óàƒˆ1Š#U)´^ ­a¯¤¹P‹K*S™üšÖ§²Êe¾™6“ÆØ<'Ë iX•1®iñJîת,±Ú\\_Ê;\IdwP 8ÜßçÑã<~üáÞˆ¢,ѹÁ¨QiZž}û_|ñ%—ç ®ç š´©PÚLU.p5WDuQ«¾$FŒÉÎÏ/9?Ÿ0ŸÏ˜Ï8×2 ÑÚ2ÈaV)Ù´¶­¤ŠjHÓ4÷Í_‡‡ÜÙÛa½Ý1á8¾^¼xÆóßñîí§§'œóüÅ./®’Phq)²ÞOp-&ÏàÕ'†aâ)-çôû;Že\ƒ¾Æ(×%¸mläTÀãWû"©„†Ô —öFòù:‚Cã¢ëáº&h..N™Mn~ŠnJl\ˆÐf+”±LsÆU΃ƒ]šÆ2[æsÇäè Ž^8f EVîrxÿăûdÕˆj0dw8fÖ,±YATŠë¦%xO–—D-ìÇEÛJ,?xJUPd†ßökNÏOxýæ§gçÔQQ£XÖžÂÈð-,D(Ë”&³FDgEšž‹[-Ï Ú™Î®íìñðñ}"ŠwïÞñìÕü²¡È3ŽŽÞp÷þ>?ùéO9:9b2™0[,)‹ŠÖ9)8ŠªB%Á@sÙ{eÙËo8ÖY5ëtm5mÓP75'''\]]Ë{¡`3iœL.äÐZË~AkCݸ>Ó:‡žº®ûïåââ‚,˘L.(Š‚/^e£Ñˆƒƒþú¯ÿš·oßòÿøKþð‡? QÜ»{—ÿè?üø÷ÿÝÿáúùå/‰Rê`M–šäò­ûýÛq!ú½²¦õßëƒK o%8´ð…4r¸ÑÝKl}@¬Q¢©[Ý+’ØÄecÐ!Ò>®mÞu.Ùg­ösòý¡,ш¢Sõ{gÊiÍÌ…ïÏ%]ÜÍvâuG¾5Š2Ëz$‡Nާ{÷îmQ ,e»ÁnØpj¬Î@aãzô¢ª?(v÷dwÀ=??OKiÿ[UÝc¶µ}muÅ51Fw"ìàýÆy¨o"ì^|¿gÉ„ío‰ ©ääçFÃõm ö®µÔêõ{rÅ’ûnÝ4Þ¿—¶4@®C¤?Gÿc[ÞÌîqwÖÅÍ÷»Ìé-ßkŒqã¹êþxÇh’!|Ü|ï„.ºªÞËwE^ßǶ¾É[E»¯×GLßZ©5Ž08J+·˜X½±x†:!*9¯¿×ŒžÎszSìÜæ¦Sú&CMm¸¿úw5›wÕkv­1T½ç¶êñ·$´nÓn&ÕnÜ;U>›°•¿ãŠåÝ›+>ÐB¸ÍE×;¬ol7ã„2îl»'>ÄÕÚ¶Üö9®ß_cúìí6@å¶Ýûð1Õ³¤:åõæÂØÿµ²ßÇµÆ CÄ(‹óÒD˵ªxu|ίû ŸùœË‹ÁkŒ€·¸ÈТ à–XÓ½d¥ÅG¸F­‹t“ë´¨ê^†QqRÛ&Î}_=jY[ñ®Vt¤8ð$.’„ïÔŒ”Ú2LjOI¹<«+´‰tÏAÉ3!È%|œ8ŽüXb€›$‰jŒj¥éMwn)×e&5&Ò^—y7Ü\h:ëoo5Ž#œÔ>"‹'Fp®ˆ^r‰ó*¦v©Hݬ¦+™¥Ï±«4Õ)²L®«Ž(åû…²û3ý‹´«ííú—V·iÙ¨‰ÎÓ‹L¯/â7{±ÓÝb×­šÆÄ g¡LâuÏâ‘E4¤öô<¤Œ½1Òd˜u¥èö&ö`ø®¢{9‰ûËã‚&Ë3@µ|­‘É«±©»N. ÷-1´è$²‰xð¡%DŸj†{,ˆX·¾Ö²k@b˜>½4³(‘F”J­‰7Öuã¹ê}¾Eù•`çC”2S ² g†¨b»{|ô€X‹]j3¢‰†EQYF‘Éœ¢©=× ^?Éé»w\œ¼czþŽÉÙ;ÜâÕ6äÊ3–0{ŠÂ3䌖ª€2äÖbmAa ×Oë.‰­²‰nüR¦uiç×óÒ¢ìcÀ»@ë”ΘÎZg(#Îfž¹Ëv„³KšV£)Ò3#“å4FHè0Q£Ãà(©vKÞãÑÓ§>ºÏûŒïì Ë”9»w÷UÓkŽž¿æêôœ³·Çœ¿{ÇäìœÙl*±7<.8jçi}CãZί®iX6h×Q¡ºZâÐѬÚíTÇ ºzy±ÚÖ¨(q”Ñ â`wÌþþ>y1äO~ôž~ô˜ÅbÁäê ZÞóÙï~Ã>žóºæx±À–PfÔ­#›«äðLðÁÖš\+lôäÊ,çÑ£|üñÇ<|ú½‡÷(öÆÂË UU0™Œv:åìè˜ã—¯yóâ9gïN¨ëš:8­cÖ¶\ÍLf5M+{ÇV²(Z¨Ðý¡¬cÈ­véVqm"¹íūڇ$A …1¨T§ˆ 4Qž%`¥½{RKK£5:³›ƒ–Hâ` ‘Hc ®g4Jqt.—âpQ‘½ý}~øƒOxúô1wîì1 1VãDØZËåÙ%_}ù%ß~õ5çgWx |Ðh‘g™l^[/cq‘!µhkú½€JñIÒ¢ »Hž”Å,7ò¬EGt2$ñ®k<'q7œ8{wÆ|zÍÉÑ1Ož>B‡Èîx,œ¯Ö1™Løî»ïøÝï?ãøø˜‹‹s&“+–µÇš¼ŸÄ+%%0ZžÑ.ñ*Áõ}rsGMP†è"ViHUˆ»7½Ó8ÓÙ¸K6éhgl/C(áE&ÜA”&ͼÊhÛšÚÕD"¦á_¶¸0çúò˜ÙõœåLÑÌ ¼»JE#°9ã"'’áCMeŒ;0àÒEã5ïή¸xó%'/¾ÀÇ •ìÞ9äÎÝCž~úŠÁj¼Ce3á·™È2´âЩ 67„ÙßNùí?|Æ¿ü»¿c¼{À»÷ù·þé¿Ã´®yþü%¯^½ öK2å0¦fP´¬­±s®ëH<¾éžCV䔃‡÷ðÿ‹ÿ„üõ¯øŸÿ—ÿáÎî{ã³Åœ·¿;¢ Y6Kîß¿Ï~ø˜ßüæ3vvvŒ†4ËšÖ;r›õ%] ôM‡…Q›"Ïm‡$ÚUTÃñÃiZ´è<Ã…@ -ÕhˆA1ŸÏ¹ž7„ {‡ªªÞo€×…ŠÎ5xqqÁÕÕÎ;Œ6øàùæ›o˜ÍfD%ÀnáÕ‹,fsf³ŸþÏŸ?gÿàJEïp ¿AËýª•în²€¯p Š.µßDÖAã:ª>’¢BÕÇ´èÅ|Œ| ¬8ʉI±ÞJž„-i^ ï‰-ݯã଄€ôwGÙ˜øQÊ‚K· kWMr0¬7¾¥""¥ú€Iϳµ•çÄàú´I³\r°¿ê×oqŒdYÖ®=j íÀ{QÔî^rrrÇ…Ñ™ÉÄY”ı¦i899Á'®®4d›áÆ€ý½ø«ïÛŸEàcãÀN4ýÁxý:j¥zQ@â é³WúÆÁV„°,í½Zµ~W19»…µë«6´œõèܶ3˜1)õÒ—â$ŽÑ 7û^9Åúz›P£R’ :ô*÷â6¤ŽÚr&îJU:‡Ê†ðu+¸^ ¦•v«‚£NÐÚ8‡#ƒå¨Uâ@˳a߸+³êf!n ôÚõ[_ÿúäÑû¢IHù.¹°Öú§‚˜Z/BVëÀµ¶ 8¯Ò0pµ{Šëî­°ŠòÊúa¶:ät®o¸ÛÖ˜†kƒöõØàúç¹MêôqèéÛc ‘>V_?_®‹œÛÀðÞ¯³£d/ÜAbT½ËkSLj=´s~¨œn£urK\òCM‰Ûb·ëÂq»qî¯õÚgè\XS·“ X­î {˜l=C¹Íù}aã&^ËVo8¼”"FKÀ쥷|s|Ê?üæKþðÕ æ3Oa‡’qÉê«LUè/ÄʾJè*Kq`m@èêWUØøwÛr¨ªÁ|oqRÂ(êb`!øÇJSô؉«(•NYî.ž×ÄÌš…ÚÕ­a¢ÄHöNXiê Ðh%SQ­¤õ+qädFQä«Åh4)V'/ik ¹•ƒ¸Â÷‹.ú¶ž“ïyҦݡ£"$—Ò²ñýµñNj’½£ßÀdÙæTOõyùü´ñ=ó‰NPêyR+^V7êéê;@fŒHÞ9v‚—ê'=ÖÚ^À’»f}•¾™eî8^›„÷' ±R£z¦X6ùÆv‚Ñzô”UÝÈÄÆ;‡ó‘Û´ù¶X­©Ê‚˜ŽnÁÒ&¢q‰%’®ct„ЈÓψXêCKfSMˆ÷k×oõ³öZr’ž¯˜j½µ[Å5¶Ý¥=ÞPéûgQáÕ_i‹RÞŽÐvŠÊá±ÜÅŒÙÎì`²;˜rƒ!W²©›^×\œ]ry2áâø„7Ï_2»¸àzrJlfà–”&2XUÅxX2¬ Ϧ”…¦*4Ui(rq9åV6G!ñ«¼O„¹µÂ*©ÏŽxŒÎú¨,kIï%»BÍ^Дƒ1!j>ÿ×|qä¸ü{Ó&I’óZïñ%–̬µ÷éY1’àrIƒìþ Éô_e’Lú(“Éx¹‚H`fzz_j¯Ê5"|ч×="2«jÈ1ëi ºº23ÂÃý¼çâá³gØi‰®Kì^M9 ­aOW—§gœ¾ýÀé»Üœ]p}~Áüúßv4í^yÖ®c±Y d{ãè8ŸbP"^?A¦Ãq€N%·kL¿ÊuR¦Œ¨à±*€oé6 ®ÏOyò¬fZL‹ŠÚ„®eÕ@³^Ò6 ±uÒ:ÖldcŸXZùŸ¦Û ƒlKB€àd=:<Üçèp¯¿þš¯¾ù’Ͼøœj6ÅL*Ì´ÂT¥DòÊßløpú‘“ׯ9ý–ëó3VË9›¶aóÕšËÕŠEãØ¸ˆó²›@yšPE•Ö OÔüÖ½p›ÄÚü,öI`·â@ÛÊIÏiÖIŽã,r…HˆÒ²SÄï‰:ZÈë,ªhV‹ #¨€ÒX9peŠt·L¦%Ÿ>ágò ß|ó‡ޱÖ|ÚGi`Ü4üøÝ ^¼xÁÅé‹ùŠÖËÎd±eùˆÚ80S¼‡¢ê"Ï >;< é"˵ãz¹æòýxûâ7üæŸþ”-8zô„§Ÿ}ÉgÏ?gÿ@Z³ã‡Ì}Çr¹¤êÖÔšùù¿S†¬Î?±¼üÉés>ûúOù»¿þ?ÿÙ7¼÷šï^±¾ö´êÉ4MGÃÑTÁkLÁl€æÙçO™îíñ¿ýÿ;ŸNÎøŸÿ—ÿ•vÓpòî-Ÿ>}àÁã'L÷9<:bõé¯^¿¦í:^½}Ãl6ã›/¿a6›qy~žÊàÊZ+%%;N«ìÀÊNþ áÖþ¸óEYbŠ2¹†4¶ª9xðSh–óªºàêêB¸zõ¢¥ëRó`Š)Ý5É–}Áb±ý "ô|÷ýwXceˆ 5Þ98<âüã?ðÏÿüÏl6]o>~dŸý£ÃT` Ï1çcŠTÙ{ù#D%Ÿw·”ù$¾¥~átJÓôĦÄ;\*·.JE¼„|@Dß;œG‰%ß®kû½üî9ƇHa5‹JMË*¨Ü‡›\òÌÞ€BZg}j×Ó(\Ïž´…¦kBj¶}äÓÓ²3Ÿlˆé…;Ïz'ÒfBD rq„1½ +ÜW›Mÿw¥Sû¸þOš»Œ1Þæþ¨Ôfž‘'"º §H+¶ µJ‘ðdP‘×÷m ¾Ãi%%KÂÌSäAÐðkd¡ˆqØYö‰úò¡|vºïL:ŽoŽ…€Ýæ¶ÝÆ3FÑ].¤ñšp—sŠäp¹¯Øl76u+iËMG¼…5†èœ 8ú(}øZɈ(­½J'C…Ù^s²ØqK¤ÛI®ôÿÅ‘|†Û)Ø5Äü:¢ Æ óÎË^ÓÁAȾy ¿åfë‰Hq´w5 G΢]þ´ê;ÂUÛk{Œ[®¤[Ÿ+êNF⮀¥oý¹ÝkdÛÉ4þZk­4Ö‡±è‘.wiùÚ· Þ%TI¬{û¾¿æû\V[Qà{ˆã”]nÜÀ\ûiHý®¸+šÙÝéÏîúŸ 6ðÚÜ+ôÜigE¡t 5v2ãfãùýïø§Á¯?²X¬™Ðv²‰T!> áÏ8×ôM“&DÒ%nQ&äŒT±Åaž·Ïñ?±ÙÝ!ì!c1›cj¡‹ý‚­“Ê+CòHŒnû=‰9sR¤+³’äÓD‚ëÒÆX\ZZ§H"HÅ B–Ñ"Žh¥0ÊJà‘ @Y(J«(¬¦Jì¤ÝS”)F"Îuh:©ð¶r0‰Î÷÷14óK"/ã^ Ó7¸TˆÖ‹Wa°m‹ãHøWƪþFË@BËÇÄ`jÓƒ*éÒ³2¥B±Öˆ[!»œ”¸^ð²ß¢ƒù2Hñtðq¸¹ŒÎ7Xèù>lë"> ÀöåçŒqÔ숿C¶<ÿÿƒà'ŸOô’õîY+zä.k=œOSfYD¥²¬°&ƒ“ð—AöÄÌ õS.\ÑFY.t)²RûâÐØ·`æ¸èÈj :Åhè'fâ¾Q=ü3Žêåu¦»D«¡á*BÔ ,Š Ú`ªÇ({D(PÕ!qög&tv¨§èrŸbrˆ-÷‰Þ³¼¸æää„‹“SÎ?žquzÉÍÙó‹s´kh×7ÌjÅlª™–šÙÔ²¿W3­-Æ4”62)“©¦,EÀ;º6ÒŶª*=4 „ˆÎãH¬¥Ñ!Â0IõÞ³n6زNŸ_! _Î/®ù?œqšöÅÕD¦)ZËSÜùˆ[o(bA¥ …5L«’ƒÃ ðìÙ3?{ÂáÃC&SŠý}¨4fR1ÙŸöuÚÝjÃéÉ'oÞqöé„Å¥4‚e¶Ö!Mü]ÇrµbÝlX·žÍZ®·ôÑ @3Dºµœ„a+–-°P•Ï꓊Ia 횺bËåÅ'üzÁõ‡œ|ÿ]jÜêè¼ÃÅÀÛw︜/ˆ ®/.qç7m˜8h¨ hI¢‡ÑLPTQ1ÕšGGûüìgßðìëç|þó¯)§èº¤ÓšÙÁŒ£½ÊhpmÇŇS>}üÈë/¸øô‰n½Â»–M»fÙ5œ\_³j‹.µ£"œ—4Þ§úd Ú6!yj¬Ã°=M’`±°þB6>ä)“ÂÖä:ÿÛs.Ô=Ï®$HÇYo–l"XmpÆÐ(Mc,¶0{‚øØQZKYXlTœ½ûÈËïàåËW\Ï×èdµEZ?•¬'Ùf©¬´¸‘¢vÙi1?Ê¢fVrjY-3ß9Ú®ÅFKç:Yӵ–…˜R[c»^K{š‚rRR˜I_gÿæÍ~üñG"Àîœc:;Fbb(J =‘&ã )ò yþ¨SÃçx—€ç:â¬r,É…}$¨ˆ1)J«ÓóKÿ¼|Î>j¢2rMÄÔ8je8‘]¥µ=kuµ m[¦‡<~xÄÍ«f)´Ãè€Æü¯6Ô\·b³¾båO Î@W˜²@•%ûûQjBˆ†MŒÌö žLèžÍXµ[Myõî#oüW¾ÿÍÿGYMÙ;xÀñÑC}þ3ŽžÿóèQ[¾£™ÿÃú=«å Pã¯ßòã¿ýãG?çùWÁßýÅ_°øæ¼üá%ß}÷æëà¬8’¬QXïqmGŒŠ'Ïžóòõ+ŽŽŽxøø1Gñ¿*xòä_|ñŸÞ¼ãÿþ¿þO–Ëk´Õüíßþ_^HSå§³SŒ.xóú–’_ÿú×´›†ÒÂþT– Ü½üÓÝ´ÁŽÛV¢\GMÓ²Ù´Ì ]­(ª‚j2åÑ£#šfM¬kBPÔÇS®sº®c¹œ3ŸÏ·x\À,ôb‘µ–M³‘öÒ‰0‘H ¸ÓzŸýý}|×õ"­ßl¤0ÁuÔ]‡µ;‡[5mÔÎ}ˆØ0J)ô¢K‚º.9Ê•€ñcP²—Éœ63ŽÅ¤_eÇ–Ì^jØÍ&r *Å…2ÄÞÊÆ¨ÿlÚn#e qp‹+eûÃÕ8&玸s€r·Ü?ƒ`‘ÙN£CqâÙÆ©&Â'|öìY¿ßÓ©Y±uÝÖÙÇèmø°2¸jŒ®¯Ì¿‘¸´êYIëfCŒ‘›ë:•M´N`é!*B”÷]â¨áŽóÊ€ÝØMèäÞúyÓ5蜆áÈ~-7²º(K›¸{²7”ôÁ™$*šô:ï³ =Ô–SYKqÈ™´WÔ!ÅÈBnާ (r?ºfÍ=‡uÝåÇ è¸M IDAT­á#d[í>j4¢î£rw‰ý9÷†rÉäÌ<8zÆw€ ÔS¬|ÝÍs•ö…‰Rp0@ò(yïàÉoâÐ×Þ³CÇ5ÙŽ“©0ŠýÆ[¬~ßÇvÄX¥ë$›äÎKça%/Î+œ—uÄy/âU`ë}‰J¥÷QÝb•©‘½ªr3¥¢€Ö£³U>ç+´ ¥Òë×£ûQ†tfël—÷3!91Ç­äÚO´W±×»¨]wà]ާÝò½¬ÅìòÖvKJzÈ·øSã¸æ Ôq§#í®‚ƒŸúyw…ȱÀµýõr_Eq/´ÀŽ3»Ì»êCï²Pß•ÏÁ8Û8~F‚.™<äÝÙ ¿ûþÿòûïyùþŒÆ UÓu;1Ê¢ °…ÅEç[4ž¢¨P~X”¢FFˆbSĘ 9Ã"‹h¼÷øÉŠÊ;û¥¤4ÏÀÿÒ™ñdLb ÉÃ*%lª ‘W0 ¢nl“¬Í9³®%Æ£,H…–8a‘"ZI´FáÑ1,R~<µIÙŠ€å»~ª!ÃÔD0Vuwr¨1š^ÈÊ}ï²jÛY´Š¢ßlCìÓ¿‘œqC.ÙõŸáF £¨Ÿ­þ!$õ½ é5re¥_#2}È×{ˆ}|!„\áœozßCåóõp÷VÍ¡V47ä„ ¡±jT^E$4éÏH§ÆˆG ì‰Ès'Ç4µ1[tßhggÀv™aéòYŠ«M®‡ôàV¥¼XÖ•®Û éÇô‘ža±ETþ½ª¯Ç{Ï-ÑðŽÅ'„€‚5AGèú júª|ˆ·G8=a£g`'v²ÞÖ3@s}}ÉÕÅ5o_þÈ›×/9ùð‘Åå5ݦ!6kºÍœ©…ÃYàp¯à`¿bRÁÞ´`¯ ²â ©‹ c¼¸Ê‚Kž®·PïÓ’®Cc ùPBÚz/ |Bª›Všƒ½}9x§X¤­ AUtNñg¿|Àåo/°BX[qÕ%D+P÷Ðyö¦–£Ã‡<}ö„Ï?Ê£§Ø?8 šVÄR¡Ë‚bZ2;œ±wp€1†««+.ÏÏyÿãk–×7\_\²¼Y²œ/X.Ö„±†Öµ¬66› MÓIËQ®3·‘®K. ¤r˜Õ¨`’@«¨&er;8b'}èðÇ<†¢ß ÇÔò[Ñ·® ÓìÎN ©ø ’`àÑŠ“Á‹0¦u5rx¬K‹÷ëõšå@íI¬¼ƒƒ—iÓ针奤%µ-µ]ƒÑP/fiÜ‚Ö9üZs}úk&L¦‡Ô³cªêLCˆ³¢¤õ7üòË~ñÅCë–ÕÆsuuë¿áwÿø?pö˜ƒ£C*Vó×L‹•YSš*³Á«5go9»ùÈæê-ÇßððÙ·üå¯~Î_üÕ/ùçý'ίι8;cÕΩ«’½É” "m»æêæšÓtë¦a¶À7_˯þæ¿Ò|ûÕ7ü·¿ù+¼ï¸Y\ñæÝkNÏÏ88>âòæºg\m6Ú¦!8W͘ÏçìíMoáv7ì=´vÔÖÝ Ê ¢ Dêé [Ö¬× >žà¢cZW˜B"z“z²]â½°èŽöä®a½^ÓvíÈ(ݪîÕl6ãüü\„ÌÍšGŽ9zpÈÙÙ…)9==¥´–ÉDDÜ#ÚZŒ. J×óÙe£oñ†îta©ízùáù?Žƒ¨[ì\Åíø‰˜Tã‹æ¿òOp:çðÆŒÏ"¡†§"¹q\è›±¤9E‹tf…­ð%‚cè‡ Â¥RÉé“„¬Ô²#±!9Àîí  ÷C+¥u]c¢”ô ­rêNîKÛtýûhÒNÎÛ¸ ï=.xnnnú¥ ñÎ&´ÿRß<¬ñçÒŸCì[„Ç Ó©m%0ÐLÊ"½Ö–øˆ>ì¸9p$ ²k&(¡É ƒNÛØ¤ágw³+ä¢ÞÁ¢,(yEî>hg\J/Ôì@ÙwÅî»Î¿êâ®Ïj|ÜoªP·Du–¶Ý)1„;ØJoÒ¼ïúû×Ó‹Àc øÖ϶]|ƒs1ÞÙ~x‹mÅ)M˜Š¶ƒÖ Ý+È×yO2×É*GOG÷:ŒNZ€I¦B›~í.´¡0yH~’ï5~Æ.®ñùoZâ=÷ÒOÇKÇ µÝècv\iµ3ÿ]Î9Œ-oEüîjñÛe°mE–ïp;…Ö»Îo»-…÷­+»œ·»â’»ï•ÎKn»woós,Zß»ZÛJ/$plÑ[9ó×»9¹\ñ¿Á¿ýöœÏñÁ ±Âص(kÐ…´Ÿ4~EK³Djí ˜$´xyÀ¤h“@ÍHuNzuÊå{«cVïºï²ýnçT“[*_ì1£«´QƒH5ݺˆ1¾ßhzŸò=Ê*9:z £é™1Ä¡Ueû&I‘$ìh«L1ŒœR""†(±.ï^u)>7n=ñýk—&„ìú2¨>MèD.`D;ÝzPû<ýê5>E1¹¥g¡0¦ï“Êa°¶L1»t $ åNb\„~z*â—ïE?©ˆxßBhETmÏ£·êH“¾¯LTlr§‰ãFù|óCFõ,zëï­<´6=&`Pf†©aª'P?¥«žâŠ´zŸF•h³GYO©ë .*V—W,çï9;9çôà ×'|z÷žË³3VëV+¦SËÞAÉᥰ-{Íþ40« uÕ2­Ä¦ ÆH¹ƒ—*q¿Fé¾{ÏÙÙ9‹Å‚ùRD+ U°iZšUDz]°i›Äˆt­Ü;Ò˜Dš<­Êî¼Ì¬è„² 5¢¢!’¦àQSšš\rHŠîº%®+)M`ín°Æpð8‚¡u¡Œ&{¢²°›¶CéSÕ4Geͽ²äðÑ1?ʳo>çø³‡T‚ŽèʲtÈñþ>6*ªáýÙ^¿xÅÇׯøôöG|×°ržk™¯[.ç ›†®/nØd¿^˜|©I,âS,|<¿ ɽH`ŠJ÷pâ8ž'©Š ^Ív¼ 3@T¼Í?Þ£½]îï·’cAa¢Ç™M+>{ò”ŸÿÉŸðù×_ðègψVS¦Ò2*â|ÉÉé/^¼ä·¿ÿ6MÇ|¹~OÔè²Âè‚À º°ØR L! hSØT ëº5%VýFÛiG3…ÁšRx.yK™£BD´•fJ´]¦~Æç¯m[Šª`o&Íš«å= ®&e)jiºï…ûcŒ•Šr-NTm@YK HÑ…Ž8Õ¡l†Ûª¾P!eú­T*žˆƒÊŸ(Ñ:íE´-0yÃl?éöDŒ-’c\ ‹08Tªoš†ëõ’¦Yã]‡W"6Ïßœñé]Ç^×Ð9±J\C'k¾—iwY¤ «ïd+ä@9G`CŒ°_Õ4ÍœÕÕëù0S”™RV‡TÓci´-& j” NøêÁs¾yò€® œ^³\­8¿¸àêÓ{ÂQÅ"®9Ü«xüø˜n³à虦õs–Í¿sòê{N?<âèÙ/8|ü-ù·Åéå /xÁéÉGæ7×âr!ùøéc ³Ù!f³Ÿ=*‚z³‚Éd ë{Ÿ=!*xùê]è8<<äÙ“–§3­gÄ™N§r¸©E之my¼yw°Û»¤^ð°¿ÈÞÞ ÑÖ„õ’BGVË/^¾&´kž<~LŒ‘ºž <®IMUUìïï£|æ]rïø•eYö¼kĉõøéþìÏþŒ¿ÿû¿çæj!Òe±ÇŽé²pʇž½3ÆÄT—¹0½%—àÄ$0ç’/ŽdÒ>Ê%ñ]iÛ;œˆ™Uåw¢ƒ‡j`Å[쟞ë2Z÷î {×\'AD~óÀØw2Ty·6îä’£ŠRŽF…5Y —N¢AÄ“¸dJ!ÍÞÞÓéTZ»­¢0Fš C×·JåUÛý’xÒG‚T?¼@ IÞƒËÇ9Çf³ÙŠfŽ…Õ­¦÷ñyæ'Òù¿]‚2‹H۶̪²wŸäuK‰²{ïY·kqé {wPQS¤±¬Ä’ynƒL )ÑÙ[æ'gÈ×I*<Ññ–´{ncpr±Ðvá‚y =fIºgËu¢Â-‘)¯ÿ*·ƒŸÁZý—Ø»8JÞû>þ§ïPÝ]žv>¿Ø³iY“ć|þÖŶ‘œc1(iƒ!t´Ö½sê>çºã||·ÐûU$§Wä³ÍŽÒ€ë`³–¯÷çS©Cº¿} mn ƒF ÷ŠN“¯~p&y2èaÏaÄàAvže‡Ûü8­âÍã×·‹Nãûñ?+ˆÛÅ5åèq.Ø»/r¼+Zíº«v¬±è™…¥»žy»Öæ¢Ý.Ì}ìÛ5 £9Ür¥eLQv€Þ•àËe6‹)»‹ZÏÐúÖ!4¤IqÔ }re{†LœJZÒrf]kKÔ–€Å;XËÿû¿åß_¼çôbIF!b yhGºÐDçs'Õ÷&rL±5Ï ¶ àm}¿ø†ÁÏngGw-zwª!bÒM’o”¬k•"p¾ëóÚ6eís½«ïZʪÀD•j=åëŒQbW‰;=!TV„V^¾^*c+Eauâå(‰ž¨ ¶FİÂ*¬VÉå$î¶rR&XZ‡s ­LÔµÕ‰o¥Ð&}.Ñ'ƒIHtzª³Ö¤L ¥ ÊÀD”>_o‹‚XfþEè™AÙyd­|ås±}nXR·/þ~³¡èÝN*г&¤NðC ÇOpic’£DàËד÷’ÊQj`lå?+ŸY’”J@êù¡Sͺ@‡vQÀcÿ=‡‡b~í*M™H crcG†\¸b€f‡R~ت´IK.¼[ºn-‡[+œšqûbž6e0¾êו¿Ø¿Ö(|Óµ;LuBLâé„Sî5›x1ÁÔØéç0ùŒX=ÀÛc}ˆW{tfK¢/Ñ®d¹Ž\Ÿòéí.OΘ_^0¿¼âæì¿i©5Ô3K])&SaYíM#{{•õL+˜UŠÒ‚¦A#B×a)‹ÒÚZ‚’® "<+¤\A©¡RÙ;EÐé:ˆ9Tšlå L·…'bŒ¥´†fÝJhØà6I¡ø‹oŽ9´ ÊÒú-‹ÖÑøˆ*ö(êc}ÁìàådB±?¡šN0U)°nc±J£:Ïü윋OùôúŸ>~d>Ÿ3_¬Xw›¶£ ¯4ó¬× ËÍ’Îw¸à (¢²D#›ç„»"·(—Bµ*m˜ÄžS}롧 Êõ¾^¯1FQ%JšÖsr~…Ö0­³‰&hÏôpFð`œCé¯,ëµg±ZpqyÅbµ¡ë`213xÍ“ƒ=~þèÏŸ<äÑ—Ï)ަøÚ¢§%åþ”rR3),‡{‡h¸89áìýGNÞàäÝ®¯.ð͆ÍfÅ¢mYv×ë57K‹PX›Z;eb«R³aL÷Aæ0DÆîد™ãMŸò3"d‘K‰°(R§pGl‚Lç8ã¢=z˜û°ól = YÁ7˜¨˜Ö?æg?ûšo¿ý–§ÏSÍjB-Í‘³iͬ¨¸>»âͫ׼øáGÞ¾}Ïbµf±i¹Z,Yl:BcKŒ‘ƒ‹[šÔn¦,úa„¬½Â+l…0 u]3Î(LIpçÝV tžü«(ŒÅT۫ŵL‰³Û!G­¬‘ϦMèÜ ¨¥Z¾ó-Óióm?°ÁÉD×fªë‰rKäÈÔ´ C9¦rhN iâßÓÿz )q>MFÓWÇj½Àw-«õ\"hxœkÙ4+á2© U®(Û·^EȈ¶ M"W ]?H+¯À5lk„ïçÃ5kšõ ó«OTµÀàËzk'Ôv  ‡­kžîâãCÚð«æOùÝüŽßþþó ´ßðäÑŒªÛ®(åèÁ1¿æfþ{>n>rvñ†g_ü’¿ûo¿äfþ5øÃwœŸ]²ZÎ)´aµYðàèˆßÿÀÛ×oøöÛoyöà³¢¢ê<±“ªò««Sξ;åß~û/\œ³¸œSé’£ƒc #,ÁõrÃþtÂÍüŠª*’{ø¶3â¾V¨q*!‹¨MÛa´¡¬,8˜–›Fa‹’ú¸`±œ£°t6« hËÆµìí‰(··'% u]s~~Îb¹è…*ç]îþâ‹/øðáCZ— ^¿~Í»oñN\‹uY±n¬Ò”…e¾¸¦¬§²RƒÀ@êÞ{q:jšþòMŽ ùV´Eg‘=¤½¹éÝ,CÉQr('´AŒªoê•¿7Çσ¸¡TOg©?¤¡­Þbåƒn×uDñx¬²(«0QDåhr ´'OvÒGTE0ì½Q ®$ÆT3¯w® GD5©9><âêꊲ”"ˆÍfÃr½ê‹!º;ÄѼÍ‘ÁbÇ¡j­¥ª¤8CˆÙµÞÉ¡0Åè²P!ÞíNñÕî;„Ž cÇELPþqS{¡oYÍ?Kħ!º‘anÈî> Û¶MëyÂ$ô‡&qÒƒ×(KT!5ÅÇ»÷v w½žÝ?× Ó*)–ýµ/ñKì±µ²Ã^û.gÈ}¢ÎˆAt;ƽͅ½€°ãÐÚfärwâ}2š#0¤½32 H¬±=Ão×ÑšÑÐ{ûõ…è°ÚàUDÅ4¬û/ vr5̧ôI2Ax¯èœgÓJKhRÞמ4• ƒ¾|.ÑŒ0'(´r©N^sL<<£ŽG‘P'c¼ËHdK,WTÖ3T"l;°0:™Av#¹ñVûÞxȦ~ŠžÏD»"S¿ß迯œCBï”Ö-M‘Ò,`g—áø{ÝÅÍÿ3æëmßÿCkì\̃û»clÙï¹?w„òZ 1úm}„víèÜ=Z'sžºWÝò"‘/t7®pÔ=ÿÇJ“"Kt04Æãâ­Q‚§4”‘)ïϯøÃ?òÿú=‹F™‘ƒŠøè{¢O9lcÓ úÖ‹óHi™„ÆT+ßëé;02¹Dͦ! zððx­ qáM7M¿Ò˜ôF‡”­O•¸Zk‰˜ ™è’{#AÃcðè(­–ÀR†ß n¶¢Ä惶FZ┎Øä*MD‡”Ñ*J¤¦0[hJ«zød4ô=›D­¥ð=xGa…!µU$_š²"Xtà\$9­GèD´ñª êrd·M‹Æ–RÛg·ÓgÄvXo¿9ŒÙ5&7qÓ´õH‹N×uý P”¦¿I³KL¦?òºbðh¥ð8ݬQ„ éº€‘–Nì¬éÙF‚‹&aðA÷1ʘ*‚Sš„€ïÛ'­ØV¦”Ÿ+GDóf PˆZ÷›Ž  ©ÁÏiŸÌïŸ6±êå3F¾‡N÷€x4:È a«ê;Ï,x'±¸ÐƒÇæ­ ioªr'BŠÖi¡0}ý­\'>O•<Êôy;”ˆ›Z£MpëßÊI&)/ðq‚©°³§øýoiʇÅ>”D_³é,x™üÇ`X^,¹89åí˹øøÍbÎf½¤Y^S*Gi…ó6© “ZSW^˜WµbVi ¨L¤P<Ñ»lPšm'PÌhtÕ7ó~sÅÔZ¢[Úd²•CƒóF'ÛJ„¢C ñï çB©¥*4¦ix8 ta©ðªä‹ýgÌ<'ûPâT…×%Ø [O(&5e=ÁjK\;.?òéÝ[®ÏNX\œqsqÎÍÕ5›Í†uh\Ä%¢P»a¾lØ4´Á;a"( (‹ó\*ÃhS£`šæ„€÷ ”ˆpØô ˜Îy¥ºÔ>#`ïÒT,Ök +œõÊqóú|Ãý’ã£)õ4ßWІ 7óË•ãêºa³öXSóùgÏi7 J)ž}þ”ÏŸ?âO¾ùŒƒã=qM*‚µP–£á`:cusÍÙû÷|xõŠ‹÷ïX\\°YÌiÛ–‹õŠUÛ°\oXµ—ÅYEÀ“£”JÓ¤ÄkJ7¥´°®”îŸ9$çiL”1N©@ yƒƒlÚh£¥á1&†ƒwD/ÅÞûÔ0ªQF ¹1ñƒ}STv$ji¦2LJ|þÕ—|õ'?ãó¯>gïá1¦2t8ŽJªÂBçyõúþðÛ?òêånn–¬›Ž›åšÅºcÝvD­‰ÚÐ¸ŽØÉt0ÄݪÞMÚ³IFH™|Ê>C™‚ÉdÂtºGYW`mY–Ø›Ýo®rc\¸Í(uç¢VÓ4mú{ …±½=¾(ªÔ|æÄ ’×îä:s]#?wšøi[lENJ[%!-9P¼Äaò„¿HâˆïË:´V¨BÜéUUoU§+“ÄN>7]@)ÕAD«åœÅüZÊ º5®m±#zÑaÓ³ÒçrJ9´‡äáÓÈtÝEB'Ã&!èÔ•0?” ½Úô3xThpºÍ¥ ÝJ m)ÊŠÉdF,öqêSî35³ý)òõn.Žùðñ’ûÍŠgÏVÁÓ§©÷'tnŤØPU†UwÍêú/.þƒ¿àù—Íßýí¯ùpzÍ«W¯¸8ýȤ(X.—LM‰ ðÿýŽ?üÈÓ§O™tAÛulš«Õ’ÍzN×4Éí!¯³k:¬))ŒaµÚ•¢ )ú܉È…¸œ±e!œ@2oÓöÏÖÖu´®£* œë°¥åéƒ=nž1ÿï¨â†ÂXnVž>zÂõõ5mpQ±i:fÓ)º°¬Ök™L÷˜L÷˜íp}}Ír¹d>ŸÑUÍ£Ùß?äãÇ“$5Ézã»Ðÿ|mº–] éÙo(­¦´šº´lVkLMaJ|ÌâîÀv }QB¨¾µ/;’3ÿ*³¥‰¸Tò2ÄŠB€Ea¶ÊÐö¹M:ïS Nî/­$äZ‡ŠPZ“€áb¯WÆÐ6c `JC·iSé“—H­-ÒžVÔ¡›e¨(…4$h{ ¤µÈ¨aÀY…¸½§Lñ¸€†àxöì?¾gŸ¦iˆAQ5!D6]'"Vç{—Q#Ÿ„ó…­z&”÷žÆ _*DGY•œ_ž #2qÒ|ˆ´­£ª*‚ï’*d(¬%&q,ócœ“C~UÕ4«5u]㜣‹ž¢Ð=§(„Ð;Ø´6[ûm“†ÆZ b!P9Âäem•DU#t:ŠOLg´|ÖZ Œ|h"> `x?D^byÃ,¨°%ÂýãxT ƒ{(;‰t‚Èçó]@éþïW¹Àg$ii‡X¬ÒÛXH.“þ0ï]JUNÊoGà£ê‘&ZzŠnˆ#wŒìÐÏyä¤ò^8‘]l¶ÚláoºNbêCtAÜÈÙ$‚0ˆµU¥íYt9,÷I*/ÊQÆ„6PDqBGÞIB×à}¤ ×)ôRZ"ûiH¯”‘€²O¼ÑÔÿI‰W1Ú` …-dxTVÎ4iÀª³¨eb‹ˆ±bs—gp)C¬ØácÄ+7ÚŸÉ{c˜JìÈ‘æÐ=½F2Ú la$¢ÚFHäóZË Ùù³M{EŸöVÆÊóG’T[ ê'är™ô!캔Ǝ⪪¶D¨®ë¶c}ÚRskf“oa^\Ø]}ŇvÞ$¶¥ˆ¶OîÌ[F /† ¥wš"£ÂdŸŠ[ÆŒ2I^´’µ¨·Ý¸…0? v›*¶>€ôœQ(á¥chÛV^- Ù‚¥ C¦¢ÜM g×K~óÝ{þé7ßIãTëqžÞ±ÒGä2@1 ¶Â~x©Fj/c0ß8£éDrJíÕO¯cHÜ,vlwÜ­v«;lÌZ!Xû/#‡Ž’Ú{aëTÇ›ã¤o¨ä"²Ú¤Šui„˜†¶ m"F ŒÝZUB‹«Ç(ƒ1Ò f ´]Ú•‚"ýïVB´ˆ$c`Zfýd ¸Ä^4ëØ4Aœ7¹y)›öð IDAT¹¤ööŒ|_¥G ¥‘ÂÚߪØF/VF¥o[÷[Aôè÷}=ïèsnÎa‚. JŽ:ºÆˆ˜"‰óäR£…¿CÀ``”‘CgT[¯Ok‰ˆVI¸ë z;j!ã u™ú†J®5y˜j“@ý©’¼aÈ›J0É÷Št>€ö#Ça²+E4Šà7„(‘Ai$ô(íSKŒ8=" eKˆIUÚâR¤‡÷R+QŽTvžR'7#$qŽ1yTî™p½ géÂ>±<ÄTψå3ºâ9ÎâõÃ]N˜%Ë¥ãæú’ó“+–‹WŸ>qqú‘õõ9Þm°ÀÔxª*PÛÈdZ2›ÌjMU*&¥¢.Á(‡Æ¡c$vÇÀ¾3Æ¢JKã­¯ÀÖxµ‡Bð”Ê¡ô”ƯQ^¦Y}»R:ÕÈÊœ½/1Á™Ctl6Mo·AÊE%5îJ{¦3®/¯p!2N˜=ezôå᜙±%^—]¢‹’j²/íRMÃæú†÷ßýÈõÙ)'XÍ/¡[Ý’‰]a&ŽÂ뎛U˦Í\‡Ä\• Lrj%0X§Ó†+„‘˜—Ù ˆ©Òdeði ¶6 =’Qi-÷–‡ÎE‚ÒÒ:‰&ú‚æ¢ãýùp…I¤›V„ñ²PL§û<{ôˆ?ÿ坸õ¯Í?üýß3Õ|öä1flÜsPI£à¤–H–¶T€k^¾ýÀõù'oßrþéëù ÝfM·Xýåºcímh]~¾1L¶ûV ¦&XÒ½“Óð®zíÈmKù°‰L²yL.E:†´‰Më†ç84G̾|Íõë£MƈŠ>EQ ® ö&S¾úâK?~ÌWß|ÍãçϰÓ§ªÔìRFÏü슷¯ßñýw/x÷úóùŠåºc¾Xâ•¥qI’Šú.5¹ªÄ¡ž(¥d“Ñ?G¾Kƒ¨ÌPӚͪdq}ƒ.%ŽÛùT_””E!ö-QD£„©U˜c­üZXÌŒ¦má*„é9bO1´ÛB®[ATɦšb÷©™H÷‡‰f„Âm—oÚÄy9h(Êøá9&FMÛmÐÖö­Ý2z¼ŽLp"pº¶aµZÐlV,7¬—7tíßµDšÚÀÄq"˜BîM…畟Û>Ê0/‹WYðY4ð¦àk­Ñ…I±ÏHŒ …-¨´ÅûF6™N˜Z.€k ¾­Qv†ª–X·Ö–¢((XðôAE]ÎhÛ–““Ž«+øøéœGOa¿N‹I@›’2Tè¸añqÃïNÞqôôÏù⛿äéÿäãÇÇüðýw„Ö°Y,h› ³ª¦Ý4¼ûž²ºÄTChAyy|ŽÚ¸ÎKTL{Á'áO/ŽG 1º­ýoÞ¿Ž£÷ÅØ²+EEÏÞ¤âë/ŸáCÇw/^óþôœéÞ!¥-(lźiج–8'®ª«ëkœóÜÜ̉QØmE!on¶ÛlÚ¾Z­0Æ0™Lz‘M뉰J£»åðéáÅ©Ex ¾Ü# $ÖƒxUuÞÚeð™»AÚ j¼¹6íïL@÷ˆxbè÷~Y}S©€'ÿœR&&%Z½SÌ{|ðâ*ôç‚ ÏrKp¨ ®Nd?'âÈWDt”|ˆºÝÇ­¹‹&{KøÙÏ~Æo~ó/C(ñmëµðµeLañ‰Ç×Ç“Œê#{8ÙA/U"Å:xï’(‘†·Zm‰<†¬îˆÛTU)žZ–eV5kúgUЇäÀï:Ïr¹¤( ¥-dȪÀX‹Q­Ë-—“ˆ~Rð“Æu2ˆ8—Òy åFÄÇnhŽS)†À˜-©îŒ_Ý×:¸ËÃÚÂÈ(úTAnY+Ý·¼«Ø!øwÙO?廯mË©•šœï‹wmý|Yüè1@r÷M¡ì¾'~Ôr+¯ÁgýS˜ÀÞ{‚ô ®…Ñ™yTÒ6ŸŠ2+5ûÅÑI𠬽óï¤qл$d¥vИ—I±l¦†4ÀJ¦`{ìŒÁ[ï” …p ­QšA_t‰’3žŒ\æm_:ÅÖ™Töù±wÈ÷@rzß×B9æDíFÑsK_f­m]Wé:É-‘Ð ¬J)t!.8§x5f\íº«vï‰[®>¥úè_ŽA㉡w›ëÞÔ4n‰G/{ý(ïÇ¢J{_ !ÌÖ¹X©¶ÛQC¤Ä_wZ£2Ã&=Fô¨’vÌÇ·d@)  U¤†¶&ÙxóŸ1t!âÕSìbÉ›wgüöw¯øÃ÷ï8¿¸&Sœówî'÷s'ÐëN˜^ˆ·@i÷ó·Anx¥¶3Öy;¨ ãj¸ÉÈlŒô~­SŒ Áwµ8o”1ç(•¡Ë–DçŒÆ¨@ ^X*öÙ]£T:ìÈFVÙˆÕQ€ì h—…?¹˜ÄÕ“¡áZéd —|º8j†ŠN.µ¼!ñ¾Ã9qa¡(å°«”†Im1jœÕý .×êo½ÅbÄ@è£4#ß{/Ü«T÷œ#á¹(`ÜÔ“KÆ"’XŸïÏg&XϤÖùa&q¼L€.5ð=ŽG*ŠÂ`¬LÇþ±E?[góß7f!Èç©Ç‚G†6M¸eÜ™Áî…¥(†"ÃD:É“Ç£Åæ,ü7ŸAãûJÜã©@¾Ó†&ZiôT1‡›~¢ •DÓ„wå‘ a!Jì³ó–6L‰åCê½/ѳç¸òA?½‡25ÆNÁ2¿^óþýGÎNÎùôþ«›kšÅ*l0¾¥VI©˜M Ê2R—ŠéÄ0›LJÕžB¬¥½È¥Êï–h]ÐEÅÚ` Õ>ºØ§Óo%È¥Nµ„NÓt•Ž˜J Ò>AGSˆH ÏÈa6„(Eߥ{è7GQ2†²ª‰QÑ6ŠÖMQö1õdÂÑ著¡§‡¨ê­'AS—3´‘C´— Î?~ääÃ[nN>±¼:e=?ÃÄÓ2PN=E²26.²ió•æz˜/`¹‚õ ë.mì#t¾#ÈÉȨS›§%†*UäʲÄuÅ0ùvóCãgQF -÷¿ÎZÒ]q¹‰ÔuM¡"~Ý€i]ÀD×üêçÎãÇù›¿ùk~ý?ý5­»¢¬ êYEÀS¨’²XwU–”¶Â·óO8=9áíë·,s®/.Y,o¤®ëX­Ì— m,p^ã½Úâ/D5÷ÓZG°§Q¨€Šö?aApÿÆ5ÁþuO)®“ü6Fz.E†¨š|ÀËÕ≠¡£¢fÓš§OŸòìùsžñ9ž<æðømEd<Úß—ö(ïüÀü—/^q}}Í|¾d~³dÝ´4>àèðI ^ŒØÔBô}ÕµÎõÛÙVŸhÄ8‰¢>Ò¶LöWƒoph”)(´!j…Ue ¥.Áh*[`Ê‚ÊVé×e ت¤.êÄóP© «¡57i)¦0ʤf,‰„7&‰ˆ³rÇΟ'ãáT~ chˆø„´"M4µ-“–ÖGœì™:Ú¦¥m7,—K‹V‹šõš®]%f¥8F„8ŠB üµ<UÞC”•8„!™ž«Ã ß·¬¥ë\e× éy–Ø"FÓu8·bÊibðtíšàüzŽ*dm2ºb³i¨‹%æ@„ナÕjÃÅ¥ãÓøÀ†²†£#ÃáaIlÞŸR×L¦sºók^®^²ÿàOyxô%þûç»ï¿çӧׄ®cáZ¬ÔqBÛŒî¡#Ú€--NCçÄ¥ÄèäF#h‚K¢H°t¡“Ù·öƒâ6¸ Åݤ]šfw]‡R†ýý}~þí·˜¢ÂÖïøñÍ{VM+€~£©ª*9z\:$(á^uíÖ:bŒé'ë"&tÌçó¾]6ïi›f-%}Cõ°æ1Û%GÖBt)ª5*a•äèܘÁ}©‚îžrÊa"Äíû€ ‡Ã.=ߎñ’·×Ê br³J¬¨”¢4T ©@EÖÑyü¦•ƒ|b§I˜?kvPùuçxoO“¹j†¡y¾¿ÇÕh¿)?ËÓÏž1›Íg±PKüÏõM½»-tùûmEnÔÀäÉÂü5ùï(l™8ŒÃA3 –»1±þåç*’6_S}±UF=d˜½TîâÚ«¦T£RRCcÒÏܹpçó/"×>¤¨WÚ›|–×[vzã¹ñ2>'ÜÇ”º‹µ{(ßeÝ'$Ý÷,ÿ)1+å{õä˜|ŒáΟiˆÚr'+h·Äe’ñÉ¡búÍWLÍ'JiI.»D9÷pt• Ål¡t*Q«5JÛÞä!NsµÅÌ–kvˆ Ê÷ÒÃïSÃzç<]t²2ÔÔ¹%¦Ÿ˜=cÆHçXƒM)”; D̾•ê9µeY&TJj÷Ôfûï ƒ“ûÌ+£ÆÃÝ4©¾§eð§bŸcavˆü…;™gyÿBâ¶ îÙ~rú{g Ò[(—ñYo˨„î–¶Ýã©}Ñû.z$ÎÖM†Ï¿7¤h5`4R"I~öÛ²±ìsåÜuŽüП“33”±»oì˜ µÛl±»P¨VWh¯p¡g‡[§óBë)ÊÖ´®àåÛsþá_¿ãß¿a¹‰”õ림¯Ic÷¹uaüÄ‚sÀð>Õ»ÿjûbÌ@xvt£L…¼ÛZ\tš@蜥Nùu£‡Æ¹üüÖJ¥©Fª–Õò`(mÊîF+ x£Ü=`”V”üoaĶkLÎx‡wMCaEÉ7Y4|ï ðIÕìoº´°„$¶øäŒ+Ká2ÕuÙ/£ÐeK‘è,zgÿÐ Õø¿Õ Îö o\n‹NYd Uù=ˆ‹aäÖò;Ÿû/& Ia4}òÀò=Û–dU%Å:E©)Kç·¡ûòÎ=¼3`Þˆ¡b?eØ…7ªöD¾ÆúX£6É1ç’ •§,"µH©¡|mvžõïƒ ˜Ñ{ü|¡Ÿ«Z§€Kœ3t>[Õ+Ê¢ ëÄÖµdæ5*8¢×ï‰ÑàUªPL?‡ÙW4åcÖaÈŠ…žà½æüìŠxÉ›—¯¸¹ºfysÛ,оa¯RÌj„g5)™M³YMa……ÒtÒÒ:qÇ”2òÉj‹2^•tQ±âl²ÇõC¼©Ø´Òåe¬Á»†õêœÕõš2:ާ§ŒÀp52¹ ­,1êTóíi]è?ïEY÷Ñ/“¦k“gë4Q°ÿð!õþ¦ÇpvÂ&Tè8Á˜U] {Ç9V‹æ—\žžpúñ7'Ø0Gµ7LÕŠi8œÁ¬VÔ•<Ä»`Цƫ‚ÎÁjíY7ŽÕ¢cÕzæë†.XÖ+ÇÕ<2_À¦ƒÎA7Z„XqTPXÙT8!lÒû›òìÊ‚ ·¹¡3„aêï£A•3‚)p¡åÇo9ýt"ѨֱÞ8\T”Uëš^¨qÌD i2›¹˜j+6¨â=%ö÷=>Ê}«S³…ŠÞuTr–*Äõ¸NŽ«Âh+1A¥-Qʺ¢.«¾Ý1o\µµZ„.«t¦23ß‚Î.XÕòÇSÓÁ•³Íj¨íȉ¢%Сd¢œc<ÆœO“âÑY¾¡Y/Y-–,— V«›fEð V#ÑË„YÅT .÷v¥ÆÇ>FàœB{?rJ£›p,žŠÆµuH6ãn»Áù©Ò©µxô^Eq ^ü-ÚE¦ejô ˜U5… FóàÜ\·|<…nã™•ŽƒéŒÉ´drPà5\®ÎXuKüuÃMsNµÿ%ùçßòÙgxùê «Å’vÙ1o[gû´Ë5Z‰…À9'ÔÁë€W>!'4xJé(×§ ª/z¹ @›€»ì¢mø®¦(lïQ*px°Ç¯þü—<ÿüKýñ¯ßâýÉi‚Ÿ'×xŒTUÍr¹ì }¹OiŠ¢’‚¢ÀÅjµêEŒ ú-ËrkòÝ3•J/®o¶Z­†ÕØñïï–3ÝéN ·Å?qpk?•×O•Þ*E»;‡8ðùAeÎÏÀÊÅÊ\“¬˜ÝãªoÌôAÈD”²é.õÒz·ë¾ê“é™8[ƒ#`8ÄûT*ôí·ßòÇïë/ÐvZkÚ®ÛißS[m–Î ¨” å\QØR¢àqpmcnĸ‰qËd°Ë/Îi¾>”Ö”eI³Z÷×Èr9Ç”Åè\’4%6´´ÖUI]—T…IåQ£µ7ú½œ`5r¨‡í(î]gºÞ©’Ðû½>?ù<½O0¸½¹ }»¬ë¾ë÷¿ÃH€¼¯ qW”¸ÛYµ#lí˜,÷ ÈòרmvuŽãö×H ©7 NÙ…™X§Ù‘– Ák‚&±_Sº&9ÃzKrìí¦“z—QŒx¯pÞÓº(‘ô‘x¶ÖœmQò ÷w1g葈•08Ê¢yæF„V«™”%E¡(³€•hûk-¦w6­'Y ËîU“ðù9*™dÃN#官”×ôÝ{bבGÆ¡»Àÿ½È=Þ‹Þ±6«}ØnùÈ­õNïÂñnãGĨz¦ZÿY¥ç`ÛÆÏÊ­J%DР2¨–óÊŸcú}/ô+I@õ÷Gb@‹º¦$æ⠺Ⱥ4¨[9—¥vZ†6…r’aÔtaA9œ÷8eÀL1“C.ç/^}â_þõ;þøò=]°` VMÛ;Lî³àmÛºo/ܣƾ¹wá»kÑÊ»¼ØO”.WicÛ¯„R«Þý¤ú(BM¡Ó(ÈÅ*…Šª´)ó$w›*>mâ9¹®Á(%h=,c¥UXc±ÆSØ"®B”|°–zoc;jL“Ta*ŠÈæºâ}N“5j%+fU’6D²Yg–ØL»”éÖÚ¤Å-f¦õVurYׇž<Õ/dôœ+z†‡J‹j¿°Qa”kв¬vê¯uo!‰EšQ³ÞØ)'•Ø%CCJf¨Ék·¥J<é+ô(¶lâqätï¤UptÒÙ•ôäsîíÈ£F Ñt+ýÁ´ëèœKw™p•…ÄÔ:·!Ò%×DŠåÆŽªBš=$aÑ)Éz‡PâbÍ&Xb˜Ñú‚ÎYº À=Kl´ô° ~Š-†Â‚<=º<¦¬¾ +ŸÓÄ8w„3ûLíQ[æ+ÏåÙ)¯_¾âõ‹œ~úH³ºabÁ† µi™ÚÈáÄr|P±¿§˜NõDåJ:©žYhVè²"š‚Ök–8,U½‡=DM²p]§ðÚ`MÍÆ5\^\3?»Ä¯—La2™PFiüÔZ@“®ë0A„Îyš¦&´Ö  P¥M^Y”ÛÎÑldZ¯‹ õÞ3Êb†®öhTE T1£¨ŽÐå£-7×W\œpuòÿŸ²7[’$9³ô>ÝÌÌ×Xr­¬ UÕaOK‹p„ÒoÑWýýò®ï(ó ‡™é&vT¡–Ü÷ˆŒÕ3Ó…¿š¹¹‡G,‘T!3#<ÜÍLUÏÎwÎÞ¾åúì”T¯©ZR+*™TŠI!Å ÎIuµZa“ˆ·Ñx—ÛD¤Lç1AêuâjÑpµhX¬‹u`YGëHÓÂÕ .P7òV·>±ö‚Î.àåCHÒ"“p œ(s‡Lw5&)qú:F ­°)¢càÎÑ!~ÄO¾ü‚;÷ï0?>bVÌYÇ5¡F@¡&Ødi›%'¯ßñêÙ3N_¿åòô”z±$F¨Û–U]sU×\7kÖ>ÐDqÏÉ3|X\eQ ^²Û!m#ê•eTžXÝÞ6ô£Ã— %UQ÷æÔ¤n^B®qS¢ÐQâj7Ì&>úè_}ñ)÷Þåðø€éÑXG$R”%³éÏÿÀ׿ÿO¿àí›K«@]×Yñx">.—5Õ¸B¥Í´´w»&²xŸ99ºs~ä¸c?mó`„(uDdÃÄæÝ—ó“ÔʵäDEhj+ã« ãJœ6ZÍí_"`¬6/µeÆÙ^Xrv$›ôî3Í`ê®Î¾c˜mœÙª?$e$¾”ò¨¸¯›Ï®c…Þèܦ¥q¦k%–çÕzqÎâê’««+êfEl=*´XdÂÚ…+9Z³ym‰Bû¾Ô$FqykMyƇ¼&†$œS÷fkœÁÌIbYÁo·g©7/¥„Ç ­„9â¬fd,„¨¹Z]rçpÎßW]ÔOÖL„´3ýÐv÷ð0Œ] c[Uæ)¢c:C¤õ J)ªÑ„‡÷ޏsÿ?ðÛßÿ‰u]³n=1Âçiƒ§¨Jq…/×¥±½Ðä½§ª*bŒ¸ÂP¦H[KYÁááa뚦ih[aå)£)(0Úõ÷„ä(‡0ñͰQ´Ñ,èôš¸ìççúGãI±WðÛWjÙ±õ÷3¯Ê ëÂdI“÷‘y¿ãëFö!);"ƒ¦é$RlSnažÍ.´¢BÞSZ“Û\7˜î0GQ@Lüâ¿àÏß}ß'š¦ÁU%QZŽú_ÔA÷ùv¯{#rmX€¾ÿéc¬Ä­øg7Xкo[ªª"¥@ÛÖ8gX¯WâÆrŽàƒ|¶ŠA!°«ª¤p:³zÉÍl •6ÃamʧWGxVÎØžEÔ‰&ݺàºEÊàî}¨šîplÍÜ|[tÚ…VïFõ†Ž¹]qaŸèôcή½€v3Fï}?k¼MV› ô[cCµ8V|/BmÎ!¹£äöÝ.AÀ°L&3¦T8‹ÒdU/›Î-ctg·Ïø’TïÆŒIåF¢i>&q^e![^‡œÇÔp¤×óy»÷wuÈ×x©ÑD•žã0Å%g qŒÍ ¤á{ŸQVÎyí7y}uÎöç´Ž¿¹ípÙ”_ìÓ'~,®·¯y¾Tn»õvÈ·RÚžrÊådž£û†1Ã{¥ÿïÝvÀ~˜c0¦{.©-7Xwæ5™5š²“j(ª…ü‡´Á;õnà~%é@ô]“ývOl·­êž«tÚ+¹¸ã†=Nm9\†Æ]uM§nzÑNn¢64àÅx†23NÎÖüîÏùÍïóêí9ëF-ñ!Òø `/õ—­š·f€oy ]dûê%÷=`¶4=K@ï]|SJ¨² 5pu”ÞZ»ŽÄ~ê§tÂZ#›A% D­ºM»´iÌ|«¼OÆÄZk±gg÷Q/¢é!‹#ÿþV£ÈÐ*ï y­µ}žœC­VT£"³@éHŠ>oUÏÒž–ê3ܽ`¦ÄF*ë”\ìÁ§¾Å¦m»‡XA³â®óa [»=†î#€7ë@;“’ úgáàí¹R9&r\uׄÚ8É´–ŒÖJ²Ô], F-*IŒ$F‰"٨Ѷ n«Z]`Ê f<'•4vÎ:hTY0*'¬V5Ï_½âÅ“g,Îß1/ZY´%¦-@yæ·ï!6mv[h¼7¤$‡ãB`MHÙ©ð1Ь!Œ«1Õüåüž š  ìxN9žÑ¸¾^qvrʇwo9yýœÕùâõ%4KÆN3{ÆUbTÁ¸pTáv0*`”¢Ùí´Â!Q í´´a5 ŸÔL-<˜—eÁÒDÐnBÝ(.®k.¯®®=Ë•g± Ô¡å²mi",Ö°ZÁbåñ­'¨l?7œE§6‹§‚DÄR$´gLvš*'3>zø€Ÿÿô+¾üòKªñ˜b2ÂV–`g»ŠÉ|"‘ÍUàÃÉ{Þ¿zË'yÿæ-õbA}½D%¨ë†åzÅrU³ŠŸÚ‹$iyËk]ÌEÛ¹2\§M«Ûš”-¨S±uÛÚ\tåE ·Nâ DÚÐâòpgZŽ8¾‡O>yħŸ}ÄÇ÷M*ti°…Á8GY–hm¹úpγóÝŸ¿åíóç\]¯YÔ‰U#.ÚѬÂÚ QAÝ6¸ºaí[”ÖŒmEY мY×´ë:CrÃN+“–Æ1usÓ³™"†þ,bO졲ýZxTŠíBŒ‰ÉH0"jBð´}{¬ÎŒ,‰F¶,)3ÌÙ üˆÊWR–“ÜðºqEH{°ÍÓÓÍrÓéàÓ²fÉæKç¦å!ˆþ@·Q?„–¶^ÐÔ 'Ô‹KšÕŠ#V)´ œÝ¹ä IDATÂQ"biC®WâÆqÙA”ËRÚXI¥~s[} ‰à!%útG¿ÉÎayß¶ïûÙeæÚå=Mìqó>¤kš 2©O e’ä­£pgWg\/d6=œ2›N9>l‰^<¿âÍûu»àáÇ”´Í gVÜŸi–Í õJñþÉšƒ»?åËO¿äàpķϪ©eõáJœ=$; ^ ÂÆ9BŒR4e¬\FŠÂb/C¤ÛûúÌé\0C\ÃNĺPË{’ ú߬¥\¥Ţ#ThäÚ³–ª¡ŒË¸D܇ûêî¿s½ãÊÇ”®À{Ïx<¦Í(L%ùÙº¨´µVÚj­Ýžúw½¹ù>Ù÷ÏîÞ9ý+j3θ¯qÂxÃ9’ÝöXéRÌD*$œQ„$¢¹@XM+Ÿ{‡AG«®7·’ÆMÒ}ËF£BÜJ  -cLŽñn;E¬µD¸wïÓéTÇѤÿ\6mØÛÏþaÃWU•[,W¯46„þÙ—¢Úâá…ÍM©Jöì!uì”Io_Óu] +žŸ<ú˜ï¿ÿžår)×±ƒµÂÎK;záUÎÈ;ø‹E¹\<¥4)*B?h+ëÙ­8#|Wì´¯5|×Óí©7ng`Ý&N y:·±§vÙCÍZ¾/!t› çÇ¢d»gÏ͹[‚uSðê ;gÚa$U ~n‰”É3*EïÏÔG»",9ËÉ0ƒ˜ö¦£T&Ðo±§UfKgaÌG¨[{·#nÛÞfM©-Çþ…“ I÷ά°¥6PþÌòÕZÚKg²Ëæh<["ÎÖçÒ=Ï ™Ä¥˜ï­{DÉô›6)#K{'‡:Ê®›{Ÿ°¹·á2¯97M9ªw¦uN»ÛtŒ­kaçunÌ#ûžïÛï×ð}Ó¶?Œ,¾rÞ09ÁÔäõFí´êFVÛÇ…7°Škùܳc^ë°u¯Ú¤s}¤\µèÁWgžQæ•RþcžÂ)#SV-Ó½:@1ª¨ƒåäì‚_ÿæ úæ%/^Ÿ“ôˆè¤z8)ªRÁôö¦`¨„wv¿Ý›s7Kº+hÝv¡î³sî…7ö‹ |?;¨ÑM1ôì#p²ÓCå‡C–S”ü·äõsbæeVK¤@ÉTÝuŒ¥7´Z¡R pgDÜ2Ya7ÝçÛþÆ5èÍæ²o ˆ9ÚÕAU†ªËçbÄäJqùYUapΠMg¿Î¢XŠ™¥$QÆ®AFlt¨T>ΨA”÷À{úv/qoõ,c22Tšú)x—ï]Szì¦UÁ‡­‡FòüJgnUêÄ£üà‰ip”‰€Ù˜úH«QŠÉb‘L†öXP¦³Ä¦×T·ù¡Ÿˆeµ{¬ûzÈæºÑØ»gáÑ-e5Z%ƒÖ±/+Šøï×¶ûžiP~°‰4*Œ,:J°x Z5Â3§å€uœ°ð#.WŠËëÀ² $e( ‹+ VjÞ?ȉKÀª„Õ¥¤±(F¨bŽWSVi‚WÎZ¬Q¼;9áí«·|ÿÝŸyñä)—NˆÍ MK!>FEÁѼäÎQÁáÔR¨š3ØxhÍϛ֔ÀG™.kXF…žŒÍïc&$]ÒP±J–èZ9.—5/^¼âÛo¾çôíðkÌñ”źäbYáq(]Ð4kš&7ìÄ ÅÆ¡¨ä ˜ >HÌ!EiæKÑãc‹ÒådÌh6§š¡ÇwIÚaƒÂš]NYÖž×ïÞóáý ÏŸ>cu}¿>dž5c©ŠÄ´ÒŒ«È|)]ÄYqD¤Øbr‹Jòì ^"qZ¬9¨CIÛ|ð¹}Æä’ Me4!]cÑØæFQ­×Ä`ˆ¦¤5‰‹ÚsµÐœ]+^4¼~¿bÑDib3ÂOJZ  « ¤wŠÊ§`~xÀÏ~ñs~ñ?ü÷Ü}pWUÕ»{ÊBÀÞÊjh”Ä)_¿áåÓ'¼|ù’Ó“i p½Xcd±w‚8…4ä8™BÀäÒô“úÁ@~ÂCrýA‹ÐA@uvß‹0’øÎâÂnÜh#ªoâÁôÍ…*s^zÅõ§›ËuÓû®á/bµf:™p8›qÿþ}>úä#}þ1Ç3ìÈ ŒÄ4ªªb2šBˆ¼}ýŽ?þþO|óÍ7œ|8¥­ÚàY6 ®t|õÕWüÿîß3?<àåë·|ýçoxñê537#$EQTŒŠ‘À§Ã9ͪ³Ý²Û¯¥Éºs`Ø~õ`³ÓÇè³\ÀæÖBÚ´FmT2p‚XÌužè¥·ÑG|J¹Ö=aêšµÒ½À¥­a‘#‰Ê㶪«1½ËÉdH«ÎœN,èEQ¡ŒÔZ2/…V ›‡_š”yx ¨H[¯¹º¾ ^\êsB³B'ŸÙ—:çþ246d÷B×€…–MkŒ„¶–&Â]¿Ñ ÌW冧:äÂYl3Z£•í›@ †ëŠ.Ô€=¹µ16:»X„%UK«‚\×F£’GyöÝ;´ÌÆ‘Eˆþ‚qQR°\×|ñÕ„·ïœ\À»‹ ªÀt¦iësÊÂ3)Á(ÎNÏøáü;î|üS~õóŸñîü‚ïxÌêêš°Z1Rš2—áʰÊVÚ©•FY'£Ê×c>8« æÝåÏl&íì€k7û W8™’§€S"6ºÜ64õšÊ–‹+‚q,•R=¬ýp>̓—(¥X­¤`b <88àôÃûþ0bàz¹àââ‚–Yì*)K‡2ÂJZ¯—ÔuÍl:Þ²¸Ø0k”Nm¿…ßò—øCÂìK=K­Ûü„ùK™Ý2<èv“Ó~hÞ3Xõ ÎgŒˆˆ˜"F9"ÐæÍ¢BD×ÐÖy/®¥ôGEq–çm›46›ìvíÊ3â†9ý£wô)ÅìÒ§?Pv¯¯pŽuë±…ãç?ÿ)¿ùÍopeAQÚ|°í‹Ío$I†Ø”ÝRÈ)‰rS_><EAUU,+¬24ÝØZUËÏnœÆHÚz½d4ñÙgŸ1*ÊìR‹kF@¤Ègô¶µ8«©²X.­ÍÒºí¬Ä³bTx¾ñ£°Ór)V©g 9£ñ¸Ñ­W17ŸLwPV;‡hdÐÚ¸Õz×|{Ág°^ê'’|Ö0C»¬Xõnj¶áFC¡fËá•¿Æp•7ÖÞˆˆn‹`©O–ü(ck¹b_Jh×Õµ0êÌÙêxÖrÏ“w3)sî6‚fÓ>©”î“AFÉÀh¹ùŒÒ’hèç›óu Iö´Jeg©Üo!%i¢ÌÅ=>ÊY©‹µ÷™Ô½÷›hz/8v®Éln0z4±JóIÛ~¿ 5X§û´³š"‹©:åbŠÇi»n8œµ?ÿ{ÏÀýЧ§L¼UüЧÝÞ⯨†ÿ. ½t«Ã*·DÌݯß3ýRêEñ^4Šqk€ºo@á}Ä9³å¤ÕÚn;æ†LëØ5¾Ê®óšÕ¡bv‹wÂ|ÏM)»Äc‚PJ⊑Í{˜?Cf¡m GÃÍôVbVØû¸V6¹¸\‡ª”EÙ­‘1oNWüú÷ßóÿþæ;–k%‡¾mˆZœM©)—‹ÓìµhwÐ]xW1Üýð‡–¸Ý~Ÿ¸uÃý¥õD>h|]Y|7¿IÜÄ´rK¡Êê°J cešªó‡Y:uJœ$ kpÙ±e5yŒ*߯0V {*%ªÂâŠîõtLzÈo×4“Û;®WÈÀie½8Á 8§©Šcåç !öñ¶}æBIY+ùYâPîUQËÁ9ÛGÅ­˜_GH=0ÝÅ6õ£]³BÇ…ØÝ8ÙVÁ¡±¤PòÀëÞ$sßHkŒ¼¯E¡­ù Í ¢˜6uîy“ ­2òsöàõü5…‘¢û\õfºÛýÕ/p]KËpÙÁ‘7‹`Új9Q*â\)Ÿ.ˆð&‚YJŒ[Ú]3IJá1´ÑѪ1žZu‡V± ÖL¸‘÷‹+NÏ/H&ÌíͲ<‹EÖFÎP(ÐÊ3—¤QAm‹Oè’&&Âjɳ'OøáÏßòô‡Ç,WÄfM»ºfì³yÉÃî2ŸhJ&3‹)!­óä@&àFIÛ1¢c'.Fš6ÑÆD,&Œçw°³cÒê ¯ %Ö‰“çòòšçOžóÃw9yý–¶ip |ªXø‚ó¥¦Q†ÄÅÅŠå²–öPk(Ë’ÑhœcIŽh, |ÈU¾¹¦Vʪ¤<8 <8@cje‰º$jðQ³:¿âå›·<ùþ '''Ô‹kTô±¡4 [&ã‘4.Ž ¬kP*ñ¤]J˜Ãd2cµZÑ4y!DK£˜ïœXäL¢(®Åªõ-1ÂjáiÅ@&Ž.­) ‹µSD“8h4õÑŒu˜1™,X,_qµøº¦—„ ÌÑȇj£ÁD˜Ž+îÜ9æÁÇøü‹Ÿðè³O™ß=–FÁ² ¢(]) óéŒÓÓSÎNOyýò¯ž~Ïéû·\-,kêÖ³®kÎ.¯ Ç9:w©Ö=ØhZ­ñ]$y5þFÌO¨¼!Lr8wcè'Ä1ÉIi÷µëúÝKt'õ ¨ Ä,“6.Åa£4Δ6TeÁÃyôð_}ñ³Ãå´D;9¤—•ÄC [ròú=ož¿æÛo¾åÅ‹œ]]Óø–6BðÜ;8d:óÙÃ|òàwîÝe6ªðë¡õÞ½Ëõª¡i<ÞG–‹«eM½n7-4*lq<†Žnúh˦’œAëUÓ4[Ðv“]»*ææ°6ˆs*åv´ 9þž´êÍÍ(Y•Å0r5vŠ >7£eÐê „NÈ}Ò9°zgMÞ¸,XkFTU5ØŒjRº¤( œA¬?Hë®%(Ñè_¯¸M mV×ç´ë+lZcU‹±Ýú’6N¢®1)BÈœŒ¸áˆC2ÜÔ¸~H’Ïqý¡A+ &¯aQÚR#ŠÐ†ìéÜÂ"È)•ð> 6àw’¸àr[]R¤ÌÈ’²D“¤£sMÎ*Ž ×ËF>s4v¢Y‡ÄÝ»#l¹æíIâå[x÷îß[st¨—8WSŽWLÌ”³Å)o¾?åðáϸïSfÿþWüðä'Ï_Ö-mH™Eå¨Ì¥¡9Àƒ¤ðÝú–’Ô^|Åî½¼•B@S/VR áä™Ñ4 1´8_•")K‘÷¸ÓÙœµO4^b“™Áš‚¤\¢,Kf³™¶ò¦}4ñé§Ÿ²Z/X,}áh4^ÚjÝ»µ”R§·Z£†õ-w™Ò7~Þýe1ûÛ×!¦'zÑ/ÄM]úö y{‹mV¿gÎ1¡:%b“ˆŒ8h‚ï o¬Öèh0IA”b”"våEQ¡º¢’¤ˆyÀ»qԱŘRˆØH¦T'J+¥°En4š_þò—üú׿f½^s||LÛäóRßš½-` Yrµ½p®µ&´­$)˜.ö—Òµ<_bÌÃ^ôMÄxx†*Ë’Ÿþô§üÛýo, FUÅññÖfhs>ü­Ð*àrkka”O$2Ä]ö—>|Ó’¢ðïÌàÚ9§š·\Ý=cÈÉЋ"±?gƱÀáe¦v®Ûatl÷ü×G=o‰ñÿ5lûÄÜmÒl-öÝ?»÷ÑðçÛ”„Üâ¼Þ=wî¹6ïk|_÷Lñf¤¬‹î'¶bª)ÈÂæg}ŠW¸›lêüYµ¡É-‰¶Å˜…Íi›Hã%¢ÎÍ£ô±˜Î%igû­¦Än¨?d_Y…u’œQºK¢Ä%£/l±Jåä’°£ ëpƈ¡b  6Èš$¶¯Tê‹"6ïŸÍ¥n›ëC³¿pŸfñ׬-ûDn~D ÚejíÆ¶·?ñÃs_jm(ÈMCý§Ó„6¯1m]»ÜE5(Tn­Ž{Èà[¸+i‹ô¾*›6|—à°{cQîÞ„<Átα\^Ó4 EQ°º^æH‚Ôć0•¥ŽŠä ¦šóúý9ÿåßþÈoÿôëFS'#q¦IZ¡- 6›Ù}ó ݽѷͶZç¶ÀšÛBX'Jtµ’·‰]»9ó®‚¶³ÀŽF#Ö«ã²BkhÚµQ€´)mFí*7­E´#b­ÁYÙ`«…52ŠŽì¬Á°F à †,Ä›T¶Ëƒ1Ƥ~Â3¼€U®eö­—¨SLƒ"ôΠ²4û…Sblž¶ {gUÌÂW]'¬•×' -hkPÙÔž6m*mûÉqè§Š:st`™²¨‚°À”›¹J"‚å‡Õ›–$ Î$ê:R ×OÏ5Öu›mŸ!ú2Yëb”j M¦ô5êÎɃ²®kBˆ…ÃûV8b¤/ת|¯u-Ö²¤ÀGa‚“™rݦ ’ Ýéè犎•+¯óóãïtÀöCOÄ‘…Yâ7m[çïcÙùnqê„+)К-x¨°ÐIB²4ѱŽ#‚=&˜û´ê©X6×±å*(–Iò×Ú—øF£šHYVTÕX"7J³²–Ö€5 ]¤R¢!z\9Æ•.ÎyóòO¿~ÌÛ—¯xÿî1xJ­Fθ<ãàxÎá¬`2±$ݲö‹ìvt(²ÃQwÓVÙ%¤±HBQ ‹v|3>bEI t1¡(ÆÔmäùó§¼{ù–§?<æäÝ)Á{’ßÁ–SÜè5žR+ÍzqÍÙub½–âôp&`øà0ÉbŒÃ¥î~£ÎÉ$Aip³f2£5%cÐІ€Vmãyöìßþù1çgg_‹šQ9¢Ô%ó‰e>r”¥¦ —ŒG÷ˆ­c]/íM¢4‘u#×W×ëÚãLAS+#bô”ã’U\A!öìOëEœ^/=ËÕ€K’3íÆ8L~žz¿"¶5•²Š’‘!àÈ­…'ª‚ÂÆ­<Ö$ÆÅˆÃƒ9÷Þáá'xøÉÇÌ)Ƹ£ [–4)0©Š:&ç×¼üþ-'ïßóúÙK^¿~ÅÙå;–õšÕºaµn¸\®¸\®Yû.«ñ9’Ph(³¸¯è¸IÖ#Ôf±µ…D»öJ4„$åè,’ƈ¤XÒõgnp7“µÜÜÚ˜bêaÙF)bôDŸ«¢X'L’ƒÙœûîòÅ_ðñGd£V¸Ò¢­¢(“ñ„zYóêåK¾þÝŸxóêïß¼g±ªYù†6&‡Ss¿1- ¾<úˆ_<ø”¤«pÎbÌ/¿ü)ål†MxvÎÿñþ'.ί¹¼º–^L›ªíÎéë:LÇŠé‡Sò^Bަ‹OÐ!FBT}n­ƒÙ‡1Îå(QL=‡Éä·AågkÞÐæè‘5›ö§”OÑ‹+Y+‹1rmDïIaÇâ>(wŸç…ÞÔ¬ÍMcFJM¬Óhg7äó·YDõmá¸5­¯QÉSèˆU¡@å¹Ü¢0%¤L÷¾OÌ|¢Ì”¦ñ•Faäà"~°ÆÅ„qÆâU+¢’2XuÿÔ‰ŽÙ¡Dp®ùjˆ=ËOç yTRNá¬"âsñ¬ÂÛ’¼¡0&׋ÚllDÓN4×7ÌL½³Ö&V=Z£{~ …2ç\þ;›’»Í}" ½0`£Å”äì–SNEë³Pæ,ônCMë[a`ícA‰³D`“MÓôöå&DTð¸äDqš…*Æ G<}Éýõ×üé»×$5Å'/í.vf@ç)`lÛ— VÍîfLJ®ÈÛîC¢?8øt#Çùc­»ÿÔuÖŠÑhÄl:%6-MÓH4ʺ\+¿Ù(ôí(1HNáÞÃ{Ì燔¥£°² 7NSU…u,ίùîÏßóõ¾æúrɇÓs./øPÖpxtÈç_}Éßüäs>šÎ9øÉO¾äßýíßRT%?yÿŽ{¿áåÉ ç‹ÉX®—+t~v”e)Î"¿Þ€7»5V)Ô ®#ºr޽t•ó±ã›d‘4’ö²(Ó ø#Ó3ˆ™qµû'uJý ®ßs½¶69îHÈàÚÔ7In˜‘1ÇtÏ‘-ÒúA {¿.f†–Ë“PÌÀW’X17ë„ÂãŒ"906eáݘÎy¢6l6L­îÒ§ øV†H¾•vE£)´²G˜–%¡ 2'P$%óºnñmºÑôËæò–8S ½À*ƒ$9àkQga2…~}íøXV¥WqÈŽ0`Àª¾} ÄVžE™çŠ6•0aj½ɇ˜Y²ô¹n£w$¤Þy+ûÏ"j[þþïÿžwïN¶#Bz?CwèБÏÞl5wu×£µ®i+¥˜L&"¼¶þF#÷>Ç’1†;wîðÕW_ñ¯ÿú¯}Q®krŠ Å7-!zT’óIç¡·´¹]£Ïצ º1[Ðö{øë·-ºŒçèPJ²ÿgZ7˜6·¦i:a_{ ‡> IDATb¸¾ÜþÏî9ò&cùvPû>óÄ>ò~H·ºÕá¸ï~ˆ7„5}ƒµŸÅoN _Ó.Ä^àäSÊRCçy꣇:7 £oÛ"žÊAMHäØ>½QÒ­Äν®6lKØrlok™7C’( 5vSÒ¡dt×N”ذR¸ÂRV–²4Œ GU è‡"L‚C!WΚ…3N›žõc"hÛ)k`ÛD²ë†ÚÇà:ìv‡›ç¶ßûû·ÁÿwŸñCCϾD@?,¸ñu÷³Å{7VÚŽT÷Ÿsüõ{â ¡ï.àÔm’¬9𤣏Âóÿê¼_Û¼69ÛÛ$ÕièH‘V•ÔeX}ÌöD">6´­'’ÊIEƒ¢MiZÍ“§ïøíŸðõ·¯8»n°Õ¡Ôx¢JêîÖ"Z–ôÉtKø¶Ô­ öv;4­ƒeǬLP£jÄÑá!3T , B×Ûólrg¤3[&GVL÷`Œ‰¤|޲ˆS«³è'A±f{ê•BÉS°3Ò· çI©—‹>mªÞËRS83PEeãb‹uôbù³I»·ÊÔóŒˆGi‰ ¤‰!fJVÊN¯MÌ×ë¦ 0 Úc/øu‡æ 'þvûMÊ‹h6ؿˆãJ>Û€³JÜeŠÌ‚ê Ì¥êþ[© ˜ß9‹6š˜š -d«y¬›ÎtØ6‡¸CþÕåÚËÒí<äðL¾‡vÌ}¼ÐZ9˜ÆÐæö.«®z¸¨êßgùžòÚÅ×Áƒ!æÌz±º#޲Ül–ªBWÖGÊRPuÄ'MPލF3¡Ñc<‚’ÃN=ëpG)ù¾Ùc:¢µÅ•­Á·´m„‘ÁÍGD#UºVi Sà›–“·§<ÿþÏŸ<çòÃÄDQTLçrppÀááœùlJU:”I4¢_c#톡Á·+ðPY•§V¹è«k•C«‰ JœQ¹)Pq~qÉ˯øæ7¿ãäí[êëkÒºaT8'c¦³Žïßcvç.Åx‚6ŽÚ·Ø”p)áB¤,Ge°E…-G½Ã8‡­\fPÔ²Q."ÕlB1Ÿ›5JçV 5ïßžóòÅ;>|¸ÀP2™Œ %îÝ»‡³ ð¸BSXˆ*L$6c|»ÀÇ ëö’¦¹¢m¤PS H~}fg¸Òµ®‰†%´ ªd|}hIA”+“¯UkòÁÂÈÆ¤-m›ïsÁZIí¶ç<_=àì Ú~¹ÆÇwr|÷=úŒO?ýœ£û3ôx¶«Q¥¡šTŒ'£QIQ\]\òáý O~xÊÓïóöõ «Ëmíñ1p±¸8¾4>¼Ú$®›ˆ2ƒI!EB¶”1D•$¢b?YWJÄvm ΚfÙâÜIÓ*ŸïTð¼iÅíUë2¿½íš;UWA-"µµ“bßÔ½÷}ô€Ÿ|ù>ºÏt>§ØÊQxãªb\”Ô×K^üð„—Ï_ñúùÞ¼?a½ò,WkV¡ÍíµÂÞ¹wtÈýrtï!Ÿ~ú9?ýéßpüå—àóÙ§Ô£Šæ›?sñä1ßüù[þüÝœŸg@v ,]4 6ØŸJ,ùVK RÇfÔ¹z†kòîÆ) bÃC†dŸu›Ü{(î»~Ϧå–Sê$áM ç3‘BWI›úXéÿ' øgz¸ ìà¤ïTŠ8£(\§¯uâ²&em(ˆh¢7¬Ç›A;eì°ÛQÚqC„º¬W NyB)iøô-ø 0M¨%ÖÕBÓä÷XË>¡kÜ$OÈ;W"jÓÒ¨un­¶Ù•=äÓälˆW$úÆ·˜"Ñ·yLqF3›hT-5ïkß¹ ´Žñ¡!ŒY,–,‘×o`½\rx0âøRü@®™pætÉE}Æøð3}þˆrv‡ÇŸsúþ•­ˆ¡AÇ€RA ¼±&è,RÇ@HzÏA%BUì§Ü}ó ÷[ó®<„˜2“$õqÿ˜ßk-­‡¤5*F¬F]hZŠRx{]3¦À½e=½ººê];Ëå’¢(øãÿÈÿøGîÝ»ÇÉûS.//™ÍfœñŸÿŸÿ‹»wïrqqÆjµb>ŸS”%UUIÔîêŠc/8w‡Ÿ†δ«« ¤/v…/‘6æ8QvŽôP2ï$·Ÿ¥a«Øî\¸~âð±„Øâ´¦¬\ïpå`~xÌgŸ}É£?g½\óîÍkf‡3\©©FN¢ib x’Gï7Œ« :¦•4kÑ xÝÏì÷ ½Ê+0l§5>äg?ûþð‡?ˆÈ”…§V¿ï<ÓEG;±!$Mi¤Ìæ\–ò^ÌÇ4ç—ýpÃKÄbè}&EQòÅ_`Œâõë—7÷úæ ´^L Vgnn®ÔÚö© ß4Ù©åehè ‰øÈÐTðMÛBÛ—Nt¼£u }ë£FÝ4t÷•Ëûñ ÓVƒÙ"ìªø˜±jo߀ˇÅeM‰Ø¾¤Î¶Â”öÆû6÷Yìó›sÚ›,êP!}Äð†˜ úV ²¹Øœ·DÀé†.ŸM£ FÌÐ5¶á?Éù¥ TzgΕ—{¬Í¬Yq\ “8ÆÌXÎgÀaÄÍÞhk¤mÎ+©/™’8l6dËä3³¤[è‘>Ö(J«¨ +˜ ×a‘‚”ËÄÁs]ç&½Ü”©óûÜ ¬3ùóÒlUí6Jîˆ;C—ÓPˆÚ' v<©aéËîõ•’Ù¹^ýŽàdö€Ä̲ù}µUˆsS(»yÏlL&C ¢/ÆÓâªÒ¦k§lXa1e/á¬VtÖ6ôø2¨_\Y†˜ãÝ~pÿ„HÎdSK6°q^ÚÛnúN¥lÛV¦p!Ñ4uV. zä(”W°J–g¯Nø/¿þ?|ÿŽ&8\1g¹nP6ó)ÌF ×9# B}Ã=u[Žxß4{Ûnw“oµ50Ú£˜ïk‰~Ÿ"7Á¼}ûš³³SV×‹ÌÆ°[ Šøà8›²yÓ×»À ª¼O¨‹™#J^øaBôÍßÂúr9Mvè/¥`4R8'œiT}¾YõUš¢:)¹TlÔcgŠ#/»ŸRn6Dàì!;ÝêvÈZ‚a;ñp·y m¬˜Æˆ´k‡!OJ–>q/†ÒÀàC÷ûiõê†: ËZ¦™¶QÈsÒ(mâvÝ{ŸúL¾ˆ¹Jµ}CŠÍõ¾ÃX¡XI3K±™*;:O ÔV²4Øñ¥ÜÀÕë›&¿]ƒb*젛ܕ lVϘ9f~àxë,ÏùÁ„LU}‚6i%ž­’_^•DS¡ÁhMUj*J´‰8›£’ªkˆi©ÎS“bl°¥–ëREŒ‘öÂëë Þ½~χw'Ô‹5 CYŒ'fócfGÇÞ½Ã|>§ª*¬“­÷ 1©&„šU½ ^Ehj¬±°( ÌäU"8jCÛ(ðš±+pfºVœ¾{Ç“§/yñì9ož½À/¯±Zq0*™Ï¦Ü=ž3;:âàÞ1Ål†*G$cˆmÁÈ9LQŠèVUD,ÊUÆ¡Œp°A`¥Zцˆ-£QA9£ºH”Š6Þ¼|ϳÇÏX^-SŠ¢d>™3M˜b¼Úä¿YÓú)kU°h Ö«‚kÙ<–éÑ1ãÃ9…34íŠfyES/©“!µ+Ô:‘Ú€ož¢„ª´(Ó1Ï;X¤4µmŽ,åk¶Tpx$Vk-IWLdž»Gç¼x¹ZÁÚÃäøˆGŸƃG_ptÿ#fàÀŽ5¨k Æã1óÉgÍÕšËÕ¿û–7oÞðüé3NOϨ— MñM¤õžÅòZ¦oI"“N¥¾"Ùê@ãÎÉ#-t¬ƒQA˜?.»#M¢}HÙu"?¬„hÝiT¹Xr#~ÜV‡½‡/Ó¯9!‹Ö!äÒTáY­FL¦#>ÿô3î=¸ËÇOGSs.__0™NY¯Vœ½ûÀû×oxùø9ï_¿c±X±ª׋%M’HQŒÇ%㑃X³¸øÀñÁæ£ wïÈÃ|Ýàë56)T\œ~àOø#Ÿ>÷¢(i½põŒ2Y¬ßèCÌB~ÌÏ2#›E;à)Ø»îÿ¥ ÷—Ó­]ìç¶ÃÈ>÷Ã=…Ö+¥­××´ÚÃì鹊ž”ŸÅÝÂ2O#ÇUÉuô*`”ííõÝÐĘý0í-=tÀLCŠˆhC¤Í8N“!J+‹­,ÖXb ¬kX·`sEµ4ò×%™|*=ÜdË~§Û? “ìü5Œvùç“/¬Ó†e4¬BOÄ~ˆ"‘~Ãd\0;ÚÖ³\¯©Û5m’gèÁÝõ,qq%±þËó1¬˜Ïààà˜:^Ð$¸þ°äêúœé½ÿŽã»Ÿ£‹Ï™NÇ\¼cuù¦n•VâO¾%(+«Ì@¹Ý1ÙE„†ønèf­•qÏEÕ9ä/»(”ΠÁ•Ëv%L¾˜¨Fò¼£òXkiš¦¿:fQÓ4\__ËŸü^Ó4Xk9??g<ã½çìì ¥T†|/¨ëZd1bmÁh$ :—ö÷0ÝaeÛÚµ´¦-1Oë›ûäa„ªƒ9 K\ùû×l5IËÞoT”T¥ÅiVÎHüQÚblÅÚGвäðÎ]>þüsÖ‹%®Ðß=¢ªJªªÀ†¦^— ß6´ë•<Ï%sœÄŠBË—`öºcûd÷@¼ìXÃ?׉„Èb±àç?ÿ9ÏŸ?gµZí´d«[[Ê$╇§J¢ëAËÙHhi¾xN§Sæó)çççR¡”Ä6oi£;::â'?ù ¿ýõ¿Ñ¶íVݽ `†Pdw«ú!3Ùío’DÎ '­ÜRn¤¨Û€Î⼜B§m~¯åéÒ<] X?EÞDÃl[R¼…Iõ×ÔøÞ².ßÖζO€¸MÐÚ¼Þ¸·Upè”ÚßV§÷Z¬v›{l}Û·nn^?=¦e7ú(Ïs9wY•Åõž“…´H'9Äès{¼ÀßCˆÔ^wmÊB~H¹|€AsdÚÚ{QOo³ï2ÏnãFÖ½p¥Uìï)£5ÎHTVP)¥£¬³Èù˜zá$9Tq“J2:»4ûDõx€Ý™ÌìÝÇìû;»ñÂÛš ÷µlî–Ö Pÿ4»/näÜ&æöÂ{þÕ9ÛTÜn0L)?ƒ#rfâÔÚm9I»¯Ñþå™…í©Ôá‘Ml ä ¡Ò'h[±‹®k‰ÖuËr½°¤u¸¢B#;â›^ð›ßþ™§/NY¶b n!k£ìÆÙ’ècoÚè…ªßv£€Û,uÀ|X‘½»àíí¯O_)6ãØÇ'ªRì´õë&ï]…ðŽnL<¨\I*ÓMk4ÎHÝìÐýe¬• ñ¼¡ŒrŽ’ÆµBúÑ>’¢—–{Ç•3à¬l8¦Óq¶Wû~jrD¥tš&×uM1mÜx1n¢ˆ>+ëÆD‚½ÈSû@ÊM=ÒD“£Š›«?¬äE£úÈ*ö¦oŒrÍtS #‚•Ud¶VÂYEÖ0Öô"Õæ&̇ü`í¢››ˆ€qETln â(‹ ì„èNéèzÞ”|ߺ–œ6âԛܢ#Ž0©ŒÏ9ò¦7f>m5—Ų®¥Ê¼¬ºØ¡îÅ:¹±3T>ƒ6»ƒ—\] Âà™-r EÒ=>|´4ÊÒGAcQÆ ¡²`£0²´?qðPm}щQé( ƒÎ‚¢q…64Ë'ïNxýò ® ^ràe%î«éá÷îrp÷>“ÙÀbh‰MEÔ ^­©[ËuëscSÊ0WÇñÁÅáCŠñˆX×Ô>°X¬0ºÀD‹¿¬¹¸üÀ˯yöì§oß`b¢ÅiÃÁ´â£Üx—r6ÇMJB¡ ÐD-Â. \Y |Ä–%ÆV¬D.´°Ù’g`ˆí4“ùˆÙdLÒ‰¦mQVîƒà§ï?ðêñ3^½xs%ÓÉœj?bvxÄh<Î@ŸÝ}P‰fM %†ÞÖZ³Ä‘Tb<žPÎ&Ì~L5)Ñ*V—}IãßqÑ&ü²!-dê¡’¢(œL¤´B[0:OÕƒDY} Ù Ea„Ù7Ãá¡ËWïm#“IÁÑѵ\¯K¼ž1>ú˜éñ#T5ÂŽ=nÞb‹ ç*J[âŒEcבëëSÞ¿yËû·/yúä1çç8??§nÚë•g±¬i}ÛK J‰U((G0ª ª:·£<ŒÖ>R·â k´taøH/úÇP©zÖJÉ¢’•{KÇÍV+;ŠUâVèë½F=s†«å‚Ëë ÞŸ}àÕÉ ßýá\½}‹ž¤ÁûVÚ%#r¸J;ësøuñ=6ʤ•é7ÉCç•"ö¬¿­Ivï¾’ƒp×2Õ?ãzÁ(»~÷J’ÎŽ4ˆ©Ë0Cg.S–6Ÿ]Ú ŒºiÁïÚ…‘B?¸ÚÔO§›Ý­ö×YméQݺó7Ù-¨2“ªk‘‘Lç™HÛÊA‡++\Jøe­Ì¿¨—bô4^ÜÚ]{rWxÒq‚TWÍ[¢~ÀÖ5ˆõ G‰T*m„c”Ý„Jéì¢!¯ûù|lå`£Ú_’ý„1`udZFu]S·R¡Ý;sïxÌbÕòö]ͺîÜÕ×TE‹±-¶ð\§ÄòÚõ“ùÇüügxá§.>Ú˜ÁÚJÖ¥T2l5§ìüÓ†<“¡€eLŽ»eïúÝ~Fed€£ W„èi"[àë†?ûX¢beAÛ¶ý`ªµ&“IvXM¸¾¾î…©º®ië&3ºd¿vuu•(›û¬m[Ö«FÖ˶݈)=G ÜV¢hvÅ?òÙʰŠá>»cAi•c#¾D3©s‹Ä›Vwp¬ª’qUPY‡3š*D»ûÊÖ(’b6›QMÆL(ªk#GGs]tnÁ‹<~½âúü ï#mŠgqE!®¥ MïÙ,}ûXþœ5;5ïq¯ç½g6›s~ñ¤Å‘þ«_ýŠßÿöw9©Ñtµ¹`b[¸ïbPCX»÷ž:œ³„|¯Öu-ÅEÁ|>Çj“oz+BÖ÷“Ã(ÅgŸóäÉùù¬ì§Uno}Æ¡v«ü)„@è§Ñ^J4ò¹B‡åý²FÎuMô¥ ¨ ´±Ú½ˆ»6ß´±F\·8hzÓøcí˜?vnÜ7@ºMº-‚x›€5evÅ®mJÝbȸÝõµ L7¿ÏÑ̇/*å!›bÃrz˜³sM¥M« ÖFÚêógî}Ü]C.ý ¹©0^ʹ|”ßÇUÌ¢Õ¦ÌÁæ5F¯Ôÿ*£vÈnÜ¡ÃNåÄÒ0 ³1zÈ$…ìôI#âUi)D]focÄàÁ&R"dg¥V §à€tÚqȉȻëj’Ï0sçH?*ðì–)ìs?mZœÙ*é V›ëF÷>ìU÷7WÞÔRºˆân”pgµõûÛ‚ý¹¶xZ[¯#ŸÉa“P`ìŽ3~cvòí6?Ìçä[/` oÉ.‹ëªn…}U70ùÅ®b4™QŽG4^ñÝË·ü·ß~Çwß¾ áÐEE]BL˜.âÖ‰3 %±&2$¯Ý»¹ß¯»1¼Õ6z»*½kWís˜Ãv~_\nôh›5«Õ ¤iM\0º‹³¼››ÓäúóÎÂ{¾µgˆ&1ƒítgÝ6)Ûn£ðG”4lw`ŸUé|Xsb, ‹5ä0ä÷9#C#H$ºÜl1´:F’4Kø m#;´¬°Jb¤‰¦e ÀeáÊhTRÛ-ˆý±/Ç:¦ÞÆ~”VôóÚˆ@ÕM†”îœY!\Ö¹ü:cþ“ÖÇ ]Z7º‡k†)gºÂ $d[yTx/?×0òG†Ê5åû¨gôiÀ6“×, €2©6™ÿ¡óWnY½s°¥oÅè¸ZÝ3¥,%&R”f'†ÙÕv6Ù”›§BØ‘CVâru1Q÷­ƒ’#Diå«£c-žDPŠ&µ#­ ÎÈfU#­aZ %^ežA ‘ã¢ÂKë[ŒÒÆ}àìÃ9¯^¾áää„õzÝ;تqÉìpÆÑý»Ý»Ëìø[ˆ$ÚÚ³€0øX¥†…׬‚f¹JX¸3ž1½ó1£ÃØÂáíšf]£‚ÃGx±àâÃ+Þ¾9åìô—g\_~`âãJq|<ããwxøàˆÙá3ªˆ…bX]Cvö™"O ŒLεs9J±±~wÕ[êÿ£ì½–$IÒ+ÍO™÷ Iªª««(Ì ¸ž÷„½XÙ]@ ‹îA±¬d‘Á<œ˜™²½øÕˆ{xd÷¶HJVgfx„›Q=ÿ9ßQPWmÛàÇ0ì¥r^W$2Ý~Çýç_øòñ3þÐá´C[Ãêâ‚‹7¯h/×hëääòãHØaLuE ÉŒ· ëNKmúå«W\¿zE}ýŸä@ªÎ\ž"Ûþ‰Ç"îmX5-Ê%öª¸ÊÔVºžœB¹l•‘s®®k\M¤ÖrŸQ²ÈD®/.¹¼~‹i¾#Ù7èÕ·Äê’KríEEլЩÆéš4xoï¸ýü™»Ï¸ùý·Øoï9tOÄn  oPV ì j uM WWk¸Z­hËz-?Ÿ2]x:ìýПÙm#]‡ü`ðÐG1#ÄmF d‚ÔDÚJ4.!÷âsŒ¯‰VlV)TL˜˜ÑÖ°¾ºàíÛ·|û‡oøî»ï¸z}%–öÚ kKU×´•8iûÞý~ÏOÿù_Ü|ºáææ†ÍfËnw ë½t)IôD‰0V9Ūµ¬Ö£=¾{äý—{¾üòÿñ]”–=Ÿïn‰9c¿Ý£c‡É‘.$¢J¬V-YÛÂL‹Ïjœ“TÉÈ}_‰ÀbJ”H­…ŸSˆVé…¦·sÓñ—\Yç¦âhÐ_ÙØX‰ª|Þµ•õßœlæ”82ñP“+/Qê«Çè©Éó Ô’ÒâõÒ·H«—1 ¹ ˆ$uª I »$Ž — m+ú>|GHQÄ.[¾abv$—Íž¸1J!Cš¥£*˜¡²Aǯ|ýq…øèúç”ÊÊ:FgXÙJÄ~ßËšQÁª…Ë Á D¤ª}?DÚ+GS[†¹ŒÜÞ\5Æ=Q]F®ØÆa»¥gGöàÇü–‹‹†ßkË—ÏÙw•3/ÉÇÝw_›P¿Ä IIÚ.åœc0Q¦”D$6¶ÍÕVp‡Ãa~{ïñÞS;-ÔC!òz½&Fù÷ë•Üßw»oÞ¼$ѱˆ§;ìiÛ–««+º®ãòò¥Ûí–§ÍnrzÑ´s œæÖ³1¦òlcTÖ MÎa.HïÚ9ir)V¿ÕȲ©K»r\´-µ5´UÅESc”8“Œ1(W18å¨Û† ØÊѮ߰ªábÝÈZ<ÉOåŒÉ‰4ô|ùø?D¢S7¸º’çWqU®!kƒUe0wF>¬1Tµ=‰°ßÓIÒ<9FåB?ðã?òpwÏ_ÿú×EkgäÜ8v»Œ6',b)RòÞO쪋‹ 6·;´1Ç`ý…8æœãü#www“j\sM-°AXZ•u%î(,È>äÚ6VV•™z±g¡®kqã0àCONj:…/33\ÎÆó±;5 ˜_Ûß»bÿÿ9®øÊkMàzéõ’£øœÀõ ¼ýL<8vÃ(Ô‹Ï¢|T"süoŒVgËÆs@®±Ó×.EY‘¢¸¬bLeý#e\±ˆW!*b‚”–ìäp_îßGyž|=¨~ñf÷•Öc™Ħ´¿ërYtR”"¢l[9šFö¾uUQ[¯ÆÔL"ñ*‘”ÆñÉZ+%, 1 eZ‹AdLͨ™õÛt)䜶O7 †³kœ—ÜNçÎ×—ÖC§¾sçþüõúo\ç×dsËà °SI§ ¶eÀuÔ"bVgkÓëW§|{,`å(Μ”$íC*¿Çɾ•8W£[Ëêòж]Ñ÷žŸ>|âÿøwüüû-».c\‰Ah|Š£+¨¹š.]Þ€VªXìÕ‹ö¹—*R_Zt<êŬãÿ’S]LCŒ1S…­ŠÒ¶ãû¥3«Qc÷ÙÂZÂViWXDôTˆd-–€[˃+¥ÒȧHY@“9ƒˆ&bs¦vb°ÆH; • tètƒ/­’i§°Ib‚pˆåæ5Ÿ<ÃÇÈ“ÅWÜñ¥!kSš˜Ú6³¸ÌÜ®EÑW”)MÙø*bãM#p­QºÀóÊ"Gn™ÅmU&ûˆØ3:¶&Ð.ñ /m¦œôQ­mÁÔ¦¤ÅMà#ãXbdy¬)­pFí»,\2]Ü4F?·†ÇPk51¹(ñš\wÇ6Ëù˜Œ€÷¶­«É§æ‘r}n¬œ½ü|iy½è©9##ðZá̦ ¸™•!D§"¤š>Y¶¹ÃÛŽPoñº#iY€c°Ú`”A£%Ç<ÞÀRÆÇÊ´´ºx~6ò1„Ìöñ‰÷ï>ðñý{v»XÍUÆ45õEÃÅ«K®ß^²z½Æ®I— n'ïK”MŠX' ôºA»¥ëWßpõö¨ö‚>F’kÐÙâ”$,  IDATåæã ï~ýO>óps‹?ôÄ!‘|Ï ¼Y]òÝ·k¾ÿáš××-¶VDëéx¥¢eðqTJ &=‘(.¾E´H†u[auBe&âŒ6› ~ù_ú ¿ï§‰´­5«ë–ú²&WÐãÑÚâu”F#-ðh£ÊçÝ*’‘L¿n+¿Bk™T_^]£œb8‡¢­1ºbk6]Åfh YqÀ ž>ö"M„–He ®4uÎ&¬“ªb›,.)Bêå^k5CÕ\áVßÐ^ÿÙ½%šk‚YA]£\E¶²8&9ºý»›>ýö_>üÎöî3~Oņ«W^ÄzÏÔv£-¬V°ZYV­¥©4ëµcÕÖ+MSCãJ ¦ö„úD?d ¾"†Š¤k†û!³yÚò¸éØla×Á¡D·¹nCDÜ[a´ÈK|*(áò¡òþJOÕé‰gë 5rš*fVUÃÕ›k¾ûã÷üá‡?rõæšf%Àýv½‡Œ³TÃXÃþiËo¿üʇßÞqÿñŽûûGî6ô!ÒöLÐ!O¥NGÒåóÔµp´”»ÄÓö!î0IãÃÀ&>âª×®›«}ÅcßMñíªm¡ùCŽ&n“•àO÷_øî›o©ª ç )BÌo CGwس¹¿çþæ3}çñJa*‡qâx¯¬¸™šæB"ŠJãꊺF`ÓVàIsôù'Ô¼ŒVì{Ö«fú¬¬µüÓ?ýOOOÜÜÜH i*nšgnƒxtNM\#×|ŽÒnž˜$Â×6 oß¾•b" MÆ<»<Œ1\__óïÿþïÄ(ç“5³3H­rík‹s–g,ËÒ™&QTYãTU5Åfsx¿'zÊ™ª©&s¡0àÔbÓ9®yõt/]ºjOyc¹ˆæyŠv¿%ü;Å«¯9°þ–PðRÁé°êXÄ3øzq}?‹nùyþ'RfâNr\ó1=»bŒâp×s1ƒ-\ß1-„²/ʲþ!åWŸ—Æx¹ÞÕo̼¯1Ô4µ÷å š#®Î’ÈIpVÀ”óNÄqvŒà)%nã¾ÄŠÐZWvv*…/Y=˜©¬e¼[¤Ô@kMUY´*%eÿ8—4ñý2IXŠãZïLÌsÙHù’³nŒ!ž¿¦fÅgN-N"¶_^_Ò>ž—&ij˜†%Ba¹~:óŽQJÇû{ÄÑ2ö«&Ns,<³@9,ðf|"ЦYð 9cG«yHC Äe‹R ªÚ’UM»Zµãó—þí/¿òÛûv]D»šŒfðJ™òPI³"œÅv¨s&ðtÖb¡_ÚÆN/àSïkùÎs7 ¥»ìÜwü&l:O“b­51y¬’<ÐÇ›zÝ8rÓ´àèuóÜ—Ä8•$÷R&xY¸ª)¤|¿<‚1µ îCŠÒp“£´…AE*#6Æ”JL£&çOЉ! ¤œq*-ib?F}J-%†¹ñ(¥<ÆbA7Åí3+ósÎUXιE³’êÝrãŽ1„[år“)â8çXZNŸ(¶ÏE„2 Ó RM–Ê43®H›FëÑ©•§ i„õŽÙ¸xó9£³D4}Lø>”V1%Ð9¤ÛZ+çhÓÃ7e°J",FQâs”ï•§‡”‡,‡è8ÍfÈ<ÏAoÈ.¢WD=/ˆ*Sa#RMŸYJ"òV,måä8$±»zïÙnž¸ùô…»»;‰å*E@E¶®hV5mÛN­>r3‹ØÊ’!éùý8_ÑÄ5Æfº«ÈêõkÚë×âl e¦¶˜¤¸¹½ç§ŸåþöŽa{Àw=Z)*¸Xµ´µE›€6i›O„zOЦ÷žŒ%‡ÍЍ29’ïÈZa(uô±¸ðTƒQm{!î·²PµÆ½çáæ–Ÿÿë'È!R5-ÆŠ³I€­Å.« YÅ…KQkZ `UEÖeÕºžš•Ú¶eµZác$÷¥:C žý!Ð÷ФTS²ç**ŒmÑ*ЧÙcuƒ1 ]ê•cUƒ.­’¨Œïœ®‰¹Ã‡€6Žz}ÉÅ›0Í[²½À¶W V@«/PÎâ (å¸ù|Ç—Ï·¼ÿíWn>º-µøæû5×mÅ›uÄéN÷ãg»²•iôè†Õ*a”G©£Š*ÓužØC@iG\;ƒ[µ˜¢6 I±ï.Øí+ú!ユ 2»C $M?d¶ûÝÞ³?@߉Àu•@ƒ§XíÅ b,, 1úµp”¦–7oÞðÝwßñßàÍ7¯©/lëpu…¶ï=Í—ë5±÷¼ÿðžßþ•ïßñô¸åéO(*²ò CG?ÆQL¢ª*ê²Pó}`³y¢©ä®*‚v›ÑMEßõä*ã.+lÕsææþžýÐ÷iµ¦jjœm¨Û†¡?§MìÜ\‚!kÅÐ÷å^¬…f /$er)@I4õ<\ôåJRc|´<§ƒ-0áyh&Þâ)ßáå)o}v86 Xú>2á—ØÆÂ¡£@W‹QË…£")-®Ø²`Îåy1Æú†¾ o0³ˆµX(ªÑC JJ+LB!÷>E†¡¸®œˆßit«ŒedGÎÂáÜò$ϰP"Pª<ëòÄ2)Sõ43‹·´™žq¡€½U)ªYw TVhaÖçJ=¹Â qw§ËñÓ‘˜Ö8ÒJ³®-µ¸ýûûˆåç,J¤”‚O?¬¾ù¾yõ?X·ÿćºåæÓ'üቤE„{¾YÔÓf ­d¦Ž¨ rÈbÂ'¢½Uq¢YâzÖiں ¼—¦%m°Éqóé—×ׄ~ ¯ô‘Kâòò’œ3¯^]±ÝnKdí’ívO]`ã*gtíð12t=ÆÉüþþ‘o¿ýcUÕÌ,ƒ=­­ >Ž¢Jé™c!3¡#§É #*Ž›6#ãÆT"C9©2¼]°¥´¬Ûº¡®ëu#±6ç¨ë–ÚÉz1–ußr]¥²pïo¹ùô™ÆV4Z"¨®ó¸”Ð&rx’èà—O野.x”uå³ÐsÛ¬y`ƒR²Î«ëš‹‹!^’¹(‚“AY§h5;a4iœsÓ ;–ã3²§¥q2ÊFÚ”XpÊsaV]WS,4¦X)yþO…J|dÕ¶8績¾Æ~x_b]ù™óƹiV|ùò…í¶§®u‰¼&œst»þ¨xÄj#M!’²*צìvƒGëUÉ0ŸR^‰ ¾#Äcë¶•5ÇÂ}2òVeߥÀÞBŠ Ðú˧—\&«…ðÜ×,›Ù^r¥|]¹T/ÁÝç^g)`œÃßè²Ï{öïõ‰{&å³NPS>Ïɵ`nMÂzaº(£I!N‰ª‚´¢dŒü{¹Gøéƒ''CÌ¥¤¡ìYbŒÒ@ŸÄ§öàQÈÐ (yy^L¸€òÞ‹;ù¹ 'zUŒΨ9qžJÙNÌ¢¥„µk2F‹ÛÌÕ r$†TœZjL–ƒ2HÔ¶*g¹Ä–Ëõ<1¦i?ûì<šZŠÕ‘v±Œü‘ÁÓó협•0ö\ÖñˆquÚ2yž÷u'ñ9§ ¤¯0ÁóW£­ËŸoùºÃj¼§Œn¬‰ËgQÖ!QRA¨xÔ¼¹fNmÌ‹óJ•ç¬ÕªÂÇ!|öø)‘‘ sµ® !Q]¬‰®æç÷wüŸÿö3¿~Øó°óø ض¨€2UÚÌ‹==63ª¼IÔ Kʘ™S5*›ãÃa¬—?Ð Ú>Õx/œ'äE ›zñƒDSÞZœ$ÒêW¦¼ZüRmUË¢²D ui>Sã¯lN¥–6AGDŽÞGªœ‰ÁÓVŸ©I9¡­0k|Œ 1¢sÆY-Œ'•©œ#„­‚ˆ3Y6%mSal©RJ/&;R ê¬ÁhÅ!ÈŸi3ƒv`M5ÁÇç!GSó%ÐT”RƒV²ÁŒ@iö3¥õ"–v§‚%Ñ2™–tK™ Ó¢sd(•…™S>ô“•“0oj'| eÎØµ-7«i =BŸÕ‚ œ'1i”L­$þY"=1$*çŽn49˘zÉ!ˆâø ÕSÎ[X^åß2FH i BvËv0Üžxì=ÞödûDµj±U]ޝ¥®›Ò¶çpVS)qñ™‹5˜Š\%=pµ¾Ø,Ї_øôá=7Ÿ>Ðí{¼øX­²Ò¬êëö‚Ú5˜ i^ŠÒ²(ŽÞccP‰ªqJ6úµF׊L¢¾¾BÕ5¨ÕœÇþòù–OŸ>q¿ydwسÛo‰!àœÃÖ’Á–¦!Øû]o©%Än?pðYœh¥cØKÕÔôQ,Æ•6TÅ‚oTf容lVä,Τ!Be,•²¼ÿ…Ÿÿãgî?Þr(ŽÚ:lÕÐV-‹ Ò3 ¡°fF>ÞÈÿh«p\գÇ*MnQ­5•²ìò"Î:î6Oä!ଥ²Ž˜Œ6¥ >±jUÑ®¯Q&a Tµ¦® Êi¼–Ò]@—U­Ø„¨Ö9ê« ÚëkÌê’lVD·Â—Ú#[~®”‡‡wŸ¹ùý–‡»Gî¿Ü²?ìi\b}Ys½îY×ß|£yµ†•É„°— ¬³dmˆA¡’ž8GÒ“ZÎû!Ð Âíòƒüuå,µ«Å œ3)ˆB“ÄxÏ…V¼¾l1Ú–„Œ"+' ¼!Ñšnpt]¢ë³4¿¥Ä‡.°ÙÂ~¸¼z‰%ú‰Çt©Í\^T¬®®ùÓûï|ûÇïyõö S)”ÍdíI9SËÅêš4_>jqÚÞDÀÔÂJ¹ª,Cˆƒ‡öÅE›¹¿…Ç[0U`õZÓè- çéÉ@0¼ºü‘ÕŸ¿ç¢iøýó;¶›ce˜:NÙÙàY+LØ3Fz˜…犑 ¡VÃV#@Ñê^Y°º[ʈˬ´‡)Ùn6…‘¹<‘ÐÏþðþô§àçŸ&ìv(ë¸zõšíæ›~èÈQZ‘Æa•5¾lŸö\\\ܧA&YÈÅÍ_Ü“ó+ÍQ­5ÑÇ  QÛ”ÂXVD»,ë¸YÌYÜ{I„ã1¥d•¡q ëõšÕªÁXµ ­«ÈÁÐ猎2ˆ3Æ’bdèð!•eˆ Läó¯¿ñÍÕ+ê«KºC†t`½nØ{žî¿póñ#Ÿ>}¢d"F%9“JEf ™Ãá0ñÌ$>½¡ïW“S0¤„r+·BiKLƒ\Ç¥ G>ÐR ·µÅTßõüðç?r{ÿ…wïÞÓuwK? ä¬pUÅBLS»˜.@Ç1±âªº¸xEpì•“¦Þ‹‹ ¾Ü>²j6»-1&š¶&„À">Fºa`³Ûâœ&ÆLSË“ ‚wÈY€ëF‰[—¤°Þ{YÛ¥˜hÛ–©Øn·4•8ÙB7`(k0u%½C„3"ræ¨Ð»Ì#(w!ÈnU >F‹Û-sÖ)Cz‘u5¦2NãTKŽÝ -n;í7—‘À%¯kÚãûŒë˜÷•VIÂHk7¥ &Ñkù³¦0CZkŒ.åNeOS<~oÏÜ:é8ž°¹±ÕÜ 1’²<‡b.qp­¦½êÈp 9–H ÄlJ|0KBA¬$Œ¸¦‘½m^ÞÆc69¢Gñ¨<ÛU- 1xÞdÀ3–8 9ô` >ÎEIe–ª’}rã uŠÚe¬É¨œC$ÅHåZRLÂÕ Uô­„Õ«¢ÀésÄ¡AÐŒ*¦Ÿ91¨$Ìä¼0ÙÈg¯Î4LÆ9~G­Œiú|K2'‡)¾(æ¶Ð”Ÿ9§¼÷²—Y‘³ :&©Ô¢˜-ù]G}8ƒ‹cÄ{?¥Íf'çx¼F!_a­›Í㚬˜€¬µå#òŒìãQ ëjlß÷(#Οf›£wÖ9a\«*²®ø|ÿÄ_~ùÄ/îyØù¢Ø¦ia—ósgÔ2çJ9s–…NVù, }™ )>¸ÌŸ‹ =½¨N)çj„vçEWa¢ÐG'§*ÙLuôó¥y¢ÁK.Ñceãe§×ÑtC@›q‚—qŠÉv›•· ãd"g”)N+]§ñ¨Y#M0ºT¬¦Ò¢¥¸tLSóƒÒ,xWéÂ9ƒcó‹êëxÓ_ª®¢:§Éþ7NxÇét&Myò0Ð(%ïl½ÔFMŽ­®Š v\=«Ku µznø8±|N-YމˆWã`މ(¤AHÌ-f²‹j#k´é|Ð30zb‡èyqÿÜhæ¨kiy+¯kÌ Ä÷Öx.‡…{,ŸäÔóô aK&{â¤Ë3#.#©¸eb}Ø‘§ýÀífËç/†»ÃžhvdW‹Í¶–¸s5M½ÆºZbµZ“¹¼Zqy½ÆUšª6T«–«××tû·w<<Üñx/µÞ]×±ßïIY¬»{oèœã¶¸°ò¹•ƒFÍjµ*Ì G½Ö‚kz_ ÞEDíûžwïÞq{{Ëv»åÐw Á—‚¦D”†Hwð<íèÚ¢LÅá`èWlvC牺@iËÙÕƒÎpÈC¦m*^½¾dÝ4TÖñÃm¿ÜÜòáÝîn¸ÿ²¡Ô«šf%Ëà=á+ÕÒ6ie³S&ë€ÖvŠ79kE(–è1/®•0nBôX¥‰9°ßí8Xk¹¾¾¦mkúaO­2ÎJ»çzUѶ5ÎJ!„u ]Y´K*‰„Qp.TëíÅvÕ’]EК-Z7(Sá;öÛžÛ/<Ü=òøéA®yeiêÖÈ: lq¸r ÅŽ¬XÊ5*nImT fPl‚ˆF¡p¬"ØJãt…1¶ÔîfRH>ÊÂHK›¢rÂpÓ:N­sʦ)z³"cˆ¹"&y*ã)²ïzv§C´t¦?hv»ÈîØo…ã“ÁU+.¯ßоzÃõßâ.X¶Š¦©¨ëZ˜,hüvÏÝÍ=ïûÄͧ6÷lŸ6ô‡]ˆt10…ñ ^U"9Cß{¹†ê ¬Ò„d8ì{¶‡_n7å3FõôÅA–²&dMÒ[­Y]½æÏÿôßøçùŸÜ=z7=ÛûàÚ 2cA«š¬3íúG¾ÿöŠì¾çÆ9[BŠe(Ç:ˆ"X6+Fæ¦áM§s ™lsi,Ór2ä‚Y°V„º±å*¤¹},¢hŒ+˜‹Z4:'ϰX„´ÍfC×u/΂ÕEË7Õw<Ü}Di‹2¬ŠÄ¦,Ú”M²d )y‚L^ˆÅÓÐóhí<6ë²1±pG–¡ñ¸]WãÄ<‹r0_[åßV•ÜߪS¯jCSµT¶–ç|.ÀïÉÙ3Ä€1‹S³¥a÷´esÿ@Œ™õº%úÄîiËÝÍ{n>þÎÐí胗¯-ÎМb9VfYIS\*çÌà;ún/È”Êá‡H¨si¨-¼¯Y– ·)¢ÂI„È(ŒÕüøã<==±{ÚOƒvçVËs㈥¶¸ÏèÅ@ZM›FchÛ–ëË+îîˆ1RË!¥iPMü,Y#ÔÓØCÁØÊæŒdGÑ\—øŸ3¶ˆÞâÌY6ë"öäb(û¬ƒK‚$KÎ?r,ÅP9¦EÜLÄM}.v—õQÄ*B}.‰sΡu¾S^-Å cÌä¢ù[qÄ—â~ÓŸ©D¶”^cÉ3“ÁO>ýESTÿé5Õñû…Î&FnqH2ÆEd eŸÒØ&¬§{Š%¼?F>Çò/5 crÒ&3GϽsÉ©qogT'•£Åýì*iŽÍå¼P(bh MmhjŪ±4µ¥²Z†hYÞÛ$ÐMƒ%סËh¸;}즛Ͽ|OTŽã){îô¿—ެÓ×9N˜Å³Çf.9HG©±™“™&ŒËò{.Ïçsü¶éïóÉùÏÏ%„þlËfæÅÖE½(ìãc·¨”˜^_Ë÷<^ÒBº`ŽúCÆK,%ƒÎ[ãégCµZ‘ÍŠ›‡=?ýüŸ~þ»»G4¦üâ\š<„ÏxZ=¿‰h¥ðÑ?»‰ŸÞ–'ÁÑÁ_4w¼”_^ž§v¾gíIy®DŸk^ÓÙ pbfÔæ¨ØffŒ>ú]žýaŠÊT”NĨ'@´Òi¡+,¨9fQ¯ÄÔ¨BY §¨ˆa(‹¨Âך Še’ M™P‹XFöVX§”ÖF¦˜c*YO"Éx!Å8BúÆ ·bTS.$K­µB;i©$¦£êayOL‰UŒÂ㫲“`8ºÐD@›³ÙÂÉ*7à4³Ñæ¬r,ñÃxT¥ÉÆ:Ú­L"€™²Òúx:T¾yŠqáj[TG—–ÈÊêI¬š77óalõ8Î/ øÓ¢@‘®œ#×¢ØúI™2ÞGBÈ­W™„… •Ý‘»ûÄǧŒ§"É“¤,6˂ӵSæ¼­-ß¾¹ ªÅƉڮ¯.iªèð]Ïíí-÷÷÷ ]OòƒÄ"•Ò¬™R`:‡ÊhŒdi U5óm(ÑŒ¶© 'ÄàýGÑøn(Ñ)Ãíý#?~ä·ßÞñø¸ÁûPš4åøx8¤Ìf¯¹Øªm/¶mp5ì;ÅÓN±Ýwlvm×ÉFº|þ®28[“cÆ•VÆvUS¹7"@XË<ÎTݶ¢?t¼{ÿ;?ýò Ÿn¿p¿Ý`Ô±&‡H×uìvO¸Úbc5qæ<;nNÄÉ4:Qm³š¦zy‚ö!”6Y/™˜8¤”¸|uÍëׯñÞsèvô‡ƒÄ *KS;ÚºbÕÔ⸠`‘ÆTWT*8ûÎXÚu# QM ZŠ¿cȹ& šÝ~àiÓñô°ãáaÃ~»ÇçVSÙ56[4Úv$,!f¯8äŒ «Ä´"—lJâ6"‰3eè}/×JY»áœÁ9MŽAž7YŠ}(b´]XùÖú…¸^^¼Óhj¥ÐV—X•'å€_{| «m‘¾Wôƒ¥ý%>5Ödµ¦ª^¡Ú¡6 XW-뺢vŽØv›;>þþ™ßß}àÝ»i¹Zò;Szdÿlƒ>%9iY[0µÆÒkµ°4µ¦iV—ÖbÆI"ˆó!âS’fèâÊ’"§ÈÓvÇ—û”«HD6›ÈÐm¹½ùÈͧ÷¨8ÐÔV¢R©Tj,õ¹Ü¿õÎ9C×óôô$2¯³]c+º »eÜ#Œ‚îég-ÇÈ•âÛo¿å_ÿõ_é?âlCΙCß {Gé²W˜Ïù”Ò7~1–d‡´E]×¼zõŠæÓg†PÚ+KìIÚ #!xú¾§iœŠË3òG·ˆÕfŠ~¦ÂK†ˆÍšìêº" {‚Óö±àçÁ±’¨ÇóسRÏZç=Ùɹõ7Ä¡—b~/ÁÎϺ´Î´ÂþÙKMs§Ž°—à꧃‹éßiµhì,ܨñµÊùyü^Òܦ»H3±8ДހÇäq%æ‘…ù9ÄÒв4¶æÚžŽR#Ç·<èG<÷‘™ å³¹¹´$”g–¸JÄþÚšbnšŠc$5¡UI8E[[Vµ¥m*ªq9bZr&Æ ÷èñsÌ µÅjƒFJ*£§Ä‚ž>‹b ÉÇç‰) ŽöØx¼O K£ÿÇŸÒÉÀî…‚g:ÅI¤v)V;§ÓéMüôZXbòókfþòù¹pô>óy>ÜR€ZŠÂÏ]êÙõ£;ò¥B[7ÒìE1hejÐZÀâY•EUk7žÿýó'þß¿üÎýýž¬eŠ' |µ¨ä,7IÔ‹öô‚?U)gwÑñ‡4>dNE«¯÷ô‰5ûE8ßÒ±rö†wÚ&•'ÎÕ)kÎúÎB•ü®ÊïbÀj%Q´eSÜx/ß«jjS&•)Kë[,ê°íue"4Y5“€¿uÁ ç$.²—Í L“Ïã&‚ôìfw|ƒ.pâ¤ðÉ5 &Uâ ã‚æ?ŸñzdhU,‹‹ý$Ï?BÞ•ZØØU˜n¤1ª¾-¶L§]ÎÐwéh²8NÜÇ̱œ'W°J“«Ðº™u²®Æ¦ µ¨/ä4)Ó1æé8çñQ듚«âe°!Çj¼áÍN,=ŸqŠ)¨ñ°•Ϲlörœ¡!”Úõ8žñq©­¸¬ŒSD<ÞGö!2(ƒqšÞhéÒDëGi¬—ë–Ë•¢2u]suuÅÛW¯¹X­xørËÇ÷øðþ=·7_Øï÷ Ã@¥åæäƒLˇ¡Ç÷J¡‹¥TiK¬=”‰iΙ´ˆã#ªÜƒÛvÓMïýû÷üõ¯åöˇÃY;¸™ýyê"æq‹OÂëi×™C¯¹ßfÞÞ²=ƒ'‰ØHÔUQkKö²0\¯[šê;ªÊb#©lm´Æ÷_¾ÜòáÃ>Ý|æq»cðž„"†€öO[¬8«¶‘ëZîg@¼Vçª Îëí´’Y˜}Cq †ŒÕÅyHdu±¦mkŒqâ’ézöû=9G™Ž;Ge-MU‰ÓSå ¦9rqäÁäÉ)ajËÖ«»Z‚!‰³i…уO<íz6O{¶O}ïAÕÔ+ËúZ˜xÞ{bêÑx*} ê=û!±ª+tÒ$_áô¢­VY”x|L½D­RŠä3Ö‰ë´*,‰”!yr{¥¦”4X°vn^³.H€ªhQf|HO³Ê­<†N6A!Ék)±²1.²'ÖȪFWß «·D®ébC¢ÁÇ6vÄhªš‹¦Å) }ÏÓpÏãæ3¿ÿ'ýÝz¿G{¡íç´W%v¬´LÏCŒò—£Ü_…YÑ3äLÈ d{Aô²'åÙù‹8”EÛšívϾÈ··ÜÞÞðËOÿ›ûÍ#7774õŠÚ8†¾ØÒM¹÷¥<9UÇ´]Ί˜Çóì =îøVÓ¦…Ò䛯*÷œŠ›–yò§dNÒ‹ûä±èñ|q¥þF-úy¶æéâr¹žfGq¢çs/qçu¼ˆÓY&Î"¾êâjÑSpV2XŠHŸò¸±1ò¬ŒâÞ‰÷ŸŸøöUÅ?~«Y»–c)ïH caÆ"8U6áMSM¼½4­çr) 1äÆúó3tn:_À3šOá¼ÞK¥!øe(íÜXœ§çõ² -E‰r¤¼§iß}»¦®OO=‡!px T©Ç¬:¼:0„DLžºùï¼¾zÃðø¬y¼ˆÝ–L*¢B"7 eÝ…RäˆJ ?3gÙÔ€Î4¶Ïêâ(#7â6VÚÊ:<ËýeĽ¥eâ\?ÅWÇEü8îû^¸«•¸—V«ëõš×¯Þpw÷ÀýƤ4ë‹K./¯¹¸¸ i^_¿¢ëöø!bìï  &Çñ‘µX:Ób·ä†žÜ¿ätQËkøt2¯žÇ½t‰xy/eÙgB„„kP˸‰áKî­‡ÇGVW—$•ð}Ça¿áÐuø!´W$%¼Ê˜“DKìVIMkòq4 }ðôC"ZUSs¡«$  KyQ¾vtø« ÛIM±Äœ3?üðO[öû=û]Wi‘¬¬ ^h•[BÂS*Ì"=;#...xõê777èÒö܇2€)ƒàýv˺mÅ食»…bÈ$+.+•E0ç^&‡E2"ô(m!C]W“ 1 °Çû±cGÝ:ñ˜iøµb­Sö9ðôßjü[‚Ö9'Ör³ýµ6ܯAãÿüøk à?ëp9ŽóÄ÷ËÔÉi›ÛXB6+æಯóqfä œ=r‰ –÷8üÏù¹@¢ŠSZçç­|ÏŠ[Nþlt^ÍkÌ„µšÚiŒžqŽcÓk±KCe”¸®ZKcu¥eˆ, !|qsˆÓW\‹Ëg”ÓJ8YJ²Öع˜ã8 yægÖG÷Ê]_9ÿŽ[4õÑ×/æùúÉÏLóþ摃&˸PT‹Øàt09¡Ý“ÎNqžÛòUií9o7ñdUôY0Þ9aêôµžEG ûÉaô˵’“p5~ïeêß•8 Åz1]´X£Ñª8ÌŠ²\ÄA%qî0‹*–¶• g#³j¬‘E9ÖÚÉM¯äLÔý(mJLS&51¥Æ k&ã}>ÂÆ$ˆ0Œ˜Äã9hÀrzÊÔyüôçÖ‚³c*År“žãuyÊèJÛ¬2ËfF,ãirƒ)u,^MÍ€ãôk/óÄhA¶vÁ²ÒúT¸JÅ•NÆy²ÕŽ|.»˜~MÇY! v‹‡ºš~©g ÷éhÁÏí[º4Î×{Ìar€-§çZ+ÐŽìÑ8ªXáP¦°"²’‰ZŠÂR S`ñ:U¤FâÚéI¼úöí[VMËÓã†w¿üÊÇx¼»çpØ}_8bÅ‘™Þ÷E „àÑÃ8ÊÝÒí«Ò$ÇÏj3- CŠ`DÄ麎¾ï麎ÍfÃû÷ïyÿþ=Û­,'«mÙx©$-‰> Œ[`ÝÝ­¶§}âö1ðévÏÞgú”n FËŠXkÖýz‚°'%\ªë¾SšÛû{Þýò+_>ßðôôÄv·“ŠéŹæ{|°ø0ÈÔHÉÃÜÕ }ßÓï{b”Õ‚R«¤ª]9©¦¶Ö~"Oäx‚Bè{U9.//Y­Úòïaµ¢j›éa§Õ¸ø®JLÒιÿ2”–¹€c•°ïjGR†.x¢òÒvf lw{Ÿ:ºNˆÏÍêŠõÊTBk)œi³3 =:l Toèミ,÷ÚTh§ ô ~G :TR¨8€ÒäX¡MÂûA\Ÿ:O‘,gK<«œW)ËâÈ™‚I)¿K‚W““.,?”­ÎÌÙDTø/šL…Óusro úì+<—8j¢jÈαÊ-¨(`y ÛGzGn¸Ò·üËŸ;o °|y <íJKâ]‚­¸zŒÐ£Ë42”(`U•ž‹ò¬êý€š¨*¢²â¢+Ó-«,ÚˆØs"{)J´ªÛñxó‰´F“‡C. UZ;ù:-ñͨé(bÐe‰ª¸µç›±iá¦] J³¬5ÅET'j|~ˆ|Xº‘p8(œ”»¨cÇȲÝuõTË6µ¥ËDÊVôä8Y`F¾ËÒ%-ÏècWŒö4ñ3r6äT¢Já í K#•$CLJ\ÚrŒüòþJP~Ío.Îk5)惛aìãs©ïöh«&€´¸dFˆø ¥Å}"vÌut|µá¼?µÀKÌ øSÁä8Æ–b÷§›Â*UàÚ c"Õ:Ð4š¶qlž7w™í°Ý†ê²GUpØF’׸ xûÍ7¸¶ÂÏÓ—Œß?It²|SyíŒRVΓmÏ,¶´:ÄÁ‚š•F+©šE]‹sYÅ$ì´²°4ÖbJ«®­šuñ"挱†ªª&1kŒçZk±UMÛ^ðJ׬®ßâꆺ½¤ª꺦i./Ö˜Í#®ýˆ©j¬ubïÊ^¢*£µ;rÑÄ(|'m¡cS¹Qs Ö[>ãÈ7Öy.ë1%ÖžS å@Îß%~ ÁgiïTšì䙓rÂjÁ_T¦†XRhãØu=w÷|ëÞ ,+iV+‡>Rq%?àcDë(÷(ÆD²Ò‚éвn†Hf»ëñ1⪕` ŒUa«Ù¥?Å“By¯SÛµž’ƆaàÏÿøÄ ÿöÿ?„¸¸Xs軲i›÷§ÊéÙ»€Æçœ1Ö±ºXóæÕkîîîdídÀ%YP§·›'.×Gcýlo"ëÆ1a`MÁrXð1¢˜‡XNÉÚ† ÉŒññ>2–‚͉sv@_ˆe甞ý»¿gõâ›—E®Q@Zn²—{ÓÉýq‚}ºÁ>’Oœ§9½(¸3¦é97ß[ÓÑ^†¹‡;*¼£ÙU5BÞ§X7y‘PɈÞ)÷ÿÇ–Áœ½Êd•s¦Ò%XNº0ï&ãÆâ1{Š:ý¼%òWÜW.ã¬B›Ê’Ê}WÉùº®`Ýj®Ö–ÖiÚÊPY]šà9jZ•@RiÉÂg²%1aµÁŽrNá칦R^Ä"õ³騴ÕO²ÓfÛÏ/Wó±Hsúß'¿Ô"½–fê™»ò%Aõœõüú™Àu¾¥ðyÉÞÒA5¦ä–I¸å0+Å0íŒ ˜ç\ï“~„9À¬ÄyÎŒo¾ð‹”W3 ðë‡[þòó'>?èƒc9²Ì?WÖ–p^@øž)ÌZ½È¾:U”ÇÇKÍçìÍ1Å¿™“>+âÏ•åö½\нÔh1[aÍô¡Êñˆ,ü¥•qšH vz¬¢õ'““ÇÙòa+‘PƯÍd=±,bÈ$ÈQ•8Gq¤Ù\àryÑh0;ŽÊ¸pqÂë©…b\ŒæDóëÒ¨xÂ>¶¡«“cš.82?Æ>kÝÄVEL>ߊõ‚·QcÄûÄ8¸¯kS¸HÌ-~G0ÞÀŽªq®‹“,M™sÙ¬æ…kj9–È ‡—:b„Œ›¶”ÂóÍÚѵ“OÄÚãÉÐÌ8ŽiH<4O­Sœcjœ¯ÄhGô£Œ1MuéÊPZ0Sàä¡¥•L¼-‘ÚVk©1’‚üÚÜÝóñÃ'~ýùï$:Èâg¯“ÊZ^¿~ÍÕÕëuKU[‰ˆuž]׉{¨ª±¦šD¢ªªé’´m:6»-··m¿½½e¿ß³Ûí¦…È2$ Cš )3¤Œ°? t]âö¡çóýM¯8¦˜Šà{©× ª˜ŠõªaUW\]]Ò®[´vIRP[Køòñ†¿¿góðÈ0 ±÷X–Esß÷¸Ú‘U¢ZYÞ|ûšÕzÖšívσzdóø„ïÄU•cqßY3‰Þ®L0FæÇ]ÑF6Aõå×—ÔuMÌ —31$ܪšx~¹ÔÔŽ‘k-Êh´¶¬Ì 6Šƒ¯®•3X¥ˆ~ ¢K®]&Ø›Gö]GH™ªmJÕA‡I` AX9%rˆÄaö-*®é‡'ú±Kdß pÝUT®Æàp+MbGH[tÚCÚ¡òA X]‰hÇ€q°jU=²d§prÌR $Ë¢g¬y.ì‘Qð 9X³¦D¬äáš±+²j0fMÝ|K4×$}…Wä\ ³Ì‰H¶²NDÝ´#îîžÞ´ê‰úrÏ?¾­ÙÒu+6‡ÈÓ!³=ÀývàqÛ±ë<©X‡ú¶xØÀãNnUhL-‚§Š¤ÉÅ*×€V®Lt¸C³–Úõ‹`(Ì?«4}HÔNÓT ›Í[g’QX£P…ѤËýNJ;)*༃"[ÊÆp^ð’§xΘÒê67¤ü,Ô_¶Û¥¿»‘*%a`œº­—‹Àñ^qn®TFç£ö¬eè˜Ã‘cW¡³€M~mŠã*EÂbXÀÿå1¨„íVœ´¾ðîáSÕóºîiÍš«*#M˜¨Xâü ?ÅáUi:ã]úl$ð´i9@ÑÊœ¬uN"‹Òãø&sœèÙ×-Ÿ‰ùäÿŸÄ²¦v§<}è Ác\´Î6 Üo`÷)õT·DÃÐâCbÕ8Öë6ƒK™û¤ðÝA>%“Éøò”6"\!±;‰€æÉqcÑeÙçˆóùTµ ®ii-dSáªã*®//È9 ›Ð×sÉ@9 ÞûÉMµ^¯Ù>í&Ve7w÷XWqýú ¯Þ|GÓ®ÈÊM­zUeI1SÕk´q²¦Ð §lYcšÒf=ó:O××KΊ:9¿yÉŸITš)¼[ zLå [iw¶à ÖQ;‹qÉ·®F»Š3!ÈÆhdøQ×6Zc¬%†@7ô÷žÁ{¼÷ UN¤˜±ÆÎìèÜîºN¸±//_±P\×Ùé#±E¢Deœ1Ç©yÔ¶ ÃÀjåøóŸ`»yâ·ß~£ëº)Úõ5Öì¼fJ Gžží———¬š–ǧÍä JIÐ#¤Ìãã#¯_¿–¡_Œ¨É+Ÿ«³:«#v—RY^X†íTa~[Z"eÝ>ø­+,zZ—N"\VÅÉœ&´EŒó°äÜi™ä8‡÷šçözçörKèz©µþœHõ5WÍKqÂãŸákMŠœyé#Dé狺 £s>>_¦½ïÈŒ#¿jnžK)â"Ì¥mtä]‘‹³Y¦ÈsΛ¸Lõ´?~ßùØÐ¢ž»íLYh%EkÕq‘•2EŒ“ŒÕŠÊAÛjVbU)ÖMŪr›U3VhBБ]2šª¶âº²¦´. è3ŸÝóxßÑß«óŸãK‚cQS ,Ï\^‹¯Y~žgu¥ž¹·Ò‰¼|—„¬çî(ýìg=ëÒ:<=KŽÖéõ¼ÔDdŸ¦(¢8µ.Ÿ+ËcdA>L’"™¼W”åÐ%~~Ï_ùÌ»Ïl{ðÊK Á,0Ì©ÉwôP|¦8/rÆèéBxΜÐS<`<ç¢Ï­ì¿õótUkuT™ýLQ>‰Æñ3RC”‡OQ¹]ù@Œ5SãÖE Éi§“䃴~aËæª´ÈeQßÖ$%ñÄ´˜lJ¬H¢D:(N't¹ñ)-ñÃ’8F:jÖÐåÁ3üÓb†©1%•úì1®bÊ‚¥ÌÊ ±¸ÛòqAŽŸ<ÜŒ–›—1²H?×X[D0™è[Ž7>&©`Oò¾c”½«LŒd3- ˜yZ +Q“hU²´jv&)=\ÕòñSÚ ¸Ô›ßÓ¢ÉpjLÏl•ãëeµŒGŽ_3Mí§‡z

rxÚòùógžžžèûžè…¹cœe½^óß¿çŸÿåŸyõæšËËK”2 C`[¼÷ìwZïKU9ÔuKQjœ[ÕtCOL0ô=OÛ-÷·÷Ü}¾ãñáQî^˜&9#6ÓfX)-L­ÈZ!F%­ncuð8qN"ʨœ°Ñȱ0Šo¾yßÿáO¼yó·jp«jÙRÈ|úð‘ï~gs{Ï~»%ú ÔåMÚYª¦¡]¯¸¸Zsõꦈ„¤Ìv»• qÈ„A˜Y¡lLM±P7þqóxyyI³^᪖vUKó“³ 1L .jlÙÐä¬&6ËD[0—óBISQeQÊ⪠ã4¤„Ã$úøÁs8ض¤¬pµeuqIÝ®ÐÓ´%‹8œ1"t„@8ðýå¯èŸn‰É1ô–>îÑJ±r+ªÕ%ª©PÄåžû;|x …{|¿ûÿ({³%9’ôJóÓÍ_bAÈDee±šÒÞáßÿ x1#32Ò”i²«Š•™XˆÕ73Óe.~U3sTuŠ€ÉD"îfjªç?ç;ØC¨-´*vµ£²ÂQHIšãÄåHi‡ k+#qc]؆³öT4tå-Áaô­W W(½$êÞ]Ô’¨×„d‰ZŽ(íQ±Ç†-Ýþ3Ãþ3&~£6OX³¥^¤\;žhëUE,›nàqÛ±?DTZ£pøé‡È®Ó<~¸½øí“GGƒñp¤þ€ Cn0TD³3bjMMQaµ“–¶(ŒÀZtÒ˜XQ)i²Ò)I“g’ͰÊÏ;Ï®Ig§q’¯•(0èhˆ^ZmÇ}AæÜë$â¡hWÓs55vÅ4ÞëcÈ+°ßIlR/ìÿó½Ãi\à(7ò>òG1ºÉÒÌ[bê “ËÒ®“dåSvåöQÚ†(-|1§c˜¬èC®èƒ¶†ÅRÁ²¯’ŸGó¬ñVç׿¬¸þLp*e)æç³aŒ1•âXøk¾›™þ¾s–¨ŸŸêEüþXÄšöò'ñ,~édògã%*­e`LOkj~x»ÄU[ža7@÷¼ûHªþ„ºÛjùmuÃÛ›P4<Þ?ÐõO(ðC—’²`²ãO óÎàHÉ¡² ³ 4#“ûHkMÓ4´m‹Žå\³D[C³h³ÈNb_ЕÑTºF!…ü‘Ýz1†7WWzÏÓýÆ5hëX®¯Y­+ªfAU·Â> ¸ô¬..i—+ªº& §¥'e+é¡9MRä˜Ç0 ã`Ä{Oôž l,ûæTñhÀ§ ‡Ž0ì Öઠ›WŽT+Œƒ0mÕPÕ-Î9”uØ\†R;1Fžr‹#ÙAí\V¹í/L_bž{|?àÜ0¾NŸË¿‡Nhv­¸¸¿ÇU‹eƒokB¨0J(=žŽey^˜”X.—š¦âÿë!$Ï_þò*caáuÞPÆŒœð^𠲿-<,0FîƒÕjÁ›7Wâ@z”ŽR¼e „È÷;>¼ÿg C.l’Ÿfg¨rž2²_$@Èa‰Î…í¾ó¤zO¨0v˵[–ßÀ‹óÔ9'Óߊý½æù{…¥×bßGŸÕwœ&§¬×ÿ·ó,£9Çè4b–òùëèy2®“¥,!äçGŽ%¿é*ÌÝüüi2{ø˜‹Æ¿ƒ<3C L<2ù¨qàÇÑ—³¨2iSë‘™<¢''8š™ ¢fnC%ÿmµÂ…sb²Ð¦$’Jû«Âh3še­XÔ°¨ µƒÖ5r.“õÆŒiA„1Uc­ËB¬hµÍ‘à¹;1•FÄÌ€Öúh=Ôy]/Šʤ︘8Ëh›‹l§Ž¢£Ÿ¥õ‘ ð¬ çD8–Ï&9 Ê{‘Rõ•ÉààÏ:›8I’MóE}ä,K¯0àæbÚ°ÿÄaúÒ9æ™·?ÏK¦…Eå" …­ªFõ~ „W·Tí’¡K<<ø÷?}â·/ÏÇ-yEœKQ^kÌ,2ôr.žˆk¶Ï ¥TÄÈïW^ÌâQcî ´u£sSÑÔœ2Ý<&‹7zŒ]„XªE¥i«´ÊÏsN&FM#ñ+ÆмF5޼Ö™Ù{4-´¨“-;çÈá¥3oþp+ßG‚kÊ‘Ž˜Óz©¼'qŒTH0Íà‰ó¢ˆr¥5„\s["##ROYi´³ÙU ¼-Ÿ&8Ÿ&H#¦ ãDQ\`^-ù:jëšË‹oß½áòú‚õå…61òüðÈ_þügþò—ÿäÛíW6OÏôiÕ«ª ·\RWŽwïÞñ¿ÿóãæÃ ‹‹%uÕBàpèé†çgû”’ø\ß÷øÎ÷tÕ6øtû,¿6öûýI@õÒj«µÆØœCW“ë- ò¦Ì‹ø<™ì0JS;G­oÞ^óóâÃï¢Y·(u :x IDATÓ°\­°Æðôí‘O¿þÆíÇOì·[ºýèEÀb`½\³\4\¾½æÝo¹ùñ-ë˶v u#N¨Åj‡RŠ>ô¨¤Q¦ÅCè…5UxyC\ÜSFK¼³D/ÇR -W‰f´žÖI›ãþH¾_# n®­Ä“–‰YÊõ¼€ŠžÝnÇÝÝ]v2h\SÓ,jêv‘E!ÙD”áFÈàd¢Â·a·`è6"ˆØ–>U ¶(cp4WTM˾;€õ ø^qH=¾ß‘º:x•¢±‹°J~UΠ•'žè{Œs¹æÞäétãk}ïåPPê¯Q(­Å k5CRødI©E™5¸K”Y“ÌQ/8„Ÿ–x_ GKƒÑ ­{lêéîîÁ?sØ}‚xϪí©Üžä{´ìH°Gé=&iª¹náÍÂ`c)`è¼áq  Ãõª¦ß=à•¥Ö5CÒè  Rã¢p¾bÌM}ï¥Þ½0\";§iHÁg²¢ïã\^'%–£O6SZæÝ.)Å)0­äp‚–ã<,"oÔU*ëbYãìT5¯GT&‹zø»€½çÚ‚Îq'Žö£X‘¦õeÜߨw$ÍØ#ÌŠn ½÷3ÆÊa{HÈ¡#)¼pÔ³ÃX ~ýH‰ËV¼½‚ß½_óöF±h†è;ªÚ¢tÂæÈ¬ËüF7¢¶Ò/žSófÙl—jù:ƒ´9…t JÇî©ÓÏd|~)i#VQ½HL”}†ÖÓ†;Í J˜(¡“úލ¶†EÃ}1 ¤Øó梥m·6‰à7Ñ{ºAú@}]³\¼'RÓžÞor\>ЉM Xxr1øü:E:j™Ì[ë*;`­µ„¨Qù\ܲÂòŠfܨ]…÷ò|‹9ª[X!‡Ý†Ýö™CwÇÃÃû]GÿóÀåÍ[V«iª”b½^óæÍ[ö÷lžïÐi8äìs5fró–Ï©mÛ1¶8ÿ5ñ~ïyVK$S¿„!â@ Ä`åÔªäïÕh ®:ºO½÷°ª£Eè1šÃ¶§Ûïò¡TÓ¶„¡§2çÝà >ŽE5‘ÒXÕMÀ|ïQŠì„ÎQv1βÝnGWV‰ÆÄ¨N¢4óôÆôûEü3ùó/×õO?ýD/_¾Ð?oóû2Cöåº3?¬N‡`ÙÛµmËåå%wwÒæóEåHäãã㫼àq¿­¢ìíŒÁj%LÉèÑZÑ´õ¸îu‡žÈ.Gi¦.ËFj“c2"„€²5j<ÅqXwý·œTçÎ{¯9DNBg¿w9 —ëþœ ã{âÄ÷Xçø‰§\¯âzžÃ«_òÆýêiKݬ®4‰Æ¢gåø\$Œ‚VîåÈŸOšÒØ0ŽÜ¶œÿ•ÿ]Ε3YM«#”ÊÜe;™@ÊðAQW–Ê&ªJÄ«¤†Ïõ¹{<ï•¡®mmX6š¶†ÖeF+)»;%:›fšül9ÇZ#I3g¤©ÐY›÷<é¬Snuõók2íıò{<·×Ú+KËá)ˆ}~]Ïõ‹SÖUIä”ëf.εç°2¨ÛXOœ‘¯‰¾§† S†×¹óî¹?3¶ÏÇð ûjâccg ¬nfš¶–jW†ÈÞþûÿø…¿~|àq3°]†/Ë´#GN˜ÜUÖ ÝþÏi i%´XkðÝôs ¸Ú¹\ϪmãH ¢‹è)Cª2Ÿ@aÀäÚÈ!bµL9bn©qF™s!-F#Sr£FžFÈ¢‰Î<gÂÕ h{’ÃÖ¸02f€&'¥>sº eSš²²/Ï(+¥p“#ÈJ³’ÑäƒRžø¤ <ìg°G‰xHäqèÃxM”ϱvY€ÊÑ;c\…0ˆ‹Èæh‰Š#\^®W5‹æªà1j§ÅN=ðn'fâà)dñ4s'JbtôiÌèAÓ¯ÊÂDÆMO1\)GH#ƒLÄÄÊtž_¡åõðü1F Æ:¨m‚Ø»=FÕr°D„£j*Sc¢i+Þ¿Ëz½f¹liÛmÛòøðÌÃý=OÜûF·ßçøŸl(onnøñý|øð›÷W,®×4‹†¦i%¿ï|äáé™ðø„­Ämu8ìH)eàx>L>´±tÝ0Æ·Û­L^ó¦·lÌçkFJ ã,>yL$4ÖÕTÅ9‹‰šºµé©ª ß{œ7Ÿ #ÎX®//øÃù~üù‹õ‚ºmi×÷°Ö²y~æOÿñ?ùüé“D¦`•ãêbÅ›«kÚ¶æúæšßÿÃïq­xú¾g}q1’ËF»ë:«ú8 ŒŸ'q1Fjë`1>Êû±Ùl¨ší¬D>cæ*¤0Z}?–z¤˜¹$|ðY vÔ•C™ÄõýØçjcÅÓvÃÝí-ÛíŒáâúЦiä¡j´0ÍÐ"樼qƢɊ¡CÜ­Vt»gWaÖ=UmY­×hS±9tD»De!Û,:‚]2øŠà…QçR ô=ýöÕß3Üÿ'=°¶Úõ˜¸—64m!&†¨¨Ñ!ºˆR‘••Ñmða+qšˆ±ç¢²˜÷ ÚZ³ÝYþŸÿÞAz„ê‚¶ZºÈ¡Ûgøn¦áJªâec`jÔ¿:AcéUq ÇìÂË®®´4‰ ÃËž5,åù‰È3KlÄ8kFK¹&|®H9ÖJų竆8:M‰™Ž©²Ór6É> ç¢ó¡Ô音šr©žjß‹&%LÙçÄ ¦´ *ºaÀ(…ÍL¿>ñöiƒ÷ŠZWÄ!#2ÈÏbábïÖð‡ ÿÛÖ|xë¸ZÔ¶§&»gÕ qÙì¼R™#iT©³•Ê”mÞÐO •Üâ;LÈ„£ l˜ž™Ø-‡AiµÆ1¿ÊDü\SáÜ=rfŒš#GVR$„¥”Ï/.K«+’‹ )`MD鎥]X0 ;¾ÜEÂó–jé¡ÖëN-h.kÖ¿ƒº%|L<Ü{|×Id:%T Ä.MÀ4âVѼpoÄÜœ‡*ˆƒéyÔ ‰n×Ñ.‡~`Ù6ã߯ï{YkRÏGO-LÁ{þô§?Q[‰­ ú¾Ç©Ä¾ßóðøÄ~»áùé7ï?ðîí\¿y+éʲX,¸¸¸às]¡·yC¦^òc‡AšëʤªDH*\$áê ƒ^âXÂé´£¯âÇßÍË]×ÑuAÀó1©ÆÈ`Œ‰ªªÙíö8g±•cè ËÑdמâúò’»Ë5»Ý&<$†~À9Çׯ_†år)Nµ|?ÉšY ·¦CbÁh¤â^økžÁKÜü0ô8íð>²ÙíXé[˳*dN ì/cnbrH3FNNԤܘ|,¬ǘµÇè‰3ûÜàpNü›¯ísç|_87Mœ WógÄéÏ.BÀ9¡¢ˆÿ/Ê æ?'»JYUA€LçXsäPæ¢]F.7×傯,`ÅÛC.1€üŒÏ\•”Aé)Î2剖ÆÂ)u*€Ì\‡š˜Y̲Ÿ‹1’ò>q¼ÖòÇ0¥M\æh[kQ* O+ï?ˆd†˜GœAàî*bT¢±MåE@Ì(+†$¨‹Â°ÖÚá´¬7*Ÿ;­¨èÂ8žMNb‰©¥ìxÓ…VØVf⣆a†§QS‰×IÊl)c8Â'ieÎ:ÇsJ¾F‹Fr:ÄÑçó­ˆ~ó![Œòl—sŸוy‚hÔO8Á$3j:e`!_[^§øV:??‘Æ×“RÄØùýÂØ$©òÞÎêæè~,ú‡Ö ç*BxyßÌõ«UEˆ‹¶–ƒ©Ø ðÿýÇ/|º}æþ©c×…<}ͺcŒ™ ¢¥…—uŽ/“—±¾ùô·r˯)Ûç”ÏÓ…ä5þÕ‘¥Mq$`•–Ó[Ž[Ê¢6)ëò÷麎a˜ººLiò!¨L›½÷â˜RSscL OBGQ&tÒâDRò0p±´áY†Øç©ªEÜr?HÕ¸\\‘1í0¡ÎZøTao¡GF…$™= <<Œ¶VQõãLÁžê7{u-N9ü–IDüý‘Ðx|P˜š¨¤Fxbj‰ÀÇÍsiùÓãg“í·º0¶r´Ò¤q³ml†´[d2SLEɤMŽ×¼ic¶Ùu‚'¾PÛÕ+M$ùš cŠqj[0}Èq.—£“3¤ÜO‘)R~”ɋˑŒ0fÞ•Š”Ú˜ÈÔ*`_¨M¢ÖžJõø$ÑÕäZ ÊhÇ»w7üñÿÀ»÷oqKšåkeÂØw‡íŽÃnG× GÂ9ÇbÑrq}ÅO?~àýû·\]]±X/X]_ˆ ™O! eØ/:¬µ÷ql8,¬ŠÍn‹3ú~ „D×uì÷{öûý81}Íu92ùòbY&«>E¢6WáhšCôhzaÈ!›dk MíX¬¼ûÝ{–×—ØÖaj3²£žŸŸùø×_øøñ#ò^„ˆsŽv± Y.¨[‰…£¹¸¾àí7Tu låX,–#Xv·“ˆ€A6yCâS|9ÕÈÍ3ª7ì÷{ꦑˆÁþ0‚€UæÝX›'Å'+›ã ÒtØ?ÇV‹EÇ0¹ƒ—µ*öÛßîÙN™ž•â¿gçØ?33Ÿ˜]Þ$ɲh1êZäC¨œáú¢ÆûŽûgØ=v´á C4 ƒÅ'Cr5U}Áåõ )Ežc"uÚGttɳU‹[ÞÚü¼•½VAHƒ¬iŒìv[¶]ÀGÒMåf“æ46ʪÌ<*k¹÷žý~×á_4 ë¶á°yæiØÓߨív|ýú•û·_¹~sÃêò‚«‹u~]¿7ν BÆÏm>ý/×zqðTUE×u,VËÑѵÙlpÎM.ÚÙ^˜¼ï0¦¸Ê¡/Ê¿Ç=žÏfýÇAz3B$Ó‰˜fkœ­Ç×Y"2Þ{|3ÓSº…mC”½CqN…ÜÊ4È!¯2F@óÂð‹ø®—×"Ña4ZÁ}¨r¸UæL<¸´Ìåᵚ€ìUUquuÅþð¼<>>²Ùì^°aÊ!UœÓ™Û™@çFfïÉÐ4 Üßß³ÙIÄTUS»Ý·oßøñÇy||<ºŸB$kG—°»âøl.Œ±#WˆN$Û_ÓëͬkÔXeå|d,ô9Þ—¥ °¹€•R<ËšŸ'ÏAÖç{›y‚çCóšë뵄ÏkÑÆ—b•>ú¹å—ˆ73îðé÷Êïßknžé¾Uø±q¸ˆ1yO!Ê ôø,N±8°2ûnv —ܹ3õxN"RpÒ0(ŽÔ2lP24ÉB—´ ‹y ÒZÐeÒ"_“d!ïUÀh¨¦­-‹ŠÕÂÐ6§Ñ¬3R%æ=qœ}^Va• CÄ…/d£³Î¶—{€ñ9}âþ™7òj±C8Ϙ:7›k§bééµy:h›ÒÇàL$-¿ä~ÄQ>{_Ü»ùl_¢ãs[^EzÙ  2ôs¼ð3S Íú1RŒc2–i@:NpÓ¢~çjéRcDW.[ñEdÑi~¡›)¿d"U\L:_oZ{azÌ›Òr}xÊ› ¥ÃZ6Fe¡®(ñvWW£#©ˆ>è¬^fçÖˇ_˜u7&x±‰¹QªˆQ¬Ÿ¦(òP)oä¿ÿÉf^ZÔøß3k…ÔGl¶2}‘‡§µ±˜d¤AÏ@[Á²Žô a@›Ä#Έ…w¹¨ùñÃ;~ÿ‡ŸY^^ W ªEE¥¡˜ú~»£ÛÆt»\ryuÁ»÷ïùðã{®®®X.—4‹šåzE2:G˜<}·£÷Ã(|…ÐÂÉóvƒ±†ÞcØwºN¦ÛƒB?þ’*xMIÉÕZb?)ETTYøÐ;*BT" +ÆXˆQRÅk•|ýªnùáÝüü¿çòÝ ÍªÅ¶õÄ9QŠçû'~ýëo|þí#›ççÌÕ!n¹\rquÉêâ‚Ë·×tÃã,ÆZšåbZ{¢¢Û÷<=íxzzA#ƒ÷ôÁO :9³b—kv/ôy¢¾Ûí¨·2íÐüÎ(¦‹ƒò¨Ú8?(l¶Y ƒ¬¦ÖcäàâÔ‰ ¾ó<Þ=òåÓ-ûÍ–z±Äà0TXå0É’|YOÄ5£GO†ëÜ€Z[’vh›Ð•´²N¨¼¡OQaB¤6|ÂC7èÓÀaèiRä&ÛD^_1b” k&ç´ÎÌ·$\Óq"™·ñheZ¬[£«KpoÀ^’ô’äù9 ñÖuÅÁ+úMG÷ðH÷ø™Ô¥áíîq—[*ÝS© XÆàC¹ÕÉçu$;Ó*]¡•–ƒ˜òÄ\Ä+¥¥¡Ç- ©Ò¸EàÞò¸éùõ3 _ó½!Fq˜Ž(3‚ÈÅÉdHºD*ý¬è"¯‰9f®°p$q†„Ñ66R¥™ð“òµ…’)¿Š¨äI!7žiù_J´¢Y³Ð“°a4 #aß0Ÿo¾YSÓ‚ ÌÕ¥sSðïñ0_‹‰LŒ’©ujŠÆMmAœ@΋Hšòæ_*âUbH‚ÂÅÐ ƒÌ÷=) T@ÛÀÅ ~|?ýPñÇ›%׋ÄÕ:±¨zœê0¬÷³uÒ*hªÉËm#1)i+~åp&Ní4c™ÌŸ)eC9uX·Ÿ¡Sõât`˜GO9ç\ïDZŸ9{töìrïÄÉ„ILLF ÿ)P¸XPâÀãÄ]Ïà#zÍ@$:Çúí?rq¹ˆú¡cˆO„°C)dBJ¨h Þ Ýô~¤|2ŒYL)+ˆ&ó¦R"ôI[ö» ®jðý@Lžb9(¤Ù#”È›¬ÑÖŠ›êææ†‹Õ ƒ§ï¶ìv;v½gÿüÀf³aópϯ͂‹«K.//Y¶ ýa?NÕ}Œ$G§UqøŽðøà }Aä»üg÷û=ÎIÉÎz½FºvtËJî;®eQSQÒ€§Êø,Elv9h 2¿÷$Ÿˆ~ÀcЦ!²Ïkc¾6²ðæ½'…).c´8ŪÊb”|Cw¸âàÇ=T,‡À› I~,ŽÏ|%Þ9éBÈûØqM˜q¾ô4°Ÿ7G¦ü>k-ŽÒõÕ%UÛBâ·ß~c> ؽ¸’ÉG? –Ãà±VØ›>$ŒÁ®Y6¼{÷ŽÇÇGv‡=!H«[× (£øøéWþéŸþ‰?ýéO ¡|?q©Äܾ=ºÚKB@Ióswè3n ÿäµÍÇ8í)KÌ{Œz¿EÏ ß+øžh4ç-ŸãŸ‚¡_c+ÿú^ ìµßÿ^TlþúçØ†Ó=¼ÉÑzÅK@xJ‰ ÌÊ-ýÈT¢Áä¶ñ1;­|þ+ßo8*õ(×°âQª%^°¬Nʹ™é…è|ÂŽ;54Íõ ¹ 8 ÀÞ{´Õlw=ªnùötàÿý_øü¸ái¤*‹}“án‰rsžÏq†Wø¯º Ž.¦ø¿÷{Í}•f èY¥õÖ©ƒæÈ9“ ¥Ú™Öœ€_UöèÆV»¢H‡åA™œ¢Ê+™„j"Jk¢Q„:FR2(ëræ7_:)aÍ-ãœbM6§ÍÑŠ âTO[r‹S‰—¥-Ž}ï'åslÅÓ£7ÝDZºòýj'R=‹×É*‘Õn¬hí.eP?GRãt÷ˆO¦0&|‰;úÙ¸özJ,A§£‰ÇÜ|Ú>9 K”Ö&Î4J?ƒ_Øÿ{.*É|^†01°ºÁ¿€ÛŽ×³&×zÏ*âÓñ½—æ5§Z6ïq’ĨQ¸ì¸ÑTN³n4WK‡"Ðrÿ#yñÅjÉÛÞóãïY^,©Û Ý6Âù@3 ;vÙy°l˜ºâòúR6Ü×4«%º6¸ÚR/ZêfA .£ûû{îîØæ‰d]×£Kj”Ñc3^ˆCæ(¥£)Áß³¡9^# 1bÒ„¤1º"™$ïWèpÅJÎ(..Wüðá=?ýü;Ü¢B׎¦mY,X¥Ù<>sûñ3ßn¿r8Düi¥Ú¼m[êºb±ZqõæŠ77×löÏ[âP&î‘~ßóõ«ðM>}üÂæqC׉háƒØ´Ëõ;>ôräVY‡¡g»ÝJ¥÷Aâ!ÚæƒK1«l„¬V³I÷ä°°Vj‡cþ¤Ñ{a’Å>òüøÄן¹»½Ë‚]3ƺ$÷,Н!L1´Æ0ˆ`‚N-nMÉVTØ‘;cŒßCU‘øx ßwtD2”Ö(íP1PAi‚R„rpW‰²ëàͱË2—¾Éô”Ѝ’^bí [_¡êKú´ÄÓ}Cï+|rDm¾ ø¿{æîã=Ûo_±ý7.ÜžºÝ‚Þ¡SI!F…÷axŸâ:n•×ò0ä÷0*†(ëœÉÛhL¥Iv­y÷&òü7ÃÕ,WÛ;¸Ë …1DtT/Ï i#J!AÊ|<¬J)?Ëf£g ×^žÁÄÇ™#ã ke½¯C^Û|>CR!OƒeZŸt@+±% ‰È@ЧBnÁe²wÍšþ²Qà©Ä嵨 F&&;ûÊÂh“c¨žnfµS¥É¥⾕ò‡{tŒè(‚Ôå>¼‡ß»·ŽwŽ›E`e ;àÔ€S!¿×d’“—fòPÞÓó=½:+{„cwÉÄÖœ»µ´>qR¨ø"xn9M¨Ï·ƒ¥ãùÛɳP?äÊwqH ü"öiæSôh‹ÚðöÚÐV÷÷!øð…°7lî Ú*V—äbYsX¯Ù„žßI¤FË^*irœ$f7©ÉlÉ1ªƒÇ¤ŠÊÉAJ«„¶†áÀ|æ’ïzºnA ¼)‹Á>kJ¼¢¸‘Û¶åúúšÐÿއ»o<>íPV]ï9ì7lžžØoŸ¸¿ýLÛH ñ=‰‡OÑN‰ù»16Çgòn¶Öë5Î9îïïG>VÓ´£S§<ÆH Vi‰]j£°cé{ªæý³5R„¢£Zè"Ñ÷D ƒO }Â'q; ÓÇÕõQƒ³sN\þ%²3ôù`š¥Y\“ZŽº±ý;ô ùuÆtÆ=Á‹B©y)Ð9lÉ»%‹†?ÿü³|f]Çׯ_ñ>‰˜Ã0Gê²KÖ=þìõzÍÛ·oyÚ 4„”¬‰oß¾aŒáêêŠÛÛÛÌãR#¦ð£Òù‘(CP~¯ 8mfeò9‘1ªõZº¦DK}æÝÄ 2è_ŸmB;¸Îµ°ãŸ3LHƒ¹uHqÎñ·«Ó=æâ~îŸ1fuò}ç.ÇùÏ<=G«bú™JE)Ž o/Š‹”~ŒìÜl8ˆJø“I¢Tr¾`äýŽ?Ss’ ?w|s¡ •jƽg1"8f\ÐT€eÈ¥]ZaMÊ|ѹ3WØXF*§¨fÙ–¢®Ö¬.Ž`I& [ÍæçZfsež[]šÚÒÔ•ÍüÏì²,|ßy¬nnà8v8ãüó*%ZéEŠìoîôZ­¥pþuccúìûŽ¢xšî£S†Ôk°ãk3œq¨¿¦CkO IDATü:‰ôÉ™  TËû“Ÿ¹±ÍÑ=¨gëÓ)à}ÒWÌ‹ûñÔ%*ß˾(Ask Ó¢’áiøÿù…¿~ybÓ%6‡>çd30';r´Ê­v#€ì<èë4üDý¥Ò6=^6 O%ÊözÓà¹j쿸öš¸5)¶qd4Äì~˜2¾jZBð/P‚žXZÞ¤PåÞ¦”Aê¥I(Û$“¡¦¹ùœ“åçëlqŒ9š3ÛtêlíI'J*Ç.JS:Š© }Ž©é”[Æ"4J]éì •¥ 0¥„ùBφ=\þÐO-jfÊÿJnj§FAl~õ§Jg7Smrã’1Œÿ6V­ˆs€ NŸ"!†±ê·\Ëú¤y£`ήu¥sE¹:2X•xÌôÐáw´ÖϦQ*7O%ÊÁ"³ò¦iðSDR¸VÇ ÷òg:k™3Jʽ”ШdsÈPû,1 ã¨r–õBss%¯¹2žÝ~ë‰~]¿¿âÿøÞÿøŽºmX]¬QË¥L~:Í>==B ­ìÚѬ\\^²º¾dµZÐ,Z궦jªF6Ÿ»ížÇ;®î¿Ýqûå+_ooÙ<飯&GQ‡i›ÓZë¼á 10Ä ŽÑÙ gKu6Ær}LåZÌâ×.¨}E»ô¯º•ž«Ë5¿ûÝüðáëëKìÂbqUUαyxâ·_~á·ÿü+ûç Zkê¦Á9Çêò‚Åb!QŽÚáÇò¢¡ZÚq2ýôøÈÓã†çç-]×ñíëOOO<<<±ßïGW‹Ê%Η$¦Ü6bd ñ1°ï"l6RJ¶;™è—‰°©FG¨ÖšÊJùAUç×5&ƒ}•R >¢°å’Êm"Û§-¿ýú¿þõWWïÙn·¸º–Xf_‰°–Ö:Çxµ1Ĭ—•t’ÖVTu&B;p¼;l·<|ùÂîé™ýf/Uì)`­ØÐ£VDír¢´NŠ—<¢”—/;]µÖ¨œÕbBéLƒqK´]¡íÊ®‰vI4-}0ô±"&¦ÅèýaÏs·çñéÀííW¾üò…îá–µÙR]öøzG ;B4øh hb t}?~ÆÚ2¨¬@! a;$”RhU¥Fð²qšH$„žZi®–ÐÔ 7Wšw×=Ÿn#Ÿ¾|ü ‡ž6£ ^ØQËç3[Ϙ‚ËΛt•¼EH> ”9œurSÉÿ/. hjhZiË3fb½v{ùù}Ý ²ƒ—ßó9j$ƒz|øaty}ûvÏ0 ’j1†âÈ )¸):JØ ø?$nxýæ’·›·ô}Ï~ßIìsè麎»»;Þ½{ÇçÛÛÌL(+¼-÷wæþ %ŽFŒÄ B§"ÊaSiqnÍ£À¹’n~­ÎÛÓ^bX¦ç×¹’ït¥Wãz¯ádÎ%}æ ›çΧs®ói$ðü2}7ás.^©µ‡¥tŽqÊ£sgqHegk˜­!‚÷aô¾tÈf€˜pÞe^À›’Ì}FÜÈ ¼ž“Ó<(ŽÏ>•!æd±+iuä\šƒÜ*Ï%q.:+â•ÕšD.“ ·¸æGKe5«ÆÒÔšUkY¯ ‹FI ¹oAö,:?HRƾ+-LMg5mSÑV†ª²ãÐLgG{I\¥âçŒ#;¦ŽÀq`<ãjžjçâyç,uRBs*~öQSâ¬T¥h§?k ?½nç³gŒÊ“¯3ÆäõçØQÓKúÔ…6ÿúSa«üY?û»|ÑüŸa²ã,ãôY•¿Ÿ56[ÕlÃþúþýÏŸÙõŠÇ]Ç®ëó]6ø¨|xTS‹›D Ô‹ûò{Ý&z|“ŸÏ‡~‰õÚ4U,ê»Ó×ñkˇ˜MXøŽ ,éÆœháaE¡ÝØ^3wΠܽLäÑ*N¬HŒž¶®Hi ¤ˆò"º¨,&)¥ñÁÏD“¼ªHJb™.uŸc ùè3Ñc£Ï©‹H66ij±£Ù“v@?k—8vÉM–ŽÜx12VvEkqðÅÌ}šZ4ÆÆ±îfmM¹–U®Ál]Î ¬]iÄk#!boã8µàƾD +×RWkË5ë« .n®©êe÷„hÑɰ~&EhÚ?ýôÿðÇŸ¸¾¹Â6šzÑâê g-‡Ýž¯Ÿ>óù—ߨÜ?b•f¹X œ¥n®oÞpq±Êчˆ©4Þ¸ÊQÙŠÝfÏÝ·>þò‘»»{6›ÄAžPßùa¬)·•T7US„6jE ž!x·ò @'Œ8F˸ÄÔ )â“tÒH/MÀ˜<Ñx9âg¹°t˜%¦º@×רúì%A7 ÑÑ'Ã`16$µ‚Ø’•Ãý†¯üöñ ›ÍŽÝÃÕ{šJ8 QE’I ¬÷¬¸ åù`¬@þ¤¡ÍçK×Ù«ä`*¢®LË¥:¢,Ô•áj‘¸¨ï.Z~ÿ^ñð”øøyÏó¾Üul;ØmáÐA—¤¡~áIO®S«'÷iYRÐT°ha¹¸Ûrm­X. ‹¥£©ET~¬£ÛkØìw»CàÐÁ¾“×ñ´…~€ýAþ;ÅrSÑ€¼^ j nA6%n±˜Ž9/Q1ýÍØé³¾¦§‘íSô¬tt¨IçÜæyè“B" zšÎûlÏÄl–ª,+øp?ÿ`„wuSqÑNá€ÖAZœ¬ÄGk'y£«•Õ嵘ü*4ÃwªìSmô÷«êÕ1¤ö%˜ýµ˜æäÜzm¿UªÌ_~?yãuŽ\¦$Ñ“D”{&»ÝtnrNIî9…¸}œNx= £âÊ8üý€ß€öTú›š¾Yc•f±þÀz½bï;ºà*ª$±rt !cráX¡ûh†ì¢zir ü`2»-ÈžÊOC—CÔvbŸˆ³YñððÀo¿ýFJ‰çç':hW¸ÆK«às‚A˜_Þ²§ оóøƒ;¥m0ä¶§ÂZ:¸ Ã@]×8çø—ùŒµüÇüOOO´mË›«7¤”èz‰>==É~NÈR8[ÑTM¤ïƒ HÒÌ>Áh6W’DˆÁ½”ÄìN^_ÈBÆÅ'%…Êl¬å-Ài¥ÉLn¢-q§¨¦¡k9À3s\•aÙcxïraR.‘²ê,¦d~ÝÏ5å¹[\!V«>| ï{úÞsÛ™»(&¶ßTvQʬ‹ïÞ½c»Ýâý=!„1~øùóg~úùgÚ¶Ííciу0ù ¸[EYC~σ$PÆŽÂÞ¹C÷i4[„“É)bŒÉ‹˜y¶ño"`Næ¤×ã‰ç¢Ç§ š× /ÖÊïçšj_2¢æƒ|=EËçëa ¹DJM<á“×z 厄4Âc‚ùÒßSy ó~a:³Æ¤^ ,NŸåìpÜlw|Ÿ’Èn¦—‹¶6jL¯ÈF¥J§Ü(Ÿ«0ŒÓxß뤳;TÑV†å¢bÙVKËjQQ¹RªDEˆ˜:r¦×µºÒTF[Îji~.MîJgÇ{Dk32ÀΊ”gÄ«Âv,Bík×ËQæµëuz}IKªE«yU[sÖ©X®»Ñx&6+Â|fPg‘ýTð-"o5Ï9ª^®MúèÜÿâl<[‡Ü ;}>ºËÚVñbž)ßÇj ‡þÀowÏüù¯_¸{ìyîasè ˆ^r®hRÔ£ó%Óf‰qªÝýž»é5ÎÂKqè¼óé{Ô©µóè¿ÿ†Àuª ÿ½ÿÌ/‚#ñj¼rcÏw²ò5ÙÒ)b fžGÎ ­ŠâzSÙ2"6)”™·öÅbåy2I‰ÃX=~Ëâì) E¾ÇEt4zg¥¾X–C’ÊM’š"8Ù¢l´TΗ…h>Å 1æêéù"ŽnPáHÂȦ²Vê݃ϧiê+C©ëœÎ|’oN#løèÏå¨^É:‡¢?#® ˜X‘§)å¸âÜ"™ßge!s’Fûìø÷œr•Ôœˆ5Š_¥¡%fÖWšÒ¬>WOÏÙa)·†H¥³ÎÍhÙɧ²# °VˆjȪœ6­ë 2Â;0J”r2JgÁšÎ–ë5?¼»aµ^`›WUâ|3šÞl·[6› 1F–Ë%DáVÕMCÝVÚY’–ö­ÍnG Û/÷G4†§Ç-ÏÏ|þô‰ÇoO"`í©at{ê¾Ã9ÇPãÃÍf€ü¼Ê¸ï{RˆÙM•pJ*LµRX+ÕfÑàìŠÊ5,ŽÕºfµj…5¤µ@ú+G7ôì¼ðIb.îãîö+ùËŸøøñ7¶OÏùõ(ÜÎQ5·SDå±Nãl=•'hKTe-N›1\6øIK$$’0¥!pðÒ,µ?Ðm7lî¾ñðí–íÝ3¾¨TÁ`µ.#™÷#$Y?F¬äÁë¼–ôÄ8à•—A€®°¦ÁU7èú º¹Á›5žƒªðÊСéUEP5)µ b·ë¸»¿çÓí¾>Üóùë7ü ÚJ­k’Mx½”§O žã@ ßÇÁ ³Õ? “Rë„ëg*¨*)pF>‹N9‰5N;9À«ë.‘ËZóÓ›†ß߬Øw;˦ l7Û}b¿!k+ÆYÊütc ®äú©jGŒ=ÑÇQÀZ¯Wëš¶14uÊì=£¼0? Xe_€Àˆ)Ñ'»ZÉFÏoÒù_ô{“Šs-§ÙÏ9ƒaÎd8'Hª ßœsˆ»^¾fŽ€ §™m‹<Ñf­“Qçö"¤¾ÓØŠ„Dæ ÍJ#€„Ò¹}ÊÊû.œqÏŽ(ï=Æ SÀÙ ¡d"eRÄj3‹.F±s’pZÏ6šå ùÿ¹ý±¡Ä¨÷#IÕ·1e,&W  |>o‡‡€«R™¤Š·llŒ1ìÃ4ÆŠP“1yÂrÕ*GÜÉ‘jiF‹ò?o»‘¢2ôP«qq„±öøÜ=£”A[¹9’‘‚ÆTÊ쉊j#Ó~æ×_åááýö9ZÃXÅÝöÄqƒc½^ƒ8ì|Lh[o·8YгRbÏ¥‚ÕR·-ÍbÁj}ÁõÕ;®n®ÑÆàìŽÊ8lRôÛKV Çïßpóî×ÔD£¤I°ª‰1ÒĦÿôô$íR‹švѲº¹A9ŶëÁ0¾Ö(úý‡ûo<ÜݳÛØ=ï>ñõöÏÏ[ö›=ûNbœ‘„µr¤ s|XöÈÓ ò^”5¹=&‚ Q„¢ÖR²¸ÖR5ŽÕzÁåÕš‹Ëí¡MÄGOÕ¶4‹šºmPÆ'/÷Mïé¼çþÛûÌÇŸ¹| úܸÔiÌÞ¢Ÿ$îy2³.מgñÞ´ç¤Ö83•¬µ'Ï”C>HYSaTýw¶{OÏÜ~üÈÓ×[| O[¯€×X¬êPºGå ¶`dý´¢'Gí†>ƒÄRì$ÖmÅ™çÜÓ¾AW×DwO-{/‘Ád*‚qt½Â§†Økž·{î½ýÆíןž!Y ¥¢°ŸL$åÌ…–Sê­KlYP`eUÆ”0ÚJS¡±ëÀ9M ÂÏòQ¸FyPUw*¢TuVd³WG–¶¢†›ä裥ïC‡.²?À¡K ½87”*SJ1afQ×Tµ†ä‰Ñeñ-â¬bÑ:Öˆ¦Qq6álDé@ ]Ž&´¶,øá ¸Ìès„hÁòùë3»C`·÷ô½p%}Ôôgë5÷»Š§=l6ö]ÄâR+²®ŸbÂ)' ­Ó$gkA&ÛÔ| –+_G€ý8ƒm>Z1ÆqÚ[ "†ò{#tMb¿1ˆûFqQ]®àÝ[øÝå§w57‰«ZÓS«H•6‰ ®r)7êf·±ÒD•ÐyïbÁÐÊzŒªÇùÓ1e/Îè4BìιÖSæŸL¼HcôY–Å)_rî´æ1çqþ<žb)óy¦Ã±´œI´I'#›85Œš±¼Eø>ŸsÐh)u¸©[VVq¯÷lw°ñ»ßHÆ¢Ûîâg..¯é=ø]  å;qÒ… S"F-ûŒ²ÙOJ•U\¬4µeð½ˆUi"«g. Ì $`´8h´5ãáèpØ ‡ÊÖ×ohÛŠ¦]Èà)&ºý–èEЮ*)ᆺÒãáB°1rä4zÚ<îk-›Í†·oßòoÿöoüñäÓÇïùz{KŠ‘º®I)±?l³C:¯W€y}0¥LFÚaåÐÇsÁçÍj™­T é§Ào‘Œý¹xuL ˆ9⛘CÕøóÔ h­´BÛi¿%Œ2ʰãEÌ2ÚŽŲ÷÷œ‡ÑêD´äA~ßu^£›Z¸Öpss#±ên?¯¤P\Ézl +ý¾ï>CÙµ8QÚ¶åææ†§§ }ßsè;Þz‰®V+îîî0Ê2¤^DÁ `:b¢£Ø!F¬sò<ÉbÉÜùüÄr·Vš†ä„ ÏÑ· Îéˆü#\ZÚ“>Zg¦†ÎÉpqš;ÝNYQœ´ }§|ÎPQ⨧®¥êýJ™×k¼ç£?SD*5@ä¹/fyöÆ<+E(A Òd[Ú÷rÓøññtŽ+Ï_c^œ5毳 `ô‘Ù6}J‹C¾œ3¥åY¾N¥$ S«s ÀˆÉAÒ¨ZØ—)A0Fã\`QV­fÙjÆÚˆJ<1èÌÁ›’eeiÕ®¥­ Ö)œSXk–¯RFW˜‘™xj\9Ý© d“rC§²$ä|R®ÝÒ>ÿœç¢SY¿ç"ש3©\ó¯ñ½O¿—òr¶œ C§®SÁj~¿I„—|Ïüýú¾ïƒù÷9˹XùßsóÁi¤²¼_éäÏ¥ô_ֽ⛀ý;Tø¿ÿ¯ÿ“_n·ôÁòíÛ7,‡& qÌ—'=ùtÒùM4ú¢ÒÍoøãÀ9sʆp©ŽÙW§­ ²‰Nglké¼:ž¦›ì86tlï7c͵7k…aeŒ!½ˆFAõ¦×ÎøÆ¦,åŽü”i«Z`Ê*ß 13ËH Cø¢^Ï–#pǦ%ù 5Ú΢F ¾ž¦nDÔJg+?xš¶¡÷[l4¥CHBkVçéoÌü —åÂòY´cS3ðr$±Ü¨Ö5ø >­ >‰G>ö™ñ•¢¢qÀ¡— LeÁVÙ.Bn:ÉYÛ &7Yd+7’Qb˵:f·D&G·i¶ ø#8¤°Â΋—1eçœ2hc|Ì“„m Zåë8ŠÛJi•!ö*_k“x¤þÿ){—I’,KïÜ+"ú03DDFfuÕ°º5`cf8C @pÁ?ApÅJrArß‹†\ ÅfWu>ãå{èCD.÷Ѝš¹yd1@fEy„»™©ŠŠœ{ÎwrNõü“s„deq0ĦTî\ jõX”-1OóY¬°8gN;)l€vBÌfò%z´ar€×I;HHÖÈáÌ…Ç íÈ-„î¾{‡»ßü-n߇öþ-’ß"9Ï æãŒáñˆý£BÂC×B˜6 Ø><Ò1 c]+>|ÆO?ý„‡/xÚðéÓg~øŒOŸ¾àññÃ0+cnšáIІˆ†'´áïG°Kp^Ô:oޏ`n¡R{M¤ÎWL¬ðmp꺃‘8!IB×Ã;ž IDATèf4Aô9ã€Ì3¼×ÃZ£fVxHœ´eÈ90 "ȶÉ)¦˜")¯§Ÿ|-Âp˜À$Øx±šz ÀÃ3ØA"Ê8³È¡HF&]›$3\Vwwëu2Jì ’1ňèl¾Ób…8ÌI•‰BŒ‚ÓÌx8 †™q:¶8M³2ë¢à°84Š8%u”=ÓÉ¢‘6ÌOÆÙš£q@X×mÀ^wiŒ%å‹+-åsŽÖgÏtòHI0ÅX]® hm/Êg®-å@ºúÞ©Xãê.ÆX11¥ªîë™^Dð.!êkHvY·’ñSË9qYßÊ=¸jæ³g7ñÊ ƒ•ó¿ÂKø¼~¿\÷òsÊv¾ÒQœU„Nå=Ñ22bÖ¶_°¶ôª µˆ´‹pÅ„«I¤âó¢lÏs¾È««›Ø­îYœ¥`ô¼´|† šÖÒ'ïÄžOVC¶Þ{‡uK$tm@ÃêÔ¾ßn¶ۖЇ„Þ«¨,Âȉ5SŠx¬ä &t„@hZFhì–ÖÛ˜Ù-EÎó*²ÌUd¹tKyïV¢Fiš^9ÍW¢òO9'—몬§e¯[J›j„Ñ{…Ê;ôÞ!8ªÅgŽP‡F‰ ]×Õõ¸4Æž•TW}â²´E¯pEèZŸÔuˈ1!%TXçÕÒTÈgûƒ®kcº*佈›së<šÈ˜­wæî'øþñ¿<8΄§ÃIÁ©)±½b^q%ŠG§ÀÂá^åG| œwNÂ5ÓûZôðÒ&º±Ö‚Ù™•¯ð*$]µ—_Á‡«öÑueei8¹TDÏ3œ½Áʳ#‹ü œ0€ _¬ÐRD”;WÛÀ‚2÷$çuR—uãÏ6éCÒ×F«Èˆ1ÍzÆœPÐïWßcs •HŠE¨pÜ„òú÷’n3 2isCÌ`§î—jk·©˜à,Êçl±•¬q u“-`‹$TÜŽF—­|»Áã8„à”9%Ù6užö XßÜìÐßîtj`·ÛÁ·Z{îœÃá ïÉÃÃ>þü ¿<áéÓOÏê <Ouš©¶îj OyöýfaFY³Xyp‰$„ Ì &e]•–©ûû{Ü¿½C¿Ãöv‹¾ïà›ßzt}¯"¹w}ú‹y“‡#ÂxñéÃg|øéq: ˆÑ¸ãŒ$7M•ÃBÀ¦ëÐwÛlšmhÌ¥ÐcÏ®þ;õ 777K©½Î¦S¾UŠܾ{ƒ®oÐoNÆqñhZ&hô¤qŒÐ0\ CSЩf„ÀѨÀm—)"x‡ä=&f$ Àè!Î#q€H€ø™1¾œðô4âáqýiÀ”L¤@²1 ðÑ…Œ¾º–Ð6Ïh#ˆ(ä»4Æ’±h‰ž<«ó vŒY=¡µäÂ!©Ï6:Ù*ºE³7`!û½YÙ$Ú¾Èp€#$RPV^6§ÄTÀRñ’E°‹kÎvÉpp ÑóÂBÔõ™DGz˜¤4é![.% %¤(&ÞIc-ræ,Ìxsë0Gu^¥ä!pȉq§SÂiÆ™°?ûÃŒý)á4fŒQ7ßûA0ÍÀ`qÉ””¦˜´@és+ÆIÄZm‘€X¦¥Ù&Âä,ª§‰+â_NÈIÔMK çŒÆ·=ðþø›o¿ý¦ÅoÞ¼Ûú0¡±vAÖÔ˜Öë´Ùû¨ÏÚ5#@&ã9¬\É8Û-¥.—-¹º!Ðçøµf¢óCM‰˜Ê«,­ë _×£——¶ÞÔªXVœN\ê*A•MrîfF=|éûSö¯‚†2„à8ñÈ`L ã4‚óÆçŸ‘Ý ¼¿G¾Áýn‡8 xÊæÓ­o™!)‚ƒÙC2#Î}×áxz‘ÃíÍ¿ùö-þü—°?Fy4.Ôƒ€:¢mÛZÄ/!>ã»6é<ÏÚÖz8à³dÌÇA#~ãdŽ-!BÛõðv:§{'¤q:‹Æ•¨H8;Ô §S=x À4-‡¿,‚yšáœ®ws–…S`';šÆˆ¼ïÌY·˜ÈÊäÌUåÀ’—×òËâWÎŒ—Ðè_ã][ÖçɯU´üò÷ŠO/¯ŒxÕLxeÝäúúQ_·ÁÖY‡ÚÑØ}Ùþ?p^q€4ÊY,µ— §—­—m²R!æ— M,äsñŠäJ«zIžXK»Pml¬Iºñ¬C,\h)ÇÂvN‡r}ÃØv„›–IõÑ6êàÖÁµ‡gc—’ƒŠXœŠ)}× ïZxÏ«äÎ’‚¼Œzç²|áò)ÀTÖThV<ð—<¶r}•û撵š¹ÚXZbÛk·Ô¥¦R\’]×a³Ù¼Ð˜ã8Ö³Âe ñ’ |-ЏÆÝ\»Æ¯qì®Ý³¯µyV늃²¼bèËׯÌðÿùOÿ„Ϙ¦ˆÃáT!Ý´²1g»aªæ×Å«ëÀêë"ÒÚ:ö4µˆ×68ëúækpAÁë`ù±È+?#ðçs;_¬Öç¥ýh¹–D²FH„Õ©”E›Ã`›°hü(Ù¢NYÐxgS«û$FbQ˜eÒÊìÉ œLZ«Î‚󯱩¯M-K;ˆÁ)#±NƒÙ¦ÍŽ”q«Yk†!v5&!Ù˜J,˜c®|&ÀûŒ6h„2ÛA,I²õ±b†•èžñ¨Ô‰¶´éFŒk‹\iw´™6é$BòÒˆ&ã[%ÔLÝ«Í*mHšcdû³‡Š÷zfû} ,êXm¤ú9g8dq(’£PFF[¬ å“NáKý­³ãú³[˜YKų¾ž9®q"‚+ˆZS HåóȬB#kACg§ž€Ä™2X᳤ÜrG³èkï@Í Ï„ûv‹ÍÛï°}ó®máÚ¡é1'`˜"ŽÇ#¦i®î8}„ï÷{sÒÅÞ{”œóÚÙ*¬ýÍ»{¼ûö=nînÐönP,ׯ1ÇÔx„¦E"`õçc ˜cÄ£„þù|y|Æ8Ï3VQyœ'P$k²›ÀÌ8Fl6j»Ö ΀m׃ƒWaŸI#ŽÞaÓv@pðÓx§N>ïà5ŒÐ)X~ë=æi¨Î=çœm`Ø©Ó1ƒ»ºW(·Ó‚DYÞW¼‚êÉÕ¼À¤çGïÁ;8¯ŒÎâÂΰr2]CØöŒ›mƒíÆãvÛ`Ó°¶:‡4dz´LýÜm½÷4Á¡ët–MÖý¾¶çÒ3röz.c{×b”—bã5N•¿€ÿ_Š”K :AüË{ëòëÎãtRS×ÄÚÓ+g¢2¼O«fOîü™àsùȽÆçÕõïÏ4œâ.g¾ó×Í÷áÅs=_ݪ€U¾ïúµVA+éë**`ýô󜆈qš1ŬA"sÒ›„_áK¾ÚÖ÷µÑ5¡~‰âŠ;+Ÿ±®®7M¼t'- tf÷µv0Hʽ€ó-‹ó¢XÖ…kõ|ˆê¢—"’G-ü.¯›mãT¦ã…®_„&Ë@d !PÛ¸´ ZC_L)&7Àe’ ¹K’­&\@™MHIpÄÈNž”—èdqåŒLÑDk˜387!A0ÎÚ 8Åeás^¼hQ‚uˆY …Ïëw‚ zfé/ «ë#— ­µT˜s3C9 ¥AŠ„œ å0…ý¡8uçl’, ¾ð¶ùsTnh·48z…V3i#[¬\Ø–÷¶‰R€’‡zÈ™=Ÿ"’Ì@ŽÜ"!HÕ’Û¬ Ëd°6EIK«`¶ó¢@»A[pàìÕà4µÈÔ©0çà¼UMs4‡$e±M⪀YY¥M®>2!’Gv„ÍÍ;4Û;À·Ê]£ëòœ1O†±:½Wë«.¤j>s^0‹a¿ßã°?a<€­…®08´îÛ^òh›]ß×)²3(Æ kiú:_'Ûj›Í777¸¹¹Áv»E×ug2mÛb»ëá ˆI§ÎMãáÀŒ:µ>Nê,ôNÔ5¶Ûí´ŠÚìÂàŒ°§‡Gì÷{<=<â¸?aô}˜Çˆ)ε°i´ý¦6Å+_"Ízè`ògùûÅ5¡Ñ ÝE̳®U¡mÑïzÜnwhúÎ\aŒ¦ñÎ×&¬T&æDœSÄ8ÏÇQ+Æã„çÇ'üòãOøôážž0Ž'{ÚáÍââR¯‡jÙ7wcœŒ³bqÐò9zï!7‚Ðw˜cDÈ Îî[öMa˜F Œg„ÈÕ†ékâÕˉ,Ÿ9¨/ãüçÅ/²Úï½äd]åkVû¹³o ¶§"HR¨¾„Ð0º)c˜gÌytü€#mAðèo~‹í&àæv‹ip|~D ÂU„º°³€Ð84g´¡ƒÐŒãþ€¶ñøûÿòxswÆ;üôeûû[ÌóŒïÇÃ0 ë·/Pk·lØž‘¥UOR¶ÏCŸ…AÌÈ!´hšÖJVU0Ë«XHy–4m[Ÿ‡åp2Žcúä n,O M×Õuž]8;Œ1)<Ù3-Q&ÒaŸÆs^Ô·ŽÒŠ.wæ¸ÚL~½¬éL ¸vÊ·A~·U›¦‰CűvBTˆp.CÍTÛñ.Å’—®žkçTgô:ŽÓu¾ûî; ‡Á¾þñŒ“³5“­€àÚš¸45Mƒ»»;üþ÷¿ÇŸÿü/À¿ßïqssƒi…sm¹sÄê|ËY1«Ÿu}¨Ñ¢žrÀÍY›'óªÈª‚íëûqt/è–k‚9!®ÎlWÙ¦/Ê!^2²®@\k¼Vö±øÎÿœ}Þ9¿Zöµ"³œ.ŸRßÓTnc¶2Ž D:K^8¾òúú÷Úzz&θõ°à:ÃëRÀ:û=™­Å^á¼Óröúßέ8[¹°ŒlÔÝÆávã±» Øõ ¶}€g䩯AEÈÊ' ?ÍiQ—ctm@Ûtm£¬«bW(Ï7y _¿ï®·ï]{¯.Ÿ‹D„Æöè×RE̾\/Í4ëˆáåõw)€^ÓUÊÏSÒeè]Ä­K°üÙsØñ+ŒË…ÇuÙ¢ZÎ^: ¿D;³ˆ/Û=±*·Xœ¼±r¼Š€u Â÷Ð&úZÂVöÔ§qBÌÀiœ‘…0§Œ¶ï0ƒÈYdò«n«×ÞàkÀòá½ÞH¸^€Ö5Ž_SÌ«C¹^xç?“3û¸³_ñ+ ‡ÅU¬¢9QñAÊÎÍõ”BÅ•0×I .òb›|6[´¨]Ú⾨5¬cT@¸ÅDcÄÊr¡¬®#ÉŒdí8bn¶éviô1V•5J”6"eÃ, ¿¨À)a&€S7Ãhkwm©°Ã 9$ÝÉ)‡Ê¡H`žKµµ5âIÎà¼<Jý5hÝZ"Õ’Me1·v¡¯l)‹ËÜk·tSbª1•(’Áõ¡¢•ç 1³ê÷"uge1(²‚ü dT9ŒÀ-R¦åP™)k›à²:=ÔVm {ðDG²¶ –Q<’ƒ€²‡ AA@Fƒ,Œ(Ù aÇÁÄfד8,¡Âç9«³ŒVµçnuÈÔ¥\62‰¶ÈÔbN d«¥ Ã|ÄÓÓ†ÃûýÃ0¨0$b®«í¦WVT¿EÛ¶`¿{)%Œ'm%¸~¯—›¯dÍ‹Aõl·[ô› ¶·7¸¹»Aßv“E;JΈkóÈþx9FÌ s²²ƒ,8<íñÓ_~ÀOùŸqŽ˜¢ÆYÈ·Åœ1Ç5ÖÍ1ÃÅh“ÜeÎð)Ö’‰âóÃ6oA~ ¬1Ã&À½Îµ©ªAãÊo=Q[ìÒŒ•˜eL0Ѧš®i½rTêiÀœ˜1#!A\‹ì6HÙ\‡³Ãåzß2:òð©Aœ@›€$!COÁ%"rÔ(ÙŒÆ8:ݤ¨`ÑGï3‚cGûAàØZmA·¾ÙÕæËÜxæ¼å:Áe)mG‹†¼Y…Ø‘¬µMÅ‘L…p³C2 êètÌL¡]·•1T¹4Ѳ‘0Y»ÙΣ¨^Å Kã9W3I%…¼ ¡|móÑ R^¹‹p‚CçÔý5'Av¢uîL`Ÿ0õSrrÈpH™h?ã ÈÒ`ŽŒqœ†ŒÓqÂ0L£àé˜1e ÎÀœÌ¡e=(ÑæMD«ð 4 °émßaÓî7›.c·qèBDãft.¡ @2$ œSÆ•÷ú~‰¾‡¢íl¼rb”ƒ72 ¯ã´ ÑJÑGøgTKaJz!B­ñkÖµbœõ†ö…û NzåEIOÙ¨ZK2–Ìug†¬Ú}×›ãµð‘¯îÕ€.H-2)èZÂ6©ÉÄcüŒy0K2l¿Áöv‡ÁP¯Ý{lëç"òœ#mâ¼þs\¯2WbŒ±ºŽ«C¯^ƶ²ÁS2Æš)^ÑdkãlUÏ×^^9Ê´|ýW '×*¢`tÑFWï4ʧàtE@Ç:ðµFX(è÷oZ‡¶ñ¸ÝnwŒmïÑw'+†QÎ;_žr~wŽ«èÛw-ú& µõMŸ…ŠIµïþ…«˜É¾F^8­Ö¯»àH®9ÿôþ]]O”H±f^M[®ñ¦ªÖqQzro½öO‰à•{»´›¦”0MÓ‹B•óï½àV^~Þ|ö=Öì¢É§çÕW᫆£Õ;X±L"Š©X†Zò¢e4×?þù‡ižq"¦”!X?­sNÝ#×XÐ_%`½f}“•"íÆùÚCçòë.[È.Éøg .,t‹ïå÷Ï«É×¹’ˆU g^Mh®üÌX5œÄÄ0…ò‚í.N-­&%‹(j­iuY“ [›„sše‡5F%‹Õ[b„T™Î&¾hK‘¶º”­½Ï6|–_OÍcÌgíD:¥Vë½AåH™_sÎ a›fM¬Øa„ôÌ$ü ÃÐê†\«ž‹Ôþ¬¿BP(|Τm(™JËŒE‰H¼N¡\ú>ªRAØT&žU,U–‘Þ<V•ýì›–‰Ž IDATê0`tƒ9§¨n¾ìš,k†P}ÿ ÖŸ ¼¬,‚˜‚ÙÊί#"…ƒÍ‘r@F‹$ - 3zäðB¢Ü&ÓÑæÄJjçV¡Èœf¬6’Dè¿…OY0Øa’Fƒ†00i4uš&œN'̧x沉1b¿ßãçŸ?`¿×:èñ8b:b<ª `ÀQ÷±íþú®Ãíí-¾ûî7xûömµRKR6€÷ŒápÄa8UvV½÷W5ã9'uÒÿÌ{_WoÞ¼ÁÛ·oñæþ ¶Ûm…–éf8× ou²q˜†»† ó¤~»©œ²îáîùñ >|ÀçŸðøøˆÁÞƒyžá‚:©š¦Áæf‡»»;t}¦QàyÓµur:Ž#N‡£º¾’¬2í©¶Ä­mÈÌPáÊ"!Þ{4Ne»®[ŠLž/$åã8 'utælDi˜ñé—ø—?ÿ¿üü3OÏvpÑvÑ⨠9éýÏÓu¬‰Š->Ÿƒ0W“øeišÞ˜hlœ5IóÒ UÜHŽáÉׇ+“‚Ï€¦ BF×÷è·=i€xvS„w@J„ÔfDapc‚(æœ1!!€ƒ®-‚&mÐÆ )N,–1z™GЦAH‚ŒptB’ƒ9èœôˆ@Òj ¢$€g°$Äœàʤ=M ÊpÙÖ[,ÑkªÙC±a°-ÈÂ+°¤/ëÙ vL¬`Ò\DEòÙø …9Sºôù_€Ý|ÏY]Á³Á?+ëæ KÆ_Y&Ïk× ³UyWRD­‚¡ &àr6¸º0XÒjØ¥Ã6>Š\¶ÇËó„É (Pe¸Ì!&Â4‹i,1iñÈp¦ÑcÎÀó˜1GÁg¤(d­¹—X£ñÎ š ›íM× ó@çGåY¹B‚“ˆà2úF7ó–÷D#øÉÀ¹Ëéý|ßcĄ0°^¸@,‚ê^¸¼æ^¸t|­7äÀš5B¿: ¼¶ï+ öÒœ¾“¹Œ·”øíR̃W¦l.Éê>%8´°ë­Í <œ°Ÿ?CN=Òñ¾Û ï·wiq<B’N¤絬G"²’D¸ÀðÄHpÈ“–™Ünîñoÿþ_#!àóÇð,à,˜§“6ÎBž w6Íç%qsBÄXËL2;L4€"aëw*8Ä„1&Ìã Ã0Ø3ÒÚ«ÆsבŒ*lµ> mu0£e2“ h|-º;1b²x3<Èë°k2°³ˆØå¼i*)µ2Q…,FŒs'B^8ª°)×Ý¿Ö6·n¯•î•ßTÜ/ú37+wÓ:2§NaÉóŠ“û²¹ü…èrñ3yïõ³¼¸+E-Úýöí[LSÄ<ëÏõyz@ŒÅ¹– j®œ¡µ3¤ìAº®ƒˆ¨›kª<ƈÝnc`M¢G4àÏ‘.«ÃhùûsÖ¡õòž¸ ›l‹Ïâ,[\nåÓ\\6ò*gïÚçyÙP¹^­]5¯9£.ÿÿóëãü5_¿®ÌÌúªøv~m”µ-! !&©ˆ!¬ÞÝǧ d’U<«ÖÍ—¦º0n¼øßr)ÞÉaïòï˽RâÿštÈ:˜qj$Á¡ñ¡6ª–û$Aà,iÓBß7Øv„û-ãvÓ ëœh8ãÌ´´:#–!÷êmB°AŸòA«ûÞö&9Ÿëg×…E{9›véÀ»ê*º²î”kÆ]qx]ÌÖç§rÍ­!×¾gu'Yjc-ö{ï+Gë¥ðºÜo¥…ð5ký^ˆJ÷àÙû(ü¢8áüûp-^ÛŸ–áóeÙBÎÙš9QýÕ3ã8DÌÙ阑¢Y;™êp®:dêEWćë‹Îå›vM`º¾ˆÐ žÂ «iV5›Í5óòÏ·p©Ò=Ï .Šä9o¡üù9e°m¾A0»1¬²@¢, Î*úPV±%Jå\'Qež³˜EOSÛÿœ*—Hʧñõf2ÁCR=Ħlqk~AJðÁ)_ru[‰hnØ92({'­é%VÛêºÉC+p5Ú£N˜‰1/mªw²NµK †UÀ*çâÜþ¿vÕ$YÚ«„‹,%ýLFn·VZM}%æ9#€Ä«ŠkWB‰´i[”žÄع†®.+Çβ^ﮎÿ DIJƒ¡Sg¸6ŒŒ”Q³¶ºéJŒ,åÔ§.*XƒD3´ö6%u€…þ–t‚6^À!F‡®rnôßj©ƒð‘úÚŒ£æ4[ðÊ{"œ½:J­ª¨KÂåâÒ°ÌÂ;`‰ƒŸ(ª“+H£dÙãùù`¬û¥bug ÓŒqŽ˜SÆ8ëtvœfÄ$àРoZuhئ14>½Ãýý=~ûÛßâýû÷Ú>7%$¸NªNã¤Õß|Óêx8át:©ã/%HÊÊ ‹sç5¸Uw×›7opwwƒÐ6A†‘½ q3œkëƒeG<=)ójNZp‘$£iZôý¶N¢‰ÃqÀ§OŸðüüŒãóÏO8Œ§ ­o+¤¾ßmÐ÷=nnnpww‡¶ïЄ›ÝMÓT·×étÂiÛ«ókÎ+‹{²d<‹ì•8c×·ïå`õúÍF§ñã2N˜÷p@žâ[†÷ §éˆÏŸðýŸÿ‚Ÿ~úÏO{­:ýU—ò¼Wp7Ym±Âî¹¶‡zv¶Á|ãÏŽëÏšRB2¸0(kÅ/m… ]› CQ¯m©ãËô—ÍñjÎDpý~»›‰fŒÓ¬ü"ö¶L“òXí’3® èB€Ï¨"¢nÎ#RžÇ[œŽ{Là ˆ3Æý|šáÒ ˜ÈiD&&4Ðô$ tBÆ szFÎÏ8!CÅÁ  ìÚ¢¢…T¾ë‹ÆíyõÞ)g3¡¥‘«z¤ò¤âl¬Û°²6ô¶màkÊFñòìQð{‰éæä”f©œŽâ@R·Ð:«¨^a`VµÞÅG»ÚêÁLã…+øVê°bE'̈Y‡=ú¼æúL%q@fä)jü½Ä! ”볬GÈA˜™°u„)èÚ='à8L™£Æºq1EÔ}C†ƒ8#°±Ax‚gACQÛ™Jë€6Ágl¿Úäe{Ö®âe9-c/‹Ìbµc`!*h3òç¡ NÐë¬Ñk‘”5Ûè’tM¬Z«A¡ñ^2PeµMgîª3ÆÎºÅÝ£ëO)1X¶© @‹ÈŒ}+û“¹Áð”á!p”€|Äqú„ñø3xs wÓb³Ùâþ›o Ìʱc¤%Õ7,±¼Ç£ºÇ·‡-ºfÔ5/e­›…cº¦ŸAÜ‹–+lCÇʾ_V÷T)"ÒýE×t¸û¦Š~qÎxzzÒµ7 8h‘›cš&„àœÃ0L¸¹¹Ñ„7oîp8¼Õ=Ä© þ€¦Ócd}ÞÎIŸûŠÄº/tÞó¬<ˤs­—ñÕz¡ç’sQ<ç¿Î˜ðk¼KëµóãµèÔ%Zb‰~®yh/æW£ÖÕz!´eªüZ¨‹uȘ1³¢Ypñµ™ô¹YœYëA.YEþÍW+¾x? Ú· ÿ/⃆\A­Ö\µ1Juò2ë²uÞ,0vÆ(Vž–~&8Ξч® Øî¶­ÃÝÖaÛyÔEXøjyc¹ÂL ïT¬ žÑzemyGʶÊY6ì ˆì̇ÊXZCTŸa—æ—õuü𰵆_×.¥k‚j¹–S®ì0-«¸ü^9ã_»ÜÅõ¿Žß'Ö žß*–[P-¯é7kfÕ_Ã{ ow¿úÆï™+-ŸÇ5ä«Ü2“µ…°Œ‚oõÁÁïÒégª–ßEBx]Àz-G»v˜¼Ì;¿bñ]eϯÁÆÊðÚ÷w¥¦÷'ØZ@£ YÞ¨å°ßÃù¤c]Åzmï,†”õ-Tב+V~³œ‰ ·GŒ?FåP‘ëÆL£oE¹t˜£ºDJ»%€Ì3Ð1#%BmÇ©§l+Í¿{bdñ «fuâ`µÂ&žÍ)!F›‚ À^½Â…)Æ J&bé&ß>sWétÚ&¤¬Œ.öç’¥mH&ú̲(¶œ¬ÍÐ º” :At¶p¨½TðqžÍ]ä꓊‚HÚ¸(`ÀMèâj¦ÊÔQfmM)›nV, ^äUÄI|ÔÚë, tU˜²GÊ3R"ä¨íb‘LÑ„­,ÈÅ#!hŒ…äÜ K♜ñ|Ö\"¥U4âÄB »µºiƒÚ@KÃÂÀ!Ù¦¢Kš .>3$ ¦Ã„|q8ˆ³–´¶ ÇãÓ§“2‘JÅ«:—)ï:C½Ýn&ôýï¾}÷oß¡Ûnªˆts·­ñ‡aT8K›ÛlnoÛ`ÇžžžçˆÓé¢ñÅÔ¤ð¯Ú¶­N¬Íf¶w}Ôu¾A*0Ô§§§Zs®ëNÆñx³Çv»…ˆàááŸððð€Ÿ¾ÿA¡¹£ŠPó ¶ï{„.àþíln”9Òm,ß4 ÚNÿ»ÄÆq¬qŽ#Òœ‘,W†iqŸÕ Eã•ïå]È7IÆéy@œ,nÐw †+{¤Z™çŒçç~úá'üøãÏØ?î+ßË#Q^Üg¶4öù9㢠å-.1F0«ˆ]D·ò@GuøÝîô3.e6ÛµÁ+%“Šü™=ÃY4&pÁ.8ïÑp‹) `xr mðÊœ¦òY{whÚ.xˆ X!´UÀÑ÷o1'È~ø€¦í±½¹Åv»Å0 qˆ3˜ó<*ÓD&4ËÙžÙ9‡”ââªÁò,¨k°ñÞ–uBA/£=Ömzî°+×äÊ ý¥ó¯ppõ}%LÓTžå™Ê\Áa³m‚âJŒ¯”Ì\²›êðy‡JsÖ|­”‡4˜= 6› <«nÿ|Ä<ÏO#æ8Õ¥òÞ®¹Me VÔß|ó ¾|y¬kë0 ðM¨ïSŒqŽÈ>k0Ù¾xÍ/ƒ²”ÔI£"Ž3Þ:†ój &1WLÔÚˆ°0°ÜW!íÿq5_3Q|-RzÍÅuÖZ¹â›-Ÿ1æùê¾ V1Öë, ·Ê#ge“”˜?0ÛuPÚúÎ ˆèêñ»\ E,^ZœñU§à²ffs–­œfÃvJ~‡ç¬¼+Ö!Oãž Þ-¯;çIù¢Ní]CèZ‡mï°ë¶Cß:´Má6éÙPD±8KìNŒ§g./Çh<<£oB=7*w^¸†®1²åŠsi޹tè]m.Ïý—bØ×"«—ΫK¸û:9vùzʯ®mφÖk-âR9kO´¿ï’mwùš½k®FúÊϼþó×Ê œ ¯Æ3Ï#‚rUÀª÷ß+No¿?ž0Å„iŠ o—l¹N¹Ú@P,Àë:Êk7z üJóõ–ˆK;ð×þŽK{ÛúCŒ1êÆÑÎË\éú¹Ì8—ïW83UвxD‰ODRi ¤¥Ê×Y­w^GæÅ}dÓÉM9à ÌG’ ¬CÏÚ¨–uªÍÎ"9³ ¥¡¬ÇÙئ×:¦4×ì3‹NŸsvzøÉÓœ)iYy€˜"Rš1Ϻ‰™ ¸©-{ç ïucÎÙð21‚½®³Ó”*ì=sƒµ ÜŽIá¼õsaoMÚ¢Vo¾ cx1Ø;øÐ€t—®›‚àà¼WåÚ®… Á˜ bL•boVæú k]tµ98X]­Å sÆcT™ÀðoÓ^æÊ’ÑéÕ^ô÷ôÆgu°dW`Í1ë"žÄaùQ]ëŒBE ¬ëú<¦•»ji$>GD!6›«êŸÏæ²»VÃÍ+Õóå·p+í½w®º/D€TÄšçˆ>cžpÈO8>ýˆ6èï[ßcwsÎ ÏHI¹pœ’:ÃÈ1ùdÀq ߌ̘'4¬Ýí=¶7;üÿý‡_~ùˆÐvø¯þöïñÿãÿø‡P–ä~Ãျ»{Ì)ª#„¾½ÁápDÛ¶@$ÄAï÷¶ß¨8Ê„QlðQ#”V a‡ŸÔQ9×èún·Ãí›{†>~üˆ¶mÑv¼¸ÙnñÍ7ßàx<â¸Æ< ‡=tX2–ì\>˜0IB¬Qusaå\ âdpð´ KÖRK]¬ËZ/ãf•ïI/÷öëøZqJÏ,ªì‘ñüüxvݤ”pͦCŽ6Û­•Ì€Îà1i³2¯Ê¨–a~¯–¬ù6+q—}}¶»àñîý7˜FÝC}øðSœ*Œ¾  œ×Ÿoxï±ßïÑ÷êÐßl6øýïÿþô§?áhû£Ãá Ã´¶CÌ‚iA)¢kÚz^H&üSDh{Ïð^¤=»å€Ìä4y’Ë`Êùe¨¡ï¬kðÿ¥Ù—õùòªc䢑ð×4g%8„÷4g‚ÁÚ’s¶¡ÐÂsÓ½¡TöR¶ÃxIžˆXTÖÖÙvê‚Õר¤ÙÐwg{Ç—¯õ\€p$…ૃ ºÛÇ65ÍR;ë2Êà"ŠoT²îƒ›P’.@ãúàô|j-’Œœ" ]ëAœá˜°i<¶}À¦o°Û¶è‚GN3<7XŠÁÔùãdIÒ}n 𠑏.0Ú.(“Öij$帴'VŽ]z!4U1¨D‡/ ,—)±K7ñZX*ÎIÝó¸ŠXÇçË0@‡r…Ɇè‘3è®\SP9/,Ëõ3yæ*"«ø'õk²ý\ç톋^ÁÌí´óÂ™æ’ b¬‰‡ËXå5}g]ÐRyoWîCf¿â‚g°9rsÂï¼ V˜K¡F>Äü4i'£<\–ÍDÎQ«åI– T^ã®Á9Ë‹Z/þª5t ¼–i^w5cÊWòÍ—ß«\¤ëh½Ù¹ÖH±Î°^æ>KEp¹¸^SôsΈ6)*öéÊsÂÚjˆE°ª›JÛÎ9e‹QHª.0€@Y§·Þ&òÚkF¡êòJ¢H/ŒŒŒ,¬¿’]lPõue&1œß@²òÑÄ0ºH 8°mL“E µÅ lÈû²Ë'ÖjS2‚8gûœŠNDd"Î[O KÎJ’re“âúgØ‘dñ &¯§qe ¶ÙÏp%ª`Ó:g7g ÓÅÞ7k´ËÐ —‡:Ïk?×yÿ$çT€›ç¢Ô—…Èh ÇÔêø 2ÏqaLÙaŒÊúš%ÙG@Μh’ÙÀù«9Š$ ²ZÜD4–HRAé*™«20|Û›™{Ę1FÁ0GÄxÀi0àklLØ´bšqšFŒÇN§ƒµa8mжí‹H;Uösh7=ú¾Çf§ÐroŠ}”ŒguñyßìšPÕúâ6’¤|¬Ö„’i°ý²Å£EïÖ'uXµº·_É>l`Èr [¯C§Ó ó0ÖIÇbÑmÎ5â÷åË|ùüŸ?Æþñ ûýãÉXWÖô´Û)çjÛõØÜlðæî6› BÛTW]Š3‘}µ¯,Nª+Gdež-~ç½F' Gm|üò€ÓéG‚ív‹¦ïlÊW64ú7†¦Á?ÿÓŸñó?ažžžöØ?Ú.xŒq‘‡Ì³®&|±A~‹8Æ8oZ9ªÖ¶æu#’Sª‡IWÊdRÆétÒ÷É>ëòïò^iÔ-ÑŒ8!Ù†áJ¡CÎHqÀ4ìÑ·-Zï0RƒiÔÏ9Í3Ò ‡·4%8öà°ˆ®¥Ää–e&84p9ÃW¯Mrq‘§ž¶hƒÂM}9P7ç$<x‡9?!ϸ;NÆÂðö+kM*Ñ”LÛ¡NÅõZ]†OÄæ6qç 1'D›ªg--³çª F‹EÚm PEg©ÜŠ2Ó‹(ÿš%RÊÙJ-´v}µñ++Gó׿o& (/¼zýëV2ÇKÜ\¸8•VΈRb*Z®,6—•g˜þ½ øœYÅ6^Eõ>tà¬b©Ú„ó¡· ¬_ŸÙ-Ÿ'•?=Ô“\ò6l0´v£\…__a à5ú_W¾Þ4(W¹2ë}]Ý®¡k'×u7þkCËKvH®¼«ë-¹*Æ•©>e ¬øn\Y3ÙÐñ‚4 <€.í<á0?b>¶ f¸ ®Cp[l77Èq†c`ÿüÓ<«‹Q)P`kQÒ=ݲ—ÓˆnÓ#çŒýãgŒ§‚·w;°øùû¿àw¿ûþø·ÿ ·›V×îÇGÄñíwïÑo6øÏÿÏŸðñç_0Ž>~üŒaŠpÞ#´ R9TJ¶gG”UPXäZ僂ksªPºËÒØ%ëâäè z_XJZVóU›"ÊbSâLgÝÐ"Î1Ž:‰„Ni‘i™Ì–ZJÍ ª[t‘S‘ 5¢<Ô:Ü2-çÙ¦Ö*v8ˆò@ÈIÀEä²fúÔŽo“|ݳ#2@ÙD,V—ZCÙÒÆ[¡*âœF±V>s6‘1p8XöÐLÀræ +B±‚ê‰Ã""ò­Eçêô!U‘‰jH®ªÙê%ΰLƒ¥ä×MtŒ8ï%!%{SÙ˜jÙ‡Z™Kit R&Ì ˜„qŒSœ1›Ë+æ¹6° óÁÕ¢YÚK²9D\€ä€œYkz³ÙäáïàÚͦ‡ßlô}…ƒœ&ä9#ކ¤±@££MÓ€cŒ’D¤y$+8xx&c|¥‹›5¥bÃöæÞÜ5Î9æØ¦ì‚Ðz{ÈpuBÇ‹ºi¬qÏë&y8ªÔ¶ºÙOq®ÂaÙô‚—k&£ÆêÊz¢¶H&œŽ#‡ƒEÌ<ÀÑÈ¿„Ö·ÈsÆá´Ç§ñóÏ?צÁÓéd‚¿ m6› Þ¼¹ÇÛoÞaÛoЙx·Ûí°Ýná‚7Të _08yöÕ¢cTn‚=h „—¡Ð8ÍzïÏ*>N§ûgœö¤<ãöv§‘ŶUÍ—€¦iàH£y‡§=ž¾Ê:dKÓ”ƒ%B6Fŵù{QNž—¹Þõ`†V0¤‹CV#ð\í[Š#e†ò.7˜Çí.¡ÄƒvB})^­E5ʆ¶ýºËFÃ%' °Êï»l›¿1~×kÌѼÿA–ƒ7eªÏ gç>žqo˜ö¿"F‡ó ý]‡~·¡O"vŒ' áV@¹-|ÕÅÝl] Ï~aÄ´ž\¿ÁÆY„4!œ3þë¿ü?†9gìv;|yØŠ›×1¼‰øÿîïñ?þÿÖzŒSÄûáˆß¾~Ãÿýÿþ žßÞ<‰{?NˆÚÎ[½Py ã-íUÕÝëÎç3þ÷ÿõÃÿùügÉ,KËŽ´¾q6Èd` ƒ)£.IÁð\‡'ø;CCÖÓC℉&}Ê&#`û‰%fç¼]‘nŽöhŒrRÎ ¥Ùæo´Pl‘©ò¥ ë`TT[£‹ÙjG´ÖשJ…̲›!Ç@©7q©¢®•ΜÁyþìS#:ÎpX’ó¬ ]8’L_B[q±“¤¹xRÍI?@£.rHd1±Á˜3† SÆYÛ°2äÀï(Á65¨PeZ˜Ò¶•ÀÙ1 ‰–é>Ø ¦COÞ;¸¾C¿Û‚3aÊŒÎÈY¹hI@à Iaç £ ,3¼·_2I*ï%Ë“–H¦„Þ÷0ÎÂvVu¦Öà¶ÊÎw•ó‘.ª`‹µ5™8ÛΣßn°¹Ûaw/Puè{$™y²‚€æ]ïàl›1ÏõgQhGcÐ{íf‡0NšºßïñüüŒççg¼¾¾JÔp’úíN[œîïï±»¿ÃçG<<}ªÆnÓU÷•1µMä±L€çµk‰Ìİƀ¬ã̓Æ{i8ãxàa÷#>=ý 8‡ýËW|ýúoÈ|ªÑìñ˜-bìtí¯DöYŸV£b)§O.Ûܬ¯$­£”¯ZžZ!FQýH6UyþÎÎ*ÈæiæÏ/cqE”ƒ­ºVæ?‹V\¿gFRѪ8¯ÔeÎ3—LRΕðmŠëͪ­„¥ÍV¾V©ôÎ%ŠÎ"L6 ë×_ŠL‹ º>§™%@$1Œõéým§Õõaɽºµ[N[±€6$výQÓ!ÚÃÙ徑¯¿wûs\º÷ÚŸE"jÅÅ N%Î )2rTòÉ Šð¸Û08œÂ+NÁÀwOè]»}WÂv·{'áõ³6<Ñ+¶ÒÆ3¬ï°é=b’vÁˆŒœËi‚äYÉBŸóÞÀ#c<¼ƒIžÕ1&ø~‹žp¿ÛaG¼¾¾ªã4ÍÓleq–è5’´©‘ÚSù-.•oß¾áõõµþûífƒaðú*NÞ®ëÐm6¸{x€Ÿ„ Øu¾ZÄé “£ÔÜËxWï[£ÉÊRÅ9—½+ãoâ™­²‘n8 ×þûÚõ\öˆÓ4)_8Nx~~ÆétBÏ‚‚Pç¸<—ò"j{“¬ÔôûÚ‰søáO?Ö6ÉóùŒiŒWø”-oÅ…uæ$Ϲ(|Íùçfæ4MˆQŠS¬EÆY‡ÌÅQ{éHª1u.ûf³üYôÏ%VÁì‡Îϵ5c-m³¶†¬9D×Ò>—çÁËÃúåA½uùÌœ®Ý¹°ÀòìF+I}}d¨UD .Å$WL·[ÅhyFéñ*ûjyþ”öú|q~iIÔì^¦œ¢Q¼·$ÑwÒÒ*óAaCC’ mzOØm=ï{ìz~cñx¿Aßy Åš˜âÖá#)^Î]ç°Ù2cã]ÍŠ3ÌêPK.ó¼ H_û¼×œN·JÖJæ®\’+M|kzÄ->[›[ûúí`á£vÕ[-ž—X§µçk{Þ¹Lc¯¸S·Ää5ƒÄ#×]2¤WŽ–¹`‰_ÅÍâë”g™« @ zfq¿æeMUçö“v1›[®Û(nÑço9²>²âµ åbJq9lçÍÍωFíV)÷æÂYÁåÍA¡\ŒK‹],yÜbqä92Ps÷ †”ÓEOƒ)Ï×êµfm2a8£zDZ¯­PhÖƒ R&u]Iì•“2/x*)C¢…9W(¬ï{ gäcB&q1yë䀨Y’²p–¡YTÁÈ™®2‹Õ˜³L;‰ãi€s%v¤‘ÇæÍvä%ޤ i7ÖIv{æÐd°2œÊçŸST³N¶›)?¸d}5r—KÅü,€RÙ<±Xu³NÝ9Cc¤VÖYèÊ%Zšå}HÚxdJ$)Lž†‘‡ƒqHä“AŒCbŒÉà}1Œ 1Iô.)s-¤€ ‹E¸ä꼕%2i¢Qg–<@ IýõîÁëÃÁÉË2vÓÁc=†Ã€8D œ‡#Ba­ë,îïz™ÚVf!“UX ®‹"Í.kfî’g‘7*°r§ Bª³†Ò´é´$@q)"1©k µJv»íñééÇýS9D¤glw;t~#"‚²:ÓUÐ`VþNqø¦*´?¥ŒÞuØlv 68Nx}Ã_ÿúW|ýí7ì÷{ì÷{z¦Úª·Ùmq÷p‡‡§OxxzÄýã=Ÿ…õÔw‚ß>`dÓ#N½ÅúØ>è Õl†– ”qŸ ¥¢=”6Äý!|zxĶëknJbÿö¦Áb8Ÿðýûwüþëoøý÷¯Øï÷H‰Í ßáþñ¼í"Ãàác,º¾Gç7°‡%®÷vŒˆò#G Ið5A,›YáÍE¸«ÂbÊý„ÉÏPÈ®ë@ĸÛl±ézßa·Ýb³ÙÂy9ÚJF‰rfß#;óæ☪HÆ ç³@{SJ"0º¾²é¤­Xeãi ÒL–Q§÷£”A{@Ötc•1XOÕŒŽÞ8 ‘r%¾ˆ˜0…Œ)B$Xg0e“ N™GY_)»B^€´§ÉÐ)ÌneW—†4Õ•Åöþ3ùï€?ÿ÷€óxøË¿b Œ·—ÿÂF¨sRr˜’S×§L\IF—n¾Šã¢üSëBárƒ·É×¶tqJš{5òµW'Ó¢r†—„ yn¶-Y—¼ù_úþÒìæd‰Ym!3ÍÑCÊOt¢Ýð£dj®¿—Q?Á¸Æ˜Py%¤qE§ÊRào¹ŸT»ieʼvèû¸Œçv¤‚|Žedï2~S¾^^èAË×AÅ4FYܹ:íÛÏ»)˜ªŸAëdh#òyuò×õ3F)!HQŸ¥YpèŒ ÜÂùóë¿b³ÙÁ€h ×mððø!Œ8¾#§€Œʬ®'&#®ÄÞ9œ¦IZ£«C<¯ Éóù ×wØn·DH'8ãÁáŒg*¥ ±ð†§9êÞ]ïuV§r…ùóŠ€™CW>pÁZ¬±Ýn‘SÂáp¨ö‡1È0Ønðøyƒâ8asÿˆãþÃá yAˆ°”AÚ, ݳ—Xy8·lª6õЮ1óÁüöÞ|íöX´âÉ(xU653©˜Ý4[æˆóñ€pdhbŒ ¨6ºNöS^÷¤¥ l/ÚíÔrX)îŽL¢J$” Ú¬L?ÀuŸžª[îÛ·o˜ÆX÷ÆÅ¡ žü¢àEÄOOO"|ŤÅ42(²ÞÃub†ã ŽÆ9Ù£ÒÌŸƒ‚æ-â˲'.¼»p_]¸ «è9Mp;úQbgM€X;„_>|ÛZã"åœÍ3"$«5Š™äLEX`;Š`«ýÁò÷ש)³é™cmË£æyPRßrXQy“X²„ÊgdMáÊÑØÂvãEÈ$–³‚-¢Þ$¼,«I6Åvcñ°Ýàþ¾Ã]ï°ÙtØmzÝ¥’´Ã3ë9bnt·VÆïÐ;‹n·E¯ÎÁÙÉÈ%pÖfD4ççÖ€"X3'¤.cpüÇfšt 2fUtüH`Z4é5›’úÏ­Ãëbm¸  Cà–GÕ^ï¹$`šµ’®)Gh…j ^^D˜¹‰é/׿ü…P½ßJƒìzÑ^ÁœXïí‚%ÅX†óeô²@ÜצW 9Ÿ( 3ó°T¯SÊWÐxT×júÇêûå´ë[N5–@ö"^\*Žkÿ|ÉØº¬i½„¶ì£\pˉ`¹€ŠSàòGM<ÞÛ0©ðå›ì.‘¡j´‚æüuÙV[F’!ÄŸâÙÒk Q‰L°†€\Ú_Y¤_×e±¹—æ/£‡M›‹3O^‡%o¦Ø„ÕŽ#¢µ¹Ê!ÕÀj›–CŽ&ϸ…,@ÎXdœí 9EÀ"bý’mþÔL3Xkfmò4³p¨blŒr­ó$é¡oT©…Õ|U‰0SÍ÷s¶•h6FI¾6ÙÙÔÂôäód¹±ƒ!‹‡ÌcÊ&ÆidœƒAH!‘‚û…Ofôpê»Â“)æ 7â­6‰¦sÒ†‡ 0|?ÛLCHã›®G¿íàœˆ+áxÄù|Âx<à¸GˆÒ.Òo,(mÄ ãœÚyåðYÄ:C6•®§mO±zr-±¼ÄÈNÝ„¤÷ƒ«1°e`äP#Ö9ô»-îðéËgxï±Ûl•]•*$½TGr"Ô5S6ãL\RJ5ºQ ûã˜ÚNôüüŒßÿß¾~­Qqú˜j»>}~§'õîîï¶µk±¶¦Å¤&¥r.…ü(ñ¢"—ƒÄí2ÞßÞ*ÿ.âÕv³Án»ÅÝVâƒdeméUÌ)áíå_ý /ß^ðöýHÆv1ááóüðó/èº ÀVÞ×ÁtÎ{ôýVÚÍ좥q@b¹ @ŽSe@È/…:2aŠ Ì˜gfÄ)À Λzpê•_µñŠ—[lú­£ $¹~C‚µ1Êd8F9\¥$×|™bçӇÆ!íOnvçM“2Êôž6Î"H «ñˆ>ÂÛ~ÞÔp†·™…bÉÀ{…dJ0ÑÁ¦JIÈ' ç¦p†á(œ eN•ò 'kY½¯ ¥,.qmõ3EGγø‘“ð-rÎÈi✀é€óIÖ«˜ä ÈQ¬„/¨vÿ6zy¨tÎ\#¤(kËñ9HDÂY…Ѳ GåUõÝVÁÂc]ߘŸ?Ö5jBJAàÉÞ€1œŽÒ4ë=(')°a†u^x:)ËL›‰ ,œñH•keÍÉa¯ÀÖ‘%°Ùlª6„°“œíÄYî:lvwèú-¶÷xxüã¼8“8£Ûì`­ÇùðŽaä°!Ã9‡œu_ÂY·‚c÷1—¤| üƒ¶°5+ç<„?@·s /.ñÞÃ့·=ÞßxzzÂö^žÓ6;8×&D.ø¸ÌWΆÖAzåPa*G:KãqÐçØx•_Ö²{CÍ€S¢„¤Îá/?|Æûá¨îÓ$N¿Å—Ã¥|î‚cétÞ¯l#œÍÎu‚ÉЮç'm—$ÈR\6Š®· ®sÄnóxn9¶.ïÿE»ø¦@1Ÿñ®Ý"ÀY=7éõT•a#¼ÙæÏ±«}Ýâš5¡Ž¸^ç%qR®"TÑ¥ã ùCÁ/ëáˆk²ÇYo ÖdtÞ wÖi´Ïˆ£¶¡f@àá;‡Î[æ&ÁÅp ®u¹ˆÈ1J]2ÏÂ×YÝaÓpÆûÛÞ¾¿"…ˆ‡»{üéóøéËŸððð·ë‘-è[™ñöö†_ý¿þú+ÞÞÞb?%ôw~ùåüÃ?ý¾üô3Ï¿ïÑOÖmñð•Ù#Ñ"`É(b:ØŒ#ÆQ ´S8aìK{_@ŽQÓägÉÈ8N6T#‘ÖZôíï¾|Fß÷ØìîkÛbyè&èXKð¾“aK&LSÀùㄘFäqÏØ¿¿áý}¯p{ƒ)M0^>d:-b­ÚªµÖÙç:çÐÙr¶‚Ìeƒ•a‚ös¨©oƒ ã,ò”0'œ¯ޝˆÓd&x—‘Y"»™:=‰w°®‡í:x'DPFÎQždË@„³2T ÊÂR11K,7ÄöˆçŒóù„þë¿"fƒÓþ€ãû|Lro²À!ÃÐ lK X ×>I|®là cÌÏåB¡ «§fâ§ëk“$äæàš›x U‰ ’Š:œ•ÉR¸º «{ ŠG½Š*šÂ(Ä]y‰9.æŒV¥…ëX÷e¿@úÔˆçüóse`¦òaryç…ζŠ}{aF!cg­ 4— ÒµX”XrÓzŒÛ˜%“ã:ªÒ:(}MøhPÙº –¯™WœÍ™±Høoae´âÙåZ/N‰Öâæ%Õ1 Ú>eXœKè]F4Ñœ‘Ò§÷_@¦;×cwÿ„48„œ0!Áê}9!C ^@â¶x±ÝìÀÉ R—(½¼ÕH¨°Ó6¾gFgBHÈ9à<ww.‹fÓo­’ âr¹¦ÑjÔF²rX(€oC„Qk7› ˜§Ó ÷ê#‹íýîî?aûð„»ûGt]‡ýû+úí}¿Åáõ§ýw„áÆ[Ýór¥• ÿ ¶xQÖpëúºU>P…‘ i^´®„ÈÂ[ÓG‰¾0N§ö{yn<¤‡Åásv€jÓiuXš™w‹Ù)zù³Ôa¹©Mú|¦æO?ý$Ôñýû÷}_ àöê@M$®±/_¾ÔÁÜétªì1ë¶w»ÚÆ;i®ìœATž!ìzä·¼·e/pëüW ›nÁ¯?Š|­5ÇÝr‹.ZãVÏ¡âcý\ÖÜׇÿœ¤½\p˨|&y¾&î,¶Îî¡Û×ê|Þ%Sñ󹆈ç>ÝGfuAqãB]:{hµð,/ÄoÞÉç\,AHâÇ "ç m»Ö¢#B¿qØn:Üo:|ºë°ÛvØX s„¾s24KQS]aŒ:«–(³÷7èœE¯ÆN‹Ó|Nc)[1†U«8Ô¦ ÷”+"ˆ:—iÁÍæ ƒUäÑZ4þÖuvË™| [´°Ö DëÔG±Y¾à½µ¿Zi ñT†a—b×¢Ø /›?ËëiáöëC®ËŸ+-tžê r¦iÎZx ÎÍÊ¿Z ÉŠ."Ž-×¾Iå…—/6G/UB[ç®s 'ÒeÍh«`þ k­…cV0qõa^ÒÚÇ IDATLKÃÔGÀVÑ_˘_*˜äÛ GUüѨNÛvPÞÇÂ_ºT «…O–®ë*´¼¶IÆÌdU€Î¤°?­&ãrFNºi-€}Æ9b}Mes:ÕÙ«1;=³:½`:€B”¦©lE$a*s&ÀÈ×`š™v.ÉÏ3†aÄ·¯ßñõׯøö»p>ʃäþáð?ý/ÿ3¨ßá÷çÐíî`:†ß0ÇïÇöûwLS@çD(†¾?F£z Îb£ÑŸ[\¢ÖÌTàêz±Ã'©°Od=ø<á¼ÿŽã˯Øÿ¯xþ+ŽÇgØx‚óIãR鞉ä>ò8ÿ×u0¶<øEÀ%Ž DHeGÆN€:r ¦(_«T8X£àÙ„áðŠ÷ý+b7’c‹£Íó<1&8Ý‹dSjÁÛ ¼:³4ÂTÒ}%&_šÿŒUè:áCgõßgæ åÆ#´¤\8:¥6[ÖyRN¡%“! sœ•KÉ:Ê%êgTl·4[ë¬É¬ë¾("\Ù¦Æü 2ÎKö(5Œ’Ì"T*Øç<“4K ¢Æ-…LÈ‹cÍpÕ¼¤µ§l–ï5Oþ`o¶¶'k·Us«.®œP³Ã`­Ì§]wg^[-¨¿Ç|èÔoãžåµ\Ãg6å Õ¢…H˜’À˜¥øFu‚ò>;˜çgËÆ9PŸu »³ž¿bìî°½ÿŒ„ìïÐuvwˆ‡7L)é¬M—Ú Eß{„1â0œ¤…W'ÎD„Î:uõê C[-³µpºÞ–ÁʧÇψ „i¨:|e:žtÏÀ ~Qb‘Œ-Ï1")L¡E+û¤Y+×…÷¾Bà‹›uŠ;Ø®ƒí:Ü}úŒ®ß¢ï%®î-á @¤A\צˆ´Ò𜘤ñZ§ÊK“˜f'dóÛµ@!­(çpa­±p²:ÐŒî&f8‚½ˆë9 Ûm‡0Æ:h)×I˹ZÜWÍ ª~¯5‘­Ú45Ï6c úí?üðƒ8¯ðúò^ÛÏç³ìgbi$$äì‘Ò„”„uùåËLÓ„a«ƒkšÎèÐÁ9ƒÞ;Ý?)C­œ}ÊyÈa( ë6Å*ŠxïbF[šÁ*ÞÖ‰i3õ søRx¹n¦§ã…Ô0[§_A¥©¢@f!}6Adfp’ˆñBТ’V)ˆì9™LæbËÃcÍ^ºÌ4fÏ< ò–HvKQÕ²”¢8bÚ¶7ºh<0È•Ié´É²´$ûŽÔ‰%©®k#W€ï€‡nƒû]í¦ÃݦÇÃݛ΀R”çf–µ²4€Ð2Òa$däœ~ïM×IÒ'Í‚1³Š¦$-ñåœ_ÎFöŠs(nð9B>Ç<©žsQšµÖ%iM°¹d|_:‹Š~°lnøÛ+bù¥Ëo½“+Š¢ü¾V‡(ßæÿb±6•?F8oᬗ³·j=¹)!¸üžk?ÿ¥€Uô¡²^®Ý³eu™°ýÄ5.{Á÷+ÑBÇXï*GÅhwO“2àĵ;Ð(„ïBº`c-Uï¤Ð¶µˆ3cš’×!ð%Ê#Dê9®WÁÅÅ3O4Ÿ¥s¬¾ÉêØ*Œæµ×ÕZ®±–°•ÚÙ`E.Š9ή(2ÍÆª¹èp­èBHËúV25ŸJÆ ¤\9dIE”2‰É)ÂÛ™òOu7€ÚFÅ1j’©¼‹”õn!F9HX‹)&mŒJ }ÿ–æ˜"±¶/å e ÍF¡àºÀF6Hà­gFU„AÊÏU”"!r dØ,ŒyQ@ä$èw#G°Œ2ÕÖæg`I"‰¹4òQ™¾Ĥ?gÄPø^^?#½aYœ?1‘6!¦z—)$Y‡q ËðÖ!å§7ZAü²ŽMŒÑ&Ç$Ž+º{º9: Æ9DœÎ §‰p/GÆ·}Ä~`ƒÁ9D¤¬6ìb-Àù$×x:Kü§·w}M'Ðg Ãô»»çsFœ<¥¾;gFÈGÀ½â¿Ù}Fߤ1Àv#Æ÷g¼¿¼ãû×W¼}ûŽïÏ{ÞmüË`{‹4€Çû{ô$<β¹+‘ØÎoѹoUÔ2l9ð»ÎeX›D DáƒYP‰]ŒËtό¤‚e+pÚÎÃáúN#U„Î{aa™i È[×(9@ˆPBÄ4xëaÉ‘Cg; 8!…ˆCuô]' u"X/ÃÂø2¸ÿôˆív‹Ýö®>P¬÷“Þ[Cœç´eƒª‡‚r€(ŽŸò NqDHÒü'°zF <%œG<ÿúû·w÷%x¸Ç?ÿ„Ÿþþg<þôÖ[¸Þ<Á™N¢uøýׯøúÛ3žÁþõ€÷÷=îîîðÿþŸðÿþßáeÀéù ~s‡O?ü€œ¬°÷ qV¨’î)%Œã—z}…‹À5Iíú8œ†ã°G8ˆã )8Ê5BÜ÷=~üü_þô„‡/è ©m·$?“…<'8£m…†ô ¶ûå,å"^Ä(õ§Öx‰ ‚‘ ؈›Š¬…5Vrü™Xlqs•…ÃÔ‡F–]Eæ‹KJ¡òddÓ%º•È€³•v>€ÂÈT†J%:5×j5å±L3aJçH8¯Ç€×cÂÛ1ã0&G'χ;§î.8g¤÷·÷H>$7Û]åZ°ð¦Cå€ 1º¬07¯OÍýéU\jyrÝXm !Öèž4iDLaÂù|Æ0žec¿Ý¨Ûkƒ¨„Þ{dš§¼ƒWN ŸBhÚGV¦jaø.fÐ9#6޳)Œ`uåã„ãë‡×7¼<Çùt’ØÞ¦ÇÓÓŸ°}ÜÁôìÔ{d×Hš2öo|ûý¾ýö oo{ §QÚ ÀÌø·û7ô÷OøÓßýž~üÖnm­Ùù¬‡KÖf r]DÎp›m}€«0#8L8ŸŽŽŒý^o»çƒG˜N°œq¿ÅÓÃ=ž>=à˧'Ü=îpÿé~çAŽÀ†áœ…7=™º¹H1 ÎãÃù8¶†Ïxßãýý‡ÃifX$qmÄÑmC­"·Žjë ×kgMåÁ8¿…5Gœàm§‡ œ'žÀá Œ'Ðþ8Ç8þ!~ñAE¨’ÖØ¶à3,`<Œ¹,‰QL Ÿ«4"›Gã¶ÊÚË aͤ¨Ì,ÀùN 'ä8ÁA€W!˜R€·Vé²Ë'³t .$[‡È£ë“ [J è2â±` 9Æì’¤95ñ±YÓi!·r&1Mû¯<7YE+ÒaUJn9Œðì.Ï7Alç5,PÔénq¾ŠŸ+–€èÒQnnDè*¤P¢CÆí¸MNVѪ€n¥)êRHj›PK ní©ä¯©q:ÑUdf!X”C—i÷…»…MÔ) 3ÓÄYÐTy_¶.¡ó—û«â°“hWhr•(¸8®²Q׸f&¤ÄÀê$¶8såŠÎŽ·ÛWW:€Î0Øäf˰!â=‚ßwSß|[¿½ÃîáŽ1aá\ë:ÄAÖ.0Y‡Åý'ñŠù"®øŠò× ®û‹6.XÜQ‘¹ SÅÑÀM\.×âe|¥uTžaÙÃæ„”¦0â|:Àú>$}Ýó5Å¢ø’uªp‹Ó dõZb0Yõ0NöbåYꚟ§u*r°äææÒöÞ2¡pí”Àð K¿:#q<³2‹*h,“Àӄ̺¦¦¬Ñq»zF¸ÕŒÇçæ:Fiá,£ßmñ”žd 4äq<Õ‰¥ö ¦zðd-ÛívøòåKýœ÷û½8þÎ }¿Å¶÷Mêõp›X\I¹m,g=gÄÕ1§~Êõ¶R˜ìVc[kq¿%Š…nDãôëZÔBªÂëe³˜Ì¼Ž¤2_)1kSâœ%J•ª{“kØ=6b>7ƒƒJ3o5#¢8–M^ˆWõ^£,1°êP¯…ï;#tÎÂ’Íóa¢…“FŠŒ¿åiÌ躤M4üüí;~úû?#SÆËÛ ÆqÀï¿ÅëÛ§ó€¨ñâ-¦p8HlàGÍÄw]]X­-“üfÈR¡m!SFCYºQ"©NT Ø 2@’â@Rá 8°¦¨0Â`É sêÀi”Ö•¨r}Èç5MSXN1ÀŒs«©!¶Œ˜&œ§ˆóåZ÷¶w÷ðýÛ2mU>S †a‘D ûͦ>$2d¢M‚WÖZšÂ‚¡“sVÁZœK0mc’DHgm™Lâ‚ÔhÉyÂþåï¯o8¼¿cÎH)âçÏ¿àÇħÏOØívrP±WvN'|ýúŒß~ýŠo_¿ãp8a<ŸAÈ8î÷°Öcû‰ÑÝ= ï®Évçvõ %?#-¬Œ+[t±3‹ˆÀa°ñèa°±#äÉ¡ïyêàÀx|¸ÇOŸðéñ÷÷;lï¶ð“‰]”XXg¥x ´@N'ä˜0GœGœOCe¿Ä˜1ž‡#^__ñöö†q Ê„ÑÃcLèΣD*ú^Ï^Úø”„GÒ÷ÒÔS€¹Ö… 9vÊsàÁñŽg¤iï Ã7P|EÎÏ0t‚£IÜSl•±!î"pe“,Ä茬…!W[SUM™*èÕu”MWjUÀ O²iÄ,aíc&Ø<;“Dï2×Ö$V‘„@5Sªé³ºb$ªÇ5Ê]„9ªœ¢ùß³ \ÅÑ4–ËD;ãFëOj°¸!x ¹hòiKL‹ j#™…+‰îÉ[ÚLmó—é17`{mO*uÐÍëÈXF˜çigûgÁÊÔ_227਷Àë|ѵà%ÛfëÊ"Z‡§ß *Î`Þέ¿Þê~« nl¨ì°'qõ=ÙÖj{q»‹‘âu‡Ru‘—XjqRÐu l¬¢Át˜Æ„Ã_àý½éÿv»û'ùžï¯Hã { ™k}=¸ÖI|“~›¦PkÅÑÐFbÚêñµ¦«Ú@—s‰;¿´ò¦}yи,3Z‹ÚQÊçì1†ó{ô‡¦ÓˆÎp˜§Ò^Á þËb ­í‹m‰Ée=½p mu';#œÎnÓ£§rèáU~M¹neo—¯œ3Åùhõ"HúAˆùšK°Ö€.Ðíà¿}…æ?`Ä­s À g;ìîñ”Xœ…)#Ư"`•õD]QeÝžkè Ûí¶ÊbG÷0 Õ.¬#[KjÊÏ)ïÿVD©êšÍʆMëqÀ‹E¸´ wbmMKš®i?·q;ZˆXõ°^ÎMd.ž˨» 4ÚƒvA8ˆb•SqRåê˜Ë¼Ä\ |À·º0H£F[縞©ñê–‘•iÙÚD\E/ÀR–ç)eYwKñˆ‘[f@çÄà 3q»pÅ)eÎɾo»íqÿ°ÃöÇç»E:,ƒ”ë Ÿ›5ZBa ˆ%²hÉÔýù%hM<)g31+ÜÌÌCb^ÁÖ4€uŽ­ˆ4"Ó-Nk€¹txÍç4ú©ôÑ{ÑÊ­K¬å_]bÊë.ïy t¿û_âÖ:/5ï»U¦ßÌÐÌ˵ÙΨ–ÕšZê¼JXg\íšåàY²´ŒTëX ? ºSÊ“¯Wë‚ÝRüׄ %¼øºç#ÿ%¯ê£×°ö¯½¦?úë9lZ½.o°Kåõú{òUÆ´l³¡+›pi¤°ÖËB¤‹`as”¿fu'•,·$£Eð’èˆfŒHÇ’swF7öluš"q¡òÐv ÕÉKÖŠ(6€ÍÔ 8ëj3ÁÖ)¢@n ç1Àk/ØUJHcZ8T8KL2eFʹ¸“Å2ŸeZT@¤Žg¬F@djPBê’ž-Ϲ؛KL-Aêc!§*E¼+ó ×û‡yŽ•æZ].S1Nç„ÃÀx=Mx~ðü:âíÌx?%¼Î"^±Df8¦¾W†0ŒÂ9€ã=Džz‰ÆÞ1:+°b‡„Ýæ}ßÉ×Ĉ÷ý€oß_ðûów<ýõwìv`NiÂûÛ‡ÃÃù<Ǭ¯™:„DÃÚ± XÆH|³°–ê>­N,ÄZP›&­Wô,ªÕ{Ä:0e8&t½Ã¦ëë)×w¶[ô»-6»­l¼R^´õMêžÊyÔ&Î\wçä£Ä?ªˆh-|ßÃzÄ:ERA#Å ~'±ÉÞ‰¨AF3) ±Þû)ì܈V¾G&‚Az Ìˆ³*ÞH.ãiÀqÄ÷¯ßðþú†qp> (ýáA@­Ÿ±Ûmàû0Ê®°.‡ó€×—w|ýúïïïÔB(ãë+¬ïñé‡q·ÛÕ×í=Á8±]0?D`U§ÌÍIL×uUHÏÎÂPåG±³ààÐw–ïÐ{ƒÝ¶Ç¶@¾ï=ºÞÁy/̼┛&pÊš(ÇñðŽÓpP˜@ÉQ‡ó„ýþˆ··7ì÷{Ö¢²å@+SäâìºQD%’vTbit*‘Ñâ%½¼ÛhÔ]Ú{(ž‘óŒg`:ÀÄ7˜ô KÈL0&K+_Ê ,¥Ž,,9XÛÁ_[yJ3írƒ6?è3²6ÌRÔ2Ûz¨af„Ó‹©“2Ètnk8îuÝT˜*)Ûƒ&¯6N"úer‘t£´ŽÙ”Œj§fVrfQŒ—ÍÕ¥º{ûߌázVš'ô ÆÇ‡‰Â8¬`sÊÎÜDVÊ^¢¸kóÂ1ÔÖ–s¦U¦Î­M15¯©-¡âøb-Ø1¤×ië!U§ÛGüªÙ1€%:\Ý^Ë×{ùu/c·\cW°X³lʪ‡²²÷[å\‹(s¨@‡Û˜áÿ)PÜ¥ó%sáf$ÄXæi¬˜Ô}H&k,ž©°Ræ‹­0¤H£:Æ1²²ËØQB:˜¦ðþ¯Hpp[ û{t~ ~´ê}EN# Et^0fÌÏ%ýùˆ±ŠÔhQíÁ£uM™‹?#%yÁmMI›Q™™¢Í~tk»æÀ2å3‹ ãpÄ4Ed&¸·w ûwL§#úÞÀÆ3Æóq:#G‰Dt .®È²î–×S+ç­€ÆH̰ßxtÖát:À»8œ-^³Æ^Š3Ä4)‰|9h^yÿËõP_‹7Øl6â&®¥‚:¡—ε¡{û÷õß•ÏI]®ÖZìv;|úô©6êuz/ÇÚ†]ÜQ¤n˜Â }||¬Ï¾aDì:uÎÛz`–{KÜà‚q0º‰²&Sž™ÉÍOšê(níK^Ýr ¸ sçæý]ø¢Mbf)§*D‰†›ðtV—nÁ>R=,—¡Ì%ð£â€µØà✛“‚ÚM=/fS£…-Žfñ¬Sž“¡–µ\µ¹òå$2(Ï0ç¤ÍÙ༷V™¹…ϵ)4‚±qÀ¦w¸ßmD¼ºÛáîn‹]çÑûYˆ¾äAµN2\ðZ„cÉHÌ9EÜÐ"²7C¾ÝÕyzá4ºqV¿<{¯þÙ CÊÚ9ý2Õþóú9}½É÷R8›øPc¸äs]7tÚ?Ôn¹ÛÁEÛ6x)‚­ƒÖ®éKW‰ ÞÒI.!íe?ûÑ~†5ÓK[7óÕ Ç¼a–X”æ43ã&A_˜?†Ö}¤ê}-{1ý¡Ëk­ES½7 IDATðo™v\^@7IþíÞlhå"]f>[u13W§Huœ)8ÒÞ€¨^ÔS¨É•|²ŒxRf˜\6ˆ"LåzúÕ.ꂹ4Áˆ‹¢o“æÍIœXYÒ¤'ã½ä¸C™‚Ëd¸cÀÁ€S„S 1ƒ`Y¸?Ÿ xë”G&•ÕÈ )Ö’÷ý<%‰w±Á2l&x—Ʊ³]óÞÎ)¥“ƒ?¬Ä cV&ŠNí˜2™Xbu²Í›œÐ(ØúÀ°¼ |.uæÕY¥î„âqL r¨ý2Rç,¼­·!âåñü:àëëÏû ‡3ã02ŽãˆŒ¹%².0¬“&XÎÂ’@B$Ö2 ƒ‚ÄS8ãqüÝÏ=þî—?áó§/àì°ßñýå/o#-N‡#^ÞNèv[ìîz±ÂˆapÏ"êYcfŒ1˜k¦z½{ïÓá®y@ÕTcç »i!ï~!è¶÷a;…!›zç±ÝöØ*Çêîî]çðéé›ÝÛ;q…p>Ÿq>ŸÌ™ã8UÐ{uÁùF¸"2¢ »Æ ×(§ wÕñã7=îî«ã"„Pã³µy'%`ØÍPSÖ»buÖÃ]J±n¨Ä…£nÊ=ŒŒéxÆáå ïß_p8£‡»¿üò ~úé'iÜzøN­wèûÃþ€óiÄ~ÄûÛÇã€Óé¬Ú N7·ÎIëÇK²é™E+®¹ûc“B+lº…;—+ãC¢ 67„g26!ž8zŒƒƒ£$6^„lã-Ø02 ÓÎ~'¤p4rBÀÎON§¦óI„!"ÄpŽx}yÁþMâ±9‹ëŽ`È1!žNò:/ñÄfÒh½S T–ÆžÂË“H­lÖœ!J°yñŠlÜÆ78;ÀÛ«B%#í¢°0ðâü€‡5~¬8›ÊÿÛ^îTcþ²îæâàc«±J]ãmº,“p̨,%®¼áa%Ê 2=Œé+ln`•v Sþž²B”‘²ª¼Må2zÀI­/¦²Ž.¸Fh\Y†öQÎÅ-sÁ¤(‚ŒmA„|WŸO4ÇÙJå«aRyÖÏNÛ2p3å[Ï•ÃhÉnQqT2 Y¸ª¢VeF™ù9s5 µUüY¢™‹öÅ^«<¾Ò²z>ŠÀZø0í„T6楘ƒ.Ä+³hd¼µAm]1¥yw>àbñY-fíHQþ|ФC 4l¯ÙÝV³šTƒFÙ`%™ –A§)…¬ãª‰"\fÜ«äxÚãôþ¤daáv î¶Ûaó ëp|ų8”13lò¼‹˜‘¼zÏSSú‘·›¬¼æj@\åëóeÜî£Zöö ’“´ˆ²aä˜ãaHý4pÞ¿ÍŸ$®áF¤a[ËÐÂõžû\÷xÛíƘZª2M@„Íf[…£×Wià‹œÅuíœ0¬PRGL#œ6?Ë•kÊ©¨B¢Ûg™a`iºÝl6uï3–oŸw´z ¼¡£õØQ. ú^P›RÄûëÛÂýl*GƒS)"aãááa å×gkMç`K3r–&Ôiаda,ƒU…\+˦2•V3fXW«ä—–ÔÚŒZ]»æâ _\òT…ÇV@)ûÎKö°4æEKZÖrÎKi{–j›ÅE"šyë5+gPn>{×BE XB³ÞC¡ýTŸ†ÚÇ\$3;‰Y˼d€ŸS¬ÃgÞxoš’'/N-[¶Ì“ˆWÄØtÀ]ïðp¿Åý]ûíN‰]'_ãbðZ“'\®Ïyÿn¸'½fmβÿ/?Oe/_æ—ú@yoÊurSäXÑn9‡nék¢ÌGmƒk.ª[Ï·¶•o-.xK#i_·1×%rWM«7t50ü-½c­‰q-Øj3ÕcÎ\cÇkâ^I§0]·Ê^þ>¾ø®þ…/k ÚÎ[œ«ï]Süøƒ0ðGlª[®¦ÿ?.©Ë¬æßšM½´í±¡c‰ëS2úÃV¥Kã%“šŒjÉ\³W¢´ß¡ºƒRñÊÈHS„%Ís;ƒQpI IswÀ‘ÕÞW³ãNÞÙà9vHɨxeeñ̬ aYÈK$Çñ† ¬ñê<Ñv”D„c’ uò2˜\NuÀC`=¨5Ûù϶ÆÀ‚áM†E„£ÇÐç ÎDm&Ñ$þ)»x~0ydm:¥2­b£÷ )k%{šŸ»†@噞H£ËZM`ã‘Ä",žÞHùDŒR:<Õâ’ÔÁv[³ƒu÷ Óéµ2obe’›4®™U´Šºž%pŽ9AçÐÔZÓÌ{#›X |ÕvXÄëøZí:1tq¬hc^ˆQ³ ‚&~f4C¾«ØÄ·§§·Ü×퇊{ƒHZÅ‘Â3¥Æ 4žV7–k÷öB—킸ɽŒÎ_:Ïy¥­0×Zûþþ1 äD¿v˜ß;y?¤AIö.1”Ã*-8\õÑ_♕'5½ –muQ­ÔÌ0$l犋VHû‘÷Î#"w`³…µw`ۃͮïñh?ãìçý38)àæ °2µoVå ^þZ õÐÀIpæšÿD¼òþñº˜Õ®Õfe ]žaQyA¦ØÖsFNRÊÓ„é´Ç¤VôfáÔÍ-â¹Æü[ q)púá‡ÐuB^áóó3˜?ýò3þüó/¸¿ßáùùÿüÏÿŒ—×gìîïÐ{aÐ÷}u榔ÄÝÚ\ó—gºq¯¶‡tyþËëÎå›]_,Ê‚¬­ +_‹þàürë~¾”IZ'§÷^Û"O§“zSÀñx¬:4nQ‰RÝOc°Ûíº¡<K”°|>1F$=£dÈó$ ¦TW$«Æ<'xÊ>fáȹծƗë _‹Åu« ®Æn³FêyææqqXñ̘Ìt½Ž6XµE›à57ío7h´m€‹ˆ8IÉH벜˜iõ3¯Õ©(¾„“s%šXx8/nnï\§n{K[_Ò¶Á †#œetxºëq·ëñô°Ån#øÞ{8+ç 41å”R=¯H,pf†–!³ìÁkÌM1i-æ·*NñÇ1ù–µ®OÜNT]â‘.Ïü%mt뙿¶¾¬ŠÙD«ÚÊEý[¡h­‘/âákñÆK·íå³u-ž~i"ºüþ­›ë#æÛBG!\9ðVÙÍÏ“s†KIØ5Ù”à¿dŽ+4Üüœ½Y$É’¥wDTÕÌ·ˆŒÌ¬º{Øàl’àÉÿÿÌ$AäÌ4š}·ª\bs73U>ˆ¨Úî‘wx…ꪌŠðp7SS=rÎw*PÙ¿¡gáí8zú#çÓ5EòZäpié[Æÿšp²ÉøoËs¯Yo J+Kî;¯ûÚsëC¯T«?—¹:üF&¶ýóæ½Ë¾— u"ç<â6*ôu6uØÞTø`“¨¢ä‚+£hñ˜ £pj•¬™ ”EK#W´){„Ï/Ø´ k yR1“%ˆ æ( @ê‚”M×i1õŽÈÅ\ ›ÑX7æ†A@Vëh5™¯—Ò¦yÛ®ë“M>‚½¾\tn1™Å¸Å£‘Õ™(•Ußo;,Ö­:áU.ÖÐ6ˆ,YãTp'¼fÂÓEðý5ãé’ñ<œ3c,Œs½XMî‚©V+uá›gr`»=ŠnT‘¦‚?ü üÿú÷øoþù'Ü}$ìаû€q øéw÷È2aþ ßž2GdX»¨Â&¦E¦–¹¦œ-‚@äb™ O€RY½Q&À›3Ù]!õŽ µuEæI–Ðòïüƹ\B­`×õÈcÂxЧˆœ3~óÛŸ°ë"J™0 j kÞ#¥„NÎg»÷^__ñøí O/0GìPc73g–S˜  à\+¢&zfLÈƒÅØ¦i2È2Jt`½‹€bJs¼TÄùjoPµ®Úž7˜¯g›óm@ aÑØ¸`ŸXLæÜ\´ëQbTWŒÍ³uxóôº8¥´4–­^ë:z;?Ñê°9‹=Ôžs¥ý‚åõ‘[þÒÛ½×Ûøâ2va&žã…ÒôpkVÍ:¿öÅΩråkÃàŠ _Ÿ‘ì"%›èêqîjÚ %s.JA!!c¸|Á;@#âA@Ô#t=vz‡>àþÇ&¾Üw ÃdŽïö÷ßüô §Ó Ÿ~úŒËxƘ™ƒÅöw»s.Éœ[EÑ/]ðŒØã›Ø°id!*ÛjbÄñpÀñxÄÇÏøé§Ÿp¾ï›ëíaÚ‡<­Ë\ÿ&ÖVT|{Ìxr1ªßïqº¿ÇàB0!ÿnQpw^ͨÎÅ9DH‰q<ñéÓ'À/¿ü‚ËeŽ#9ûQ'"­…ð2ŽèÄ…¿ç-¡@ fͼ?­Ñ¹zÄã›u9ý—èj±Ö®*sõHâÔƒ`v[‰¨1®0Ú·ñõYdÁœâUÔüæ™w1H÷Z‘³+0­„ýzÝÕ÷…šC™6­{sË!×þ]_`DRGè<2˜BlC¶vöÔÁDV˜ bP$&ö»žñÓÃÜí;œv;¤ÈŽ4 ¨”œm/§Ùܪ~NÉÄ«]2§Vò}iŒs¯ÈüìÀ•³ýVÀºvÐ+¦“[ ×öÕ·KË{ä=QéªþwüN$î=ëšIæZDåX×¢‘·ß¿ÆÅ¯i"ÛVÀ%B`Ù|-JX÷KÂRÔª1eûÿÅÛI×¥sËàÖ¹……¾QK jyÆìJŽ“ҹݥò÷˜ÜÎH»SA©×@æ×,dzrü~Fô róð½8cæUy+Hݲûݺ@®¶ƒ\aj]°¶7YýoRŒo×\_ôƒ÷ç=ÚÛi¤Øä-\¢PÍ~õÊÕ’gÁZÍj£Ù6¿´CC,Ý<ä†etÀ˜a€E1™M\͉YÍ,ÄŠ  ‹5²hÖÐ" ’€\Ю;³0“m „qvå»mŠ(l‡ãíT$xtR A4€Cš›/Q0•ÜÄ+c‹æñ¢B¹M@¶…²ˆ´¨ XØ§š˜£¹†ØoâUQ`Ê‚KV ™ðr)x¾d¼‚Ë SAñØ¢ø!•+?‹f›†¨ †@BFq. ¼»ü³ß|Æ¿üûßàóC‡¸Ïøô»î?˜Ò?~Å¿ú¯ÿߟF<ÿû?áõ2a‹ùp¢ö™šÉÅêÇEÄšÐê4Õ7&¤„âµ»‚è ” ž²:>ÖöÆàÃRãËTÛÃ|úŒÜV7š$ŠI ¢sú.úºQJÆÅ”‡Æ:²¤‚wRoq8°}ŸóËßžðåË ãØ¦…U‹¥þðOŒä,¤R[v `í¦`°íQ¤­KÂ[g&;'Ê[+E¤¹ëp mTjMµO“RJòä•Öƒ1X ÐÀØŽØèSÀýý=~óÛß"íwàhå1F0E«~ž//g<>>ã¯ù¿üòÏO¯v½…`2è8‡FX­î¦ OUô* îíÕtv½Ö‰J^OµdžèŠdÄPë”ëÁ’PHÑFàÓXœ‰Ý Gó3Eo¿~ƒªbgµ½¸;-¯¦GTÙ!6¨óy0ŽSÎk׋!„Y”^À6K)˜¤ @\ÛEý>˜ÝM  ¨($*  @8 P*Þù°hrjʆB‰=^1J ¢ìíAÚ!h“Îx”æÖ©q o©˜-Ý D¦’‘¢UµŒ/˜.ß¡ò èP±©A¼ƒòÌ{„tÇJé¡ý’k«6Ô‘»É€lB»ÈT H'›-"<Ú{iO€ÑT©·¨Ûš0»°Èö3¨®ÉìÃÅê. i¬Ì‘Å×l^k~ˆ0xÏenÑbm"À …×»˜£v 1†Þº¦®íwr.+Áê=fy´}ÉžYŠHU,[¶š#Y×÷Z[ëêCÐi2ÄoÞ×”b›ÚÎ1ù·?w%k áB l¡ ÞZ£˜c–è†Êµ\ ‘ì@P°H–s9!tæÂWE‘ì¸ Õö¡}4æÊŠ<á<~Çå™0N‚ûÝ©O˜¨@©(aÄ J;×SmwÉŒyÍsõa\å4¾gY9~7¨ UyÃpù[صÛ¿-^><õkX@ZÌÁ.ÉT; Z϶$¶b‰R¦æ&SZ'Gˆ¾~ýŠœ3N§“ýî]‡‡‡C0áÐwøðáv»ÁÆUóšËgŽ¥Ê»ç˜ymíi‘Œwõðð€ïñùóg|úôww'¤]B¿7K±u-¬K$ôtËÕ:ôæÀ}uvò(æñx4ñPã86GÖ¶YR7‹¬¨äþþÌÜJt^__;«ë:ßXksñˆ¦H@ç¼ÚH–˜¨ëC- XŠèºq×¶×E›¸Ô›÷f.RÚ4Ðé,<–¢Mô¥Õç!~ÎÎBæv͹ŷjLfüøžyOà²ü3á’á¬a1  êqþgm[”MŒlîô® è"[ K¨µ3sm+&µ˜hv}‡ûSӱǧûö»».Ú3ZªØ^‰ð´¢“ûý‡]çëT@Ól ðÒ,a+ÒÙžõ¯µè]s`-£µ[ÉV|ßFã®ñü¶pöåû_ãÚ·€ï·4‡÷Jíþ'VR,]¸Û5{½Þ4ÆÞÒPê×,j×~·-¤~ûúVqr‘Õ>£>£ÖŸÝ|Öl5rÄQ na&`ŒTrãw„hpT_ŠA‰|ŒÐ"W-d·„©÷þ·üÛúÙâŽó¨oVs8ÜPOß{_³&^»·êäòb‘Õ´åÚÅ[07ù½çö’kêk†@0BBñzõ¹™f ÛBçß³ØMg›ò={;U¥—LY¼ºTgÁË © šmD"îl*#8Û4¥ÄøÌ=R î` à ‹…C¡¸¡Þ^ÇuB@±CôÍ­5 ¦É·s“ŒÕ%ç¬ÍÕÄ©ú@6c,¨µÙ†ÓìZ‡;˜lòÊÞlãâÁ4 L£5g„€a°ßï‘¥˜¡æ€±ŒB²zèœ3º˜L´ª@RÆqĤŠË0â|éñ|Éx>Ox ¦"˜Šµß<ª¦e5ÙnjÎEúÎ 3B2—NDÀ!&<ì2þî¿Áï~ûžq¸ß)C÷ÿâïÿ%†aÄ÷o¯¸;Fì:Â¥Ê豪Hn­.F_f›\mbêBÆ=™ÛM·÷“Ÿ%§rÝ P9{8½´MWÐj€-pàÎ@!ì}ê`Nc^MØI1Øe4'G‹Ç}ÿþ¿þåW|ùò9gd5{|ì×¥²â´?@Ù®óÝÎ!í»äSË„#"‡ÖVÝAhvw+ˆ!aï¬ É-üyš yÞ(J)-Ê÷:ŒÀ0"—‚I”:ä± ДÊÔ6Øîïz‹ `¶muß@)xz~ÂëË_ùŠR!vxøô ¯/Œãˆ§ïß,ÞX]Nµ>œj ¹"™ÞdÚ>mß Z¢r[äN%›¸BNñc ©‹{bq³˜jÓŒ ¾ãÄe0œ/@fãûã7œÏgspy5=àpB‚˜€<] ù t$|û³âLJ¢„¬]‚Có„ñòŒâƒ¦ó†à<';d×â“:¨…µ#xìN1Í€óRØšçÈýœmû×{Q‘åp¶NîcŠíy  *WÕ„àœÇæ`É9[3œ‹Ð¤6,""œÏg„là¾ï8-¸`àÛ·oøõ×_ñûßÿigqÁR BŸðíñ;úÔáÓ§O¸¼^p¹ H©G.¹±«P›Õ3œ|hKH1ùØØ‡>Üp:ðá‡ÜßßaÚãxÄñxt¦6ÍäɇÚbÈ‹ZUõö`ãFÑÕÃe+uQÙ Cf‡Bc@©.qL8ÞÝ#võy÷Œ»óOOOxyy±2’˜0œ/ˆ]Âe´"ŠãñˆÓááåþƒ ³ÅËd×\ ÅÃtAÅ8eg¸19OY€afQÁ[ã–ìœk s\E|Ù± %Ûï®-™²1ˆ4~sö3L©¹?6Xmf¯yÁ²]›Vz-³‰¸/t¼À'æ†Xõööú¨ÏŸÙjÏ`s£V÷Ú¼'‘7¥+¢¿G´VÕˆC„¨6Ts“ïú)vÝ<䊬¡¹ 8”Ñ¥ˆÓ¡ÃétÀé¸Ãñ±K ]"¤@ê¦ô’Q+¸©™œà ÐÎÅÿ.uÖ’ìn2‹¿®-IÄÞÐ| ´l¼C¿& mÏ~[ak.ÙFì¶Ž«­¸sí{Ösç-ýcšòU7Ø"þËæÙk¸¡¥À÷žá¥bL® *¶-¶×\jÛ×·tWUW}Ÿìœ} Ç«8àü½×:ó\Ò±ä#Ï_C+ÓÔö9¡l­+®h‹5™à±Bkj  DðV¾tÛÂñŸó¿•ó銒¸­ÂÝZKÿVEüÐòVœp›Ñ¿io\¾×D¡äþ­‚|Ë…e_ßÜ´õWÔsê*MÈá ¬"¾ð*zëŠmú˜¢o4<çíĤŠ©ÁtU…mjE0…‚0B”=aQÆÀÔ˜BÆÙbR! l^_寬mñ=öS“RÓÕjË;˜pHmª‰Ûä$„…c™iîÎnYýN¼Ì ›³‚W@ÇêU%/70GÝÀöY0ä‚aR SÆ8)¦ì€IAuÆÞ’•€Û®}µ†ÃÄ eœ !c·8èCDŸG)8Ä‚Ó.áçÏŸ ‘0è+Ò>àóOwHbˆØí"vûˆ®g𫉋7œ,öåEŒEÞ™2É"RsåÞ^lÀ¶ m"`3à/ïUŸÞ3¦Átö“ IDATlbBÎ#”€]gÂVÀ •!bÀÙóó ¾ý†ï_¿áÛ—¯˜¦ Y&LRœñäMG»Ö:T7×}×!FFŸ:ÄÚŸYÞ?@û’ î>Üã°ß£ßíû΢|s‘;ƒDwi,:\.—ö³Äl“oäÏç3.Ó„îº@Ø#±Á\Óa‡n×#ôÉïYž£g] .èí°ß+¦¨ô»³µùÉ™FÄ."vi5˜fÚ"ޭ几E›Xeb"±Ç£LØ6ŸS6…ØšUëC0ŒR0ºv~yÅëë+ž¾>6Ž3Úû_¡´s£da ^^/.E,b;–™µ (˜+¬9Ö)k„P™ëí)Ã#s¥9€HŒ+IZ´  @Xìý›z]ˆ‹ @v½ p!hfä!áöÂî‘ô=8J\›†BqA dï©VKJi);„¨@)ÈyÄ”Gh6WXd¸‹¬‡#8Ý#„;(ï¡è<:í¹¶„o*cÓ“îšc±ƒ«è½ãQ­1ÌbL,d(‹ pÈæüå‚ ƒT§ÑbHæU™Km‹jâQ›¬«óüêÚO À;7;>¨*2k‹ý,>m7³xÃÑÚrQ®Ô–y]õ³˜YDÎzÃZ™c@ÛXàíMí–-ó·¯ïŸªèÇ+NK{ $µ+« hJ³ÃÈœO·¡×Õ-ОǛ×_…«Üš<ÚÆŸ¯æøe UdÊÑ„‹_½P ÁœA.îi1ñ® ÅÍD NŠT€” ’œâ&!àõé{h÷1Üio÷92bp×rÛgˆ® ÿÛ×rC_‡¹öžDÀãl°šx‚•MˆÜSJo Û=ê¶kår¨!²çµhnÃP4QXìÏ«l^QÍÙ/Èy )M¸™¦ l³ß[‹p}öív;œÏg>~ü"2õ0ÌÃmwKWç°íÕMà"Ù²Žü} ØJdú¾o?ûtØát:áþtÄápÀéî€ÓéˆãqýÞ`ò6èYsç¶´ë‡ÜmDðf, ·Ëª–ýåuÒuîïï­UØ`£Q×µº¿šKqæë >~ü8s¯JÁ0L+ŒCuª(JLð{m¬¦·Vn‘ÄaòÆ9²åó̰õ™[ž©ØUö¼Í",­í›`¯OÝ¡[ÍíyвKÿ¿¨õ1±JÑØ½!k§ÖêZ¬ÛæY¢Õº<ë×åðçfÉ£ñ2ï51ì:F—ìÙHZ .Üj1NV„ž]"ì÷ w÷|üp4¦[ïÍï’릿±÷lXlŸQï–ÄŒ“AÚ»à¥F˜]Ò4?ËTgqZŒp+\-;Ë3ï{ÅnÛkéÚ¹|ë0ª÷IJ}+zÝbImÍ2· ð﹟·Æ•¥Àt-yíù~˳}ÝoØS¸Ý‚x­¥ñ½×°v~ñ›äÙõ$œþÀAž¯Æ*ëg‹þÉÕ^õÅ(ò\ჵ¶‘’oÐç–ÂõjØ[Šà-ëÜ{ µªLo?ìíƒáo…§¿÷†]ssm­sˤÔÉ”ïDoÞ«²O› £Ð\~˳ÚX½Y°‰ckÛ¿ˆmâ‹è‚“ajyq ¾’Y8‹ƦbqŒ¬Ò §DÒ ±¡>ØZ£Øêv\Ú62Uöꔄ[s‡ˆ#bêÌå£j_l³•E§‚Ý.µ×®žA(“´f¾å i±#{Ó™½Š£¹@æ‘ È-|‰g¦Bý€j”ê,ªGбäæêb‹&(o(©V[¦¶O«¸1%¬.ã¼¹š+Ï×ãï9\Tìmö :ḠxøtÂý݇®CŸ88°O ¿ýF~ÅÇßý„?üî7¸L6¬î—•X»`»ØC“g¾K{Ïeu¨šY) VÍ›{\›¨Ò¾õ"›3ÿø9zH‹'+ƒ=º”s¶f¼šq8_ðøø úŒ¦â€Ù¡`ÃyÄ÷¯ß0¼ž1^^q>¿ø[,F•7çå Ã¥k×U×uÍyE*µŒ)%ìv¶éíSgq‚]ÂéþÎ'ŒÜ6ÕóÁ*¢d5°¼(¦,ÆŒñ2Xy˜V“£, /•íàl"¶©(G‹>r Ðhѯ"bJàP²XlnÈ(YÐu;ì@H=rR:c, ’GäÑ܇»Ãýî€flÎ#PŒyWT !äE˵Òóú2o 1"0!zc$r·MFž¨d²S©– ÓpÁ8 È9c.x}zÆóó3žŸž0¼ž¡ª8÷@ˆd¿MT©‡„±¼¼xz¹à2da€;@GÏ<Š«hå$`Ç,–&„ˆ·Vú”L‹Çê„ÊX]B#ŠX[¨"£@PXPØØˆgs]ÔwûO"¦¼'D¾Ç˜>"ÒG¹C/{$Uo+Tpo¶6G&• hé‚ 8`Õb’Es@) ˆ‰V`B bºCGÄøŠ=²Úp^pB¬XÙ€â1·¨G€¢4z¶º£FÑy€¹D¤ l›[ñ8¼ýß;™'c ±¼ÙÜÔ ³.žâ¹xîócšÙY…šà—Bj…!ÜÝÝYºÀÿ[‘gn©'¢ ³‹—Èþœó8™•É¢ut‰9agãT–Þâ½q¡ !øóÐÖ •¹%P¨Ø^†@ÉRl?ëqp†=§m`Ïóš±Ù‡Êµ~«JÕæ‡™oÕ+š±ÚœWŒ@†_+ ï;t5tÏÍ—Ëjv:n¢^#õœß†ÌnË€¼&˜l![{Ø >n™Gni·„±[©¯÷Ę[.²­€¶ŽüËæ·a‚aŽÐ_3Ø”RVæ eâˆZç{¬°mŠn9Ø"âµñã†@ÖRm çÕRh_>§EÙK"Á#.E›Ü†j­/‚ ÔLY¡AÁ­ehýÆÞ"Í·f¢äµ–€q#Þ{\»PÞ©–_­-BðªüµÿÇü€Øwe"³®ƒÝÔp.Þê¸Îãj¥¯½Å¡í¢~#²×ÜxÑzøôƒX[˜íâ °²×¢+Äsþ™!r_{$†Šæh¡`-Z Ptˆ¼[û•¡vkü§©¿g/ø1heï°5^ùäžñòtÁóÓÓT|jÐ 2™[d1U_»üŠÇ2Þ6.­¢·˜ óŸ¹0«kwɈÑÕ!ryÚ{›5ƒè%6ëö—/¿àßýÿ'þÇÿùÂÇŸ>#Ĉ®ëñúø„¿üú ¾~ýŠ¿üéOx||Ä“ƒ¿‡É§”~í‹LY}·؆Œy#’Oov]gVßcwØãÇ;\.„‘E:»È+Œ§!71h ç3Î/¯¾ITœ_^Ú1ƒ|ýþvv›¤ê@`¦2·IQœÏƒmè/ÖüF!awHX,1$b— e€fãTõ}Ãá€LÜ(PcœUwMq@+I›¼×Êê"“É·j ¤‚±-r :YlP²ÙÕ§ &™ eB™2†Ë+./¯ÞŽ4âõù//O5s˼9¹ÿÆU (Æ©àuœ0NŠB ÄLÅ6Ý"€š°XW›ˆY°5 ¶˜×(­™JÔÛ§æk|,Ùöª ”°œ;ŠFú}©)žÔÅŽ| ?Aù'ˆþ ”{`Ü!¢Gç›ß ±Øæ9¹ºh¾€PD@0gU`[?#èĘ:va2FÄthÑDŒ¦T[iá±¶9âÑZ¾t)r„tQ4RAõø¹àÃW€5 øû¦0¸u5ÇÚÈļ&"OoøÕm…y’¸ÂÑ-ÊÐxC¡#dáVÜì9”07ù:‡êJÌ®‚ÆëíTmƒÉkÇ3ì¨5ßjɽZFûßæ}^ct®7ûoãÛ·„«¥x5¯Áó>¸6óêçT'9ÓqŽiw¸å›¬™íïÛ8o‹¦²²b^aÑ\¼Ëßa¹ã—Yc²äy=ØîWK]¨¿EÝM !t bÄA0”32¾ƒÇ¿‚Bo<9 `î ]„°T“ÿ~Üø+×9&KôÄ–™£˜Û –Ž-Z´Ë(Èr@ò^Œð-§Ë©¥ XeÑF&¾r~&ñ –o&8G’puj-„Â@l­¸5"ùúúÚ~öüþƒ‘ÃòþáðôôÔÝn‡——f íYTï%4¿~~»Ý÷÷÷xøð øøép:£ëÍeÝFL]zåGŽˆ[.;(ê"ï%U®¡PØ÷§Ó —p>ŸQ¦Éögo––„E) ˆ°ßïÁÌí=©N‚©z3u;kxÛ_±X¸¶uXÖB?9—ŠŽÝíõW¼¼ª]ku\^¯?mMj®h8¤=Š ‹Ö°™­µ|;…Þ†¯ò¯­ãô†-¸.Mظ«xën„ßß Fe7Õ½~!ºÐÖÚ*º‘>±Û£9®˜L@ ŠÄŠiÍÐRØ Cö}‡û»~~Øát8`è}° 0)ò4bÇW.E›€P]í] ØEB×%ô±ƒ¢‹Æ‚Uç\ÖAuuâ¾58P[—ê¿oî¬+zÁ¶L­ XËûn¹XŠ&Ûµ¥þ¬6Œ^ˆnõþÙ¾–ÿ\Ì{bÕ6²øæ¬¿ÝÞã^‹7Þâ’ßÚÜJ™]û ®½ß·oïqÀ®µ;6Π¿x4j+ÝŽ«Z•bÏØŠ@dB Ug{.[o[Ùª°—–ŠÛ{ÓåE"7Z¶ ÿÖòvM\æJ$rÉ]¾òêЪq¶euø¶ua;UÌ*o -¾!‹ÆB™!¾Òn&j2;pjsÔÂd·¯“5ÅØ! à8»ª(˜€¥ ®(ü|ÀÐQ~49úÇ"€ÆÉ°äшÎî ›ß»6µvŽC$nÿlŸ§¹PÈ£_äçJõ€ï‘Ï(ÜÞ™SÌ&âîc‡Ýžñùã û´G~éñü«`x}Á¿û¿þN÷wø¯þÕ &àñOüò×ï˜^¯ÏŠó`ì±:tÎ(¹Ì\e•ßhÎW+¶çXÎòÚçÍBfb¸À#M‹kº‰îÊ[ Î5û¿Õªó¯” e È|ûòψñ/þõ¿Âo~÷[h¾þúþÇ?âññ_ñýñ+^//˜Êˆ¬âÿEyR(ÏQÆíZÆû¶Úàˆƒ·ív=¦’ÑuÎ/VGÝ—‚ýñàn¼€]·Ç ™.Y‘‡ŒóËOO/˜.Ö̦Eš@Ê^5NÎi3ÈøÜšGlPV–b“9BÈ(Y1Mö`~y>7 k•BÁŒÐ/…$DºÉ#b0wctÈn·CŠ=^‹õg‹WûÍ&™9%£HÙÜ1bÐVN 2Zv^äSÂ1O˜†3Î/Ϙ†—×W\^Ï&4ÆóÓ4@QpØíZt°Æ<9†¶ÑÌñ8(¢ëUîß„"Œ"˜#$í<×û$+Šçš¥‡ˆ,QŒ¹x‚¼½WEm]Ó<ó+hvëK¬ÍÝh±XEå;„ôê ÄŸ1ÅŸ ñ'>¢PÖ-ÙÖ µÂ ‹Û;„ž Xv&\AÁ$ZÜái@§ $"ˆîhÀ.™¸°·®PÝvøª8Ù5“e6‘Êb"WùŹ&º VN“ö5V#‘±iDc«T-6¡×É8d˜™#êbimç©mÕyÕ¢ûü£ÍàÒóov"]™ ×­;×Ö7ì©&^¹è9ÇfäÀÖýTcëõy1s&°¼êû¾ýçCÒÖuu}Àw}0¹Ž js¢‘ÿl¢ë“æ(rv˜”Y\ZµpUá¸`#`-y6Ö:øæÉõýDãá¬^;a…¸°¶?ãwÖg’æÜ€â×ZšJ9ç Á¯Yòujå ¢¸LŒúš{`b‹øöŸP(Aû¾µš–’‘}ˆp;úR°> )ëb¯<ï­­5Ø´j >|{ï@t-ÝP~öì•Õ„ÝöBÆ"ÌŒ°P‡”<»TÚHyu0©ò2e¼>¿´{£ò¾†ó///øõ×_±û÷ÿ7^_Ÿñòò²º.§±`^0 £ïå¼ýu@O5¶5;F+mÙïŽ8ÝßáÃÇœîîqº»Ãét²ûÎTìÍq ìXPç×-ZׇWÚÜ‹ú¶òÆa² ß;$/øvºšBÂ~ć£9ür6Çÿ4óÓ9jösË¢5 ‰RÂÝñdî¦ö×3F½Bm° o^)( 0,’X#£æªÐV䱌lby–i œÁX •»¿TTˆru:U¨D³,“¾þÒ[7éM×D«õ!ŒxŽöÀcÆu(o{D&õÊÙqeeQkÇ(×g…®©™TÜ‚“Nbd/¶RtH èbe[Ú'yKSA°lìw»]Âé¸ÇÃý§>átLØõ;_;lˆÈDH1Z˨ª{ý]|ŽŒ®‹Øw ‘»Î˜jEmW‡ŠcòÕgÿò¼m&ƒàÛe9ZYA¼—÷K=‹ªÎ±ÿk"Ñ­{h)¬"ö–M%›b¸÷†B?rªþ¨¹p‰ºør+–¼uk]ãþèµ_Ðn‰O[}Αv^y+Fz‰—ÏŽñU‰AãÌÍk!3#.75ÆûY¾£²Ç%Š.¾ëͨàµjËk‡Ý[£«»Â+tàð&Kz+øÞ‡°|½«F çá\ce]c_½Í•êM•t{/§Ç¬×·‹2ƒêÖôLù*#KkݽP›š•E­ðÌ)ªî*fFpçIbrä“zìOçÙ´Dh®ÉTfÀ,ñhƒ,^S£²˜X` _1#°_j‹¸°o¦Ý*´Mh p±Uêvi~[d°WžÄ§„³•*Dß›Š˜²fÄÐ#—q>@ÔÍ6É ÆXÕEæèg; ɬø«*X‘”MâðP’5¾ù!Ìö)ö ?ìñpLØï÷÷øý>át¸ÃørÁ÷Óßÿòÿéÿý†—óÿŽ¿þ:àóo°;%|{šðò$xzñú\'¯Ǽp·pËBy ¤ÖÈ×¹l·²Õ×\ Á]ˆì‡“Èli/#ïêá£-®ÁDwfcQ©*.— 4DL£ÝÛÿößüüÓ?ý~þùg|þü„§§'?5WZÌ¥6ŽÙùQ„Ý®Çñ´ÇáxDLvj­–€A!A˜JA vîwè'‹MÃJ p@›B.7"ÓTÀ4`RcƒÙÑc0±¹­Í³?2`†dVa† 3e«Ñ¤ÊòDP<‚ºî'HúŒ?BÒ$Ý£Ä$v `Í›Äêkáâo ì«h ÖPv&W@B´(®xBOŠAû¬ˆ\0dA Œž º èRAàbâ•sj­Óô†¹d¢Ï5BYM°õ*SÏÛÆ ož ’ ðîbXE Ôp)@¥ …B°?;_Ê€£´Ëci·M“P‹«‰À5.ÈˇùµCÐVd©B…Í?Ó5>Ö-gùdü­[€h+hé*r±u6½)w¢ëî‘7›U^…¼ Óo¦ÏÚ©ú9“¯û³ûl;…ÞºÓµq¿¤ÔK7ï-Ú¥2«dÍŸBUÈsÑlô°ÂIJûwíûËöYgky4MÕ^¯·¨v©`Ì@WÐ’‘'äHPþì%þÞ:k¨¸¸ð]QË–{Ûy1ÐÆãí¥X¼kɨE:ÛÛv¿{KÄ2yi‹mtîЮ68VjŽ=Ñù\Pݵ`›FXŠgƒÇÉÕŸo&lÙ^kÍ]t¹ ðɹ˜a5„Š`XY! „ÔödÙ…{¿o¹ï±ëwˆµøG«ƒë- ù­Ã7‘&·”ïG§´ ­€`妃7;P8Þìw\.Lƒí5êgB0€ý‘snΔ”‡ÆÑ„°R è2bœJs:·;»yqæÓ朅7Ž×e>köךøº¼ÖŠVG {éÇ¢‘¢YБ¤64ÒÛl«ë®XüÐLñ–E& >•óEWŽ«†Ú!}ûÌçu¡-Y’­q°BííO¢W¥Îc,è£ó+ÒR (,Ø÷]"ìúˆÃ±ÃéÐáx<àît@DA×%p°â&‹‰ÊbX2;”*?8Dj˜ Ƀμ^gçgÁψt¥<Í]‹ëöÚ:t-Ò¼dì.ãï± ®¹Û5æ÷{e`Õæ¿Z‚vK3øÑ÷¿ÆÈÚ–ÅÕïM<û[ܘ?Ò7®9¯¶ç³[g¶7±Â7â”—v-Î![æ×4Õr5~Ã([Câi£‹ÌççZ0·òëïE¯€IT3—‚*#@¬–tPAò†R¬›_ü–B¸U÷~t±5Q'ðÕ‹¤n|–™Î¥ôžåïo±nÚoc xs´ÈÝX¿§Þ®˜Yr,¿´+­ž¬Ô×y:º§•ü¯ÎÐÆ`w€Õ {,^³$ɼB$Æ—bS5(ì :f¦b tþ3œ¼RD)ÓLR¯*Oã´DòDì€&ÞäÖ’$mÙ[‹"³»Ã˜ îHˆ³Žoœ‹’Áˆ–5Wg¬iíP2¦“¯Ùu™ È“qál-+S( æÎDL2ë¬O‚£ÁàÉšÇh.JàõƒxÜÕØŠƒÍYÐáxêpwÄî¸Ãîq¸?aÿñ„ÃéûO(é€þþwøúÇGüùËW|û_þ÷wÆ~ÿˆ__GüéOxz¼`kÂÞ©$©µÏ© •öç`±)Q]1{Àÿ¦e¤hí¬EvÁÊD,ìùÞäb¢"G-ƈ#êÛ9 ‚@¾I§lùð©\ðÿá?âÿøGŽGô½µ¾>¿â×o_1PÁe‘k–˼ž•ö0 ÈR«ÓKíÁ™ý/îP,lN>HÁ˜a4 ür1yyûÓ8"O‚óó+¾~ù†/¿þН¿üŠo_¾â|>›»Éÿ—RjüuÄѧdq“  Œ&º”©Ã4œù⛽ôZò<¡š;ò[Û$ÔùÆÜâ”R×Y :Øy"$ë,pêŒk&"ŸŽÖiª9_Ô…vø d<"%AV‹²ÕÚï§§'LçW¼<=c<&’eµîº§ûî?ìÐï"úÝ!’_‹¥Ác³LYMœUEêöè©Å6ûÝ€’ÇE ®¶Zmœ†làüd-Ã0!äˆi ÕÍåeUø–ÆÒr¥ TIZ Ä&°)ƒ•=>-²ÎB¸¥húêîAáèïÝ”ÐÈИ," @†ªâŸò8€á„kÍ^þ0™Û Q:ö`$z%ìDqFF¢ öØ eK"­V³pmÃf# IDATukOò·Ãç×…´àaH®“rÕ9æÐê5™aÄÁæ~®üŒåçI‹¿«7 V6ÐZl-Š´Œêê÷«µÜ(ÒÜ~*ev‚)5'CeîßZ®¸#¯|¨2š|Y# ù©°ü K¯ÅL3 >„КËêRDÌñä??T¦—;‡ª“˜ê>Ž,Beàñ⃂’3oì`]DúHmÑây}yyAH ¡ÛïÐwèöBRñç² / 4G—Þ8$_uЉ¶VÔ[V;Cl¿GåGv—h¹êî¨ç• tÎgwbY”ð2”ÕÙ"»«>F<ãÅææN;NVv“3F‘K;\®’((ìÍu!gw(£rûÇQW*ó¦Hq (–d[sí-LµIp%È3åorUn8¬ôVlly~dÿ}ìÞ·}–;²ªûÕ×(¢•{–q?Ÿó þ‚êùÒ°) 5b¦ÎP]"DRCÐdk§ÛWBäˆÃ>áÃ݇}Dß1Žûˆý®C×3úhû%`rÁB)®’‘9vrñ†0V„he#õ`wÕ­ƒnKÖµð=V­1ÖÉúË•<®a•þçËÊ­²¹­¦Ü¾¦å¿ÌpVqìZÞô½,ê5öÀq;uâ {)–(ôÝ×4;ëæÍkâQsL,AxuRÉ›Ÿ·µ f% ³ê{À`(€ #B$›j©Bin´Œº]sRÚj|ÛjÌ™B QÍ6/pAƒ½Õ†7H´¶ëÃ'jg‹™ù ,µ9° V%aÒ„NÐtÚÝwG Y‰€0!#ºÀÃxªƒIw-uEl]Éû;g;¼±‚¥€È\„gUôšÑ!¡tö0Ä’‘Š"#‘bàºÓÇ¥#wj8ë® Î<”¼âŠ)úê-gv>dwcZCkhû  ‚Ç–dnœ,2QãyÑ«Íç°´=ŽAܯr,åîP¿nÞê°^çr–&^Ѳ ®Œµ¨D[$ +_9 ë&ù{]v]rí>W‡‘;Ä~ÃÖzÏô¾Ý§\ÛhÏñ ØÀOÅãųóJ‹è­@2WgëbãíÎ.­ì´ÅïÞ"‘U½Û"šÑŠÆ¨µ(ÏÑÊÀdÂxÑ•Bö,dWvW·Á6Tm°*`-6è#‰­³)r1'SÆ9¿¢ä zîÁüÑi9"¤:!©ÀÓpñgjYß_W§ì†ö½!3ãçŸ?ãÛó3ÂóE€×alß'¸;\ ›½©1ùõW O^Æ,ÚÏ.0צòhñ²{©V]Ž×ø?–Ž„:÷}msg8©2yD]Jx½\°ßï¡[ki½¨g’åµRø´oº¤ÖÊw¹\žžZ;ètPÆãý=Îûóû>"uئÍ9Â’çÍ‚´¨µ9Ì–k^yWÀº&"·sèJ𞿇Ng›:Û ïî0Mrq ¿~EqÑÂSÃĸ÷6BÛ‹Åd®8´Âò/ô8ŒòêÐ)>|…ó±Là«Yo¸OÑf+bBq‹OÞpŽ0 ø¼aàÕ†c»Qßåß[ãÞ.·Å«5Æö3u0BP;#¨ïë5áûã*ÔûqÚ[üNoÍ0–ed°b²gZŠ@×D½LccÐiÉ ú.ànßcß'|¸?àáà wÇ-n‚¯å’‘‹‡°Lÿ8k¸Æ÷;cºÖß§ry% R,RzåZ]¥’”OÔIZÞL*oμËsó{6€Án$x¯ î–xµÔ–Lª¥+1/0)[`)p½ÇÛ¾åzZþ¼-“ðÚ³öWïºs™ÞàšêºI‹Á-çÛÖáuKܲëWæóÁÆ)\׌å¹pùšê÷ {WY:¶C×uÏ ›²Q°&=cA‰³ÍH¶À>ZpJ»]„㟌%ºT­¿*Ö®™/ź3•q)H¨µ¶¨ZÄhœ &h”¶‰·ÌäãDÌ@G›”æÒ²ØYðõD,>+VW<ž/xy|ÂÃý ûî`nÉ2bâñû3¾7¨¼ml‹‹»î‚J(ÄÐ!±5"BHˆ‘͉gVV­RO)!¦Þ„º xŸ RߣäÉÞϸ~èÕi)³;MÆ JälŽË.$˜+‹9¶©ï;¨Mj'«D‡Ø]MÕ¦BBÉ‚ÀÖ†6iA.è÷8åˆ@¯`>aØ_ÚA@µàxÚãôÓ'ìO cò4`š&o Ýá2\ÎÆ ˜$¡;ìÒ„ÝB·Ç.Œ—3¤Œ€dƒ¡²6wcžTã„ø2 ]FŒã„Ë0a&ì㛓ý}*“µ &Æ8^LO*`bè¨P|óȧŒÇPPX0BÐ a×ßAùEÀxÀ…?ሸ»Cè÷ÐÜn]a°oðIç/€Ù1tÞU lŽE%ßÌ”¡µA ‚I ™cÉH@>£p‡À=E(›èj> 09‡q!ÎÍêÎQUo(ŽÂ<ñÀ‹È@ÜÖêéBä!ß›SYÖg—S ‘³ `ü=&vcßÊò_y—he&p'q çÍqmCûõdÅæª¯»F{3û jºì•°l´¡Ÿ]uŸ“³9òÌ Q¡ÄK0{¼ŒíC+‡ÅÒ:Á¾Î ÕC‘zäÏ fJÛ¯šPe÷rX¦ìˆˆ@>üâ¹AÕ­d•OÖ>ã`ìM„Yˆ˜›Æ* BŸ(޽Án^.OH% ¡C)òùÏèöÔpABx¼GO{~B.Èåß{UÆ­]#Y‡hbœÏgÄ~û»;ü÷ÿÝ‹?þùüÛÿõCC.èúµ¶1£wW;8(£OÃxAPÛÃØa€ÜiïˆR䭖ЀɚjYªº*2À˜3X1P¦ùyµÁ¤”æÈN°}f;ت•·tµà¥”æƒoPG-„ELGRhN ]Ÿ¬ˆ"ùõ@••q&LyÀËó#ž¾}Åã×/øò§;|øð?ÿô>?|Àñxï{БÀ‘Ð:‹42¡ëzkòe6‡žûÒ Ë"§w¶be!µk³Æ€«c­b |XßËVüôÊçµYDÁ!`˜¬$e< —{¼|¸\p¹8s3YLl*4þ™w›«¯!ÇãÃxn×ÌÓÓ ÎCÈ8ºJ6ôÊ*Ît‚µ WǦÌÉ.p»{ JµgÏͺ@t,âdê«}=Ѻ܂~à¾j<Ç܈F>„µó¬.®Ñš±A)œñF ¤Zl~ o'n"ÛúÁ$è¡O„©úDP0 ¯ Ôa­±ù¸KØ÷û|<íññn‡ûÓ}ÐwÕŒáëÞdX„ìë_$vg³GcBßwÖ,˜¢Gýs*ö‡Xq-îøYÆXaCâZŠ£+§¬”ƒí–3sHéÍ€¬E6ë c; QmØ ÿž9ˆÔ˜jK§!úSEr,¸ŽDsk¢ª ,ž7r‹Ÿµüš*MÓŽV‚Æ”åë]šKˆ®€n”·­öñ>P¨…*5Z^ÏÃ5ݶäx¯ <ÛŒ.ˆ˜º¸a“áÀWÛ¯é D„Ôiã&æv^ÉÎpP_ÿ‹yÿk#ˆ‚\ ®`vÒ¥Û€æÊû%)žì/Õ• vaÛ aü EñÉ¥ú‹ÑÓôõ-ûAÐÒºU7ÁÖ!´tb]Ëñ׿ä7ç7ùÿœ3bè®^óïñ6Zx-2ù#;þ{õ›oê¦Wê¬^u{Í*¾,+0¼¨Û{K…åÎÚåz—ÖÙZ1/õáìÚÚ¢RÑ¿Ü&&*Ž>Ö Saªp€ڴgvð:¹¨d$õh+'HPŸlV+jVqë©=kü,2!&nA„1duË5¡°zŒÉg^÷ŒDŽè“IÑ¥2’ºý‘Ê”Q›Ê01ާ„ÔïÁ1`_vò€ôÚ#¦Îç3žž¡e´M g‹ “ î;¼ž‹ÀG{èébZZ7h•=S6XXZyÙÒ%‹{†çÃIºkŽEäEœKDAãdNØò¦/K‚’ ¦(¡Gùÿ({Ó&ÉudKì8’±dfUÝÛ}»_Ï3fÞIÿÿßHf’™fæ=õ]*×XHîúàd0²î”YY­™d€€ûñ³À# .@bB¼dä<¡´SJ`Ò«/`ž²VXvÝ}0t;ü¾}û†ïϯIð¾C?ì9Ãw}•.ê`'×&%xœ©÷Øj3†ÙX2ÜüÝzjÝ«{×êŸ)"Z¦À:îý3‰Íº–öõœ4 4 Ë÷“=¼¾!OãéŒ÷w\Þ?ðñõ~þùg|ýö€}ìpxÜ!šG÷¡^OñÕ© 5qe¤º…ÏçfÐËaÞsÒs^œ&2—*[÷ò"!E‘ 9_kjn¼ûX`áR3³ Ó(m¨¬·Å/©[ðjižO7ËYF>ÿ½_­KOêƒÆ)k?drn€jëÜ H-Ü­˜ ÀÊõsóVß«ÄÑyï2Ž:tÄ Çð¤èŸ w‘ú@Ø =¾÷ørèpÜy|=x: Ø WÖ#©µI•gé’Tÿ72Y 7ð8ØŸ]•.^œ™½‹,Û~µõ6ªlK¢Ú;ªìt)#Ûò’n þ·ÀÖˆ½¨>³1ZK¯ïIßÖïeËGÚ¹mÉà‹rͪÒÞ’øAûžÖòð-¼ Ç´éQµN1¼çu%‚MÛ§µ·÷Ö=ÜÚw×ïïžïùú|h÷½öpS+­%†*!,þB³„ª¸U:º9 2-æ‹cbU›–9tbf²AÑIªÎñÒl,²H)óV@77ƊΜxA­¯d>0`^˜ˆß–9e'7”qª¦°iK™Ü´Èì–ã-}O&£[&h넃{€Ýgó=½ìüý±l¬ã®]õì(×§žf•ºX˜qv¬S6ÊÂÚ.ÖJØ^ÙO³5a£ô—¡L¤Ç;çÁ4µÞ¹æššôI£Üf3T²¸uU aÍà›È6\µ7´Y ]1œeA2!™',ä ¹Z¸èÚÈ•rj}.Š!³Q4Ë“sy@2vã0hZÛÓAp9ŒHiÔ¼Kîé\…âoæÕÌ $Þuè:Â/ø8G|œ&œ¯—‘áÎ#¢%Ï]G#c¿ÿ‚л]¸§SFï<ö{\ÞßðúüÈÀ’Î+šÙ¡ß0ô,R¤œ 9Í’†&Z·TËÔœ›ÄH-´ÜÂ/«k÷·<›W†@p8Mß{|Øã—¿|Åña˜r§qÊ ïÑ…Hb = ó„±4" k"7©.cù­—Åaæ,r•¢ÈbR{ b7K8#çˆóé„ÿ˜®x{{Á_ÿúWüõï¿`<àr¹àõõ¯g¼½}àåõçóEöâˆÑ}ÕîuJºŽ™Œçp6†‡Ç\ w!Tó^e‡Yâ=\WþM§k>¼«ŸX§ W¼MÜ ¸_¾‡÷œÔX;ÁÐ÷ʈ;xüz„z°WV%ç"H2H²MY³PÈp¥Kgdr`O@è°;zìÐw}ÔÏ,^T%g SF„ó‚ér†°Iâ(à}zSPöýŒë$ý#v;ßï÷Ž8“Ttž4uG” æ–€Ù¼£,q¬‹°ƒß©OWœ}œ0åä„i¼Ìà4sDGÀõÚããý,Q‹zcüÄ”p!#a^Yn~@‡#Ä?Ã7 †Gˆ€0€©‘ú Í4|Z:¥+’絯,kAcµy•äYÃí…ár†—Ç#b¦„)§êÉxz{×sû|Âùú O?ñWÿ3ÈìöÊl`¶aM±ƒÀvšÙ]£p‚þ™EªI«´P’b’Í‹× ]‡ý~ÇÇG}Ö&MÁ.@TQ­°hz±'‡œÝÌ .úaˆôkò„ĹÚ€dé‚ëÏše)…%¶4îZ£™K­¥Yfð²¿Yyì±,¬ÜÊ¿y¹Gúíš*¹QþÀqYÊú PõÖ·r^˜­Ï~ÌéĤ ZW‹ÜÆÃÈÈ#ž>d«L"Øw„]Ïe#òêp'F¶}È!ðˆÝðå¡Ç×§¾< 8Ç¡SÖ–˜¹&·*«µ•Êykûag`¥ Ùk¨‚Ü öçœÝbÛ'ΠRnÀ _÷æm û³gbk¸¼%1üÌÿêGÉ{ë³”9oúY­íˆÖ’½{ïe­6+ýùÚi-%ÜÒ~dú^H8­d°ò—ßKæ›{ÓhåëïYµ)Å÷0ÏBîÖß¿}íõ}^2Ëtý…û Š|þcNPÐØ\-Z€¡ ‹Y£bç*qk}¶ج)Çæ¿•ØNg¶b2·h{p¦Vn˜[!¤È ô¯]låÀÿŸÑXÿˆqu­>¸5ÊZ'.ØÒÀ.µ´Ÿés[¤sa)Xès¥ývp«Ejû0•šŽãJB 5{\“y®l¥bþ«@eñÂÊj툔ž/"æ•eÒÏ@胇d†êE¾Èë4ÁÁXY¢q÷‰ìXe¡Î¨Ã“Q÷g†,Ü6Wé¥ ¥‘Š"ÏIEêOá•O­qÍ ¸Æ ÇÃîÃx N$Öd3W&ÉÞŠ‚g§÷Ò¼¿¼Ûa÷ˆ—ï'xï1^v‡Œ:°MÆÜAœÚ[ª4bÂ~×C¼Ã~×a¿ë0½ÊÃH”Þ¥óà°€KŸqÔK§€Ž<Šíò­Ÿ€GÆš>ÚÞ„Ð$Ÿ ä€ÞvƒÃ¾ï@yÂÏ?=á¯?ÁÏyÂnß)3I11ÎWÁëÛI'…N¯1Zá\k"[9ΦÓi&Ÿ|ŸYd[ûO¹á@zŒ±ç²àzýÀëû ¾ÿŽÿ÷ÇpØ[q)øxÇõ2á|'-$sNo ‘åõ9¾²+Pš0/Œ%‰¯$m¶Ó±à–s¡X x9ó÷è0„®be?ì»úk‘‡ÛgôƒC?8¸*ë‚M ƒJMÙ;ÀeŒPºº=<vp˜&2Ý?’ì¡Ç~°Ûíðp8(16ÉÇ‹²ÃðAd –Ôç+Nïg¼¿~€%€h¯´fßÁm2üN 5eûeõx¢jA<ƒ,Ž¡Í\—ѳ eÂuJp1!°z_…±‡Ò„<ž‘§ Q|ŠÈÓ.ÑÒpHìp‰QýzöèåìÃpx OðÃ#Fô‚&f…rn!SC6YÆJ†%bÜÔšg“G*àêˆtOe`yÑŸÄWP>ò(žœž¬6V¨÷É4^= ž7Àp¶3Z‡hcþ‚ݾ‡À™•‚4¡ï·}~e ’ý˜yµÅzø,hᆱ”QBÞºnÀ~¿×T§qœp¯ˆ1bšÒ¢Çp¡36Ù_U Êøïq<cD´`˜hAJØ0rfæÆJFªÜ=/<iÁ°àÕu·l~ùÄëjù|þïK ´‘ÛÁ•¹2ØÖ FëŸäi åú²îwÄ5i(½ŽÖÙ]Á!(hÕ„½ù«A¢ÖÚuÍäêK=ô_žðpèðôxÄÃaîÇ.88@¦)ÖÞA“ç­n4@*Ð,³í:e×é5aÁp–›>» ­>K_{;©¦³:œ™>MlµÒ©õÊ» ¯ÙI[J­õ×µýþºÿ^ï+9ó¦|p‹•µÞ÷*©º15ÿ ØÞêÙרÀÖ MWœ%™²H/Ý±Š‡ÕgaÜ„G,q†íóyÞ5gIû溛Œ;]“¦’ ùYëÉDØFø¨EÇhž ’f¨C,•> ÌÌÛë›u£œkÊSÑÉ’íÚ ÷aÖ~‹ùÊ” \XÔëwøµ ¦|×JZfòœìÒ†—Ê’=eq¹%¡jN=ÕûTÑö†Â;àr—vW¨£óáÖÎ<>íñôôˆÇÇGx¯Ò±!tèC‡œFŒñН8=Þ>ÎO¤†‘I¢6¡¢¾4Š¡i#IHð’(ƒ¼žíɚͥÔÅ B¸²aÁ¯€qÛ¸˜ÇÁÁa·ï±và]Æq·ÇúÇW<}9â¸÷LJGô»§¯ïúý¿ÿñŒÌ“yÔq5fõYÙ¹NfÖ’ÞYžÉf.Ê•žNí¦¾jd‹ ®ì5xƒ[ïÍQ©XeøJ5P£eX¹¢p!®Aäôß‚c pêºè:‚÷ÉjÌA4U†]]ŽÇ¾>ìðËOöš`:„Þdöœ3RŠ7€O ÎðäA0„Á¼T÷»=ºÎ¼èê~œîZkhOï6‰¹Ÿ4A§¿Ÿ“½— Ÿˆ¹’¶%%Þ >³)ï¯Ô‚ë³výš÷¢¹ÿÝþٮDz¿µõH{¶)žé€h_¿þM­q‡!^~t&m^Kgæô¶ºªð>“x’[îçÒì?Ÿ1·*þáýæë–~÷3†Í ¬{ ¦PèîsK¤]©¯œ ŒñóF#ÌUº¦é ‰¦ÿ ÍÄ÷Sýí×*f8zûlÉÖ×Ð}º,çç»Ï:ò5-YîS[ÏæBd¹ËÒÚBŒÿÌ$¸š8šFyM9l †›ÃUM¶˜ómOÇ– hI3»>.ÆÃ“´…q!L —u;±ëa3dwÊnI¬ÎΓ%êÈ\$÷ŠÁBppÁÏ4aQ?˜ë˜Ñõ€G°Ä!‡hs)Y‹3—TY¤Fˆd›Î8§¦+ì|½gæ3R™SˇÔ):®ë°ß ˆ,˜Fõ'Š ?SFÌ \kqc€µP«bVS~:'ŒqÂËãø2àññ_¿^ðøøˆoß¾Ðd‘œi•-Âo/ß1ŽÕÕ›qj×íÐu¢QÓ]?IS‹°ø9HW1††@ª„ÇWü-³I ˜•ù2ì¾|yÄO_Ø Ä#R¼à¯??á_þö„]ïv;|ýé »ãÏogt=púqz{Çù:êTÉbVߤäf6Å‚a8§[ý™XÝõ³¼(˜ à(åPT}N±NÌ=KÐ ó¦‰ãX ÐVŽÓjÔÌHGfjkÐÍM“¸9„kÐËrz’R¢yŽ#<ÔÏÏ7>ZZÁ)åxâádFGùáž×ñ~ò¤ó°tE&8G¯R§Œ˜‰²²|§Ru¯@2¡4(ÁõÂn§¿;„šî5±pž0]GM“cB΂4eä)#OQÓOy.RJj.këØ -ÕSk oº7zʰóú{§ë6ˆÊ;ò<‚G #ò5BF¹ÂÁÉ#2M÷Ý&êd‡Ldw@¤x„èúMt=Ä¥ «Á—繊øÔü–Y#‰g®‰ b ‘EoÐHtEJgHþ§(¾ƒÆ $¿ƒã D®`! Ü© {±à«ÿŸ.C§.c^z½´l6 ›8±ÊŸœ=+Îgû¾#H.`>ùââ¥x:¯,PŠXA+·Ò¿µÇÄglž…—ÌMs¼d‰Ê‹k«©¾­>¼Ú˜ë ¨Œ›Ô½{ÿ÷Ãl¼Á¢‰ùì½n1¤–QóeŸûËIí’uûZíýýq„ùÖç°fmûšlçjpo~6ÀÊ »†òÕ¿qi1áœEÁ[*ªw‚à5 L ˜Ò’R ‚Î÷€ Èpn!¦Œ> "&äIC+‚srÐD“s¸ƒ#8KoꆡÃÓ—¼¿+È/)™ç>!„YúçyYüJê‰äØë3L4?÷¶#±¬ú ·Lßrð ¦ã:ÅjîTûÖÒ¿{u÷º»µiùù­só~íßN[’Æ-öèÍsÝôÁ³DÝ/À´ÏÎ;þôµfÅmº#Õз­ý³½¾{øJŒÓ%ÜØ™¶×PUZ‹÷èïz€³wf.)„bÃFe&Ô®zPÍŒ€–òYÝWÛ+çšSÖôˆ”›$2ÛoMæÃppLÕ+GAYÜ`ª ³i¨FDßúW-L¿ìŠàœÒ!Õl“ F­$xqóÑÌe[CÓÖ[J™<®¡Œâ.ÝðDzºù`¨“o"•‹¼í³×j#;ssø-8ë jÛaöåóv´˜øͼ÷V˜Ko^1f;(y`žnz*ì;5ÜÎ&éÒ‚QSa¬(MD4J—I´RŠHžà=Wùˆ7J¯' ³¦Í¥ìáC‘/ÎkØ9I„@šY§:"M=D•ÌS¡jðèÊuóÅ[ô,ÍÊ"™\E$Á»vÈLˆG`bBdÆdÖxÜœ³¹5™Œ8³´Ù¦n_w='€"â$¸^ã$¯ ïôý3¦§]¯ì/áùùß¿¿àííçˈë†}išp.cÆ8%“ÓjÂ%C½i‚Xäؘ73=uFâiŽƒ·¦:Xúõa¿þò~ùå'|ûz@ß ®È銯OG|ýrKÄþС?v}Æþè@þiq8î°Ûõ¸Z¤°£€@ÊîpÅpŸš(rž)Ý#ÔW fÀÞR{×fŸ¼2 -Û²e)“Ú Î@ïƒQá¡Ò@¶ùĈQ/Æ´ $äBm–KïÊ5ÙM¯%'$©‘锣ÊÊpíÈÑVæÿÇzHLiªÔüÖ¬³ 晵dŽ 0zGÈ_¿À8Ÿ?ƒÒ”;Ip]€÷Æ&3tº{¾àüþóùŠ3kÚ-;‡®ßÁ÷ƒzt º¡¸E(xˆwHv] ÎdŒ ׃Èc'¼¿ŸðúòŽ\.#úݰô$h“št~ ^KBÈ4K_õ>$”³B¥Í,š´GÔÃC Àà4"Ž'\ÇwÄôÁŒxÀ÷Œ2eD›¶Ää1e‡È `¿‡tG`8@ú#˜<ÄyÎ<+)zÅPužPÛyQö•dS#ðN÷rÇÄ.gÄñ<>ƒã›±®ÞAéÂ4½€0CRçAY~h€hÝ÷¥­+A×x8q3bd[²Q3EÄøqN štÂìfï…â©QXWÕº€¶CM Öó»-€· Ïm©6A«5@7Û(4Ì)Ùj|nA²²X9/MK+›Ù@‡ýIía­ Ò]ÀÒöïÏ¡5G'âOªLpj’y ±¶ˆ¬-S§Ì~\e"ËBšI7ïo-Yœjëë–ܤD{/uß- þ༠mʘ€ëÚ–'¼í5¡ +ÂBé ]tÍ>múçös&óÊÒú,®ó]À®v½Cœ¨Y­‘œõ©ép8:|}:âËÓÇã‡ýûÁ£3wMgÑ"•¤ €ó3»ÑÁû€¾2ì{ôfQ®]û Kc½ñsZ“ ܧ1A^I Ó9fÉàºÇ0\ƒÚ‹DØÓø[UÑZ‚Ø~ï{(YW%”+0?çh¬Fãó¶ÐÛ÷½" ¹fп¼Ïð[1Mèî@n n±Ø H–9ÞH=Û׉1nifÉ/ßõ/[Ûlœ[€—Ödnáv»o“Õ'5­Nêi¼…¤Q-:鮬SœMàrf¤$HyZR^áŒáªùöû¨RY6µ¤]ç”7Ikºa{H欆-¸P¢&Û×¾ç!U}Úï]¾W¥H¯(rë‡Ëã~JËgþD rʫ­ ûÖl«eTåçzúÁ¿™ˆÙ5VJéê¶kL3D½ ¤œVI‘ÍZs^S<Œá" Ê(ëaúvHYLV©r4ò„Ðõ€0’RÌ蜟S%ÃyÌR“¬Ä{cN©jŒIÓͼ‡§™©‚;)€6e½J-â˜SB û=3›öœÑu ]—Ñ÷Œ.2|ˆ dþ@BƘ“ÚüyÒüÇóÎ`ꑦ«¥1.cB΄ñœÀx~~Á×oøë_¿áñ逘®øÿÛ¿ãã}ÄÛÇ„· Þ߯:1t×\.gÄ\¯o¦)ƒ-uÊ£FaMœñˆ¹ø·Ù€- sTjãÐþö—#þ×ÿü þö·Ÿq8—üƒZ:B×.Fß{G\.ž¾ðÓÏ?áû¿kÌï.9%°½?ï=xŒÍD [5®ùGSÎåqíãÑ0¤¸ìú™9LY×@MkÑl`×ÒCYBRßò¬t]0MK}1iFr¼8¬!5`ºÜxbÜøÄ  @Êâc$ë^ÁŒi" ]£Òœ³&ä\/Ä‘‰á§€iºBˆA1 ë¼Ô6%Äñ‚÷w¼½½!^”q @Ý€a—Ñ ßthgŒ‚˜Àœ³ÃnRÉn,bߣë&8R¿ÂëeÄ8ŽÈ‰—|²ü­àÂÌ*-,P§…,¥€¯{hiÉ2ä:‚Òùúñú†·×ïxÿiºà’&°'¸Ý}Ð ‚鿲Á„N$ÊŠE1)l”š2ˆ(ভpóû2ðCx!Ûu1E"HÎF@N€Œpmnϵí«ÎÀÙÒôÞóÌÜ–¾Ë SBªVú«-o•yÙܲ¹îì=²öΘ…wë‘OÌäïÕ [רÊo}7ø.skë{J›XmííS{—%pGDðîÏz‹n›ûÒªþQk³¨ ×¥ÜCg£º.œ+C9ÔäZe)Ïæ˜«kÉU)Týþ2 ÆJ¶!î¡'eMøÈ9}Ç”Ž=¼à‚GÌ C¯¬ ˆ6NÓxU Ô€Vú,Bç!Ðå§/øòå¾|ù†?~Æûé„ë4á|½àååE÷Í,¼ˆ1ÎàÒÖ3¯ì. óy“G\Ùöî†}Y ç˳–µµêZJ(wÌÖÿŒÖ½T±vPUÿoSë¶QòË!¹÷â”EÆUå}×MÝ·j^×{?êÖÿB¨ ’öš²ý]ßu·Ï¶èõP û#vãˆx8 šÅÁétªk eà´æÜ% ÇC%—}¯`Ø8EóSFwβb¨Ðßn+”Vê÷Ù³_ü93óvÍ6,,'›rqªÁ®Q;4éëÍ>j]W|²p3È]ÿfYâƒCD9 ¦˜ì@ƒxv]§þ¥z" ¡ƒoR¡3hÅ *R hÙA[½ñ\cm'È-ŸÃlû1Ýeî”õ]öñÖ*`A ¥vëaÙbkO®-õŽäÀ­ ‹µ¯S :µ2Àö=¶÷¶,]ïâ®÷xû¸¨ìñ÷g ]Ào¿þÿï?~Å—¯ÞOgœGÆËÛ¯§³B:§ëœ×µ?EÁ8&\F ±C†y`xBDe”Í’ éGÙ3ÖðdèèÙo Œ¡#üåë€ÿú_ÿŽü§¯èzÆ·/»ýß¾>àòñŽÎ9;XÕ߇ðåÛp#2'ŽÇ#N—QM¡Ã€·k‰tÈI7ÆÒ|Tú,Ì@æ”UnžÃÒ‰°Ø&­ ^»ê₯€¦óê©!(SY«ˆhA‘¹f“Æ„9K¨8ïáƒo$1\#¬ËZòì\‡˜µXÌÌæ;¥MÖ:š|ÓÓ°$pª$J'‹ ït¿€£ª»eθÆ+®ÓS¼bL ×<‚áð—ýALf8O¸œÎϼ|ÆËÏøþý;®§Â,øn€÷ö»öDŽ݀ýÓö];øÞAb{˜&ÄÓ"`7tØùÓ8*+‘ ñ:âz½"¥l2ÝP®×ôlaµ¡dQI09¯>X( w®ç†úŠE䔀4—7œ^ÿÀëë3®ã.ÓÆiTióñÂÁXÈã„3½#FÄ ršÐ5òyA†xêàƒ² ÓO²ñìs)ç ‚nŠÈS^wÊ0KŒÎ¼”3"ÀWHÁñ}Ÿÿ€Œ@ò+<áù Jˆ\àýàÝ] œ•§‡~†HÒ=؉=2g8¸êSDÌðÖ$°œ¸À ™@|p§r:Á‡C*@à]0¹n1©m‡i³l Ø6v.þ%ºÜÊn¦;Ñв2%Ç¢XÝj.™¹z–Ýz]¹¥Ô® \)^‰ @¦H5èsp¬eè^1§évåzÚºd€Å‚Mx.Éfôøš¡>7T¼`¤yïn d™o=Cœ5+‘s-X·RåbJU¶³,Öi‘Må~SËü²ÞÒ•µ¢×Q"å «|öãÆK®°,m³0‰dÄ•Á„ˆ1Ð]å¯)ƒœÁ9ìR þxUÆ0 Hã ˜ønz°ÈöG$â" ½&¥š‡bp® åFªwS±2¯]À¿þë¿âïÿòŸsÆù:bJ—ËÅÀ ýõõí §Ó "„Ëå‚såµdtä0 ;Œi‚w*i¾ÆTÏïÔZA‡I×[3È ANÔѪivBeU‰\CäÛé<Ör§gyé+ àÃ9ë óF-g¼hŠd+¿)upMçšb•X¥qªýÈÃÓƒÖ©Ó¤J“-`ŠY¤kn1Ê\# \J;õïõuf¿Õ º9‡.tBÒ­¤×ˆÕB¡öØcLxxxÀ4M "¼¿¿ƒHsDèw IY­­¬Žefìv;x°eˆº#¬œ¨C‡n%ê ÀŒ–KÔ¾mc2pË‘³QKCL°Ázeù:›õ™«†Øž¥Þ±6L'cØy<wðžy8!J‚dekÌãjèqØuØ _øöõ€§‡½…ÙLÓU?{ê‹oo ¢ÙÙ“Cßö{ì,eºs„`i½™õýσ†tJ•þo)á’Åïo€ð ˜Ô®Ïµi÷:¯í›Êr ‚À– z»Ç¬ßgàÆ\¬3ÜêûÐÂK• \Ýòý¯×k­)·˜b]×­¼¯æ¯-ÏÒ–·V‘€¶÷¦r¶<¬Û=f«ßÜ<µ)‘åuUú<Ÿ§ëDÄ5 ¦ÝW׆[C„ví¬²µÙ `®?[óòÛɤ`™g6É,·¸;Ýà¬Ò¯UÑVÑÜ•÷Ä|ÉR=Н77É/PÕyá–æY/^7t¬£Âêñ6R#Ûò«­œóz€å¼Õ¬ ’¼xàZ´3/Ðæ- ß=JÝZº5ÉlΚþ¨àÊ2‚|X<à1˦Db.@¹Æ/Œž_èhƒ[jR Ã.,÷5 IDATøe:§•Ö´$S"ZW 6"RÀ²‘Gˆ 2ƒvÚT;mÞ ØFêWC΀&œQ×4kÕY™2’4Î^½$ žM ΢Óþú¥>K[ST<)Èš"WST‘ŒlÉž‚u¡ª³#óÐqDºìÆ È'ÀyóˆyBLÀÕàÚ5JðS‚×z‚CÌŸ˜€i²L‘‡½¾àŸ¿þfÆ5N7àt8}DŒciÔ2Ì SfpvH)Xó¨tz±ë¼«ÉfÓfFgAðEjš'D²3öƒÃù_þ†¿|Û!ЄÃ~Àã—{üôÓÆC‡Ëé¬bNðÃáðÀáôq2€ÔãËã|×á|žðüúpªÙì5’½>£¾Ná×L%i$Z²QT.XqæÆ»¢÷³6Ålôn]ïÊlž9\?÷"»MÉš òÞ¡ïzø &°lr9 šˆ½À%cä‘>s ‚ìŒz.T9$g. ²ºçÍ`:g]WaŒQ‘J\q>àË_{>ž_±;°ÛÇ o//øþûwüþÏ_ñû¯àû÷ŒcgÁ”¢Ç>º}? ?ìñôó7¼ =bß÷ó¤>4z$Mã„<^C—€t¾âíí çóYYayöI)éŠå^¤”bu½2 *ú*m(f§Ky5ó±ÄBä iëëõl€5Œö<:WÈ„®ùÜrb À”Ó4!›IuNVW­šáúÃŒ®çŒÙÎáOþ¸õPâ¤Úb²Í’d·ðä•RV$ëýÏ`›²×(š*pUÌå½ôž0ì:#m¼cHŽà8‚œöî0ô„‡Ã€/Çö»_ŽØ „Ãàá ‰!9ÁÅ JÀ5O¸ZÍ,a¹3¦ÕÐõ*ì|¯”©lg°h™Ü‚úÕæÇ-ý°íǼ–ŵûýrÀ#RCWû†3y± DµA?²ÐÙt.[±ÉZ¼¢ËæóTkÓ[·¥oòC߯-œ`Ëû]ןÅ[ÀÓz°½íÏwÛÝS­q Âvªá°låãk,"ªæö·÷Oß8ìL)âÊ“£¦ø·(.Â}³Áâñ@«ê3Õ¹raÜv£“„ê 5¶”\æ¦I_š¨‹83ŒUC§Ñ˜Mÿ,Ì‘ÆF£S¥;“5—dÒ Th1¬¬ ý5¿ƒÆS†pgó“Âû)f« “ó[*> f§U±½ù€™ŽYš*´¤ê¡aEÕi.a²Ï.-¨„ó´Æ(°¡_nÌÕkÌ\þ-‚³4®úEXAÞ¤H9‡ƒRœ³±Ÿ,5Ç9ª‡ÓCXLsLfrnE}Á,T"EFýÒ&I“}jš‹Óϳ%†æJiªæI» Q4ÍR W󹙥ñŠ0'у#NÕr$„Îiº ÐuÞéúAðAlJ…!Æ&e›’èT(Ž!ÁTf7„˜S\§lÆò¨…3W¤<Ò€X0%j…Îaš&CÊ î¢òfF&‡)Ÿ1%Á4Í‘°"Œ„„œ“b}bú~+NÍqÆf¯Ì/›úoQË(ưúµÞY’,?ÍŽû€Ÿžöøù댄Ý@!b†–‡ÆË„iŠHYY%ÁL#ãýôŒß~EŒ„¿þò )/g¼½ž‘D0M ×çwmü²¦ñy’êÑæ ^iÙ"m4EfžÂ/d¸+Ýúl ÊÊÞXJZ cÕY£¤kÝ$\.£ Zô&»¿¼ëÔïÆyÝ»ŒÕBNàðA™]Þ9øLÈ.ƒ˜`®¨I›&+êëê:öw4EÒ0jåvöY‚ ÜrzT"µO§w|ÿþ»‡#¿|…yL8§.Ä1áåïøþûwüñëøþÇ3^_Þ1M„qšàÉÃKÙç{t‡Þ_¿#^Npœ xÉ ý¾Ç°ßAœ`šF03º!`çÒeÂûË3ž¿ÿŽ÷·7¤i²àë4m©ì]Ì N*qæg’²Ê†}v _#Ý'yl©ª’®ÈiÂt¹àôúŒËÛï¸~ÿoÏï8_Fd×ßp|ú?ý‚ÃÓWu/'œß^"áMA'Ê šÌÐ| Uqt{ÆrI2²" *öÞöz¯L–¡£Ê~&8'à|AŽïàñ?Àã 4½çßàò >àä O'8¹ÂI„C‚§ÉŠÞÂrÒpebu`Iuú-ÂÖx•sbޤ'x/…r >é•$'ˆ¼ñÈ@H=X¼Û!„6 ”5bV¢‚˜YŠË»YÖ-Ãó×®=œˆ—ƾp7@Ìç’,ä:b2…[à¥Iõ\^¹XEð&Iæ Dµ¸4¹7u­ÏËÒ‡Kæ¸z®—ßÈlQ=,‹Ü¦ò_jIwÃeÖëô%`Éꪠ›o>‹VS´g_‡s%µ@h~ó*°4¯ÛdFèCXx³zçç$¿’`\š,×4 D·•Ô׿EƒÓD QãÕxª:Íúƒ' -@DÎ'\c‡tÕȱpè%Àõý®CèŽ@œ?.È׋±Š&c¥yta‘Gﻆirb € pßúNÏ‹’.˜3þñ¯ 1'LW•*¨qÅxS4 #âz>ã·ß~Åx:ßHpÈÍg£p¹ùEŒmo–ª„(vTyS2¸6;ÞqÚï»6YVFö}O–›!PÙ‡3+KÛ¢ækýË2W™*LFØÆÌ/nÚd<®Ïoâ™1ªïÍ›2Õ¼xHÁ…=éZxxxÂ8Æ `ÖþÉBV<Ív 9U±ìv-KK›ÏqÔzRŸ›°¨—BPSÿ2#0Êç# (x±AUQ'-=ÂÉbó/Åå;xÌ`93¶¯¬Rªï­úÝ­ ÷ëÚf¥nvÁ†…`LZ ¬†ìj5Òû€¾óp^$0GD “‚¸ÃàqØ<> øò´ÃÓq‡]OxØ p”5 ŠÅÒ>3Ò¤W§ëˆ«¥ ƒGßí0ô{÷; ÀÃ~@ç¼²ÄÀN6ä,g¶›Yùµs>,Ò8ï1 ½ŽI¼I±QýD·@•íd?º+Þ²8ÚHþœüw™Eó{Í7`ÍRâçn€´Û^øsès ú¡üÿG([ŸÏ:Á…¸ÔzIÖAUïÍõá½¶'jríj‹Ð2ìÊÞ^˜cÞë° xpݮŅÂ~P€€s´CkN%YµmO<Û“½öMmM4ªD‘–zö5’ë[0~ÊAD-:T|c,ýªxS)(PŠGB0Ó[•÷d8\a×/ŠW L{-'+_mêkú݆–w3¹Ÿ'¬S ÖnüÕˆ=g8·q?šÏ €DúkÑÆ×ß°lp‹'W°º @` `•¢XÁ¡\uªËëärߦµ×ÐÙˆ¸Õtš%£ÄfpM ÓG¨Ê%ëTГƒHFdÆ:0YzLѶ;•À2”-å¢"\]ïá ¾S¾1Œ/“¥œ'Pè*£ÏQ@NÁ›¯[ÎêOÞèãb‰[ëX,=‚ ‚hr'…ƒÕdŸ•í' R²j€ " ÎaRŒ$¡R6"ÁešR¬‡H2T[‹KL˜˜“›˜V$09ÔÓC{g†ç ôy$EA_ÙHRÅ€Þ¿Þ+P,^m^Cð:ÂaßãÛ×G\§úà!)VcÐH™ o¯gœ>®šv“ ççwœÇ.cÄñá¾|yÀ8e•^aLqÊx?]Óhn¨ÀM̬§jÎ_¤¿ó¿gÖ„®¤H˜ÁëT©µ+þ*¢fÒ:nÏè=0t»Nʦ‰-@BÉ\œ ÛO‹ÀÐ)s/ꊯ Ã `O)˜9‹™¤êKÎaMܸñаf¬ZµÜ™fi‚¬KBŒ#>Nop˜É¢8Ÿ‘U9Êùã„·×üöë¯xyÃÇûçÓ cRƒßq´ƒ)Š‚ž¡=^_~ÇéãŽ#:bÈÏ߀ü Œ«¨RÞÝñ#žßN &<ÿŽçßÿÀÛÛ ÆQ¥£ðù*õÍÈs¡Á’“áBÿ.“|  Ä+âxÆx~ÃÇÛ3žÿ ¯¿"¾ÿá„»ãþ<þå8~ý;ÂþˆËe„Lqâßu_ §i]6ñ䦂S 7)®ÒJ+Ø8Ez¢FôÎ+Р¨ÞØ ¤Œiü¥ (žàÆWðõr}Oï é >=Ãó;œ|Q))Ã*x-&”q•Á’sñ•˶w·Þ$xX‘¡oÕ‰V cMQ†G‚ä+€3r~ËD>ÌHäч#í@èg/L«šÀ²U¿Ýc`Ý<Éu‹ÿóiJàÚ' +6S{ÊümÖ쑵OÏ-ªm?+|׿ð³ ýòýЬDX¤M»š¾óãó=; 8T© ÁUFÔzVZMž̵ßH›,¸Nl§ÊKã}XÌžVÅžb6è/²‘òÞˆ–uI¹¥ï N\=[ë}pzî8ç Y*0é-2Tíô=ˆ$püÀÄ2yˆx8qœ@FŽ‘ó '8<}Ã! cG¸2ÈÍŒëåAß÷j6æ‚FÙ+gZí*ó4kÝù2¬ ûÃÌ€˜R,ˆˆ9U¯¬×çìv;ÄqÂó™¥Z.8Òäæ”3È@Áž´–Ø­½u>cEÝû÷Û:äŽñB"´ýï-C,%cÛ”æ<:ç±ßï‚‚*G-¦gMïq“„¸í3÷Y#z >Ë]vèÚ'lËÄž³*-Ê*}‡~·ÃÃÃâx5/«ŒËåRÍê'áˆýÐÝ…}ß××JæEÍlöÐZzQž™:Y‹·’ŸÍ}yé]E«!AC>(xq•–€Ÿe½Ã+€TnØ*ö¡ï4”¢Ö&ÕwÃ0 ó×gN‡@™'@& À<އ¾|9âËÓ{Ý C_ÇÉj;®A< 1 ^¥¼®ƒï<xzxÄápÀ®:‡]×[Ú·‚W9gH#/£ôÒªo¬ß[û2m±—¶ÒòŠŸ­aCõ‹½íiÛ4¾åÞí6åVBxísÏó±õÜ[â[{A롵e̾6ßÂCnÏ­mo­µjªÉÚ¯û,%}K͵ŽÖ Ò=?îµWßZ®¸õ=Ú¯[³§ÛD̵ôr‹ÝuËf#Ø8`œJ*¸Š>0Å·…oÖ-Wpë©2_·TÓ;®æÖÒL²æ¢AÓÞßðözÁo¿½ãåû›®ËÎ#¦ ˜‡‡öû×ñ1OG„ðv:£ë=Ž{œ¯£R»‰*UðÉ‘J/½12‹L´Ý؃“ºžkzgí\©ño™“5É&µÚ¸ À¼ƒÇñ0à¸ïpØšVD½šx_".çÑ-ˆû¾C5Ö >Ç ;‡@@ŒÔ1B¼8LdJh3R™\Ïüò9µ܃êÿiŸw'ËB¸ò—ËD„ËÇoÏoè÷; »àóù¬~*o'œÏgLW¥¸gVöSâŒÉä%92|¤êŇ \No@J8}¼ãßþíßðåÛWôàþŽÎð}‡”®'<ÿú+þøýW¼¿¾i8G“SëO©¬;V@…E™BÉŒ˜ãBÂÎÚॄ)]¯'\Þ¿ãýõw¼}ÿïÏ¿ãrþ€ó‚Ð Ø¿ááëßðôó?ðøíïèßÀ~@<1’ôÈð ×ÃùB%UHàLZŒ" ±CLåï$Y“EE5™ÁŠO£â{ Æ “¸$Èã~zÒ t}ƒ\¿ƒ.¿—g¸t‚—\z…Ãp°\@<œÊ‚+Ì?ÔÆ¢0vfÍ“1M•kßÎee\¹‡ˆþšó„/È|ã¢~lÎÃQ§&Ö4€ÔÚ_ÏkRCý*®SÐ6½¬-²±”ïH, nÜmR>“ þ÷¹é\ ¯¸¤-ß6¨÷}­Z+¹acÝc‚­²öÏõÍl\?“à æÈΦÉ#ñËélS`QóFÄPŽ4©Íl@ÜüžÚZ2«¡0K)¹‘õ+CM†Ê°›ÃcÚ´ê9¸€€%onNŠ!âmc\0ñ²†+ØMj=¸T’=ß×,¼°E 5©3k è 'õ¸r錘¾#2© 8_á_áhì=²8ç°?>Xƒ²^ $G\Ï€Cß_Ñõ{ç!®× ®°ÌX­bføœà]g{²GðŽ<úà•1ÖÞYs2Nv{§ZÏÿþøõŸˆq4Ï>݃«©´‰ÅŸ–>‘òðʃ­|þ÷ Ÿ¸›À5ÊŠUÃV˜ :P%pÎu;“§ï°ëzìú~fû.@Ô$-Ï¿k}½è®lèp ÆQ^¥–óZV>DëŵU€@LábCÆ~‡Ã!)0›tÈÇ 9&\§¨u4›œ×‚r(Í%Íá<ƺÈ9c·ë!bê*ÃZe/yšU!"ZWV0 Ü?·è¼%Ä-LV E3``©l[š‹3»ßL®X4žÎäæ{^z×~"p”@^<”mÕw `uªD5”2Èe§½B×;ìÂñé_ŸðÓÏOx<îÐõjŸ g$ p%\-oœ÷訃ë_ºä¡ëq|Øãa@ßwêYìDÃZd¯Zœ«U3ëÜßx:µ€Íš•X,ÖÄ“yí:$º•„âKü{=CÊûZË—€ŠûSL­ÏÂIÖþTë¯ß’H¶Òþ;ððÍÙ^ž§eˆÐ’ÝÊ(×àV âÝ“PoY|fu°%\¶÷îí–  ü »XvlVí½h¬®ën€-ÅrPmzÖ ®v„®°Zú™ê5ƌĂlR­-o…™E›7o ‘]?jš˜>½YmR3#6B¡¯ E×7ø†ÞØÞ )l"©ãš‘yýÜóg ò¬N»ènLèWÒ£ö}´Ì¥{Ý­”Åúþ2/b¥ë÷u~‘rïþ„5²-ËÏrýþæïÅwµÈËë‘›D™RÐÞ$¼ÙòÚB¥:¨'MMF\É#²¼yeUã`jÑ]2Å©›å˜–ôW*%r:=rö~<>cIhy0É<ŽðÓ·#Ž=vêS@ÔaŠ‚ëeÄéÔáýtÅ4²Éa$%¯pY«™H¼I”"œp .”®oçfK›¶Ô^C eŽÕ[=sZ¬‘dv˜ã„ë™ó¯ÏoÈÂCoEª¥ã8¢óÁd Ê òÄȤ÷E¾Œ)gHÔô'§÷ ÿ#þßxþíWü?ÿ×ÿ‰_~ùÿù?ÿüË?þ‡/ˆ§ ¾ÿúN§¦ëˆ·×g¼¼~ø„òß3Rèã—_^¿3ÕfVp4†]Öía(4ua jÛ3…üánÏsÙ+ níµo[kjò,qXB¢êúÖuÞ¿w€®‹n)+R6¡M?RˆÝ;§,üVYCÖFv{–⻩ÈíÏ‘åu·ëš9 lãRÂp<ù`ɘh—‡Œãè·Ÿ‰§#bšòæPÛåk:¡±x¬yUe@eÛýfg‚Ö€„›&…nÃ4èF5ŽJ3°=ƒ[uU¸pH¦UÙ*Neae-mRGè¡ë-åÏŸ Å,³1#É4ÑÿîñÇé0à¯ÞãñxÀãÃ,$GÔø³Z9®Å9®âî ¯k:f¾m ¬_ã¬&jÖ4$÷y×tg^^·,ŠªS%µC˜z1¢KƒÒÊjrQ; Ú\Üa™/=}º_ Wý”*ólä° …uao¥ukDfñ´'ÙÈ€—Ec?½ØM„â>% &º¨«xËÌYvYÑfƒu™­7ŒL‘‹èö†¢McTy=k³ [òoÀ u’MdT¶ZØë»É.ãeç‘368ئ)ÅÕLÁí¹ˆ1Ò² OfÍ™sÂNÓ”-F8¦lS¦>uõÂ9ã¨,…¹½½èÉT®fZOs1ˆê4bž¦eá_6âZ;`–q/U¥.¦ê*¤þS™Tx¼Ýç E@žs!(›¦‰Ô (ÉnÓð¤:2Å¥½îÙ¡øÑ ´"ÈÑêϰ”‘k#Ä¡ÕD!üöËgüçüÇÓ )ÀšðûïßñåÛ ¾~{Åo¿?ãë—3¾}=ãË—gW>âétÂi8aÎ#f™bÄËËWL£¢"ÇdŒ*‡KC H×dª`U›ë©±¯ óíÆaInJ¼áœp`¸Ãµ=Ö¹ÚϬS]d<:|üpÂ_><âtJKkš2bèÁôs¾=ŸñíÛ3.׊áðÞÒ.Õ”O¹¨%se@IØîÈ–8&ÍI”ÑLs6¶Çu‹’–šFðÖYâEl 2N…KΡÿ IDATXhÎ3²Ì˜çÑîa CÉE àªL˜ó„œ „ÌÀ J‚RœwÃ2^ϯW<Žøòë/ø÷ÿóÿÂßþþwüëÿ_ðþãäœq>Ÿñüü ãxÁu<[‚¨ÌÎ@  @‰‘ú©ïoÓeŠ–â™§ÙT”jÏ€ä‚IÍROeÆt~Æ÷Ï?ãûçÿÂôò;ÆË7èøŠCÒñ‡ÿ§ÇÇOÅáé ÜQ@˜ËŒ©dÔä2ƒñÛP¨c2ÊÈBÈ……! P¦†Á,VUâ —Öaâʜ3Ê<yD/_¾B¯_Q._P^M_€òT¾‚ô Ál‡d. ²}"D K@—‘:®ú€Ôwˆ]×"—VÁzàæà‚:›/ƒÙ~ŸÊE_!åL_¬áŠˆÄG( :¨WëNgbK/d˜¢U#È'Ú7j¥?äBU• ýÁôö-FÅ­°>z-’†vl¼š&Fûý¾AØlì}ÐÈ­ó59OðCðêJLi×Üòሶ“nZöXfÙ5ÍäÍfؽ¦ÞM~“b´*⨪“I—Ï@–t²º§ïà³úg›ˆ´·×/DºƒoxÛVºm2ÈFµÔp 5€Íu´zËs?Äî[É@ö¯" •hɾZIž!ÅXŽ90( @:€Ãœ’%2! àx<‚´àõù×ëuY®ç‹É(c!vˆ!‚ü°]•”̆0(ÕÁÀ¦ÐN©w™ /!ñ:Δýbœl’> øé§ŸÐÅ€cßáññÿøÿç—ox9Ÿ—pƒöÀb!/÷Ÿ¿¶‘µÞÓ[$IÛ˜ºwÝ&÷IXûtËMã «½Ìœ 1˜=ìñx§Oñ·¿ýŸ>}ÂétÂáp@è Ö-ŽIh­kÛŸEQz÷°J;ëÓ ìÝí5‘h§¼§Æ0j• ë«2ŠÂ i§áˆ|q8p:=âr—ë<g­†i*r‹E–xMúkdk\Í>-’­¦òG9¨¹pEpk½åǬ©vë‘mm$ÝZ2iåFúß«ÍêÊ|ªë³5މxq-‡ôjá‡ï‹»&1®§A1tÖ” uMKã¶562áÐwxxðôî€Çƒ´ÿtL:FäsÉÈó´ µxš|³w>FŒ¦ôº‘aƒ¢O÷µ”ߪUÿl‹k",×/»=šš}[¡åVõ‡êGÏ\β$˜†°µkÚ±Ž—Ñ=†ÔÚ`âMŠô[”ýp¤6öͧ=|ý–Ë%o"}Ú?ß«„öÍ¢5÷ö ¿{Íì{ ùVÁ´gîýövÌ{¿û­ï»×ðÚ¯“õyo›_U1]_ßÛ|1½¹&mƒë-;x=Y“œëdÈHì…£MÅ•±LnC”?”Ï/¿¸] PÌrã…\ì=ø–ô@‘â0i¾QmÝú%-¢¸æ‘“Ò¢0X­„º<$ö:×`JÉ^§r óå”—I@UùTxC¬ˆXS„ÕÓC–™Áò,±õ »œ±Vv·÷ܪ*’s T,‘„Uü@½Þè óí•RŠëuÜHG•‰x‘Ø‘%9dßµFԭǸ݀o½ÿÍëb›&X”½mQ±•q(s±ÍluYä)‘B3a¦¢©pÀ¦[¾¬d‘¡ ¶fžÛ74gX(°Éò³ú"r¶¸u%‚ÌÖ¦hCe«º)ûŸ×Èø"ˆq _®aðÉb±â|–‚) Æœ1Ï«Kç :_A à}YÀØY2%$Þ`kbQR—0—¨5K1rqƹêJ)Y· mm8ˤÛ86¥uØTH¤@kô) ²Œ‚ÒED!›3#A»Q(â·ogüoÿÇ¿cÒ€÷y?½Çù2â·/_1N_¿žñËïßñíùŒóTÐ+áåuÄëy„€q8ðúõŒ”2D×qQUÅáПÕÀ•˜fJ+ï'ÜÚv©}ëW—²Nõ‹+ìlÍ4§-êÁúé±GyuAqÞz¼{H8†^1 Àûwï1pzxp×ó„¯_¾á|ž–gµ”‚×ë+^^/x½\q¾ fäÅbS !r•<”í9JÓm§öžMeæS7^çËç`ž\¬ oþS 0! ~ø™µ,Ölà ÞÔÇñt‚ÉáE2Ô•e!1”-Ga]WU<Ó¬_οã˜&ÂÿøÇ?~þžžÞc8ü³™mÕlI(ÖfC R„¤ŽY¡:Ce«q^¦’½¨2»ä‚2¨yÆï¿þ_~û'^¿ý„HŒt8áátÂñÝ_?ý¯8¾ÿOKíÔ ]—óe«" dË(T¼aå–$•í+ÄnIQ5[{XÔM¢ªÑ@í¥ ŒWäñ4ëwÈógäóo(çÏñ7$¼ Ñ g”üŒ\ft +·ŠmûOHYqì @Ûw¼$­6K·g´É³´r*AÙؘ@rä%¿ ÌÏ(ù)ù´›"8ô`:¢”à\8EJ=#ŠÌKã;¢Ú:Œé÷ã¢e(½ÕÄùóÀ×Yo›X[¥ñÒ¢Õ‡]cªíËÔŸÓNž[غýì° ïîZ—œònÈÅKsˆv ¹¶±¦Î·4˜:-M¬%Så‡`ûˆû>ð=XË„W´I3ÄzÐÜM³[ )3-÷iž?Ù{¥©Y•„[õZ+ïªM6’Õde,®/$ÏNÌv¡ޱù0²¡êÜJ\œŠ„‚À@ÖŒ¬ Í:Ÿ@ù€$0tºÍlâ“5£` (Á<]Á׈þzô”˜CBçu\²5EBùFi¡¢‹¶lë½ëõ Œ®ï¡ŽÀ²FÄÔÛôŸ×)£hƒÁZ<È…Íš'kB±ñlõnMù£Có[éƒûûï†AÇq¹~|ÏŠTòÄ1ôÞ¿‡OŸ>á¿ý·¿ãý‡>|ú€apx8XÊ"h6¸ûèM)¤9nXõ‹J±µ 9°& È´Zø¬þiš Fe ›ÚÈ;¥±YÛ}d~67°G+ëRùt{È']€$`µaa$Eê`i‚Ñ õ]T0û`vžQ$ƒãG*0¤€‡ÓïßðáãÞ?Ñ÷‰=g¯Û2$ÏÐÊsè~e0Çàa4·]B"€È^Çúp;8º£µÞ©ªYë]ÎnÅŠÄÙ nüüX-^÷Ô<ÛA„Þç¬ÝXÏê¶Ú»Ã¦ÎÞ[ÔVõ–ÕUùØ*xZµØ}ÞÜÛ¸·lÆ•ßñÕ2gB¯½½Oaxö=(Þü÷©0´Þµ*ºýu¸gã\ê1܇®ïíŸíú×6úî½N¦õºÔ~E´ì»´F¡ÖòÃZÖ^ûylœgµÑÅ€Æ)CæŒÀ‚>yœèl,ž"äMœºÀ†À˜rFˆ†Ž®íºÙ¦JÎë"¤Å¯ò,&1võ“eƒ÷.¼šzGÀ˜‹".1&¼xk•ü˧•ä SJ³Yì‚%¨p`¿ÁÜS®Æáˆ1¡ˆINEÔ”)XðB…Ž3Gaä, -P&$ŽÈ¥Nµìs™æ5õ&rD.“©·Ò\·RøWÕØ^‚8·^~v^–¬Eš¥[9÷ Ö¤,Í \D,‰kÊˤ"†°ÄÏG²¤H©³ÈÎ|` R­8E77íø_lX3S².z8H0K™vHñ¼„–&„xC‰QSjštÁå¡4³~×u¶‘VE\V0+ºÁ! ÈdªŸ2BÍ6qá|j¡§‚ë8!8 Ÿ½ÉWæ+r)ÆC€NöÚ*ßζZä”s=ð›¥Ül6+)3Œ åŒ+¬™±sÈ·Ûê3jA#¥‚…<¯â›Œ=#hÄ‹%È× u]43BÍŒl’œÿâ)¥U¨BWŸ²3HË‚ÈR€bòYÊ¢X0˜¯ºÍÌãÛS²LW ª«¢À„DŒ,‚c²5½“•7Rm )FL2ã2&þŸ^Æ RtHéÐ-–Ÿ…ß'BhÆuCæ !vÃNOðøá#NþÇÿ :Ìž.¦Ä¦¤PWOª¢‹Œ¹ï@nã0]ÍrÜs…äZ Ñ¢ˆ&cGP ¤¢B‹±ÄT&Hž ã½ž¡çgÌÏ¿c~ù ˜¾"”oóïýŽ@¯@¹ ç „Þ÷ ŽÐň=‘0$Âq`¤ŽÑwbÀÄnÛ³õ6¹íA¡òÄVô‘‘ó„À3‚\!å;tüšžÑ¡ÌË ÷ î[jm)®d0:€ˆŠ­Uj…»”kÌùmt}o4 룪4ß·cF- ·ôÌ›B·…Ójci«âšÔº*ÜBaæF Ö$äxU—{4õ"H9/Tw‚!Ï¢­Ï·{+{ÍþêÀÿ¥ÖÒ…/Z¹6Æ£¥–ª¥Ö"´–ýyÛb ›t¹[7 ‚RátÛ¸«­ P‚M㪾f4ଛ¨sfTR\‘*ŒB–‚yq²"‹í÷É>¿Ë¬˜ËˆÂg ÿ ¼d(®èðW”|q² )Ð (¬x}~fÁxöÃGtj)݇îÉÚpY8ØTÁÓƒµd0G0[øDMï&!³_ªÙ‹• } @ Àñ#„"^Ï<¿\ðûç¯vÈ#;ì§”\‰#1æ<âIäÒ4µ`6’úœL³Ý»Ã0àz¹ Æà°X¥BŒ À˜çy„/ëñr0*¶ë‡°iMt&o`¤@ˆÑ÷‡Ã>¼ÃO?ý„OŸ>áýOOøø—÷8<™ú ]@? ^£Û$»‹qµÝ¹*§Øƒaç);…UQ»4E”³º§Kv­©}1 j­g† k*7Îé]ôlµ ksA€!)`èb—=(— -6d‰d*æž ïN8{|x|Àû§#Nt]Zœ Eê™Ëï¯úÈa±bÆ7C$(ãæˆ“¯Õ5Ъž½Ê e?£×}•]´PmÍļ0r‰Ö¹vp²q@…¸(ÝZÅT+¸HÎ3; ] ÃþD¬)‘Ñ•z£ˆ² ÙÔîlVðìb“­<=U„X×]Ý?…X~(® ³\ÿ±Õ*‚¹©­íŸ)uf ÝX8c£°Þ7ÑdËæƒÙ{÷ͦzÆÍ› ·¶ùmØ–úY`ÃgÔêšR4¨B—&üÀ·õþ‰n}-‘ ÏQë ¨YËëõ-EozBÒbXbZÅ*²[•ŠÁnÖ[_?«è‡™E 4 æ·¬Ð`Å@ Ur) DÝUe n¡åÛ‰HËMªRàÊý›.î]pZ]ì |"䪣¦3·L^KUKøÄÑ¡ìàè¬6à9…´¹Þ šmJ/@¹,òS©ébª+W¹Bzª®œ±®¸6àPûlmºá,‡Âċꮓº•¨Ën)^ìî%‡+_ È5éÂÇÌ5ã’Ô‘8,阂IV™½ñ‡7Àq{‰âþÏL§¸dõÂ1luæ;”!7@ÎÙ­†;T‡°¯W]'­ámE–‰ŽVÀ;ÌR¨R|c Ç“+ŒlµoŽ5&”\0Í6‘I©GµqiÍ‚-Öz.Q5ETýÊ•Ë*HSŸ0«‚Å_oÓ–"‹Ì˜<}n=H4”`Ò† R–ÆrÜ´àO4zÀ½Ud8›…©¨YÙÈN"Ö,ò)ta`g¤ªðcAt¶@ Âx)èæ‚ó8c8g3„xeû©[:b@LÉìA!Y:X°ë$9e—@Œ/ȯgÈù+ÊË”—ß!ç߀ù‚¾ò¤¯ šÀ4¯vA‡€3©Mƒcˆ‡Dè{ wézB V8‡ØX;cbq@ôCÆbCÃbÅ­ø?å ÑWh~–WÙ-Ô!ðzp°Ãµ(m˜ú P¨Î1T D]mw‡wó–Lýä|UénÓ?­ÌÚrµ¶“õ©B›`š !¯ù{ †U zO]¤Ú°¿dÏÛZ-}V‹ÈRTו]Å·WŒƒtgÃÙ7eclÁò­tlo¼ÇÂÄÚ]Þ`dùó”W@»È[©’² —¤)È«eEoZ[íÍVѲÖ\+j5AÛ£K±šÜRí:Y¥ˆÙ„gB)ìu—bVEãà1‰!4ziVL¢ÆÆ¡3„’pfÄ.!2£cVBöº(t ÇÓÉXF—%O¸¾>ƒBqDêÌSÄ=B—…ÀZ.íZ~‹iáÍÎ!bp HLàŽè/Þ}ü ï>ƯÃãtö+++Ø=#)ˆ€bDôZMã­{3cš¦eß8ŸÏ«²9à.\]ëÜ{Ö—j±‡«¨¬‰Ã^ï ¤èû„¾O†øðñ=ß?áñéÇÇ#úCç „Þ h• Åê"ñ†‹ áÀ2Û]+å¾sE稜®ÍªåI.á5Ì }îlÏñõÂ$¯šë!VT¬!À„˜úãÝõŠÁAõó<#Ok*!È®µ@”‹¥š Hµ ïr&”’º)t1AÌâÐ$_ÓFYÒªi€µn¡ZLTV±EI­¯E«J#º5VņEÄ ·ƒ2Lõ„ âhÊqg¢Y¸OÇ–ÐÙ÷Ç.˜µ„èÆ”gªLÇC»ÓŸÞ¿ÃéØáñt@Ÿ’Í×%ùÙÜÍÚXSJÉø–ÇC”†´lë!4Ê)ZÏé>áŽCÛP²VQÿ«èiíp"²[#×û4ưù{µÖiN}f«rÛþû U^Θ÷ìb{QËê[¬…ôãÄ–quSÕBÇ[àú[Œ©Ûz‚6{Œ5V*×'4ëÒ²÷°S]íyríë¿ÇøÛ'¶5Pýþ{ìïýß½§JÛsôî)]÷¼ÂVµÅ›ôömôtÏv¹…ºËÆRZÿ,2`­=ì¼H/Ҷ ä٦廒°ÄB¯?^:‘|Ó©UuXô†ŸPåízW·/tö¾Ì}bÁ‡³~(Í„Ôré¢ÍZj—¹ÂUè.„­®žö~ãNZ‡¥k¨"›ŽµÙ mM tvõb‹K k ¸”Û“C*ä~#én¦©‹Tô @í]²{[ˆ¨jYšI3Û.:ÓdÜ¥) £¥J` ‰´!]®…aµº—]³n_ìï¯óÒ9¯rÓ[ÍÎ÷i juE¡Æu×$Bv5S^:86‘ðCÒHo=èŠBµŠõ0êS¯eŒ^§Þ0{žRm.Â¥×l]h!d©Òêl¬,ÉÖU÷T“IÉHÅ,‚¢®øQŨÚY?Šš„S¶\'o°Š«¹Þ¨•Ö¥™v Îz¶2ˆK³kùì\±Hv0QÌ$¡6¯LîÜÂÌ@—¦¬Ð¢ÈyÄ8ÉUÆ RW=:{€%\.#~ùõ ®ùŒOû 10ÏÏÏgŒã fc}­I=•ÃÆ>¯œ]˜(L5™*²¶A˨5³rñy¨’±Œ² çɦOÌ ¤(ˆ 躈”LÝøðpÄO>âáxÀ WqE‚Pq¾B c>°(=ÍN[“O®— gš[`ûü‹Z#JžRüölŒ4´­¶èÕGJÛ[Ûþ©ìÏ^vÅjZ¤X ùÖr\'ÁÖÄ)øú£ïû%ýTµ`žgLSö)L4#çâÊÑ@.b¾˜@1¢„`G…ì5–Œy:cd>e‚ÎÑù®.,ÓõŒñõ//ßñúòŒézj@ ]Àáñž>|ÂãûÁáé#R÷Ä:Í€Ú´D›&°*CÙÔ¥Õ·BóÍÊ[êÔÒ'çE‹~/ÓÖÐuˆ¡C Ö”7ëÅ 'ÌÐñ ¹>cúþ;òù7ä×_‘ÏŸAÓW°Å¥1£­Æ“ð¦õñö@M?Ä·¼ÅœÙZ×Ý‹Ù,€ù49¼Ý™?Sñ¦¢[É ƒ‚8s¸iºÒ$Æfeg©’eÓ$'kPJË/Þ£í–Û²ÀjíÂ[v]Öa/‡µy­à`ƒp¸ ‡–u;’% ¦hõ÷!Ó’0ê°R@F(±XóêÐúq">¼‡Oïq<ôº€.°\rAv5`m¸ÄÌìõ¡TRJx<žÑ€1ǰXãzÞ¾µ»ÉAä{ÅÔÝVó ڳšV…ã}nÒ&𨦬çlÃÆÆž¸o®ì‘5{èw}Í1u7çÿöœl¦mˆZ{¦§ý:ºQ{ݬ´ˆŸ·ì{÷xXû3z¹ÓÚ¿—{ ©{àó}ì­ß_Û{×ý÷ê^Úd›ÛZ@ÿL¦zâ­Ïo_µÍ1"B:ƘÕå6‘ÈR âK„àÎŒ Êd\m^pØ'Ä›.¿¥,ÉÊ"ý!lðÞCp.v/ñpMí¸øoac¼D(·[݉óÝ<üÊM¼*Ývi H a÷àßñžâ^S©vU6]Ð)Ôö~Öögן+´û|u§æÚX-ž}íx®©õʳxÌ:on®¶uï:î;áoù‘ÿè†N~pÞóÃZØýºA¯÷Z³"¦T·›ð»LQ!ˆ1-(Z¬UjÔl',*¶”æc5Kìx½Ï¥3I÷8ŽöÙ„´^—å«€]šÙwP³þ‰FÌâÏ^fä¨F̸zm‹‚Íñl¯Œýð¥?„ÙÒfº]㇋³AHaÀvŠƒóS²)ÕQŠI¾'$RD6àeý c×;ŸÈìLæß×R0M3>™0+0MŒáx@x~¹âõ¾Ã©?à*@ Œ™€k¾ k1h¶K{9ä ˆÎ#;aš&|í_@‹Êb=ì‡*¡Å&ã ¯´=`ê2ýkÕ­-p ܤ…Å^²YDšÃNpÈeeÆ`ë§ÔýCÅ›´ÇãÃÐ-:u×AwìŠ IDATk’M)Mƒ¯‰ Á¹W¥D@‚%• ™¯Èãóµ$£„Å‹›qq~9ãùù/Ïßqy=/ïíéÃG 8½û€áôÝÃ;PD¦ˆ’ ¸ÞøúBõÉ ‹•iß`©÷PHÊÎÑaFLÉì)!D^lÜÐ Íh—ròÏÈ/Ï(ç¯È/?c>ÿ†2ý Ê_ÀúŠ@£¥ R^Ô1(†ôÑŠõaŽÐ÷@ß©Y¹Óæ#8<‚ù„LÁcà ŠF[2,s«³®Ê7hùÑ3ŠLngˆwpq³Ù«h Nã¤Pž¯rôÚÀ‚þÄþ§Š(ìLüwßJ!ÚCdï7¤vÔö „x;(òv­ÔîkÛÞí’ï7ÅXWeî¶y…›zê­=â¿ûL¸±süÑa|ËXÙª¼,½öö½®êÐ5ñoå]atÞ|¶‹åE7!D4y¯ì°5”6+¡È•„fœ‹ Ÿrö¢zPbSUÛAÜ™0Áà1Ùþ¡Î‹Ê°ƒ×µŒ¸Î„A×ÑÓÐXÁlvBˆ…¹€ §ã£±ý¤à<ޏŽ/(„ÔB‡ Ã`V[6=‘«‰ª«¢Fð"Dl<Ž#À¦&G1[p=|÷}oÍgÖTà1q=¬{²)3R0¶:KIœ«òÔ4°˜ã8‚ȬYú Cñýë7üüóÏx~~vÛNZ®á2 &Ý@½CèBDBôO‹ÝXjˆMUø°§¿©•l<‡"(ã™Ê‚Âr8¯øØ(f¦ÊŠôôÛýye“¾WïAï ÄòŽ´Ú„ëðtßÈ xTyÆÚž_Œ½E1-͆z-«Na*z* a€¥Áè&õ»Âáû¾‡ Ö´K\ k1Yúä>©¬eõ,Ï'Ó¦ ½Ô&»ú…𝶱MËûS UÆHÐ%ò¦¡‹Æ6 qåÐÎÅE$HšñÔÇ#Í.xèN=ކrЂœ'ãÒ6õòX B'¯Ÿ-PS;ã …†¥¸ á^T“Mè–­oó}ûÙRìöÍ­Âv›$·oÐì!Ü­2+gK¶G»¤”¶‘;{lmµª«VÙµ‡‡· µúzjsº=_·{ͽ¤û·öð{a)÷àã÷žã{M¤½=rË»”BÖküŒþ^cp/Ωõûýäa½qÅíÿY­àû¾Ãz­PT6Îý÷VU`½ÿöL®ØwÄŠ< ²óPK ƒ8š&Ò£¾#!’ çsYad"róðTå†vUëx¯Ó¸ÛÙÁŸ‰Ämo®}3DÚï±ùÑ,¯NÒ,¤ÎolÚIð}O©iyU¤ EUc{:¯Ö>.›ýÙÈ€Qa¾ªˆ«¶ð·hñ«ŠOE¹ÑêM”už¦›¬ú€7P¾ú@û k0x‹½=Ãø©ù…C6ç`é^Þà,ØÞ„íhÛA®EP½yÉ¡ùm"Tm<¶˜m…60Ìzqjê`«¤EýT/©"j„4ê¬â…'ù.⌧5¡‘`õ  È³‡B_U uZ¢Ä˜«êLÿÕüU…”lÊ=ÿ‚¦¥ˆ@°xídø!·×¦æ³XŸ)ç°øûTlXêÒ}ÅÚýæ;gŠú<0­8wÔYZ‡U]àäsòBDDAî­žæŒÀö¹%6 s ‚>œ"à }Þ¦|‘`¿ýþНßf¤ôÄsV\.#^/³sÁØ=ònýd»–°U›/t¹U}(8b`ÄPLf¯yiüRðµ³øzÔ²;r=TÅYE#´ŒKzôa°«S²C¹Y)™r§ tÌ¡$çÆuÉlˆTæ f †† ¹ô{³ÉI[‹qtnN¨Ú0Z&-NÌž€³,™!¥€Y>jÖš‚æ›è[Ѭú†€aèððpÄ0 Kü»ª"Dndä³?+“"eÃ*¨Í+@Áš )@r€äT'ŒçïVPO \0ùAê|>ãõeÄå2:ÿ¥Cì ‡Þ½ÿ€ááú‡'pw€†3¢Ùß!–:ë{ƒ®+ãÈÙn9V¨®°buum4öJ0¦Fß÷è†~á!2ŠCÚ'P¡ó+4_¯gèõ;ò×ßP._QÆÏÐù3¸ü*ß0"Ex"‚óà€]†<ôŒ¾W›lÚ”LÑÈG0?‚ø!œÀ¡we†ÚÃâ b&³jšÁ¸‚Ê%‡Ìߺ°ÂݾÿŽŠ@ ¶Ÿ6ó[#ìØ ÷UuÈ0Æ£¨ÙI£§Á­šBýÿ$¨ºmÀð¶I+ôÃõﶸ»Ó¶ ö»R¦;–„?Óè!¢z¶]uð¶nvÕíïÛ¥¶ÐÚʼg¹Þ¸´µíQÃÓ¦. vì0;ηX„=O‹o{NÍ÷«Ú+xû×/­ýç̬›Ÿ·ÚWuò¾aVyÚ÷S¼‘*ÅmŇ S:²4~¶ÁMËcªûxËÖèÚ¨œ¤ äŒHŒYfKü. †f[z"½Õ'¤Ôãpz„2@//xy=c¾œq‰ß-8!& Cgul0–DD”,à­QL´m›ÊMúô½”ÉŦï‡Ùe¸ÇŒmí›*W (Ù-HL]¿þë¿âåå¿üò `Ì3ðoÿöox||Ä·/ŸÑu²LyF™³3wŒíS-‰* ÆkI)¡)tèC´ú6t¦âWE‘³ŽRPû*È3t‘Ïgäñ<ÏfÕ9ý@^Þ¦iZö@fvv)¡SEJv8›Çé¦q|ÿл=#‰×oU§rٱ쑻m9¸ ÐÊèõ稆-Ì×ó˜q8p<qÐ\0æͦ<Ë5©’MÍNn+dì´Ú36hÂàéÁ†p)Ö,AŠRL¡'%»´^CAbñt]ç ô°Q`Õ˜Ïdá<­ƒãÛóm›¢×uÝÆ·odíNowî¿[‹î=åÎÞFö–8å-Py‹%Ú7êbŒÖ\cºR í™tß0£8¼ö ¹·ÐíÏß«Íö ãýçÐ6î)öÈ}“êžÐcßPÜCÔ÷¹}SèÞP®m ûÿ_ù™­*koq\ú¬7Öçö¿×‹ê´ÞßÇqè š:sÆ4Ûž"¥t-±:E¿iƒÓÐ'Ô ú¦“);‰YMåðOTe‡å=¦$Ÿ¥,P€7;’[[ãšöQ=ÂoEE¶òòm è(×°Z©ßöáæ›ƒxû÷Úxß:9¼çm›aûϪÆÛ2ó"¡¼Gõ'Ñ›îs¨“Áf1 Á:á1Æ•ƒ#Bp[fÀ›A1þøsÅÝ)ó6•òþâq+m‚–Ȧ‘ZHä¸ -µ€­j—§2aÊ _0k³’ÈÙ6j!µy ÅA§"„@Šëd/&FÉÖà¬Ü0+’*ãgF)3DòÒ@´b1S@vn™ P6ã¸Õ0Ã:£B¼õ@«TAç,Þü3,¨}S‰%´6¯ˆ©+­li¦5ß˺Ú\ˆÄ¤MhKua7a7æœM…T7tò´E±©â\ó”!e†Ò Fq‹¥¥ºÑÂ#Rd˜eát¬›ä(ñƒW µI^ÓE D bÈà¸òƒÔ-’IÌ6Ddõ©QQoà Ê|Åùqè;³dÏlÊ"Qd0C/§ÈóRFDXá\Êä96¡žÇ+¦ñâ,»fªTÓs‚‚#Â~è &M6’7Ñ˺¶}ÞÖ5q{иµ÷ŸM}å-š@G£w¾fµ† ¼çzòe{ µx뺈i³W“‚Cç6'cøÌ󌜹™ÈÖ¼YÛëÆ™ Jž0„Ü'”Ù®ãH • ¦è `¼N˜Çãp8"õ'NOŽO莈DŽ~€RDAðgŽe¥KÚŒ¹Ù@íÈ®0j×Y]@´ê€ÊÔšØxe*`ÍÙ@þ(3t>ƒ¦äË7L¯ßÏ_!ß~MßPò |ã¬gÍ¡ö-)r1kD‰0t„>ƒq=†!"v1Sf„£+:@tó° 7Ìj^L¡À ’Õ«¥ê 4¿Bó+J>›q•{ÀÕ\J õ uˇìíïÊ^YQemN5û+/û¶Hn ø! ;ÎîÙÇ~ ÆºÝ¿ôF¼U\ýqCí­‰éŸéÌYÃMï¾÷{u~…øÞWéfàwOIöva¿oÄ­õàöt_e¿ân/W¼¯Ýkí±pÉÎ2HwÞ?½©´Zb^B°n”Þp?ÈS­y%bûÐ4Û=\vvýÚ¨–1cµT²†&ŠÀ•}/*b*Êl©ÁBÈÅ’¹KT„)¡CÓ¬èºaiÞQ\Æ ótÁëËWÄ®Ãåp3£Ž^Ï™"©Hö´mO£%ZáùZ‡fìª1Ot\ÒH×Ã]P¯I¥Xš'äC @±4{£Ë`Õ¿üò‹)dÏg À¡ èû1F|ÿþçó‡ÃÁšYß¾áz¾Ü HjÝ›º€a°˜C—Ðwú˜ˆÁGb¨†œsF)——W”÷¾9T÷ß}sè&o+4÷?óÞžüÖ³´oh¶Í­¶y•s^®Eí´Lí ×¶q¸ÝK/¬C "§û鈭Jl›Âºý_d¨Åx²"“ ‹VPç¢ÈîÛŽÜBmÓdßDi-¢6¥Ðxfý.p=Ôj]²ÃTþá}¯{»% °µ·M¢·¤¸›fSõQ³m¤&;°×(d‡òú€Û ˆ@BK ­ª}F¡)Ì–Äþfª’ðÂå³óy¼@hä–1Ñ:MY¥”¬wŠj‘…铳øC¶‡;z<+3Vijåƒâ¥PL!ºÛ¢„C ³£xº›ÒÚì¤æF¬É‡`ÚJ€ÚÎ<Ó2a¤v•]‘ؤL4cåÕ&·üo¦ÈKcuI²ÆGðÍ®hKGâÆ_‹¶œ3Býì#Éëa‹è%ŸZ±†=8 LÓ„jܯ}ÍeM¤©I"þ ¹;ÑšfVHRG*bM7c;dP‰À¬n5° €âéW+‰s‘–+®ìžÖJ«w'ô&ŒOÅ#ÝR»ÃbËÍP³ph)(…P‚¢Aãë ‡€¤ .×Ù,žE„1¹XcÏÛÙžÀbEcΕϰN3˜Ùµ Öh Ä(bz Whe›à1™}q9ÌD{¾f}lU±sO,•pv…Ðëë«Ù¯ ÒÜãÝ»Gô‡¢Ã¯ “qDfhQ‹vvÙF·‚P èÃ'¯•R¶Ã~L=‡~þ¯ÿ„HÆù|6{j ’+CØ-p]ÀñxÄÃáè`öÃ0,is†hç šý}–í²12炬WÌ“¥ÿÍĸv×ÃÃéˆñÛ³)g‡ÁTMK>Ž–ÊJn‘ìS‡2g gho1°õà¿oàÉ5(Šþ˜•··T½Õx_š=Dk’a# ¨¯+†}@ßÏÇ—sÄùìƒÑl6W!†p{Z½À†Uä‰!ä³—vžzwEŒ²¦á5{ãžil5¹,µÊa^‡¼ :‚£jz«=ׂH´ðecP<ô ]RòûÈUÞÁ«[¨tÑ>ïžñáýO¼?"[#4ØÃ(šÍE L“©(]°ÁÁÑE0ô ‡®_š™€%t_×TöóÏÊ(¶DÚ54¤U—µŠßˆ¹×+Ô°Þ~ÄhÚŠ7îÁÀy#êPÕÅõbëZ³lö’j%¶&ï[ºkša " âÍý\-å÷/ûç=e#3›‹¬îVͺwk¡¿e#ÞCÿì÷Ô=Ÿj/Di~ÚFRk§Û¿–{L³}ógÏðÚÚóõ®:îÆèG¾ZËïmŒû=`¯jÛ(Û˜ÞD0´Â$ݵzFóæ Ê<" %¤`Ð<Ï€4$x²7ÆT㾊¿ÐEJ¨j1±2[áza)Fî6¨þ€ûÔ~èû‹²€·]Î6º6„°xãÕ9Qí¶¹`â1Œ”ïv¨—Ÿïÿ¾,L¾êþÈŠ°þ¾°pRZöÕê)®ÉBv}åÆ÷ºO¬“ìí”ÃÔU"ua¨~Ô 5G„Höjgy[¼ï;®Õ§»\—Ýk,*onÂ탱õÃÓ›¹Íæ‰UmÓ²(Å7íåÓqëS-È£CÙ ¥F‡:‡HÄšŠ}ê|âfPNÉvhŽóN1Î!‡C)pŒÕu±IÑ Íİ*ß*ô»•‚fO(„2´ïBÊl¬9² ¤0Ôï:%¾mª¶–»ž¼I ú#+‹Š˜Ü€•²r'irroã\í¯­Ñ¬BŠìÍ»¢@p…FÎÙ'‰)Fƒßgxƒ‘­™³$2óÚ¬±¹0U\)Å>‡P–÷WÄïs,F»&ë…ÀÎèÕ#ç5€Õ_Å7>T™²å^®jÊ++jŒå4O‚çï#æé+ί—kÁÇïñé_þŠãé„ µ4&Œˆ‘Ї„>FLR ˜FÁëëŒïÏ|¹àõzõM%±'Ä"§ÉŠŸÕkpnʳóC`wzš-œÙ ¹ M_¤¾dÞ@Áù(}ñøøˆ‡‡'ôÞÄê†Ýp°é­Ûkj*Ê8Ž˜¦ Y“„ÊÇPÅœ§Eé[×O+zÊ¢"¨Ê]‘ŒÒÚQßsLyÆb*Êq4ŽG`š,N¾L¡8ÓñðÇÇ8>}D!l™CRk EXåD %;HR£æE…_7ðÒœ3Ê4£L£5Ø Ð" °(0]‘ÇW Zjg™g \PÎßp}ùŒñùW̯ŸQ®ß¡ó7ù ÒWKV¤ŒH¹öÔ8 „ )}NCÀzúwP²C§! Ü[ªª0˳k¶v“87$ƒò+rþ‚RžQ0zä‚H !‘ø@üpoÉ(PLn/SÐÚN^ÖöJ`^ùIµ¹„ •ÙÓ ñÃ"öÿKuMdÒXÚ–Ünnc¶ßÊÑN¹ º¯Û¾/þñ‰·¿{“ä±PÚÏä¶¡Ó6”pWòFŠóÞûh!÷>çÁ¾¯ÿVÅ•.½»s’@KÑ7e®ájÉ_kŸ 2äÞs[‡ùewp­gõ‰;ÊÔY¶îÂÖû¾ùµ›®Û¿¯#®ãŒ±ˆ‡ùa3¯Ìã3Žý°*îZþX×!„ˆóyZþ¬ž!÷œ£›iå­êÛÏ.jžx0hlU5ŤŽÐu C"œ:¶¡)DfSƒÕÏNgÛÞyì:|x:àÓ‡><žp:vè;Sš‹f™—3a™-ÉâòÒ°MœÐ úãÁ;jû‹}a‚,MÝæ¬#šVË~š³l’)«µ¹=ÿm,[rËu¾çj,÷XJ{7Ó¶‰¶µ×µj£öŒ~Ã%¼³WÅV«Ûp ôÏ¥ï›?ûþÀ½FS=»þ¨žà;çÎûŠ8Ý4°þè\û–qÿw[¶W­3Ûõ#ç¼y-ígÙ*ÞÚ>M›$¹ÀÒïÜ“{ ã=Ëi«LÛÞw^ÏÓÝ>Kýü%œâ.Ç-2)(R¥KØ-D„ 0g`΂) R`©ÅÇ;±9Ú àÇâlŸ…,ö¦;ö?W!U+hk7R÷¨jËEÂ^¢·&R܃Ÿííƒ7GTë•{Õc‡ì€"ª °Ý¢}=¶Ñã.¥c¿ydmd‰"²qM²Èr±L­¢k£¬]]jìi•{àDM„`>PÍÙ§lªª‰M¤ ߀¥ù}vðX›‹vÑÃr,uJõpíú[!"Þ¼´C¬@„‘Ro6Èj Z¦kõK•RBhºÀöùòZĸå!F_¤D¹ Š\ò&–¸N™ë¦¼0®‚oº²“÷/R¯°Œ=©ZÝb¨Ù<蹨ÔTMñÏMÉÇ)9\QÝ6(~0!S*ªÚÏaŽ>½)gÁ$}ß»­(`œŒuEb@Åõzvuì¿«ó£ÄhlŠ@Æn¨ÖÛP ¸(d`ÌW1ÞRß!…h Ä\¬‰å0Íâ±é¶ïû„ª6hÎQuóbÝ(¥ ¦¸é„·…U•„W+"ïì°žè÷ÞœËÒ@D©‹Py&pH&@T dà÷#º”@̦¼*ÖPÌ"˜fE–QAÉ®W´‘j°`–µIò\ÖÈe"°")æLÎã²ë1Ï]RädµÄœ>]ÏH‘Š1…,mȸ1²YQ!BŠ}ãdÍÄqšq×3ðû— >üôŒÏ_/øûû;Þ¿«¢ÌJ º׫ _¯Ï¿|~Æ?~þŠŸûŽë¨¸Ž³±:êÄÃEŠŒüÐÝV,"n‡qphv¥'ãD®Å ØúÊn,²p'˜€Ňwøøá#úã‡ÓÞ¡?—¸ö4ôˆÑX Ó4ažgŒãˆë8áùüŠë8â:^0çyÌ5…ØårY×° ØÙ"–¤lª-^ÀÊêÍ0Á\2ÂÌ ÑŠ‚i¶M1p2žX„¨±¼R쑺(õé€Ãñ„BÑÖ,KQäl Ârˆ%˜}dwõ`/¸^^p>¿àzyÅx¹¸]Øø!# ¦ó+®ß¿âØhPXq™ŸIp}ùã÷߯_ ãèø _Àå; ] H—û9†`¦%2h{—€ãÁbÀ}c0ÄâiøÅ`šÀ!8Ú>SX,…+T&ä2ƒ¤€Ã*_Aå»5ÙÄ#Ý‘ŽP~BáŽP@ ’¡>áà -Oíã¥X¶ZBJñ÷gŠBçHªñWæVü†ÖFúV±«6ÅŒ›ìVÍM>~›a¥K-RÆV[ìñÝשr¢{«ØªÃrŒjÚ­lŠÝš¶¥;K^mˆ¬ª/ gEº‹þ¾½¯Š¤úrkÒíªüöä]ÝÚ¼Q»mbÝ÷ Ë:x=ØW½ëò÷×ïKÝYÁëÖD ›ÃÙ_­äþ¦”›¡×!`¿M\­‚\šdÁ ÿEVªº]˜™LyÅîØSm÷'5(#ûë †‘«éÄSð&/)0˜s¨ —‚& )1X@ E9+@ÃáAÑ—ë_å³—X„¢§ø˜'tÃay/Už½(|cD%aIóL-“ÿ¼ZÅ,u÷a±YM™üÐE!!³‘M׳×Ú5mZE» IDAT,/¬kR)®× ÿüç?qÏ躿þú+¾}û¶Ô•ó<#³-Ž£YOÇG<>>âÃÓ;³ýu64á“Õ¤—Ëyœ0MÓu$ É”ª!àãÓžŽ'û÷~`Jø/ß¾âõõÿøç/øýógpxÍ3ºã î†ã(2Êá r?›ÃÅ-ôõ³©k3#õÝöÙPÚÙ—õîp¿Ÿ7û^¸{ÈWÍW˜ò:Àlž£c^‰Ã0àxнD¤kÄ8Ífä¶öó®ŸÏdžWë`±úkšæ5¸ž®†ˆÈØ[»hQ[Xƒ¬ÖóªÒT1”Ùˆ€"Γ5¦Õáq«¶»½òè-uÓ½fõþuì­ÂõÜßBï÷Íß{ÍŸöyÝ[ë5®Ïk½öU=W¿·žÛ¿ÓZJ[ðþV©u0·Wǵë SÜ(Õêß‹9Ï«¯Ô¹(¤ôÿrönM’#É•æQ53î‘Y7v“\ŽpþÿšÙ}Ø.ÙdwUefÜܘ©îƒª p¬ž•’¬ªŒ›Ãq1;zÎwÔ¢5”b‹¢Ô¨—MçÉAÖJÒÚö„E6§ûÀaº?% ï2‘>zƒÿ¨®ñ¦±çžÃKå~U%¾úÈ©ª Û­™ïö>Šh"›u¿ŒŠÂ»MÑ!Êe·ˆíÕçÚ èë~¼h¶ˆaUdm“W§r£¤÷ÜUn0¦ýÊÅ¢ ÖjauæKk%<^d[£µÅotû wŸ£ío”u¡ÃÌV—{x_íBå»ç­_rË c—F ti¼ûÜy-þþ.ÛÃÁxV.)Ùu¡Ò˜b[[Vö÷ÙÜ=5ÒÅî¼²†"É«ÿ,ß+Cô›@ê"®N ¬Ð‘Hp¦ζx늕->¶úXTö-“†ïo-TDn%ö˜&Ãìî¤@‹Š¥T‡Þö½bt©ÊÝzÝ–ßä k¬S‹Zrsfí'ô¶ЮaNý¾’³O„°vîˆÕ–Ëa“%8žoeãøø>U!ÌæèB.l¢UÌ«bI„)+bP\£b\!18(¶h!sð#[o¼ÆvQˆ&sí)AJ@^ë¼Xð·¯oø¯_Ÿñ·_¿âçŸÄOøütÆÓ§œ§ïË;^ßßðíå ß^/øëïÏøÛïox~-x»dä¬(ê÷9<ø •NŠHÖ¨„ZW@¾©öó]yE‹Ä@Ü‚±7G’30Ž#žOx|š0=<àt~Àtž0O§>ýðÒ8µˆÀ’ë:c~Ÿq½^1½¼àåõÏ/„÷÷÷mª×ÝSïå㉑àqÜИl¬æä“âBò<7A«d(#pBŒ %ãø!Z3¥-ÔÄ84`0€Bôûƒ€Å–܇«ܤ˜¸#渢²‚Ê”e~G^Þ‘×+)‚к \_±¼E,¡ äW”ÌyFžŸ±^~‡^¾ùȯˆrëD3¯&r›2§`UáLŠÓÉê½Ï§ˆó4à!žpF 14áÐ âd'2à|hí¢å è • ´¼CÅÿ=°¸0?‚ø¦ t¨ï?gûî5_¶ §Ž0÷þ{l_·ÿ^·Ÿ¿w¤™8Ó~¿;—=ûõîæ§F˜?r†Õû›–ûºVÆÓ¹M?^Oê!–BîÆN­å(E«;›£l‚]90wªc‰Ù®É!ú°4("¬ü‚uÛ¨k­ÔiQG­¼8gF/I,X© bÁ,bÂO6g>…PðF4†ÊÆÛ³õyÆe^ðöúlBÊôŽð–N„4 c¬Æ›€X´à€nÓýfjiò!mÉ rGô±‘¹”‚¯_¿¶ïcœ$ce-늯_~ƒæ‚ëlñÁÞyP7¤çÓ xzz§§ðùó'œÏgŒãˆqL)R2Ö‰âm±–BLàAñËO?àÏ?ÿŒ?ÿò3~zúŒÇó„Çóóûïïïx}yÁÿù?ÿ/üÿñ?ñõõ ëõ‚¯Ïß§<&ŒïN§–󲬪¡Q­^½s­nö{þÑn­ûÁžêæóþžÏöÿœ+I¶vãàëä!a˜F Ó„ñdBÖxÍ6TÔ[h5sÄ<϶–×=ÿ¬ÆxS²uAÊëQR›Øwžî1>TQl%RÈ;Î{Di#¦iÀ˜ŒbkΘ—Ò¹ilð1Æ€óiÂyŠøÇø§„§sÂ4c’¢€I±JR@ñá©d¡M\«Í‚)™HyFp²˜%ȯWÙ’1m‰ý¦¿2Äöñ¸mqÜØ]9UÀ:¦y ûøÚQðØ>»®îEâŽ{?:ÄñŽŸÛ ¬zçþ£ÄÍ=a¦¿·ßsŽQUdÚ!oñ¹»)¬R¶cãܲôŠ*"õ÷´þ=èc‹÷œMAìû„ÓQ\< fwïßaR£‰GaªÿüÖ,{xO¶Rt]~ˆ`&w×F÷õÑv_¶™­ðobB¤€ Á7†jeAªÖ¶â›cC—¬ÑNHaˆI·{øä¾B˜öŽwÂfÕÿHˆº¿·(lÿ»éªÛcÍaPn"…¨Ü«; Ufvà°ß@ü—åf#·\QiÜŽ •µ(ùkÛ.« Þè‚övx?N\3êÑšúꆓdkÒ ë¥Y4 @è¸c¥øfÄ¦Õ õ¶¿ñÜ©›¼vç ¾¦Žíâ"DÑÊWªœ®Ê€²…Öö–yFº^ÄjµÑDìÓQãJ?çˆÈxn÷ݽ'L;gžº8AwrÇö³|"ïÿpcsÐæèa-¹úÎl² R€Vø46À7Šo˜¶Ö;GÍ#S6T.&b [l³:ætkO”CîzÛ¸îÙ'Uä"çw 2™xµMÈÖ¬XBŒŠ!æd±¬ÀŒDV±##&FâÐúªŠu1_„8_sÁšíæ=L®ë ^ž¯øÿ+¦O'<œ VKDx¿Îx¹\ñzñíýŠ/¯¯x{¿bɪ¡qÈ#ÞEŠ1ª8XŒ‚à­WŒµäù  c“ì.5b™ýaDE!J¶MWO'|úôˆ§OO'<<>"ŽÆó„O?üˆó§'Ä8€£]ïSÖ<à: Hׄ0 ˆ)Ùô}^±òºsÈ\¯WÌ󌲬ÕêËYkT’X¹- ”óà¯e^2ÀŠ,1¯Ö*Ê œŒ™0/„4}ÑŠ¸$¯±g«±'EˆÖLiœG4Xñ’W²8 T€bÎ**º®È˺\ óÊõËû3Öë4_¨ &ÂÄ(o™°¼Ìx‡Î²¾Có°¾ù´¾ò†H Brç`d°7˜ ‰cÁéq§ÉÏc8cˆg¤0B8AS2ñ¶>ƒÈ7Ëê1^ €. ’¡ú)_!ù"¯æòÊÅ# g€Ïô ÄO~0@%¶"Béh±G_s »6µ«€Ø˜9‚ZcVml#3àÐ¥Î×ÚCl÷¬&•„+ùP¸ú¨päðök}oñ×M¸º²É1nH÷·,,Ò;`õ­ÙîW=Äí¡¤åÝu˜m¼¹ R/²9À¸ñU¶Ÿ³•Ó|O¸Ãw9V{|¯{žû¥w„.Þ9Ò¤m¾FÍi_ãˆNÙÚiÉêÏ×½ˆgN>:h¬«ö¼`s´V—?`ÎwõõrJT×:IÔ¢ß1F)XD‘äŠkvGšˆÙè €•cˆ#x ˆ$ò޼¬xùö Ô˜› eÆ ¶^ÛE„¼ÍöÏ—$´¦Ù~Š^¹Gu‚_J…Ó{«[)öL1žl›I’Ê.µu 'ûºëå‚Ëû«•D€}MCÞôbh"JJ£ V#†éŒá4aFœ¦“ g̘¡©€‹E¶b´Ò•þoÿŒú§ÄÏ?~Æi0 ç‡3?â±^Þ¡^__‘ÿ׿!¦„õå+®Ë‚1€s”œÁ Œ!p!‚§V¸CHlbCWDtØ›Hw[»×èö½}UßOu ‹èÎÛ[7”ƹœp>Ÿ±ÎœÏž_ßM,΂L¹Eç{a+Üð&oòW×Ü#cŽ()¶÷}j‚rÿú7a!"p°–]˜s¾F¹#Y7…€†0Ñ–:RPd‘9³²lÏ‹!Oç„ÏŸðËçG|zœðÃÓNc3!/+Ö¼l"‰-B¬ªÐ²ZJ)F ÎÔz81T†pŒ`xª¤6…XFõzÉî­>p—"Èymð@áÃF:ûï²;vDÔ`ñ› pÓGÝ ¹_V/Põß»nª0‘snH‘^íclÕÈÐGõNÓé=‘¤~ßcn/–QcšZë{¹‰‘ßãWõ–ï »Ž1Ä£2;Cêm?Fî>zíGóO…¯|ª{_s¯ âžèu„Ëô¼>Š["Û{ÞÇK·cÈ7‚g¿_ëKjÃx/Õs#VUw›²±çðíAy™­í,°Ásƒy4Ú|)³ÇT›«=ÁÜKÙduz ¾øÒÄðÿ¯ânÐÇ ä½ºIk{‰7à6u#앵¥¯Â‰Ìµñ ­Ï‚OÊöF«ÜYÈnõ°=ˆñžª½Á½ý„r6™-†sƒÐW ³YÚëÏŒP¬˜'ÛÔOÑUÁ7!›5Ø)Y Îøê§–Š¢¿kÊa%çÙ ¡¹¬ˆhSøßä•VÍ ÿ®Ç–wí›â é¦òŠ×àB€"¹µ/BŒ?UŠ÷66AdãliåA¸KO! X«À"å€\¬¹(‹µ†ÊnÊöSÙÚ Á5ajQÀÈ Jöó„ÒEOJ)V¹ êàüöîÅP¡ù¶íd±ÌÐ ú-Ê‹_êÃÀF[p“‹¢5*ÑÞ‹È(Ù‘"À¼š^T³-hr–bBÞ"„’-¸E‰>C2¾‡š@YáÄÊUtý°¢9´nf}WÜEê‚@dEBŠX€9†ÌVDØb)&Bœæ‚à-}ÏŽ …M¨,À*Ѧvð×W\¯ "R4!,„à¢fÁ5¬ªÈ \sÁ\Ô˜î¤b‚ÇW놙¡lÓñÈæ¤‹!˜«–íýâã­×«9ë¤ÛÐQ X µXV)‚5XVJŸŸNxz „d›6RP¸.oïïxùò;N§Ò8áòðPÁÖ]즽lkòu-ói›ß„ÔèXŒ±›Ø×HÔ}6Ìq}{¿¾ÞÿØæ¥@ÜUQ×l[ìíŒÓédBÖpÂ8&¤8 Å€’W+ =6á§_~Ä?ýó?ãOÿô'<>N‘0ŽÎOˆ V‰—×Wüô?ã_þõ_ðë—ßQ^^1Ž#dYPºÍ[å Ö]Y¶wÍlP?’?¨n[áª;õÞ†óè„iû"ÝL¶Ö4'…hÐý!!i w{°àÿ^7žã8îbÒU, lΤ%¯ˆIsÀ0غ¨:µ{§Kk-sí­™Aì˜ãÌq5ØÓYr##A-ä­i´½ÈyðãÓ„_~úŒŸ>ðÃà §Ä<#¨@³Bò‚e±¸!s°‡®Öò"»Xv>ð0¬üª¶Ò†žÁNèçøp°z'Õ^D²õMˆ?C¨Å-ñaÛÜ‘Auü=—í(||ï£w+Õs¿ *=rF7ûÜ{n {"ÐG)¬£ÔÿÜcä¯wÝû¨úHß’¹k u³È='Y½ê׉šó Oì^äî(ÖŸUÛ}AÒæºÃîþùQ»â=ë}ëÈã>~Î~­ÁwïÝ7*?¾Çâ†þýÎ9;j(޸΢PÄ&½U,w91–Fm:+ÕÊ)qõêbŠî\RjµÂuhXuÒ|4ôÝÔ=¡j÷y5CWëQ?zTn-èÌݤ·¯ì®‹ Ú€Þõ¤¯_QODTX2–Óf1« nÙ—ZIäѰ®ÉÙŽlo6,š‚UÄÊsÈ –Õb~ó“ Ëz·cw™TRAˆC{ÍýkoÞ5›nÑꮲš1ŽRÎ^™ë¨)oŽc¶xU1N ¯âL­ìÊ]â]Ó„:¼WjÓ†î§Àuq;q[@ªU—Õâ°ÚÙ¨{ƒ‚×8‹»êH}_›Clª§‚Ž9kC‹ÌÇݵ¤ÔÖÕá$\ÄÐí³HSQÆZ€5ËZÜÍ`ë)ÅZ[êQ†o¸D+4gc¸y£2ÁªëÊöóbÝܰs„¨:.ŒšóÌ„³:]îÎ ÌÇèSdΨöŒv5±ÉX*æBS,«9­ŒÕíÛ˪¸,й±0VVdqñXƒÅm ¬DÂã«/ªp+Ý…/=æ9ÖÃ9 ÇûŠmð‚Õ¢Hþ0ôˆVŒ„´(BDfo4Äî¸j­P®Qw8 óuñFOw‹ª"Å•Lh¾Ì æbB]qhúªsï5‘¬¼¹«ÈÎY„º82·![Ã%Û¢0@wB5´+Áp¨ÈÒÊ"ŠŠ&¶×þéó& cEFHŒ˜Ò8  ˆnm.ÅØ+JSÄiHP½â<¯˜&‹.óŠ·×w,ólâem‹}iB±]ë &Ù-ÄÕ¡üªužìÍ…uš$¹MjK!”üëª1ᇟ~Â?þùüË¿þ+~úó?`x|ﮏÌW\.3–¹`Y²qçüþWt…d«Ç^¯o@^!ùŠõíóË7\Þ¾áýõ.Ï¿¡¼}C(D¿ö˜)­HQ£"P6‡RfH¨,HT€rË èŒH‹‰¤žBNÑ>¦H"0&à<?‘hp. g0Ÿ­BW½,züýÞ¶Ìx}FHÆ&ZRÂHJƒ1Æœùׄª`%[?H»†áëæÚ@Ø7nñÕl,­bk)H×¢¥‰îQ¶ Ö¶‚‰O„àkÐà Àh.[ §3ÆÓd ÃØÄ-sš1Ö’¡ŽmÁi‹® CÄãã£1‹† €$BLà?OƒLÈ¿eðüü?ãá錯/¯7±› [W ŠˆµÔ¹HcDôkÝ‹ <¶¬ˆ@˜¾sßù¾Côª…ºÖÀ ‚2ïÏ?Ü:±N§N§ÑØd²Z³&³s‹y$Â)©s]°'­DÊ\A% ²c4˜×›È2W;#››KTȹ¥Ñ†©çiÀé0Œ!DH.(°óßÖç†Â›ùüÓ§§iÄ/Ÿ?ãO?Æç‡†°dw ¬‹@|x(J˜óŠÖ8NfE Ó:?g-D\ç‹Ý£+¯ËŸûŠÊÕÓÖΈÎgŽK'jì&rçc ã)³ß+fF?ŒÚ™’ï:øúý¦­1i'€÷£÷b~÷„.wÍ´a%)îŠQU¤8rá¾7@º×Î× :zGº˜ZºÓ´«wLDz¸Æe<Ä-{ÑoAÀ fè“ëÅ«£¸|ïY|ŒÖÝ{­1Áÿh¨ÖïDÊÞ‘wåÓ û¯å]Töx~ö¯CD eÏõ«¯=•ÙMq4Ð.Åä1:‹-å¢Ð:y’b.¶ŠÒ 朑êÆa©1!±˜QQÞº–Œ¿‡yu×Kß_L¶ƒò½/çÄÀʱ0¨Xµ· X|×ýÈÕGQ¹™|Þ˶6»(‡ƒÓHïÆom_ív„ a¯ZÅ¢-ÔD âÍV²n'(Ll”‚æì!î§:îòhVû s¶ÅT$îê¥i˜µ Ÿ‹t0"„ÄYÒlÊ=l.v¨þø…;-+ljúqÂP¿ß=[é¶(Øçö‰7å[=c_'‡µ›Ø·”lNœÃ…Ýnªî¡ö`‡–6QˆÅô8øÂXS º“NK Ÿ(2",ÜönÅ={G@„‰UÁ5¥d–M$u—9¨‘åM´µE¸OzÉQÛš¬æÛ~Ÿi0‘ÍZüŒ‹Ç+màMV©Ž4Æ’isc ЀËJˆQ2p] WfÐ i:ø£Ø†cõãTíßÝ„?,åºw#ùð¯D äú‹€®c(x¼¹¶2gw:)†ÀÖ6%Ûù]j3›Ë¬2êÈ[p2€\¬APÈ6WÌ¥ ¯Å¦®õ4F¿'¨Å—·8 !Ÿ¾Há ã&{pÆ Hdñ]‹ƒì3ô¥N¹#CŠsHˆÀAÙà·Ó˜0ŒÑj±SBJq0=NHcµ ðLŠî pˆqt%íX'uÑ&îÄj÷=ê[lì½°¸n±àY]ŒÐÆGjÖôÝC\À%c<¤Àx< øó/?â¿ÿ·?ãÏÿÇ?àüé ”"B:áå2àíí‚ëeÅëë/ë;dÉyÍ|ÇzyE^¯(Ë;Þ_¿áúö Ïß¾àzyÅúö ¬$d„h1HFAJ„8ˆý ƒ…´@e±7­\ jÂqAôáoˆöç€qL‰qJŒópŒÃˆ'ÄxBä puÅÑv‰0pO@|sh¢féKþŠRÞ åÍ›@BÔ³1¯ÂOPz‚Ò „‚hΫúh±Ø\œU‡±;^u2PXµZY:KšÓ ë±¾±zoŸ¹¸ãx¾¿~ ¨[˜ìqqÛ?¿/¾ ƒïj' é 'ëxkúÃ(ãn­ô±ýÞh¯–àÜÛ8|ìJûØívo*Û»/ö¯½:2èÆ9uë¢Â®e­ ŸÚñ¿|jëÖ ×=,n"œ„_£¸ˆ$Þ.(RÛ]­,¬ÚXÉðã¹ESbH[Ã`dÝ"žäL˜¤ œ¾ßdØúÙeÏÍéí\K ÉÖ R®È>Àœ!A C±b:# ¢ mqŒ‡‡®óŠËÛ”,ö·„¡ÅŽb@ÑÊ,lMG Ð"üPÖæ„ªÂÚ& X„ˆØ6XùN}{¿:‰AFóÔzž`c¥”,.èùÀ©µÅ©nÏ@Öl‚‚'LÊZ œÆŸ>=â—_þ„ÏŸ?ãááãÉ®8PÖœq‘žì9w}›A8?žqz<¡DFf˜¾ÆÈ/£)×ev7þUtfR›ÚmðãŠüý!}¹Ú¥av×9×nXƒí‡iÄ”O8Ÿ/v¹ÌöZÔ]6>0«‰Š(Xœ5‘ ·ë9c„¢ F"²¬+»S‘wâråʶ³ŒÃ„Ã@x<³µî¦bƒU]X.&øP"ðð8àóÓ„_~üOç?<=â|mU¾®ÈbŽ-…ż²Šá<|˜Z…êÉ…ÞH¶×¢»®D!(\Z´µ¿/–RPT0 iO?ŠGÕM{ä5#ƒòÍ3ê膹w?¯½éÖ½Åw]QøsñÊ IDAT½Cðøy=›éø½z1ª/ë¹ ìÞokî½óþèº:›u]ï‚ëëçô̯£0fÎ:½á7_cåñÕ×ÓïqCç@ºǼ÷º¾Çµ:¾'ßÀÝsFÝ‹)¶ÖÒÊÔ1nÏ¡cŠõ~e%,r]ìǽµVÿºbưr›[àÖ†ÐÞ0e§ãtð_0ˆ Qåq¥–ÿ‰‡¡.:©±m`1â¿ÛJÿ}a‹÷pæãBíƒIk…îÙCÑ£ då¢Ò¬pê+–P ìQ‡ê(ª¹º‘ôEu‹Âµ7/ì,Ђ0N¶wºÉ«®E>7;¨oPA±ebQŠ9®D5nêf)›ð¤uŒ¨mÊIÍ]å Fê¢'„HÖÞåàÉ£EQUÍÝÔÝxj´  07pzµDVÛg½pô”-þt/fÑOšjó!ÝSœ+gË£úÜg¼»A½4N [tËóxµJ8o4Umï|‚ ª)l[ÓYÚEY„@ȹÆ28‰€€Õ‚a1F1æyƒœŠÙŒUcns¢Ôö½Hd¼œ`íGµ]ÓÕ¢­PDo7+T-«êLÁ˜)Øâ<Åh›Ûb-,Ûû#XSfd¡Æ¹š“‰yéêçÎÊa§ªÈ«Y Ä!ï­=’6ãw‚E/`ÝÜK”÷— >ì¬÷Bhn¥­åD½¢2ÕÔ£ŠÖdiCY<¶„‚@ÅŽOôF–.Þ’í`Z› öy÷"…¹k®Å äí&®ÕÑY¹f Öêhî:³€Iû>P„h¿ktÁŠÉ[Ü´£¢º ÙŸ~¾Ç b"™- (‚CÀºÎ(eExH  CÄt†€,ÆRT¬Z]7vG…ò—RÚC¾Y¤…<®#¶ÜDvVi‹²Øƒ…›=¥g¼Á9¾H¯çÓåý ÓtÆyñËÏŸñóx:%¤ÐH |â)žùŠeÉ`Ь˜¯×ë²fÌ×W¬×,ï/¸^ž±\^°.ä×gèò.3˜³9ôPÏŠ+Ò@ˆi­¦Þm2+‹ï¾W‹ùÆ€3¦œ&Âíap1¥ )žÁü€@Ÿ¬%•Âdõâ¨L~¼" ÅâåÐ3”^ úD_ È $<€éŒ@8Ch‚R‚PtqU¡º¶Åêêb’Ëá|he¯3Xdí2³k_ŒySiXM»òèTåVÔ÷¹:ƒw›±ú\øÈ™ ä÷©û."ÜD}/ºð‘°Ó³ï9†öL®}lNõø»…p¦"ïÁë·lž}pÿǣºm=£ÿln2çÏ u¼®ÖÜAö©9Éëï·ß¡q÷Ïêò‡Ñ‡ml»§ìAô*[¼–_XåPï†7L„\`Ù^oelŠÔç€À¾qW0fÀÝÕ¡®-úHm7ì‹bË ú½]ëB£µ!ª‹ R¾+ËT£30 F˜»„ÈÖey‚;ÍØÖ„À`Ì`"6³Ø€00ˆ#–"ÈË—·W€£%ã £¹¼C7Qïœk{ye¿q­š†°õK'2ûFܹn">Ú^¤m2¡íú6çW´ar;„6Ü !bšN8Î ¤mCsùhÉÈ¢˜×Ŝū˜¿dDNd®­ºö œÆ ÃÄ42â°ÎŒÁõõ %‹®x_/V[åk×Óé„ðÁMŠ×eÆ’W¨ ‚€¢Œë Òml?rZ}ºáÙ~gßd æÊaÏ.­Â¶{"¡i<–™Ü çÏêRÀ­ü…¼ÜÀŸëUQ6îd ¨ä`.äa0VJ+rä\ví°-¥ÚömDäƒe€XÌ9¯ÙìÑJ‚9²¦qÀç§~üé~zðÃ9`„€¢²˜Û»¸{%Dd2Ûž%§“ÏçqÄÃéÑ£µùÔšgçë¥9 ‹ºjãr ;Ø·vYpCxD„ð±‹ç#Øøñß÷¢Òð"÷\>õüí[%ïñ¨Óñ\ì÷«G0øQ»wï¿ã9}îŽ'"m0ú‘0“;ÇãΈr¤>|Î@?tU—éñ¸÷Ë^è¼çlûè¿ïá†þ(Õvï9¯Uñ£!Û0 7¿wcèÝA[{·i/"öññ [± ”,ÊÕg,›ºã6퇀ÅSø#F:jÝ"–ßmS%ÁfVµ U ð vhnÅG`õ»'¹è þ.3z×*Y§tà .„Œµ}?Ñ` ‚ªÆÆñ……’‰^$e—å½û;7õ0ÂÀî&ÒX%{“Ó|he ýIÐW“Šw§Ú"d­6„pPa"D 21TƒM „[ô¡º‘H­é0zu­ zµZ—sU§¶Ð±SÃ>þuLûì3`7nSÀuµI} ŠfèjÀúÇ-)^Øm»ÜjcY"”Äœ(þ{+É6é´þ×ÿ¿Þ½V¨ ±Ò*æ[8XT‹Bª\JX‰}3"1„º *6ö S„B­þZÌ¥´.ÅUKAΠƘb_ô²bfs¿0 H $½Ýˆ¸¾qç„@ÎÞ ˆGRm3Ø/ª«ÈË­qÈÅ38hŸ€!Õ­ 10&6htÝ|¯ý†‡¥d0ÿfäqbû31°”‰‚±Ô’ˆ` r…@âæÃõ¼ñ¨D€ 5nÓ}Ý"+G¸òq£Æ.lÐÚÝA‚ºùÞ@ÈEÑ‹*P\*&1ð;¢"Js­E& .l[„ĘEZƒ¢‚±Öfd²M¾TaI™lº§âPqÎk1W ±q‹Gc‰ “GÀ6ýRDD]°X¼¡¿ÏÎólÂGd,Ù6cZáÛÄxŧùGÑ,î`Í„UÄö`ÅZç #Õ¼BrÁº,˜¯W\/Ì×+Öe1îÕº"v6e tSÉÀ’€@Å¡"çƒÔÓUÙ‚‘ªH™1DÅçOžF0¼½CÄŒ‘Î`àh©!‘ÅÚ—óÛæËr^¯ïX¯¯¸¼|ÁÛë7¬óTh¹"`»Ÿ±c`ƒ9ƒCTŒ1h_ X¬@†jF`EbE À˜0%ÂSÎÓ„‡iÄyœ0¤ c<4‚xBŠBœÀ,aN5gÇ` ¦RRd†Ê¯@þ ÐTߌ]E ¦¦GúDŸAá ¡à{ oôˆf}ŽPÝw¼D‹ô·îƒ ê.’-Ê&®©çaU‹;Y^²ÛÐ÷…/6ð?ÀÐaÚ/o9n'Ü{ÈyULz.SzƒØ} :ŒìXôΟnݤG.¶ç#ç²ûÚ{SvÕâ¢c…‹«¯S\\ìÖRµ¡–] ¯Îe|°˜fÞ5zYÎ=Nêm¤²_ùéîóK1húÍqô!¡’‰äæˆ,õ{8ïÊ +|­ÖÄ+i.2ñeð†¯ 10 -î¿­ç´ ·=Ž¢OU÷rjijöñ|ïŠkkÿ¶x`A¤(+! P™@e‚bELsBrGÖCÄÄÆã|EFGÌã pˆˆ÷¿£;)Eï‹,1 †Ó¶FرŒúó¶gî6zÕ)Ü_EšëÊ6«¶QǧӴ‹¤¬ó‚%ÍVØâÃS OÖ9ªHLÀ04¡l·äÃé„óÆ)! „2 `¼üú;tÉ`oG‹O³žæ0SµÍôҕͤa'FŠƒ‰'kAI[|¦ºãˆ¤]·Ö~?xŸSw»ÑîÿRÙ½p_…]ÚþŒlXlÐHDFs†˜|ýæ1Rµç/ø_!V+;Ôß¾Wýï bdŒ)Y‘β8k¸ •v G&¬02)²zü0dY²€ÊŒ@ŒóiŸ?áçŸ~ÀO?|ÆÃÈ1*&½¢¬oF§€!D‡»‹aY(bÔöÈã0àt²!Ñ4Œ‡Ï~ÿsÖfÉÍÝT]@}›üBŠÎ(¶  ØÚHKÛ¿!ZñÎZþìRô‘ØÍ­šÄ…zˆõ1³ÆûU#îöÿ=;i{Ю©o¼;нàÓï?¹K,mÏY¾^ûïÙ jÇ(aÿ:ê`²Þ!¥X tðä whtL²¿ƒæûÇ4MMPÉyñý6LTä[áéØÂ×îVœÞ”LQ‹à[Ñ ÙÚ/$îD‡êç£c/¶ø=ùQä«ïou]Å­zÜRJÞþ s)ú@'@ˆ­HÄÿ?«óÅ»ÖÝ~­QüÞ¨nŽZe±»âq] ¶·((ˆZÌ­A®x•"˜ç¹¨[=Ãnâc'ùÚJ«UÊ~“.Fïq®†¬W¿ Ä6¹UH`{áRY \'[õÁšûÉõüƒÃçþEtœR´¸ŸCÅAåöF¸%Û7X"ü;ÆÔ–ÁÊŒR2´^ Ù!¸¾òØYµŠu>™ª‹D_è[æž÷ 8 D¨›2z÷\Þ䥬¥\d5Ë‹¶°¬ŠePèÚžÚ‚+xóSq¦Hi«Ve FH¶!­"™-›Õê˜sAHÉ 6ÅÇ“»K1¦æFªÂ•ˆ`] RQP\àc ÂÉi@)+8„h@ÆµØæ&Æ´µ#k¶Í’š©>‹ øbKúÚr¿Ë•R0ç²»9Â!éÅÁøÌÁ¦­bÇ6Äh'¾+²Í–çç¸ÛŸÁ¶ S?çØYV"€¬DEV„˜0LãaÅU ó²:K©Z†ÅÈX–b ¦‡ ac Ì %È,H¼¹„A*má[[ƒÇRËý'6pH¨Ðh@Qr†°ÃÕ‰‘RØÝsd|ƒ‘ H±ÅýB¨Aœ-‡ÏAAoöÐ?§hì+ßfaw8’óã<žtü›Í馎½‹A¥‰¸"Š5«·Ú÷K´ÁÝU·:tb òÆÍÉõº&@(l¥BÜÄ«ÀÖ4E3#¤`ÎY„u?âÎ]!R#RYWÛðKu±îšôóBH°V›?™‹`Í×2ã4 ˆV5èpb Óœãeç¤}6>_pÚÙÿCŠÇ^à ƒžŸ_Âïøôã/H’°¦Œò–±à *vÍŒ!`Îe)f±WÂrµàýË7<ÿö ËÛŒ²Øç@¼ø½³“‘ë‚Æ„©iÌÅà›·HÜ"‚Ýñn-—›D0bJ§ƒ KFŠÖ†úå·¿áô`•ëCqš>Ÿ\£‚× äí+t½b~{Æûó,ó;d¹@—w`½@d• Ö ¢làvwf0e0‰ À "E‘cS\É3Ò Þ:1®Æ8Œ1§ˆ‡iÄi|0—MüÄÑ^cÌqŹcœH¢±4 ,PyƒÊ7ˆ~ô¢ï R¼(à‘ŸÂ@g€NP"ddsvHèD}Œ½D¶:5HšC”{±EE3ˆœ™ÕzGá.LkrŽ“8ËWjL,Ûƒñ-óë·(XÝmån™Í‡´¹–ï¹wÉ9GgS‰ë'ŠÛÿëšÎÑ û¶>[Ø€Pdk²«¢Ô­¿¼Cå.ãTãsÒÖ<Ôš±GÒ¾Õpñ6Þ’ï" ÍB_#cÕIÙcŠŠ ;%®2 «ËÓÚmû¡ƒmcÚš#kÃ×6} 7ˆ¾4ÆÖC[cañšD¼Ý[ëï"°ál‘Kõü1¤Ôé¿MYI¬Áykm3ç½­?ªKZ@°9‘"° Döç‰ çuÞy6¡U»óL|8+âCZµg¦E©5Å3qs‚ç’.(î¸}L#æ"XdFÉÏÂà(ˆ¤ Ä¸‰i˜lmóš-Ö~¹@) ¦ÉâÇ`kl!E ±o¤µ]Ó$ê\\jÌ©Óé„išZTNJA†n½n"MvܘRB)¹qµªã¾—¥Cªë]cpÅÀ˜¦Ó4ZB †æ2†d8,ÔX‘kYÜ9Ã[asm³¯ö¬ÉËŠ²¬ˆã€A,ÏßÀ_fÄȯ3~ûÛïV<"o—wä dxÉR.6´‰Ñ‡Œë?áéé cLƒÉHÈ:À¼È%·ë@} Ë!4~Ó4ŽÆ¸Gu¨5~3”RlÈpÎR0‡{ý^Wê<ÁÑöW‚€ ‚µRaɆjðHah‘Ȱ,æ3´ »±SEÁàF¥ŠÊ[[}Ý·–"²z´m²(h/ª4ó {k9“]GêkÓ+Mm8Ü‹Ðu¸QÂE´sïų{.²: ÙÅäܤQ÷XUÈR.m]m/%ð›l) ŠU|PÌUO¤VÂPÖö~Crm¢8‡pc@UªF?ßn çÊÛõÖ9¤GÄü/ áBÊgÛ×ôÇlcoz™6M]¨§ZlP·ÅŒèûo8«—ŒñÚ½.ÓL<)ÙŠrqG,›1¥¬ëŒótB–‚²f€ CL`ÈÙ˜‹ç4šè¥µ9Q·û¼Z’„)nØEョŒÑæXØT;Ïåòf)'¼RŸËöƒ£° ¹µŠ¡Û÷©ÝRtçÖ‚’M*HÛ×÷ÐC³œÎýžüÞ¤î(píí}Öè«;k;Ò²ÏÃóÜmÌҀŒûšhì&”„à «ìÀõ»ÊlÙ6ÊÒNÖ=Àíc¦‡Ý(Jsz+*ûæ ñVYí‘M[OÝÀn" O\`ÞV [cƒCjmvÜ1­*ȽMa´´9|ÙÄÛNLt‘Ë]TìM%DD,^¶‡v¥BHÛ‚Y+`<Úâ &~™k‡ïÄ#€¼kmê¥zôhw¾øEÔ|‚‚ÆËªðQ8ã©ÝXÔ­ øïS”láÁê­C¢uêÄ ‡Š›#Îzíê-«¶øHqk={M5+ãÀ‚bOäú=Ü àÑÕʘ ‚? J±˜7ˆi,ªâ•À›Åths‹ô¸ºH0e¤ 8M&ö¾­5*bÕ¶¹0æµ€²EA¤ƒÛqAmpª u­VZ¿`Û*éç­`^4®¸rP¼¥Î[ôŠª­‡Õ\qv‹È@½g:"FFQ‡¦+y\ZºFµÍ…!+#׊vå´÷ΡäþΙƒÂ‡5•ª~Ýad"`1*Qb m?KT1Fÿ½´`ƒõ›X*m"¤; sç©Û,×Ïß^°¬„8¾ãüº`™§‡+>¯1"Žv-²N^Ì—+^ÿŠç¯ßðöü‚Ëë–댲æƒÛ¥¾ßbÀá@ˆÁ¢‘Ý Lbr¾)$ E€‹oBŒØb£ @l“¢¼ äw”õм^°\ÍE:o/Ï|‚šëå Ëåë›Å_^~ÃåúŠùíy½y”$+‚f‹ÞA"5æXˆÎ c"°¬çeGh‰1<¾OÄLÀ:MŒÓ˜pJÁ"ƒã€qxÓˆ'„xñàNio/õ˜CLà] D^|C‘/€|…È«=ƒ5 ð# |†à„Ѷ?´çYöPÓ*k×pYnu¢ÔûÌ.ºíœ*U5ò‚òV6%lMZkîë®7hî\3î:¸X@ø.²@åþ‚þ ž°ŠX½k¤öýë‚òÞÏ9ºTîæ?ŠýÑZüw0éþŸ5F ûãù=^——Bô÷ûûÊÞ}õQDeÿšÚªâ†‰µM7z]gÔC‹ˆ´‰‰Ü0º«V¯õ‚Úª‘·X‰ïÓ¶óùˆ¼Pˆ;~©ïEìœ(­xÇw_[›xå¥&ØPö;‰ M˜Q)`)€òŠUgd}·›>#= ‚9ÇÖ‚¨›I’𺠬WÈrĉ$¤Êu(¦­<ƒdã–P`LÓ Cšœ©¹îY°zb]â›ë£+P@­P©-Œg4…mÈê©Û¤­XE^f?1üš#ÙÕÏÇ‘Söt„7úFõííbC8b¬)#¿¿ãå?þ_þó ~ÿõ+þúë¯øýË3žßÞðòöŽo/o¶®ªÉ•lí®‚!šÓhžgÌó„eY hÞ5‰}/Ôo,{§9ÑQÐNHÖ6xeÖîݱÇvñ._L1J€€C§ˆ) ævG¼Ç+®%[tׇ¿ÍY‘míme€µrhnBf¶‚ƒg³”îœÄÞ=A¼¹80ŽŠñqÀ~xHøoÿô~|8áÓã Óh.=Á2g”U ÈuÀ@ÚŒöL¤0 ãpÂb#7gŒ94³ÇŒ³­A[‰@²bBˆ–¤lVCèn¯(±k€U5ÄZc0;à4ÛÞ[TvmÜ [§23ЏPå¥_±5²Q‹ï[˜0¸šR²=TÈ¥ äŒ"ަ […}[CÛŸ mÀ¯uoT-£ÕÌá‚–?»Ä—Õ¡Ó;uʲ‚SDd7ÅAV˶¿äÑaÇØÏ'wöXŠ@œé[÷pàͬÊÎ,Lît"3g4ø•Ü}ý=Uï«"æ±%PÕP<Ô5·×µ@Å0Pàƒ[·ç‡J–sëÕkè#ssÈKÙš`ŽÐùžAÕóøÚ3™µ±årösŒQá1ã9‹?»¸5úJ5°ï_,ïnm¬ÞP¿gjM,yÄ=À’M5+cHºEˆ DvÐKƒÊðþà´Ø µWˆÜÚnÊ®¦ÕZÛj¤ÀxÑö †m¨MUœ²HMhñ’Ê«±ÅÈ÷3ßÛwpdé-ÃÙ6ûÚK¿½)î¬íçu“½Ýɬ¼ûÆŠ²óÛÆ°SÊSqç#wŽ ÌÒÚ,>ÊÑ-žÇ˜V]PöÐ5­Î°›y7­¦„ç¢æ"Þq@ €ÀĄܭB·Ù±k'„º‡˜±ÌúÍ~chÕÕwZ7ª¨`Q-Ýgiµ‡`öðܺÁ¡› ûn\}‹“´‡¬}ö8EPjž:øf*„¡`h0¸'y•c}(•lì+%µ’?²¸“#ì¿C½1³ÚÌŽ|¡ÂPd*´Ew£ŸÉ\vÚD61¸,U¹YÇÙ¼ä(RáÙÞX˜Í²,þó«s§.P†!tân½qº˜ ¯b›ØCqHŒE9Ú1Ác ¤l±m“âV×zmk}8:«.PëÔÜÂ_ò÷´Z¥KÑ&`¡Vs!çâ6z‹˜H¡vc( ‘µµæŽÏB@ðеxçÚ ¢6×HñØîQÄVe5l͉R ÂéÕåR7…hH[ÔZì<). h¶ùI€d£M?$X€‘€ä®'m£òæ*¯—ïq¥dyÇûUÀá§×ï×ÃtFúë_AÌÏ'Œ§É¡«o×ß~ÿ†_ÿò7üí¿þŠß¿üŠ·÷ÌóÜM“÷q®·%Bä`nBs‘ùäO$Û9Ïâ k3 .@’_ŠA(€®‹9 òФ Îòn,“!ŒÄHdØ<¿ãúúŒço¿âÛ×ßðúö yyGž¯Ð²€Êâ`ys¬šœ˜ƒ³q ¬`-¡àÖ²Iš¡¢±åƨ£ñ®¦"ã<8ŸÏƺŠ+Ž£¹ØX3œ,"ÄÌ`ÝØD¹ ƒHVyö–Á7H~…ÒR›’GúÐ@OP:Ci„˜ìç<¸ÒžY­%Ìùy{˜ë~#¥^ëÊTb_;ˆ61RkMaè^¤®bƒjXKãîµâ–ΡÓGoòZÊæd½¿w‚8Sm]´}ÝM”P;ÁBëäT»FæýÇ-#ëûe6÷X\êoaªøCÞ(á>çk{>ö’~uÜœjuØÒ8o`ûq]sËÙŸOý&ù–“'(r$©³6'u/Vö­Æ½;¬Á×[l3øsÜ“@,.Ì1úŠ­P÷ t?Bo?¬®«R£·„&rÜZù“Ñÿè\S„RdD±Xe䋹üËÊ#ø:‚yDàÄD扡lˆ]¯È×7,1"†€%"0#Åê.HÍ1]´Ø –€˜Æ&MÓ„æ<ûõ+~Ï3¦‘ÞÄK¹1”icuŸ|}ˆý™1Ä„!&¤]À’¶i”¼Zdp]M°r¸²rÆÑ¸Wó4ažg¬ëjNýË‚ç¯üF‚¯O "¼??ãòÛWüú—ÿ¿ý¿ÿŽÿÏ¿àßÿëW|{yÆëuÆu^ì÷n›iÛ$çìn="H´Ø›€0 3ÎçÙîçeD)æ|ˆ1V²1…»Èt½ßn×Íf·¼þ£B†¾©´Æwû>ãP40vVcœ]ׯ¯EØ·†B|Žgv¾›H[‡Îñ´r±&ëÃýLrÁ ÑMQ¤@x|šð§ÏOø—??áÇÏþõŸÂ42[ìZÞ ¢æü_AX`"%×…-W–o@F¤1L¦ap¨ e•Öø¥ øZÝÅ&».‚_ÏÆª°8b¶÷/8WµžÓÅ5UÈ«Ï j[ŠM $²¥­[Å &–P¶á6!ûzÑÄr NUD³¨!9·Úf¶&41±:¢}Õâ "äbŽG퇭Â~aQ¬û} ÐÄ!$·JSsn‰(ÖRKŠ"©Ÿ7žÈe{X+2©5­“9\•me²O«~2 IDAT’½æ9¯É Û!^Qï!Û­ê1…vÏß $=š[{cJÑúëÇåþÌeXC7E‹{v¾§Zù7CLMòØëÛÊËÔ“Ú"„6ðãöaŽtiÏmãÚ†[¹º¿Û8RÖAýgɘk9¢ ÍÆþ¦`0”A™€i˜p]¯(RÀbÂ,y©µÅʶÔ^a/? ‰¹-9Xê£À dâìêÍÀ±M¨hË)—RšÅq°˜\þˆN¿-̪«%AÈ+Öªø»­X:Qצ?{Þ‹Y·‰X›C∰ÞüJUð>€þï4öW£}íç¡ìr²íhQ§[‚Ý@ô|«^«ñHþñï¶ñ(î4Þ}P•©ºý¼{ÓÌ?ls@¸ÉÚ–Rš3M5íø¦`k¼‰Èf-§})yõ2w¬®íõ׌|Þ9àz\l9cÅŽåÆ|íú–5èÝså^+ÆGpø6ÉÒû€Í–-¯­9þ^YÂÐfꋊÉ&;!PìÁã Jê(cnØq$Lén<ÎJˆb¥¼fãæ¸xêB(ú„£2=JÞè1Dˆ$ÌÐLÜ2º$dÍ{¶hQ‘„Prq‘ÚñPg<!†îª séQ) Q©Ž,Û´§À˜sÆ2ˆD䢻œzвq±*g¯U|c7½è+Ó-Š»6 ~©ýkz¬(°xq© ²´cUÁ¼*ÖUQrušpƒJ(IµGy$ÆbÓìÎÌíZ¥ÆÀªñ(ëªóˆµs¹CË^/oEµ_Ãc²ä Bvïµx²¹æx-X£"‰ÁÝC ÂÈÁáРvülp­Í@`ÝåÂ+ ”Q2aÎ ÏXŬÅ)%ŒÓ„qBÄû|Åó—g|ùý¾}{Áëë®ËÒîoL&Fµ(3‘Ù9m}„ÜÄÁÝm‘ëCÛ6—ö| î’Uä"¶)$woA€rÁåùw\¾þúӟ𙀫(d¡ AKÁr™ñþòoß~ÇûÛ,—gèz5·YÃBA„5rðõ0Œ_eü,°‚%º`JÖYYŠL&^ I0BÀ4˜h5¥èퟣ՘.X na×Í)ì ?r'§EÀ<öª+DV½ ,éE2´X¤™bóâ3@O z€ê ÂTs*¡Pq·^_–A­-rsÇH÷gwU‚PÏ¢âM‹¶ó[þåau¨{p–Õë§VÕWTq,:71äïpjßÿ÷†ñýç¨Ò'šq¤j,®o"¬_Þë5ª@)æ’¸…œÓ ôý{âÕíÚ»ã÷œì÷!¹ß{î¸Ñ>1ùûâ\ÿ|?rÊî=³í½Ò$ßô]x­Ž@q~ª%r:'T•g;´kÏ Ñö‘RØZx™šÐÚÜ€} v¹­-¦D} 7·b/T5‡Œ‹D[ UÌí¤ÆeµÖÙh¿á©ÅšÑ²,`}ròb¦@ 0‚Âä¼ÒÁÖ&¹X”øúŽÂ„%FPŠœ¥†„@± s«àÄDˆã Ö8Ž£Ý À)ºH:'r¹iü¾÷>ïZÁˆwëÃʲÖÄØ®õú}×eÁårÁ²,& ø=³ Xµuìö9sÞÄê\TõDK [W®>—¥Bü±±Hl8ŽÎ áO GCSWÐÕv±ª¿æ²¥B0<¬!V½¾"\êjI›)ƆYo³ X c[ú'‹9ûŠÚZ޼̖r ]JH þs¬=SÙÚÒ ä·Y¥æ°õý2»pkVB ¸»_Wѽ:Ά˜°Ô] ÛZ´¨v¹ï×ë:Æ‘5bW–bÅ "»ü™íSwdƒ[užü¡©jYѺ Ä5Œa¹[ –1í6évñp¥Mú›¯ÝÝ6‰nôÄY8b›8aƒhÂ#HÔAW­|ÿ»ÂŒ6ˆsØ/ö:±¦‰jÄNÅ6–õï¢ç37çD¿XÜœu"X9Xuš¡Ø;|6«º~𚸋JÔ…˜Ü-[‹A¸y€í?ÂqЫUk-ŸçÀÉÿ»Ô âbއÖjØ >‰!Ý*a…öYfîZ:<¿:í¨Aî™7ãÚÄ©Í[nš‰Aa›Üîª5·Ó¡‚ØëÔÝF[í;mõÂþà¨Db7Q¯|Xž‰"6¥ÚZÆXÁ™pvQD›nyr@Î+Ä7~Ôà³>]s7[Îe÷þwöWfP„Rñ¢¢lAÁ^}£Q]˜ˆL$îú[“¶)ºåà‘4$‚DÂllLþ¾FrYZn¾ž¶¨È69`ÛàU ¢* ƒ"Y‚ ã"­¬ð÷·”ÛqLÑ®«XÖIyýÐ~b¯P ³¶\³Üw΋¬jÙ˜J è[EW¬ÂXƺش_ŠåÖKV¬ö 1)*¨ÐX}JUjR]ŽÒðâS0ãbI·0°ZDlÂA›êl²G›t [NÓ¶Â"„¡!o Š)Rȶó÷-15˜gÝ8A3[„š˜ÁlÍ]kâšý¡duÑíwÇ<Ïx~yÅ<¼½¿cY²³ËV¾«Î­%ýF1¤hL8·Ã3ÅN<ä,ØÌ8„ìÐf¨‰‹)1"¼~ûù·ÿçÓ„ÅéÓ8GÆšòöŽ×üН_¿â×ÿø/üþë_pyý‚¼¾ƒÕXVVÕÍZIƒ dA¢‚‰2B(j|ÃÔŽ#ÔÄ+6Þܘ)(X ÓñðpÂi£C…ÿ?ÚÞeM’äXÒU»xDfVw¡ƒ3Ù7\ðã¼ÿ³pÅ!ÝUÝ]™ánfª\¨š¹yDd5fAàå뒙ánn&*òK\Ò‚ÈÏ aøã†±Eáݸí[0*H¯½¬]^AúH7ehH œÀx‚â è3(øèÀSé %Ýyº+]h>+¢qøëâœ=*=’< €Ôs_]þ ê4óxÆVÿÀè ÚK2pËïÀq?4¸·­a6Û9ÏØã›>Àrî¼YºµÎ}q†Ú­«lÙ¦zwuqC ÁŸ;ö|dt·#¹;ðVdÛcA3ä¿‹nMiÄÊ»Ûvœ fL…ÃÐ!î<Ø]2æàˆ¨ 40È9<àZDWÔú›s$+¨tFM€Æ`‰5(Zƒ”+ÊJàuAÈ tžB´û¦¯7à6àˆ9!-O/Ïx~~F­)a*Šº)¸ú&E84éÿ™â4ä"¾ \v(º5Ím«ÂAàꇯëó³ýòý+EĘ@ÂØÞËx¯~ûöŠŸ¿¾â—ßÞpY+Š2Ö ¬Õ†V¥U/Fé‰òQQÆ*&P]¯ —Ë§Ó ˶ùð6ß¹-‰hp`æò¨¾?èBÏ-$û(üÑÎÙýƒ–³GÖ,v¤H‡ÝWçVâ>7ç1“Ã925à ~‡µ· ‡3ìJiøõ×W|z9cÉŒÏ`j.h(¤Ú>)8ëøœRZ†€EîR2EÆÜìÚš¹¸=EQ×Íö[! óqÏþüåS²Ÿeü¤9"P, a{kK „ÑŽÝSH­ï±ì™Ælƒ`"h«h.$13jãIt§½ø¬3ªš•³1û€æ Jsg¨•P§’sŠˆ!µíg’°§VúbÊ~­[áQó…6*8@»¦àZ‹€ÅöG Å9E+Ü9óÉ,æêl;1§ìÑæ¦ ;ð 9ƒp°¦D±€([áÌ2ãk†À¶ÑqGš ¡|Ï›BtÇ\7¡9«ªÙþó$i„{á·i¶ÑªÙÏ v¯m­Žˆfßw‚'$M SÏ«JmôâœFiþÏÚ£•|ø>›3;+¬JE©ÆXãWý\.>@e$¡BZ8jmOq6¹¬m^åg»Qåæ®Â`ŒXˆX[µ ¡~OuY;¬]ç=R9¬^ƒØª/,®‚±1ÕPEP¤:â™°óƒÌk KS Cwh,`LgF;HU£(([õÌÁÀ`7T!Ïjß×:Lâô»Öû#ôã{”%íQ£[häÔ•:xŽ®ªæ œ/8Ú ­/6q8S>šœÞþÚì°º‹¶‚έU?úN£Øc3ðožÒìa€[ëä05WLSûfó¹nu†öÏ–Ù9GÜ !‡a²8÷5:lXôfCDLYi·Ì‘½Ù0Ct¯JÕ©i³·9ŒÏ«+àjíhB»¨eö¨hQÂj0¤©$‡H?pŒÑ Ys=p-Z¨„†ÍŒ¡Ùlžâ¾ÕôUPW¿¿ƒRF *@¡«ýü5…höÃJ 8½|ÂÓ?âÏù+þóÿò_RÄz¹à²^,XXü ÁÜŠT„÷Zg߆>@TŒ‚¤=Ò¾sfˆ÷Ï£³MûÚ¾g¾^¯xÇÛÛÞÞ.øöíÍTÊHiÙJPŠØpmV6³•†ëfEC°õGÎHˆÞÎ]JŶV¬×2¢‹= ÓZ³è׸ÛtÇì-–zhCŸ¶GbÐ|˜§îí¾ÿ®Óù¨‹M¤÷˜“Û–³¹Ì8±ûù*ƈ–±8Ó,p¨cÞ÷ºê(P@°–†×õ‚oo¯ÏkÍ¡bÉ‘Dîl`gÇ*aÉ õÖÊóp)õö5êl^¨µµ“N Sí$‡Ã÷ÏM:ŸÎÏÆÑÙÃû½+#Í.êl+žÖåµ±ñ¡|H^Ø¥æBd°‹.Þékg-ëm?÷ˆ1'´ºØí~`/ë Hw#y·ÕášqQqÊNå±c #š<  ˜6ÐEB£Ä#gíó“ ˆ´uV!øïó>0xTrz–€ÍÄÁé"žØï¹X". ÂÅps´úûÛ*&J‰ Ž!úÚÏög»ÛVT&tŠÞÝ·ö9t·y…Pt¹Ž&É~N"¡Ãd~F6.h­ 5NÂ@p²¯OVô"Ú£‚lž,2XñØ.EÛC"Ø™DV Á¼Zýï±'a)e½°sáq¿R·Ñ¬*"ÚÄöMŒÁ6\éAsÓO8ÀóGvSÌjWÅ€‹}Aþf÷Êʱèû #ñ~0ž&ݩѭ†ª^s©V÷>¬q½å‡æÍŒ‰Z :nè>±ìnõéì£|÷]Þûø‰Ç“ÌÁ´ØEiêq‚ñšö([.íÖOlC)Eß$1n–0á:n¼Õkò¾r(Šý¯¸Ãg¸‰\L™2²"˜µO`u_ÎJ7¹ÐÄ)øûdÂÍZößÔ]øìñS©íð9uÁÁF4²Æ&†ÞV"‚ñû=Âך_o=JD&Z„ñ0å[C §NãsÕ›'û•ö½è¾aèWý`·ä´GÞ† @S£‘g¶ƒ"Ä„2bZr5c`Q‡êõCNuÇ~­²GòfÕQo|²L}fE^N§ŒœK2SÉ[xÞV”fL§áÖò6€]ôafÛÔ Uñ¶0³sG’»ÞS¶T+I±E´5†ÈgÒ~æ­mfI&ÝÝ?mw9¹¥½×»s›‡Ò>·Õ¡¾,4Oñ62º;°šÇQÄ[–À{H¡PÔ€û[!Û¸nÀZ­[!6!lÍ W+C²ÛõÔ¯ëÖÃT“ê±·~hé•ÖmZ³š³o—3¡ûC§ˆ9+YÜÌÚŸ{ÅÕ¢nD@ŠæÄ P¤hÓãÈ8´avE”æ.oÊj@Ì ¢Ì 7Í+²iüüR,®¾UAmÚÍÚÒ‡3XR}ó³‹üýó îìP·9[ £IUÑÀ"dãìÓù3 –ÜÀ¼í¯¿þ®o¿ƒâ‚t~AˆE ¥ .«±½®×+ „ÈŒ‚ Í×ó Ä™‰MØ ¡!PC9ª9±B5þU¤l¯0…]ÀJxÎKÎXâ‚3r>!¤3˜’ñjB°§ÌþÏ]Ø[{Ýw%Þ\×®P}C•ß ú;š¼‚Ñ@@8ü‚À?ü^œŽvØï›õÉbVA7ªß zHŸ£²Ý«+ý©ÖÙÝá,æhé, í±Ý»¯ÎÀ"§b<Ñ©Òè!5±/» aÎpÃ]¼âÉgÖ÷t&èÒé:ézk¿¿ôAqdw표îþ¤“ùC¤Írþ¬…Ù¢ ¡hëG±×s%ÅV.`-¢VAÚú’¹]Õžéê@àëå "2è¬(²ÛÈ¢f ª—EÛß§ˆçO/(Ûgü§ò_ LøÓß?ãë—/øòõ+®eÃV‹ï;«ûû¦kkbÖQçá1 ÷&çâÀéR\ø.Œt'›»&FÜMÄÏÅ4âB¥|ûöŠŸþþé'¼¾¾á#p‚¶¾ãõõŠÿøù+þþËüúúŠ××Wüþú ¥ZŒ³z3×'±GäÍ¥í™èÎ0‹Ü!Ì­5peSúPVhJ5`Šöb~¹í…7±§Ã½÷ˆAø±kï[£yÃÚẠ:ûó|¾—¹ sr„_Ϭ.ŒÍ1DõˆyqÑÚðV Ò[Ãùc9  ?ý° ÔŠ²Ú™ …€ÄçFô‘T#™F|]Äí|; 8°r1œÜù î!‚V,*7D¤é½á‰aGÒ]Kê¬Å T¯ÝtFã,GÊp´œE»KH;;2øo6´VP› wLqôJ+U¢öº^»¶úðFˆqD¿æ8ç\x„´;eàF<ÂÚź]Èòa:)„ŇTMàîksbbÙÖºŸ‹Gù€ ELÁÏ×>P›F÷¡Àn¶1¹»–vÐ D9)‚ú¹Öáð' þžö¯mOî÷£¥]Ä‹ëÔâÔ"}wáJziz¶ì‚ŒÝ£ÍÁÿäqÔñÔU:”Àuf`NtTBƒ X–4p–²ñ œ ÐZñç]ëX®/ÁC©UYØÓ¹^Ô*ú§oîçAš q½71ªÃìúíu¸©‚—÷Ñ!Æ"ˆvë Q±ö`OÌûç·e¶ÁÉK)P‡ÎÚÂÊå¸iØŽS+ù›êc­* ©Õàdj¶¯ 4=@,m³Ãßù&êÁ&Vƒ˜UÿÀUI£¡…\PÜ;•nZ÷µ:7 µ»»cîþÞå5gô?bV|·9›#‚Ù¥c1œ¹Edάß}}´ïÂë»[‰™§ãцßoÆGÕ¹Åà–¹ÕíÃ×ëÕ‚l-c!Ðyj˲ «vÿYˆ11D‚3«êá=9¸·&÷[­u<8»Ý»9ÄÉn¼»4vGêK{Ã=à-Þã&Æ2vQ톫Æj{»Í¡6uŠÒ 3 Ü}[EH)e„¸!Ä‚­;(y4H,†Õ'Ìj _$±H¥ÿ›Ý±e®E{/Rfœ"átNxy:aY y‰þ@ˆ¸^D zßhÝÚôy+ÀöœñÓÖšA$ ¥ ðÛkwÐXÁM÷V4˜˜Ü^,›=K#ÌQÅÎK„¢MAevü)žNªu‚„1{Í—ëK6GMŒRtD‚v¿)Y‰s CÝ—¼`km«¨j§.¦‰2.¥Ƚ(Öl ¬5±¬Mñv)X!5ñJ,ž)$ áÑÜÙüáÕÏӎƶ=L¯tZÏ®ŠÎmž5Håî~ï.ÊÎ"TçTÅýBw $Fv qt fp÷hÿßý>Þ#¢{3JAC„HEìì© µy½³³:ÖuÃÖšÙ«Ý™5֚Ĕýþ¡Q@­Acôûosæ„Mï¡ÅoÁ^—ÃÂIŒPý½af$Ή¨´âœ3žA“ ÊzE Á&øÙוh1—")X@ ¬¤¤Œ‚LŠRTœ’`‰ŠDÖRX²–ÄHˆl¢áËñôô„ÈL 8XÕ:ñÙ œÀ1™cƒd´ÛæÅ6ô¤ ¢”wTyE“wˆ®Þ’ÆàôHŸ@üð ”~@“Šl‡‡ +Uûš¾Ö_WäƒçM%%ûäPÆÿ›”†â< u¾O×i¸—€ôhaâØ¯Œxä˜ÜO=âí\¡^ot'üÌ>êîO»ªo0gÑÃëQÁûYÙ%{Àt:>Óå8 ££XÚÇ@vk‹= *sòP 3Cr¼r;_AÛ±êÑ:½q2ëPs$¦Ø÷qK€ó‰Í¥ìeˆ——Œ­YœŸ™À1â”3–dàyH4†¹îm©µV+—r§¯vÇí¥G‘óL á2J;ƽ,¾×Ó!¼Ê`ƺ s€‡£t^rØk¶cÊ(µŽ¦jöë¡”fÐúëðóÚ²ppÊÄšS¥·Ã2{û§ïU‘–8Œ¥Õ} Á°uéxfž ¾ÄÓYÒnj™“»¶:ÐýziRIŸÞ £=óšÿy ƒa¦Oôç« m!غk… êM˜_´cжšˆfè%t¢?Ë­°h6pcÓâÞ w*(&8ÚB|0^¼½·™(9Ÿ=u·‰eÛ¦g“•i)Ù€ÞÄϺ·¼“£¦È¡¶†Ú¬qSÐYÁÑØU—Óà‰„C¹Õ¾áiŸ†2äe\÷ÛVÇý_«5ƒ2³!Iâ2=“e†[æa8 žnõ v^tòu'.1`ÛÚRÊÎ hX–ëÖîÜc IDAT°®ëøáìáð<6³.ÊÖP]õŒ‘P¤D^½¨hÃu§h^ƒ¢IµÓ+sÍæà‡ÉùMêlêøä|bV8l´f¦Á,ÍS¬{à´>¬»C>"R°åJi‚NãØŽG66÷ Êzx(ŒLóÊt‚ãÚÈ¢–r1ìVhû€‡sŽë4µ!¨ð¡Åç#‹s«þýÝjßù[­*T*ˆ#˜¥ŠO—ÜQ×Lœé +u]ŸX!m8/ËP•‰ê ‚q]´°×±‚]­wW̨¥XLÌênÜ1‡Ð5 x{dßóÙ)`µˆÎ%2þÚ~ó‚ ¼PÅ’3ÖëuŸ¦xcÉ\w,2ç`-$[ݧãà ú"QÜ¥&J ŽHù„Üq-à²!æŒVªÃý!èJvà£5Õ€ùÖþ˜‚"Æ„SŒH‰°$B/)âtÊHË‚”Oçg=öF¡ÑÔ.†¶#/!¹ËjQ¤°Ášîb´÷WªÙ§CTÈfðø%úfÊž ô ~Å4ˆû°x?ð9*¨7©šÒÁì™7®]#”ºÇΪµÙä‹a W‰Ð 8±vѹ"ÆŒÄR šB$l­:ôt}EmBÉÌã~oMǦ»³—™®¥ ¨™:CLP›5]¥Ñhˆ^¹˜&¶ ñÎEZbþbR¤hDzæ Lä|FlŒRß ü,kkX‹bknáP›pVP[YÑpÅ9lÈÑÖº§S´{#(W$,A°dkŒ¡!0ƒ³¯rÂ)”=x­s ˜ Ø61«O#cäá¼qæ‚T‹wRAˆeû[ùª@ÜòBz†È'„ø?£á Ñ3”2¤oZHª€V[ïѧëáЮyÛž#X"í0€9 q(Øz m€Ù{T—Ô§vLƒ+¸†ˆR? g(†“£¦y8p¥#‹H§ÿhw›¦¸û?ÏšMoú±2™Û¸Ø¯ôØ6·ߊû‡F”ö°g˜€È}²= e³3\Ô"çý¾êމ¾±Cƒ=ßš¿ÿ;ÌD”uë:ãËŽÏâŽÉüþYÐ.^M‚ÕÌ™Ò9Ù4á´dšÜîÎíìÚ×Éè¤.~ôÉ=¬î[œH<6Òû”žÆþ¯ÇÌkÙ a®HîâœÜ5ã> çNض…˜†»\›#|(b‚Ú,zÝ0ÖÜYÚŒ‹954ß[Û’Ò ˆ T„"€ˆ@ EBÎEEE\W”ëo , Ð uÅ´VÀéÌÉš ®WÔ×_q)ü£"P7FA·Œ°4É *8å3ò²àóŸÂz>ãt>cyyÂóŸðçÿ+þòâׯ_ñóßÿ_¿~ÅûÛ«•I/ݨõ0©ÛgWJâBc°üåׯ¸þŸ×ÑVÖïËå‚··7\¯Wüöú6ð"JÆé-eÅ[ŽctF¡;˜È"â1F„œ—©Íϴ˲Œk=Öimׇ2)oÅìmö¡ehUë8‘óMçâ¨Û÷˜ˆÇ}±ÿž¸è±ÿÙ¹Hi_SÂ$ ÎŒ[9Qó÷i7ƒf¶¡øåêÉêgÔ@!9Û³!ä'pnx»®øò›"§güóëï zÆr~r!=EÄ R­¡8öu±øºÑü^,І{‹äâ‘ï­PAlßÿ²nÃõ£9_˜[Ýp-Û³ aÜßUl¯;Dv׿z ù¶Zà¼[hZ‘NÆpêÑSÕŽ„2Ö²YËq Àþ<œ×Û/ÔÛWb (åÝþ.w¼¸LϨ;KÝï©`BK­Û¸ž ŠÈŒZËh״ậÏÛ¶Äd»¾ªÛVà û¼™ýÞõχ)Ú¢CöÁX·‹;r›‹wmÄ®KÓQÐÖ÷ümZùÚÝìþ™ 1d;+5º`|UÕŽS îv h­b«¦“¤”A ZQ•ÀœQJ%ë¶"ÀܾfØHãŒ^k)û™TQ·‚½-:Ú³ 6®Cô43Ç$k«.RЊ½¹V@£ùÉ„°ùõv:QJñ=CwQÖã8ën«Û4„´Ï_šàíuEk Ÿ>=#5n;"Õ”LÌ$ÇÅ!2¶­àú~Åù|á²]Ñš §×º]ûÄâ°xƒ•Pj½k»¸µÃB"öà­mC·0SDL2²Í·Ì†Gq­}“F°AèJ%Ô¾ ºR`yWŒcV^þ.JÄýÉȇ¼[×Î#§W`¯Û*|×ÖÓy>;àùÐn8q°¹ÄnÿÌ}]5:³ŽÀHí(û×ô¬ÿ~¿Øöëç¸a_µÜaÝ¥Õ¦æÄ¹áäöA{ûsâ›"7Õ³tÏ5‹÷‡°ù½yÄU;NîïKú†b~oo9PŒÉϼÁ‰ÑšsÎ(ådSîÀNËô5 IÙkh=®¥‘1©@OÏ9#&ì\º‘—r^Rßð{;gPX¢ ”€­–aÇí@h[ãã(¶Özºt@)“·;™(ým2ÇŠŽ¶8fBv€'n‰M—"[ÃD§6·½='D‹áz-ŒM”ƒä9ˆ›aåÀ‚뇱êc­Ææ #Å8U½ûÞEBá) âðªŠFÖŒXªâœ[–ÂX °5ã…Ä ÐþVmóV*!zäº0-¤V=ƒ*˜*±›;b&-jvaéƒ(3Óˆý4èÑËI|˜öX:<i {ÐWfÄîöðÏ$Û™©%X½z†$„”˜÷oPÝž¿‰ïKÌq+ Æ]Ôc´IÈÄi¡Ñµˆš½&1P{Š1š› €ñÇÄ&R{Ý›]|Ý QÁ¡!Än_ÑÚ›AáyAˆÀÖ ‚Z¸Ç½ÐPh¹‚Qüú]ý:ÝX¸™ã*X+abA‚Kl8EBJví¥hïÕ’"R ÈaA R8ÃŒÅîON^;Î 4Û°‡¼›!dtöþŠRß ¸ZÌ1&DÊÈœÒ J3÷U㪠T²ÁÚ}ê ©CdXÄÇš yLäÅçë¥G¦ýùÝÚªâ@P‡€Pº]Ý|*SìP'&cvó!î×ë®EÛ‡­|±_LÆÆC`°N Ë`ZAÇt/XÑ#¤ýfÿÑ^à–OÙŸ÷úÁëØshüЙóGÅ6·Žê[ûî2¼ˆwE÷ë ¯±c¿ÒÈØ[äðãGÑÀ#oë‡ë»«Gi`)v†ˆÝõ4GipVu8¯ö=©Výé¸ÈZ5AEÌ,íà~„M™Öã£Cq¿ÆŽ÷ÖqÄ:5üú×"-,Ò2î'çÇ™C ‚Y‚â”Í)«"vÞJ¨6P‹`=ƒÔØZªä]°öCy­8=7°.Ãi"JD!9:"ŸO O bN8=ñ´œðçOxzz§OÿÄׯ_ñë×/øý÷ß±­‚œO.(Ó1FÄœTÝnœ€ä1£à-ÚŸkà4¹–ônÿËŠÃïýöÛo®VݶZ°]Wã\ùð^ Àȳðs+ô'6q!/çó OO'œÎ9G¤ÌÕã}|ê¢}1ˆ;=v^=:=X#Ý-¶äÏNß“—›³áцkqn¦=Ší ìïî¸]øêx’¯›ZéÂøÞö¼¯ XAx»*¾¾n.œ1ˆOÐ?‘Ï/hñ…àœÅ¢Sb¸V†º¸(°VqöU@ â„¢Õ›KÑê{GFóA/5wòi4‡ÜÅTÕ±†TAà©(Œ×=ó†cLcÿ6G ©zʃ¼Í®%s.^/®ë;žÏO HÁ¢¯‡r+®—W€‰ÂQQA͆G‘‹ 7ÁÖšñ˜‚xy™ÁŠ9ACL[Ù" 9ŸP§{jk=ÝpÛ[ çd ëþ,om»1çXÞÞn¿úkœ»÷ÖÙÖºÖÑF”`â,ê~ï7•‰ÃH(Rìõ{¡ã†L.ãZµë³@Uñþþ>DiÓZÞ÷g§ŸÙ­8„ú. EŠCäë'+©ˆ 2Q0$F“u`—Z“Ñ:yL3Í®ªê†ñ–Ö2\«9çñ<Þ9kûÚ%“Y¦ ¶ L)¨j»@ªBhÁò¼àÚÞ¾¾A¤"rBJ"æ ј".~®ò×mϹ„õ}ƒÒæ×YÄu•á‹Æiö&¨›,¶­ L1³q@¬#ÐÛ¹ì0H‚Tý`#Ù/°ã„1ŒCªêhÔ÷ÑüÞÚ" wépøXE½o¸{õÏÄv £yzÛÂ3±¾¿àJ}÷Ò!nó”Î&¾êü©þokIÐn³×pØPîâS¸°Ïm·5³Gc»‡ëŽÒ†›d^ÔæŸ¡?tö¹ÞädÕ½}à'Ø] »o‹t€Ì¯KAl–xPJ±ÍŠ7|„Àw*½M.xjiÛ§ÈŽ‘¶¯E°”·¦õ)þ¯Á4®©&:&ôã}¶ùâ%Û¨ºÈ„6¶·ÀØ}s-l[±›*[µlàQ\ Š4\ˆæl!hóëÕåQâ–äH@Ê//güéÇðáZµ×Ílj!v@BDƒ¢6 3PL¨Škó'4ûÁ7Ö ðÕØˆÁÝ&2Ö±ÎwP¶£ÈÞRG»iú#íg>ˆ»2¢zаóů=?(5·¯Ï‡)Ñë]kh]|ÀÂàÖ¢M°˜-(b´÷5&›èT­Ã±ªjÙÈÒ쾩ÞÈØ£~·õ˜Ï´q—fl^y.bÿÊ‚ƒ£W¢2cƒš+&ûõH¼GÔ'7k/ퟓâj–zgðDˆDR°˜s/¸€bAä†%ÙõºDs >ØE«†À9’ƒÜ§,I‘ƒÿ9f¤Ü*CDÊ bxF 3˜Î`™8úºÅ{¤fð¨ WTyƒÈ»5ÒÕ¹„É\È :j›[E!ÙÔ é¢ L´ƒ¨33¼ñRX“­¬,S3:]cŠOíÑ·~è˜!¾{4c»&XPwÐíOÍò¹?Š-€!` PÒÔHt˜yDĉæÖDž’iÃ/:ñääÎJ»@ÑtŠøÒÌ~/¢M9߉a³Àù5UzÝûè€úº`ÀùóRir6éˆÞ öÈø»P {ÑBôX¢\S÷Ü«c<fôtåþÀDµ>Âó÷÷¯‰=Ÿ{ûjjë¬Î’Ñ2î wç…G‰§„lçך•ЪýY9x˜Ö€*ÍèzÜ‹‰î°mLí•Ý6·0ö¸ {”\fm`ÕzÔ½Ã8¼HÁ×[c¬Œ8CÈX?$t½`-›5?‰9e%¾±‚ÂÉ:o@)Vñª_jhC>ŸARõ„  –Óˆ˜¥”ÐÎ'Äó‚§—ÏOŸðéÓ'|úáüôÓg|ùò_ùÙÜX¯ßÞdÞG23N§“A·SÄe[±¾_PÊj'ŠHXò‚äns‘jLƒ™"‚ïj¸Gd@d´[/瓹H¯­œ½¶f±ÌÈ(mµÄ6ÉÞúÇÜG‚þ5-v,ÿ±ø »‘sÆÓÓ“•uøAr@ѧƾy/fûÍ[‡Ç}Ý¡‡N«GmÝÇõIï¾ö‘é+…¯.¨ôƒsapŽ_Ž]Uº{ŸhÝ.Vµj…ΪB ñî ©Š×wk<þé·€?ýq>yaLY‘£­¿Ú¬Øb{xmÆó !¹“*bY’9çÛæÎ_oÛŽ6¶2·±xA-UöR{®òèÀ-áøº5ôºµçñ^ÛÙDUw/™(!øöí ¿ÿþ+þú—¿ì%09:Wª:[­";'Í!®lx !@е,jmX«?Y‹ú¸—B¸ãAwNv2KÍ5Ôß§ÖšE@”¦Íø›¹`Á^3Î}ôav~NÏŸPˆ¸–¹ùu/s°½¨àýý}<'›V0ÌA×[<×õ‚”Ò8“.‹9BK)ãgïÿ¿‹C]œÙ¶ ÁùU;Ò§;>[kx}}1ÝâûxŸãî¬>š`ø`é×–¹ôy‰§T\¯æt<ŸÏ<Òüýæ2´,AÀh8å„ÒÞ-¬Œ˜ooo™/ö<:ž°, µ ®×w<=Ÿ‘RÂzÝÆµ."HË §Ó ùË_ðåË\/N§bŒ¸\.¸\,òkµ†¢eÉÞëuÈJ[ÇAî#ÎS_hŒè­"P?à«ÚCPtš’ÑXòÈñþY’‘ Å‘‰Î’ÃæË~…9U:DݘûÿZ3á£áGœïýú£×w'&=hñéÉÌyÔ€xë8úèûß6Þ5<ÊÛw ÝGn®ÛŸc:;Cëñšî\b*írÜÛýö:Ó™u5„7õÉ·n«±0N¡ ýšî ;ÐßsgÍ‹fomqù0~ª&N)aYœN'tÒao¢ëî'QW«ÙÚ(,猗OÏxùñ /O'ÔrEò©x­ RFm¾å׈Úì×—µáíÚ°nŠÚì3è6dމ Ý 5¦ŒöuKhL“#¹E€6±:oo¬HÄÖ@áŠ˜ØøSîÚª 4@¢‰K`ŸÊÁY$~8 6ahJ`µ© Ó1I=¢ÔÔë‰;gÊÎ&c‚Ñ-ÑOØ#}³j9âJD£‘»²'޽¦VG£¥E$=>ÓŒeÆÍ"$Q+€ ¹S õ&ÄÞhÅý@Öî6Ñ`ìëj8@˜ýzw§ŠE´'UÅ6è×”»ºÈåÿÌ£ÁP€ÁP°í“I”"Æ—¢ªVWˆŒz­^Ú€Á6©Ò[mÊ×´7÷¸#§·ÇiW¬jºù!.2ÐDQ È¬¨îTKÞ”R##?a¶õƒÉ'ìö{U< uÚÂ? û‰¼‹ Õâ¦j±ÃÄöŸ Ç‚ü× ˆrPÄ X‚ %EfXÃ`",Ñ=b`İ·úZÓà‚@g€O’7ðш1‘vJšxDj3~]» ©±®"+‚"ƒéÆT¨žÐÚb.f Sô¾í"’ÈnJê @èNèœz#†ì|¨Ùmâ~ ~­Ë$v‘µôvÑkr_õÔņ‚G€:}¯#·’þ•æ>=ž°ñ즀{Ÿwàú˜òÞ˜Aíoæ!YpF×G›ïYÀøÞþlþ˜w ü}»ñ­øÕË4Ž.üΤ¸î‡Þïí­öçèñµÍ‘<<¤€9S*àYÅ8Rª¹?ÏâcjÓlÃ!ÖîÔkïç÷éîs˜?ðÑ £4Ú­FžìÍ›â"›NlœÛƒi‡½õ« ž2\´“lP×] }Ðå/Œà‡`˜›DKÅ)™› rHC‘ êÔZ ©€Rçg„Mñ£JÁ¶^ì¶Ûëdg±0Mj³§¸]¤‰dâM:-8¿<ã‡Ï?âÏÿö¼}{ÅõzÁz¹àz½NN?‹Ÿ<==áùå ËùŒ·Ë+¾ýþ»––œÍÑš®×w\ßÞ±nh“ñY@r‡Ë|¯¯Zî‡Ïq­’iª†­ŠÐýÙe¬o^RÅzÜŸv+F^"N§OO'œŸ¤FÛ¥9â!¶uŒ‘ñ‘ëJtˆŸ>J]ükkîD¬ÎÙÅ€Û¦µù`}ÏÔ½Oò|·@‰áÎùù½»ùëj ¹ê† ` X]¬¾¾_-ˆü9þ Ù[Ò,.XÑ Ï2Ÿ~ï‰;¼­`Ê®×­U+%Šq8HlŸ'‡Xgß7m­¢VuVú±,ÕÜXÒç-ìÅ|6¶,áôtÆóùÉð'¢ ÀÈÑÅà \.vŸ´Öãêz½âõõ )ýߣaÑÜð„Z7Ô*ÐVÙÛ#7@ÜǶ»YªµšËTO§óÝ{Ö£–!öõ]ð´Ûkm;ﶎŽÑØ.âïC´B±¿þÅÛf"Ó§OŸ°¤ âŠß~{·ól°ëòýM®vŽhº@Úʵàïÿ ëº"çleb Uþ_¸\.!áóçÏ`füòË/øòåÛD©m°£¨oâ]j`N‰÷ FÝS}¡žÝ&â›Ý³ÃíXƒ»GöÜy*7&W} Þm£ ^::øA¯·zû¦ÓÜ&bFÄ]eЇ,ú®ójßh…» âíìQSá‘y4ÜE(½›J!ìÇEw~€|lËŸ6I£õì¶ê“GÛ}6&Ê£õçæûtèy?V=l5Á^@D(ªw†Y‘{«„3Ĥ ˆjðÄ}Ív¶“ㆺ ¯ûâ¶Û½E­A‚ȬßÜ_çTÌl ¦Þšé wþ˜xŽÑCÏ$rgµÜ'Ò^ºCÑ7ºÆ—6)™¥ÆÌÓÆVó Aô5ˆ›u3’ozˆJ±ÏÜ63ÜP'o·¹›Øìm?ûÁûæáè‰Þr&¤ DàÖÛw±Y1P #Ç€HdT!¤ ¨¨âå^)+·jû+Í@ÁÞ“ÍUdר+Ægd?Ÿ¨+®*JSsЬ©«;¡Ã%]ÈbóqÈ‚ºž1ŸÏ# ±Ÿ™T}bgÏ…&Þª2@ØÃNcs©·ßõg “ßëÚÝ« ŒMUÛ&ˆ‘±$2aˆM8­ÃmgŸ}dEŒÆüÒÆÎ§qÁm}xû «·Î ":gÚ°$FäŠÀŠSTkL@$sŒ’ SçDX¢EO‘[ã Wۼ德2d0%€@„ä× z£–˜`S6€T¤­h²²‚ÈøjEÊ`, :è r¼°ÁÞìf‚UýZù‚²ªÃðº¨Ãúrã–âÄH'ˆùÜB'{ ë}ºß8N9R®xC¡êñíðr‘½H47›ù5z{€ë‘¿.‚HûT®÷Ñ67}ŽÍÞ#nÏ š'êL˜¸ w7‘9‘½ð6‚ø½xä£Â‘Ûßë_ßÞ>@лcìv¨u랇ýñ™`j:û¾¸vûû;ËêxHíí\ǦÈ9 ݎܱ¾þèqïÙÿ¼ô¯þÕhŠ`ìàvÆhѦ»)†ÝP§9~ân901CGLS{)Ç>h=º¹”ƒþ  #ŽCy‡üØÛMÎÅÁø¢`PzDˆ$î²¾ Š9FÖ ´w°£ H6¨\ ñˆ @ ¢ÑÚ¥®ÀêÐh)´5pS /Ëš®¨³ˆ‚½¹–—'Ä%#"òÓ O/Ïxùü#®ï‹°Ôz°úû¼, žŸŸ±œÞ× Þ¿½âryƒzéKâàC(ÁÛÛ7¼æßñöQV—Í÷TÁÖ:> /e<ƒ,ê—ÉöÉRÍÓW†ÆßÿÛï™îöô}2ù¾´«–ý×sÎ8ŸOx~~ÆÓ“¹–%#/æø11Ë”·g„­¤þ =•ñ»Ñé;áën]¡÷ëîTé"Öüÿç¯iî6 Z?õL¬eúp }ÄwØþB„\˜´A^¤ŒJ½ÕŽ •qmÒVH©hÕï˼WX3-)˜eZ‡öõ®Ö.^4˜ ÄhÌ¬ŽŸhÕg>aìƒò.\(b4® š‹˜Ù¥þɹVýù‡«$\®æ“o¥Úàï>ƒµ"­÷ëeÊ»óÆD ‹§1¿5º/W 4x°àØ`éjÈ„^È5¯Óýë¶j+Jâ‹¡boÍ/빎Å€—§‚oo+¶âHb„dÌMa¢¹ìçyÈ §i€‚á Ob+aÓÝÖ\¼êQTwÙä1‡õë$‚mZ¥@PESB‡_ç5ùF}ßD˜Z²O×ÜåÑÏÖ1áP[¯‘ ¾·UþºìMV'%(¹%—A­ƒT­m3pDŠÑ¬Š@‘ j (‰PŠEêj;VíÍܼEOG³cd˜›'ªqœpPB7¨Ÿ![óˆ4UÔF(MP«M~@¶aðKË>gIT±ÿˆoJ›£X=.ÕÌåq羚7w(ÍR¸w«¶­]ê|$Us…‰?A;6ÜÀLQuÍß?wsØkn&ž†ZÐ4!‰Áæ‹X¼6koÙÏ‘Z0qk#·ÛÀ¯UõÈ¡Ñ1"é‘ÄxelbÖ#›¨uÎÑb‹‹˜wXÙ†e‰9*N‰#;‹È™¡À!#„hª–šxE`'õ»÷B ˆ6ˆn ©æÀªWƒËãÝ„!š,2ˆ Õ&Š™à“œãä >Ý âé>¼v¡ñ.p¸èwÖÍGƒ¡åp(·6‚~¡OÝ» ·b-òÚ¦ç†Ðÿpxã•Ç?¯ŽÒ1ÊwïºíkÞãˆnž—r`uçÏã†[dßq‚ÿ+{ŽÛ}LÛæPüGnâÙùptN<@-<àçÜ»–ŽSrúÃ6Äc ñcfÖD*t€½¢'ë(Ä Ñ2ˆÁ\ì>3oè¶hgZî|·ËûcÁèÜöh¦hÇèaºýÈ™ÒÝWý·¼ e:ÈË~Iqÿ‡øó|äwË—í€ÌÉQ( ÎE ʆØÄàÉõÜ.hõ-O@.@zÅ3ˆÄ=þ-Å \Zƒ–†´œ„!) ‰@T„Á1ZY Pˆ9 ,ùtB^Ï8?›€Ej{̳1—rŒ§Ó )œÊžŸŸm¿(ŽônÅÅŠÍ^v¶¹^.¸\Þp© "¤ÈxO»ûdÞ¯užk©Õè®|ʽé³7 a4žŽ'xœ[llN«eIƒ}•RBÊ{cœµ†‰‡ç²33D’§r•ÇÃëïqy?¹Ø_ó, ÏâÕmD«ïçù>ÄðX:—'Èüñ stsïA ^þFÔ¦XCEjÑî©Ö#O&æµ i›Ýã! (PɆyMêü1äw/• c9ÿܶi?”ì>N¾§¬8=EWYL«Èc°Ù”AÄÜ1ç‚ýìĉT kÁåz4'lµb]”ÍÑNÕ±VÊf6ˆîbc/|š¾ßãdÇgiÍÊۼ܆‚q˜Öë6^fˆº˜äbyó/ÌlîûážÃî/Vß‹åä{2/Mj­¡AlG¾á??ƒ øñÇñç?ÿ hÀÏ?ÿß¾½Ùm½Œ%Æ€œÄh&¡Ö*bLX×+ÖuCŒóùÉEÙ!Åÿñßþ˜ÿý¿güíô·O› g ¢ÖŠu]­1¶éhÕ­› ÑëZðë/ÿ´¥Ï?‹-ëÚ°®ö>–å1üãŸÃ&Àå›?׸"¨¹ÃBž–}¨S¯¯(Hüõ'²H¡jsj|00æ(Ûláœÿ¹é^«Íl0¨CýgÂè„§g }(®˜3Idz˜ªSLÏEš‡zˆ×غ|tLŽ í-+Fé1óR÷x×,œH/Ðùû§¦}½—Cü|wÏMÇûë¾A;UõA|ðû‡Ð÷ŒJ:͉£æQkâñ­’É=ôýÑçÖyvïL—çÕ1â(Ý=Ú·’:¿æéÙÍûPsy¸.ö&7Þï~Òì.ÓãÕ+ coûa޽J;®`\7ÖŠ…á;:Ë´¿<·eê½ØöÁ†f¾ ™€è×{ÛjÄûU‹î§xFÌì\Ç€¬aêM*+¶¶¢JCßp`Pózw²CS•w´Z!kC\Š9rF:+‚f°XT>¨ñ1«9DÄS§hÜ©íÉÊ¥zT­aB2tˆ¸`kÁRNÞÖ*ÊvE¹®PIVðAÖ&™S²}Kµçc‘2 ©fñ¥Š V` Nžš`¼Ú¾Ç­z¸NŽu«Ó:(˜ö¹ä,Û<=™·, 1î c"ò”"˜ì3c€ùq|8„€*rçà³ë%|è¼úX<ÞM£T»°7xoYNcNtÿ:úù2( *GÏB¶_î~d&Bc€¤€¸"RÀùñÃsÄçÏg|þ”ñt ÈÉö² @+ƒµ·±ÃAØÕ@îñûïß|ð¹4Í­ï%$¾/ïMä˲ ç­—ŠS!ØøýëZ\É R¤´ O¤º(PÏËyýމ'¨”‚%.(áðG¯mZÛ£ñ™®×[-x{·®>s¥)B(8¬ýÒÊNVòp³>÷ûoI4R+{4ÔÏð!8_»»åê¸N¤Ó2îå[îWÿW?³ÍÿÛÿ“8`ñÖómÛ°¹:üûç'?2ƒ¨·Ý©î­š­+ÆJŒÈÆtJ)Ùg{xæNïµ;˜oLS#‚ü9g¼½qù¯? èr¹ å9çá¤49y`‚–Å@@—ÿlç²”ƒ#zôp}ÒHÐU¤”ÑšÛC`¤”!Ò†6°n¿ ¥3â_ü¯ú/8ŸÏ#ÙãÓó:ÐïÇÎÿþöúîÅK{ÁS¿_ RÛhXìZÁ(ecÝ׎"ȧB²Ûíka²Édª !X áyY ‰p­3)ÅëÍC¶ÉßL)Û ‰=ÒePé†ZÚ¨î-CÝ"Ù#SÆ1»r` ±O„ªˆ°¯˜ ±Ùõ–Dš z§Üx×Uõø²µ7ï€_¡vhBmàÖ#$d.¤j Yk6U ~xºq?ìÀ¢Ì£)Ì…B]PÐfBlƒ8âä“·Ì„% Ö*hÙ7N.ìlÕ&?û´©dø5Êjݨh"H äÔ,¢ÈâPRYu;7 DmZ×úN ­scUû¾EM¬Ú¡6ÆÛ¥B°6E‰€´!›ôÙgÆ£ñh°;Ï Î[Ó!¼33TLÄ*M|êGƒ£Ý¤‡ D«Ø[8µ L€³ÕHAeõt šX.G I߀&b×V4‘¦·ÿ‘؆‘D6û;ü·DYª “l¥)çã”Là|^¬láœÍ%wZŒ¼˜£bÉŠÅ­ÜÅ4¾/D¡\M»XÚc¶¢ vqH T­-Qê W4¹øšAœÃÄO œPõ ¢É¬>;¢XÝ™2æð`‹PºˆèSÀÁ±Ú V›Üïãðüx(\ðPB°P·ZI™ñí0¡Ý±DaˆV‘½oî›UqLΆɊ‚B0S•‡ü™ï(o­\;Ë¢³¬Ž=Íóë ‰ÏÄ|t!é䢯^.öÏù1\þö÷éáëéñɹ9PÄR2÷Ï=4 s;\ûØ.97úõÜ™X² cÄGqq~­rS&c‡Ð6"+Ðfû‰¾*ß3‡ÄòHt÷þ†ñs¢ìô‘09Ý´Gí{ða›ioƒj°ƒ ĘpPejÔÂ’mê.‚V7”íÕ1œÁ¼ ¦ B©R 6oÆ~#B>=Oâ‰ZlO´PŠvß{;`Š (+Òr¤z̯níÜÑÛv™!*Z‹ˆ%¡UoàRÔŒmY!ÛjÃÀ>ÀíûÁfn‡µÔºƒQÝã—bûßZmb.2;;4ÛÛ:Alæ4îøš8®‘9DœRÆùiÁËÓ Ë²`¶íã>´ÏÍï«ÛQ®»õ‚ø»÷ß÷¿:5(ZCûëö÷£mÅß¿Š:Ä+¿.½Ô¨”2Ø’„ð0Éà X˜›ï:3*ìûf •㙩$ÁPÞS6ìçM%AÌ?¼,øOýý·g|þ”‘Y€Z°ð ‘ Ý]@ëºÚ³l”úÐ0uØ¡:ÛÏ"Šëzñë§¹èpBε4s\ùû³mv-§dn»þž×¸.`Ù~’VbkÛ¡´êg’0¾ &bdç3×hÄõÂ-ñ5ªs¬Š4¼]«·Šëà/Ëb–»çóÓü¹ÅÄ&¬{3jÈ·ÖF BL<%Õ†ÈÉÃçó—õzqŸ­cyÇ1òʤj{Ý.„äœMšÎ^Çb3™„>AûL8ÀÜ£S©Yk4DÚ[®13£¬ÎÙæ^ZvlجuóZÞ±,„ø|ÞÏwù'Ôfñp}4ò)p:/¸\.x:=™½®PRüô9öBæ4LûóÝEè÷|x>÷µ.æÅöw1áí¼37¯×+ÚÓæóhE4$ˆQ¤bkÿþù38ÙuRÊŠ¶5çø%ÿÙÏ^¼f<Åþ=bw•Ö†²^ÑšZ™X°Àcí°k+{kç1ªO9ùÍ£­Žo²µŠÐ‚Å_|Ql>u„Ý:Züf¡I!ã‘É-¥8Xtð@8 æRèí`" ›;(?ŒªÇ;Üq#6© ÀãM²¶6û:¬µéÎYèÝ":\Iªô]VÄ#Ðá÷þüÎö˜È 3àv˜«ÄKxœc¿Û ÝC^ûÏß­·¢ÕmÑ~ ‹Ç ¢8(ÚÜØárÁ6jþo( ÍÔúÌ+mop±vIAibâ‰täOu¤«Ýó¿š«¶qnˆ;¼×6]ª*7ï«EæÖí؄ñÿcím›É‘$M5àNFdVM÷ÊìÝÿÿyw²Ý]™$ݘí3¼¸“‘Y{r#RRÓY‘ Ò¨©>B@ˆÆ­*.¤5¥™™R§#³ ˜Ck&4+sŠæp«µøÂ6¤€ÓCsŠñ±j]ýAß&K)%ìÛÖ•ènÛ‡»ÁB]ŠÚû8à`@ÖåŠýb×yLtgd.È·›½ß*=öû¿þõŠTüÏÿþþñOk ù÷;þýï¿ðïýÄãá1µ’Q ¡Vs‚Ý'¼ËÓÃD¤ØÆ…œeäå"—”P…&‘YPª ‹~m21йZ{ Q´  öjÀïÈcƒ&*)ö*@1±F£^s6vÙ"VùWKFJÁáŽÕE[ñ:s p„jèÜÀ†7OiU¼].(µº8Á¸ï;‡Ow†´–­þ‡;»š#¥±ª¼åÏŽKb”l­s+®ضŒª‚¼ÛŠV67Rj‹e¨ô˜i𨢈šó'U¤ÅDœ-‹£`‰ tkÖ}Û”‰;°ìuV18cÎj¢]ölâVvgÖ¶Wd!Üáž ªFV<Š d SÅ®æÈ«lm†YÜ#íتE ›[ª‰ÄLM0R(„âërŸ'™ØèœÄ =ŠÜÜ)쪭 öÖ`}‘„PŦÝl1H&1 ©„^6ÅM2.¥âM× ¬PÝ'f„d¯Q« ˆlÍ’—X±F¨`MÀ% .‹µ^VFŠÀšÌzÎT=bRQ…°Øó-‹üÒÑ‚TĨXÈkì!¨ú@‘Jýt…¥7o]@X ´ ò€ € jaPXÀ!Úf_‹oÇffVŒÅÁ=‡ÌÂK ¨‹Ï<­Ûv48­}.íwVWF‰­³lÂü¢‰ ¶ž\DpñhrÈ1 !° °oWbó¬«s0tü$Bͽ\ê,3~$µÆÁ@©lãtyZëá±]WÇÁŒ†ø=‹^V·PªÒŒ–“èE8í™ìœs%X4®Öƾ{í nl=´0¶ÖÁv l°a(ƒÜÙŒ'ÛpµÆÝ6lÄ)*2Ah#w¸{{ 3 v4CN÷7Y3_sXÑylî%P³ßo¬ý>ÃëeO*6”a,/õ! w˜;M{1êªÖH俊~ðlí…â±ÜZK¼µ½ˆô¥3ý}'8ÿ‘+²ô?;²Å†ˆÖÑ $§¥ƒÎÕ&ïÄ©ó U§¦e³\Z”‚äìQŠ,°q…Œ²í`®ˆõºg<ð „ï±µ‡õ ŽJ<ÊŽÇãë·{Ý=øf“ö”@!ZQKF ÙÀÏÝqcÅ)h© bí®)ÐØ[«Z3ÀêÙ;ÔKÉPJˆLÈ-¾,=ã‚‹ î÷ÏÞâvh=dE-ÖL—ÂbqSÝÉPwf©úáŽhÓ‡¦¾÷oN’u1hûÿüïÿo×7,1Ậçæ€ÄÁD7_‡Ø÷QÚZn¼ùs,þHµæ8m)o„_Ï {°owwÀ%gw–e¶ˆ¸ 1‹aá¶Wo.¬ÇãÑ–E*R¸xo9χ€à®_;ctñDæHâ`á!·ô!» >@a€oHãlUb<‚ËeÁc'|Ü2>>øã¨±b¹¬K@ ‚KJ¸,ö•¼s4¶UkoVMo‹8B¼ Y#»x’ì¾MuµgpsøuwQ·†7é÷¸ £Š°ØÊfˆm_e èÐö팤ʨ• tÍ”R2ç|,¹ÏÊ-(|CpbÆÐ˜@ýÕIĪÉžpi ¡up£‹\1Æ,#z]>q Þ,è"Wû9ö,PpL¦f»ÞZó|ï— E2~¹#M2–¸xϨ;‹³ÔbJ¬ „¢e+>D7­B÷Í çž^R¿ÎsÉxÜ\€óÖy¨%›ÚûOZq½®æü†ú0‡'€ÝbÄÇßO ié"”mÃ5p}€”q¾–°Q0p%æzâÎ2 ž°šÑ `i& 8™Áå¿þ¸ö¢ŠouÅžMä\÷4„¦}ƒ–Š ;"©ñ±{Á‚ß. º,(uGàûŸßüZÌ®—`gM’‹·!ÒÅP9î÷;Ö…» ¥–v-¾Ç4Ž­í_1%kªòZ ± ψ%ð¨0ׂ-‹G êÁú§­iE\ªRKþ¯}_ôÍų Ò.¾c$±ñlz¬ÑŸê%ئD=ÂW<ÊS1µïù&ˆÔOòãàÜÂð+¦Ä9BH¿˜tÔäÿØYGÈúÌè±¶ãd”&Kr‹)ÈÓ•&—Õáu“Ôe?üÊáûv·'jgc>·8ËÄeµŸÁ8 ”µžâ˜ÍÍ-0b„tdÅP²ïËÀ‡}ƒ­o ™œ½R¤;$yŠ~å¼ã~9µ¥œSì÷;Tì ¬æx4Ãæ4¤õK88™‰P%‚CB¨;(mˆ{Ác/ȵõ1>Ú ºº{2ƒpQØž™ÛƒPꎼܭñ¬d`]ë‚ê œÔ†DÊÝ…B¤¬oƒX×Vdâ{sîx ÄMŽvN«¬î´³ƒàr½ çŒeY°m[ÿlö}GÙöÎÈ+¾Gkѧ¢¹j8`¯;2@s5ô„‡bqgX™peœ«Ëå‚ëûß¾}ÃõzŲÄ.ný©¥É÷A°˜?—SÄø’u´œ¸,wælûϽᰠa´Æý¼ÔäZ’wìùü¸cl‡³ï;r5À8¼ˆ¤ýc.ŒÛ*Ø/oд"„h¸ l^\b{†1.E‰JAqÆhpN£j"úkU‡‚›ˆÂì’”£ÃÖ 8ä\PÊBŠìÕsDŒmÛ¼™_À<4­ÌjÃ1FtŒ@Á\r¤Á£ÑvÆáà8•ØŠS2j®>4ÇÁù"†ŸÜ»þ;‘Ÿ; ÜÓ¸µÕ-þ:ís.‡Üý’KO‰9'Ãä&$8m?@¸¬ X‡Ð½ïƒ+'°"Ek!•5Ä&ò„îŽZ*áºÚõ\T“Ê(%xŒv^ `ÓŠíñÀý¶¹ðbBVdrdK#ðF°šÃ’"#…èm…w€±Åé"pLˆ>1$­=ÒjñAo™…puëpçÇew¡[³Ø`–ŒËeµõ¬Øù1]Öîª+¥ ú¾JÈö„)¬)Z\‹#o;öÇ y{Xš je\'n`‹–[ : 1°mw»ŽzúÉ]l¬ Ä`N¾7CÒ%ž¯¯uJÉ…995Úb#s4 —xìL†Í.÷Œu;x Mµ¼í!: 9îbè–ê!¬µ;4¨ÛލC¬…Ž‘º3ôú\;‹3سsžô((ŦæÓh«b^'Ëõ„ õÍîß³â>‰Xô©áûVꎲ_ÁHÇ‘˜Þ¯eåß IDATÏ· š_G䇼ß"RDjN¦ö3z+ŸšÃ!ûþÕë?ײ6²s 0ªŠ19^ÎðÖム汘~7ƒý÷¸`2K‹<1ÀÔýТuŽÎïÕB#M÷ÄyŸÙí—ö†ôZÄ,‘@?¸Ì€Æùg•RcIJ,‡éJ‹ñJP”º£îÆlÚöù¸#WÁŸÖN$‚’µÃP[£\›ü¿úØ­à¹EB}Ѩìïg›ðz;ò”ÿî×¶ÚÃ]Å86OÜbÂòf(XL@ãÖ@ ‹Å‰Ø<°Ú TM¤¹¤€"æî θSŸ(×佺sCM(ñæ=¦7Uöb‚%´ƒbYŠ;K‡ˆíŽ”*‘Àj.&kÑ^:@TG/Õ~¨äÖtèÌ´ÈÞŠÙšùDQ…ûï|¹XV<’WjŸ2Eköx»,î³ ChÐy:µùø%•¥BªýL¢€}C–j-2˪Ȼ9¨@„õÌyU iä*JØ ã±ìä\ÁØU±W‹Zµ_“æ6°I°h타ƒð磫öç–¹³§z'4Qób`Âu"å¹;ƒZ ƽ`öˆrX*´dQH±k»‚STH,~­zupÖ•°FB ‚ëBî°²ëëÂX¢UoÄ€Ã5„.îMϯ«Ò ª Í‡0ÎJq…Eç D«»8W¯P¾Buq'SCf š ¿Š;ð¼f?·V…ûÜXû*6F¿à³ôu·¹J­LÕxz ŽÝ÷dDv‘ËölÁÝr-Š5ƒ»õÀÆêæÊ€‰ ³kvèˆ÷8ëÑ­õªýwXèϹçÁ})î£|ýu÷swU=‹N“[ vD±ÓtÃ+Þ‡£Ûý™ÿ·ÚK¦çþÙ6ï?jѧR”æØîx8#oDýíktbò®1nÐÿù÷¡#¨àP]õô[Ñ,‹ôI;h8ýáפ’NBÚˆD—š{£Õñ åë²È“@Õßg’—q×W |_»»œè´×í”RÛïÝ\üvHŒ¢='S­H’‘V{âcÇcß÷ %`¯e(Љ±Z T¾úç]Qn@á{|@ŠÅ‹äZ‹ H-‹1j • BÇÁ†D¶W ~ÏŠªE#·©*]¬”ÆÎƒÁ’ÙïùŒ±EÑÀÉ]Yëå‚Ýcc"¥ótJ)X®‹ Xµ³az|nÛpÛ.Kg÷ )Ë*øÐ²EÌ.— ÞÞ.øãßpy¿àòvEXâ’@1X\ÆÅíÆyÒ1ùèW3ý®EýTú„'Ö^@Sû©ïϽy„ÏÖâpöþl›]Û–¥_ÊãÌ8Ð#ÚÖ4L‡/|½mƒÔWesŒºðÿüÜšÛÓK)ØŠÏ‚Ÿ‹à¯Uðç[D¹.À5t˜¼ ל5ç×”¹¢lo«µÅÖLcµ3fcAÙ@…ŸÎO‚[[ßÄÖµûvwžœE÷ZÜ®1ˆbLÎdõ3‹h?35GMÏ™¢ÝÏsœPt÷Ô ÷˜±ŠT‰)®=-óìà O  óïc쑺3¦¹ÏçÏùëòÄÔ³ïï‚’ï—šCœy¼:¹ÿš8ìÞÀCr¤%^fÏ|Æ"²¦ÆPU05'š +ù±9Bu0ßÚ¾‰šŽ¬ Iņ:²³Zø9)qqØŠ.éŠp¤nƒ Ëm*ÎCÔ-RPj†ÜĽq ¹ªmÀS«"oÅ“ÞÀ¾o&fÈ ã¾²ØlŒq1¡Kƒ!&–ëŠ5蛕ŠUÉ7\û¬Û5Ò_g´N­¥_+Æ·ºôó1³¹Ïæû9Fÿ|'«½ÿunkd»X,Óê‹© maÎíâNBEð~âĹ˜´iläǸp²’OÙ~{`Q¢Ÿ'ƒmQl“ƒ¶A·Ãq¸¥¶ehÑAï yÊ«Oé—í?¿¡þŽ8õ»ÿþ;WÖ+hëß°T³=Üï2bã=RÔC-p³É]þÌgøÕ{ðuMîßpeù‰_Šsv}Y$¥o‡‹ ‰¨Ó½ÐsÊü<9ýªòxíÈÁù5Úá98§fÂs|u¶žÏ¯°(ïŒìÂZ3ò^÷~þütŠ>È|°ý{ºžZDAÐÝ-žîv òÃ`cMqP"¶ƒ¶IP§ÕÄdö(pT»CU›j M‚Ì•D¨}u +CYP@Øk65سOùzÛJ±Ý‘LXmæ(» )¬€&¿î½_xÏæœ Ñ^sð釚½u÷si ÈV*ÑÞSoáèkX Zü°A¥½˜¬y/H5qݯ“Ö–ÅAYÜeB_„ ,d {ž?+4k·ôë/µÒߤ¬ ¡äŠœ¥*$a”‹1°¶¢`*X+#׊K2VVE.‚{ Ø…±í@ÌŠG&p‘î¡eõi“8¨:}ÆrkÀv‹ŽQg¸ÌÜ6Õ›|1}'Þ†Ä#†D]ð"¶¸”œ-ö¾gîpW˜»S¸ãh§\Õí!bMjqÍ` °erb1Ö,I±D'chëïÑ¥dbHí÷—*ŒÛÒ¡ ‚O¿–²±uT eZ ø ÂbVJPMDˆFTŒÎm2§ûS5}‹œS88’ÚÆ÷¨0Kç‚’×-qÜŸ/s>2?9¤Ùý½Ý²Øº³ÂE*FSõ">p%Û¤›€'çó€·Ójv[¡æçï÷ê™üU[Ö«çqÛ-ý}—õñ9ô qpæªÌpnÿãî0>îÎÿÿsÏïš™g†Ö×|O™ž/èϧ¶¶8–*Ù!@Ž÷° ûÉ#g ÓZ'ñU¯IK6·áYzåS?÷Öƒ“2šTUÉYGØü'Dñ0Œ/ô¢áñÙõvŽƒÎ÷kµSµü€­=Zk?›Ý…%ÓH£ÞC(¡\­ qA\*8nˆˆ-[[W*žÛ/à lš 4_2jÙñ€BÊŽ¼}ÇåmÇßÀµ‚«BJÇc*_Úa18ÌœÈmï@*`2—„8ß/ÀËe¨ .wØ“µ¦Š Ñù^)%ìËâÌêf¹êKÙûõ´ïÆË*› 8÷[»æõ` 11–dM‰Ñù^°®+.o\¿]±^ hRDXBo:S—~ÈŸÊ.¦ÿNÀz^K~¿îؘ„}e6Üs¯nîÛû¾ûþ)ôçí1¥¢S›bìrÛo$ÊëfôóÞûÕÚ{tEY =q{Ü>7üü\pÿvÅÛEöV{ß+¹YìÆ-(ZÝ5¥Q|bÏNíkísëì«Á­G3³wþwã-5€5sèÿ{.Wkgðaän{º¾'%šF~Ç‹  Lm¯5‡xàù¾JÝ4¼E;/¾zî¯ëúò{´¶mûõ0¨¿OüòL\÷nr:ΆN-´ó³q.èŒnUg¨òáùÑÅ’‘’ ¶8:šVj´m;nws$ª,‘pYÖ%!¥ˆ´¸A$$¬ëAü\G†ìi±93y<òføwI5=&»×NHq<¯· ¤5°Æh8ònu•1x‰B”XrÁüvJ&Fm 1­]¨ Ñ>ÏRCw¢µÏcæ·ë¸]ãš)½…±‹^%ÓÆžÕáFk§ïîêÍj-3}Üh…iºÃ ?ÜkSX{…m¼ËL)k…qN¾òW­I†p¶¶Ëˆ¼p2Qï¦0å±Á)ƒ øXŸŠÚ©RÿC(èo‹Sžѯ&Õ¿sXÑ/ĵW7üóCÁ↠·7~DßZÔ‹ÖJseù¡ÿ’6 7/Û’fÁpó¼†rôMeõÉH› wÇ«xžO?ݥ‘Q¤+õ©Êz­ŒöZpë7îáBw\ÅΪµCZ©õ ¸=oT‡˜Öþ~•ûë¥;vf`'p !¥öèß¶Wç¤èQØup³x“bçµøý+­Ë×âæ Se޶ðM‘“àš£ÉÊg$ÎÙ(Žï⪊@ˆÔÁàDRr7šöbîªÖУ‹vĨTQ ¡8äÒ&Ôy¾7µ…’©E¡äìkP˨“åC$‡œÚÄ00«†lmríPTÁl0peµZäI›Ð7æø$ x<Ãü3„Å›ñb0wkÊ#͈jðmžœsƒ³ ]ØâÐ&“C„"ĈÃÝ‹Á\iY±eÅR ‰ ¹¢ŒÇ^°g'+$ýQ1˜Ë(EØísàBØjç"£ꢀM;íài Bܬ7¶q>µÃQoÃ; ú*Êm#Ô1ÀhÛ¶¦!±9J-±Gæn³3޽Ïþõ&T- Ø!Éþ­H¬¸$Æ’€5ZôuQ,)`‰@àŠÄ™ÃÒÜ+zpQ8|f<ƒÄ8†»çbf(ŠÚg ”€Ä7ã^)Ü¿ü°ÍÃåÕ››|íR‡£s˜ ¦ÞlÛsKâ:ž‚ ØzlN;M™ÇÚ+‡äx9ÓÔ¼=ëæµŸ­ð"ˆFlA5 ¨ÀBÇÁT‰‡ßo¢_õ8 Éãs™¯¾á@=ð1 “GÀ³€Ó¾o{æO´„/B_=ßg‡Ó :×_>ÿŠð4@@ÛTZ-“wü^½MÍyÕ”£mðð#ätN?ˆ«êmÄr:ÔO‡-ÑúÁÆþ\ì¯{TZ3c™Ûm¼ÖV""d©Î!"L¤ÆH;6 >'¾ØoÒÛ@ÊL{gÞTk&$êCQ‹¸ÃŸÕƵs&'EÙ„vŽŠ ­Ô&"„ El`ÆÝPÊ€d0 ˜*bµ&ÄB P êCpÛ7ì ûã Y2âº@®ïHëi Zs±¨¼eòª;0)°Åö…AZ{2¤ ¢ÃIjµ³J‹Å¥‚°$¬«µ‹ådž}]±ïÆp"? ·EºÓ½­å$à¼moîl/'ç@4A*D,‹q­ÚÁ-¥d"Ö%!®iXV°bŠ1vVO»•p6Ro>ü{©~(¤.i8 4è 6AÊ ŠÒ\W Û·Û ?~üÀÇÇÍ£UJ„àbÝ\üÔŸaJw0OÊÜdvÂh´ïeCÜa®èÍf}¥&Œ2 c Ö r"ìYpT|Þ2~Þ .Á7‚óZ!FßGµg±™zlßÁPª:ÍÜŠ†Á¨f±ÕPZŽßKûY{.”hNLѽï?¯Éƒ–zŠƒ| àà.~7%0[$QÔöæà_ÀÁJxJÝ‘kíÏ ¢qÎ8OÍC‘á2sÞsskyAš»Õ_EÒdzÇö)­O»Ú_“éì’ó÷¡5Z…º!æ\6@îüÚLÁ8$Îe%s¤w€êíïäZ±¦+²(ö\ðÈ·Ï>>>°mH+þû"„„u5>Úâ‘EfFŠ ?Í][Pä ìUŒE Â~üÄcsÑ\¦³a–‡ä¬=ûL"‹-÷ÿøãDoAŽ‚j`}æŠÄð˜6÷ÆpR;óTD¶"¢Z¼ –0Þ­·f¬N3p .êpzÛßg^9¨}Z+æ6ؼ¥<ëäâ­›±©¥€}Ü„ÙerUZUQ¼ ¤=aM%Ѧjd=Ë!3!sR$wˆ4ˆœ c÷T»= 2vAN,„ÓÂÜlÅVÄôß3J}Í^ SÎZµ‚„=&‡{䯩`c ôo HgËå+eú\Ÿ}nbxä^Ôž9úå{µ‰¨¾¸ô÷…™çƒ°B¹Ã_ø0ý>¿™¢{¿þ^ý·ùÂ%î<ÿnÇ¿§ZŽTÛÜøŸ•=#„Ú]R :ìU”§ijûúæØ3qȶãk†Àh ˜ÕÅ+™x‡kÆ?»ZÝ™ë{;øÎ¯=Þ=«†Œ×{7…´™_UGóa…“1¯[NµÃ^Œ¿4`ú8€Ùχ÷ã~N_ºèŸîè@da¾ÄÑÕŠ2\ÐeoMTâ‰Aë) ŽP?³–Þ0ÂK¨²Ad·Û\PòŽR ªd VZAHôòvÞR2rÞ!u‡jA¸¬Ð-ãú­‚EA—QOKêwLõëRœçü¹@jgakû–ûà¾Õñ}<1C!UA ÁZãÊÒ]"Èà^•²Z¹sÞ±mv UýÞ¬Ù¥ØöŒ&ZEÛ—ÀÐ1[(®Vιbôƒe8î¥TÝIvvæk&öÜ£þ›ópÖ×^µÆÅ²o(»9­n·>?ïÝqRU€ì‰2M± 梛&6½råœV‡ÈW3A|áÌ:8)©¡'€"Œ½÷,¸Ý·»àv7ÿÛ5LŒ3r¶ÓXóƒï)ÛÞ½¨€E¬DLÅ›GÇÀ>„`Q²ZQ'~jC×´(f­¼ã~¿#?¬äéýý—ËņÆþw†xbàhéã A¤Ýl¢b òg~?2CÙ8 q*ùzõÌÑÂsêfþïgü`èÖSûßq]<ŸŸÚïÕ~ÇÖ‚7 j³òq‘ßbwæÿbèûL;«ŽïcÍ£rˆ„Ζ(ãçç­à¾eì¥bß ¶=þ^ÇuµX° „)®X/É㲊˜ØÝœ÷\pd|nŸŒ­(þóq3î`¶Aƒº³ÖjÃÊYôõaK „%™Xõöö)2.)"¦`)‚5áíí —5`Š5–˜S°sk°/—’3¶¼ãñØ ¿\.æÊúç?ÿ‰ÇãÑ#¯Í¹ÊlBÕ윓Q¥ot<Îô9ÕÉô1Þk9¬)K™C×ÔÝNæîˆÝbmj7ºðTJéÍ/ ~ol‡xÛL`øC›»3¦VŸnØV¯.ôÔ¶O ô`Õ?,`þfÕ¾ø9J åJÕ[cã8K;Zؼ³\¦ÍL·Aî¯]Rô[nÄ«Íä,€ýÎÕõª±ðWî°þnöwÏ{ƒ-îÕõ¤6ñz~`‚Ž˜Bÿó¹nºÅ{ÎQ W‹žâ/ØYóä¾MÙZÓSìàTmñ¡‰-Ý…@ ïÍG/Ðx¢½±0¨ö¬ZuTúÖ3Äžä ~xý E.×e=ÜÔyjT¤“JÛ&bä>õ³„ª/í¿å´û"€R¬ö4çAŠYaÈO3|^›-¿êáðÛÖ”¢#”f/,ø$îsÔãhnk4–vë9µwÍUí0âöTcMº’T,æá-8‘Y ÔÉE Äˆì´ e”ÊЪȻ %3ŠDkKl$zwÖhUÄ1‘-»SI ‚‹ùèqb5ÏdëWs81!¢ØkF6P‹Øÿ϶†ÔvàPt6`žB¦ªbg¥N QñŠ·Ijkód{øŠsŸB»Ÿ†¸ï ¼/.:6f „#bsF šŽ22Û yœn „%R‡Ége¤<ŠóµØXF ^£·J{{fð`™yÉþÍä&2§(Á¿§MZÛ V›SIÆA¿•!mdoiœ¢Q:¢IìÜ­˲àÛ{Àe©XÂŽKR\ð¾2b°È` „ÈV`ÂìÁìÆž’~$89ÈÐÏtG(248l™B è «µ:ñˆ¾Aô ¥ÔEáô³9;›b×&¾IgoΙ¹L΃š#ç˜]Ÿ&ù´º Sý9…ÐYçc•˜Bö07Y­•Ã29u\;<'½±»d “CWŽ.š…™Ü?ãyu„±‹¤Æ™ Ê=:ÔÞ²Ù0Zµÿl=¸gºhB'&¦þ†azŠ&Š DpzHÛMUÞrúû“ÓˆôÀ5¼¥áª3#€~)ÖµMôAÔ!¤Twó·HzÓU†€ßîß^éÎÝ1¬¥!ç›Ã’ú°„èÿjÄׯ¯3£ÐF#uŠŸ*„ê,Ǿ•!‹âµß­á&ð£< DK1„Šóû„èëà$luWœLhk£ dM—ª@ñ†8žxW쨉±Äd±’ÀÍ „ä{¾ºƒ­9h¸7µE‡=Ã÷œê…ä­œæ`Ÿó%~ÿk>Ðý5ãÚcˆŸ×Ô×`kÔ®9÷Èàý~Ççç'~þü‰ÏÛdžœ‹­ÃS«©ˆ€ƒí¹t`ÖûâgÖ+ÇÎYØmÂÉhY?žoÜÙv*Ö¬l,àç=ãÇ玷kêåÑñJ&*·=jô\Û¯ 8ýs2¨ JúÆâÅCt³vº¾ÿ×_ÿÁÇç'î7Ûß½¿G|ÿþoooX–ß®o#iRm`Ú°&¶§6,ÌçÀæx™¹Qq”Ÿ¤¹pªÖs Tbbœ Þó×5Ñ®9pæ3ÒüúúpÎÏhÖP;láQ&×ù>mßÿÕÉÄ¿øR íâjQ›ãÑrÈ1!FrñÒ¬q]7‡\TAþ|àóžqßvo)Ù>ù²$0E¤¸zÛ¦m€YY*Šì¸— ?îwüüÜñã3ã¯Ï wÁV,xì‚*êÀý€R¥Øs*cæ­Y)SÍÌëBÀÿsúD/ódAJx{»àý’ð?þXpIÀÛeÅÛuÅ%E,«µ¿l›5²—lC‡\í½e3]èú†®×«5^6žæïï߯PÀ™ s›dsXb¸šH½,‹&©—§´ïÓÊÍ¢6ØXÉÈeƒˆbI+˜#Š–9èÕ™>iBÃý~?l<½½ u]=’D“5ÌíedSÿ< XçèçL5èƒEÑo’â;iÕÔ:xN2m8½-Æö¬¡;²È#„Â~Óó6ó+/ïxÍür“5‹?_»´è—¢Ô«¼õï_G éà,ªµBƒ‚‘žû\˨áž.ÀãæýëéïÃã…Rþ••¾:˜³©ç³£é,ž\íAš–pÈÔÎÿÔZˆûu;»¡Ú$£YÛûÁ§‰’Ý„ä­ õIpL¾çE¿ONT±,Kÿû÷íE—î̪¥`ßÌæÞ,ñ9ïF”òI-—± ˜Ýxzú†a†{+OÕìý!×Þg>ÖUÍèÒ&Ý2âBäÓç­º£È§t͉d‚8@þ²g´ w (3²*¨ØT[|SQüæÜ÷‚í‘ÁhE¨ œ9‹¤Á+Ç·MkÅå’\H¨Þ$”¬U¯´kÄ,ÓKdĘ U 8,â3EE@‚‰ä!xñ… b¨’ÁÅ ‹Ò ¡˜ã­&|÷K,Pø¦*ZÑ‚ñ“Ô~ÇÄÆ,ñ󢈂kíˆG]²ýÒ¶y©Å"ÝÁ;Í a?‡CÆŠˆèN§˜BAVÆ+ÖDØ ác·¥w‰»Ä» EÂVÅÝ¥ŽC›Å ÇÆÈŠÈÓƒÐ#…>T(S£fZ[û­ âïpB£©ÌÝ6±²êek)ô,ÌUvIŒK,¡ PE@Abs^}»D‹ ’Å'9—¦8W?´{œonckuØýP)ä±^ƒ¶WÙí~bÅö0îºJ@¼ˆæ4Ñ1±u¹q F4˜9‘Ã4Þð¤Óº{২º@1ÄÕÆŸâ¾l‚ïøkuàÜ}רrM`#Ö˜¸˜Æ’îio%ƪRÎÝ<€r?ˆõwhÄ{~² Gh0 ‰þe!‹NÍxú…Cû•ózC1;°zй=×À®ÎéË ÷Ë=¡3Ñ^ÅüççÀ—<Ê/Ýd¶ž‰‹¹­­qìï܉$ÆŒªcýòAJ-“Ðë¿£Òà›ߟ¯KÕ8‚!´Ãçk§•ýL®€&Í×Ãêµ"j­°µºèÉmPC§Ø,u‘—&NNŸêù/8\ZŠßá?_¹ÿû!W훋ˆ }hbû몂*µd"$ IDATx#7Ù:¦¥7¹icez‡Cw¤¯( °zL1€v+{Ò‡ÝÃ%”šA¨öþñŽŠ ¼¾#’"R„…jAUEÝÛç ·õûã÷ý¿PÞ¿#^[G]È ÞZK` „¦¦þÜàƒˆÖ*- ¯¡·ë!ïí½‡ƒ±¯aß7Ch‹®¬¨µb¿ì¨ÿâ€~î ²È–ªb]ÓÁoC®T)Ë(2§ôȶΈHSËj}!€Ë)EÜ¢ÚƒÉ4öÔm-÷SÍ5ïØww]Ýp»Ýº€u»ÝpßÈ%ûžÇ=r  U2Ö§áÄðî/x¹gô3/î9B („ÍÁY Ø²à±>¡¸Ä‚Û½àã^q}K>ŽP¶%O Øó=Ø„Éà{0cEÙþ¥”Òl³ãDU‘à,^äœð­¼ûö=~+lº\.vH×Á¢5FS89tr&Í‚Õìd !t‡!M?ë‘÷'×Õ™GtÆ™ÌQÇYìšß£3Gû,®µ¯¿\®OøYX×µ¿îÙÖÞƒ9nÖ^_ûÛÿ>¿¶žïÍ…!Lƒ çsìì&kÌ.òÔZHØ ±B$OB˜ÑþyF”¼õȬøõò¿þý/Üî;þósÃÏ???> n°k@®„Û=cËS§ [|4, ¤ÕÜuÎÍ+÷¶íZµc’nŸt«’€ŒŒÿëW¼%Â÷ooøóÛ;þüãÈŠ·+aM$b,?ލQïíŽzû@-‚ûÛþøã|ûö­·«¶ksßw,Îïÿ`½ÙZkçÙ¶N¥”ºø¹®+ö½ôØýìHl1ìø~}ÃÇçý˜án| Bò¯Õ;ÆØêR]YÖiÒÇdu£SÖ—Éê5›Qý†$·›©ƒô' 9Àf€Ý¼ðÙ+U®]¬íàNÑì¸Z}ÓÀ£q@¦ie¯gíÓ¦¦û\Lè²ç‡ö gkJÒV ÒÁÂêµ íð`¹ÐIñ–ÁÜ:?~ä¯ýW¶­çèày1úGÃ~¯áœ‚TˆÔ[³ÅÐò¯-Z¨"¨ZÍ·ãÔ–Cƒå ÔEB‘yñâÓ‚36æµV¯…§Cž¶m0Ι칑žGïKOr ËKW[„A÷Cľ Í E[ð $K‡q6õ¸A dP§û ĈÇãÑmÅ!$<ò¶/*‡‰Ó+G]æúb[kÅõzÅý~GooÄ% m9W”,HKÁ%_lÉâšPwãUTÉPf[›YOÖl¿î›ÈSK±8sßÔͱ‘j¿O›ŠéQE§ÞÞ„éPìü:MÆ…M¸ð÷1«EÜT ˆ‰`{²µ¡úa`+BŠKHˆÁÞ«Çã’Å6¥{vÚ᯼M{[q†§šÛ–Bw½[Kaàð¥;ifeµ½YA·’&?Ï5!ÀîÿÆ­Hµ¶È²í ¶sØþxàþyÃçÏ|üøÄççdž’ÅÝŠCXPpŒˆ!¯Ø6ÌYo*ƒs4;6ÚºÛö‰³2;iÆúö"•ÂÆ›½oKˆØ ð×GAJ7|ÿö–¨Ø¢¹îˆi‰½í²­)ã«‹2Îa[ËC ÎÊš‡Í9WÌ%'€··7§>?ñ矂'^X›í´{þêΑ3Ä]‚Úïݶ/ZºPSJAE5ÖáID°×½_ª„œËTÐ:kº5þΑJUEÉå…»×ÖÊÀ q]ܽäÏ9w϶û‘ݶ‚ JíYeï]‹Y>¼ô ~~s×¾½½a}{¦¸0Ò^WEšÆ‘Rº\±‡uŠG7V)¹ì•ôx<ðØËI`i-›+Ö•ðñyC®6 Ý¶ ñºâýûx{û†Çc“âzYÀþÌݶŒŸŸøqÏø¼e|lŠGMxˆâ#+~>*öZ+A‘ ‰ ðû>˜_Áxÿ¶BPñííµf<îÿ/âòfÅûÞÅ:sF)‚Poá–ZñÈ?qI„ë¿nøþöÿüó ÿüã ÿ÷ÿ··`%R°¬—ëŸÈ9ã~ÛðŸÿüÀ?°ï;>??­˜ârÁåréh©œóhbu„”}VÜÝq =—Ç5ÆsÃå_3ÚÕž‡‘]u®5#’Qõ9DP'û»Ê\emݪ nó×çöB{±å H[z)YÕo…NÀÉ£xq„’ò!oûU”Žˆqã˜{=)ä˜jÐp™±G;Ø#vÓ) $&B´ˆ ‰:CGû¦¼oœéï1(þOð×eõ˘¢¾Ž̢ƫ‰»ÍXÊMÏŸ `µgM§Å¸ H}ªrŸ_ßê”o•²gž×W‘¯qçÆTÉÛ`ç˜åüúÏ×Ô¶m‡‰F{›úôcz˜µvÂùa4[pÏ„6h‹ð ‰lu£oØ!ÆŠº(ò^‘ÃŽPØ-ÜlbPJcp™ËéÉR|úý,~úQA•¬}ˆÛæOc› C[ö';9c«’5ÒqÆï_ jt÷n³&„(¡ìÒ'I&ö5G P+OîÁ`±y¾ @m)ÆÅÐê¶ jYp)‚ì›}×"úaWÚÐ’ÌÑÄ.ŠuHØã/âÃ}BP‚ç’D;,³:Ì7s“’ÛŠT;¼`óMu×IÝ›H ›4ëødžÚc·¤^ûì›Göø ¡Î5ÐHÝœ2ib+™È „JÞÖhº­*s(±â-YLѼì0¡µ"xË"`N¼˜ŒyRŸ ×î¼Z«¶Hz}q?÷H± Êj΂èÐX+ P%#¨ào+á}±¨àÿúq]×E:°ý²2Þ+11ƒ‡GXiŠY·Í\¯ýl,™\D2Á¡GÓYÿ+,6™vQTÙNø\vÏ„*Æ$T/†á‰'Ù6à³cæimöìãÿVá)HStÏyZjqI3OÙfMÌudÀxÞsÜæ8&G‘•Ä´Ë·>ÁùUËøì•¦ƒ¦MѩǯP‹‘ø±ÿ :;¢‡Hûkþä$ ©åOé¢>;‚íkƒ ·Ò£ò_½†t~·ä˶ßW|Ìãóýø²^13çv¿sD¤*àøó¾b~ïÂ4¼ÓƒÈ4·=7Pj¹dr8ÑüØ®ùÒŸ-ãç)ÈïG;ð=íÝe2·MO-å2õÔpi_¹¡!fæUg“‘vرráÝöw¹—nœ?§¶ž·5ä|€ï¨†ÖÀ'êïŸÅ]Û5WdƒJpnTrLj½˜ÀÁæ|Ž×ÞÁ‘<ÚÓ¶Ë~¯!"Ê‚À „ „À+bx`ã ±dÜ·‚ RîÎcÜ¡uƒp‚bµÈ¿>ùì|¦ðùùÙE«¶¿%"DN6°b Μ¡vþ(¥àv»=1ÄŽ`mƶmPìßœÍM·®ëpä·Ïd×^ ©³pÔ¾w‚Æår}2´÷µ”‚eYp»Ý  4Hxû^9ç~Viç¥øÀKk?¿·¹“¹xØC6ü4½¢”Ò#ž?ÿó—ý®q9¼odžûý¿n?¡a™"ÄuýoKÞÜn7¼-"†&‰! xÓéc+Øwà‘¬ØJÀV-E’‘±yɸí5Gc¡ú9áqû´A>b x»BËb€û˜½ lY/Øõ“«¹vRZð‘o¸m?7¤üã½b+„Û}ÃcßðÏÿºâû[À’*.k@dKÎ}¿^ÀDøùaŽÌŸ?öÏ'¥„ïß¿ã?þèQ¿¹ˆaªgtÐ5á¤n%qr›¶ïíWý¢4…ÜÀSä@ý€Ã:ÛR}cÆdàöé࣌/88_|‚.—>s¬Ú$©ú„ ªܵO0|‘±¨¾†h·–ÃzH[›T'<΋¼GŸÆ^͹æçνê‰Ï•Zñ•'•ƒ’džÎ'_góÐy‚{ž&w§ñ·õ*}²OD 0Yíàl›±–s„qšz÷Q:ÜÁæ8QÁ\ÛÎòU±¯ þ€3ø¡9uì@6µ½˜07†“>Ay©OáÎ6ºÚ™42oHséB\³t[,Á®9âÚ7–IRˆOšÑn!®Ÿ_Œ± ÛCCÕZ#a]GÎ}ä-:\4õÅ"»…µT¯;E)còuŽQÎÒùáÊ^ÁyÞƒ6ëñáÅc·Þ?¯ùÿÌfoœ‚öYF¶ˆØn,j0l²ªBXÄtä²£dw¨é¯f> ;S‡”'Þ"¨Cá• Å,a…–&Ú×D°µ¶&¾çbBKu±;PbBUm‡*erqN6†T;ÜxüX{+'Ø]ÜR a/ŠeQäâï­Dä¢]@õxM`tÑ>`Öî£(£tŽj‡A2·+XÌMKÁË~ï4§eˆŒÔ¢©¬Ó$RÀ‚5Øçx Æ*«J(ÅnLöáSmé.D&ÄhÂ]‡yw÷ŽCo«n¶d8œ×Õ¡€Ô0½{î×¥!.&ê²–|[׸Ā5U|¿*® ðv%\Wàýp] „ˆ#‡y8’TFÄHº÷ðK·G$õµµ*u*uíH UÍ ¬Ò[~„ ¤gÇŠ@29½ÀÐ&"´È˜»,×Û"y3KûÓÝ:BrÕ©P¥£°gŽúÓÖK&üÜ@ØÑ[=aX]IJץ^ËÞb΢ÕÊ(ú{È~P-Æø‚$BÁþ̘(¤­î¼«úúù×F˜"çrXÛµ‰mtÐ̇¨SÔ‘¼lqŽ­ö>Mƒ=„´GW©ƒ÷¼H¡mG´rŠɈJ[3‡ì“íEa:ìK :éMS£(»«HàRè\?.s)¸Ÿó>rvD¬­ ƒµ —£ÔÖ*8œöâ„ÊŒ/pNj㽆óЭö–§¬ ‰ðÚuÿ,@z4Íá5„€ö½Ëäà?ÔT/lQ0Šdk3EòVT‹s²:;†ØË XkÃ> ›˜íNI ä…  `qËÄ+7ßAûU7 Wã1Á9ì^H±¢ìY#8,XÖw¨¬ÈÛ ùþÞ®(Ö÷oXÞ>qyÿyÿñr±ö2­c 3èÛÃ!mÈÚRm®Mà‘¡êÂÖÌÏ#iš’Ô!6^`œŠä‘fLbÆ”2hNwç± –À °tQºý½âL‚˜Z,ÉÎA›8G¿Œž¶–·¶ŸCFõÖ„Zv”ÝÚ?~þÄÇÇ~þüÄÿüÄøü¸ãqßÁiAš~θ=Þ4—G™ 4¹"O"ü¹Õonƒ›ÅögáN0˜ÌÂÎ`+ŠûVññر|š›ú¶0ÞßK°â q§zÛ»WÉ(eóµ¼9 ¤'‰Î¿ó4 9ïwÔ(HBw¨œ¡ôí÷ƒ-7€ôö`2#›{^XLq4cžÝ¼c€'ýu2Ó¨®l¢Nm¯UÑÄÎ.r¦‘ȱ¶ ¶BŠ~ž2œJK%E$ÿߎP97t ĈÏÏÏ.`ýñÇxï¿KûîOÐôÏ(õ׿IÃJ° Å“(zB¦±,—îL5Q­ÿÊcŒªvˆÚÚ›«váïqûÄgÞ€?¿aIÜËT€mÛq¿oøù™ñóSðóVñ¹W|î%y²Âø© … VÛG‹f@)0-X9`¹®xl7ìû ¨Æïef„´@ÀØ3C¥XR +²ìYGFÍr%Üïd°²!ÿ׊?¿%¤ÀàØÖNþþþQo{ ÁxyÛ†˜®ooX=RH¾Ö„]ˆ "¶Æ4î ‹XóçÖï~]”›€Äpª0[òQ<±Ãf$kEª0×E-õd Sœù0Ü®ïZÜ¢WM…å<ãÍ;OÎí6‡&¹ß¸’Î<¡W_óªùÝÙ2öñ“kÌÛž„l—Õâ fô("À°÷E˜º“OެÿOâÒßtlý¯Ÿ§g&ÖAyjp0×F“f1k^àÏ$HA`:ìžëVÏ._N’~Ç ûªåñüsæ¾:ØSgWZÛÈÌ7[åÒ'3# ¤¸ó²Ü*;_ËgÈ`»¹Ûä¡ÅÇk<‘ñ}-ê¸,Ë4ÍØQŠ[u뎒í~]ý¾m?çð0B«ƒö¼±»±j­¸Ýn¨Ÿ\‡ÿppÑc=9¾ˆ²¶©q‹-Zs!ƒ@Þö×-ŒÝcVAŒ§°Ä„R#ªš¥º½·½—¥do$õZó^{9… Xv€‘â0OŠÞÜäŽbHŸ’‘Õ+ÀA vîëA` )lH„Eao(„» T¬%§)Øò:#Ÿ lq>Š®'G ì¶ ßölM…‘³¹gâ’P”Æ¡saДØx?>Å¥k&>ùêF? ¯2¹.ÆFI)ÇmQ`ש~[ buÓKìÅüvUœ-’l‘>¯‚oøCP¤(Þä8ø$Mj8R¶œÛ„pqS{mèÀl;Çê… VîÆ$$¬X ¸$Åûp¹0R,XÅu ¸,Š%º›®Vhm 9:]÷‡?LEy¸™û½@2>«9urƲïY«xE<ÛŒY€ÐD‡ÏÏ_§Öñièá¾3ø‹õ-Šån”&úÆVQ¡âÿƨi•&Hýçkç îÄÚÒ#ÿÉ\V|‚¿Ó¬TÌŸ?¶·i¿Vöh`Û°N8)]Wˆ ¢ƒ5D/†Crj¤/yF_¹‚¿zF«Êëg’×ÑYùêyöÚ}åû¾“=é|ˆüŠGÓÝ‚m-Ñó?¥@$½4á mkywMNE Š#;ÌÜ!ÔÛyvÓÓp_Ùµ­§Ÿc3âÌû¬Î",-ÂX§ßÐE¾ÝB§÷E§{çUwÚapÙFtô«Ã8‚%ÀÏœÎi?Yý÷®~05wš³\…Íà|øÖövU&®± pÔØÊm¡mˆ†hg (ˆ""@L J U”ÍÅÛì{)¨*(eƒ"È   Êк¢j8š Ž¦¸ï”|Çþ¸b»ß®oß ×7 ¼—I~˜lQª‰©K§ûÓ®ŸPEÛ3 m)ö>Ù8Êc«ÕÅ@9Ü—U*´•¨ôÏ-L¿t÷Ü¡^¾ D¥·§D¸¤+.ëj{Fü˜œ3>?oxì[©ˆ%"&xD\±¼[†žöì4Ež9wÔ9]&RšÛ¡µêµ¶Á}ß»Ãâöñ‰ÏŸoÿ¼;à&ìüó ´.HQ@£Íí<4טZ+Èñ³@ÔîÅ)zN²´h¶ GÞJ[ÈUðÈ­âž2î¶Û~IŠ¥ÚP·µhŠîÚž2!aNw:®ÛÿøÇ?úë¶‚¥mÚo',|DàÌKcLo‡³oÿ:¸–°¸ ¹­?ÁœŽÅB>TŒY¦þõ&’‘s‘B ×uím£ݵ5M{M)¦—ç†óse~ý-"¶®pH¸ßïîC¢Î¹šž}í ÒÎ_Sklmâe3À¾9¬ÚÏŸcõUjÇÍѵàí¤É…«-g¿'K?Ÿ5Ýã¯ÿ…,ëÅǨ⭧ŒŸ·Þ® ˱ïì×JÀcßPxϮ×k¿Ûçu¿ß;bgœiºÎ²Øß/îÆšïg¿ùÀ\okL»#93ÆÄhÀÊZ¡dÓ»²çQóÞ9êÑS;ö‚ ²§õh)XzÛ€EGÚ÷ Hÿ•ëd¾øÃ´H¾~rZµ ÊÜTÓo¨9v:\?o¾æ mp·Ïø³à›QéYtv;ï¡Â»EvlËá¶ÑÇaSò;¡ê—B¢—‚ÍÿI¼ØY¢tÃE„é½Ù~ÕüÄÝhüÛdÆi‚8b¶Í ÷~Ñ c…AD(Skdï{°x|_ëJus¿BüÅÅ+Öõ-{‹-u«6Û%PÈ*2W²»xÜ©hÂóÐÌk… ¾é×! 1M@JêûL1­@üÅÉ÷ [ÅV7åL ‘ôPTn& Í :¡”ˆ ¯(÷O,Ÿàûõò‰ryA}}Å|¹‚s†LÚê'ÙœâÞšc3ÿ»{ŒÄxgÔ­‚>ìp%÷gf¦FwEg[QCLÔʺ_f¶ëÁÝ®M#È)#çˆß~¹â|9áårÕ3Xe¬Û÷Ï–EaµVÜWuσBîû0´@<‹9ËëÕ³uÉÛKÙ°. –û'øxûŽ÷oøñãÞÞ>ðööÏÖmR†2H‘2©@åœÇObÅ „ø„_Õ]@.”Ôá½{>0‡ðC›¹yÅÉ8vÖ ŸÏù IDATºUý³l‚µÞ>¯/¦ L0q›o‚·M“I1µ&ÉZ7”ZZð’ ª(…M0üûßZ‚Ác•ó|në×ßÿxŠÌÿnÏ¥ÎÝ«Æ~Ôa•óô"RŠæP*-ƽ‹^¬aJ—R”á2Ò‰š˜5ºéœYå|Hjœ²„ög–ŽVÉ;àzÚ&ZkÅé|Ý9Âö ƈ_ýU]>öÞ<eÚ¾GÙgˆûñµ)’˜k~æ94:ކŶPû>"9G¼¼\‘¦÷eiï=¨§u–eÁÇÇŠÏ›þÛª"yŽ‚)Ì9ãs±¦Ø"¨æ´Ï3¡ÕO „lÐ`Ú̲ܰ,@6&ä4ðí—WuƒAðöã·ÛMÏ|1C¬`ÛÔábB5wõm+*˜ò1nȹbš¿¼Ì¸Ì“Ô×j­xûøºë\Ä?§ÏÏûp~¬æƒìÿÙ¢AÝÿ¸6•Ò œF‘|çÀŠÑ”Ê ¶àRì™Û#'üQ#:˜Ïôw? Gj,Ú w–>¤m>FŰ;Dð¯Qpè–ßð%b÷F}áÞñ‹YðÈ' aµÓkÓ ê¼n›ž!ÊHûšlù‚Eõàdù‰@E?ù]¾r ‘ìØ ƒ_NŒåë)³Nò®%²¿Ž0dݱsd#ÿ¸v°ðŸè§<´ñwh0Ï'|«ã„ù8Yiî<Ù‹F¼–]Än̉3w†/†ÇiK -';æÖ?å ð˜Cß6òð^¹8¢¯/›‹Q§ \6äÚT›½î>%™w÷œÿ®Û¶¡n>ßßPÉ››øáújŸŸ<숂5© f+R¦\¤ QMŠÕ:§P™\סŠU¼©Ë'BJvv« T†x“çßթňÁE«ÔÁd=€¤ Ï1¨Ï$š;1 B[4ªU›9Œ:€#!0C ¯ÕïÆ€·xûíf pÕß³lŒRºØu«f×Mv­Œâ0±Í´1ÅRrÛÏbÝêAšc@Ân!(^[¾°›¶z¼¯”­ýN‘•ì¡`OA¢ÞÌÂàv“<ÙĨ÷‰~/½Gx€D[Õ²³¹ˆõ@0XÎÅòkÞ7{þ¼áÜ2¨¬ÒýLÏžyJßÁüÏñõÀ üªæYcðþkŽU{̃+Œ5^Íæ–Ðɬ]$ƒ;Oöíe­ð¡ýŒ »¡Ôè–j%/vQB]'‚º~Ä›Òâ…Â}€ùl³3^ÎÀ¢`l½¥€ö»t&¡­aþ’ºû>ãûã( \ù^É#1b­Ø,¿Ç Ñ`-{¬÷—õ!4À>…„38$ý>Œ†Çz«»ÂÔbBAÅ/Õºbl‡ pF¤€ HH7kMÈyE\Üq¸€„±.oZ$"\˜&„|Å i~×(LàuC¹/Xo7¬÷;^~-H§óùš&EŸdìÖÿÝ`À>2Ñ/„~]µƒ=“½ÍÕ ã^‰”Ÿòævî!sv´çBíÏ…#N§.—~ýõ®/\­Ž^ê†m;a=2¢ ã¾u.³>³ŸµÉî]žò¸÷ÏÒ÷gD®•sè¯Ë ·Û­Eüø±c_­ëjN2y®zÓâ¸FtÔþ¼SŠîŸé‹sÍ3ñj–§Ý³ÿThô©TFa®¥¢Öfm(öˆnL )&u¾À/¦dQB°"I*t}ÞÚç î0׎Šé|°oìm•áyÓy°…Æ‹]¨CÖ­óB“Lpš' ÉFÅS0 ÊN¡·­Úø Šî¢„cK–eQxC‰ôˆh/Ø—}8¯×‘ç5ƽ½ÎÿÝž‘]ë¢ÿïþ¾]?mï5Ü{z{L^)ÿ{OáH¨É—R B3ÚìÓI¿ýö+®/ßðíÛ¯øëÇ;>?ßÂÉö›ÃùÌ"šµVlEïåm«˜'2ÄC@µ!týd¼¯JÙP¥"NS ýìJÉžQ%’#¸è@WUî ?ç©á¦i²)goÛÔåI!·Ïˆó )Tp½á¶2JM¸/Ÿ·;îë†W¹`2wÚ4mà÷;>æŸÓº®Í5® ÏöÁÖ„ñÜ;:£ \º;n,zHNŽg&¬,àZ-C®MJ¬{HâF0ÕÊ`¬ wZ-뺯¶‰W› Dw(Àm¤µÍø…9ZS›#£Z6\Âa!£@è3+c{Ó†¸Öø&î ˜J¶„E(1ð8Ø|§Ñ6JÕ66±‰Xƒ»ÜôÓÈÛÏ&¼Ü<_¹°þn ‰NdÞ}mcL=y8’¬É@Ã4¶m…_ó÷Ì£+röÈ@»Ò,¯½Í@¡";ÞÚ+"ƒl>ŠP-R㌠)¶ ï7ðc%çΚLV Ú ¸.êT=¢¶†›Æ58€ýF+ëú§…i$u'®Æ¯A›j €­j%k©E¤Z´é-Ï-fÐÝl bøTËÛ’ªºƒR$­ƒ.kû¬FÀb©eÖǧÃä×µ`¹Ý°¦I b1ך%W F!k<‚n0c¢c qáH×¢n»ª¢Ys§ Úé/j|U¬'ëH$û]cÐJt" ”Ú„Èj «Ú[­¥Ïš-.ÉUE‘R‹Ý×ÜÝ´UïÑj"é”1Ú4¯iW*Ô bÔø¦;˜×½‹bFA-úÚgÓ¥Øìý£u.é´*zôÍ«¼¹>€Zûa<(ØÜ~¡sßó…h/–-7PH¨FG¢h³Ö)iœ3Ø!'˜i)Eu4‹–3¼j5û*>Ê©Nä»BÚòO°êt;léõ¬º‘q¥À✯~x×_éà"»N‚srB¢ZsOèì!(CåÐr«bßðìzŒO Bïœ'θc²ÜõAÍ#ë dwÌ?Š*àšˆ¸c Ñ!NŠæü Æ®‰z_ ïÁ¶î4"ËàRToZÐøp{§ÕWÏÞGQRžˆ:Ï#‰{AèÙ^cìœS…Ãg {ß=ŠXèH4k4ûû˜ç)zÜŽQ¶oãî"Ú‹=§ƒ+â”f>$sSøs Q0w>ÁÀ¹¤ƒ«ûè@kÕàZã¶NT‡Ÿ‹˜Ó\Ž"âW{É.†`.Ûa?Hmsf òQdì¢ã>¹9-êÀÌ(Ul} æ£î’Ð6AjÂ?Q´@¶g…u趦1XÜ3ô}4³Þ}¶(J#”Em²áb®JÉBÊêèH7”²aJ3‚|mÿ¾a« ¸*ß2H…Ü 8N°UåLêð’ ð²¡ÜoXowuùœO8]/8]Θæù4#LÙö<±»ùŽ PÖÃ_¤~pw>‘ÃÐú m18B¬ý·µª‰r®ˆUtŠ!`Î^/W¼~»âúíU¬“Fmê–lsÂu-XÖ o7”ò©ß3EM”øž3<_sô@¾?? Ý{+D~+:”\·{ƒ¶ÿøþooê¾ú믿ðýûÜo‹îc²Mƒì §C\kQ Ùö¼mã{Þî.Ân°<™ ¬ñw+ž »Ø/-k ¬EÅ«e”t0¸1j•Æ›ò¶Èœ&[>"P¸ÅϦ)ã|>a]k÷£zbgH å<ïT^:ÒV<öa§¨7 ÷C|l†®Ø•,œÏ/ÃyŠm¿ÌmÒoa¨îCf}–êÐPv‚Ãjgö: ³]Üc.Mt !´â‹ck¤[ü>8ŠLcšC+ºc~|æx‚Â9‚ŽR¹h~½ŒÏ$¿ –  ¼s_ù×TñIûü `â†-gÏø¸Ýp>Ÿq½œŒ…̸}¼uC€µ2’µà®ë‰Ê¦YË0bBÈ úÜð±Ü×Ì ˜""iSz€ŠW ÷Û )jCû”’ Œ?>?qÿãÌçRœ°‰ ¤¤"l†Ó.BûÝUìÔ{9æIݬ(ìM‘:Hôϸԭ ´§Ó©ñΚ8}Ls ÏG»Z–ã öÚç‹ýYÜ…Ìt½ž $„uÓ½]!k6á~X–ôŽö@¨”€®m̪/@ÒD&o£aŽ(T€2ÀûZkQŸàµ–Òå¡kèÝM!Oõ#İ|ü™ðÓZAÐ÷ÿÞl‚V¹˜ZÃb0P( €ffká1­þ ë™Òùåï!ê` xîDûŠß1¾¦ÑõvŒ…éB³ohQQíføm}1Æ&0T<à`|2ßnû§ç®ªv­0¥¶›pŒyˆ >›é">cãÍ`‡jÁ¥Á†P‡ñ¾Då(ôô5øpl l¹_«F1¢½~tÚ«6@MhÁ¶aÕZ[2n[·ñ8u6‰ÖþjE´ X¾ ›?à¶µbšNXLvíë¢èÀK×Þ:1ðG”aw×+{S¡ñ|ª°ñô¡™cšÕôáSŠŠXÚÆh@yV1P§{ܸñ bkTK…$ÝàhŒZý ­n)jN"u 1jQ·Pd–̵ey˜$@LÅb{Á‹Ì”„ÀU…£ Qo” Áˆ&|¦±Õ;‚–u±Æ¦×RE`BÖ¢Ã8S,¥Ô&Öé¦Hl³iNˆN¡E7Äɘ‡DÚ´GUš ¡±B*b àÂ`ÒgEZ ÔP»u]Øœ€ê~+¢?“Y¯Ùj°ì{Îă†ü0kÂUêS?"¶M°WƒŠO¾i &HÕD@ØT޶A@A §€œ¹9ǪT[s¨Á€e8üj\»¤¢Ãóä‚:\œj fpx…à.@sIІ\Ace‘t÷‰™÷ÎØÖ]ç^!]6Ô¢^ãù~í.,é¢3í›FîbIƲ‘Z†VlÐi–¨QHâÁE¶/~pW"(¢z%93Šr:[‹r‹(ˆ^ozÐ΄&\ÁJB\Xósݱqïg®ÞgâÕÏXWÿ$^xt)chMíÑ&¿öN5aÝV¤z²êø B•k½£–;¸n˜¯/õÙ®Ë\ÏÈeRçdÓx­£ï}Ķ»´èy´ó‡7OGßçR£€ÜÉLÖ&éñö@0ýÕ†fU­"!ä„é|ÂérÁõzÅõzÂù|ÖHi³æºé@*å`n‡ Àk-@É‘{üXª9ÄÆ–gé{üŸlïǵ ¬+ʺb¹ßðùqÇçÛ'ÞÞ>ðñö‰wÿóñ‰mYcFA[ë“êN›‘sÄæDëÎm‡ÐÝ;Ü…ŽÑÉE ?zÊë¥}‹â1iAÆýtüžãl–ʸÂ÷.Yðr™qš çL¸œ2jRÃîrWl¾ †Œ‹6V¢ª†Jò$Œ3xpO†@æ8r]bžg䜱Ö¬÷7b¼^g¤ð qÊØî*è\/§Ölè®ö”ÒtBÎï?þDDÀœrÓ„iòðã¼TpÐa(Ù9¬ƒçR+bšPØ9 átB• ˽@(áÇÛ Æ‚³E¦~:¬Æ0Ï1CŠòsœrÀ¯¯9rTÃCOþTDÛ“æ9aÚ&ü¸½á?þÂËËÿú׿ðúújî=1ÕËC²„Š¡Mà>CÿüÇssŸ†Þÿçÿøïÿë~ÿDÝt^_Ö 9OVçÞUˆ)#ÖÙKUWA9P)jƒ¡*_}œCP‹¶ZÖ7h6–úf׌ÂU[¤œ.3ÿšõNAlÕ˜ 1&s] e'•€¯•ÚìÎ ƒ»8äùÁꜣü`{(vF†C´Åõ¢‡FŠ:¡Ò¤NB£mXØX1@›k‰á€«‚=ðÔ>ß¹][ÑœüO œxŒ²kr½ü—PkSõa"’óTœq¥¿Ž´1g -KP¦N4ö˜×ù›¦¯Évpp°)¨«÷Sõ¾˜“…ú$›ÕÕBæ Õqc<®¢mhè°™ì®;r¾ k$T71~m*³Z•«æ‹E¥Öö‡mó­-ˆ½Ž×ï“Êx€+Û{¢¿CeB ýHtZÃ"X· b‹G´)±Ÿå†FL=äkØÈ;°ãù|nqÂu]ñýûwƒ„«~šfÄ”µÑ(¤œ‘¦Yv¦iBéÿÌ#L!M@ˆ`$Äé Ê¥B§†[Ï¡‚ƒýü*VÁ 0Jî‹_kÞ–fÿ,lÐO?XYe:;„b”`6G€›ôK xœSFÙ*HÖE…º bsÜ6±Å„’`|$ 1²m$b‹Ã0RÖkµ…KÚ§ËIìsRŽwŒ‚”1hÛlŒ‚a¼`J„”9æ)"FF@E Œœ#ò¤m¼S;~ Z_¬‡P; °­<€µ©ET<®BB­=Wݤϧ ñ¥µx󩹺D× "H` Ùý*5‚èŒ_ÂÎᄘ{ų@Ÿ Qç– ’B{M<:ÓbÔøkåîféÇeWJï3ô瑾pEŠIŸý‹tª‹bTq“¹Å}ºíÍ…Á„ãàÞ¯F·xÁã´Ôb¶"Ì,ZQ^+ ¼«.}mýßqfOÔø•ºÞWˆl*\†=x–÷=q^9O*„Î7Û‹H4TzÇaãµ·È‹ÉÅDs¶Ø<_u,g’¹ó=t²Å÷{¤Õ vÿax†1Û$Fñ÷M‹Áí0 ý¹©[ºhÏ×>Ň­]à$lµb+ Ç9Äj‡ñ;ÚJª‡¾ØÚüF— $­׆<²g\4<·÷kçë…¨ðõ›ÔåÔZ­®²€‹ÃÛMÈ2·†®™Ôœ».t¦‘ò/䶉>× ¥mÒ:|C# Žv°TQßw<¾þúvZƃ=WÖ¢Âa¶ïáh1$„¨ë„ÐlëÅ J3$Ä4ç5!¥ 1Í6üÒXàºmm-Ðç^«J%œß××½ÏS̨•ÔU(&Tãè{š2X’¬xƒ­ü£Ö e[Ô%Yï`Þ@RÀr‡ðÂâ.EWÊ) ¸js^-E åÛTwöè~ÓÁì¥XÅxp Bi±Ë`Ã&?Û ÷6Ü}¢×ˆ3YÐöy Ðö% FÌó͸¾\qyQNMžõ>\Ë[YÁ¤. °. ja¬÷Šû²¢T ÄŒ0MäÔ±aˆ®úý“sÖ4ÄɵÅjÛV ÔmCY¬÷ÛíŽÏ÷O|ÿó;Þ¾¿áÇ_?ðçŸá?þÄÇÇJÑçDˆQÿ$;ûÙŸ3rÊïÞÚP`šJÙ0ç¤-º1 –µ9ú«7kcï€YMÔXVIîËŠeYÚà3àŒÝ>½3¤b(†W~SÔó`Œç9á4O˜ælC+¤ l« æP(Ec€ë¶4'p)9ÍMŒ÷†Pº©€UÚŸ1"Ü"†Á 1{}fû=tOޱäjI¿ Ã8°XJ‹‚ê³ØÖmà°­úu¥®Ú²X6W=§Æ´Vëgè­ˆŒµ(ÿ+Ĉ#Ø\a.(ôMli3]Ñ| jâ·ÿþþ½t Vh»ŸY¤‰ÂC$BZ^²³S[¿Ý¥â©¾­˜ ™BÅ“W¥ÊÂVC6GDã¦iÑ ~Hã:PFÝ–ùÌFÿŒáï<¢ÔZÑðÀüsHîóv;n̘Âj²Xwàë¡7vvll /ð(nZ3†µ ªÅ ôûé¡I'ZYÉm-/-å´4²[ŒÁ⼇g¾`EžDȤóÔ:üŸÁWÎçPóh˱µgt ù†®!„¿«gy¾¿ù[w·ŒL4ìüã{æ‹Ã”±ã¥±%ѼÉK÷=„"ƒ°I±}ú;ñŠ5—ðÃ3Ù#û½\çIq­V(d ÿj%¬÷èÆÕZJéiDs,hMËCƒ¥·Ñ6œBkHì®2Ù¹§¼h¡ˆ&ix¿DØà÷Ãgmèu¤Ý®}#X@‚´VЋF‚Îÿã¨YhEó_VB»—uè«bt˜#jô°MÉ…uØH¶5jiG"”ó8Ÿ"JÝÀqB¬kjCÊ­‹«:«B-÷a´¸Bø®bi-^AuFÈ+ÀêÀ:‰îÖ² n'”õaš1ΨË+âéŠ!'ÄiF ÕâXÈ\/Š è°jhû—¹×š»/D­wF&NËhNSuûV+'Š (êÒ2'ZÎs>™«ªc ujko"ÄJ8ŸÏØVé§M=»wcT—þÍÝf±ÅrdwP¸ò+Ëz—ªÎ«eÁò¹âýý½CÛ¿¿áÇ7¼¿â~_Õ!t ƒ¨{¹”Ô­Ÿsî-n‰öQç‡g?4»ŽÎOÑÓ’­cê‡èqÝ×'µ¹áŠhtùs-¸—ŒûZq/ëPgÿœ’ *ÔÔZ«ÞÛ9Ä¡¸„ÍYµµ}–žkKkÿS÷Ÿ7†î­,uTžžEŽPû±ÈL÷ÐûX¿~ÞaX«üÜàë™1€ªÌëcréøŒr'Ó<ϘÏç]ky Ô>¯ÅXHÓ鄜3Îçsk¤ë,, i<ÄýwwÔÊèhnG&Wkì Ã?ÿéû®g”mS"å`°öîšS÷7»ƒÝk­È1"(ÁÌ9Ä@&È)!š ³òIùv‰šiÊ x‰*øo¥`š"ÎÓŒÏ5áíý†ÿøí7|_ðã}Áçq[•[™qßV,ÛŠàü*E‘ÔŠmY°®æùd kºBeaHY0^Ίa\®§€×KÀë)áõq=~yÍx½d\¦„ó4cÛ >ßßT”¶5L,VéÔZ+î÷{{¿”uÞcËjå6 IDAT†êSçÞ4„Ü•ç×Ⱥ®-Ò0!=!Í9â_ÿšè÷TIhëŠ_§-ré‘0kB17Î,ÎfÆI0[["Ù˜/:… %$‚ %bÙ*REL§¢Mm×RAQ]\·¥â~ßP¹´É³roëî\6Ø&ÅlûD­OÜíÙ»¨ 1‰­¹Ò"ÅÂÖGdÕ»-«ìŒ ð¦N.µm»*OEbμ^öÑ4ˆEÞÆàà$µˆ «XE5»Çý¹ žïNjNÙA$}B s|ö5–7ñ—È$qéÖ=rŽŽ"DWSU Ün“|ØÛ¬F-:I¤‘ØL¡ƒ€NxxÐ?ƒgúºä÷æoïåÇAD{ë/3 Ï`±¸rk;ÐgFš;QÀâ |ØôþŠÃd݇^ÌÚÒƒ¨n7L8 uˆrÕ!,âéÏa±×¨ÜÅ'‡,‹zõhȎ쫦Öf<² ŽoGgµá ý+x¸¾1RR÷¯QÚ}·[võ1Ú>ªG¾¤`×ýÛö½d“søõCs¥kg‚RsYÔ $X<Âî5Ðþýug ÑØF86öí‹pÈ>‹Úî![Ë-Nºqµ˜ 9È¢<¼ÿû½Žñ^(ôŸÛ®—Š€´+½Ù2 .÷‡Ÿ¡»>öÍápM]°óu°–˜À<ƒ2¬fux„`[ÿvný&ÞT€‰Ûú<æŒïqû-$ Î@2wLD mÍ-&låI£ø¤ä{tdŠw䱯3ÖM|¼2(1¸nàmż1ÒtFÊ3òr¶œ¦ Û|ÕÆ­œ‘òŒtº"Ÿ RÌI#•J*]HÓ ÎÃ5'°¸›;«ˆ"jÆ”3N§S«|gfÜÞ?ðWµÃ¯½·9&œãŒK:áD ±X#¢¨)ÁÓ*H[¨ÆÎ¦˜cÁÆU]gÉkÒ»2-¿ì¾×C5@ /› V!¨›rLëVP–‚ûýŽÛǧñ®”}õï?ÿÀÛÛ›º¯jmbç{ °n=9çŒüšñþòØ ç©ñP{Üãý.áCŒØ¶6ø¬%€“®ºßÚp¿ncÎŒ9͘rX]ºdmu•­õTe˜41(µBv¤‚CT‡dˆ{ádM=+Ô¹`ã¹àñ¹!gÔ‘At|ï•å{"kY<Šëºš£L›z§Ó¼— ûdÒ(:1³Š^ÆÙö=ÿx>×Ïo|ñõv¼¶ _†0j1TuŇÒÖ:‰Ñ¯bÄÇÇþÏ¿ÿ¼¿¿ãz½â÷ßÇËËËŽãuägùûz[ïÃóÌ_s/·Ë1áíãÝxâŒy>(àtšPÒŠ­TÔR€º"¦ˆ—SÆ·xÁoÿºâÇÛ çËÿõ?^±¬ÀÇçŠÏÛŠÏ{Á} øþV kBˆ±"Ä §ÀçŒmS!)¹èic{¢‚×k_9ý¹×3^/×9až /óŒ_^ÏÊÈÝ6|~®¸ÝX?Ï8cž„–¶~ûg4>W˜÷û½•?\.—çªïíiWþ°×#xØ?;w5 ÍsÆËË¥5\¬kA]6mª™a˜’Üôž‚µEw–Îñƒöv¸o²Ãî‚n›©C¦õYÃÇLZ£Ñ3‘‰ž‹NòИ÷Ì™óì0°ÿïôÜ¡õ…xå°Ñ¶/‡…·O,8Ø¡‘ž8Ÿ˜þ‘ÈôOTG^ÇWß÷«ÿ}­ŽßSž4 ÝZÏÞÿã{¾{½ìõÏ{GàƒpiˆÈs®‰ÿWÌÈösŸAˆ°vÿ=ùÀ‹ 5@rŸ¸€3NYFgV­<üãëkÚÿ|éÖ7!ö.89pÞïñëG¢º¢¹²b³Nûo2ñ¿çœâ–'æÖï­ ØE,ÅH»²wåËõá8å{hÁqÇÍ„ZXKú÷ï#Í -Ñ›Çtjkº¢1M€sd…¨ä“ÔYöy/}º–2$f”sgÖ ¨Õâ0Ö¾X  ŠÍõã n¤Ô4<(Ròº`næ–T è =Àp%)$ Èîzò`— Ç[%Û$lÈ9aÛS&fdîÍ—ÚÊg.¸2¨ì9˜N(ÍÛ!œËÔçÓ|J®»"‚`¦˜š«l/8Ä6§,í€mLg/î¨Ø»ç žˆ þåÁù^NÐ×mà«EV¨Ü5º \Ið÷`¬½íŸîÄ::GŽm<_ F·•?ŸŸÁ»¿\ãÿ¨ÖÅ­׎P‡»{ˆÞâØ*‚ôa„ôÕù"¬®©ðÏ—-1BL-Î$¤ÑÕ@&DXÄÒßV ²ß¿Œ­°_=ëU ªí~ŒþŒ)ÙÍV_¼¿~ý…øå³NÝã{.Oöô€H8Ä÷PŒ-”ù°¦6ŠP¯4RÕ°£ƒj/ê¡¿&ãß¹KUÅô7Î1yÂ`í%!µö¨|ag¬î߇¯Üi}ÓÌ] Ù£óŸ²U÷B­Ðìï£*¦yôÇtÆéëN½`1EVWÒÿ'äl©”î(QJ˲ ”Š%oXÖ‚°AfPÑø[.wÈtê q›q_Õ¡EaB˜N˜N7Ló1it'Íò<¡Z~xd4ÁÞ»ZRåîïyèÃåyÊ8Ÿ/øöíæi‘ ‚ð~yGŒïïý’RÀyšq=]‘â¤n ÑtEŠ“öÜÅp_ÁaA´ƒ|Îóœ1•bC"ypËW¸±­¤voŽ"Òº”v+ë^W¬ëŠõ¶âóóoïøþý»º¯ÞÞðýûwÜ×uàX9´Ý .hì¢ÑC;à±dJ¿ûñ1J\i?ì?Ý18êÊðÎCsÊT18tÜׂûÜW`] kŽHaÃËU?—³ñD•é­øÊ÷ß,7ŒQ)Z<µ %]èEï#¿g s‘-þ?î9%îx:žÃÔa” ‡ýºïŸýç´Æ¹Ÿ¦‘Æ=¼ñ®P"*ƈåÞ#†î°?£QìrgVct¢¶kd?}=Ø·.òÃ{ð,A2–8/øø,¯CBÄëë+J]1M.—KX|ø®¿ß´?—ø ßÚKMK gÿÜæ¹×3»ËHÿóé„÷÷b¼;mœÎ×—3~ývÆûmÅí¾a+À·—j™ñyÛðãý†ÿöûű3ÅÒv#¸¤vNšSnâi„)^¿MˆA0çˆÓœq9%œ§„ó”qJë¶àz9ãóýüñ'–eÁù|ÅùüPÀ4)c0ÏÏ}§Ó©ü=ñµbo (í‚>PžçÙS¦#ÿ,RN×ËeÛP·ëšõ 1r»¤W•Óh¯Øî­~Õ§ž½ÖÿØ#ÿ§]hÌÞ/ƒ…Ý íž"`}-B8ØæCèdý1’7V0‡¡…ðYÃÎWâLÛ˜ Sªgo´o@Å[Çê~Ãv6XjñÁtÃÍ;+7އgÙåIýÐÏAôáð;ü³áWÿÛßmÖŸ C#hOÓC£8Ûts÷úô†ƒrË=»á, ιbã´Iƒë÷ëÕrãíÁÑãzìEöp–ðÄO€/ß'wÚ K9´nˆV¶æ˜#žTêÖ¶¡I)¢, BDPPlŽ+-\¶ BÛü>S¾w.³aö‡†?üƇÆ4MÒ¯ß3¦©î§Vk]ÿ•íïØ;¬hh?Ñ¿?°êX}›ö^.»ò‘çù£‚ÊÍ¡ÓÝ$zÿAœ3fH×ò¬°ZxÏøw–Ë6‡*‰r5„59 pD¨zH_ßïøv½ MWLÓÔÞÛµTܾB‚Š]ne5ÖŸÖ@/ËáˆUQˆQ'-ð€v =cn°m"Aåªl*¢³9ü˜“rÐÀ ÙÔcEMÊp×m®›pTŠ>˜‰…ÅÖ'iQ¿¹³ÏGb{6ŒÑ‡5W)ºÆV§C7#ƒßŽ•á¥qu6áÉJúÌ™ÄÜ®ælŠ\eÛï£örs!%—Û}O¤¬ ×7Òìÿï÷æÞ°b€f2fd4J‌@YE,²æ1iÀÁæzgYuÏVº(Ú¹{ݦ!Ž🉃Õ/úÄÚç ã:/MÞ S¤‘á­ÔþKï ÕÜOýßoTk¡0DæÔm*Úº9ˆjŸ:c6‹ŠK·òj‡Â‚J„À´+îðMTárp°Ž (Ö|9^GÃç1Æ2ThÄPbaò¤]£:ì±¢€æcæÞhÙ\"n„: ‡¨š‹LÒÇåûŒŽ¬!òã/¢Egî=‹ÝEh¬¼jüG6n¡®£î 6!,Psë¸8Ûž¡¿çÄÚ4iwït1Mw#íbƒÔÚ<r^Ûºï"¥1œbBžº¯»ã›€/šÎÔŒ\J¨ú€ÉùjmŸY‡ý²Eêz+ý‹iØßÀ÷Élë‚EÎÂ.ÿÝšâÌyêe: ³øsÕVUv6 BÙì'„™´\‘BF™gäuEZfléŽUpÛ¶ 'œðy_ã]™jÌØXŸa\7|Få(w«h%qBZn  ð÷”ÏHù„4v:_1]ÏÀ”@Y_lmo.ЄPc4G¯–™+PG}˜gL¯ä—ss‚$ ¸¤„ašõß§„˜sž0ŸÏ˜/œNò”‘sÂ4Í šÍé³a‘O”˜gÆù\p½ž±–  dYŠmxç.<²ý]î™îr§&`ù>j]W T¬·;>ß?ðññÑÚÿúë;>??q[î}¿ƒÆ.½q0ktÐ*;ê®E¼U¸±¥ÅŽD\¶‘ḗÞá4¾Hp×—ëëºâ|½t‘&0Šâ‘sĺ)*æóö­ÜCÆëë/x~¹^Q ãó¶a]6¼NßNglE,/MÀ*Ò]–sžÚ°wJ© ÛRŠ˜2á|I˜&úl<ŒD‚)+76 `[?ñýÇŸxC𦯫µbš湟[H kÜ<#Ť µq=_ðz}Ù¹ðÈòà6œÑÇQèSLJf9ušôþã/sR9ê&&Bغò_IãhÙÚðbx:MªýÛÄ«0ðð4#ý· —ÅØ”3ÖØ?sûì§”ÇÐs ëWå¶yØøÐC†Y÷Ç÷É™-#„]c;h6fW&û‡6fÌBkûϹ®žqMž9þ3qÁ¯„œãÃÆ]Xž;çŽbWwGÔÆsô!"1~æíP„–::,ˆGf‰ìÜOíÈô <{¨>>Œ'²¾¹qÿõ• LJR¿¦³Æ4d_=<ҸƟu¼vÇ Îñ÷߉vÃï6þœÑžÜ¯§úЦÈÌ­aÄ'¥®M¼Úµ²Ô.€9Ãí¹o­¥î~ž2URû\Óog‰Qè‚_V~ ëF00ï,Û.({B21ª5rµ˜tʨX’BÀZØ`½ÞxDà [à9æ)  áý^ 7f¹U8âýû»5¹0nwcâÄ€²¼JUpl¡«p¯»ª’ ¸v*%ÙW‹Çh7/ÔÆ$+ j-_ ¬LH $(&²£(£J*@E[ «D;P1¶ÂC~]c›z¦ÒÏdÙJ‹À6‘‡´üAH#ÄÕûí«›B³ê/[GÚ±™ª}vE¸E%ꊃþ½aŠ£?Ds3Y):€zµ¼A¦ÑÎtl\{}âïsÖE)êž³ä‰L…†žjΞHQn”Je°‰sax&ïßѾ=Þûíº–Îë9N`1üŸ®ù¾@ Ž&Γ<| 7À¸˜(LÒXR©‰EÞþì{Jðk„õµI€±B„ ?~{DX,j­f,8DÒZd»I:;ïx°9¢wÈ<[cM®ö5û8ðÑ©4 8îÛÇBº øõ³ZÃÇÂãÞìqJoÏ* b;T1+[†‡J•äàpŽÔÀí1EÞð*&IoôÃó½J¿ÞÔaUM*½Ãc€ ï¹fmÍ9Ä»8«XÅuÃè÷Þ;ªðÀö4LÃẕ¦ 6!Í_·›<ÍÐÔ-” +°Û7‡a(toHùz퀣•w$Tf”ˆy´äE!åÁ„vÑúX‹!ȶ ‡&Ê#KÔÚˆ€TCKA ‰gÄ´!Å;Ö4cšNXòMf„´ æ¤|ˆۆ¥T¢ó Þ6ÔEÙi=ÖX8­ (ÏúÔ¶²‹@Z’²¯8Ý/9#ž&LóY¯Y›À$)`Û£r1$'CÐkÑHˆ ’æ×+æ×+rÔ¸צ믓ÆjœñsFº\ðò˯øöË‹VÕ'e—R°È²¨ú«Î¨»•¼L8-NkA±²"oô™…&`™ƒ7‹VCÀ¬U?ëZ5v[p»Ýðþã ooʽR÷Õ;îÖvÌJMîëZŠHSÆ<Ï»}é3¶Ÿ?˜kcätóÃ×ç,ÿžÅÚéÜèptÙuv8>gj¨³FfKýcÅ ú\"l‡†;¥T°lÛÈ}œ!œÏWä@x{“]±Áýö·¿þÄË·_ðûoÿç<#À'Lløþþné7Xµ²ý§5aF܇heE\n˜¦„df ®›òVY÷õŒÛÇ‚åóçKÆ/¿üŠËõŒÓy`ú6t·&Jÿ˜¹qþ¼™r¼&Gó@oëL;× Å°ÿl±o!Lï?¾cžÏHfm›¦ Ó²áFÅ€Ë ëZ±¬…ÕÒ‚n0[ÝóࢡÉ[‡útv»ÝÛ.T²[@j“c­ì¬"=ô0u®†WœCyèVúgÂÕxh?Nýí¡gcmBI.Ä|«m6í^GOLhàÝäÎcÎÅ ƒ(ãSTÑ|Aý6NIkIÐcü2ÂðOE®Ÿ±¯¾Àžo|塦œm‘ÁÏÒö‡c×c.§½/þ~úöÒ3ý@,Ì hÝÖf×™WýõÕC¤ÃC©×.×Hv~¶ŸåïÇÿ)ôé»·Pr@ä=ó¤ÒÙEµJç@P«NN§¹5t(T0=<ätJfÓR"„46t¥OÒFÑlç|®Ÿè„œL8òãºwHúµKD›¾v¯íõ¿×º©•»îsñM°â…þ:\«[ÿ½õß)Í 2~íhYv~J )jƒ™««*˜hYý!WÏhñT Í`V¦gü(Q§UЀ¶îé&pƒnä €*œû²`Ýó)¶÷ÿcÙ f Ûë£A)ÖÞ!¤N€‹9+ã#íÙ;j)³¨ÿ6î¥&ê—õ¥Ž¶ZÜ9ˆ¹ ?½Ý¸ HDÊ<äjz Œ³f û9ÁÖyŸ@Z›mÐÏ™PôÐ" ïÎAo=ð×PÑYGV£±@ûŒû^FúTŒ¹Ø ã=¼±‹'ƒ8µ{«ÅvÂÑT½Gz¼ö™ðõõámMÆàJ—Öü);}s¯op<ÕjMŠ "ÜKydpj‘7 6g“6 ÙNrÇñúŠmóì`ÚæÒ«\Ûk†qP¬QBr6ó#qøqúlå'Ã&o~6ÄŽ%‡£öœg 4×cE»ßª¾E¤5ÕŠ¨›¶mZIÛvý=g!Œ$Gþ6úÂÙžâV=„Ý?)ÄV”3›=šH^¬ á©ÊÐ5Y— .Ò>æ ©µ¹ÝÜYiuˆrDE@ä B«ÂßÓ ®gäé¤˶€ò„˜'lÛ†Å`ãq]u°®ê´(EcqÌà°ckÅ•@3bžJ”°ÍgÜ>ΨSD:1Ÿ.˜N3òiÆ4Ÿ‘f= Åœ´m{¡æÉ1'ÔÐiÒ?!"äŒr_P#az¹`Âý~ÇæBFŒœ/g\~ý S ¬Ûëí• ¦)!&´ˆøR6u'%½vb$pñ¸çñЬ€çZŠ6!2a-¸Tlµ ¬UÁÒ›2¯î·Æ½úøøÀûç>??q_îæ¦ë‘Ê´yÎí”bc_¢†—öŒç¿&? X]á‡"’î˽9a\¬Ø'\ü¾ydîXz2®3c«*à–ÊX‹q×¢ A÷P[Þ:‹Ù¦hmûò¥ýk `Þ;FHdÅZø‘C7¼!,?e/ç4ï \üÛ I&2Ñ«XiÍìK{M)‡=¹;’ ´Ü·§êñ3›Õwçhâ¡©qÿÞ+¶òŸ+¨‡ˆjŠŽÃòQÀòk¯šX»çd©¸è¯Ï€ãk\××ëµýû¥ŒQNÏéï¶!’ 簋ź@ãMŽ.æP2ñ @Š )èYdJ”fÌù"Ñu#/øø\ðÿýõ¿óŒoß~Áï¿ÿŽy>+Oê<7§™Æ®K×HÜD¹#bÄ”csš-Kµ¹½lQ`rA‹AÄ8_2æËß^¯ê ÌÖÂX¤¹½=ée.`ùu9^½•™¨¤ÒµVÊ»ÄRô yC‘µmÆí¾ìÂ\±­Eã*µf“‚1IÂ_¯C½/?^Ì~ˆäئQª¼>ï ÂÏ:£èä‡ûÝÏ—ŸÃÿŽÊïÑ~ù3ÓÏ&£0·y¢ dpÆý{6ˆ|Ì`zÂP€¶Z¤°jÚƒëÇ_G•ÿ7wÖßEÿ_D°g/诰Ç÷—å!"æj=wD·ð6´úÀgà>=ôpõ©Ç¶õfŸýu‡uÿÙƒæ«d>¹UONm1>ð¾ô}«#¬[[„)ãÐRÂ{HúàžË<³féD«cóàxox ÙèÈ'8~ÈuÕ½gÊõ>Ësj޳ñ¾ó÷h½ßQƒ7…ئtíA&¼k@l–o,HÚ"{»)Ä]¢5´ˆ„Š'ª{G–´F‡’w‚‘À·ì̤,kyD_÷,ý&¢$ð]°rÅ4iãÑj›ôR –AÌó˜¾?Úb).$†Ü`³N<«$àÅhê4Ë! Öh`¶Ù.±`š²Bb«Þ"Ábxbl™èðv‹¥¨-*¨*Z猖°Ú~UÌ×öPqh˜}.!‚ÄæÓˆ­]Ó0E»þOSl›Ä­*[*ÂØdjÈk—(„t8Á`"ûZ pИy‹>ÙA¿’ñ§R˜À¤vµÛºH͹ãñ#21¾íÂåv¡ m& ÍeiEØàåÏb‹< <Î øŸø°¦7ÁÓ4 ð(p¹ãC7G'êϸ}\vë&H€Hyx~v~‹ 6•'‹ òÀEdeyä·R@°”ÛT‰›KG­**Ô/XP‹ä[DÍ)a%ñ£{†©×“õòT®7aìÚòÚ ‚MÄܹ¢ö±î#¼}Æ6¨‹1t.Òß<›_ÓPvL7´êAG„{„³™³¼تìZMµ)OÚàaï„^ × [^‘ž²ÕúAeló“^ν=Ïcƒ.¹0§'Û[…=ìWK¸¡ ú{ÏÍå¦Lóž«)±¹‹zÔqÜ'DÕY£Q¸ ¢ˆZöŽ-o¤&ŽÉ£Å®U˜­l› šÇª3 IDAT‰Ñù„¢b±s-êZƒs㢎Ø<žæ‚}‹t€KòâŠÉ[Z6Baß,¨ÚúkïgðED‰`l@,H¢nŠ ˆBÌHÛ† &„ LÞÐn›ÂÞȶ¢,+ÊZ!øP+Lˆ)aR˜|š?OØ(aºœ0ΘÏ'Ìç+ΗÌçΗ 8EÄZA¶GÊ!ZÌ5AŸÙwf\æSs"\^^tíÒíl"Ò¤"Y]îx»­X–æSÂiŽÚ X6-J@œ”%ÁøU¢bTA‹ Š:®ˆÉœV–²!剹´.¥Èo·n7®ÞßU¸Z—9c{~«ëY¹Gó)†2#ß/Λ‘ù4øÞvt܇¨ûsÂó†×/EoéQxᾬ8¥ŒµkÑÖ൅IÛ ¯dkZôÂ5$ ?‡1dÄd…KuD“L1duçWÅf@‚AÝuÏ0ŸÃоo)ÇáÇÃû0º³Æ³öØbî õñ2î‡÷®8iíoþìþå·ßŒ¿6í](:ýrÙñžüsõkb]×ÖR9þêõ3xµaW?píûümÛÀÒ9Yº× ÝïzLŒøïs½^±mÛÎÙå¿§s›FÞ¯£Qüûº`÷úújŒp}oÆ÷~¿Û9C¯÷Rzlq„¿_¯WÜn7¤¤Ñ:TÁ¶Ü?ÄÔïk)¶G˜®¿ Æ;>ð÷Ïn·˲á_¿ýLs‚˜»kÊ.ç<ìEìÞáÍ®]cF4#„ˆ ÈÜaõ´iê ýóÔøãÕΧ®Ì`N4i9”ÇŠ#Ô5í‚U?Óê{vâ·}yŸˆ£ãó5½\^‘bƒt1Š“Ý”V¥[ äùûŠ4ÍH³:°˜bUŒnk–¡*ýv}Äy±·6éà„*RwL‰®Þª4Á¼tvÔ`ê°Ñ#ÄM¬><ÅÔêœÇÍçWvÖcllŒ¯=XW«=L£ ZiÓO¯âe‹0åä¯Í¦à¡{h¢ý¡E7°ãMhÕD±àª@ú";þ(|=¶žPS’f{lö 1<1WB`²2ÖµbÊ ‰ô°ÏÕÜ®æÞª6Ÿ¦ˆÛV‘RÆÊ AÄ&z8uÞ˺ì("‰íg{8±2°ú†chó©UþÑ&ø°èβq$Š[ÆmÚˆÊHæÀ±â$Õ'ã=KAe]—§“ ˪âÕä©f°r zµèUÔÖ©¡º;‘Š~ÙÜA|ª‰ñR  ®ÖÌô mQ‚\8ãNi,\vÂÕ8Üp±´7,}%`…ÆDó¸É8­çÁéÛ¾qÅŠ Ü9$dnWÖ÷‹Ñ÷b•ÙšªŒÚ yìŽúØùÚ‹ÒYŽú¬ºÞˆÑ™nCðO¬´¹½÷µ9¬Í &èªf2n‚ºN‹}.)vp¼»ŒFÑa,ÉÁ0TôV·öÜ„ʵø•{µ¬ˆ,^ÉlŽÈÐ*íÙîR l[Ų2r¢ö¾¦Ò4ˆÆµGMm b‰ZuÀ²·úuo²‚ÁÌŇÛŽúüAµ¦Óh@}½_}ŸIÁö! ·ˆVD„P-r©b`µg“Ç|¤¶7—‚ÞG90BʨۊR7$ʈó Ëý›¾ž!Qï¥nƒ„u½[#œ:°œ‰ËRQ,º¿mwÈ¢âÅ„5FÐmBÈ”õŽuºc=͸O¸`¾¾`šÏ¸¼ãür‚­CJØî‚) ddÌQÅõZ7ÜozèÎ!"’ –ªF[ö³I@8iýüV ò錿~¼ãß~Ç}ùÄ>>Þ~ûl‡sOnR˜ÌCË`Rˆ{JÉŒtÀ}<îoÕ­š`¢ïCG¬Œûäq¯v4AxŠ ôà²ÚUŒÛÄ2s·H#t&±çŽâ>>W\O/ç¨ žD Û3èù4튺@¡cq‹4¦Å Ô²ADÅ,BÙVˆlúõÛá™|8ŽMGÑi>» gl…¿÷Ý÷=÷ îQ×AèÏY9gÌ“Fn›À4$j­MÔñöÁñiÏ!)Vò´5« Ðí¹v¹\ÌaÙ9^zVX „žœ{ã>åØ`ylSŸ¦IÏ ‡v¿®×k».ý}váj]W(Û‡BI6Lçl{MF$ýLH" Âä÷ƒÝ?•q™ÏzO—!e\RÆ|~ÁévÃ÷ïoø?ÿþß|âz½bžõçxÓcžô¾ ¤¿Ë’ ê‚Ëå‚”BsBŘAÂÊY )ëýÌÛŠÆyRw߲ܣŠ\Û}ÁZõ|5åò¤×ú(^¹{mG‘qÔi|=pWŸ> ¿Ÿ!v¼±ã‘üâ#Η3.· ù³€?oøþãï ÊUäXš¥Úiö#ì’‚´&¼ÝEƒ}ôª/li§¶wÇ^¶wÖÆ8É|–>ºbFÑàøOU(ëSȳ©ëqý•ç+ÖÔ‘Ëãí`nÁÛµæA,ô~Ph‹êd]¬Ã¾AgŸ'îµÀÇû»HÜß1®ö 98Ñö èy»à³±ñ³Ïq7ÙÚ‰œÁ7ÑP…(uüýPKíÑÍ¡œ [€ é nÆöºŽŽ‡qÁ§gB¨,¿ŠLx´í™+¿GŠ  ?²·0Ú–eÁ4MmñZóŒ.²_Èî1_tŽ-'£5æÝÇï÷,'?ZzÇVA-ï6ýpûí³IÒåÛ·ÖvA¤"ü¶m¡å–Aíçª]©¤òÖ6Q'œ±Üî¸\.Ùåëco@tk.ìнŽÝ#5*|F¿5Šç›ÞJÀøpmØFÍ#ƒ|8tÁ‹‚E<¸‰lÑÔ…åË­EG=â¬^Xª Ú5´R9D%²K%TR·À cuD…ªGgQ2Aï-ŠZd­¦Ð*æµÍ*B“N-ío{o'lìmk'#VÆ@Z­N}šI“êûµWÕÉ•#l–d´,CÍl¨K‡EJ :a΀&P<é+ævÒ¥ à@¡Z4ÜÝ$ „µºJ…`S!ÝDpw¹°’Ï%Â>ªåN m Kæ.š ˜ÔÅŒ¤|°Z÷ žÃš¬îÎÇmw~¹ûÌM<ŠîÇçűÐá+‡ô‘ áígÁÄu§Û¨ssשØWA!u’I&û¶ãˆOµ]çz³õ8°]/Ãú‰ ®ûxÉØ§û zp,ù:ȬBµ˜¬ƒwÅîI¶ zw×”ÍY}¡áÜ%£¸ÐqÈ%OKeö¿÷?ŽÁÞcU'@-ÜÖš*b-\.h”½ŽÚ5_ï3t/WuÃqp„ ½`tI8¸ŠŠoËol®]QÐÀ]%˜Lи–(l“l."vöó¥ õC;CEQagº…Æj ,sEq58«p QѲ– HÐöA¶­6W3cY–áMO®‡ÿKÚÛ-É‘YšGÕÌ="(ìn²WvßÿqöfïVönFz¦wÈfUÈŒw3Õ½PUûñðHYRJP…ŸDd„»¹ÙÑs¾C½‡ÙEiAbw¸OZQÅŠ¨( ¹ƒ€Â-ãj®TPÕ1ø×-y`”(YChÅnB˜‹xÕï%Á°dFâŒâ\; §Ç0(Z±yò.´¬@^ÁùµTlùÎ 8:WÊíŽêph~@µ *„=e ÇŽ”¤å‚ÇmAΫE ¿¿!¿\ðéõȾLØ/¼¾~Ær]€RQwÔãq»·Ã'ç\m¹ÝXRo\®ÎZTßû¬ëjïIJ¸=îøý÷ßñ‡?þ]û†—ë‚*‚û~Çí~ÃýñŽÛýŽml›àñ(r÷ëbïÎ)zÝïöº÷›»°ÂÝm‘¨‚¯ß¾·a™N…W^2ï1ÁñŸØZÔ‹'Gα•öìl0Æ—Gçüñ¹s,ø:+ëÉŠãúrÆðKÁ\䮊½*Š(ªª²•æà¾¬›­ i0”RÚš—\äâ)IL¢™¨ÊîlW OγçÞ¡i²±‚ü=xÀã¾zt'®¶QÄ9=¹ðÍœg š}ß!Îh»\.“Ð5@ÏuGM Ju¡¨´Ï«3­0»Å†¢’ãYëŒ=õѵwÜË|TÜ6²ºÆ³ÃèÔJ)¡ìƒë,]†á`™EããoLy-Ëê÷^g·×˜¨ñ\6ØÏëûû ß¾þŽ¿ýŸ^.MLþüú‚Ëå‚eµ{sià½ÅQKI]Ð„í»ˆ8§Öæ,ÄÎÏó×" K^ÚùìÅŸi)%Cˆ Æ’p»¢âQÀ÷¨anÈCÛh8ÂT¥–éº=r¥óûûÝ'­´¬sv…±`Û ö ( \Q’ gz 7MµÄ¬<ñFáÊ67bn‚øúî'ÒÓÀÞ°öt“gˆ¥7qqßü7uceçÙÃi¶º©ÍEg—ÔÑò¦Ÿjº¹\Q|Š&øQy8ÉEÔ ÍLûd– ,Þ ¥ÔZ Íͨƒ£È]G05‚Ç‹ÎÙ‚ðϰ²ºK<ȸ];ñÁV<ÃÀ_c°æ‡ X–„œ²ÔÐo¢"uxo©-ªhï…±U8 xî:‰VÍ~`1æ‹Aœ¥m Þ&ò‘`¨s+õÓ{jw•t~Ÿ­:yXˆEŸÙœ³5ø¼ß[ƒU€5EsÛ¨¿×Ù§æ“sÎ7Ã<¨á ŒZ*ªC:ÇC¢©íÚÖ€±Í°[‘#ßmÄäµÜ9“9MZÂÀ—ÖNÚ™Q—Ü` €¼? ¥6Y§aªÇ=ÊD|il.».~çܬ¾ÙÙ Ë%^€\ƒÕg1ɪ#«›ˆ J¼¸:§ÅX~…­…ÉÀй9ŠÊNP§mìlW8~l4ôñI‡C Rú±ÇѼµ„ È¢ ú¯ì­‰<0§ÈÞC·]˜äÆDRÌqR X½Å0!ƒ¤b¹¤ÆïŽÆ$#¿ûÂYHż©ÝÓµ±`2Gö:^¯¨FΡç@rP\ÈL¾®Ô„Ö ÆLàêœ,¥ÆðZò”/,¥ „/vS6>Il(• TDhŽWÒ$ŠÉ7_Yw?øo¯&A-íHmÓ.€8£jB¢ ˆ^º¢ª ©²%€‚-"íœ@iD%ã5Ñš}©ëÓ~uâ+Ñi¬¼>MÜc·/YÚæ²ÿZÄí~0V—MÌM4§ÆÕ#ÊÍ¥GÌÍ]Â\Æc ÚRim‘Óó»ý(“ë0:APÅâà EélBo/lB£´D”íkxù·ç¼ÖA6‹µ3¤üýNÃ`j.:Б™ùÄë? n¬6¿þÐ*8¿¢„@ÜáX‚3¦]Ü«‚©¬¦Vé±@w¦i~9Jü:‹ôÙÀá7øuˆŸ±º¸ÁCƒ¦;°Ä[ù ‡÷ÑnèŒ0"™ŸqŽ ÈQaqP46wž×xLÏØ¸%xjÔ¸;Ö JÈÝ^›IÞe+ œ@(Þd×¥Òà ®KkŸ3ªT[Ã[JÁ§ÔΈ3!ÕÛiä×õ¼5DJw²O ¡%µ:À}>L·~KŠ´ƒ=Û,¢k þö¹tNØ_—Høá=õÁöš3G‘E(Û!+pZZÁé ‘ ^Èäeþ›H£ûJ¨IM°+^j"ZL\+»»Vw0­àt7§MZÀë‚åú‚´^ð~ý†—ÏŸ@‰qyyÁþå/_>ãA eKøÃ¿~Áu¹¯i¿áþ~ƒÔj.÷dBÔûû;¾~ÿ0ãz½¢²bÓŠ÷ýkZ°í;¾}÷·w¼~þ bÍ_~yE•÷íŽÛíÇ Û~Çû{Áý^ð¸ìÄ?&X… "áq7—º15÷&^‰îÛÞ\ÿBý¹Ð§9Ø~Y•sÆ%/Xü9x–¸É) WŸJž‡Þã9$\Wg,ÖˆJý0:ÝXº2Cƒ³N¨¢xl‚û"î<ßñ¸.YQ/Œ]YB0v÷¡¯ÏOŒ¯á5Œ¼¨3µ†÷3]ÙÆ3Ù &Wé–KæÔ ×_-¸l)$Ω±\íÏðôšÒ°Wmeè|H”ÕN‚"æÄÝa£¸0B»"Y…0ôÒÎ_í÷k¦”Çq àëzA-³¹ä(P‰tìË´n§(‹û0¸ÔræÆ&öqŸs†Ôͯ¥2'É༫˹)¦±u‡b·s<4EÊ%añ%Š@´"­ ×OW¼ìŠìØœK®U‡9én )Ù ]R?÷§„âÑÇVHVÔéê8crçeÁåz#ù¹h`Ý Q!˜{æi´ †K­ïOÎîq-öXqòr}2L´ëQðâçÔ€li\)a½äæx¸\^oß°ï¶Q±XaIvH9v%29¬¦EmZ`:,³Ö:Y—%M =Ï«ÎÕèüNÉ8ËþÒìþ¡'‘å#žÕ¨ÐþHÄùÈü¬qR؉?t}-êÏBPÏ”ãàèBC|>¿.&~šØŸq®~æÄúëG~æAé“Ké¸èôkgoT¯²·m䜆(™ÐSŠ ˆº-  Ÿ(â‚v-ähGóë½µl¶:<ö‡BŸ,ÐT è‡|f¸M¿ÇÀmÛ@C#DgÕiŠv´3Óˆãõ8ÆôŽvݸ·#ÿ>¶~ŽM”g1¿#ÛltQÅuΩ‘• ´ðÖ,Χ·vx•Æ0PT\_?ƒ÷{;T,Ë2µŽŒÓ@qF”9˜TÍÙ1M¶üZ²…ߨQÑ|hƒ®yiÖ¡("À¾DíÔ6­ê0yßÈ Â{Qmq¨LŒJR缨 R[´* ÙŒS‚d«s+а(irÜÄ8V6ñRÈbßB`I Iv褌´ZÝ®´¨“‚òDL·3¼¹aÃeæNf ¨GÊ3ƒÎù=B]y`g€%·ŸÕbÏžB&pפ”Dž=“(ƒñ¦Ws]Ñg(_ìÀäl¡Î¨¢&Z9/Çš­Þ]áQBëksË›E\•Å×犈*T6 n5KHé Á À/@ºé ¥Er?™/<óù与 âÖÓ38J2ø©ÔäÈË8N¼ÿÞáYÃa»Ÿc¥ÑÌæ›Ja'(‰ó”Ô#°ñÜr· Çs{Xœ'çý”&rÎC‘}yŸ12cC=ŠGí™5ðBì©Z?Gôã¦ðûx¸ÒÖÈøgëG{ùçžKTŽ×GkZ”Ž« $„4½ýºØÕÚ‡F 'äM :òÓú°ÄÜü°ƒ!NBYw§šsÉ7Èâ.OßzFvt1v ÍÑf ”3/'í÷Äó>Øç|?18(š(KÍ6@¥ÚŸÿõ `«ŠLAò×Eäܘ‡äñÕ~, ÊŸ¡5#BȽ]~Ïú×Ú¥º—š»CkÖ¸_Rã_8›Ë/Æ(hJ„„ EÁ¢  Ý¿¿[Ú~+oW´Cžr× å…*Pû@D¡eƒRE)Éà Úämå„÷ü —·+Öõjq¦}‡î T¼|ù„ï¿ÇíOoøôú –œA¸íÜ厲›ã¾=š°]=v]xñÛÛÞÞÞ:˳V\sb?­©£;jüïpCYÆ)Y\—(Omª³y€'HþS zN§.¤‘s5¦Ãù72ËØ…êXïâ×B¸ýlGÓIˆ¤Ç$ÊØDwŒøMÓ+”_¡tñ‹s} \½Urp9(trW…óãè ÆÐËÚkæLÒ8±£'7ç›*(v°Œž\»S{6¤¢ŒKɉšÁðæ52åVh< R´¼Çï¨P- -ö#jw]áê΢ãØÍÖ·±îÃW[ƒcŸL'áÌ-E‡!z“Žƒ×{ llÙ ªüº¢nÂ"šSúÏc<¢³[jB„³ Ýe¤bÃÂ"ÃÀ!\§Ú¿ïª=Þ&q‹EÊT( z°´?ß8\D2vØ®/cŠ„ËÂö‹ƒãס§O-d"³íéü¼¹ÖfzDÌû’0F{d´ÈÛ_Õý\h®¼ît î ¾Åz®}pV„¯:|GZÛû9‹PöQ%yLÛ÷ƒÓ*âô¢ j1ÐL}mŠ’©^’ã}õ&ÚpÖjޏ0ö½Zë0%wðxƒ´³ÓÄ›NÉãëh®ûaß§Ý_Ö~bZÜ$Ÿ€ýGi©¢äœ6‹Æ§´ßí=ä„\{<ŽL®~&s WÙ¡î&±ûx•;@ö|¾½7çãŽýqÇöþ”ŠËeïÿy/X–lÎ MØ;no7|{³FCÎ · ·å²Û}ñØî¸ßÞ!µ@JÅíí¯Ÿ ÆüÛo¿áv»á±Ý°?nxÜÞñþí+¾þ~oVÝûV È~»µ8 $-îµ—©Õî3‘‰³*4Ðo€j^òS³Ø)x Þ ÉétV g 8HT‚t¸ÿ3g’çÿñJíß·*X*¡$ß‘øy4ñ‚ëõŠOŸ.ÈY°$wxÃ[Ú\„MiäFDÌæ ³¿ÏÎu½äˆô80¦)~§JÓ`™Ž¡ª6ÖGCð|üý£ÊàjUêÃí³ò bFÆÌ$–2‹GMxÜS£`4®µÊΓ±äøùkð$B´È¹1´é©QhúÈLÑÊç¨ï‘â=éÁÙX3Æ]­¥/Opø”Mˆƒ˜[µxÚâˆR°§Ý‡E ê¶c¯[èß^PeŒ;õ„RЬ 9^®¯Hym) Ûßû˜‚5/X/ÙÝLãùÚìî÷^^>Ñ Ö«¹, !–’3*­…Õœ×Òq lgÍœsûl"ŠŸÆèé0îß6 IDAT$¯‰¸Îöêê\âe+Ë¡=CÒdcpÆ´¥bÛ7ÜnoM9»\.xy5Ø2å„O—Œë’¸¢”ŠFÁ‰ÐpÜÄšm]cº‚aó@4É@aK ©9CšciT¿Ç›÷ÈøSÞO‘ÁY^?rüÎkŸÿÿ°¥BØ8¾¾ñfˆúèØÈf±Œ†öà¼ÏÖ]þinø›ôþs¿v\|>úõ³Çüs›z|á$Ÿà;@™KbüdÔjáÕŠ,€¸b/Õúåepî±[íljE4O­Ð£Mø#wÝÑá7±Âôœ/vœdŒ®§øœÇìºÈ6ׯ×Id¯G1xäÊ]ãk4±rˆ1‰`ÇÆ™ŸGvç‡ð±šøŒ'vƦ vÖñý™î?M¸¬—i²z3` k›VHžZqjµæR†z‹[•‚ªenŠñ€IwL¦LXRv«ïiÉX³Yi뵂²Yˆõvsð¾eΉÌEÕ^BÜ·ÞpY%Ü 6]ï'+ãÊU!ƒgI„Í!%v(Énæø»E° ¡2Cws;¢X¤''B®„E½ËMìÌÿJc_‰â'sæÈ f²HÉÕb™¾î*)´ŒØÖ9AÀÎc™Làöu€ Ÿ]SeT­&Äbè ¡+J½ éT^@|ðb-€ áú³B‡?KsÞØ$¬‚R bìˆä±x­ © t7ñ «‹é hAŦ+„VT\ tóDÌk“J- ¡S¶Ñ´yzšì¶{œåÃ(ˆÈóðh¼ß‹èi<üÌuut[Žmp1]c/v'­·]Úg*.Â_ÙQ4+±9Õ@Öì° ¸Oµ tÎÖ‡yÝÛ 'ÿûtÓaÏšøWݤ­ø¦¡Ú *µMuü½}?ñÉzúl<Ûgˆ|ìê‚…îÀóÆAAmC%xVÊî4÷f88ìûõ“¼[»óÊyOcâÕðœPv! ÛŠînðæº™b˜¬GÞ•_?Ü‹†ÎöƒDðFÎV‹SVõVdm¯1„ÑÚ¢öž–ö½Ì¤ÒÖÊ:Áãã°QÞ>Ö¼Ã÷6 =¶VöÓ$µˆ£aרµ°Åÿ)yäÖ 6\°ÃI€èpŠh2ddÆ:†,·¸G¬ÍPöX.O{oT bn¡<îulÖ6jϾژŽ*¹ˆ±ÄÎESRBJŠTM´0•öÜOµºØ¼C ¡ªE ÷²Aªâ~½ãýý;¾9Ktß6,KÂ_þõÏ(ß7ˆdàÂx”w|ýúÕ¢3µâ¶=°¾\Íѽd¤Ë E¹?ðÛßÅãí ·÷ï€(¶í޲¯X—W0¿þ×_q{{CÝvHÙñ¸ÝñíëW|ýõßßwìa{ìØÊŽûû ·Ç½Á§kµgi)Å\pU^dZ§E[ù@‘dÉ`®ëÚÄ«É5¡óþ왳‡ÿeJ¾psôS‹g‰Dkoo¶Nëèzÿá9?t?‹X#+ѰcÏݼݼ}Ox¹V˜«=%B%A•8{˜ƒ_j°å ønb­`ß ñ0¶Š»Øøg±7A„§VÇ@l4†åi.åŒÿ;»…ÆŸwûõè2 çÕ˜€Š¡È±ù°ˆ~À×ùOôį2Ǻ¶xã1^Xpw0+'¼¯MµlOɸ†4Æ÷à‚{æ ËtF²Ÿë6ÐsÆ~3á¦Æ€ÆKÖ`Cn?Š–þ¹×žL)ZðØ6k­ŒÏ¬Ôvߤd®¨¼$+ïÎê9gP^°oÕϤÙ0¾ï-ض긛9'äÜ› TwPd@Š ‹‘lo­Šm¿#ñâ&Û“¤.RÛ~›ÜÌǽÓõzSÓg\+.××ÉuÙq-ö™–ƒyéø¿ î• »Ü7Üï¨u3a]3>}ú„uQP&¬ ,‹mÐ;³ÊàÁÇCêø¢EGè1ùÖ7lΫ~cŽ XiÌ€é€r€|oëVà E?ÌŸlXˆhjÊ>6ýü,B“9Äiš`Kßè#,ÚhµÇ÷j”j«kš‘-5÷ظ!Tƒ} óh㨋¤cd§‘ãñó³F®ŸÅž#.}ª}„Ó†•ól޶'rçš‹ý€ÊÞX1çK"¤Lzs­ûd¿ÚT¹$‹'¥ˆ†oD+ú4»ȼÚq˜üK»í{ýtB…µÍ“«#ŸÛYUlá‰ã-\;š‹nïÖBx¹\À™°×rÆãAâ(œŽ"Ô8!Ú­we~m¥"û•‰°¹4ŠY)'¨Ø„ˆ¤·Ž„CmæáõsL=âuì¥N à^jãh•*ó “Êï!f¤åbú‹}nëõêïKVivÛ)>XmSˆbÝ[åÌ Zý>ddž-Ä ŠeM¸®äl¼0cõÍa³Í†»G+ö½6´] Vûþk›¥sÛ K«gßE‚8Üë‡E$kÀ¼öºí~IdNMQkwJßV5¨©@‘HæGY)Yô'?…ו[ÜÏšc“ã%ÙšÕÌ„!0¦‹MǼ¥ÐoŸ ™xä¢\)[›n6[vÅØddÜ6W©Á—U ZŠ5¥Œ„ìƒWì%ƒÒ È*‹ X¤ ±˜¥9"úTR´4ȽÁUMÔŒ{?EÓŒûF…*öµ Ci·šx^¡|Ð `j6 {€[[Ì’§öX£Ì”½ñL†õΗ1ñ­£ tºN¤q¸49Bk=Ý@+ïè£æœí¼,¿.Ýýbð’ÌÁÆv-辺' =:ÛÖVõRwMu·6k‡Ý1"_ŽÅ]= =Uq7·íÈ j°4Á§Óº‹Z¤6¦gw@«¨NpøxÞÍ<ÊqW1þyùÀ-ÍçQNiß~;ŒXƒ$b§9«ÌEå19tèx;"D.ßEÐs eËšz@ìðpXŽ:×/bjÖziû—°"N(UPZ÷@wÐu®[¡b?x„>›Ô ˆ„žÊŽÃÄ<Æ”ìú¢Ô÷´ÝùFM¼ªù%Ü‘æxšÁÓJ:E¤æò§mûüúK»®¼_ç•ú5ؼ4Š^Ìdm´ÒZ&ŲÙöœo?W©Þ¬;´—²GÚ=Ë)7‡°%/z;œý¥‚¨J:D2 ƒÆd·¡A¡e¥d‚à,R²DªH©€Ò¥RuW{vd;$•B "`q‘Q,ö^JRm·w03Þ–ïß¾c¿?ð™?¡üùŽüïÿŽõóg¼}ýŠÿüŸÿâU9!/ ø¯ Òõ‚¤ù¡xüö†·¿ýŠ·÷ßðýÛïØîïZ±pBÝvü¯o¿á¿þ×€äºß”dž÷oßñõ·oxÛ±í„ï÷;ö"Ø; »ûªÃØÉ8©2²3©5K2éo£œš`/Å9ÜkçO“}}ÒÉEmµí>ø¶#²áŒ5Ÿ!ô§qêù§}àç̾ñïÝ ã~ÛðýÛ;¾.Ìw\Vàea’y±(le;#§x&q2°Ik%¼Ýî Ïî²ìHUÅehr kŽZ6(Ó«„Óço¼w·ÛÍÀÞCÁÒÔÆìÑÁ?·ä‹¯Iõt`r6h?VMðö0¤Îâ%âƒø¦s3¥Z =WËþ1êäX8slºOK”²·sE/3@ksŒ¦F‹åö÷/eBJIß7Ki2–%5Ñ}Ûì<`•9:D±¼\À~ægV ¹hæŸËèX¥§ë{y½Øþ–2E³1 Õ4šíq³r«dE@ÁÆ]RÂúé^–L¯»•Kª+VO€íÆHg{FìÅÏÑÒÂFÆ8”úÄó,‰èêh°è?Ÿ‡vÂ(zŽ<í!ZÛ½88r¯·Çïo7Ün”R,X—„k%,Iü˜TL0ò‡2[í5õž€ØÈ‰;ªg7íF-jÓ[õxJÎ){ó›+¸)-P„« pe6Ù‡ )m ;ª¯3¼ÃÅß-ë?r|Üÿ ßéG\Ü\##¨©Ê7̨VÛôù°€¾6ÎÅÑ>”shq86¢eLH›ERu› *X§ÃÊþß4Å&;<:l~&nÍNsGÖ(†(ãƒæ,HFnÜ 5WöÆB‘©¶¼µ&(ûF¾‡ML(›Ã'ãëL (;,{ˆš"¢%°zo›ÚÏ«Cç•úC$":E\:e¼×HLBb’°m¸˲˜‹2ùJæøG¸¢>öèÒêq ™â{ÖH˜§‰Ú‘eFdñ’RбŒ¢…0ñ´‰QÕÎ]H©=ÄâŸõrm¯oœ¸D„ñzYOïó¾ÈöÖŒ¨ä½^W”mk›­Zwÿ{ËÀ²(ÞþØ Õ¢a"‹·¥ÈÜZÃkÝ—Ë‚Ëå‚uÍx¿o¾±Mx4‡Äô±” ”`l,°=˜BœÏÙ[KèÔ.uαŽõ¤Av½º¾:|Ølìègs],‰!Xš+‘`ÀÊ„Uk!X“XÔ†\VEâ䢈b¯}`ëîªÊØ a¯f%¯EZKOJ©µÎ‘ÀÛ£éŒ=óEµé¼¶6B;0isDP5wVJ„½ÚC˜ ¸. @ º[3ÖryÐRY ¤Nšúaw7…<„ï~_Z‘áõó¤e5æ• ,”RæCp»ƒG‰3°\€ú0Á+À/^AXšª­ª(ê?PS‰ èΔ¨UÁËxMÐSéCDƒªÃ¸ë°Ùà6ôw ÚÀæîÔ˜š‚wšéyÍŒkÖ¿Šƒ5GrÎD)Ž@µk±TwS™«­zL*©C+ NHm´‰2ù÷Þ]ŒÒZçú&iŽïq£@×ù~}h±m@Î!ìj>1k;äÔÃâYDéÂèXsÉSíùq**ÁŒ Î+4—U•YªÜœ[ÄC ¤ ˜—Æœi¸„áû:ºs È«-ºJÈ öoqêp`ù{Ò¸ÑÝ#ñRöiqæÐ·ælmíc M¸“ÄÌ.®,Ý –ñhWn±"3X¾Æ šÛ­VÕû냻3b?[P«xk+¼QÙÖRz;Z?ØþÐÊjÂ}ªñûÐSØbA¶}ŠZS.9“Š˜!ÉåJ€V´€ì ¥-E9­Ó{oõTùe‹”“Ƕ˜Z¹s_†öHL„ªÔÚ?Mlj“ßNPÚ"m¯²X5%(%€³ÿÙ”*” 8U¤ª6ÒÍ$[ÐÝ¥,&RBÐâö&¦¶Zðöö†ÇíŽÿúÃ/Ÿþˆ_~ùŸ?ÆívÃׯ_­ì—_ðç?ÿÿÛÿþàËÿÔ·· ¿Ý+äÛ»ì¨Z°ß¨ßxá„Ïô‚Û_ßðŸÿùßðû¯ŧ×9Ù³°>€û[Áû·w|ûzÇm—&`õØ`ba­{´³˜[”z< 朱¸}®xl¦sáDΫܿ^´?ÎŒ{6•RŒ1º—¶cƒV, Ø¥7Øž­¿˜zÒd1õˆé>¿ª ø9γ=Y0kãEµþ…ïØçƴבp½^OS>½•7¢t©¹ÕÂõTëÉ9ä²oÃjëx˜>̽iñÏËÅJö½@¤"¥.F›G–!MBÙ“‹ºÊ„9º±FaiD“ij¢8ó³ÖY˜[×eJ˜h%ˆVsµØ+ár¹L­çGüLDG«¿~`Y“³‘Wš8»í:«h¢Lʹ¢ÙZ¸øýbÜáàÿŠ3msCYIFÆ.YúsZk4¦ao‰ EÎk‡É‹x„tü¼™¢³à˜ÉYw¾ïhð^Ššx¼ÏÏm2¹xÅÚš‰ °ç‘¸hûzýÔžÕc¼/^{´ÀÇùsY–é:Ú÷r^ ëm¬®Rr{ÿû“žxsùû÷wÔ"HKÆÛûŽÿ÷¯¿c/ŠËúŠzÛqY¨n€. ·U6°OærÎ þ—<÷n¬¯„÷"#ej5ÔEÌ2i Üb`m–ÖZDÉHþf%Ë 6%µÈ7ò”4›\T†wð{{V?D©V‘CìT{Ar"«ž;T£·ÍÕñIDÀ™'•¹Ç!éTLãA”RŸ7Ñä¦(Ylº¥Ø.†ƒq –a·‰”mmfñãÅü‰¢»†ÀÉ›#6™q·VÄ ÕŽ:lñ¦2&ûšjn$&<Á'…TÅš„ sM÷Àr ¸ÁÔ„§¾PÇ.ÍL‖¨Ðx¸Fô´ÅÇ2Pª={ùô¶»ŽªŠO—©Õew^\üI>µEkHÊ9a]mA*»ó(\µ–R], h5ˆa¾·k‘×–Z¶œTQ¼ÍI¹×ÕaƒÀo¦gÙã¡/§Px7’À {´ {E¢ä­z³û"ùõÙc€>yЬy´ª/–U-RïCJ Ç£ýøòòbÖ`f<î÷¶Ð‡8UË/ûjꀨÇý=Üá<&c’Ùk¿^z-í§×—ö÷®±q C[jaªÆÞ¨e³ûŸRsùLbX»W5ø nwžâŽ­aÅÒk^—`ÆËKjÑÅ”¾|ù‚ûýð~¿c¹¼øß¿`¯R òJmZ4nŽº°Wàzs{rs8ˆ16µ/n›½ÔvÐ _8û(/œ2”ŒQ…½bYŒQŠU//lŬåvDz$¬—LŒG¸°ªqNëâUã ¡ D÷}·i'Ø×cõó{i% Bå±­§³bB ­Äî*QE©öõ^– ) R¾€é‚ ö ÎH—lBX‰›£•‰mãR+¶mǺæa¯lŒ ¨­U¥ú™²Ã­íà˜Wç´•‚e}…êR/(eGÕ”j‰‘Ó9]½õÈÞ·D`‹0meŒ!ss()'Ü÷Ò#ÇM>Y;ã'oí«”t8‹¡møúÄÖ88J ‹7è˜;ZׂyÕ 8þŒ§âl÷)§öºì}°™•x4“ÕšÉBƒBlp´;ˆâ}BqÆ8phaöØbL“‰‚2Š vÍÔ¡H†!‡9G{äkrÒ(a]É ÍEÏÍšæ9'ì!·X]üqã…öv9êÜ:ßèŠ*öݾŸÞܬÉÕžÃU|ö‹Š?£,‚b Á˜Kep\C–bÉ Uâ@qkRr¦ Üö¿H±,À¶=°y|ŽÙ·XŒ1%Õç`§Æ|ìÅÖz÷Ñìl"G±ã[^Ü U¤BJźÌÂeõ{R@@RÖf.´ÆCLpqìt!ËZ1¥¨E9‡UE ´hƒb—ŠæÌbÎ`b/ªðýªÿ=Êäí–áwÒÖì¸æç²»~üRáÕïÛoä8”ª­Cµ¸u •¬„FZVaU“s¢x1±¼Híe?jœIÙ *RZ°¤„ê.RöÌŸ¯œ@Ð$Hy!ùç$Ã:MŠv¤¨9Ï›+Vö îjFʉÁ²^¡ÛTw†WhrVšV %0+®X‰œ+óÀ§eÁýAHÂY°ƒž[ñFg)Ùþ®¨ qj×/Œ÷ý†M{ûù¯>”+Õ› ¨‚ÏŸ¿àËç?à¿|ÁårÅuYñËç?àOú>þŒý÷Åãq«â~ÇÿõÿŸx{ÿ†íöŽ|ÉxýË+tMøû÷oøïÿÏßñŸÿí7üõï¿áýöÀmßð^v”ÁÑ?ÅxÐR:},6È49·¨jÎÙØ7DÈiEâdì+âæJ±ë·`IÙ×E‚Åjk¥ ¶®—Õ÷Ûvo0îœûãŽâÜ®ñ¬´íûVZaDw¹ë¼%_:–¦) ÷ j?Û4Þp *ØDþwxs¦Ù4L€~¨¦ÉÏô¤ñŒ"6%I·# LO㳩÷GÍ}gígÿ«µ‚}‚î‹ñºì‘Áóèh< ÚkÀÜxÒ[”¤5ìLUºz®Þœ®3ßÙý1~½ø³á ;"ãŸ4Tý2/íÝX×졳6÷‰½¿4Ežãs´Um¯-âl"KöoôY³ýÜËË .— ®×+~ýõWÜn7|þü¹½–Ê A`úææ¤Ô%ë›&ø.?ß›ÕsNµiMcÅt±mp|m¶Ãh/¼¢ÅÂjø¢¨÷×ÕÚR˜²OìÕÝWF" ‘¡‚­ÅL"ŒR¹ÐT3ªß{¬Tjü#"Û¼f†³eˆ’ÃS¨†:WErGD´“’$­(i×TvI`d¨Ø$Zˆ¦ì°eé@ÕmÛÁ™‘Ü R 6é÷(Œ9MÄ„Ç_ ’’9‘("¥ Ê^ÚAñRõxa³5K¸ŽZæÖZ×9“ÚÝÆéà¶QÑ&døTsl4ûõ¸Ãè’Bã0MkKZUŸ–Kc¾u¾¦?×snC& ¦phUÉMó;âÚ&ãÒòe° i›‹?’poýmSå€îwW8c¼ºÅrÄ„žøÌih ö…1P´Gïœyåý -þ© ‰`NEû:ì¶MÔ—»ÕèPšÞëî‰G8÷-\CÐXÌu©DWé_ˆw‹èáÀæŠáôÏŽyÑ^îs£*[‰Ð€T:|l OÞâ×Ê–T±—:\—2™ÏísÖ˜˜Ã{­Ú56»<"~Û£·.ȺhPÕŠÚšëV6ïum®Psô8Ý*Gȵ ÷5–Qg’f§ÐÏ58°AÔmP+"îZŒ†H‡ÏY-5ŠgØö—b‚¡ZÉíí°дR›w® ÝŸ`êÌZ7p>íCȘj âE >Ö£DÔ¡aÕâ?öŸ3XÉD,0ˆW$RÔ`€úþ-UEÎê¶‹5Q!+@+7~fõët+»ñ¶*÷&:µû•™Qe3Áì€ZÅFHÐZñëü^׿á²\‘‰‘ÈÚü>]?Y³ßõн<œ±ss§·1 8ËëŠå’ñ¨ûû_ñ×ßþŽûã¢U•3¤EÓ†Á÷0ÔcHã¿§”l”™“ÃÛ{CØÙŸ;ò^ÇÿÅ^­7»õ¨Q´¥Ï®¦ö³#÷ªD‚Fçœuüaò…F (wvkj18UÆ.»°·¾U0-~Fõ÷bX;ÂÅ2î³[ ¶Ì­Š#·•™°,éÀóíCZÛ·®>Ô-m¸2Ãq(Á{cXžÜ¥)'ÔÊ.îØýÉ”‘—P¶Ÿ‚ôÇ¿·%%äì¦o#ݶmú3«óââº8²j‰^^^N·=A2@Êiµ¶^îÃù`]çÆ¼7÷u]0k{vÜÎçì©´j<Ï‹´¨ßèJ³ë·úà‚‘8î¡ë“ç“ñlxÈ««ÊÞö1LÙΩ¡pÐ'pJx<öqyȵOçH==›ϧcšÄJ.Ê$®š ¹ŸusõÍÊí¾áûíÖY~–D]kCŠ¿0v³ƒdu‚©‘·ãâýãt„±7;ß (Œý¡¯ƒÿQTý„Únî“ß÷ÑM7ñX>¨ší¶~ùaŽ|ŽÀêP ð¾¬p|²ÐŸÀ3;ÔTŸnšç÷ŠÀ*S›I³Á;$22ÔÏ1'<ÕÝÆßQ[ƒ•¶& *¹Ù%áÌ“ñ=w` ÌUƒ´‡ß ‹ ›žÄ‘QÛúuÔ\ÚfÅ/¶ëz[™ €íáúÖ䊵¶V¨(<àØrɸyfØxÿˆCvªoúáoªÝi4ÊÕœ³Íý°0V Ë‚î2 MþþÞQHþ(j{\èF«MKÛ(=1F¡x†Ü;‹!ìª# ~¨F q£×éagA«Än\+šc¯///x}5XkXé—eÁ¾ïøþý;Þßß›mÊG‘.¥dÕT­*|¼Jß´ÑP¬Ñ£ÔP ˆZ™Wy±s `œ°;Ö:ÿ`€ÝbÈy1îØc+(EðòrÁ¾?<ö2?„[Ãeâ¹i¨ªGÅ’ŠCÁZ[—ˆÔݤ ¹íÙžXmá‹MñÄVÅ´-âÿ¡ê\ã³Vn±Ýâ("6xo…·¥3”¦’“`·1Pñ´8Q <=׫ó9£W2˜o¬ÖÚ{ Ë;ósµÀš?MH”µÕ¹û¨w„ûûNfx]º  <5kÏeNMÜýaÉGÎh@Ì;×¾‡Ú˜{ö¼ˆýK¿gÀ5œüÙåZõu(ÖKöóB°@‰}`ï,ø:Ö†‘îž§!¦NHX†Ö..PPwÅõÓ%ÅCØÅFÛ¾ã}‡‚ð¶Ý±—¨¶ÃjÎlÍ\Z°Õ΄ÊÀVØJ±(h"CçÒ«x¶‘;5Æaâ(DE,P|žÜWCÛsfi‹*ÍÈ´¶ÑñÌ3F@mïÅxvmt­Ñâm{-ûªÿ£ ÔßyÁe¾–⢔C1ṟðcóḇŒ÷#ÊöÞï[âYLcKÝ1ÚÖ#{:‰_ æžÎŒŒø<òÁfg.i}bÕŽ‰ ÿtƪµ±šæý¬4±À`}}¶ç|w²Ù׈5°¶gfJæê &l˜W"eö{æ¿ÿl}„´ÇùËë—æ4:þù@qŒç›qZkEb<½‹ =1Í&£ðÒ‡Ïæ‰ø½9§òáäý ¾RöÁ†Éhx•ë€-°$ɲôØäõz̵z!±ÇLÅ?ˆ‹FáQò5%5ç[¿¶ ˆÌu¨ætJ‡èGlxç÷_ŸŸÏi:_m{=ˆ{i‚ñçê·ô}ßqì‰%†(ƒ2ƒvAι[<}³!bѧ”Õ'˾1É­h¢A¸LZÎýà 9sرµŽŽ)ƒä†¥®Öò¡zÜbCsšMÂhÊ䣳ÚÖ·OjLϲãÍu;¿FcÕ—DcÒôH¤9Y¢}ÝÞwn¨Õ¢×P;ØTÖlîÚ$„¬Òd¡ îUÍN/d@ÔÊØ‹Ùúó¨»8/Èâì‡æÈÊoõÑ ˆ¬)ÑOæÜ2 tÄ&™¬Œ%ÜPº‚pAÁ D XˆfalÅ£h¾f@a碶IS‹«tŽˆE’…mRo Ðì†'n<€P[úÈ B 6£ïð*%ã' £8¸ŽgøQrШ»¡tp6‡Ë57øÔ§Ö‡k¯ ͵}¯¥Ä€Ë«²«6 é´nœ¬Cãóö¬´9]ÛßÙ!¼¢ZK‡T“øÀÀù Ñé‡cÑ‚&‹VAgž@ëÄÊÄ ¶,6¦¾qàÐ!:g¯»I¢`9†«ØökÁÌ"±IãiÍ9˜•¨`^†÷†Ñ ÷ˆãà¸ÒáàfÕçÆC“îsrá†üõšÓF«“ÉÍÑ!¢Ï á€AüG~ŠtÚÈ¥´8vnÃ0B‚pòk6¹cÈpæ ì÷1‚ùÍl\As0µ„B­ƒ›’|hßG ¥Ü×®B–7ý“x…¡Qòð™(ëNº;§·UÂ1£ãbŸuã|ªX+(Ãç.375{ëêÈa^—¨­õ.þIÏhuá2| É~K…b_Ž FAPRlî0ÓÌØPQ 5V]d%òsñMD‡ÇøO”–&`Zçk2N‡¼„Ôöpöµ¹Á·Ï¸~MdQyr¯Å«pŽ\Ïp} kÇé¹Rq|öŒå hëŽ9l€õzÁõ𱮩½—Ç¿3Þ³Æ s´C»>hÙŽ!\“x¸Úžn]s+[9îƒÇv¾#»ypFóxÎŒÁü´'~ß‹Cæñ¾Ö¿—é\;–-ÅçxL&ÇÏní×—i=ˆ×§µtã4";oŽïû²Xë·¸ƒ)†ª£ dì ‘ñÜCú|?ŒëNÎiÆ{4œ¥gšxÂ5v|ßäPzïóXÈp¼þã÷M¥ûî¿wë…yÚSñ, ÆšñK{ŽõϦÖkm ˆ6ŽÖ˜pšJ<øÇŽ,¾¼íŠ÷Û­@) TË[8lÌb%..0(-È9ýp§6‡³,ǯ­¹GăU,«›Y›“ÆTÚ'ÁäS•ìàâ샔øÉiÔÑB‡‹•ž {7âéé"söó£;å#îøgÆ‹kä´¶’ÎÂè¾wº¡MÊAÁ©W›Äp,ðV?¼¨Ò-?w€áé¦>ÖµYÁ¼bg|‘ ¿òA¸ÒSèüÏÜCcœÅ¸7!€ì ¦ ¹P‹‡=(Jp—N&Ès] I¾´}uj¥&ªKãV‘$ R®-~cN-/Á,^iÄ<lÉØíëä—4ˆßVÇ+¨(^’"bRXºEEwq÷³– ëÎð|†Hs—ÝöW÷û—¼ s6>°ÿ-QÇ*”²A55WÒ¾w+J‚ŽÂÑ(Ò„[kúl`û9+déùhˆ,-9Pž¯ã^:Ψc¼lŽÆ‡8È-ž×Q8ÃÕ7E—ÛóQ¦óp¤!F1(DŒ'ôÉ€z2gÁ'J hÚã—RðþþÞ­××W|þüù /2Š`–8)§ƒ£Pu&àN¬¼„ÎÄÄb~2ˆHs´Ž¢Ö,È>Çjǽ؈)‰Ö¿²§”p»Ý&“@¬¢]Ñ~«ØËÃJT´4”TOñ‚”©E ­hDq¹¬mŸ$§Îàú£‰`L¬…ó¶Ç¢t"J÷¢§ü¨üºÝ7ìbí~Ö¡HÎ/Í¿Á­¶‡W^Wdfmø,¹A­Ò1qr>U¬uLŒ y¦ÿ¹¦¨^ Ù²ÿÉòZö9›@ÆÃƒtn¸9¸(¢R- g®— 4þ(Ž8fiéGÂÙqñ™8\'7ÆGùe¢g—Îó÷)SãÂù뢓HÉð=ãùç§›üƒÌú\d?û}gN7àù}Ž˜ÉüµútÀØ-ÏÂÈÙf|œ Œ7ݱábœBœ9æÏºº{1¸ñ³ÀkÆå”€0'\£Z}\üÕcb33çÙå×Ýó5bS'9}øxˆuHúüZŽËѺ?Åa,ã†àøµÏ@çZ“›€¥‡Ìµ‹UíóŸ'D}yøŒ<(-'ö¹¿ßÚÃ=Ö›°¤ïûŽëõ:m<âßÇéUlüòЀR¼™(\\G{y< ÓSÍ1¨4þQf†höP•5ìY…º5Eë$¢Êöþñöþç]¦)]oªÓ=fŽI¸Ó Ĥ8¸y{‰C’ÕþÝèHÚ47î&IäDœ±ÀøGª Æ„ŒL+ª X•V^P4ƒtйµª„ Ò€ä©0©9R‚;Ä¢¨ÈmL4´±?‰“BŠ mFÝa•!M‡kbÃ&ð ìà9:¨Ží¤Ý¥Cä‹[a˜8Øüx=œ½G ¨]7¤] ‘¥ñÇ‚çå÷?'ÖnÓº¶–&>i '˜ ì âŸkg«Äõ[jÚ‰˜ÕÇ(áxHæ ~Ñ "U$puA¦5p‰ HšÃ¬Çµ nΨÍÎí¶žßWju×ÉY½I(®…8P1Ós³TÛä’GüƘÐÈlѾ֊BÆ=‰¯ëe·¶gfÅ^ÕæŒ}÷;ÆE=u¶šiœý꿹D{ ‘ JìÃ2N=~òìRp‘ίÝR‹­PT T¬íÐYX/Þ±“†2µ×¶_†wQdB¤ºØ'Êý1ŸoðÜFv½¡Ö|{ ƒ>cø\ÑÜ"ÆÝË:9ÓF!–x¬ÆÞ7^w{ Nl;mE4æ8¶dAs¹Œ=-ªÎÆ:"B„¨È_û‘RJ‹ú©ó³¢j>¢ØhLÙΰSoÒ±×c ×Ä],¸Ã+¢8p§/õj¸›ÆÓÏÆY²ˆ¹Ôæ`o¹í×Zõë©Á••Z‰y,ž‰üýQ0 ’×µj´HÓ|Ø fÓਂeÍ~X·!k¬.äj‰•ÞëçÝížáFR?ÀÅ:SLAÏk‰&/Ä´~Ù~É%k‚!`uÇB~r§X„Oų6·÷Ýó!ÄJˆÖ¼<9ü{‘8X—R&çN­ÑJ I+cTéØûà3BüŸ¾7á~ ßwÜïŠoßÞÀ²@÷Œu!ìë—e±R&ÎØ}ï5Šu!z´|Ÿ¯£CT1ö}Ñl—sÆårÁr}iVìõ˜¯¯¯Æ•Š¡§òS²ç8JGž2éy‚c<vl±˜£Pè`/g’‰ÉœÒ“sèx~ fÅObÙ>úÛ·oøõ×_ñûï¿CUñ§?ý ÿò/ÿ‚?þñ§güq=ž9Žgƒ1uÊÖþÁûÈuûè ?ž7žŠ˜ßïã^þøwÄïEÊñ~¥XÛôxß½Æ$ ÈÕÁF± ]zaCº®íÚÀQÄ3 ‡Ç¤ØèÜ«àÔèâiÞöНï¼Ý6” °×–Š£ÂØw#Ú?6›ø/KÂê­6æÂRdbIÎi˜ÙA:DIì÷r¶VÂY,° þGq²`0p‹¿ $ôÉêø‘0uÆs:Šgnœ'÷Í ìu< ÿÎãÁøG®£qQ: £ÐÐ\-ǿӛ%¦3÷J¦šLSÔù01SNbî ›ÿ¿­ƒ³…7~¬ú#õ†©9´ÐGägÖfC{r ?ug‘OÍ]ygáS‡OL¬Î”y¡Á#¬?sú‘Ÿs æ7ðÍjJfÅç0Æ@ð&Ãfkìš^ÓA°%Zzü0.Û™cäA…m±ìœš‘²¶+öÈï¾—–óCa´ªœ ¤ã½p›XåÓ†#¸?š8BÀïËQä,¾èÓ¢ÀµÖö^®ížÔ†ò©©Õu¯½.ÊÅ÷#/'$O8%H±Ÿ£Ê`MHKžjj31gÿh8'ÐÎS±%i›ØgÀ¤4§*y5|߀xLܸº½Ø?Îjt[CK²i ' œjA)aMÜÊ9šOУ9Uv{=ûà@Eêf€|ðìP—œ­¦Zê ´¡-1,w:…eA%rÁËD9ÑŒš^ÀtAÑЪI¬-šñؼ$ YK‘:IZ™ EZÔ‹HJÖøªµÙþ…´·>£óšFnÀ<}£öV6¡aajbfn¬ºsŽ!¡ÖrZøAD` fN0!bÃêön(›ã§:„œÜž݈³ŒQ‡ÈUŸàÒÀ•²6O`OEÞ©ÚÆ:É=ò×Cíî&µNÊä€ßX!• rof(Ÿ0#ƒP+QÀ`Š5j╵B ì~n³¬€ŸS€åÓPí}¾$î»±f Ì<ú€«ÙYãÉÌÖls`Ù×È!Téá™Y»ƒ«VEâ\¢…³ìÙQ=Ö::‘¢±‘þßmWÒ&. \•/%ZóØãÊÀV t^Õ"¬ñß&¬iÈÜIÕ@•­¬GãÒòm !*˜}ÉK„[ܨE4]d–šºs°ŽñÄ‘U% +Œ5*U6LoIÖÆYªÍYB.âVQä]|mÏ/a wƒÕ?41&ÄW'6×´  Ë%7á›Ú~ÍY&æn²˜™£=UA…ÁlÍŸÚ†i°ôæ dßï!³:#×^"K¸´Å¡ð=>+Íé=rÑœJðøt?iÛR»ÇÞÔ¨Æ7­U!Z‘‘P• ”úkÔ~¸ã¼X,Ó ª{sh8ˆ ÊÚʺM@²=R’ÎŽlÏoP‹¼Øým .òß' ,ËŠ½V»Ž™¢&¥1 ’Õ‡9ö¤OË‚D„œ !n ìu§¢=óº¶kv‚mó< Y­ùy(¦sVȆޜ|<×Äþ'§ùÚÅeiâ|ˆïñc¸ÇC0-²có&²WÔ"n¢(Økwb™{u^Ê`,™­;DÀ潸¶u£—9ð p’Ç‚²CqEQÁ}ßPöŠ²í¸³µMÚfy~ì¯Ññ3ºŠš8œU¿y+÷}³¦MgÑŠÚŠ(R±•\[ëö¾—Ó³n¼¦··7äœq½^ñòòò$"Œþ#zcŒ°{ÖQ| Î(žÄ¿vLîb¨bÒ(”ÅwtOMCUã×áø>þŒû·þï¸\.x}}ÅãñxøƒÔä|ÐpcŽƒ‡äÃGø€¢íìeîKÁV·SѧOÜÑQ°ŒÌõœ®‰÷7çô䨛…,{"…rüGÛQx‹E0x1½QƒMÌŒ”#¢ŒÆÑâž<˜"p¨ÎM)=¥FŠâgÊåT$Ìï÷ß¾¿áív÷)b÷ø Â\w°¶Ý>iqE^3RrÆKlQÃNŠ%ÙE›¿ƒå–—%Ajñi5¸FÉaª¸º5 o†°¤3ÆÕ'§ŠO˜b 8^ÄÇHÔ©#êçÕð{<èþLØøHd;SÓ'ëápè9«áÄ?èpâ˜~æ:S??bmPÇ‡ÇøõÛ×Á#„9µÎøX“ð‚çLüÙƒø#…ýx¸<‚»³/?ÙD–Çž`•æNè‚ì™»Ož¢¡³;.Î ò¯Ï­›-žQ+/O‡ÞÜ…Oœ¶Âm>ÆàÆë†Ñùs¡ÈSœ°È§ãFàŒáÐîµÕ§5©=üÖu}šìߟ}ß-bqpŸÙ×òÅ6˜ïƒ¤: nvæYm{>«bj© ·ULFFÇØåri‚à‘4Þ[9g¯tî“Lfû¹¢?=]ÀÚ½Edæ©q«†ÞºTM¤©ÖbJ”¬µ ‚¼,€J1–âúúbL”º·á…™`vT!”bë2yÄ8øP둈¾.É#mSY… }Ö(„Æ#²Xa…5!*JJÉàÕ”@´t`EE µ¸YòÊãmÛ°®ÖdBN•eŠM¶]+ Õd"jãŠlûîî v3ü)mVìî–ÌÎÑRÔ"Ó•ýÙXTÌL7â­ø“PLd2ábs†™E¯vì”ÍWU”ÝI`?îQ¹íý¶ÆZên¬& Æk×^ËN%ûþ†¢ˆáÕDŠÌ~¯±iÞô{Ñ^Ý åM ªä-z Pvw‘´ê=QE­ÉKÓÑè´‰1‡¡8owåÆ<ú‘;x]×ÉÙÖ…öˆ¨×'çìq<–ü´bUìc,xhy4ñ}H¤©• X,Œ=ÂÔæáP­&Ü´s昭œH»€i‚ ·Ug61g¬[È.ÚŠìQª zU« cmã¢%Á7Ân(D0ɆýTÃRŒ°X:D÷µ‰X&H=4™ðéä`í2T‹ÝóÃ_äŒê͘"æœQQ¤¬‡æªqŸØ™9vÏ›ËMunwm´ÝÂSS(·é¢E>ü÷7×!P…°ÃPEM`y›Ÿ»Æ˜Ìå”z[ ¬}·ªqäÅyYa¿S6ƒY3¸¥”}@é3«KV-µ? ~‘[C©9 Hirýo[±×¬îB#'IB).y›„ º[#0$ß(âQ™Jæ”ÙêèpäÎrM„µër¸©Ú\І!bN~oÙ ªö‡(V¬}ÌŒ%­Xs‚”ê.œ€¸»kÓ[wSØÂÂ=1ìÆÂ«¶Ç=Dûžin=ËSÃàµ:6\bøçœèÃ~.JfžË¡†v¢'öUûÇÝWÆU$|tœù™ãjtÀÏ¿0柳íÇÏï/ùËÓùdJp…ç¦úá¹5¥„ûýþ”Šï/^çˆòˆ½ú¸/Ó"AÏÓ`vàºÅ{˜ØëoÛ6a5ŽI¨ñÏ—Z¦” IŒpÓaGÆ4ÙY*&~m]—§Dר‚¸ ‰Š³ëú~—Éø2‚äÇç˜ÆAêz½âÛ·oMÀªÑqi “Åy½}°.W“ý=R¿žÓм0rãyÖéûâ'æ·>·CÐŒŸ‹)yÂäsHã¥e‘µ+lž+\–5ÞTanSÕ[) GÁºÚÄ–ìÀ% ì{E΄ïo7ÔáƒgòºL ÜÅÕ…&?Àù4N‡ÆÞt|h—ljú4èEÁø(ï:Þä#ð,&Êsåñ9”ìxˆ8ƒÿ¾ñ¢S`óÓÂx9?‹’y`áÉAÕ„w5P<”Z“£¬Â5 …IÄ€7@ ­ˆÌМpUUÛ„¦e¦§öÅÂóçQŽâŸc dšŽQÉS úa´n~Øc© °ÇEǬçÝŠm`ïGp "Á˜·†³^¨¹g¼-Km¡PÑ©¥±_3¾g”QŸ’9X8¾‡Röƒˆ)“{® ³¸ŠÁ‚>¶@œY`ðÅñçÌiTš›ë¸8EL‰€–M‰ÈÑbžQ<:›7TÉ2GÛsÜCñ€¡¤“©æ¶*“‹lßË“ ì¸vÄßß6 ¥*¸\. ­í/¥@R«Íœã¡ïXoÇS­î¸>ŒÑÌ£}»o–æ˜á¸fÄæ°ÖŠëë‹¿¶þõÇÆ«¼^PÕ"?U‹±ìhóº so-J‹U…/× ´˜d®0´xP¸3/ìà“Z^õ{ÝLû,ŒÃØ£v¤æÒ"_Û³;{@ÉñD„õújîçß0e/ ^€tÁV—¼@iAU6–%¦n)¬¹ìÆ©ñû6Ô¾ê×83cQ`רR&Èn.5%¶h|­M‹ŒnXs6þÆåÒ?o2æVˆÞ"`=lš 5܇iØ`{»#‡Å +ÖðÄ b‹Wé‚ÉVÅۻ‰¡­¡˜Óì,æÑÑÊÉž+ ¯½¯È”¡dì:ZÒA0—õ‡Vû>ÕZ™äßGõQv—ŸmFwsë0AÅö14ÙÆ.ùPNª æ´Š³‡²‹ep‹Ø3wß= E(»šÃUësûN[w-FµE•7«·í©¹Ãìµü¤½ë–,Gn¬i€{DV‘læèý_pÖ¬‘šdUF8€ùÀ/‘‘µ[3Ô¢ÈÞ¬Kfd\Ü fŸ9<]RÐy5¾óŸ!-Zx¸, fL¢dge³]K«U©8˜álçC:<Š%—ÄÙ¢0²ç IDAT(ÅŠÆAqqÅXÖÝÂެaEÄ"`ר;7¥ù½Fû­Àï:9•j¥> ß¶¸÷ÍT•0Øj(ëû´Qî0ÿ\ß^¨sœrðÏ$mÓsî•/|Oœ§¸»é ÁÂRÀ˰ZuÙpFâ¡Òäe(›Ÿ#Ç„ Û¶´S!›3kõÇãÏGÁçÎø_ÿø•ç3Ÿ­e‰é]¡Ú³0“ŸÅ|Ø>þlÒv|~Ž7ÔÄP·GÿyÉzz<>:ãlÞ7ÎëÆt[åPt橎µã8–û¾¿!ÇcöΉUE;haÜÎCêïïo|||¼”Ce›cŠ9¨}>ŸvéÍûê™ót4w[•Rðññçóì1Á÷÷wß?ÏÇcv‹UÜÙy°~qs0œâOk ___·ŒìBÏKƒàuu´v{~^Á•5>籟…»üyÿøÇ?ºˆ˜Ç|nWüøøˆ¡J‰ç_ë)î×Ä>è!¥,Ãû«s Ó^+‡`³Ã*Ï"‹V{Z†ðÎv4”ºw¦oŠn½9žõããÇçt|:4—Ö¬Ÿüç!nå<§œl@Ç·½LãÜ\ºb^¢AMY£}ƒºÕlÄÓ¨³‰ra½:?øâŽYÅŠ>9HàŸ®uœV Z ã×ÌîÕõ˜*å%Ç}§Þ¹ªî.W(óíÔàͤa>ÿªëçîÏ© Jw¿—~9í'úë÷§}øåØÜ¸ª–¼½e ý8eIG’^¢Ÿw{ïÚU¯Çç¾eq8V7ƒç€õÖÁw¼@rñô¯ðÀ^…ן¿ñ§ßïé¶8¯ÇêŽíve=ùBŽnÝ‚ù`À›H¥*ÞŠ²y³º^£óMüŸk†þÊ,»6˜Ì--Ù0—"ÔüW>ÈËZ{ g{ð|ì¯ñÖ„Þ-èfÇÍõ󾾟w_3OЮMŒy¤»~J<ÐôeƒåŒkÜû¬\„^ÅcjaöÚg0ácàñ¹ãûï§ÇÂEºØ›Ë€V”ô ¹È'äqÃBÉãñåˆxÌ‚ƒ•"žWÔxÎ N’mC-ìjAÙÀeÑŽ˜°6óÞ&èÕëÄ8ö4¢-Ÿ©´Ã •`l}ˆBÏæ ó8l,ŒB­ó ý|JÎ ñ±7£ÓpÄa_½ÝΈSœ* ¦PR°1”¢L¥Õ‚¤=) ðVP©ÄFØ7ÐÎJ7–ÇYZÖD³G4ã?a§oÁu!•Ϋd(!Üù ¬uAž¦¼u®Ôx&E]%\u k—ˆdަE?^mÀoYögöñý…Í*Ñžlâ`îÈ%ØW¦Ü1é&bŽo°mÀìÇGãuÒÊœ›ã–爳lÂià±M¬­ùV鱋Ç醀¨áSWƒá0t%X;ý[g AÄñDS ¦(ˆÞuŽ·|ͨíŠé,w×°D\O;“ˆ=® ß Ó„?ŒzbìßÀ#‰` "™x÷ÏG3‹za^…§É Ø}‘bÀ)~ ¥ùû;žéDÛúïÏ„3•äJy“ihìÑĵ™­ÖñF^"`ïØ;³°P˜_€ÓËÀ4ʤbc¿®ÍÆ UDP.%QWœÁëßÚ‡kÞFŠ…qµ$E q}½o<Ÿw)UG$¨jÄH=R*rê¶£” µ<öûþÇVðùð÷üìªë°w^Þí]úx—fGו5›¯™a”üy½8GAgQ`†äÏCa®ÛÂ.»:|®iŸ;»í2¼ß{ºk®äYäK(ý<\íÃÓ©j¾¯g³"á·ß~ë¸t}íûÞcug2]ÓsòA£”é겚#”3šd~³à÷ާÍL£|r˜‡§Ú~ûý÷eïpi¶­¾ìY®ûô±—«/¬­ŒlÎ{§ü³ãx¾¸óSxί÷¡ì|ý 7®‰¥5bX3¢Ü1+z«·œg~nCÄ\bŠ“@<#[ò¿ÕY¹Nëi6¾¾8ê'"'.‚¦'Njy, 7f¯PMËšC¯…±m%ª%[0xò¡Tkÿ[F½p:±FË"–nE¤~‹_Š!w7÷å¿Ýd7Fîx>wð2Y,Ìt+û+ku8½À ûÍ^8Ú]¤où½}fTÞ¼·}3±)¼½äF›BÙ,>‰„ÁqÍù5Ö[ùRÇ"ͯÑR=õYaX†ç÷»Ï•.Öfº°Lúq±ŒþÈ*&ßÄfˆ=zdh™œ#‹HÖúvãù»-Y¯­¾œÅ/£Éxµ¹…‰/$ê¯Íæát¼òJ{øàiÅyS×IÞ¸f/­w3£‘!ïMv{î…T Rº¸’Ü­pâœ&#ɵº›FÍ>$´Ö `A8áá|ëÀ¼N^®hÁˆN-“ЏV¯×ü¿+i¸ž¿wu n¸~ý!›‹˜p&ˆ;.nÌ:¸BNVQL2ËV;ãÃ@x ûã¢ñ` Æ’ÑŽÀÕÙ,^·=A)ãÿKÄR–H-%˜æQ¸lª)[E©¥ÔîÀåRP· Û¾»ãŽG¦\]Äâ òAŽÂ£AÁ²²æ‘6. Û h2ßùrpr 1¨Eƒ•œñ:‡Û³’³[|JUÐÎÚúäëÛ§hBîà8ráC<Ð%†Fª¯•½=XÝ!$ÑSæ·üÔœÝU.QR"‡Ò‹åCº`Â!32€¦B‹}FŽ‹Á½رÅo!gkhrÄâ¬êkŠ‚tþ¢ó]R°òÜ7ŽÐ⌄)æ |ЖÑÞø^ ·Ãp6ôX` TfÕ „´ÏGcc°œÔI‡Ôçïξ7t6۲ưägdœ¯“¦>˜l3¬Ä7¨šØTíî?!]pÜ?êîÃí†"áXàt7“GPs‘˜š4ˆaôñy䊉—ûÁ™müS•÷s ¡ÕÔ[Ö )Z‹òecHäK/% ßFÝUÙ94ÚDSóó5Í€®Ëò$0Ç=Œú’7á&æñ¸d¶–.\î z5@›ôgu:,[ H|n´)#pä£(;Z0†ik]s¸x®§’ÃU‚£Ö›'Ý68qÒ("€äC¯ÀYqna 8"¾ã™`ëL5 <>|‰r 5qy ÷V\ófWf¸Ì õæÍÀ— 0†;46° ^”Òª‚Jì/b­ÇÊ]ب±Eë|IUœÒF qBOx²öÂtþÏWí(Ð( Î×9Ã)!¯k h/B˜y§=™ÀôâÖ73”Êý‰žÎAÁÙœOú}œ8ÎæÎ+Q/h §(¤­…3HT~ ¼`Ïî²r`㉽eý8ð|}^Úà¯I•Îaj-k.^o\P¨ÀØ÷—tǵðšÊX4ix<>ºó¶ZÙ×LÛm™¥¢Vöi_+ÔZ{ûõü{ï@ñóP8¿×RúvxzåvÍ1ÓyÀk¨Õ1XÍ2›Çb±ÁPQ0Ãuñ[O^̹¾?cG2 7©GKÄŒÛdÆçç'>??;{ê5yÃÉ8k÷¨…Q¬.øóE.%–ÀÍšW­R³?x²®¶ áyž6l[´ ZÑÙÙD†·1Y¡¨Ô䘼•—‰ÔÊ áþ@ÏÖfÎQó¸Úòl‚ÀgLcuØÛ6ëFqÙ°Þ@ ïÄ¥;ëN0»sVÌ?÷.ôîuþ”¿³ÏNŽŸ_믜\ø¾îÍkKžËLòþà!Ô¢;´0 @…Ý €«Sˆ^ĺkü'fÞ€ü¯Ïw- ¿rÕ½=ÞÿÂ×ÿøºoxe‹°q‘´æo½:}ÖcŠÞb8O/†µþ>6{âݵjÎçÐÌøºÖíææjn¼fݯæk^ßoà˜lò¯.*·í£/ˆVÉÞðçk™nÄ.oé)¯SÎ7‘ÁwSÑ;çßÝ=êîÏD¤oŒîŠ(Z ×iP®µ¶ì–R¶eX>ƒ}G±X‹é^ð±Ô JðÑÜѦóD;ŸÏРƒP#w YZ1àÄZ+ê¶¡lŒR«O‰˜ì\P÷Ê4 7f ìPv>Œ âª’ÆRl¥ºÀÏGfC#Lç°»_lˆ¬-J,(A¾"R´-bê› ãh ²¡5Åà8¢¹GŠ ¤3Ì[úFP°RU &MSwN4‚²Lðmg‹Is;¸[çw_Ü»ð%ƒKfAšò¾óŠLÄÕó”þó¬t[K¼&S@š9Š DˆÄ`%@ø„±ch€Ñ=~V½z8˜EâvÎÓ mkgÔµÏ{Λ$U=2Há®s¡›|#’×OÄè9ÄXp¾¦{dr¯Ò¸„ÑyU}_T'K?c ă„GçfÍ]i)¾0¬še³b8›Ô2N8eDj}3?Î/D´ïº^”îÞJÑ"ž5¢8†;¢…‹F;ÓÒ±bó³!> Hw«*éôÉÚû×Á›ˆ—ù”ŠÎ¾SßȬÏ+»}ÖšxëbQoÈÅ8VÃ`F‘!Ñêê!ëQÃRßG 17{ñZü>ºá<Ÿîu$ÃxXOýõwaÔ×áѶy€ I-BäÐp2Q¸ÁÜ=jDáÚÌø•s›ÄÔ?[.àø\aMÓÛÂÀVÔâ½°‹ý¢à²yY3Z\Û~ß­£Ü$xRÀhµ4JÑgz& pfš""†Þìhݱhy¯ÍçWr¸,Ÿóáà¢`d‰öáQêÑ#wÉ…ŒR&÷ꎿ¢XKe¼¸`Юֲ63«u‡ÔËgº5Dz…z«c¬q€š ,ˆúS‰!J¡â÷×þü.+±éâ@º[7^cK³£zX¿ß_\×W¯Æ]X7çyv—Œ—íL,IÓz‚æe`˜eÉÕ|YÇó˽ùÕD }°Û#®³“ØÂå ræOÝ;ã¯Ö1Œ}Wê5ï³R¸¼ Zº )׺i$ɯ9ŽßßÏÅÅÔ#›T—sô* ÌXƒükfrÍn–9&˜ÂUÆåf\Â8¯ „†óÔÛ¶ö9õ0¿¶y}ž.ëkì‘G9–ï¹¶7΀òŒÁ:·tïkû™9«oJ¿îâyg›c óÚœ™±×mA˜\ßÿ¶ÕîTüùçŸÓ”‘Ò­®i—Z+žÏö›uñ\H/Âéüó¿¿¿–šã›ÊmBçÎùuÝã\+³ÛmÝãã%1–³ÙÕwÝóͧ¼VÈýVª7IŸÄf08æ›Qq¾–I00œb(E°_Xµ¹5«ÀX=G_›û‘ B¾ Ô>óœ¡Ù~£èoÀF³Ô¸ûFÿŸD´f(ú]Öóši¾Û”ÿ ÇžcI¶ü{:ÍÞÃØÍÁÈS³ÑU2ºº/Æ"¬€7BØz ìöa÷ IL·—v¶Aæǫœí2OÄä¥d$F Thšh¥†9´a¿þ¬s:HÿέÇ;ò•uvg'¾k»€š7wŸÉõ pL¢—øÆ$ vñé]Œ°ƒf/‹ŒÅÞm‹%Õo£în!h¥ûI$½+èn€|_³ŒFãÜpè¬.Ÿõõo¾€ ¯ñüÁÞ}f Oª;µÖIBÚVird-‚[|庀¸D53 õSãXÞOî˜ï„öŸ„³_ Œ6%]bàèò‘oÀa†jõ–5há€T㨚·¥R·¿&Øyð»¡FÛ˜75ŸÈç±£^—†õÉÐ(ûÀøltŠ=”()!dù ¤ôØÕ ¨^ùn1Pö¦ªé.öÍ3£¦Ð¥Ú™9 o»sˆ¼õ(š;¬âxë˜Â-Üfq?¯2•(@|Ã&Î-"ñ”R|Û:X#Ú£Pã¾âŽ…vhT¡Gt‹´;=ºÙ:¯d0i‹Ð"z(ʨ¹Ga@Æþû›iÞ$àºnëdãè÷ŠH-y³ÒÆ :\`èÑ¡p˜ÙøÜÉ|+Ǧ…¨I)´€È‡½#€ì÷ŒÎª4™3sÚZˆ²Ãê…£íIÃáZ¢ÍÍÆÆ=>ïëÀ‚¢Rϵ€bDÚì⌶îºI2V§KmÄ ÊŠL§‡°!4³p.†³È܉%Ñ.JÅ[»ö2H˜ŸCëÓ}V¢0Ï”.îá în$U‰f`î›< QÕ7¤J@A…±uG‘…x"ñœ/ùÚâãkD/?àî(±h%”Ù*Öùúóë´‰¶I\0poß$*~ƒ„ës0‰J´ºj@´… 6­ÑüNê÷&Oµæ¯³óBH:Ïo>'ÒC-S»0“Ž=d«µ.àøúX{ë£Y8.I»CÊÈzk¨›L]ÙÔyÍi<]ù¬‹ A¤i4 ª¢¥ѰJÙUš¥1\ ‚”õ:»)~~YÁz,Ðb d¦Î×* Õ×Þ2È–¼xï‘°îæ”ôSwî¯Ï>öY Ñ7¯ëfÒ×Á^ dy¿áXSʲGèq7Y[¿„Ù_ËÙ†;Ç>köû2©ô¢¾y¥Å“¨¸0Yz´/éì—ƒìù߇;˜_œÉÊyª×Íj–PŒîxÖݵÎâUºpDÌÙSâ±t1]¢÷CTYÚD¯ŽQˆ@+óú1$ãëó\T¥.¶‰H×)†JŠÇæ‚Ïßß_îsÄ÷®[ýø0˜Ë²þÍûH-%†:@ámJ£ ¾•ˆB%вüéB¤…±4—Í%NWlM–²tZÛ{2Ö£­°Ñ=áWf^t®SHʨÞuO}Å\ÌÃítu[G]ÿ¶8Gxrn¥Û(‘«#jeú³@î!ìýuLíóû¾/`÷p®?óE”?/ÛóõîýgäqËk$!ð³ðÖÓ$Stó®ÝïšòJ2Wþû|¾ÜíVÃÇ+Rff¯^QAsúå¾s%æÞÞ] Ü“/¯¯Ý•Yf–¿Ô@ì)wε¥…eÓyÍœïr˜çþ÷8ÑÒJžÐ°‘ÉŒl^l¹BÌÿ…3Źº­€–só‘¸~a/¹×nóí“õ&>+ÄïĬŸŠë¦ô*rý$`½ÛÈÎJð;Ý‹†MÈ[7µºD ï7ÅöK·Ï ä®Ñðîg8€×¡›^<´ÿD‡=ÚaÌïÅË»÷{§ý½‹NÞŠso΋+è¥áËî#…׌X°¼&vÀ­`y#þJ»ãY]•õŸ¸aw·» ÿÝûº Jw"Ë«ðåø\ZÔ^jX§ëb¾_-îwÁ"_ú5·žGû^»k°úCÉ´³ŒÖèæÅ2n¯BÞ<zÇÌ»>TïîOï¡ïbÕþûF úfÒ¦¬9zìã6RÝ£‚€q¸©0¦Ñˆ ëVkØÀ$€_³=Àê­†0xôì®. v’Tú}ÁÁ©ÇF{‹¨ 1ÃØÙVTwÔLJ?Zs(0*€v‹ ¾¨X¡;zlnÚcÃóûÙ]VŒ¼v~T­Õ7" ˜¤KB{檬߸ô‡¯„ƒXŸ>ñ<䀈¢´üû¹›ÑKo­ª=–aSa‰|IKÉ„Jn°¯µÆÃçÄ¡2ͨ$pž2-F¾€öÍt¶$úùž®$Ÿ^+Z”ä·»}FT9âX沚\bc#¨zzÓW¸gH§V9…3yT:p¡­ˆAØ“ˆf€4E±}È*ZÜù@q¡ØX{JMQ3:…D¸ØÉìl6ŽXü`8r_ï˜ P l~ gI.Ä4„ ÌNòlákÓ¡iž{.H4¡%Òï¢F Bˆ†L=ZØ]ËXÅj‹è,8¥Z…DE²™0m-œ]ˆëȈØXØ,ÊùÓ…Áº7õc0žïÁŒZîÏÌn'‹ˆÞxÝ ‡}½Ç¥C¸\î‘cÒàšpZµTÖ–Qp/3º›PÏ®þûÅÝSsÀ5>a6³G[¶¯ÇÆÒïKYÊáÇù NWVô$k,<“V‘¸4 ÁY¢¼»" [K QZPñÈ E¬ºd (1 ÀI†M]Ôö8&áTœ„²•ب;_N×Ò j’úƒÕu+Ò ãà÷¸—¨»Ys-ªªl)+ÜÝl3=?S„ðÔš8Äý|®åLX£VJºlÎŽóyï‚îë“5¾„X‡¨Œ¸)EÙ Eâ!c‡yO¥°+ö!}#Š#³p> íRè¸m ŸŽÉ >âÂh½þûÚj]Fkç…‹4¯É†ÃèºG±…y4‹WçÑz»ühgm„™ñf€Ç63æzãn=:ú…i­zÄR V"ú¯¼”.˜žÏ$ {)(DØÊˆƒ 1°¼0‰çÿ}×4·pVg÷Ì$B=<öÕyÂÕ‰BkƒäìH*‡há²N÷¬™átm¬¾r¡’=5ÿ,»A\ÌÇ$£°óZsÞçÏœ÷ás;à __œ…ÒœŸT÷þßÏóÄóùìpõÇãÛ=I7L¢Xç×µÖúöjà¸²Ææ÷¼^C£X¡ÖŠßÿ}P•‚ý㣳ɮn£yß3Õ;ži.{³ÇI‘*sºÞ®é¡kCåˆ5믚„¾ìÁ×vy~Ùϸkîè|·<_üûÂMÆåM^|~_þ…ïïïnÅ%”ˆ”¬P¾u±“õ¦ T_ ·¦OÞƒ âÛüæœMlá¬s°íŽŠ3¦,xqH¬pÏ_ÛÒšüœwà¾Ù‹ ëèª ¾Û82¿Þ¯ÄýïUú)´T›¾‰³Í®¯þß³:ÞVfÔÛ(ÚÕÕAüc¬-ù°rk•åÉŠ Œ…ö˜JéàMÎŽÁ‚¾Éôpö÷Ñ pÔXÆÈ/ óïcýƳ Ã{¡ —Ÿ^:ÅszAú~LÇŸQÏÛåœ5zÜ33Hsòb·‘±ÛØæÍϹ Q7À9‹<6YÊýêî£Î‰¹F gÁ‡/òyúð.úö“ üòÙ–UÀ¾Æÿæ)ÌÝM~^4ÌÕ½W›¹öï__Ÿ¤P…µ Æ">Ô䈎áÚ$¦/®ÍwµÇ? Xï¢ÅwÿÛs$¦ô¹ïÑI]™d„ëP*ÞÆ”0YY1 v–ŒFe½‹VÅ Š&teóc%¥/2}“rF˘ÓÆ‚(T;·£L-K¥Vð¶¹³¦TÿZ¶àùýÊbòÆ[‹NæWß`j0è™Uÿ¬[^·½5UPbò Ñ~¼š4€{4ueñŒªBB;cu ÖŠCû>—dÃÚXÁçXHT.ÓäÒÏ«m§©úÝ™•|¨qn…[–éåÙ“÷2D„B1Ÿƒ«bо`¶ËÔꉚrŠ:tõã©ÁáqQ=Bèí¦ “ÓÁ¢yÖéÞ ‰®Iâ!zâˆ#[º¹cj F“#ƒYt‡J,nÃÅTé“›T›£xÑ»W.'ôëÌú3q¸éòg˜'L±=¥;’‰Ø™Xq çMs;5žùqÖ!,@ ‡ØaKw&¡¨D$$ÜzÁZIz:ŒMSòXNÑrÛüŸé?Ìbu¯;ÌLDQà05µË•§Ö¿|®Œu ñØ6 Q(›“Wg\k MRlsW¡ˆ{Éúg…)Öæƒ7÷ …[)Z9œËéº nÔ a^ï¿ev÷uÎ7ÕC$.¾ >ì*^úƒ!ÝîéêIq%ªw©fÆyÈâ<š×šW0zâf<–g/Nžcÿýßÿ½Dòfo>.™¸à™61€‹Z^4×:Ý%ëÔkYÒ:pmTïŸåÔèxÇ­Ú¶ çy¼-Ëë8ï?É|õAŠ?—=b¸î)¼íØ]éCܦihh/âê,^­%¶X×÷r··ù1év5zp_ˆ¾œf†úl9ݘ™B±ØgAks&–£Îš±AaTÁÅ€MNÐS{Íl-Ò'}ºðU(¬Æ eà|žàÂát87ì–[£“=µpÁñüîí…¹ÁšÝQ}c}a÷¼‹ç\7ÖóTbv”üŠKsDÞŬæ,ò¯„˜ëF6?9¨^"CAŒH:7ìêÆY7¯FôÈ'%6ЗóM r.ÈþIHz±>›AÞ¸ÁÞ}ÿÂÍè1¶Ÿ£…s+Æ}ðšNB ®üöæ3Ãë~bx-¿7L†wñ¼]«l‡joÙmw™úë×íµF1šEk™/âKg(µ£·Wèçõ¯|¾s1ÖZÚΕ˜¾g­‘^¢]L[gô‰É÷÷áÕî“–.­t͉¤‹$k¥§ æ4á"ù:É´€¯H>ûvÁ?ÏW2¼Þ(&ˆÔïõocÿ£xí-Ê+›'Ïëîïý.@»û,¯‘f fç¡ø²z¬’|Jï‹Ëâ×[‰‚Jƒœ$iÍi c¯—‡bL¶%WeWÂVàJ.l±Ç°Î¦(uÏ‘¸[ ‰†ã”ˆ¢iÄ7|q ¯3çOˆz0o}J†öõ…Z+ö¾)}øbÁ"'•`‰!>Q ¿ÿ>wnùf„ dž˜ÐÄžÁGfæ‘»’›~gœl›;ZòØš¿?Á¾K:‰S=}Ñýùùé›_A «0âÝ™fÓâO:CðôÙµXbsàŸ•â(›]vG='FlhMº ŸBÐ@&Þ¾7ñçîȃ¸Ìާéº-9”¨Ñ –äpu0:÷7‚¡ö¢3 ÇÃP£õrW w©ˆ¹[½M¬yÚˆ8Ž¢ýîS€Í¾Ñ&šyM>¼É˜39ˆ» Xé°"€*ŽvÄkSø°t”’AOw©Tå.°ä=ÇE¢Ö7gN[ g_¯>TÉÁWŠQ „OÔƒêÌÀòsÑ_'z éX“[„̰4ME¾Ó}ÚÜÍ)d`QÿgÏιCæó;[Õ\P—îì3Âqº«†ƒ8Zˆ#lÁ‰BçŽu€Ãÿ!â‚Q¿§‡ óš\ÔÇ(©˜ôìb›;Àb#Äl!ˆdÓc4žf0A\8ØJ|waÏÈ‚-K&Xº@ŸCOELhˆäo¬qïŽ×UP!”ì«>—Ä©‚í±yÔ›ÇÙ`äÑý²mN`v5"ãyÛwq¨8h½é MlF ÁGbHàF̼7µÎÍ*¥€­ÀìpA_¥ó°(þ™ë3Õ³Ÿ/ÌuÄȲ-×\÷•p´éÜR¶'g+…>wÓ×â…"ˆr 4Fw«øɫӯ}¸¡sx4­Ó=ßÿÝMÒ|(1 XÆ×µøºUÕ%ö5 Sùßîø¥³³k–e¼Ì9Ž),a$*é ÷Õk«}ÞÃÝ¥$nÛo6ÙþÜqM.Žã55,¢x†ùæx ·áÞ+êöªNóˆúqœ°&(•o=WѼ~•©9Ðaá#&"^8;­i©0¶íÑÓr/Ü£yð¹ïû8†p´@9Ž?¿;CtVfGc¾þÙfÁF&‡•õè­¯#[;]@†zñ[ <º›|Ûq5á(~áuÏäë!˜™öÇG:K)øøøèÇ>ÿýÊŽš¬î0ŸîQ³#lNpÌ×ÑÝÏš÷7ùºŸÏg4û•²ÏŽ$Æ?ÿùÏ.úeËä|ÍgŒô.D¤DÜs\ßù32²;?_¯Ìæ»ýÁU˜×?M{‚U£‰ìwnêKÓé½&’BãÜ,é¿—Wþ7hÚ}¯¤¨M\6ˆœÝýQŠ_èÏã@©°+Úˆ\=MT·47€Ì¢öĶT‚ƒ|£]…Ô¹GS0dr=”aY »Û÷q‚KÆ­ä%SÚo ª¾˜6ϳ2µîI§·X¹—ÇèˆPZœ"Ã5l ´Àá°ÝB ‚Š_°l}mŽœ­4ña5ÓÉÑ‚ÅÉ“– è<6sË™u3 uNË|’l[ ²xhü†ewÒ8Aý|´”»µ©¢p™^£©x®ÜhiB ‚ZŸH @»ÝòºÀ?€o"`WŽJ‰sÆfö@.m§ U~ž=89»h¼*ïDÀÎf¢z[Ž]‘ö6À}îÿ¼ X«ƒgUåï\„ÙÂàMYènµ>%)ΧÃt|úÍ(*°)E˜¨Ä´DüÜo (}¡öó³1E€ãüv;3qüŽ\#ûë+Ý9á¶Š‚©âøþO^`Šï`~ýú™²ü99õ¹ÖöÞß­lý:ŸâÏç¹üNçï´Û›þöˆl¼4Pj@™ÏóÄ£n`öÅIÝ žíÄÇÇGÀìûn1éÕ„ÑŠ Ä¾Ä&—Øyœ R|á›.”þ9ƒJlÆ=ª†¨‘“ÃE¸.ÓýÀZj<¨’§à ÛãáÓ¼ˆXe„›Jó¥&À]0|•º?ÆT… \&˜Ip>b!žuÑ[º\°qptà ‚¾a”ºãñxøôqºÿÌM7ÀaÒÜ+Jr&¸DaI8TfSnh¬¸».Û´M›@´ùý5âQÚ¥ožÏxJ©(uóBš.:5Áq×j-PQˆÎæÏñ–­‚Êæ.;‹Æ·€âVŽõ*J%ðæû¦ ;ü稯t.bÅó²þçwÇžMZ&)Xõæ×ÄKøyTCÄõ‚É%\<´Ê›_c¥g"‰ÀÔPqžî8õ¹¥àÍ‹½…’ Zº8˜ïÉï¹n "òã õf=ÅÑ€Gu¡JR\Ô$„øiC›8HLc= §‚Jé"h)ìñÚÂ8O~4íˆgL@œezOMÒ Ñ‰šŒRU4ç™èiîØóÄp(‚§ÖV†hƒ1;k‹ÙöJá0Û|ýfä.µ<ÆÅP+Àes‘ÝB`²ÂŒ6oƒW¦Àt)õ¡éTŠ¢ ¸«:×)ìbæ™1?°ÿ÷ ¯68lúh‡CÒ#†UjÁ×פ>pŠ{ºkãY¤¢ÎÝé "î|Hº‡ ¥½8N hé<Ìl¤l±ªéòÑÖo%ÖЧ´¤»9 îŒæ[NÈq`XÈ1+­I £²î ÀÝ#²u]W ‡;1çHÑ1+ѸۂŸcÓà19@­5üãýc ܈aq¾±)Z¸kÎç7ŽÃ¿þïïo<ŸO“-Þ·G¼[ob>_½l÷ëßøœÈÂᇸ0u¹‹—65 ƺ™€ +* {ÝP9£œç·¢•‚?ÿùDÛ ì“ òOÔí/<üÛï¿CDðØ+ Ík7Z/þü;&î÷ÿ­”Î3£˜ŽhjݺƒéÚîHÑþüØ*t+¾Ënî裵ó»;“µYGÍ´!Ú¨ÈèiM–ä,ÌÄš©L•ªâç§œ'¬bŒv~Ôp¶§-Hqž _ÇíqSÁ÷áÎÈçóékÞº˜°óZ+öGí0ò,Ð "|}aß÷ø^À´á÷ß<–wßxìŸ}(º× ¨Û:à—xO¢clÚKÒÝy¿5 „¤kÀ]”||üÖ×'þ<ÍTcßhç«P}ÃîRC¬,T £”{y³ôé(Ø*!r¹ùØvH¬ó¯<þÇóÙ9ÂÉ>3µp–2Dω§§Ê`À’ï‡þ~~ûç·ïÞ¦k²¸#Ó ¸F˜GR®§/+p:FªŠ .8ÅÐDQÉ'£âC‹xÀ&,Íši‡Î‹®”êUJ¥×#Z^Ãë•Ù[q&,‡½Z²¢VîÍD”ÑÅÊa‘µW5ö gSœSoÙ.Î#Ü€ÙÞq“f{Ý;>Â;Pü;ÆÌ»ᯢqwÇâ]Ä }ÊN½MŽ.ê8fWõWFÐîfô6Ö¶¸»˜~Ù”xeΟ™Vø†ùóƒ›,¾™l)4ü—Áî¯Ç]‘M ñ©m€é{ÜÁÊ?÷ÊR»ÆÇn4—)Õ»óñÎE•ZAÀr™o¹I÷®±Ëϲq<´Ü#fÓ9ô+V×µ¡o¾™ÞÁñ}#®7ÍS?óëæëãcq«õ‡ÇaÝ>½BJ§ &bGg1ŠvUÒÞT¶“-\&ÈtvFÅkn뢳7˜û×¶¢½ö;ky.oL£-ײ/`ÎÅn¾³ùÃÓ8_h`¼¶±Òå¢*×H<ÙyÌÐc4±œ ÅË·?¿ˆQ·xþ•(Q©ê®QX£8OÁÑÎØŒö5‰aÁ¨ø4¡Ì6\X~Üâm.Oäæ™ÈGSÌl¨lPœ>;RP`BîÆ‡ChTåtÑË¢Ðïå->×Rj€âÓm˜N›8®Ç÷Ú€pAYÿù§H¦’¡V<\ÅŒ6¿¨D0¡ú.†P¨_ŽHóH 1ùŸoZ%.àp%¢p8\8ÚGý>®œM#>I@ –øš ƒ¹Æ:^ú3 ¬ U…ü†Ài‰íó{fDe<y?ÃXA– ]øg~ÉŸ 5¤þ¾UGDPcˆÚ4ÝÏÖŽãJ‰ã‚ÚE©%^5tÞe›ý¥=bîT[àÇWJ8È ;ϸ¥ÄúâŠHÐÜ@?>/-ì¯åSwkÃüú™õ3;dhǤäSûÆÙÁÕç)]ôJp» Í2ýo]Ö!sk|¿–ÄÆ»¶YŒ\¤_Ý/9ˆ G¥À´Ó£mGžg…6ÁY¢ÑêI£?ü×}Cå †b«„ÏŸŠ½záßþ‰R žÏ@”‚}=}¶ü¶ °íÂRýøøXö‹Ý°a¯"¥¯ñâÏ/ep®©¥3âȨ—¶]Ó7w Û»dO Ouc@ÝÑ "E“Á9àZ‰„ùEØÿûû___x~Ÿ][03üû¿ÿ;þøãüöûþüóO|}}ÁÌðûï¿á?þÀãñ10S+^~ö×5î55ˆ6gcÎ,¾Âkƒùå¼JêQ?î·#8ñKÚŸ{Wn›ÿUϸۣ­FZ@íst4!òyý~¿À÷{ñD|v.ÄO±ÒÉ1gMÐì€ÞD>çôÒ૵cÀõþ’çôòžß—‚Z´²s TP¨öÍâæ•Pµ6¦ˆá˜i¦h§N1ƒ6rÓ¦hJØb:_¢‰jÀóbqºAÁâ Ad¾I„MË´±Ðvº@ÂÆ‡œ9izq± Höj¥¹²×,ub]¬St¬û &‡–tíù×¾PŸòÚ¹X´¬É¶ gæèˆòš½åKVö§h£@?Æ}ãBÕ˜êäC@¦×c 3ì>ž65êYüæ©ÉenFœÿÏrÊÿíÊN†¢õg×ü]î‘‚Äô…&þñ ÿÞ—îŽ?¡¼h—È¡a®ç¾»Ù3Õ͸…K¾Œæàü`¾³v¾ ßAg—XêÄîè–ìÅJwmãyex¼ƒþ¿ËHß1^¦o—séÎ ûšœYvW£­%µÖc͉Á8vëqTÐ2=Û‡œ4„lEee´3Htá©uÁÏ’kóZQí“yYŽÇÌïBD:›«3¬¶†S5[¯ZÚ¿/LA­Yª(#°3@«Æ ¨ØXè ²™ÍwW³| ãÀ°…]L A£#*Ü®;¸2Ø|%Ñ+¬hâ>Q-{!ÄEò£ï‰4'ÿ]Û"áú)Xþílĵθ49Y{qª !‘â³Þ8 ¼pðp­5be-MˆîÝžO׸¿ ÕX¬¿FåÃÝïƒjc¡W˜­fá*p¡ñ|žàZÂqç“» TÄãbZ¼W¡¯‚v ¸8#¾ˆ>5LòÚz•|¡çq !³‹UVFÉó+ÜÙŽ.LÆäñÙÎ_gðBdîÂ2—8|x¦‘ƒÓ¸XqºÛä5î3еv¡:+Æ Þ>sEŸ‡`Îh,Pl!<%W•·žp]0p$šÁQŽ1÷«;uB¥ M[ ¾Ð…åh±¹ç 6ê K${Œ0'!(þÇŸ¯ëñüLôvL!„äMÌWëѼSÊõ¶¹hfƒ?37L€-‡y8C¤çs~.—é1ò9rÙ[ÔZ£Çî ʈtwÔ5ÈÙð|ž8Úèâs@ÛEpöŠÖÀòœíÑÜeŸƒ‰5Dch+¢ãÊyíÏÇZPH<þË~Mƒýœ“ˆ‹ ž§ày*ŽÓ°ï;öêǰ†ã<ÀTÑNÅ_çßÀoüñÇnî¶´=}x"±9Ï—“¯R°ågë¶„ ‘Âÿc««jƒi»Ø¢p ,Ös‘§ñ,v\±óg3¯áÒ½ÃT}¦Ö0T6l›»‘6Ýðx¬ëúÝ »ÿ`Âþçú½áÔ—÷¾ï;¶½ôÄ|~~àóó3Š>xeó\šÁçWFÕµ-ÏÁÄoP¼ÿ>@ï÷òuÚÚ±ˆÖKK´"ЫdÄøJ<Óõf_îë„ßÃ<3ÉGù"ÕÕsªá¤c´ãìëìBYÆa³Ýî½æë0ï=³@J„p=K°nÓ´bxòçôã<9Üæ=^)Ûvm/=צØ6Îãš'.…Ý P4B8r{e|ʼnqÊ ƒëæ/P9&ô2)fñ†DÁ€½:@57%(H  P1rÌÉ7±ü°ˆ€J—Þòz~rݵ­½ƒEÿä"zÏWúéõ½FÂâBz“C½ºRÞ·ŒéÛÿöS³ÜÜ*´°Qúă~©¾_yïšw¬ŸàXwÀüëûb  Êñh»@:›Å|põÓgÿ“ëjÀ×ÿ•¯¯úÖ5w缺†ÖéŠ-ÂͯXïÀç·m‹o¾ç®Apý>ܲäîJîĦk£Í]¹Á¬ºX7×ÔÝñ~×zã†ãÕ•u}Huøb·ð^ŽoD”%B"´F}c¿@²—ë‚z!÷ÁÀ«n¶+/‹ à%~9OWJŸ@éÒÚõ²h±µ¡„¦yð°G½–ëàÒNúÓ4ïÅ ;÷•ëmFž.q,£[6îMèÿúûïážAÔÂ"ÆâÔ„Æ)@©%*Þ1=Ô>µœ…6µÁîêefÐhoÓp«vö4+HÈ-óïgTÿ,š@ CÙÏAI€:Y<*I^…‚«Dû·žUóEJSÁcÛÑôt7N³Â Á8ä‰Zv¨Èp‘˜ál¥ZÐÔÀ­u¨wF²>a- ÔûЬGûž§ØÝù:€GP½‘PzKWMæÄ´03"|?è'α;¼f¾¹»Å""’"sl3"o6Ú–•œÑB`Ò-î—9Š˜7wÐ,µIq&—1šl\ý¹#†C΀ 3ØÏ&(`4wiH°n܉,uG‹/R›ÏgDÏ/¥99 )ê_ŸÖ} ˜‹£| `ŤÆzA‡‚\,â›O¡d©C§øô>¯§–Ñ8#˜•árq«%T'fñ`œu@Ÿ=ÎÊ<‰ññYÕÊPe<“q”ím‚d8ÀhqŒÂ­$9Oñc“pròæIÊ{€d$0\¡=™š{ž ëÑŒC4XÄÑlÄ#l²”‡(XUÜ™U^]¯îlR ¿=ŽbÔ Â8Nw¤ƒÊ„¦ÑÊè%ñ^º£ÔÂ=åBQJ Ÿ _ô³0±—n€ýÜŠˆ‰†QÀ ±rTo$…ø€N‰ÁÏ;q×’’“7;jsa*œx)îŽ$Çx6:Ë{Èùž3f– ‘Q‰g€‰—Oˆ…£…R{DÕù¿º<5Û’ 7ŒXüXB“\´Ûõ– ®olæ¯ÏgO èUL¢¥ýò:€>Ïsi¤{ÝlÞóo“g¤Ó°%÷Šc$á Óåç¤ ûá,{q 3¹>'%0ƒNí.9Ñ{·q~'ìÌŠþpQņÑìÝH¯›ëÅÍhß5Þâ‚“¿Óî6|³íÿz‘Ü ÷"ÓÔzb¯¤Á÷‘ÃS[¡ðÿÊû¹sâüJú ÊŽÜ[T_›Û$ú¶Ô.Ü£Éhvnñ"²Lmhšì,ƒ³åá¸2´¬;̈F6_›Þ:²~¯‘Áwéu²¶Â™'këÚ2sH¯‚Õúþd60‚xúý#il'¿Î{Lkú£}e£Ù%ök7BÍ;›ímtÓtÝs!ÈÌÂõõ¸/‚(šò°Xg»…<¢Pb£ÍÌ É<¼\>»Ëý†‚y¦‚e¡ë2=Êö´r'ö²³=B½ 'ìJÉḔVô ìÔ@5!èR«­+ ?_C.àãJ¥p€„ß¶³.f{ÿ8§Sl«ýB3!³ÇÕD85vgŒ*j¥ƒ•Æ2vfÊF¤f8… T` c4ap}DpV¡æ<£¼0C¬º³Æ¨3sÒ9tž„OÔi]×.rûÏN’ß§Ñ´ŒÄ¦Îùª g\±Ç©]æMÍ`ì —& •ñŒjÊ€”î„FÜ ] ò5žöÓ›À!öi´™ó¡Ø#ªlë`­pDÕt8(ÀËi2©µ ‰@ÎÄ^4\³yñ˜BÕcl¦þ¿ÓIhZ–Œžòž±>6¨³½|ÝÔÐNÒS.-Âñfân²Ê%\¶~¦³Ö¬ÑØ s1¨µp­¿F+¸ƒñsËC¨‹œš)‡€Ä.&M-ûŒÁiÆWŒ½4ÜJ…-—9=œ½¢$9$Äpü˜ …ÆÔ…S±l« B!¢ojòЫúCˆHx IDAT`cކÉyŠi€šÓno.¶~œ¢%µsx³À €y¨£ŸÊPr'Zë-ÿ¼,¢÷aa˜Z+/ë™\÷µ\2Ò¯5ödñfââ"™?+û>+Zk-ضŠRwßtK›Z´3kß­©sã~׿ÏÙ²´-ÏBÔºŽÄ¥±O¡J(dÞT2 *)<ƒ¡ãæŒ3w^YwŽŽ¸X6¸Òû"^6â³€5öuQ B[)S®‚â85½Z‹aŸ¸›/îË ‚pdjÙ ¦x'¾¿ŸùÂG5üóâÿÇ'¿ãÏüþ;˜ßýZÙ[àêæ¨"ÒÐäp#3ö²ÃD GC;?`Úv£Ü…YY&2@Y Ö^ÜE/hšRÂqíë«ËjŽß3K™Ù„(¥€ÃíŸåX[}ôß©Àþë¦!nŒaÊ÷÷÷—;…[g#ì¾òoç"§õ=û³€Ë_“.†§©c9&)ÐØTÌr9f)nýTçÃ]1F°pã§ó|ºöro¾ÜG²„&þI bB©„ºíøúÏÁ»Ã_ÿÓ×6ö4Ktò&érž§·«F2ï• 6¯üœã[mB¤-ßw6EiúššÎÍ&£«zk`ž@ɪNø†"ZSoÏk8Kò¤xùÆÂÄpFã’ÑØXn[ ݳc±w¦e›1àé5§w”ÖqÄz#ܳp®ŠŸ¢z ¼P~j®»s Ýe\=_~üYïšé®lªw‘´»×½¾¦{ç¦ ør_Fà~àþ§ÂÖÕyt½¡ÎçN‰óg½PæÆ*[~r€õó ÿÿÿZÏ?{‰S¾ûž«ÓêízÓ¾Fìæã4ÿ¬N8Ûvú|_?ã÷®¶w­’?/wŸÿOÂîk[&ýØæø"’^ÚJSóîU ¶e*‘(ëe¦ÎÔ¨1á!v`¯3»¥Ovü=:„w¶»/ï›FÄ÷úìS Ë±º>ThŠLJæ°óò½+ÐWtoî€þ—‡R¼¶lëÂùeÕc%¯®Ìñù 1kž„-9}L- œ-df>á ¾…Šv1%š(ÅwUšçê¢S¶Í% ÖaÆ^D ËF_¦§N]ìŠ ¿Z4Nq ”"G¤¦î€ É9ɸF›žÎÜ*…‰„+Ð<šTÀ!V9üøðé.€çÑâ® *8$cyî"Ú˜Ú Ò g‹XƒFÛ™ mr„k!„¢ÑΘè+Ä}“(­w0(ÇšÃÿéÍjm‰íVŽÈ…«$ZÓ˜Ù™`&Ø÷â:MÉÊaÈŸ ôˆ¤tD@­a/ HDÔ®¸Ì^XÓći~Ÿ«àˆƒùù¹áÙr¨Õ°è—ˆlmø¨¶ií-P¼+)gœ‘kq,š±»r¨@´ iñó×°ü!Þ§pjÈ&Vtaäâ“FdJC iê÷+¢hF A×(„ÈÜäÃc]zFa„”%æ,ªÞ²h<âVÓJ§”„kÓˆÃfî#C‚MF=ͦ,Ä0fH8¨C • ÖÝyŽhfd#(3b±6ŽsŒý30Ã).ØeyŒ—[¶îðêyv'½Máö™]ÇÁl¢l‰ 6Qÿ³¿¶Ò`Ίc­Ž‘(T!fË´pNœÍõhg{űÃhY4&‡1wÁÉ×ÝÐ÷ȆF˜­s \ðšC©£APŠß?˜¼ñà(Ÿƒ¾¡ª™Íå‚S=ŠKQ>Ò݈ˆ.˜ºoúŠ߉‡ÓOÇp*lŒÑÈê›úií7ŠÇf‹²0‡ãØó ùï!𛋻ü6³ˆù…θ²¥ñ÷'úOë ô—5O æ[ Xþ¨§ÕÄ­µb‹èÔ̲L¸ûµÞ~ÞcÔ²½8jîRù|~Ø÷kOo0%îþ`YéØ9O‡tfâÊûzu¹x¢;°yfü‘-SdáÏN:[°4G[ — Ï † ßßžòÄÿõÿ @;QþÃüÛÿ‰G5|ýõ'ÎçBŒ  <>PòÙ×Û­µ ïüUÔ¾ÞYQýs¥7Ͷm¨Y®ekºaæ ÍÇ)Ý®ejÉž-ùgéfº óÞ0› W—v‡Ý+jZ¯~¸’¡8c=z³æ´wvaêùÖñ”ƒÔùÜÌßQkõ’• Ú>¿ŽdDÝ¥ 2jÈpDÐìîºÞfž]ä|guæ=¶tCAÇ×P:%%8ŠÉÕÕ3ÃUÌûþþvW•ÒÒ"™ï/ÏÃάœ®ùkÚÅlmO/¥Àncé ]^Û%jýú™xÒÄÎg´€Rœ?±Fãd]ZGVÕß~ûÀ×—à<Ä@‰¬ýp$ø VŸ–é°ëšÛ‡{V]s"‘IT®Þ\x*´h¦1èÎØÉ¢JÖbCõ˜E]D Y"] MG¸R ‡Öj‹¿Š?£`ºÀ'‘ƒ  bÝj³D¸lr\nü×¶³wN³Œ7Ì÷pÌIÇê+Záo× çN¬{Ë»Ëìã }CÝmÛ0Ä3ªÇùCê'Qn Þ;|Rq&ŽEÌÔBÃãñ¡^ëÞ^8å ûn;›Ñ3“Kû(#C&Pûdbt Ím‹?‰ŠWå.{~·Pš?ýá&ñ® –q_Ð ksƒää¾I.]®¿Ÿ>óÛ¸ã/ÎÂø.‚v½þæ÷ÿ«"ÎV›œCwŒv¸ú]¬‘Y—…IÖX§ã(ã±P¯Çybï™1Áâ°jw³•RPip8¼0#X¢Ú%".öæXb[ªŠ&Ùâó÷ìBW8ÌrSW:l:§yù>faŠbB/ˆjk ”ÎuÞ“q€†@#}±OS ì8-\[}ò“÷°wáv|=÷sÜ[[n¾¹òɾ7©ta‘ân09ETlÔ¬gL-¾^º€ûö³ÜòNŽ>õ¤?¯Ü-ãï'\F8Ezã­Go –M¶qm’¢hŸ„?ö–¦RgkضÚyJ–¿ðÆÄ¦t¡n i£>z¯‡**c¸[/ à}§¡Šjì°Ü8–ù߈(š&m4 u÷µOxózôT#æÖü.l“ãvj2”¦ÁÜ ‡y£™3Ôqìm­¾xöã¾ ióœñÁä:ùÞ;áfŒÖÒɰáù<ºcŌù‘$r‘âðãyˆõkë<=îùýÔGW a§;…°\N|Œ8ÍUü|§`”5õsJ“©•×¹NíÇá€imbFƒ ゞ)5T dýçª5â§s'Z˜˜„â_ëî\Ó¸NØËDhâhÅûÓXÈrÁy¶8®Þª'õ–è¦Îcò˜uñïs-65¢Qý¹?dŸÛ,ÐP·¥q¤»TÓ!ã×q´,š….bäBÏ‹ûƒFöŒ‘z™`¨Ÿâp ú׫„<'&ùÏõƒ1zÓ¶—9äKWjw”‘rw××Â@¶Êq¸úÌݬ7–»@iÝ™å¯/ØAncìÐxo>ÕÒü3Ӧݙ–—»‚P“C–@óìB«îã‚xIi¨ ¬˜Ek$ÅnÁ™aþšÆ0¨…cABWòõcO#cÄ ×˜›½°s1¡WÞ!®k0‡È[¤O]@ÕÞʶyãf%àÔE85žAW< ¸óu=´¦0¬Çç×Xx*«Ò’D(ù^U#­á¶âÕqh Ow`‰iYnj8Õ^&è½µˆl7²\9¤Ôf£ÔÖTAÆð ýú56ÞâëÅã·‹@æ{_Rƒœp–U. SƒàŸ~¡Àðù(øë¯ìÿö‰Z½Á±ÉFÉè]´üŠr¶p—ñ–âdá0"¸{6,×õ«6ñãÉ‘"M Fwëߦ²˜JfÌóë|ÎËyÛ[­ëä¼O¡ßûJ© JK´ÌÛòÊ"°Í¿tb¥ÎðÛo¿-ûžšÅ7m´ä½2qßí]ÀªÑÄ-/ÔŽ}ÍaÝä3'“ˆ€¦§ïa©¼î³ç4Br¯1 nÜ…Œ„©·ÖZs'³¹°”möj­£ü¦~áÞÎéQ@¾þükqŸqܳ,Žßçþè½tŠJ´R'¹Æøò|)¶½¸êJ)ÞY¶ˆÓ#¥×Î9*°QpåÌC…©¡Áß?â¸X1¨³.bÔßÿÄy>q¶£+g&˜€iÃ^+έ6›BÞ¼*ŒãD+€µ ö8 ϦØjþùæñA¶®(ÎÑ8R,@ñ< Ĺ£_º5î¦>ÃN)z³¿F¸æìðUhx'%ù'çÕ5ÿ|Íx›~稹»v±"ÿîbß6ÙýOœGÿŠKíWî»c𦹹íÕ¹6þ½‚"¸4¿6ú—#›¯‘‚ÿ9Së§÷ywž¼°®®•ë»Ú/ç äÅ"Lø’þÓ䈖¶ÄÚw.¬kSÅ»ã~½a^WBîïÜX"Ò$×ë¶ÿÙô³óa=ß°ß gÉD™ùUs‹aa,·×+*ë GdŽ©ôŪ šˆÎ¨Ûõ^`Sq„½pÓfçÒœ…Ïs ¡Ý°öV·z“â|î¨fí3w¡%E·Eaº¯ØCí&6ÛY%ðHã>“*ç–å庸Ï&Èå|þ¸ ߣý9ÑÝœþÙjlA,#[„×ðf9ÿ‰±aìN±,œˆ8¨O¯‹?õP´îúÈçÂ)âè⿱}Ÿñ(aÖ«×J4B ç :ÌíN1œ2‰ž(Et¸,G{Øyž8É¡Ý&î¦Îðb¯þVEwnÛ†ïçjÔ7áCq`­ þ>| ¿•¯Ó7é2MçÅ«DŒEÑ¢ ½;ãÄ?÷ëcoÉC4ûÇ÷6õÒŸFÍòóN§ ç­'üg1”(%Ê0´I£Ä„ ¦ŠFÞØä+/îðÓ‚KeY™qÔCø>4~Ÿ ` ûäLa)xƒ<óýým¡Æ0n,ãÓïîDŠõ’GkL‡Yá/›"ŒØ¯ÇLâ³ÂEGç¯<.µ’‡¨›@î•)æäBÄ¡BXoù4Þbï“~m¹á ÆjÝÀeƒÆ=Xšöó°;®À}S+⛜¢ÕÝPá„á÷'²æÁÐÅÀ‘ý÷AÞq–Ü,Ï‹|ç´©Ç¥=š[Jœ—:xcrcéâ ›;(E$ÜuÞª˜Â­ãŽJñaq¶¡F¼Š¹0LnÈ}ÓÚóþ¨ÛîíŽqK¸¼Krl5 ®C4"L"èâ'‰k|]0´,\6à(y%×´LxÔ Í¼å<ÀF>0u»|îð“Óç sr#”WÚùq>d§ri~¶ŸPz݇ ¤È©Ã4 !º:ƒ¦µ*Ûm›vÖN _ÔcÒ1{<\ͫ˼–‘]›þ‰QÄÕÝ0çÑ^ gñ #Žó3?Ÿƒ.ÏÈʶ®Ú‰vžÓÕ€´{|ðëxÆ}Ôe-Úl8Ç߉|ïÚãÆZð•ës}Ÿˆ{3…ÁñŒ àÈöç@eS aÎÜ©m„ãûOìuÃVaÃa Ò˜60 j ž]‰£øüü„良¯/’¹@TQÔBܱï»crh95èåúof?Í"V_󉮮ž+w{Æçóùí›×ÏÉ=ºº®æˆìÌZü÷×þLGÿï)`ÍΦÙu•b~~O­uЮ£¹eðúózP°8¤æµqɉÅìö¿cºn!H^]ŽsÊåŽ5™'ÚqôÒŸùg¤HšŸå•Ñ7®,Q౯Ó~~}}Mî·5F9@,,¥Uì›`îóç5~ /˜W޳ê}Š'áÿ¾Ü.±§)½Æ_ÛTtAÃ÷+~ÿã7ˆ:\Žã@çéÀ7öªêR8Òãâ9s¬19:4§T|J$ÕÛ€F\ÑóϾù|`«¾ɇ´‘O˘¹³¦†3û4·‰ Öq‘× 3³žSfï'ðñ,ˆ­îúûx:‰ÒV%rVç?›Õå;WÍ\©Û×êLBcCýˆŠ†SKSÄcß@¶ $ü‘œÒn!ÍÉÈDæªå¸¨»ÝU\uÏMûÔˆ™Ae¯BÏ6+¦·úw°ó¥V–ãóè.£µë%RölN×a‰¾0e`´WˆåÄîê”ã7ñQéÿ}…U˲€¸®âá;`ÿÝ9pa®ÐAQ¹ºúÂPøÉY¦MzS¶ó…½%\‘ca4·NÖ­v1aÍ®Zù‘ó¦ ] ¨÷c_·ˆÆ‰Ÿ“Û^<®‘Ù"Ëä÷!â-Ô$:ÐÝÙ@äzw¬Ð  æS¦×vCç}ز¸Ê›ûóô{Âó”éþ07 ÎCqÄkúøø@“zh—ó„KÄG•qŠöiRnX¤SŒ°dÏ{wk<˜Bérß²ˆ=–8Ÿ;´3§r¥‚âÜàØÌ%ãm~0æõ¡6&/sCI¿n™¡l’’q%FÕ`æ”2&ò>É’N+ÍñzÛ$ Š8„œ‹…¤OE÷%úé ?ƒh4sõ õöÛd0økvŽV:cnkþûf÷Y:ý$9ãYdw¾Õó"•ˆà”€ß‚¦Šö}ôPÞ÷š(ÎvŽçšèäÎ*Ý12¬ÙŒ¿¿~_bZü fwHÔZ`Äø:N0JÄRþúó+ž9Y”PìâJq6…YÁ÷ÓÙ.rw£4‘.œET¬ŸgÜwc`eçylúÌ+Ò=›;ÔÈ]SªÍ]€òŠwè¸4öRq¶,I¨Gs›Žª nÁňI÷q|cÛüzÚ¶=±Øú,D3WX›â ¥¨hÍïSr*`5–-šK&|\^âs²É~’Ç­8#å8¥ …î,"o°ääÁwšã@¾I‘ÑV÷ÄS¢ °sŸ¸»Ðò1#bK»¤„êPt.DÁú ñДÇCjç²-¾Ü6*ÇýÙÅ0lš…HPwü}4Ø÷ ¥[FS¬,¢e¬¹È/ñùõQªCÆõÔÞrÕ¤SУ­é8ôkêÀy ¸8ÈÞH§gWéϦlìkÓ(e‡©âûpqµÂ–ãÚT!-U!2Õ­\À;œ¼$ƒ%×Ú±yðM:pž-6ïìbWç›s(ž{~ç$V•PÙ?§ÂÎf¨Å!ï"ŠºU4óÏä÷äE›Kw­É)=º,6TÍÐÝ®Éù±øûh±ã0h8Þið+EÜE«áÐ4Sˆy»¯Ë§ L$Öò‚³¹«¶lî°€r<ãSð-=G£Z¬»—˜S 'jÝ'á7Ûø&ᇗîÄ‹áÈP7Æó)€h4̸TwæÄ÷œç§(þþûoœçé±³`Ѷ>Är&Ðæ‚QÄÓö}_ø·wÔ\Óp ™ü\.kÕÖÉ‹’ÄHC“’€ò3X⮑óôVPߟj½yp^/!À궬[ù‘ì.âÊü~‘"BÞ²õœ€GÝÀ( s†T!off5lÄø¨L~í:QXñùIøxl +híÛ\¼œ“Õòœ°ïo|rE1Æñl`~ÿü A8øY{ÛíÈqKt¤vÕéžyÿwœY}oU¥#D˜ø¡ì<«»Î:«*¶#B¢H`c ¸Iz—vpªÒÂÃðî?Abé¹$]¢ÞÜS¬ï^óðr´ÖÌ»ÕkÓ™yUJYÀÐ}ßÖT<QW>¥‡‰”íœó`!Ml¨ÖÄÛ÷®&Ö{rVÖ¾ï‹Q=Sö€ûÁBNB^œãðÔ&÷ÛòÃÎ8OÔ/ñ{uí=úw,Ãì91RU—þfî¡Î0óú-¥ôð»VŒÁ53àj¡M³9ýÙ‰ˆðõõËŸù—ËQmùñHÓÏÊT»øüüĶmx½^=D¡ïâlöžæ¼€ã‘šn‰˜iyyßü\RØ0+dÄM☊´†¼o z¬Ãsz<»«¯Ó<ÓñÌ×`LéIÖŠvÃCÂïm³•vŽæ|"ìÖv…´V@vKóy¨OÀœ~(®.SÖÎ IWPoá±ßWÌ•÷in:úfxe\‡“Föœ7£ÌgfÖ<5˜ã>‰l±Ýù;Ítg&JßèEo=¢¾>æ•}QÄÈhóz+Gümy îÓ»DìÄ0»K#ùÎé5 ªÒã–MŽc“}—j¨õ„¯,E5ópÕ˜R_ì¶Y_ØÒŽ"Þþ@UÛSŠjµ= <æ ¤ª=í=°¢‰šIw7†5¿1QXÌ:V&%»A{ xçî2X[;–bhWpCë°µ‚f*©ê=ÅÑeFGÀÈ,!_J]þlCÉ’Ì&ËB@¦ÔPgT[…M‘rî–,,¡©BkD±åô~^N¦Üc?ã·á}5¡Víöpå‚ôyG2 Œ– Ut¦©@ùúÓš<­98«`ë£u [rÉÀÂö©EQû{4 ÛàT5y Ø>OD¨{ ¥RѸڀ°J0 ý©™l´É)TÃ}°ñTV“ˆKS°³ boV$4epˆ¡Œ"£ª³IH!™4ÓYmêémfÊ5÷usªW<×,‹ÍƒÎ Ul¯5@"c1'¤ì{¹2𛇍ƒ+ìç¼-<· .!T”ÐqêàÚh´«×Ÿ²„;­µçêÏs–ͬkr_œá±Ø,µCÖv–™Yó¶çî7ûY§7¼Ëg–ÊCW•Æ|NZƒm"½qf\®8¡YdƘ†­áo¶¼&Ó6½.~ ±h­uﺙÍ%"o=Ð¼Žæ}öÝcË~W®Rð*Ï%Ñ^ 5­®oµ:1¹¿†È åÉ›hñËÁ¤{Ô~KŸœXQ¬šÝk0£Øã¸•¤ûMtà&¦qI‘” .¾ú'{5õ$ îÏÒ½Rüðœ4س95ëu Ñõ$Z«ÑàØ(ûÍQ¼÷ŠÒ)õ®_o ÛÏ”Ã3…ñìñskR}!ÉZ¤5p%c`fѴȲ|š›âú&.cz¿ up"Õm¾8 çfö»ñ³„+t&ÖÕ&²ññðøç:½¿À¡Q,Î@ÍnYºcý€ÕA{î:Áäñ“ï÷î§°¾ýŒWÖÛ:!¹ôÏš¥;‰`°zô$üàT‘›Q½¯Î¿ûÁ|þ]³!ûÕ&8³F®€¥;à×®»v¿¦óZk+F7Öó èKκhîc^Úc çç?õ{Ûá¬û·æ$Ll<¥²¾É€ubMÎà{Ä/ €˜ö ‰sŸ²µÖÌx×YSs:¦5¹›®kOƒ2…äEèѱÂ8Ys¾€k¬LØÐ=íd³ÏPjmØ÷ll³ Ö9«GûÀ¢A&Ô)•5u}š\N8Òò˜ôíù›R‰G¡jÆ“ÉM‘ÛìµïIMʯµ™o‹Ä9«]ª ‚)sÁæ šxÓ:¢³ìçkÜg§°‹HOëÌØXÏÂþmy´fÀ% Vgªñ’7úžBbIÉ%Çâ24 yÄ6zšO÷ˆvŽÑÉeñI10ÃRá uf•h,ov¶uï±L„¼‘§¥©[4„Ÿ‘ž’¶œ÷´ ñ¾j=°ï;J1é¦=¿ÉYèc0¢:ä²Rìkͯ[-ÒMÜSÊ€&Ôbéϳf|ηP'ae»ûœ‰aÏž2P™‰¶~½õDãŽW18Ðjë{²ù¯¥Îªz+X(å ïdYF7…'1ÃñÌĨ§âIÑáI‡áù4rí¾H—çOs QÑÍð#™1|û4\V)›ìÒ£ðÔCšTKg¥„ÒÔ d=-ÓåžB©ĶF]&]È‘¨uÅØDQC¿Žêõfr¦õä¸E~sƒlÓÀµí{BD¦Ájm–`G"–5DMà ä¾T¾Æ=5l^ðxl<ŸÌœœ±œÜ×ÒÔL¤Ö;&˜\ ;ÁC×ý‡Dìyöà%¿”äMIò6È?×Ùìþ}í}P}x0t϶7³$•'`—'™>”ßäf+€U;s˜úþW‰^7w_¡—Ãóabþõf%²ÈmÛð:JîÈQ¶-TZèŸk9‹½&©7ƒÙ[l¾³!½W†lϰ„¡êZ‡ÛòŽ 9$`N¨u]žå‰œ3‡¯£v y°Ãä8”òêÃÇR…Fš`02y¶½É1Ï ;Ó¤Ûa7К½ï”îeÃWžf‹ú*%䙲¶2YZì™ÑˆQ•±¿2òV!‡:/`1.ÓSÒ[9é+°óø¨Šª ¢„Ý^&33äî/³¦„ÆüŠ™ôƒçmC¼IG‹´Ãùžãáï¦w‰ƒóû»2y¿š0\M"Î,+N|ÁºÀ±ý} £H€oeM)¡ôæÄòò&Ò‡ß4úß3œfÃú;VÜwÌ®(úÙû쎉2@=¼ùÍæù^ðäŸpÜÌ’Ì·ï#Y|º~b\ý}Ç"»23œMô¯|ÒðƒGAPpïimÑýóÏË…tô;¹;yå¥ý ëêì…tõ{¯Pÿ«ëù“7ÜÏ!­³MÐQV™Ê7ý“hSŠ CK,É1íí™l­ö¦èÌz³= ÷flÞÎ{X÷¾ÒÁÈ‚§HqJHlÑ9îG?„&Ùh[§2‘^¨Dæ‘âÏÛ¸ö EuÍ¥¥¶d½HŸi3¦O ßArï-íņ9ixUERIHqBÏ£V#ó:XH%!%õg6ù57Y™§ø5tÙ ó"í ƒ~ýuc\z¶~ÛÛku#›I}0UE°#{sçAµ€3©l›ù¤P2y\=úT¿I°<Ü/'Íœ½¤6¨4ûT2Ù!ÕR>Ñœ»Ø X›“²)ož'oç•1“BÃÞTœô3pi˜€»·TrF"Ko„¿—' y †ËùìûÔŒA£N_ ¹½Z|D¬bé„É=K3ónÄÄÅÿUÝ“Š‘’%ñÆpY 6Üéu…¿N,%êÁ(6$ÐØ¡œ ­.u{QÃC–èVήŽtà+eÉlG2û21›”/o“W“LàB²ÿ§D–ÆæÍ>dùøø@J Ïçò¦è‰·‘Z8ks5<. Çq §köz¯k&fLxu{ g¹Ø³©‹ÝJõpનUº5Bs€&LÝ»äð-mn•çëåôM¹13Çó0“Ëš6úGAf;_@fcdýçŸØ7ž74ÔL>ر=êñxà±%|~lØ7#xX-b+Î yÿè xJÛÂæ‹ôÀ™Skµ$W"¯Òÿ¢þë6/nÅÂ4ÖcüüÌÀéõ.Óå°iV Å36§E¾E$—²ÎtRÍ2´y0?-ÖmÜ·«atÈg%ÔUÝ6 sMÿ×§NZgüÃ<²®{Ñ{ïÖ{"É|}ûóèuFÎÇqô„À5€I/d˜Îj$AÅÇã1î/^¯¶m3ùê È|½^]ÚWëáß³`…„0˜î1:½‡õþqÅZ°ëŽ…?ÏyÈ2grÍü:w}}V¶‰ˆôÍ;n^BYHb|hÂçcÃë)îùao’›™˜’›o¦`YÍhª03‰Œ"۪Ş7[S£o&ÂÆÔBG"û¤¸\‚o íšµéá»ÀÞÄÉ"ï’÷Ö%':gZñ|á¯@”3kêîs¼n_0Š®¨—g:åO öú;¨¾;P$¦héâëwHôÃì'pæ À›¯U$uÉQ<„4LþÝ4lI„˜™3–Æ1h×àä erjþ*ﺑˆ/YU ÿsÿ܃|ï¦è—€Ìòo,/MSß…éÈåšÙä2‰H—ZÐÿ‰¦Š6qœ:éBd—Éôõ÷ÏC)_œåºg6×l¤xžàÙmÏoÜ5ˆÕÞwÏ×µópöÑZ¸…áru¿¥±¼t$tºL,X¡²CÂ’0йð¦rÏÄ^,¯Ù êq—ijx˜R/²Í/lëÓOcVmàœÍÃÓjÚöm³&¾Ôi2”ô­ØH¼-Í0¤ô€ÂrJ¹6¤-RÆâÍ›“ À 4àhÇD{§EÚ+ðé&G˜ZeÔvâKò²–ŽÎæÈIïiCa·‡¦00o=U0Ìz5bÕ}hÌ…Qè¹aöœæ%‘ ¶2y¯ 3KGsO4µ„>KÖÜ’É"©Xä‰SéïÑdfØ:I<ÀU7mw&!+à†êÃ#;)öŸ&#H¢ïU~"öXÍ錶þÍ{ŠýëMÔì.LéßÇ6@õ,¢6“n ’íÎÄRÌ!Cªûïñæ†åÔÙSâlIføã8ÐT-è`’´’$÷M£·‹*£é)|Ät6†y¿8hÚÔ%”ðªâA%nÎNÜêu^"ri§™œ³Ú^Ì0“bcZ5µÀb6 ûãá<ê ‘vÀÈ”èŒòö0°‰ÏâvgÕ™œ!¡³2Þl ”¨{*ˆ ká!¦í’5c#=‹íA²-µ Ê4IãŽÓ _¨“Ü¥K†‚Šo¤µÎØ"µs1åÉ/ Æø‰½™LÄÎü´:Ö€¯ÏÏjxÎÃÓÝkŒ`²æã8@H×5ÞåŽWº™2§ Ïl±¹~0ÆÌÄô8^8¼ Qk ÕCJ³0€H·~³n™Í:‡æúšV™™L– ;€`µ]kÛ…KïxØá0ƒ¸ùÏÞ-U2'ìyÞ !ìi|IØ©“X)!mæq˜s65ôkœ·¶Íäò äRA2E ð j«´*Áüú*Æ}Ë™9; Y:Ãhíy3ˆZ÷0 o3{¾eYãóz ÆÓy`9ˆ Å«äþÖtâà™ M=ýN¤¯ëvdê¡ W)éáIxžvNØ<D¤?‡¤œkñÇãs‘k'fØ>>úÏÔŸW¸GŸ…$´>Äï©z}oBøˆÿŽ^Ôôˆ—ófI’±¶“ù1<>“eDZ+„¤FvìÛ$ ïæLbUÉÏÞf¾K³ú²uÜÀÙnì>S‡×eÐ˴әЧ‘Ôb8ã½™”*€3žÇaÏÃ6ç!±µ°“¶€Žáã{t´µÖf¢Îò:E­ˆönêjéIF-mýÝÚï³V Ã#aþZ€Æ ™º%ðž‘|"hI]èþŸX;sÊÚ x\™ª/L 89Óÿþ„Á;Pê t8§]I®\fîìŸ+£+V×ùwÍ [§Ûßxh]98e¢7©;¥+Ÿ«;ï«;&ÝÝç¹cºÌ¾¿³FßXcßÜ?Âä™sË0#¼‹!që—õï0¬®~ï­TïæõÎé3wÉïþ4€ß£ïÊ0þþ}á[3½ñb4Òëï[MŠÛ- tG?¾z~¿g†]ßß+/­ó´k~ÞÎi‘ÆêoA“w™©Rƒ!$7št¹dÍÌ´ùþ-0-f‹3`q–X¨ƒÛíÍSb¬x9>§Ò,EHÃ’04¥zB¡&·äÒ.%#%—9ºÉ©Ð’ÿžd 0—+µKvê0]™gãúÑHC¼yÍ üÝÂgõKy|»Å¹×eBx„G&Ÿ°<{| Á¤Ü.ΰÓI*0¢Ø‡¸~f¶Ù±éL/iί1©àV*j+ÆxiY’ŸÂSËäY!m4?±QENœ%fh#”0é÷5kÁ%mI¡™1ÌG³"§Ô%4ÉhJ–<%Þ H󩺱± :¥‚©ƒ@Æ^rÔ“‘E¬i¯‡ #¡¼Š™•6O[Êá$S·©¸©¸±ÃÂMÉ®YÓb)}Í}¬–ç”ÜÄ{ö™ƒKŽ'w:²ï%”FÞ¨¨UºÄl0åyad™Ç˜§÷µÙo4ä{6]Ù€ê²d“;ð®7ìÊ@ÃC8¹¬Y"EÏÖõ`ˆŒ2X&@™ÈÒ»DÌ*!õ§Í$•æ‘ #óÛh³û÷:"ÄÃÂ,Ñ<ËÒ% P³:{=£Víà’%·ZRÖ†"Šœ#!U{MòV!£HµBžŒŒ:ý¾£h~ºÅQ Ç™F‰‹T\¦s9aÌUcJÙ>cÓþÌÔÂVM1ÛiJtÃê¾xƾ„6glœQ|_8Z@ºÝQÉlÓÛ׿$Z ö–¾ ¾xb`‘Ì{Ö)_q^:ÓRÏ5D ‚&%……2Õ© *9km̃!šT#ùÖ<›:¬5Rfì){b­vjATÛæ GÚ,<£˜y{°2=-Ò!͚˞ò.30!@½’áÌgÑÌ”™‡_ýsB–RkµË‚c±º÷•yaµæ©¡ 7”«^&@²çk=×)Àª0‘èצ=2lbæäDíV6kÝ–²Ž=wîâmÖZ±3·r&@Ò”4mŒóÇÌ[êŒ*Î iÛQ›.7Ì< a3´¿òxS¶C!k4ÀUÛOdò­$n=™›™ñùù¹CJi$ Ë ;ÐT Œg>€êÕÒL>ÅÂ# ?9»>04uo7f3Ûwö•5oÎ* &FZQ Uhê Ã$¤æ–AÅhkÒÙ?õÕ¦ôáÅ: ¾gaÙ,œ@8æ.ç³å’»-‰7õ`pgûºYU—2701òÙlY)mƒË­g71OÜY¤]jGÒÃLÂG5>`½q¦%SyXGžö£äÞ` »¯M÷ôaûœ6صkÜ$ÎHó:4æ¬3ºš¼ «, j0LbOó¤e&Wlôg5%ä4[sØY²mû9϶‚ӆͽ°¢3o%1C{÷é1ŸË Pò Yj…ù3tÁ“Þ¤é·8¼ ì}ˆAöÆ×€«2ØUµ¢Ô£'–bWhUT1æf™¾X]ÁÏîE¥S2ït='*Õ[“¿ôY-ê“ÉÃS û]Ò™XãïWyb„²ˆÕnä½Áig <¤Ñ9cË\ma`îRïmóæÚ+²MÁ™@v;UqI%AÈÖ§1 ¥Ëcg)øÙu#Ñb1±}Y\&?+c¬¦NŒ™ï}kæ#z®ÙϦ߼x`éMþQs½/κc§û+Þ ¹EFjò™¥ƒ×y ;¯ïs|Ï,ùÕ;KPÊ®OZT­5H%4-Cã‡\HÛ£^°ä¿U^{åÁ;Û¬Ìv+–Ô5&ûõ0r­²¨_f†.3ƒû¸Nž2[U°~8ãÉê¹£U:x‹V³K÷úûÇ:Pˆ$l•“Ì=®ÿ)D«ù@#çÝHGÞ°0çE]UJã,kþ0¯·mÛ&\'|[G¯”ÌmÃÓ§Š9ï~ẚ™ÍÀñ±e<¶†£Ød¹µ{†+–¦‹“›Gjš2 £h¨€ÚBkoMFk„}çe_¥:*Íož[g&Ó%0q¦ÁaE;»¹O„¾gQÍèêÙUÿ;/¡ܳ×î|wV0à;MY¾´RJ&¹ˆMp¢ô¦”P¥Lf‰+sÆd1á«°‚4?±ÈÎ ¢ï€¶ï@šóçã 6Îü¹È'¹tóÝÜ÷¸J [aÞhxÉÜ£ñ?Ýw££cþýú߯®®ÏørN1¼3Îï{þ¾yxö/8Fçéƒ]¥tIžé²¿Ã ¼’ _cZœR7ÁeVo""e«õ‰«i·×tÕùýÃá>­pÞ®Öt$­Ä4¯¿Çö.>ƒo€¥ø À~.Ä1I¤ (i—¦æÆ»@‰*xòFšÞà »±rìû”ì Þü¼@«½ù Ê–8;…·‚25Ö­÷ÌäZ÷šÖŒä,žHì ›  LöØßF=¼€ÈÆòÉ.Ûð½UÍo­ˆN‰¹ uia"tï²6³¶ID*( Ø’ÁF3Kb?#n¸kR€Šm{ /¤”QžYMB=ž=$ÓÁ$0_ê^oq´¾¶#9mœ¥Á´Q©îlL½Á`ö”JOz3Ð|Þú=÷ûQ”bàÀÊš6PÕ`àκL>ü‘Þ§ôT>^SÇSâ^þ|ÌÆÊÌÄ NHÉb•ãlWe4)ß0Í5ý¹Ç™ÝÓQÝçIßÓ¶û€ê@ÝZÊÐqö^טA¼yë¶½J¯‘kµ½øóó³{ö uÖ> e؈“oîYÁ"aTK=7É4ç=,|ªfï±ù5®<„{déÊÌ–æ=áˆÇ眭Çq˜L0†¾Ö”SÿùãåxK-Ýê f2ù§‰¤†~sEÓ-eb†dÉø¹×k ˜b@2Xi‘bk`°¸ébu†5%B~°™ñ¯ hf|Éyg‚„?‰ ˜€GNxìÿ|¥ÝèÐÐ3EæìéPÒ“ÂȱªÑ”Õ'–iË6Ýo‚R-މĈ*™âRøá»í€6”Ò̤T´›Lª˜n†ÖUšÜD=]q˜÷öÙQÌñ°£{\¤d¦|3Š 5vY-Ò?m›R‚ ½%9´Ö ÍÌòÊ}ói& µéw¤:0§eÉœcFé´ot¯.iµ?UeId 6H›6 šÑìn’Ò¤ˆÅÂ6¤¥ ±D¢7Cà=®þNz•²xfÊŒ©d ˆ]"à *«¹8ùä^—ÈÐ3HÐ)¯ž GÞhòäCÔVÅ…!¨.¿û`&ÏNíÆÛ¸#ò"mÃ&æßƒžwþPóõýŽw8pàm›ÝˆwÜ^i3H6¥Œ¡¶r)Ãçk޾9yα!xC9% Êh{ÂÙftNÔ£ø4ß÷¾xD½åp±844ì}JÒ&Ö M©«ó¹þl×lÉÍ%ŽAñÄ–r’r†h…´ÁüOP[%ÇzŠRì½ì4Ñܯ}oà<½TDˆO’cô7“ïÖ£aß“ûg™,£‰àpùÂqÔáÇ[Ó‰¡ÊS‚Þì5É=­H™ú=Óy@ Izb‚Ü”22jk8¾*T’Úà —¦xÞ2elLxÖ 2%d5£e$ÁW©€v¯ÒiB‘±÷ª×¹ö^,‰IDQ«3‰Alž3µX“Ï´€ÔЙG"°œ-Öa{€‰X 6Š j –ÁæÍï`ƒ‘ðH›Mv¿KmÖ`'ó-kPh«öv<%—· ?¿ðx| Д‘·Ú ”ЂÃI<©ˆ§:Ê=þb-mÛÞ=‚J­æÿ–]ìaˆµŽ‰E,ƒZQÊ´e´z £Ñk. ß3Ëz…h³3ÏåÉZ›ËlOž™Á9XŽªx<ÞlÛ=å>x “b“üýñiß÷¹omøxd+66_—ÇM=ºQûÇÇR6#pøz` [Gi ¬ÐbFéGm {cÿx °Ê ã« ² «+8™,1Ò׻ܑyñ5ýµ* IDAT©þÑ jUT1öÕáUk G±Ø|¯Ü¹‰¶—6†„ ´ÚÀKh–3}•3†“l#x¤UùÄþ€uˆ¨Í½*a1ˆ}݇ÍÚ‚GÎØR¶‘”4ó"`£Ík÷†dOí°4`O &csÎxl;ö=#å(%<þÜ1ãóal§°?ØóÖëXcyOV«ï=€€(ÙðA*Õ?³ýë‰3RD°ùÀ¡IE«à†ä5T)G0õµ-²:"ò°žzݱ¯Ìì«£éd›üNmX¯fïÎJ>º·ÖŒ âÏ"1#çÔï¢ÖÇæ}ërPP0ĵ/[\2_UŽ@)45vþóõò@ŒÚ ÍÿùúŸŸŸø(xlk`ç3CZÃQŽzôF˜‚|Ú\÷Mñ¾™­XŸÁ9AÛH²$"lü˜pîLBΫÿº%"heõNÌâ ~k¨b¬ÎÍÏ›=íV¤È[ÆÇö%¯¯¿-UÛÂ| pÞœ2R÷Ÿ“ÕƒM+^Ç—yÁjøºe1ŽúÂÇÇæÙÜJ" ?®øœD„_ÿ|Ð(˜7|}}A”Á[å„Vlg8ªB«¢Èü¯23J©8Jƒ(v2ñ¦{Ñ–)±™&NÑÅ]úá4ó’©yIa8©§O¨OmTP›Ù9¼ŠÉlÂÅLÑ’{ÂÔ}2éx£Í®ôˆ±çKéß™1Ò'„t–Bñ·ÞVWÒ©Ø|: v‘Ö÷ƞѕb“ÙçëÎ[(¦ÞW’Ä(Ì¢Àîïõ$sïsü\^& Ûµvý{Ϧ»´¹»krŒˤZ6 ÷“™ÞŒÍgFˆ )¡_ vO“‡Ñï0 –ªÉ€Nk”Ýiõw¼Þ¾#kMðòÿúw¤‰ïχ¾±­Þ|‹.<ãfÖä€Fôï­™K©î/˜7ìà×0Ya‘÷Þ1 Ýwóýu•>ztð½7ÄuŠæ™57ëý¯Rmߤ‰n+9(Ê«ŸÜ ZQ#Ë!º0n8|§RR§à[‚^ŠA!u£h§„ofÐ^ÛÑ`Àòb*?ÍÎëhþoÁ”ÂªÎ˜Õ ´Ù{Ò4SÆý½ ªÅȫɬòö0ðÌ¥‡ì~lñXž¼•ºÌ¼>TKp¡0M×8EWJoÔoÀL3˜†Ó¾™øäÇ2ö¦äÍ“.`ý0g—·‰·54mr,œÖƒï,¸•ÀÇ.€­(…0Mdk7îWL |ÒÎÉ –m M] ']ªI‹'&E:#yÁÝS2”Õu¿é!ãÀs©£dî`X˜Ðx _¤(Æ]ær·\‰{”Y€ê·–<ÓO!ÐâÀ 2„ܵ4>Ñ÷ïgš©3àDìýšÒ×› kÊX[¶(DŽÚ.eßã-wVÝ, 9Õ̀ϖôÏ Oº @Ò\þeiŒE&Fr7;g4öT;2él0Œ0Æg—~ÚdÕ¤•^{hó–!Á²#om$„Báÿ¢I,,wÞ£­Ô÷¹êò,J€´†×ѪÞh‡:`xÙ`£šÙ.(¥îqÏ}<ûD‚œvK¿ôëÒYež®×tM~ Ó[€Ðˆº¬×™Ó‘oæô€ø¦cØtöï1£ï& V2ì H¬;Ÿp'_WÚå õºšófÁL¾G«MÅÀƒ¢X†´©ԜբÉý§x‘ 5´Z‘’É#U5þÌA!ýÖŠ"|S:Û€ia,FtË“¶š ’§iÝ*e:ÿ³Ç HCÂ;Ã<|ô¶Ýš»}7ÐàñØiø|°õñØÌã*g÷6ï™<7ú'„¬É>ŽŠçë…ž_øëï/¼^Ï—ùL•æ®´uFÚUMt–)ÓÂÄèƒíZ–óî§@ñq< ´jÆž¨Þؾjµ@†Ï›M³Œê,I;Ÿáóþ?@¬¹V›¤²"—5öð“îÕ8²¤d wH2gŸÝàÜJe~Íæ¥=aß3¶Ç»WûmçäÞ‰ëëE½1fÙ{Ú0;øy®çfÉÜ|-g«™`ýùçgKÂ4å¬~A; ´{Õ{Q÷çlfõÏõg)å¶ÞlíÕkñð<Ž7k’¥¶¥´¶Ï¬‘êp]÷ßc?oDájsØßOx\íÙI.¨ËpÐBÞû׳Oõ]ÿ9{ôÙ5ç7¯ò¯ûOtŸ®%AqRHÍ!L±NN—?¿ÔÖÌãã£Ë½çýbS^R çú$!²{È™*€™{hQóšðh”2¡¯¥œ3¶O§-÷°”Ñ3æÚrTêWX¡Ðì¬ÈÛn¾$û¾cß+ª”nùÖ,'ÂþÈx”{y¡ˆMûÕ Ã“iPÌ&Äü 1¬©‰‰Kÿ;Ž”(›!ª…Òš²EvïÉu7½gZõ½QðÒ 4Qš? ¥Ú~ Î 7Ö£ù*JÿÒ #xšžÿó¹9Pî „‘Å. ±Ï§Hrù`3IöŒf28õdZì{z­Õ]µ­û¶y²%ƒ©Ø`;§©¡ÕÎȽ2W:{f^°ª§PïlÀRmýÙ¦I¦ž,ªvý›˜ÒC!¦úèCÛ9Y™úþžÀ£Ià°oæ¡¶9H²o„”6üùù@Î Ÿl{êfÊ) V-*„W9ðϯ'þúëo|ýzáë(øëï_øë×Êĺ:×Ûrá=4Òíë{ÞLW½ÓU½ÜH\3qe5QuxEýi`g»•1”3Æ™²1w"É4ž³Äæ¬ðmÛðx<ðØ3¶}7aJ];B…ÆÙ`EÈê®>?A.’}ÙSÍî!žÑ0Ïß¶4ž3LÖy„ZÔZ¡%.Ô0O­¹¤^ø£ñêë@P^€¢ÚÖaÁ\'Îòµóº/k}5_tá·¯9‡•S( ÍcP;ר¯×—E²aË;¶íµüÎ7†S—'f0[âöì¿y®ËUßÉ çЂ0ÜŸßw·c˜RÔ×zM—tW}E]Ä&çm$ŠïËĦ$3ÿ5í2A<‹ã s¸í &£ìu ÄÀ¸V³DSÕBbð’R÷ù Æ™¯¡°tï¶9¨©ß㨼)åY“}½­i︙!JØ÷Š}ÛPŠE“r7¸n@"7wTlBضf4²v „¨/ÆUÇÈLZ ŽÝèóÊï§Ë°|º¤ÚЈݬ´¥Ý€teÄ8…‚ Û­3³MK”\nD“tîT‰)™œ !Å·CWž™µ¶Ë¦ôœìwíò¼›÷Âj!ܦËÝIøf3ê`p¼0×@Äï¦0^™‡gúþÞ}¸È2ý›>wmùÖœûwX]óÆú]úß]AvwV(z£œ-ž¿q×_ìw}¶®€˜3cêÍóꢘ¹ûóO)“s ÞïÖÄ^;ÿëqýLâ·¯ûÝçýÏx¯ÞÃwï1LßÏèÙKCU‘÷Í¥¬©OEb€ÀÌ çË&0i7¶,|jך{WÙa MÎÓëäîi·Æ€óêï×¥ |¹&Ã$Š£ðBè Óuƒjö=Ì7ƽvĆěyÞ4 ¡€)¹ÔÁ$&ií´ûWˆùþÈÄr5‘V/£a8Œ~Ç@¼HG8È{€B4/óýd> ªNë'ù¤_1Ì—CncÕúþ¨•.¼ EÄ|mº—Õ éðß aö¬ó”=Þ§ô7Ìî×a:Eµ{Ÿk¢}t.L{Ȇ,2ÓþÂæC&°&½U9¥8Ñ[hˆ`„nM䵕 yhMIìñì(®ÉÞšF¤º pxž¹¿•ÓÞb%N®̨ÎDS—Þ4% ŒŸ7áý€Tg`åø95)Ã@f—?ú5:Ú$µ"½¸ÃVTS)± KÁež.M¬É™[ÎxsË °Ý_V¦îjž‘6hör œLÆ:Ò=¯§*”J©}±q²8{Q÷Òj½AŒ`‚Js&™úWÈÓEm¿ŽffÖÎôuǤ/ÎÈÚ¶ îɃ;—@šœ$Z¥ÄU`ôÌjë"ohZ±=R¤7a 0öáé|ê5§ú¦¢^Àõ™{V\ý9y ©x#¤“WÓ,·4k‹ä‚ÞÐIx0©7˜21ítb^9 Ÿ‰Ø}­6l;!o„=1ö‡1>v:þãÏ?ðxlÈ)áñ0™RÔÑÆlix¾ žÏ~=üõ×_øë¯¿ð|xÿ<_øõõÀ(Õ”.¡4ÌÒM©¿žS~G8Éè;ÄåU`tÁ`wX“ ¬H!”îÕy`Y1wìû»÷«ÿºcºEt?@×nÛ`l:Oi‡ë /³Îe÷Á _§}ß±=vlî¬ Pº¬¯æ$µðYHlRÁ yÕóùt 7õûlç'/¦û¥”^CØ9Ý:à?³ñúPŠòÒ«Ìv4«w3_zã¾%˜·÷µwö¤Z•OºzÓN×oö»š×èÕZ¸_õÄñw9gKÃ]Ô.üæ•;ƒLÊ=pgëŽ3ð>ÿ¾³Ze1B¿ &[ê÷é^Û†n³qÕw÷ÔʼnÍ?_Ës‘S^~þlšßêÕý—Îbcš~ÞUßÕ™¬ñõ`½Cvµ‡y_h­bß÷κJ™bj;»¼ÆV—´vôµå–i÷m*àÚ‘%5Ø‚ožj$+˜šQÔcê¥c£láωðQ¹n¦® ËD˜ÜH  ´êH;µnÆg‡cÓÀ«Œ’?? 6¡Œ"+êÕM€©{>ÍHi:”†Ö ô®‰>¼-fñÐwÍéÐôv]}2ÜÏcà’ 4¼„0 Ý.z„M6þ)3Rÿö0Ý4Ýßõîߥ&ÞƒíÛëó]ãN3£æ†]ôGÔÝýÓÿ+©ûK|™Pq–^¦`F³A÷`àO&î¿Ø}Çv»“MÞ1’wå«ïÿw¢«C¼ÉcßÙW±‘Ï~ZWïÃÒ™®¯Ç‡ØO ÔwkìJ®úFëyûg&ÏUôöV_J#ÏÌÈVjG’%|¨ÔÌl5'pc3âMò$Bòïä¼ͯsšÞOSožÕŽ^ÓhÒî=ë)mV} IÌ]ò¿#Á8Èò vg IÁ&^ &÷lÍ Ûá÷HÅŠö„Ãê`Ý3ƒlb’,uy†ˆø „&9sÐ{ÃΚT £oj«¹â”²9XOÁH»ÞóR÷3‹À"w ' £õŠùW%D"¦U橦+¥^‡uÀì18‚x^$´øúQ$eÂÅz·"=Õ*€,ÁHÈ#¿ÞÁŽVm#ɱ§(òÂÒ¦)ЃŸÍ…ÎêñëL“ÿ¤³·Õ=¶ !hJvÏDÍË$$^p©'y<€ûôp¼˜Ÿ³Ôƒ,•¬§ÓѸf™ï’­iñ¡ å5ˆ¥¥liˆÂî%Å&Ù#“X¶fì2"õ=Ɔ…¨䱄>n!¢È™Íç¡[èÒÜØšIÆq×B¢l}ôk@™Ý£©3=a¸ÚûHd¯+Z{R ÝÛ¨”$adaà\ì˜Þ »w•v)¯ytYge«É’×Ô7 ’P ”»4~ÝÉ÷„çQ èC%Fq¯¦hîUáé£q%c y¢šIMðs™{O~$êvD&Õ³ï¸/د'é`o:‚j¸z†p!ƒpkžˆå)n $òŠƒ’íE`ª³·¨§á†7 ù„_;èi²­Ö%T—õЩá{æOçOO¡¼¨³¬—´``5±èPAÞF¸Ä,åä4Ã@7f eEf gÂþ`ì„ññ0cèÏÏO|löß û¾/ƒ“ÁdªøçŸð÷ß¿ð×?O<_¿~=ñë×/GÅ«X²_­ÆŠT?ekðç`*3“àh^̃Úñõçó—RÕjzÿ}ýkn;pK< lu•êÞY°ÌMýe ÆXk0=±W iíU NЏg{Ñ*cu–yë¦ñCª8Þ{°¯Böù1Xa¤>×Xt ê e¯¹f;˜‰µ>Þ&‚Òªû™`?ùDPPҖ̓T-Tƒ“Õ µƒ“pFïH~ËÄn»Ã¾¿ù^çÿ$6¶N«íô\Ö7ÅCü9ØS³Yyë>Îïµkk ûc{ž+pf[¯Ó¨aÏ}ÚHç5 áÃßOX!äÔK¼õ~¿B•ýz¬öW=ìPDÑ·Ê“;Œ`¡¯ìfô<ÀtÏmcÃÏ}øªVXÀ¼W\Ìõ4C‚K©k7¿¾¸žä…•SJ©×¡µÚþŒÑVŬzïÁÐE¨j’^Þ=#'óã5ÙgC¿ÃU Oiµš*eB~½¾lª ±`KÄöMM¤¢´Š×« )#o„ýafÿõ×1¡“#Õ/6ÊszÝøK_ üžV6aŸ›ÇjæYh¥¡©â±m`H0¦0¢óÔ­ÙS„=Í$¤& FrÃÓ± €uÞtEdaÙûäˆôJæsjý®‡Ö{ZŸ®Eø ½=ošú óæ®I¶‰YZ ˆ¿ÕtƒV†ÐO ÈÀ©wì±ße½5û“Yá™ò9oœWÌhsNÌÌ ;ÐFTÄŸ.˜v3€µ‚Z0Ï”ÀïžUG—›æO?{pÝVß°ß³_ií¯^g=ÈäG°íê³FÃu'_ü dz‹w>Vߥk^ùgYàݺ¹œvÝ·ô-ÆøìQvg¦ÿ<ó Œ…·³"h\µb<¥’6PŶ6¶´Èå… ÜÌR RÞmêD¼0°” [MÝ,óìE13ÈÞ×ûÐC¦VJ ¥ØÔ¶5›P•ÅäÓv+ìêac§æÍeë’nO­ªÕA¥°@„ ö©ðˆvÞÀÜ,¹K/&õ³ÈuªÔ>Œ!l+„Oa,•(ƒq@ÉHs´„ÂDlÍjß‹ÐÙ_>X,GMBªì0Rêì˜ò½ ª¾ÇGT¼5J!oë[Ag¦Ù„•8„¢@Ö©jR,5”‚‘HûY,¦Æ ¬ŒÃÙòm~?&]ˆØì±TÏ)¹óÏõ(³t Ñä#ƒQ• µ¡AñÈ„¸K|Y¡ÔÓ»Š{¼1dºá©´Y¿$c@ Šý5š7Ú•X/ì ÃJ¨UýΆŸÙ\Gxò£p—Àö{^sšÁÀ«ýçBŠ©d`eâ„R t5DBv+òtAñ€¡úýϰ„D æ=1J³}î¨Ul˜MÉXMZØB@ò}íñx@ð=óüN ?3 ÎLÔ8Ëlÿœüw¦z®ï ì¡©X°Ê⽤*Ó!C¶éýBÊ„mK–$÷ØðññÏ=áãƒñÇøóÏ?ñ¯ý-y‚—§ˆF øz½ðõ<ð|>ñ|øûï¿ñ÷¯/üó«âUŽWÁ«¨GÃQ ¤Á èí¾7سgrüÉK§Ôo™ìŒákwVÇÌ Có<ò½#X­)ªØÀ¦”ÒX‘’|5 ½c‚]Ö2tÍ&Ì »¡¯ÒòžËhälOr½ 7ÐÀE¤…•’1vhaSÑĪJÉL¹¿SZœû—+PVæÁ–ÈÂŽë?ë@a­ƒ±e=¿ÙPH¯Á¼¯™|u_ú›™Ý5ûXýT÷Z$ñÂ2;³¾ÏÏíœ(x¶„¹ú¾™‘~®ugÐÝ={HR0ïâ}F½ÇHoïáª6ÿIårU¯Ÿ{Æs »÷ø•eȹ·9?07ºf§)¿=÷ýµ÷ ¾QçÑb3`ûoîý‡l‡Ü–.3ÒÔëhUÐ0¤¤³=ˆ*¡”>>?A¤Ø¶GOSJx<¶É•;+ôY3Rfä£<…t³9ö©¦Ó¶_ÕLkOPlœñØ> g äV\5ŸeÝ5®:¥$i7„¸`Á„7‚zJlR‡M—WuÃ8ñXsîÁPrÃFê!Ó0*¶÷É'Ýt©O¬V©RsÙ÷)l›¨¸œÂA¯üŒbÞ6U÷(€.‰‡ö•¶qƒéõîÅpPÎ263!6Ÿ»¯À¹€•>3±f†˜Ðʹ!¼`¶„Dï½pÅ š%rkSw|ó÷ßÿs–ÐÌIL³ÙñwŒ–nn3ª<ÆÔwåzk&ú†ü2 SÖéÀ—`Éð™7äIOQ¼ÎÏ#ÑôµtKG½cPÝX?1º~‡Qø]˜Á•¯ØèrÖ³ßI-]¥.Ó×AM§îNw«Ç^ܾf{Ý­Ÿ+0v“Î×¼÷\Õgê’]y*HÎàÖLž’3èwíáåû ­fÒÍ÷(Krñ²1Wp3æ3{z”MøÑx$¹MìW¢ñ …d™ ì~Yóú`Î>É«Kq%îO#ç*¥ì§S”ÍÁ~ˆ­O“:ö&¤ùXb€ØôZö|6óˆádà[H"Óä‡Ã¦h°Š[¼!Nyëž.±ÖœÐ1¾ïýZ¥Î@^F†¾_)†¿›÷nU=€E==ˆÀ¤ûüÄÒ!sW‹Y¬ƒ'æÈÔMsµKmZ<ï£ÒlÊ@Ž¥L“^‚t,&ü›l0¥d«j¯=@¹‰¢±§~/…¦hOÜ#Ë$æHÚÁ-vOë©kW¦„ƒm{’°W MáfÑèL"U÷Ÿcó´Zö­Š{ a):û½ðï™Áåóþh ‚ßñ`œQÆ”i2^î›!nø][°¸lŠ¡–àØÞäw3Ø%G÷b`Àoþ?ÁÐ$‰$gxÔ=¡ˆº¬ ‹èðƒAø”yÝbܼNlÍMû™MÆxjÖ÷cu²ùdq?;Dân›ä'€vƒéÀì¸iß?uòÁªª ¦ÖZ­EMP6`Ó=ÆHÝ—Œl9ué áÿ`%“e²ïÓ^†³×«UÓ»¶ b 4AÚ×°5#ÙÍߪƺdÛ×ã,¢žû9’¬‰5 SBž<±÷Ž[ÒðHXkLö´ã¶kô†ðÄeßë´‡Aˆ®±î˜BŒT9¸±mdžǎÇcÃü?>2>~ õÇÇ†r4ûóxU<ŸO|}½ð|>ñÏ×___x‚¯¢8ŽêàPC+‚Ò‚‰jç›:¸* hX2;(¤^'ïR,ÀÕÜ_´Ö ÅVL‹$§Uífò`Eh©á‰%ov"çZìn`òÖsL ŠkÙ .ÒìQs7Ÿ¶:Múµ¯‰I¶©‹Ï]"g “±±R6fV&Af—Šæµk­¡¸Ì[I°ÉX£žD7´DÆ3xÑå–Æp`ÊX,ˆÁ'¤”AÎFj:RmSÚzȈy% ZHò¦fWà’¹`Å rÛÒçN¥b¿#uðbÝß{„³t÷,£;›€(}`¤PH¨ª4<Éè–Ür•¢~G0ˆkßÞA›ê!t=k Zúók…Êôuìí«¿Ù ÎŸ{-q_ÃH”à½`¤Ü&[ÃÚÖ½‘Òdod)¢Ì NŒÄòû“ÂC\£Î›ÙdÚŸ-¡jÊ: p÷ZÌ0ÏÖô‘xs› ê`“í3£¾’”jª¿m3yþjpÿiÉå)u&Ö~—ón sJ 9e0^φç–pÕ+SÀ˜JØ1Ù í…VžØ·d‡[sçyÑ{«zÉÀ™ ×sñrFoç: Rîé´X£õf×øFt8uª;z2…vît÷Û@ºñà ÉÀ=c" çïšÒù¡8§L¬ÓY_È„7zæü°ˆž=’tAµÏ‰k3í (\Ýÿù-ÝéNz÷Æ´Áµ{kò[MwòÒ»Ôºß5sŸe ×à ýèôDì;êèwŸ{¦se4… IDAT/“®ÿ–[ùat&“ºšè7S3í l\Ò´/@¬óæ{öýÄк»—WFø?XçéÑ™Ù6ÿY¡—¿û25òŠÉã)VçÏ»+ÚóO~ç)×wk鎕u°®dƒD„×ëuý{üÀÄY&0îך¸øVðM ª@kÅ›r§–kq6»<Ϙ)%¤mÚG[냖°jÍ&ÓDÝ$9®oμą”)  ™HCí÷+Ÿº& õ!]:–Á8JOZLš l†òLŒJÒïama¯Mp8pƒdZ êlõ?cñN½˜ou9Ikž G“a¸T<8A‰Íç æÉ£°¢yÛ2ŽW1¨Í‹ð³3† ·Ý˜dU%eüHPU¼Úäï;†™ìßhÎd¶û*Í aTNÞtµÔE{\’œÍæ2ž:ô«æ¦PŒäkFϘÀS­î­Rl¿VBvpKÄR3ó0š&ÃÅ­ 40-)Ê–Úbµú¨¥á‘Ò*ùEÚ2Š´®_`6Ùd°2ºÙ/ õÃ|Vt ]%_yôÌçºùÂå“ò6´9ž_ÖäõÞÂ@ Ði‘?w_ÔIrÇ Ý÷êãcÇççÿú×øóóÇžðùHÝ@½Ö"Åñ* füý÷/¼^/<Ÿ/<ÇQñëù…׳ á(‚×!8ŽÖ×ç&ÃÙ’14ëâß8 ç!UüSJYêJü k­xÕ²²²:»ÃÎï0e^µG?!·ö'gæÕwIÌw}À¨9ÞÓßÄg ?y"¤duÀ– æ»º-zR‰ à…¼`/^Ûùûw³òì€f…”q™]|o\»™™:“âïÍC4wfUkmYÇçú1öÃ/Š$c‡ÓÄK£öÜ÷ýr:›â›÷P[§Ùs)j yÍ-à×T Æg8•ŸûùåÙ}#Ì ³3(63ëEÛc[öˆ™@qµc9`×:ùží5ãßÙzÌlº9¨ X_‘ì5ñÙ?xþ,ïŸ}] ­Mçý©§ŸûÊÈ +çÜ1R³Î°šD,Hm€\ ½ƒ…‘ìXŠ­Cúøs›zK€T!O] ¥ðñù'cé†\žN˜s¶ß]š[Y#z¶Á€üÈÉ *JøÿüÓüFò?øÿÿú…¯çÄ„*e¥5BñØ2þ÷ÿúüŸÿïÀV^h$>9' :)&å'晡ûg¬à•ô‹Þ†ûœÐl¨ê&«EÍ £´ŽT‘3ãc ol¨%Ô L4MõÚ˜þŠ®ÉKKÊ“âÊ)g6CìÓéŠñß±ÙÌ ; ­`KJô­f8|ÆÖ$Ã65_ët«'.0MˆwÉÓlŸO¾%>Õ:I“OÕßZÜïxoÒ<6S{#)NEVUpöhYâ[ÉÚböyææFzNÁ¸b¡ÍÔˆ¥· E¤¢Ý%ÅÝù-´w™²fk4U$â[`A Ã\0ìjÜ…ù²ÈyòŒÞÈf²Æ (Õå4¬fïÀ–áU[ˆÑ U<=S Íjñ}óÑ€Ð`ªùùl{ŽÛ¦« Í,¤hþU÷ M¥9±kΘk‹ï¥_߉ Ü}MÞ'Ø"Ký…©f‹µb AZíla-ujš (+ÍÀ#8xòlÅj÷Y÷‡#œ›¢«ß2XËQ‘1¥y@ž¥z-gëØ˜) „æþSZªïK&Õ%ö=@›ƒ9fÛÜlÝ6(EA)ØÀ㉺ pÀ®!ú]K¯`¹1Òb]ËQ—­ÔjsB6¹q•†V*ŠÄ›±ËT\ŽÚ@cÐŒçè>VSÊGâ_B©eó1öc4÷¸4gïÕRÁ>ÒD@iÕÙ“ hV¹†¯£"¥ ¥ÙõÌ9ƒ³7–ðgÆ=ôö=ß%ö3-Ù4Â!:ƒuJ§ìûŽ×ëukÐZ1Ì/ÈôHi›C1ÄÏÎ @ƒ™Uê«ï™"9%ìû†Ì€hÁǾ!oŒ}ÏÝéÏ?ÿÀãñèkôë× Ç*þïÿý/03žÏý®~¡)áï¿ATñzüõë ÆQ^‡€RFÅóùôôÙòfl.jÆ€ˆúQãR—…Tð¬l˜AqæV€ZÑ/t9R=I­Õžg1ÖÕœx8pÉp?Ë™ÞL¿Oµ`=IêTͱ…DÞÁ)šÐEÎçqî'¦ ÔsCq'ÛWŠÄn,MÍ¥ßÒíüj­C&8r˜ðõz¢ý]ÑŽÚÁ¢}ßMF¬îsÇVãç¥/¿#ꋜÍ7-@żm ²1ƒ?©×nkÚ:Ãð<° ÃíPÖDj *ÓNè£1HŸ®¡Îì—™±Ï“Ä/¾?d“A*‰u;_Ë^C“N2R»Wµù:OnIKµö*úFcÇóÂÈ}Ð×3å4ØÖ<À— k•+Åà ®Îõwì9çž#€±ÙØ~ÔÜk°Â|ßµ«ËÒ›¿X¤Ü6´:I†“ï©1 Z ®:ɇSÇ3š³³"o–®ÊuÚk¶`wÕZQ^¶õ‰Z«K£­~ÿóÏ?ñùù‰œwämëI‘p©ì–38Æ[¶‚-%h+ð•Š×ëÙÝR+¾¾¾ìYÙ7äd  Û¶!S§ó­rË {Æs³ÛÈæ›5š?¶Å xpÂüëÃ6Zjŧ„”y¢¥¥Åt”ú¦¡—L‚«iŠ­þLŒRØíæMÔŠÖšG4*wª]P¾íÐŒ ðl¶~Ö¥Îu§X:ÈvŽzýŽý³<òï%ö-R:ægï’ø±)Þ{ìç 4Rù‚-–ºÁ2ÒÝ”Õ<óæ’6Co¶†ÞærÖ  ¨Rœ±‘“¥ÀAÈ¢®ÕWZ˜!ùhÈœÑЬVcˆ§Ê)“{QÃJÜ'ü|bâÊñ™n¼OƺJ&&óÆœ§À³GÅð¶Á&fÀ-C-¢<'»Q)º©>º išÞ‡RCJ5f„)Åʽ¡ÈÙ9âk‰cÒ§É}¹Ø><¹Ì\¿Eú¡º'‹¤7ZýÏžúFH:8ƒBo|í.$¼Ájo”ffT?¯7 8RXc’ï%¤ܲ:mÄ}#¡Zúõu`%¹|Ô$œð´Gí–©3Ú&qu”¨%iêiª:ÓD]²;Õ“ÚÓݤlÉ“î]•(9ƒÊ﩯k»×@-ÚýX<Ýpòt#—r°Â䈖fÈßek.é÷/ÐpýÌP“3&°Ê0ß4JlµÛóØd^Ë“EÔØ…mU1 Ókt§®ÔÞ”|Èì:ÛŽLj*¨¥ZuÂŒœ¹Ë-çÆš÷ᯮªz;êšÓP6€ô9žýÍá4œyómôamJiÈ¥§S™5˸L]ü›fP[Ð`S?c<ˆf¦S­E&o¨V{åÕi}?Qœ`¨¦ƒ÷VÛƒòbÍ*¢Òÿž-ýkö^VsúáÊ/k%«ëûÈ ¾æ±¾í™Æ½uP»ÎÆë9` "Óƒqî5{︖R¸VDÌŸùØ£Œ¬¸b–ÁqaNÍ칦Âi6ÜõyÁ‡¾f>¾¶öýµ˜Sgd¥6î¹`k6bpØÚ÷:5ÃëõÂããWN˜Ï+!g¯;ëj¾wïÕ®G†î…eX>S¬ÉA$ÄxlûcÃ×3à•¯ïRRQ ¶~Þ#^/Æó+˜ÌC½‰qwÿ]g¢f®ˆB[¤PTï/0NeºâF;¦Kõ™²èâ Ø$P³ã9x‚’Íäúy÷æ`ö¤K;J’'Ÿ†¢ñ´ ê~6­‹ø÷{‰u-y wýG›`yӅ΀öxÓH5ÿ½µzÿ¥F±-©‹s”ªOWœ&_ mi*ŽO7‰/(µØ˜™<Í\^DP¯Æ¸è«¾ùœ'9×Ò6¿¡y-½º25·Á¾®ÆŸ¡úÂÌ ViV`¨z¸Œ`Cï­R_õÆî2OÅVRQ]˜>_]Ë-Ãí}TÖé‡ã ò¥$îÊ+ké·øz pÑÚŒÿL×~`©u…É*"w>~×>`G¿±”òP%@ó¹HZ1 ¯Bæ‚iuÜ«¦æjèS7A•! ðR¢¹¤½(ƒÜ¸0êkßn70}~ý…Çí žÒ 0‰[»‘·‚=ê—Ù˜ E2V÷b¤ô‚ûÄÐhæÖT›o‰÷5‹®×9™D¯7deo²ËB·þå–hXhÙ`ª ¤ôô$B® [´F<3HÍŒžâ‡“ºiϘ+“s¶†Êž<çP³ 0Ÿ.“Ú1[Ò qóÑêÇ*‚=ËÁ[° JZœwñ!ýf€2ÌÒy’zŠ£KÑR¶ˆ=!ÈX¿„£$رøô fãÛÞ¿KËŠDÆj“6p±Iûý“´²›ÜW¹¦äGI6–ƒ. ˆ{­T/Îâ·'Z²4ªÌð*ÏÏi]ŽV5Ë]ÊÇ%MTQ÷ï€#Èe™ÃQc$©{»IW¤¦çÓ~uà­}-RÖþ}ÒTÓL¶u²AÊíJ$kMAê-ªySI©1;Ûþ]J:³Vvs…Ôª·”NξG¶¯Ù5KEQ÷gŸ‰J7 4?XT©äp­v. P–äu5×xêwÎâÆýžúùryŸK…‡õäA;®öe®@ª”ˆT÷1YjYð³KV‡÷)pMíC`‡=ñû´[Ï)€)T¡;™w’}vБÝÓ¯[—Kô{ZPˆÕ.AÙ×Xu9$³±‹$Ùý3d¹Éø>î[˜öóRãsóÔµð©fÆ6刱ɶzÙŒˆà7ä*·Ûñým ï÷×ËöªçŽ$ß_;’ öWÆsO`ŽHYÁ›¥(朌¦Âì>ÖH––`Ê‹úÂö¡\=–Š?Wo­JÈÉR{@+»Rb/©¢Šáž,=DtóÄzoßÑÜ=iSP“áûú°Y=ô!VÎÀò6¤ŒBäƒK0ùvñó5ZTªÌ–=ÝÛÒú0¤Æû ñf2ìA÷m>¯ªÓq¿-ÍÉ[íÕÕúÖì`à€ú\S€¶Ü)wé_ùHnÎ]ÒøÚ nó>/w>Œ©Úç¨ßÃEQbÆí¡šÙÏucyW ×j|6`Ÿ•.«°&X÷¼’q?,*®YžXeŽYªåвOãÞïKOSÏWÒç>„¢CÖÃê¹Î®Êï•s•¶z§1ß©ä¨ÛbÌ¢ôh#šZŠh‘ä“À|!©$l—ž•Éj!® M‚W2å‡ ·{¨kCeä—ëÒ?Ÿ¥Z-ÁÚ0£™ç8 0£ÝÅ50h‡  l‹›A7£GéR³’.êuú×Úo§PqçßéƒtjúÐ)[fNE›õ¾Á”…ŸÐdVwá´ÚàÇÅDˆq-„ÀQ(¯¦.:ߟ‚}W`Ëø|×ÓŸð¹2¸_(³9ãÿ+ƒè 0;ÊìÆâ·ÈỄã m$ÌÕµDo§[?cTù;½ŸÂ]K5ÿ«l­36Ô̺¢ Ïñ¨5§¥ßÝõü¯dKIæ ³‘N"¥—LÕy?‘‹ÎEÔìÁ4§0ž1Pg¯¬Zk€¤ !ˆO1ár=ólÈ"H¬.¯€DD* }´õŠŒ¦ŸcBÔ­6Ò™wDDcf"ËÕxHÇ)MDhyHÍí×ÃÄ4 a1 NÜ|Jc¦.oIÅŸM›_l`0póëÎ R±B\ôkbŒVæ‰V¯¦v_&¶„¤zt‹Eêi%ÊÞðv‘™Þ6v¬\\OÇÆfí79ß±ÎE˜åt¥¢. ²ßŽÉÁî˹XWòå+ÆeŸzU˜1=CœN|íf?ŽÌqῘ¡ÚøºpÖ »4 Öž#dž!íûíçÁΰ¯gûг±­i0éd« ìyÎôàƒÂ˜ÏÄØ5#ÅœŠK,ý+´¤ÀæÓúhf`Ÿ]CDÞ¤’4/1%$7¹Q-?Ïõå,‹<ÈÇÙ‹s=ãç´bX•ãSú)õ•P=W÷là²ô×$šlRBzZÏôŒ™Uˆ÷'`³á *CBÕ%AÎÀ2à4ãºl‘zOÍO«ß™Oç˜Ä'¬ú£!qÙ‡Fv4™'2"0 °²F\À¼…®þ(klIX ј‡·Án.]|< @S®ã{‡^ge^¾òî=Ÿç}tðJβdðœù䮆ü«!êQrS.ùð¢¥øÑ`A±bÙ­ÎùÙãÎd¥ý9ËSç÷ß3»V¤‘rœbÅÂ`å!W^¯gp é¦ÏWžf¾^:zÖÛ%“ùëxýôáhé¤:O<RÛ0¹—-î DÕ BÄm—Ú\ËZìiÃň]D±'KP å¾pÀ4p“ó§],iу*b¼áñPÄ8Þï+lÂìFÖÖ)ÞÌŠŠ‚O^­àpWÁãñxmض€œ¬Ð5ª5{V°éÈI èÌŽ”ŠìÁ}A”†ØK©“$æP›í¡‰sÙAÕ”D^œZ7„Éãª)£3Zˆ,qÐèŒìˆI4„ÍÜ/úd¹¤œ=¡iöº!3ÿ }¢ÎT-Ì>K+@dfˆˆ”ÞPr^€ÖòFZÜ­˜ïÒ³ß["—}Áƒ¢±i»rhÖgN–›&ù3ÆÒÙ1\yQÇ—N ßçcö¤9kö¯XZïÙ6ã&¦´üLz9ƒ=sÁwµÁm½Òü×ô¥“¦z)Wß¿*Jû´ÑA®¼ WRÛâÑ`lÓ‹-*à 8 ”3v˜Ál€¥^1? ›0æjli~o@ˆP!Ój¾! »3ÌïÈ”hæ3Õ›¯jh¬W‚O2UêD2¥þX ªbðjÇD ¬yòDS†j(T¦nÒ$4 ÁÃdwÁ$O²›—€3IÉ“û!Ç.Éš°`éuÕ„¶ì½IÁ$14I;ÜíݤEt„šˆªt ý *Óï¼ä†õ•ÁTå…ÊÕC­—ÀÄx« ‹qxÅÝæËþxJýP™§0ãøÊL„Óæb¸ž'ŠS3ÔŸR=; Ô±`¾¦¤1½IGmß*:’«ùH‰Vzh’Ö—”Dc¨Kc(¹Ì@)¸¤Ê¯~äàæé–Œ((µU¿7[Òdñb2Ä$±°‹z¤8˧|-ÌŠaØt$“5I:{L£áµû±èšW‹1í&VÀ Z:ÍZ®“ä*YEï;¶°SPTÖ‚ý¿V®H¨reœˆC=¡=·Dœ9H¤i ¥švܘkÌÊáV«"ÿŒ5Óÿü¸P`é pLÑ[éÚÊGè§Œ›3éVOm/Åö À¢®`]•«4Ô-®"20°ú´ù½ÌŒ™d½2b_¥ÎÌ…æ;†Úü|àtšÀ_„ÿŒ_ÖOÁ¶y‚Ó6ó}ÒOaæéØP¸Œî]²ïÀ¯•ÔsÅ@;óc˜ƒÅ¹XM±øÄk문9¾?94ƒe}Ó,¶á9¨DD ÝÓO$AÐ $eöt´h[sHá £lŽ\å>’÷.z¸M„jQÙËc\j7\/Ä—ëFìŒKgO3S=žÃ:=ôðfçÞÕL|_É‹'I‡u¡,ü1öß™¬¯¤ rllU6‘]ùŒÇ¢}¶8T}ŽC9˜².@Eóôù[¸jv?@ó~ð€$b7êM  T—²×Y¦‹Ày)·î€µÙ›ópï‰.ï]í€kF3ˆ¤š“–ÄçÐÒ"{«N`Ù ¾ËG/¶¥ ÜÔÝ´$¾9; \Á\“—˜†Š5-–šÙRœMÝ-ùŽ‚K} ´Ib×\V†Š¯!Ùå•´¿¢¾ÎjÝ:díÍ«µøjð´òçÔ¡yhkW^ü¼4 åü‰hKêt–Q“ªm¥c\õ¢ÆæÚГ–GδV(ï´Á \Á¡:xìÖY³O°¤Ìã~Ñ$L¦p¶ƒ‘q†]ù Үћ›Ü™s€4PßÖ´}ßë¢|%m>AfzîtºšÌ*Î:p?§ÚP8¥Á†‹Æ<ÈÐl¡µÎÆ÷÷7àëëÙäC^¥ÝdyD9›ÇRP²Á‚¬S¶Ëñ!Tóöùäœ!jÏÑ‹êo•›„pGú$<Énâ\ž£|¥Þß/1 IDATõ “©¯xÉž›û³zäPqVÇ÷†ÜÙ,Ž™’ÇÀ<¯ØXÉTf¸ Ž‹ ²]ƒZ÷µþXõIxÃZNNÂÐóAûhGÃVýÜÿõ̺¹öXsÊáYÿ±ú»ô6ÖTØGãsM¿×õ`s?±bÍÏW¤r[º3‘_Õþï¬zúõg®ÁçßëÈ3V଀è{ž¥åõŠg^Qhyeíàô²ÃA†¨:„.ôƒjKx VX¿ž&·Ý°° 9à’Re\Å-€ÅTlÕp¾‘XL­¿KËþ?ÿþ<•6¸¸o¸Ç€¸cí"ããþ@ã1!÷îÊ]ÈU5üï3£­j(k-Dˆ¥(°…š‘@°¨ñm ¸Ý#軘‡i° Nï/¨3YÜkŒ[Lƒ~šº  ŽäSƒŒ:vÿÝ@£Ú6€D\Lãì_ OcìB[´lÁɪfð®T“¨˜¹·oŒ«Ø"« Î%Ã.†1‘«éÅK,MÃ}vÚ":.F2øA¬Üõ&™^r °‹Ãœ€Xoxºöþ:‘Îbm´©§#0åïè¡¥‡Ç–…îÈÌÂ)M÷Š5õîÏÊ@þÝóœIC‹„ˆ}¶‚€ëuß.VÊ/…Je6ÏŽ–ü±ï;žio ¿Ëú4Ð~c, ¨ÿ «êŠÝôN¾y¶É®‘³æ À½bcpó9ê§"3}¹ß”WÓ¤53pÝp­’WrÀqÂBõ~=óºê‹¡3*ÿY£77+=ÈßiTš³ß˜ÔS¿;¹×(SÀãýZ8V ‹{ñØú*ÉØ´ûói¬Ô}Gآ̈́• juNf*-9C¢ù‹ðÎÖˆùFÄØFâFã¶qfdfd)ÅFK² f8L™¢WR“ðHp¨*¶ÏÍÞ ´%¹¢¤4 B¼;³2WfVÙ?8G„=ùVÝ,Ó@/òä/AÒxð_(ùÈ‘{‰=×d=ô$Ý®$¨hìf®ž7u½¶ÏZèæ‡æƒ»ûÂ>_ñä\ppÝ_¢ï—…öžêuÞ˜µ–>ÜóƒG#æÖ„—†=—kÑÁ•’ÊĸW}Wf‰¹6#ýÃvÁh×z"rSðn­t/Kª¸ª©ÉD<Ê#;&€–ª7ºû²…Ä`¬º¡T.ÇS[QHåÿÝDœƒœåý™ŒÖ@`ÖòšÔ\ñû¯d©_…%3ü©ž[Í‹«2€Ð([}TAUt’Ñ~-;1nÃ?2ÿ©œÙÒK3X Ø«ŒsÑ8öCKt¤êMBSC_™nÚûU6V€5èÂo 4.·~j–ÀBÇ. AâÚ®_ó-ë,SÛZ½ Û™„°_W{íp}c¸6W«t°H<‘õ]èÈÙàªí©ã¾¼mR©¡/$x SŒ £4Ђ©z»6[ ¸'Yƾ£™-+ðç~aÛ6KtöÀ¢KòРî½ÖK—[„hFNñ5;¸W/°äù¹5—BµÏ0À³cðd©’Ÿž5’“vþW-=£g6ïÃlÌà^ÚU®4 Vçô·w s«líƒKŠ1¡IÆ›jXÃèà{µ¬7]"J]â6»|ØÒ„µX‘[¢ãÜÿÕ¾…»ýKùà/Û˜›èÒáMÆ_äWf@íïNd¤êÐ=0Õï&ñŽ2¼ì ¥ôÀ\•á{èÌ(á»UùíзéøyHïß{K•ƒ,øj¸ÐgcmŸ×!ü¥ûô£^n–W¶÷/Ëþqázfü*¨ yiÿý×ëé Zë5z+ŠzœýÞ®u=ó}|ÎQÞY E²Wå¾öFÉ7ƒ£ r¬lÍ}Ïøúëÿçáåuô#~ýúÀ¿ýÂ/Ø`$)ÓYvÅðõH¼A4y}mØRõ;ïÌÜmÈ×î“­(¿œ}÷}·$8û4ÕX›Õ)ŠìÆxYÆô9R»9o1âó£ ô ú2z|®E 7ÊœfÓï—‰:Šæ9_°âzyíâ´ Û¤/· Îl¾=Xåú)q…!ÜïÙËTeGû¾ãëõ}WƒQñbG™.üµèró?3ß~'ã[M£V×OÒÇ•$ôìwWþ[?ª~òÞWR…³Múêx½caõàÒŠp6}®S!âÔï' Œ+)î™1å<ݦE'ç³nªª>|Ëýª“Ó9å¨Îì,Ù×ëUx½¾ý½Åîµ]ºLU&P!HŒÐx«ãø0–ß—¶äEdÏ× ŸÎÐÊ€7%Ø ¡÷ïŠK¿§‘)В튇N Ä›¸~zg…LBx|ZTtÊ@`°¯œ dA)l˜3ÀèBPLƯ{X‹' e÷ >8a(åV™0Ϧì† pœö"kJµ¤°q‰uæ:„éH73Ë×1P¡°¸›Ás?åÌu0ÔŠ7®Ôó•GÈjý. 7ÜäwµfTÉNØ›Xûÿ•ï05÷5Ÿ½e²;:~jiuzù8UÙ¥Ô; ­)€Ùåbe½W¦šHêS÷Ör¹¥f ìŸ4C\«£DKx™ú7“|¥.áNǯðdö¯4}5I¡I«À †ù¼±²½vñÒrʽzÙXÀ«á¢ù_ A`Í=X("k2õ+EÎs kH.?-À˜t@Xñ“ôpÉZÙ[,µjǽœÂ̲@^^_˜ª^¤ ö û¾[Ã\|ºjvàb_+ƒ;Ÿå¼+—ãíRÚÒp{ øjPD]£Žz¿ZâÍÒ±8Ž0¼fv û†¿Ýƒþõõç’¥=³ÎäíÒ3’$™7Ȱ€èîV(É›jâÉœ38DofÅÃ7¸JæÌ7* ðäõ–@䟒Ö7¡¯ý&;Fa[¥#KM©›÷a“fPܦT®–,8$§KaïØ_x@AK!¤Ú°—ç.{`ï¡Zêfu³åœ§úp:·±kˆ{O¢sFUW;¡K@øøÃê!$B6๗sÄ#²h:ówbEÑU¾ÎñÕžÁ‚ÚnKo)tÒà3Øò2ïG6\"ä”Ì»@öæÞêœØ,^z¿ ÞâOj|W©W³íR—…èØÿ ¼6¯” g *‡ëþ½’ =£$bŽjIDìe·ýŸ: VòZ‡Œàù½õç¹æxå;³ù CªÔ½åÿ{/¼íö¨×cÍKÈŒúWü°F †QÊY^3gôs¨6;ÙÙ¨Ò1U-ÝÙ~/† ÷ÛÍXJœ¥š3ž¯„'ÌæéqÛðù¸U ñù|ÚZE  ŠÑµ6ØNH» ÄäIÏ©bL}xF?ˆ'ŽÇ@Ñ?€i»I’$ nL¸“â×![À÷k·ˆíÈÈIðÜwl¼™n>BPp´¶{¢tC~elÛ)eõvÛ DµAëš%iEØ(×ôÉyª Ï®ˆÜ0"wÀÏÅ«ƒ«‚XHÐ}Ú°grD»œd× {츙Î{Ъ{k܃y= ûç;.Úüì ]\6êŵQ{ª8×iHclaðµaP•2³G+›)ïívo&óeªýÿ}B¾§§§õŒæì%jÖžbâÉR}ÂÐMK3,–½<™2;²[’0Ú4©÷ohÓ4Lr¦–í1m:Ê ZÌ©M¨zÔ\;tW.'}slë!’Ö‹M™)#õz«SØPõæäm‘ÉŠv6ú…ÑÃ[xÜö9ˆ°Ý?ðññÛí#À1ÜTð|>ñ™rÞñçŸâÿø¾÷BÀkßÄ-Ö‰œ!If8Rݺ«üÉͰlà¸Þ»DaZž§Ð1 <Û“Çõ¶žŒ\·ÿÚî¾ô¥:c!­¦î«”‘•yzÙô }÷*ðŒzÝozg€!½žµp´t­Ü˜P}A± 4óp_&±¤¢.-¥ä›Hèd% o‚Ø'm¥°ÌnÚ`|=qjtFùNŒOg\ÅÍ66b…hrPk¯”ãŒÔÙl2÷-"OÝËÙüd÷¤³;¯{CvÏèæéL Ï/ÔÄPg¾Î±e*Š´Ûë#´fö䉊Ü €`¼^ Û°¹YjV_[É<ˆ¾Ÿ/4Ä­Ê‚sõt""l·0€©””í¥”À1‚¤˜Õ“ºà)Œ·Û†”^P/žÏ§ùˆÄ`Œµ¤"£ê°3aÌïÇŠ FÜb•Û03n· ¬À.»ï‹ÜØ5„ØbéëØ“n²k¨jdy2ç¦ÂíÖ€ÄW¶¢µgq[‘jaÇ­ÙQ…d[ÊÚ”Rr#鲩tBaÇ‚ÌSÊ'Îè sia"ÚùéµÔR„š„QtR—¥š‡6˜Ùjî¤q‹µ5¯´–œ]ÎEd{Í.Ùö<7÷/×\Ê.š)[Cg…ŽÀŒœ¼yL¼ˆºÇ•7H‚"#4/¬T•RU}€V"'°01bfÒY|èXd:v|–2¨x¹¸-EgZïX•N1@‰ƒÉgÁÈb Ñb¡Àà›;V³10- Õücì[ij }¥^5Pšcç=7ròôÊ"uwf´a—ሹʕ ›ãê‰R-(‚b —pzz¤µ²ž™Ýœ=ƈä*…-°³?YXú5ßötòƪ„Wýó’×gÄ¡cùq­q à Þä¼ããöQAÃ=ý[Œøz}!†€—§ôÕ½’­á#8cÊ“(s²”×"KI¯okê4Wõ‘‚ƒÕ„1CSviuóë+÷˜5šxj–Á‡%KÂí±á•ž+"ßsldâZ ä$øúúª^IÙå…EGCRöÇΩ±k «ß_;(l^kìÐÕ`OÒšÔîç¨^kÝPEùB®.õ!ZàÓÀðH»+Øû gm;Q!tuÁ`]â‰ÙÙÉ–¨•Ò{~)Zˆ@@‘ýYÅn‘kZj3·tÁgóÇM ®‰ñæh~}1X`‡šJØü‰;µIéw´H„G殈:ó €c B“YÅ&¬û™ÖZš<@RCrµé ! Ðf~Π눵: wŒœDáÁï¸qb¥ÙyTÎu¹§o·ÍÔO‹á´±û”ÒW’M¦öx<*hÓÖFOh•‘°ÐŽ{ ß)õc ÊAëŸsÎÌæ/å‹«ù„µ×«À°Êø*•ž Þ|­Õˆö5pèõZJ9U„€ÛÍ#ØÓ£É¦.`blñŽ#R¹‡D+8]Îe!2غkÙ±9 öÝj±·ko·M~u¶3$¥œâó·ÜRB¼>~ÿÄ÷kÇ_ßOÈn}Âý yÇ3kä©Ú}–äåuw@ök9ë ªÌ›W 5–òë•“Y*ãoßwÄ×ëÕ¡¦¨›ZôE÷ã¾!¥[M³Ø³E'R  u''ÿÝŒû øÈ Æ÷x‘ZJT¤¦Í.7R™ Lž=eã¨ÔÄR¾²Ñìé9¦Õ´ÁM``AdÂ÷+a „šž8®En‰· d…@‘HM‘ÊØ(Dz#´n>Ž ~sx'ÕZ5νyùÌ1ÚuÖÓM:riØM£IïQ6Ø¨à¶ØÚGŠ×Êð¹û)ÕÅ|ÅT:{O+Iç™Ùc Þ¥a½óuZL| öSÿ>ò½ÁhÙT½¨‡ºù†°ac¯"°Z3ï7<Ÿ¸ÝïÛ ŒÛöA¡…ïØ÷!lH* ¯€ïï¿ò«)^I+ÛYŠLi #ñ ­˜ÖçAéTž¹j°Ѽºfb —ü…¼ðеµbP­îÍ+‰£Lî•ò꺞¥’³Œm~Ÿ3ëJÆÙOðúÉÑ</EÒ ä 0Nîú©Ùìk²¼ºÇ–ûµú>1ã~¿çüv»-Ù©ÃñC†¨€²"§×íV}³à Mj‰SÙD ;¬YdŠÂsɤb¨{*{¡™#˜ {×ÖBÖà{B¾s•1wå±ÁÁ< Àm_ ŒëÄ rÉ£±áüy)@8 @I ¯íœA9ÛóÞçÂzÎ`O_q&3 ({¹LªKÄ Ý:€ÙŽ m±š79FóB²öšåEÁ$‹” 9 þUÅç©̽GÕ†á¸^¬Y±»:Ó«˜¨Ë²2±j/¤W€øaïï$)Ú»³ ÇP%_ÙÍgÅ£ßKS4NÔÛu ʠ+ËìPGªÄê à¿ò22ö;9‚ê QU‘T«Ç*¨¥è¥ÎC‰´˜ïÛ½Bή*ï›ëϳ¿Ï¤Ä-ùÏüHm€ %h°B8ÁƒƒŠ)µ ÙÌ÷ãd¿,+€=çI0®÷¢­yå>!nå™3ûÿPŸZØ…†§6ͨœ|å¼êseqKçë¹.õþP pcMÔóMÖØ&±à"#&iMÜ+BVÄ[•³EY¯Ïd5}Šw¿¥”ðýý}0É®{j|‰@rªÍœ‘€œòË1׿R‘ºgo€s•³VàcbÊäŽÉZžešS’Ã>€5 æÇÌe”GÖ+f0NÍÏjbÇT<Ò0Ðëêÿ3o¤ÙW§ÿÙZ2×J3ûhú=€ÅÒ£4JâjXÌ ­t Á 1Xc¾q »˜M®g²LÌ oâ­ôviû‘ÅÞ§â0œ>K†îªÂ‘!§£’eÅÖY]çóëþQy±Ï稯?g |f<­êÂŽŸ·U^w¢Jéë¹³¾ëLQ13næp ±ÆåJfh!/€jš>SÞKeV‰X`tIæe#ÅÔû,é€Gô,7:ø!¶ã>ƒng×KY=J C‚š5‚½Î=Þ°»=C {¿ßñz½œíªÆÜ“Û†a?:úµí†Ïχ ðJ;Òk¯ï¯úsuLRq+Œe¹Æ”þ"í,´2[ç¾°²ËMÒ»ÚM¦ˆà~¿#‰%§$ý†<_ ÜÆ c¸Ÿí†Ý<ú—Mc~ÛÝãGÙ}µ)I`F.zæCØ*®ââÕ™#ñ)«R¯7F•ý¸IÔÆ/!«y–ˆ0‚ÀŒé™À´*SXeªSs»|åº÷øÒ¤u*X¨OÖ\™Þ§énqyçõÓKpôÄ»áxŒNÖ£¶†åùm`OyÝ´”péÀ,A&ùá|}–tÎ3 ‰w–3CÞV†ŠÍ ^}ïSI»„Ù~f~e)B˜ Þ¥ëUSóò-µdMù¡^ØçEmù yH̓AÕi=™ãš6…@¬çå¸õÂU?gý ×Ô|³*d°4Y ü¸ïÕôàýTê¯Âv+ §á\x8EMïƒjÓ´#šk[>„¬4U–ÔàRÕ{¶¢œX~àtxÐ÷Ô©ó•ZÉÕýÞÂtÞ{O±y¼´¯H}Jø÷8ìãŒÛí†m{5%[† äŒÉb=³m[—à‡AâÛ,-èTöudatã@°ü|»ßñè@Æœ›é|QkìûŽäuUˆÔ|eUëû* –ˆV–N>¿~»'â|ƒÍ'sÛîj°{Ö.ŽÕ(f¡/øÐ’ ¸E¶ê烑ӷë+m"(:¦ZÌÌ‚:[} ]Jp~âms¸Y‹d©\¬;ÕÊ ]Þ4g­ Eç¼~rÔ{Fµ¢@×€@m¦ZQ1ûÌ\17椃†ý·ÏpLÞIýqnBÀ÷.ñoíÕ&+W®"t¯77Äï®ÕãmñßɈµ­ƒL MÂÙMwZth@ [=oÛÇg£*+ããäƒÛía@ÖãŽx¿ÃÖ&±~Íìû·›y¹™þÞ—ï××áü‡ºHð5ãìx}¯×SœÎü¦ÎXmï õWiFó÷cˆ§É63à±j ~È]Ñ¿k&ûëoµV­À¢Õ±¼bxœ=犑5îU ôu<ƒ»Ã$‹Þ¯»W ܼ÷¬ý†×ûD—ÝÍ…ß;“ÐöùšP“RsØ«Œ»DÅÓ.u«%&˜‘ìß1Þ ðü>» ” øÒl¬J“™ÜÂd¢;RÊî5‘Ú)Z‘:| ¨~Ïè%Öó`¤LÌb4o±m+Ì©'Øo”€6Ó`uÏ,€Áµ ñý‹Lª—io ¹¨F”tÃPcØ›tÍ_Riä»xJN¹vsñM .§e»Å«¬µilTÃôœSSÛÒg×ÕuNûÄÙ36çÆØg‘òtÈrÆž¸ZçVɳøq1XºZÛWA4WŸãŒýz<ýü§ º•·âøo>0&úã^œ³}§ø7UϲÈ¿’–ï_OÙÇ?þ΂W˜Bì@¹5k1Þ@!zóÆ5kµ7ëñ1ÌŒ$É÷€Á´=¤õ™ê°wªû‘Í’âPÓb…*WöYe;øÁÄæó"G†so~^R'ç©<®ìW*ëûa¾¯†æ¹xÝ,€+Å域+«‰Õz¨"—^ccêñ´¶É*)º1i×ÉÚ}RhŠ0×Ígûmó9åC=7ìß”6ÆXkÞb7‘ÓzŸoøÍvPP̃ïÞ:¨¨Vuôú&šÌ>ÂëÄm3ð¬_ƒRJȯÝÀä0³3¥‹r Ës™š(,¥§5½°/N,A0Ô8ëÛí†,À¶mx<IÌC!‰‚hw“ÏþD ˜·‚ê+aû¼ãõÚñýÔj(\“¿2w«Ò!Å7±P7X(ùÕÌlz¸»mlÃj‘êÐ òhj Ê~‘z4s;Fqqq)E£ P¥ÀêÄ,±Sõêñ#  û›q."¤N³×ͤ´H8¥çÕk9ÙYUò\: ×Ò­wMðU!>ƒ/3 °Z0Þ}gŽöÇ-Õ¬¼ÓH<ÈèÊ¢Wä=÷"rƒÔû'÷Ï(ðñø…?þø¿ÿ˸ÝàŒyÅÆfÔ`Þ4åñûþÀíq<]iÏ/<÷’d¨îï.ÍËíÝ1]¨žBgçë,)ó 蚥sgã»â½L™Hù´¡9+zä™4ð¬Á=›ð_]Ë}ÊÈ;àªò'ZôLõž¯ùùu³L}åCeÇVÜÇoœ® š/Ö¨Uçºyžß{ îcŒ‰ìúî™^î³GÌÕ¥|%OÇëÏÉ<1>‹u®Ç£ĉa‹+5€”_Oo0_6ñrö‘’%€šsWošèRCIÆPÙ6EÖ„œ^ž ,y©cZÌIJóTÐz}Q• Ù~b nìǧ.dÅ„´N™¹úàq·a³ )n²¢‚V$6h¤ê£1Ü/þ>A‚´w sEná3Iê ˜›ºwMûû*òcÃ庽•ÄÁô2¿ 3¥§6á¯Rq(¤<¬ÅÏ“îÆ¨#÷åcKì†G“D¢3Y_|ê$ØîƒÈôv@tÊæòÔ¡–“‰Uêøc:6~ßÅë5çÀ‡óT¹3ç3ú'¬©3ì*á9¦Þ žß÷Z´ã) ëQMíË®úš¹®—g{è | Ç™Vâ#½¶Ð–ʽÜ?Ã`ájX`ðìë÷æteó}ÉÁŒ÷KÐAmà‡æ­+hÇ?Lìžܪ×ï-˜Ü»K¡êMÆ Ha5-W_¡œm°¬.² )7@O Ò™©Ãw*^Þ£>¾ IDATDuí Ý÷LJÀܤd&ïTyEJ©“9s©Çs.æé3+ƒ*ó„ÈXË‹ÕJ ªè_Ãþb0®@Ù8ŸÕ5glÍ+öæiET}ç}wf~%…™·w89˜»´ )ÊO ,2ÀH fC¤5¹1òÈ, ž2h€«XhÉ…eàBzTÌÇ¥žó *’ïñŸ<Ç’³F˜'óýs€q.¯¬#z&úªÆº\'MËäK©;Ú÷Šü´0d .²k9È%­ááwûÄ[UóŠ~×çõàáüùfÉ[»vdäçp½ù{‡½±È8ÌQ‘$’1äiÝÿžß=óÒdÛñç1ÒL Y4¸·FZ³R*åÚµëW«ÏTÎöüW*ŒÛYH‰Ãíî÷él¢ÕbÆ—iº>ä²Z`FSm¤”kµ‡ÅþÀ÷ºN©ÈªºWpß^·Í  sB‚›žuŒ“©¯#÷¨à¯WF(‘àì›QÆrñœ×wL›C€£¯Ï¡iô :ë½€ˆ§™2bdl]Œw€¬HšêF?§tÑ¡¸ž7sŸô‚–Edß½83­´Ü^QøÇbÇMÒ/dc%ÚwEñ4ÆjŒ-¼GŽÅñš™ó®€]-B+IÂê9ξ7O!ßM3ç‚·õÊï—øèzãÇÍôúE’„&M2Úç1FÜn7<üëÿ7üí¿ýÿûGÜŒq¥dEÞ÷þB’{RÄmÃmÛ*sKDðýý×ëÇ£¦A”ÔŠyªv6~WŠ©ÞkVöÐOñ«¦e=Ý=o¸Úë_³Î¹Ÿ°®ª³c|ö™W×îÕš×ËùÎä‰WòƒGèðüå¸/iÒ„“IÝÏXlsÒÔ|ÿQyŸqš˜… ðš×ŽÕºrôð÷žwRÜD4çÔ=†ë´¿ý ØQ̰FOØÓuýyÄ|–J¼q‘îzjW w»O I¹2ºXÛïP‘ÿ°ôÅXÔö‘â)×|ŠÄpf÷ÕÂOÛž_ŒiÍ·æÑ(åKvaa¨&Ô NHÅØi Ÿt›ay‘x˜)zv3ñRmp÷üèÑf{MÓæ­ÙÌeid=Ǹ7¢… ÌdrYO»i°¨×oçµb°1J¯êÕï½Kp=‹¯E¦Ð%@s¬ÿdp&ïoiœtÉ€:ôÞ±ƒVïåŒE{µþ¯¤ŠïŽÃ\7^'×EY‹ò$O9œ#rϪ3Þ‰È{@ðð¼ô#f‹Mƽµ“I7_\Z#4ŽBµJ™ç}ùÖv’P׳hòæj*½bqHJB"€ëÜÖF—Xe IÑmÏ‚eÖzV4CR[[å a`b5O¾1qŒÀÓPibØéÑ·ªOœAŠfé`õ@ÑJÆ{Pý{®ŸV@ÁÙ}73ÆÆŸ±.W÷‰Ö°#Šå†{^±ù·ÁñÚ"ÿc²”Õ@ìaZÝš.€p²ð n÷–ÎiÞÇ4$*öÌïÒ³6YW´ãÚ‘O˜öÓÞºªŸfóýAÆxR7•?Åcî'„€Â@\ÝÅ<2rÚwí}=+l‹ñÐsÍ Î½ts~îž!>~ž™ýÄË!ôëõ:0½Æžç|àb÷ØÉŠ-yu¯­öØÕžU=Ç:á¦õÚ<üúz½gH–ýh¾'Q»‰;ÿ¬±?°ko¯`Óæ}f¹GÊzÕ¿nŒ<ö‡4àØWÍúuø<3SŽ™@Ô_É‘bAAV=ª¦÷¾Ý"¶=âµ[Ú]îüf?@›m‚»¸y"3Y¹¦[Še—÷­¦ ).¨¡Â|¼ñ»ÿ¤2cÆ÷õ·t¥VXÃ=à^Œ–¶³'Ócöé@€äTS·ˆR Ÿ© Ý¢lÁ~„¬–°gáN^ ±O[Ë´¨$ éT”5ñbF•‹–¹|î³ÉK”ÕõH¡uj.Ó°ˆ¤.£M%S yvYNäPõÓãÂ|®»?›þôÏjA<óº˜lWÓååÆÍ¡^’6) mBÔÑL‚ãæ“ àÀáægɆÇvÇ-Þðû¯ßñ/ÿ;þ×ÿúÿñ·ÿöw|þñ;(8€Dnrú|â?þüþüþB–$„q©LôÈ`=WÆôâã°/_Ú4\û‡–dÂ.a¹ÛKÍf£A‚p¼‚=“öf"ÎbhògcDR-sÉÿ'•äh¥¦蘋!DÇ 0ÅxóÔÆÍ † ðØÓ ÛòB¾2ó.¬ó¥1¶ÿü¹¿Ûyu6!ã>’%A½ÕâÊVØ;"Ðäà ¯•¹0è$¾>Úž»xá‰z“O¡3ƒcº•†9'íäÕ„œ:é^½# €Õ›kgÑ0û¸ƒ¡0ë ÞAÈ"ȽmÚ£³õÁMXxò¼È-™.Õ«X—¬  ÿô¨302j uY‡Š×1U_EL C¶2¸J˃'œr_‹sólÒ®¶­ûPÐfÜ>¤íýá4 òž8㥩ù1aÞRs™¸…ÕÎC7{ÊÊ×løÛÚ×ût%_[íW¬“ñ»ø°‡h”Ó!€•q}Œ'{\²mc×ÿ׊â»ÀöÞtgÇ®—÷¬¨r<“äšÈ^<£z &ùš4+zæP²£ ,Ô3@ÎûT'ðb`ÏÍ+®xHsA> 3_ê÷ÇûƒÌµšsÚz³•é÷ÇLJK”¹L}OVRëu½Ïec§×éb/Á%lçH|ˆ'`晄6„€¸ï{¾&ŸhlÛV#¸Ë‡®— xÆ€W`$Ê-õÅéýsFЄ·;w½Ò +t¶b^Ù4~CµÓŽÙtîûÄuŠº.B˜z¦W覺ÔÑ@m#²bœ#FK. îÅ ¬XjF{AB"—t ²Wôøw¨î?øœ¡ømE5º¨½ž^2“Ìh.T0bµÐœI°Þ±qÎ=ÎtÉ 9Cøû¢öÊ êjZ+D§*36`uQܶ ·íQ¥~U®â ,†ÝÀw7ßûã?ð¯ÿú¯ø·ÿñÿá÷?þÀí×GcÊï¿ÒÛ¿3èßm!I9#wºáRXn›£1FhNéÛj’ÝëÁ{vËœL£ŽÌŸM¬{ªq/¿h×ÉÚߢ?kïZN~çìÌ€÷§÷Éãj.@~ê9·š²Ÿ€zâO¶¢RŸ=Ï,a9l¬Ë„튲™P6¹2Á™Ù¦ïX}³ŸVŸ²ÒOŒ‹d€ç‰LŒ±R«Wì¸3±þõ÷4J(CˆîÍ’§óžÝßꘆ ( DxÕuÁâìoÁ½³8ºáicDɞجP×ð†tQ‹ v`Gi(jÄÁ)§ @ µÚ > DÖD Áf¤Þ{e_‡1ýËbïe¯!–ü8“×ûsZØB‰*‡¥ùzÑdÒî8×ÀäÒrÆ–±º-͹4G9ï(^\ÖÜD Ä>;‹šÝ¯Èè÷žÚ¨¾/ÉùuZR–Î<öD¤0ÎØCïÖ—3œyR¼jf“íÕºµ Z˜‹üŸÈþÎëYÖ,óôùŒU}ŒñܳujÒƒáWììœÏYêó€åð3µATß\ÎlØÒ0œ­ãýáŠ%ñ®¢7û‹êISÀ#ÓAºiǦ8X3ñrMí'äõpòy*Cz¨1jBè¾ãv» ì“ñü) î³ï¾N¸JòØnרf—!êprà*׳f¹HÃà&ÆSƒ¦<{N[@òXCí{žØÀMå’R{HÉ Àꯟfæ®3ô&_¤Ëûk%K»bU­<”úºë\­·xoÛÐ) ;v¬4%ø×À&tqq|uµ ÀÁ ßÀ¥FD&ÄÊØ2 'r@ˆ¶Ï°ß½\¾ m=³fQŠÕN?,ëMξÈñ˜ ×çÆìã æŒ¾”2ìÇíõó¡¶Z¥[öŸefI =uçÅÖ¿ßþù×d„smµ–×V ­¼Üă^æcۛїu£0âJZi‘)g|}}!û°²|žÛí†ÏÏO0ÇáX®ÛEŠô,¡>€µ'÷L°¯RÄ »ªW0¶!ãÕIŠƒð’J¸ZJÈUß'ϾbåõËšÕûíñvpŽbÁÎК½ {yö¬š˜ë†bC2÷¥ýãc¿1ÔzÏfºU&³¬„üʼã¾èÇà€ô׎”öv“½š¹]-#cÏ Û-@’k6E@š‘S‚ЧÕT¸‘¥S¼)ZáÖâXËÂVŒ_ç‰ÕØä®ÍÀê÷„¬©#»˜^©Dº“HdQhÄ`…LZõÕ}¼'±âUhŸå½ƒÏ[”ÂA®0ÓwçéFaôÌ C_ZÒK ŒÃb8oVa*ŠóÂp¯äT æ#Ó-¦…AW&u c™•¢£HSÎ(¦óç9‹*íuºW´~œ‹Ü~ƒß‚Ô u‘ÝÍÑ™rez¹ÙÆ>îwÜo!à~¿{Šàñ~«EÙë™7<¿w¨"Ü"ã÷_¿áßþíßð?þçÿÄû׿#Ü6ð-âÃÜsÄv HøßÿûãûûD7¤”ð|>­1 7ܶý¶!Þœn~Lž"ËøÜÆÈL—ŸŠuÂÐ<F ×ISþŒ›µžJC{SÈÞ`wn`j ¦O'Bed͉1úM«ktaÒ>Ol®šØ+‰Ì• ©/pú)øÊsj¾?†äÉKÀ·5Fa˜¸ô÷#AÊû ’övlÙ¦£Ž`œ "lÛ½nŒ=0ÚÐåõzË~S\%÷Ÿ¿o®úc""õõ{ãUk`¼ÝÜx2˜§ÜÔD•ÂHÈ©{$ÉfxhŠ­+izƒhûN~% ôû‘¿W¼l€<Ù“†”¬!“— ð†°E¤”ÍÛ€Ká»#¥Wcri #1à›Hñ|Z³˜’ …Òʶßcn·ÛÀÜbÌž àããW“›)×f±ïϺÏsdhh²dÃâ#Xñ™2²ìF˜ó@BGBN–x\ϯŠŒ(Dl›™Î§=ãöñ@” ßýeÍX¡ªj)ÉÌà ð©ûŽ>@ýlV§„£dcdæN>ÅÌHûn2ôRlºt«°i*«D'€¾„¬L¬Èz•À”/SP+ƒ<Œ LŸŽµ^¬‚hæû§ì¿+ ïL ÜË¡\wŠ,yHÆÁMÚ@µ2M–þ?À%»¹È˜ÇÏ9šJ—×¾Ñ6ï™m0m7ð¶ÕÁ1…n_äP½±$˜ÔªÔ!›ßÿ¯× ·Û­òª€Ý¾—ëUV„Ë´{Vƒ³Œœ$ÙcŸ¯o_§í<§ç7 ~o{ŠëÆaì»3U4’ šÜ¢##í;î÷ÍãÞ9í¸m"©cˆ÷‰„¨Þ`CjjK–A½÷nùwÎÕ½hç¬ØósØOUi0„îÁ¶è÷ë³Úwö¥\É{g‚~PUÎ×Ê{ô̈~–Ä%„ÚÐטþ ÔÁû6òF½x^1œåÁ 1ÐÊý"±‘¥&ê²aò=°§^›üÚ€ÊâeùhÖݳCL6±m÷zlz ”ì 0p»È3ÓBœ° GêøÕ£1xÒ\ ìÐÉ‚f” æVFÔˆFùY?Ȳ^u¼VÒÞ˜Œ«ú­OY15½ZK-Ø×³3s¾‚ él¤ô5ëóùÄ××^¯žÏ'ö}ÇüùŸõõ¶mÃý~Çãñ¨¯]‚ÚfOØ^éÔ«ö}_î›ýy%ÓãZ_Øb4˜c8@š`L'bÆ××nÁy(DhÎa3)5J.§Ö»Yú¼‚÷”ž«Ô…à4¯#9g(ニ†Jt ÄŸøúúªLgß í³{á×ëuXßj-ÉŒïïïåúVŽ]œMoç0¥„ æ;‰ [³€pƒRÀî,¢´{á-’ÇFõÜnŸj’«°+¾_ û.œ I÷´DõM¤Ì”zÙÅ*iI&½ï’Á&=êÄÜ2ô½4´˜PZÂIT—ºÞZY!ÜKsÔÑw1|ruh_x[J…~â¥1{\Uоó9a`˜"ô}þ` O¼°?œ´^H4®<®®¨Ñ3íóì1«÷S> ÓÍ¥’·¸yÔé†Ûn·î÷<K|Üñ¸b»j½ç„=+>Ë , "üöiÆíÿò·ßñx<@7ma‹U\dœôÅø}ÿÏç¯× ¯çk`K­ØK+6Ú•ùðÕTü]òà•×J¹åbº¼Öú?ýäà¨}¹f.^± Î(ÏGiÏÚòê8üÄãíŠexæKs–êµ¢·×Ÿãzr&†ÉÊso%y't”ˆzÎÏÝo¨ýsYË—&þ3Ó°g&ª*ħ,‹Â` 5ËãÈRr !HHH I$Çsv¿ýï+Í ÀFÏtù`tM9i2 ‹Œá+PötBQO„1€Ë¼«BØJ£ÈÒÒgF¢¤²d­b ëqïØ[Úí==›ÎŽqwÞfKÀcáK#0k2&­ïªKƒÔŒ=}Àœ}¯µOXŸ!¾!•‰bDÎ6ݳ ,%ã+_¼wi¥K Õ¢hïcŽð¢™Øú5ýzM:¾§ˆ\ËþÄ×ïÌrõº³Ï“|nÀϘ®óÐJ;²+FÛ÷ÌPþ Ì[­³BçõÊŠé{Ʋ=óUû Ë| `èÒÓsdð0Åñ{Ê0¤0 òîÞ·dn C(Lºü,óšÞ7gÌl^Tµ‰ÌÊóÎ Aiò ãÒCVpr¶µÀ­|¸žDeðÌéMðû¦Êú£llfF‰­¨É¶ÃïUéX[Ñð¸y€ØÞ]Ö¼+fu öÈsšÛ•ªãÌosnDt*‹,Ò¼u z¯XéVβb4/,ë)Zz=(Û÷2°ÛXÝL¦\$€”DCB$“³f„ê/¥‡tø¹ßbâƒ÷Ùñêû®zÝ/€©~p_€ÛÔö‚í û:Û+zMa!Éž«BÃHcýÕ{cjÎWÐÎûWô,Ähš àçõH$Y eg€§|žAÊÆ V¢´û¹½Ýú#¯^¯W•®†•!ÉñàË4L²,ﯸºZãUqÉ@>Kql!Çúº_‹ûAÓ¼–ÀžÒPÏöýu-•/{õ†iØçî9ü¼deÖʀ¥h=`™RZîÁ=·ûˆœÓId:[¢ ìeíxÁ|žº#'Er]¾r3vU§‚ÆÈx!û>Ø57gœdä+W‹pçEAÝà¨êi3hש"~cr@®¿_šÏU!F`[ì„<5!O‹‡€±T2¯ R3d5~ñç°%ÔíåâZåýf27`314¤Üo~R=yŽŒì›AXnf‡†â <4™·;“ä=8L‹Ü¸·$|_.‹6µ÷wÀt¥Ëž ŒÙXü]ÂÒˆÐÿnôö7<½<Tm¿~Ãçç'>?~ÃíqGt“vHj¾UDE~=,øý×oøÛßþÀßþöî¿ÐKÜ"î÷;î÷ 7/,é¶)íß;ž=ñúË6§¼ $Yy4­&”8ϵ¬rmâ¸ltŠvZ±HÃD½^Úd­yH™Â^IΤ»Žk v'$>¹N´ŽW ÒY±ñο¦1zz3Ý…gž4½~^f^ÿ“æò§†Å£ÄãÜ/«€ …QyöþzbµÑ¬À©òõõúߤK(hùݤ¬HÏçu¹­ís@ŸI3E%6— > p(ìœRôRgÒ Nþü#kª¤*²ûÈHBc¾”ãÌŒ”^5ɶ0EÈ&¤}¯7õø1(ZŠÕþ‚˜QñîÔÿ]#æ=Reë•Å£ƒüÕžHAR2ž¨¯ßÒ€£j"B5 Ê²H)AºiäZ¶k÷oño±ý(Öa²€Xš¿c q/ÌÂVr€$污 øt˜ªWDñ8òu2ÙHÊ{”嬖'dfÀÅŸf4¿—C‘âÇ÷èꞺò¥›‹³«áÂO|kVûÕÌBîÙÓ’ŸûAV®) MНãyVX:UIRl÷u^‡RŸ·]+¦í¹€âùTX|d Ì¡*Ý{ñ¶¾øgj‚3ðêŠk áüó®åÞ®Ñ<ƒŠÙ°Û<*T²o3)Ö¦»®­!ú÷c•~Äpk©ƒž¬Z›—èj„Þc0Z:rñæãiR®4ž“Ã>Û'‹+ HYlµBLˆU²Y#Hª×ªdS‹Ü¢ï'’ »7×V„.=§jýÚ5€3CjnEÔXD¢Õ E²¬jÁ­FóÇà“Q.)ƒDŸ›.kÝw`ÓÕÐk&ôƒ…39ô| ³³ÔDÛ瑉å_¼ã -„€‹ ÔWT“ƒƒWÁ™ÝÑ.Ø}ÏJâ {ï²Ëyö¶rR…}©¯3âæµsö¾*é{Ã>'víõi¢CMÔ±pÄÓ”‡:jR'ÔÛb‘F¨>`4Öe_{õ@XegÀ\úÎä×!7¹æ [5ËŽ”ÓA½Të+]3}_¯ïK‚…f™€Ž‘Y¿ ™ës U>Ç,ó.Ï÷x<ðz½ "N8¸G I•5¾–ÔPVä²ÂÐ(`µ&„ˆ¼@F•OŒÆ‚z:¥›§Zó‚X(×?a­ô\?ù³b‰§y%}]š×šÁÀ‹T5­hå?ÿçlr¼bpÌÕ9Íã*]nÕÔÖ 6¹ !âq»áñ¸ãããO|~~â~ûÀïû|þú¿ýön»%wy±™4aÏÉ6gQ¤¯tOøõû'~ûí¿~ÿ݈ac„°Ý7ÜowÜ7KMϾ~ýÂo¿ý†¿þüÆþçÖÔÁïïïƒ<‹Ø¨ï«IÞ¼ ¯"~׉FçSó3† kçöóÃß9\‹ü³Bíê:K¼ZXÇûU—S’«FsØÀ˜/e´W¦ì+¶ÆJÃ>0‰f_zÏøš'=3•wå§³ôCY€Ì3Õ{fQÌr„9%æ'þ[ýýÝoÆ6 9ì†Ì½!è0Ñv¹ùxÜÃúó‚–iNYM‚XBûh\[9yÅ%¶ÚøsM‚ˆfŸVGû7‰KÎ, Ò™IÇÊÈJ¯ ÕŒ”[)Y‘÷Ý͛á­^\ òó9Ŷ?öfOHÕ¢/ú‚µâêC%(Ût?ºœ#Q(9™MV,eóÕ†dÃ'Æ/Ä‘¾Ÿkf*ÎFÞ§ ®î3&×;€k%ݹb&¯Ì•œïŸy®3f×YãÙkýDJ=?&Owýºø.ÐâJžÝKÔÏ<ÎΆŠãçøZ­Ogrªw1ëpYï‘'ú¡w¿NðhÅ8Zb²3<¨ÜïÙ³fO²x~& fŠÕo¯]1ºTHí/{[R„¬—â”òy镆1…9YÍ¢^·°±4lÍËMQ¡ ð‚ƒ]"•TY?"Ò¤B’ ££„Ùu;Þy`È„°¹w•v†ÇâƒKh@§d€«–j8^#f…B„“ý˜'¦ûuí|V#¯‚:úëdpÐÞÊp)kщôÚ>³Öz¿Y‹Ìõ»ù{…êEe»XK!d ÀB´‚³2˜ ýKmß …q­ÐL-„…¦ûu‹†¥Á 7«xÙîò<@ªáºv©¤3K‡Ã…•tÅŽÃ XØ¿ç×ëuNËçºÝn@W?@Wh{G£,мBŸÉ똜Óèu\ެc«¡Î $Ï á•|vüU_¥"[«Çä>‚Ký߸iÐ1ÆÀèÁ¼qOäÃù+ëÍjíïͲ:˜%@ìd‹öZ„>•(@„†dÓvœóéðd¥¢¨!¹yúŸÁ%ÄF/3xxG”Ûá|ÏkK‘®hñÌ·,ÀóT¼?·ðù؉ñ¤.ØI.o6z”#2Y™(4üö l Ê…Öoòõ¦i.EÅDͶ ùÙ>™ë#ÍKë½ÄC‡ºˆbÏ\7£I1O0E6KLS§Êl"þçdk3š;³æì*åÈt ô‘Ø«÷Ãì›Xù0(”0ƒªÌÛÁå™aWÓÛþ¼¢Â'ºæªxïo”¹ð+¦‰`E~=ðøøÀíã†ûÇðäQ‚ ~¨ˆ]û1@÷ŒÇãŽxßïI³IdXAÁN¬ÈÛº r)Fö}Çóù½,Ö®ÎëOä!ïMté-(vIáÇQ2t6y_y\½+PW÷=¬@橾öôÁIauU¯šê~š÷Žá§“,­gbé›udß÷¡pé‹°VÌé•ý}½‘kÞ/a0|—˜_yB&)æA_Ó–Ê9Þ}ßÔ¡Ñ%ÚÌ6'¤z¼½QRkº³­-o ¹lb°ïÙA9A ¡ ÑTÍÜ Ó È~¬;i`ÎHõØ*ÎÙf.†æÀªƒk|VEa5Õ¶¬–ÉÞÔ(‘7£Óûq²P0©²B‘K$ÜŒ^Â…ÄüJØÂfÎ3û÷§kÜ[kžH¿åçèïÀšÙY?]ûV)‡g)´gl³¡ÁÊÃguo^2£.†Q3Àýÿ2<ûÉàc®Ñþ™×9kêÞƒ4Õm´d`U€‰€Ø×:½_žRÊæß—µ·ckþ[m¼ô°L#³€¦k§¬Óæ_ež…hÊû ’3¸ à5AžÚ}.x½,dŠ!5•-çìrÜÎVJ››jª?Eî¬954˜G£G”œH‘èÒûó§*…ŸÊ]ÏÒg÷ï±f¤ÓŸé`бÃqL2o÷¿ hòÁ"ÿ+É„(C&ž*ªšThÃ¥@è5èÌÊÉ=pOE’pðù9¥Kº¯²¤lªyPÑÌ@~ýþäA6{-ÍõÑ¡·4ô{Ïœ&>›¡ÏuÚ,Íë}­VkލLájÇýa¹fŸxž>=óhu]žIíÛgZ§Äž±CûäÕŸøR¯ì9úýëŒq;Ÿïùù{{޹ !€<„I²Öµ­ø„Ùq;²ÅÆV QI‡š|<ÞkÿíH±|†ã^,8¤õÃû·Ç~}}Õc=‘=p2¨ êä&\ÕØ–øðàá,¦ƒBEÄ@¸±"ܯWÆë }e›ŸrmHmÙº“AÛ†$ ͂מ‘3!Õ ‡5¨eò94xžÆ“‡OñöW€P›nj'ÂwÚ‚‘µÚ´zG•ažl‡”8˜÷Oy­¬n¡¤Ñ8£©#\5ÿœ"ÁëþƒnfZÓéiW…æ•”¯iº­@ȵên$ñf¹jZy¢ãÖ…J™  e})ð39Ó*¦üLBpe`~ÕàÏ_ˆS¢= Íô×ñq¿ããqÃÇç77lÿüõÀÇçÿûßðøüÄý—™¸3² ÆÞ(f¤´g(Êû°hÆÈȺ[áv“MEöôľ¿ŒFêSJIy|ýõ×ë…ïç·É ;“¼¡!’ ÙØpä'ż]ÓÚ€*/I‡5ïǯ1/`aºg&D­cžù}£‹z(¬l]ùM\m¦«ß3&à³áŸ)h×Í üèw °b‚]QÛWÇ¥nªýï:Э+ƒxU¤¾p+”wZŒ¯hù3õ=¥„Ûc3˜JAI•1Xö;8˜Ä¡Œb¾‡ž*;xXÅPA˜ò¼«ëƒØÓ·ºt0ß¼%ô|½sårO…@ &¤8 ÑŸ‹Ôä7 —òOû]1¶ÍÒK2D2H âñð̌ܳÜÐ r#%§6õC›îŠ ž¯Ô®›‹$¸~roLIc“eQDj:2°²7“ pcêx»›™=Û”1ïÖÄê¶áõLK¦:u8p€°,ióG³áó„®9ôl‚~µ×­îùÕc®˜OgR“«ß_ýÎ|Ÿ_Ï3ƒë¬¿±®€«ùùWéK‰ß›’· ®UØÉÅþ±’˜Ïƒ€•·gÏŒ]í -õnÞ+q`Ž7=»´¦H9†õÁ÷íæQÖ›¸C) ÈüÙý>ù‚5R˜WA®Lª\S^sÎíß{ªëò¾ï¶R7¤Kž>(ƺj¦Ò&$ØcŠühN}ëÙ %ðÿ²ö¶Û‘äF–à5<‚ÌÌ*uK{ff§ßÿÍvÏiµZRUf‘ŒpÌö‡àÁÔlêèd‘Œdxø`ví~ØûS½m–³K•«d07ÿÞ”,&ÿÁÁ㦓R55õ`Œi=ý¯[g À³Zðìž–áz€X@=œË…½³7ÛÀ"””w÷¶nË_ëŒd6€Œüuí}jÉ¿å÷¹²Ç¿†Øë¹x7ÿ¦¨cÝ­å:0q´¶a÷íY8cˆØÌklV‹·+3wã­Öoµ;žfB&nÈÆ'®TIf,—ax±ÛÙB»…fij|uànvÓ°xhinU³{¥Iešæ´‡ú]rølìë¿auÆHn×ÛXî?ê÷—Ðî/ nÓQe=lÓ<Ûg½ÿ:LÁѤ:Úa€U˜âÈu@Ûöªûsx$ºØûÇføyÄ|B$¦iÍQjã$¹™Ö­*núã·ã‹Ë|`Wž•ö\Í6QRbÄ”bFì ~vÿ͆貊%Z Aq‰„À‚Eš‰²7Žöàd0\zÈã¼°b ¦GÎÉL?5 ÑMèv£=(!D¶g\ÃÜ1@F}8ÍÊYN z˜ž¶?„²sND*K3U}üÅ?¯¶if »|Ãú™ Í·›Ò(w ì¼Oü½ÊƒÀÙŒl[”Zü8F”÷X,(¶)x5.B]D| Q¹@­)'… [ÓÃD@ðí'ët:÷,EðQ"Êl£nãKc£»=£îv(9\>g®°B`Å×/ ^. ^_¾¼^ðúå ®¯¯øòå ^^¯X^"x ‘Á¬ `;3@Á¨¬’\ZÃŒ-[²‘è¾a°)åJ‡.ˆùšî÷»iîÝPY )c½}à?þ@JF¡—´ÚÏëÄÏSb…æÙy®°åé$¯õª;/pû±KÏ®Ý8Á7§±;gIåj†"Eòó‘-6RZǯ; ¾gž=c?œ³Îý¶f‰f3†Ç3€óé}hÖ/î˜Eó Ê=Ëî쀒$2›N• dûùZIâ8­,^XÙ6Ké!L¥0¥Ø)þŽ¥˜ˆ1úï´ï ‰Á2ÍÖÍýÎ £¶±äžÐ±c[#Êöv™N¯á¥NÎÚTCÕæoë7Ãó|y¹6©=E à î´p¡¾Q«Ÿ¡Rò&oó¦N28ÇDœÉK ®²+Böc†²¬@X/ ¥ÕëÐH‹šéž”"»ô¿=¾”–ë‹ÅTÙSD R†ÀŒÙí ´R²€ 1°•…ÁX˜@[FÚîµÁ1éÄTŒl÷&‰ËÕ¥"$»„ê…_YÇXL”©›ž@g d{JàGÿ<ï,Û/ØÂ“ ´Dïÿ8+Ô[?‘ òSÒÿÜvûñd¨Ï*ûÏîõ$.õ‘þ÷X²35¿wÿwÊ.%:aµÍ@¿3V›ž ~vPól˜pâYàÙ¹ŸpG†×n†¿‡s”Ÿ7à@¹¸°¢1^¢%¹pÖ<ïf¬þ†™-*»µ=Þò¼ç&q™¼¯Ù4›²f÷ÑÛ|­ÒN"¨’Ü[ÙÒ[5gä´º·ÕŠ=)[PLÛe@íÀ—:ðE{}Eêü¬¤²‰ ÀÊe °K‚{ÆÌóá˜jÏžÝ_íïþÙûõ¬¯õÈþÌ}]^r4ÓÖ&ûƒªLüü2Ì“•)øþepL$Fd¸TßÎu€y)Û¯![šš¶6x"Ùò@‰VЧæ³Å6 ¾·…¦©Dj^’] ªš¹x_ õ zÇÞ9‘Fã„Ù{Ì´u_aÛ|F‘2úÕ{‘É}¨úŸ•:d¯c SŸ}hUXrÑÁ­àìE¸|2:kÇV|›ÎZ×3'Cœ2šFFPûy[?ã90;®»l„‘Pî—à€e¬ÇÝÖvüTí\  ¼§{ã–½×úŽ¡DEV;*¬F èl Û3aå8Ú3ÈŽ²ß’ÎhI–q*Uݯ O눺þÑXÃØß×åÒ1°v™ªvé×m==ÞË-8<*9âu‰ `rÀ@f«./+Þæ±QŒÝùžÌÀUSÆBŒÌ‚ÀŠûö‚ëuÁ÷?ÞñãíŒ$Ò¥p¨ Ø£v¯ª +a¡ˆ{$,!ã}MX·ˆM)gpðBMÌp&jÞÜL ¤Jî7|||`¹^qY.ˆQ²3­`•Œûí ïï7¤ûŠÍÿ¯ÛŠûÛwlo?%c½¿#m7ȺºgŒ5Ù¹o¢Š¬{¸ÄÖ4“SÂh*jM£”sü¢5vµ£aò“S [Ù@l€€º‘¹d€›©°§2ScþlånìÑ­h6èØ€Ckݩ١6>á^†,¢>½ÛÙ¢½4ù¸¡iúTV#‹Ôd¡fBA8Ðnëä«R·ùÔ§¢Mq9+†öt:Â,EQuU²h×@ÉÅY‚a >ri¨¶v"91–œ±5FÎõ˜‹wÉ©DƘKžHU 'v†l)Ö‰±ÄšÑ¤HIºkò¥Øz`Ó9› gGuî÷­‚OÅ@Pļøîéù-]Úó|b@lŠƒàMaÌs-К–SŒ“s¨ÜkÔ³Hò³ VÔ#V)‹4ÞIøÞ*γ4¯œ}z—Š¿ *ï“OUH¶<_qvD& I´!mdÇDb²¿d!&õŇº‡¢´MRÛ|«âããÍÏah èÜ| DRcs³yÒ „)¯ rÞHqY".á+n·w¤-㑯EÒjÒ"(â5V®P—! BܧòÕ¯’¥6´e]*Ÿ­±PÏ, tÝZÝk²³TšµÃ Pƒ½OJ&T8;ѹã­wæždמcóBTgA÷òž*;-š•¨Œê—–‹_Èö1ß³M\zê^_ÙKñáí‰e Û†ˆÕj„’)ÎòÐRÕ¿îùj<^̰;Ï›»½8ìl*t6Ø)! Í5îÀ€Àµþ8ú ìžg&u=O½$Ù÷Âj¾Ëb~ v ¸ "'Eˆ¶îQˆˆMAagP·@¸”ðŸçÖ£¤LüUCõÏ ! ðQ±t)±z$kF’ÍéÆ&HZ XJƦ2&nFrY Á}û$h%4¯´:xŸ+˵ÿ¶æêÛ“b“­Ö3vûhRåæ{ÚøÀ6š¶eFNÒù‘ëÝ @0‚Rx0°öá3x’X¶ƒÖ5e<¹?аhúà«vRžº–Ñ&÷ΘH„l* šª(¹_ZëÞÀ%A”=UPÌ?ÝÁh«>ù\&ð0•H{fíÌ#¬LÜæ?Ó§¬ƒQV4K6y6%žJO~6z ´ïÛBø×ÍÔ´M+{fx‘§L™vb8Þ%§˜žê ï{`\.—Ž¡ª•¡[öÕ–º¾Ÿot×·00C–UMÞàQ‹’=í¦LÊrÚ¼©óBº0×``H™S·%UlÜÅ"¾w HkÍ=óå(¦¾Z€tC<¶ÜgÕ·ÇMÿEÄiÿ»DÇž|“‘˜œD—à¼@Ü+9lM7([sB.S,Àȶ6ÇdË%£0<¢ÝPg/ú$šæ^v{Ó¨e‚ö2cƒ‰¸÷&Ó~n‹6ù[hÚšÎ$àÜ=7g錕ÕS~©cÉ=:ô¤•'ì¥ÑÃ2«Ö©½Ÿ1Š?«ýfÞ1íëFÿ3fì)Ûjʲ÷ºó ”G̲·i l±{àY½M`ca1–ûÐŒØL7”ÑÁªx0.>®3éSm0\ÖR£Õ·½ù™/§Ja_mДq•D3"1Tàë„dANækEp_a]¹Ùô–îU6’.Õj—›År¤ù ›…¡¤>y;ÿˆM}v¯tçPéS «îÙj…v8³y–0x&‹® }®o óñtÁ¦‘µ”Øf ª6€êÖèÎ’qM§ºÑv0§GfV½žÅXú2a›“øÞЛZ&qI/\å±6 7FdžÔ&Å"@û{cæuÔJ)G¶Ü(£íNê5Öy\üÄ ‹rv_%°Ð%D#³^èç×àƒé (R4ÕAŒ²(rZÛL£Ò׆aX=gå>x+„=HFC•­»?(7ÃsAeXK Ù‘½GˆÚë3z0ýtý~³ÇŒjг}eϘ{3+³ôÛ‘¥××bñp_ÎÔég]ûÀ1irÖߴгGÿNzèÍÊŠ·T«±ö”‘R˜ØÃ l9™‰ž’GŒ%×K„È·Û [v:g–*e0Y¡ Ä%˜gTXü{‚ Ì N@2ðJY©2ZÀ¡Mùh'rx¥³É™5Ûý$P'‘¨.“FÚ™@n(•؈缊¿X4z÷͘IŸ}Ï3)ëÑŸ$<¤oÏÐa# 'Ë“°ý÷jã4)„½P,—pdZ”‚þÀ;l¤zÒ„=OaÏM›9lg×öL0¶Ú©ÔX¨Íz’œ4»‡À£ DÔŠV`Iù¬þO>ùd—ÿó $:­Ô±+šÏRÃx÷ØéäÒß³2Êýûo.ç­¬é`¤dŒcg ‹m¶I/„óX  xl9ÌRªá=YCÊÔ„³ÈTišBfvï‡âÁ°'&SÃj,¬QÛb­Eb J¼(@cÃP„1x¬ñ¥*‰ÞUå¶d3„§8©þµa@¡°Šé_…_ªßÚî¥D½ r\Z渖©÷Œ‹vÛ'kG¶hª ?W'^EÖMCÁ™›¶0¸º pglo„cì©lÇzì™/Öl¨P½\NŠëgò§ñyŸEˆ?ÚëÎz…“ÏŠéÚÖ(ͪ]Yå-ˆ[Ú ºz 1ÕôÐ`²Š/U"ck̲¯%Áü°¢Ë ³J]ƒÊs׃›±9o|8iݪGg±v ó¥b5?>óŒ50 ¢fb )'hÚ ¤Ë‚”¶º.#Ë’P ¬*¾=!DSm˜Ñ‹ÝB!Sz&ÙÀsòyRs•¹Ÿ„œ6f¸zâú(b<ÎYîÈêx6<Ê>}°M8ÊÛû¼Ü“%8žZ·v` sؽ u·'ñÁý—û!Gé;úzÁë¦ÊØi™•“ÚÉp¬²›gˆ)p¤öÃݵOF攇3¡ZšLØá¹ŸóèçX†dãkëzY-ǵµÈ‚Çô·YàP{®ÎØö­lng¢ÊkÇã,-·ü|ÛšjÅ„”ÁÝó7&£ŽR¿‘É4ªF‹‹4™°³ð»ö³´f:Y{ÎR€Ÿ 8>C ÷Òé`·Þ/ýúUÖïrl¥¾žƒ’¨ØÞWÇ{(TPsÜgkçø™â¬A(ųsn‡‹ÔN˜<©’F¿c%,ÌKÄ/__ñqß@HØœ™Sü=Š“ƒ"ãÔÅD!ƒî ΊûV&ºÞ7?ù¬êñŠ…Œ¦oûëFsßlQ•(>nŠé4‰ R é˜ìl6€ŒòìhALÚÈÁ4Ý|åÙ> Ô4Ogš÷þÆÕàû\Íä€]Þ=¬JÆN÷ û¯ðÍ„{œ™´ÿŸþyö{Š<ÉtÞ‘ ‘ ,‘q]"–À.Ï–Á*ªXƒ%c!`ûxÃ5F°{iiNaˆ¤J²aÛdsˆ-á}Bÿ[f IDATÛ°ÝW¤”ðÿûáÏþ3$;½taȺbýãi]°ÞîHkÆíÝ|¯ÊŸsF–hî'`9¯šë„Á63®&Œ{àñcö¹ùåqbrnù¾“âÖ5vÃ#öj;á´>=^¯é)£x:˜¨uÃfÇP'è!^*¸´¬ƒKŸ.u­(uñ,¿¿Ì™å¸Œig…ýT$Î"êl)qO¹ŒìÀTN›ý,'(„Ô†qÛŠ,[}f²ÛY°?ÏëzóFJ‘¥ ë2€ˆìFîû~²£¹#»îè[57ÞïÖðô¬±î³4ÞSü)5B{¯ÆëŒuu€ò¨¾êM¶u𽔺àÖ¿ÜFfoG4*Žªàc¢æÈª/ëÝþ} ^¡*—£äÚC»ŠÉtŸê~fªÞ]Ï“a[韭'³ÈG×cü^ËBšýûœÓ©,KTº¤Ð1mýl˜Ø‡ÑAYÐÖY#pÕyú)ù¾ÍýáFÀ™1%Gö\›9ÛÆûú,0i¬ñÎäm3ߪñÜÌKsÌ–u6‚…Ïú…³µl¶OŽŸ#7 ù³ßw–¢Xãµ: ,ÂYÿ6^§È¡ñ½GGùeK²½h3‘Ý45ØT7,¡6°±¤t–äôäW÷äPè*@V$U(ˆmƒ Œz ¨&7f06Ü7gî‰b…¿<]0´‚ªVªæ±aГ¢økùjËÎpȳƶ,¶Ô±Ú›"…Ìn²ê†\¢xw£³ÝªÝM¿¥ØÔØTªLš ˆ8Oä+Ÿæ@¥u35'›„ø¹¤y ´§5šßÇž¦éøp¢J.ºîÖsç qx@ëÿW¤†gôývámVÔ1âbÞc1.1` ÀÙ5öÁj²Mwˆfl·ˆ°DäëÝ.æßAæá–]/žÄ|mÒšÖÍÁ¬ëmÅívÃÇû;ÒíŽ÷ßßð˯_±pÀ-oæ±eÜ·Œ·ïøí·ßñŸÿïâoý+Þ¾ÿ€lÉ|íZM³Âuü@‚Ñ;Uv?9T ‹ •êþìŸgæî…TÒ;?cȉգªÏësVÙÏLAgÍ×ìµÌÜ%î=:ž3 ïg—ÀÑê(O¶j‚’†uv~f&ÄϤƒgEãt H:M'eÐ3CbKË›¯AÞ:&P6†@- KÔ»˜§C[È\Z“ˆÈäÄ¥¸÷ˆpA’ AF@h@8TÆU™ZNÎ&Ø%á*„CòÚs“–cßã—[i~i c¯6‘šñúr©ûY’ìZø²Ï4÷Ü . © Š ½ÀL‡³¡D¨Þm¤Î*q?Çjêƒèç²3ÅD²û4ªËÙœÒ$ûBMÊ¥µð—Ê@ˆ HAvsZó"DõfKY ‚yñ¿QOÍ 6D F*×ÁOõö*¾~½( ]ìl÷~:LÚ¬áÍðJÌøÄÍè}E×f ¶Ý¼[ëÛÁœžjÿgöÖË7•KeÖµ†ºÔø;5÷@óš>@†ªÏ_ÿRóûv¿©’ ¢šðû(Áu61?klŽLüyŒûéºûdÿ 2+æ[?;ø=]˜Q&ý[*`¥Î¾ a1ÙOp ;,U&X+*€qtVcÅØÅË…A®•µ^yJ ZMɬdæëÙ%ƒäþ+yK;ØTš&5`=åÕLÝÝ.ç È‚„Œ¼%¬«û×9€µm[@Y'K}’RÞ¥Å'ÖÙ€­6q„‡Cгk|eŸîc¸NǠسc& {l=òÆ&¸x_i;Ü>ÜïZ=¬ïGnæ>”œæ‹9¤°“6ií:@dGðÀöþÝ·ö„ÑóexŽòÁ‘™ƒÞÂ`¶.ÌR^woVz˜Ÿ­'gÀÊÙ uT%œ1ìgï[@“‘Uj)Lë kñÑ`¹@ÜßšŠŸveç²ïƒGÄ®=£x\ÅxôHjëÙ@`<}°ö}EÞ{ñlšœØQEB=žŸz ZPþ$ɳ HcŒ5ÔggøŸ×á3 3–òYÛÊ¿Ç{rÆ.;2¥yjÂÞ¾÷ò·Lµ‹š­Kñþ¾^¯µ¨M)êh&ï`Õì˜HA¨Ù'ß)IezX¢Cvýkœø„'Ð¥ülA0ê€ Jê‹Å£óæ®1cWL›=æ^»ÉÂøpZ5LJ1M¤¢ÙÌÿ«'Ǹѡ{L•”ŸHv ”Éý8tú¶㸠)J*Ûy3ßNÐDh7­}cPÓ¨uñ봃Š) lSžT3€ð31À³¢áYÊ!<õ$0Ý×*YÁÈlÀ­hBdv“}l+ÒÇ–ë Ö?°ä ÞÉ<Ë®_¿áúòárYa¶mÖXÝïØîæáp¿ßq¿™ƒ¬+îïøþâårÅëõ—ȸßïøãý†ÛJøýí?~ÿŽÿúïÿÂïÿü ·Û»Ó­– È€l™‚RÌÝX‚Ic(»„FÑM²~¬:Ÿ”â~&'y&™­]s’îwö?jpΞ{YŠè½eò ÿ3iCŸõñ{ÎPÅÃ8û˜|æ=ó™köY&Ö£B®‚püwcQS‹RÁé4ï,r¹ý÷[Új¡R<ªÊ†Ý²3Ú££å7€ÑÌm4ïlýgâÂuz]€àú~¤Õ\•H­iÎ3;[“B¬RŽ‘I‘3UÓ=ZÜü¥¸‘$²4ÃB¥”ÀÂHYÁ ‚í9‘ŒäÛ±˜Jà*¯²ï\%5$MúMaßð^ ²0r‰a7E˜izª©T@ì©fÚxh¶{¿7½ ¸8˜é91P ®EÝTÞ„€±¦²äe1I–'ÈG•µ‹nLÂîGe×ÑAF¥òu9n¯O4ƒ5˜y>Àê.eâ@¹ÛÐþ·[§7ÒF6P»Ik²§³i—Ò“k»ª­´¯•XŸ¹¥±ÌOå}gµ”žíJ͆³5ôÌ‹ålÝ ƒÌ#0üg‡ ísØî!­$nÜgÇ&ÔØTàˆØ$°2E7M. TIg®^f'ûÒŒÑ_¯\¥Æ)%ùS²TÒ’ú-fžÖ;RÞœ}¾Uà*ç òçJÒxÙz´¹§§:ƒ}óf.× ƒÂ°ï¹ý?Ûû5¦„0÷À=hŒõö™L¯îa%AO?^á4åì9÷°Œ9ÈÍšñ´ê)˜ÚŒì"æVBDßû²âoÅûŠ©_›-0}ý(L¢õ¡H±-I°`„Ð ÆóÙJÐf ^ {¸žÌU1;À7’žùë­‹gýÐ ˆ=cŒóñþŸùyvItvÚ´kضmˆàú³ã/2ÆvZÎeJÒýÛ±à&ñx¼#Ãuôu÷ÿ„YÜzl·ÏEËÈ}}²ÆÚ •³äô;I‡sPûü¿Ïc‘Q¶káȆŸí~½c_»Ó!Ù°¬ïGÿíýºßï]:÷ÑË-MÁõöŽ^ÂëØ0îÚD±8côž*p4¦ä9^’9´•½g› s=Unf…2#ZdI3±ë¥ ¨¸k{ÓÀz³3yA:kºµ£\Ÿ±<˜Ø‹£„ŒE!Î ØkÑ1~äIayÆ‚y´¸?ú}GkO™;kÖÆÀX!KYŒ\R¨ÈyE„´*b¼ ‰âC3 iûÀ#Öû÷÷,|Ç—o¿àúú„ˆ- n÷;àv¿áv[±®+>>>pû°©âöqÇÛÛ;þ‘Ûº"ãõrÁ¶®øýû¼¯Š{l·;ÞnoHë»7$–e¿· Œ$D[ÙØ]ƒ¬¬\îOq¶ab)6ý²4Œæ¹Ä…oRiã\Ó@sõ~)&údxg^lg`Å#½ø£ ÷30èügù¢o›ÔÙÿ´z¾Õò¹ øÔW¬¤ÐtDü[T¦‡ÒÙ”å”=æžYÅëÈ4О}zÒ¸cÏ“³ã<“Ú¤.µgÔ+'?^Øe©l&p3êü}¸&ÆŒ“ë‚%ÔÈV×­M-¶”;“Í€&mEÈzÖ®n=/Ú‚mœ®—âÁšÔ}xÄzŽŽŒ{Ò‘;°õ~^\Î{¨éÓ{í1¬fý9›:“€5)»Mr›B›ºJ°‡‡PçŸWDÇšr°zð}?‡BžÈ\˜Ìl)ggi.n@°,WÄåêÃÇ€Ëåw¬*¥ý®Ç51 G˜¸ÐžÊªp¿ßqž3²l´³: ’îМwù H­yQobÔÍÙµ°$yƒƒÝÛ5ç¼Bàš™µ•Œ–ãæ1W|[ÛÏPX‰Ä®P@h:pb²}–ý½7°|<ê÷ç6ÔáÈú@`Wp4j6Ú¯™1#‹é´Pÿº:ÈýϘVcÃß2pªçY¼×+æËÎZ‡‰=5P«”Ìî¸>u¼õÌb z ƒ!v•‡–ds%ƒ@±liè3©îÖõâ\Ÿ‹£7jµ‡ñåaæ‡Ú¦¬Ÿù¥ž…O´Ÿ9LØ[b¬ZV•…€ÈAºÕÞƒ­Ì¶•œuá\å9ÈÀƺaJJ sâ̤Ý-(“3×!JaäZݼVT{ÿϲͷ¡(n§XCÌf žèkYIÃùËÙŸœs74€'—ÁdëåÙÖ‰eðPICèýcÛ{bÈÇcfg&k“~Žæ:×{­ qÏêþgþÞ ŒöqíõAX1V‡דÙO›…zY•5­6AÌ`äÒÎE*çôòkØ(Ë™àˆ,€„`–Pb¡Â›ä¼³28[6ÓG”ˆQHC-þÞg¬Ž‘‚{${ãÀ$i[ö3:æTfòhŠ(j(*)úÅpR ÌÍ…R&Ä x¹HÞlîÛze Óž5LH›“' g ,PÎ#[‰AÙÍÑÏ$eûæ­U®†‡úûGÚåG º5¶Hf@‡øF° ad\b@ @Œ%šäÕŠPBöÈyólßWý¾Æà©ýEyýº®»Ýƒ›žë@Õìß°mÛŒÒᤨ-@5šÜ÷ç’ê±·^båó].—z>ÚúµýùhHß2ÂÚë™ÉüØÛ·’ÈØÒìÄ= hdÅ#cY,m-¿äŠ,¦”jÀA¡ú…à”úl›…ˆ¸l÷—/(±§„Dd·{uñI¡@6ó‰,±ïÂæqî°në–‘X“/\>yIp3y((p}Œ1„nªÇu°FSàjŽ¡38-iƒ%í‡E}€šüf…bô÷\ï–ÉLHžUŒ|ì”m†vΛ Þ%ÍjÅuέrpÏõfÓ$_M"È®w'§ÿ”éünÒØ>@{zMïï[’%KâM›fØ"æcC~–ŠÑ!¸ñr¤¿«‚b°ûRýE˜ËÕ|grÞÀÑ|fR¾A5à~{²É<Þï`f|ÜnÕT!‚8‚ã‹MFÃbŒE¸Ý­8ûçïß‘Dñ~3fÃÝ¿¿­^äm yݰ­+¶5«JÕe¦î׫%%š-Oö)£XÉŸQÁ–üß‚ lšo›¬‘Ýóg@ºóÅ„³o>»fÔ=”Ê䩚0OhÉíúÜéª3ŠðlƒêÞgœ´ gjžÝK Â6XÚM¾õAšQˆE¶SX™Æ³?ß…±ÙzÌKdRÅ⛋ùˆ8„œðɲ4^€–$¦:þ2Õæ†‘óHý0;K†<3hŸM…Î ý£¾ß{âØ„ŒàI+ïk7ÎY¡‘R2O§æ˜RÊÈëVÍ·”Ð"$g+-Ëáž®—WP1OkGÓ.~ÉZŸŸRÄ*ÛjOÕZïw,Ëb b)joբû¼›:;+¤H"___;Àªó^ðór¹D«ÜËÉX!ŒÅÍ5?ÞÞ–ˆÛ÷ƒ©’I? °%º½‘[6vVÞ’{Ü1~½^ðr]ð§¯ßðåå VFN+Þ~¼ãû÷︯+~¼ý÷ûŠM›’ ²KoiFˆÁrI-«ÏDžžõsJ¸Äh ‡bN_Xì~-¥€¯ÓÿVªT$$ Q;"eРj7ì@”"¼§Šnˆñ IìÌ®$!F¨ä}½-Ï‘ˆ¯×\AVcBÙû!pMµIv_¨Ç¹“€”.äÒÉÍ´,‚˜çÚ´îì«’B®ÍßÒx dçXûżÈ"D”ËÞ±3Ñ TýUE=Õ±0hT¡ 8÷Ækå(:YÃ*›c6D©ÃZcä&J'-Ò¢Hh×|BŸ,8÷¼ù¬—ã…_*ˆVŒ%^«<º'†xq©°I[BŒþæÎå½·m××K•üÕ¦-ÈfÍeJëXQXQj€Y6— &¬·B°5 ¶ޜeCÎæÿY|vE“‡Fò¶5,˜ìÀøÖ­×mãTšºq¯Õ*§ZçÍíè|ÿ|Æê?“‘Î$tKñs:ª¤4)¾w«ûŒ¢0TyY Ú `À‰tèèS3zé´{u >I“›DU.à}a¼Vº>WåNIWGÃè7™yð@Aà’v×ÛÝÔ½X ÔÊ­þÊ6h† 4›ŒœÙöðëÂ.Y=meâ†ñ,U¢·¿7ùBÉHš€@¸åfB¤\<³?À÷‚¯¤ šçgIk§|µ˜X°€‘H¤@$HÚÙMsz(š)Êç"@?+<“P¦OQq_4ÊшÄ7Bn¤‡ðâ÷[FÎ4 @+8`Y6÷3cO· àðaE%‚Oˆ÷ͼáÞÿø0iáºAÀø¸ß“-€yËu±È«QU-^˜°\̧ë„“‡\#{/áM‚[²Â ÂímʼnÄeX~§|R†×ƶkWPt›ÏÀ>À“ˆòÙssbwí³ùœÙÿ³ûßÌ$ý‘ýÁc­Ç öÏÖÃϘì3™Q>5¹N›ËFšÈ¡x·˜pù~UóõJ ·EIîÕþœê ¿xÑ–3uŒ«”˜¬>6IloÔ-œyO+|nEQÁê& ö@B…Ícªê?ܽŒžß«³×õÏœ&,õÙ³0†<’@ÎRèÆº±üø™tíì?{ »¹€¶,£ ˜56 g,È:»³ï?K9Ÿ¥+ŽföíõiXÞ{&œõW=›Œ;à»ýygé1¨fÆûhvîDd°Út…ÑóÄþÝÑ, Ê@jbN[/š„Œyµ&0ß¾¼úùŽmÖ”±J²B†!põ”*©q!P ¸cK—U±.‚Åml©¼§¡üeÓbfÄÀOYÔL•a0kü _hÑ=Jj’2—S_(©NêJ*ÉNõoÓçR¼–‰{»˜/î>Åä’^èºÝÀ&ãSn§jf¾…ºkˆk¿æJ‹vP›Ê³0Ô½L:H°&£0Ø©½¹N2{‰‹o: 8Ûø@«/7t>Žý¿O;EZ ›<Œ†¨ªŠeܧ:•êŒ=!"+°® ÷[Âí#aKZ%¸Ë²a¨^–Åî}®SuÅÀ„ûmÅ–ëæ Å )Ie[‰˜•6ó†` b4FWŒ„—%`Y__ͼÕ˜Üð–¬X³àº0ÖR“«º±ð´@Ñn68ZÆÔùrë}Õ€¶{ •ßÇÇ"AEÖѤ-¤[=û±(ËSvû3‡O§³Åt?)°0`²)œmhsÆ‘¸§CI1+ׯî÷š¥'S0⇅m®1,<ߦ eÔùêÑ®# IDAT ô¦%ðS á#of²;‚MŸ)àŸMÏGÉF³3øÒêŒ(ó³BI L+RZ!Î0½;S+ç¼Z£b… ³r5OçìšàI‚ظoŠ´ÓýRPýÙ³–gC²G,‘Áñlˆ6ö§vZÌöóC€c&Sm_æAÔ²"Æä¯îµ4ªqµ©-pŠ=ÜÉúÐø,«Õ¦MEV0VaWx”úÒ@ªÐù[Á gTdž”1JšIœus¬ëf²»š–Wï”öÛ¦ÁA'„ö ÍgìÎ̬gÀLä\ž¥àŸ[_<¾Zò~Œ ùŒÕ×Ö°É=@g¬(ôåÎ穌gk €›O£b¨ )©5P#¹;$ŒŸÔó¯grËGëÍ#ðº=Ö1A±5I?3vŸ×íymå…s)už~¦ýÒ”w–>Þ‹±Ó»³%ÝŒÔ¶ÒØ·B0ÃP7mT7VGÎ5Y®’›-ª˜ä"“ŠîœVóÐÚÐ4iLPÙO ÀÑŽí"‚÷àfçœñq¿#‰2A¹Ö‰âS¹=²•N“éÎ&ýý"2Ñ Ïüs¤ÿ^tFØø=4 ¨©-E}7ß 0v°+T‰##!–ëŠ7 ¿‡>5Ù)RǶy1ÓE!+•Î&KÚ?De ˆqÀ§ ƒÙ´bÔìþìŸ3–ˆ¸ùy{3*u}`3Ö”qûHxÿXñö‘°­ZC—(‘°,泤„PPïjîË5éJ²gJ’’7¤”‘rÆ–Éé¨9› *«"PÆB‚ Ä –ðre¼¾D|½ÄŤ9+îÉX“iS\"p‰KPij±¶²Ó­AÔøÎ‰7=2)û §.þã5Åÿ™ÇÒÙFñlrº¿öÜodœ=bú<ŠË>ó8xÆ8zöL|všóè8ϘÏ>ë£ ô9ø=I|þ Síì{3“þ³âðÌ#àŒ…º33çæùcÁSÎ}©“‹Œt¡œk¤À‡Þ~߆œ¯Uh”u7o¦Õc»Ct.OÞ 5ÐÉc?ºgÊ>CÛpk2šp‰]¼ve…!tž9½±™æÊ@ d•™±ðKÿ¼»éôårÁõ²à×o/xýöŠë·+^~}Å—/_pÆÜZ×.ÿ¼àúë ¾þùþüö†ÛºaK ?Þ?ðÏß¾ãŸ?ÞðÛï?ðööfƒ‚-c½o•f 13Ž/rø>À™>n ÜÉ}ÞI+rŸÒ™¦)H‰€Ê±@ÔPf3Æ,oðÔšF¨³xjÖzœÍü¹>Óißì|Û°‡ôàV‚]úý‘AÕ×…4•vJ³=Ô ã>7c…ÕBŽÍ䘩Ó̶èJI†ÐžÐAŠ%’O[-„ M2K­“ÆeYÀÁü¨4+®_¢%¼ñw7gÏÙ‹/O) ™V™ÉÒ òâÉ>Ì‹ŒÖȤS¥a7[¬^2S€¹þæ«ÆëÈr„QwæIw 2“O±öôŒð•Ì“Å5šžŸ7ŒÀ–Ä'°Ô [ºû×b©ßˆ´|³Ú5T±ih½1+3e>¹Ñ žíµ@¡hï &››Ç‡ˆ"(5,šsÓÇôLJ&"XBœ‚XÏ&í=Û¤i¢Y‘3!°cåd>ÂX7ÁÇ=ãvϸ­qFFH Ëp1!VOä“ûÅņÜ‹dE”3tËÈk¶&¬)#eKàL)!å p!6<—„¸ ã%~ýú‚ g,+æ·l¦ÅÕL›àw"$2íæÏ%ÑgÏ{j½ŽÑBØv²ñ¯€çÌç`S7=õoú …÷øqæ)ÑÞWÂÓÏ>ªÆiÕH=§FgS;Ñ11mÎ-é³#kf¬9@gže笺çÓ¥g ÆÙÔk\ÏIDgÓ²ùk Ì™ÑìCÕꂬ`¶÷M÷uJ;¯AâÊàM>w£ ’3Töizih he’edª_/Ë‚”öbN!d%¬mƒ¿{/Ú>cŸW7­R%ryrNZ“33ËE9¬žÈ÷Ä™#Råq‚€þ³^—KwþLºx½^q½0RTÈ…À_/xùó7üéOÿ†]6ù€õÍ›K¸"¯ 3.Û7¼üÛ/øåÇ _ÿù¾ÿŽÛmÅÛÛ>Þï5»e}Q×L(‡û£prŒ•nGõ`tн²žHr•N ýYk¼G˜, FÕÒ›C¬÷]7Ö’ü(ÈšA¼3 ŽSxcD˜)ûÜWR]"¹?_Æj¥4cãÆÕ<ÞÏ‘„ƒÿ™‚=ôNoÅî¥Éæc†ÀPÙLñX;` /‰úgÙ%ð9“¬Ô‘ÐÊ0kÎ.·gÞéð4‚Œ#@ÒÊ÷fÔ¸~÷?7/ÔâeX@2;„@bi;Q 4¯ÁD¶Z"cµÙ:±ù0Ím'„¦Á²­dgc‰ ËdŒ-nIË9™ä0mw«SÓ Í¹²¹Ú¤¬,é”IÑ×z\yßD=_L¾©¤î?Ïhò¯ÔW3/ÖQÆß3À¸²ƒrU,´J„g†Í³FÖO±Öóæ D!Z{;Ø¥óÕÿKP³Ä‹wjm€‹„œÍ³·üž0XG™`þ‡F©³§f’§¾ MÚÞ>` Å”ÝsÎB =âÄļžW¥©?Z}]UYËê0g~f#¸3Jôp"q/5Ýlp2¾ö”}çMè#¯áËåRífýÕ¯ýuОüÁÒË~ä7g‹2ÈÙÚúhx{”Öæ9È{â×:ëGd%À‡eåúµ¬ì3»‹Ïëãðtö;Bã6cZ–:h¶^´ÙÈ û3O«ÑbekAƒÃ-Š^€6¥oÇoû¤'í&8*(q7©ÚÓ0‹„ôœMô¯€[giŸ3Æ ‘É©ž¨ŸM³{4ý%<}F–p–N3Jäž±¢Æ{ÿlCùÌZø™5óÌ;i¤0?b{>óï¯Ï¸ø3žig`ج!ÏÅÛî옉v™¡Rï7Yþ;ÆÊ„rZí“ʶm‚:Ø€«EBØY 6Ù[Ì_$ôcŽ2Åš Å Ähcqãù_°¥­²ÛZ¡Q—Éu`¨yN¹¬Ýêmuo”‚Þ{lâbɰaa\_¯¸¼^pýö‚¯ú†oÿþ –ÅR{øñÏ?~Ç‚„%o¸H¶d5 þ‚ –-ãåË‹KMÂ.K[ãŠa¬5vÉ×ÒÀTçmmÑÃtu°,¹P†Ó]R”T)HI"j_—ÓŠHŒÄßlMÏ09jwÏ’Ë; {›YSmDÆg{÷ð8÷Êé÷épjmûSìöˆì)r³ô¾6Áï~á vaù¾…ÐîA ‰;Êš=yoÓ¹¬aÄ ´23x ¾h晹 ô ì¡ ãDºzÕq8øÆœ%ZÏŒ~ûˆ›ZÓžì\ü5T0±ú·t¡»©ùØ|˜ÿ³}-'@í¹ÐœÍûJ¤zVAKèSòP K4Ï;7cOyZsÍÌ¢1Ïöà³Ú¯5j?ª"ôÔƒç3C–³ÄÂGZ=1›|$j={ù#µ »½¬Í˜níëzùÐãa Q ?@—jØ>Dņ¦(F0e¼ížY}ÝdSròsÃÕ®U’0ár^Õ\ÇBwœöØ?`ÎXÏ……«'ugVLƒ}võŒÜÇu 0!GFÔèY7«këûªœ¦b·ÏúLòþŒÝ?[§ZæÐéÀütØû¬.  1Ìä´o<«C?3 íÙ¨ùÀd:³XøGJ週ÌbgŒÒ±ŽŸÉøÆ:»ÝOÏÞg¼Gžq£Ü-4 °Çós–¼y–²Ùo<œtÌ‹ÿ^Öó!¤¹°Ê›gd±bÓÒð ©Jb`Ähu ..dÝ7lI‘ÕÍ`=Þd %vr©E`3ðÂ.ÓZnöÀgÉ@yH‡ ¾G·Údd J[遼ä.8’‰ÝÌ@ñ À)âÍuŸ´¨³¯Ž„$šOÿux虬9hMJÝŸAUü[R [nÌ}f€¥s¡c™gÅK÷Àú¤+°Sê)Øù,TUÙå'DC¶@䇋ñÙã¬H>›fœ2P&ÔÈÖ|¾ Ûÿ.ÏDÎ+nkÆ}5æ•1°[‚{Ý’(rŽx¹0®‘ÁKhUBFFô)¨1¤€èÓª{HC‘ñz‘œYãO¦\–Å+ˆx]"bÜÑ'QP­|ð€RdâùªcmâMÕ¨—¨Mëï‘ÒKÁ¡ØQ'@ËÓ¢NõaQ:Jè>ÃØš±qJJÕÐÑ®ñkA»‘úpÃ.èyH5A'C‡gŒ¤îa,0ø_{^³c1©µþÔü3úÿ³‡™¼ãH6NÏ égÞèc05dmü’úªÌð©f(ïÿŸFWäjšl‰qî)³YÂ]›üb¬Ü„m»#^–Ž__究̱1JUl’£ùSÙ»"'/š»?¹-J¼AÝ%/²ÓƹÝ+µ®gm䦞Jh’^ìÿ1²ôÂY؃Yh„/_^|?ïø¸­XEðíׯÈn&Ì F\Ìw0ç \ë™*l¬œô˜Ð~=†¼ÞKr| °Õ&¯–ë^R%‰PXõþJi5ßÃ2 -²Â,ÖÔÞUªEjCÇèIuƒ´ ~¾Æ³]Çʾß%ÿ¡¤Ô4²î±r]n×ÙúÂGdÒw¦‰¶{R?[ú¦@Ž—€¥¥+¬Í5*œøÃøÚÞ jf@“@*\™\…ùP| „B|r-U9'e¸ƒÊ¦i y JˆgÌ.E®Š‰òÙÍ[‹*3ÕËÐm ÷OEô&0wSðÑS°m:Ú?“ &XzjÞÒ.Í’Íå´‚ûýnu»'¢n)´7…EøY–Á±ÁÔ'†ëÜD»•ˆº/$j€ôY¬q)Ïu+Çëö–.çž=æs `I3ìêŸIÓÙ&’jʧŸ»„n<*í¨êRVvæ”ÖÙRMKêê`é ?ëÉIe¾ k¿¤Ç«³Gµ²b¹¦îýTIY-€š÷·ë"‡š¿Ô…#úèÝ#þçÎÖO{–ǔ鶞.÷oH03Óž=3°k`êIïÔÖ'sï"=Õg}X»µÇ2&WŽ dÏlÖnˆ÷è¹kýíÎÙsZ½_{©ö2³›´Ëé 6;8_ÃtšchS«g`ÜLA1ö£Œü¬Î""cîOly°µ¿oÔŒ)¥íyo‹sœa§à¬bY'˜¼xmnºBìcTµ‹Ͳ!tMFK(Ô,¸½¿U¦y,j1ñÛrò‰”Ú´ðuXÁ›Zúš*8ñ>1J„M“kû)e1–Àà—&F4ߨ’"ù‘Ñ2¯¸n`TR gMŒË&‹1èáA—1ÕêsØÜ °÷Úzdb¬bP53Ž{6„,Ù‡‚/êRà­‰Pˆ¨€ wǨ6Í< Ü•X±m;àÆèT"¾-êšÞƃ´§”멤Îgÿö <ŸðŽÓÀ–• îÁ÷è>Ÿ1ˆê„Ã%\ŸG¦v¼$ ͽ1æ…БMqîóò™?ggÿ ûŒÖx.ÏÀò³‰k{œãµºì¯˜^3¸zø¤û}b,ÚúÙL$§}£_–ÌÛ¶ÕÿA*¢ý¹/Ò(Y¢5à1Tà)+ܪÜ+g Çjn·U3Ót_‘šIñŠý¸Êz¥l>Hé$íºœ°¤Š[P˚̲0RŽ 5fúz½bY"BŒ.§öèi.LÏ=5ª¬—ëæÅöBˆ[Àåõ0cÙÄX\õY 5mg†˜s\q0LWÀ/Keú$±a‘!ÀR„5' ËÁÿƒXï^®— d´²ƒ”,­-2#o ;+‹±K'"O<ç éž°®7HR$R¼ç 7í ‰¥9Oar? ‰ Tºõĺ–Žò—3Px–¢4¦€Ž©D³õ¢ óJ˜EaG ÃHªÇ£Åæ¢ ¨Inžíâ±cówC]Èï‘:=‡ž}³Sà©/Z†Iü‚' ¾H­üôà5"¼[l Èy (A9‹áR@ 2/Tu3v÷ *Xˤ'2T[Ö[Þ½“rÞ°"åµñº1à\³€ØÒj¿gK‘²¥¦´v ËÙÞ}`+ž°ÇAåÌO¦md‹t~·ÂÐé¾ò¨ö|4±Æ=¸Z¡+èãZw؃êña´y‚€v&ŸèÄÀyÀjÇ’Ì+U=ò€:`ÊÖ *˜éÎÀ·µ5aUR?gå’]7“®·{}n䄎ˆÌ0Þ¥L¶îIöP‰Æ“ËÒ[ÆùãIÐ*[£À6ˆi¨™½o]é×m"¹{Ž[/f“ÿÏë»™Ùö™5Â}¶žl»Æ¾èŒyx|=OMÀŸw}F¤•°ŽéÔA‘Óìðvôj’ÓAãé}`ŠÎÖÖƒjVG^.—Înâ³µoù¬eÝ}”"ZÎw;àª_?<¿m€ˆ›lÍ&@)`ÛÖ'ª‡ybfë±5c,¯1À 2°EŸÂíSþ}3m ±TÄ<ˆ"Ad,‘ dé1™Ñ5¶šuŸèÕæÍ’!˜€×‹Ïj†ä€#î’· Q7 E¨S«°hî[F`Åë…¡ðq³¨>.…M2pNý7ÉUû µ”7›rZâ ×éXÙÀ÷E¾&ü¹$º3RR4¨MŸÑù¹)ž¨¡ æ†ÒlÞNÂR6ÿ‚2‰l~ev×°²_ÅœÐ|k¶”C¨ÞHõyj]Im ÜÓŒcw7©±‡¬`W(óÌb°mbm`Ó¨»jݽ͸/fÍs™6‹}1‡o »’hS Ëqsèh”Á?¨ºál½–&$r9‰_§”€%ÀÓSÈÁ›òþ%ñÑ1›â;Ð*æ5 ˆˆî1–sÆuY@ªX.„Kâ·€Û‡àuyÅûGaÈIæM¦W€263«…˜çJp ¶iG®æu¢Š$%Èöލ&gˆ‘º·¤~…2AÅ|¶)QŸ©Šð“«Úˆh+;ÜæÈºa¨ìÞ’›ÍÈGðí÷qy.´õŽCýúàÐ6åù.4³v¡¨vºün"0›¾¶в)$B•FõP†Ðiþ›©šÉXè ÖN^[™ 9yY¯Qý3Td|"õ-Ϫ”÷âmÿÜ{±A–›”Ãݧ ˆM±õð`Úxf´~ÆØ¯Ã8eÑ Ÿýî±­1ö~ørn×DŒÙ!î?PXQ²m‡cy½.¶ç}|¿oÍžm²ñ²2 €m˜ÖßÀKÄ%D¤ ¬©ñ÷X›D£2Ô¤5õLx±&—ÍÙ$,qö|}5ÉX"3 öl/lépDJ6Ý6kªcŒHÉ_6,,‹%Šd3]OцLØÔéhéF/"ƒ/”"Ò¶á& ïéîŒëuq†Õäl \¼àr¶möm»—X#É"f[CÜ„žÀnWöšPã¶_˜!9›ñ6®—¤ÀGϬ’ñ E¼^— `õ,Šb o,ÝK\°À’±°„RÅ·/_ É ÷?¾ãýÇ;þöýwü¶ þúûoØr‚0A`©‹÷uuD«WÚsj—×7Õä½°Ö©)êûà€ÃÞëøŒMP^?3¸ÝŸS»¿rÞ*¹]}ÃÑhòº"¡”„¸ !o ±xq1Bg,K¬Ã(òÀ dé}£|?î±³,Ü áÀÏ>-ÏNñ:kMÇØÙuÎ8Ù}{LLcÂb×[3H¬©_bÁþ}Úî`(‚f g,—«±ß³yŽ•g2†‚âööŽ/_¾˜_ÙÀJó†-­îYcƒpûø¨÷_ Åûû»Oï7dXêwñN*l… –¨š´P3Ò=Õµ°Öe¶m5%F]™—`͹•Á­ß? ú¬õ–©ÛÀp*y§#XÚ²¾Ë³Ø6|åøáì¸M´hËl(÷iˆVk@ˆu‡5f’¾  ¢ëFÕÅ,!›µZÚ=ÁjãÚ˜¬XÕú0ÛšT&Ûî%ç‰Æ¢,j”ÁÁßKÈÈÆ-uŸ$€,±U%ûµÛÒÉeã຿¯Šl\‘s#óm¤rµ4û@b½ XB°:L¬î H)ÛÏØ† 9;ó‹Jf­ãäC‰ÀK¬'»¾1F,ñj^»îQKjýUJ âA¾ß®qŒæžneTDÈ"€3œ [2©” D»¯öPñ¹-kdJzPªt IàNæ82y¶”jRd–\{×€ÝKo2°3g ¤1‚ŠyOn[¶%¼¼¼T–Té[ÐÍj¢|néØÈžy¿ŽCÅv,kLëÙžËB=öb¹PÃ"ʰ,­ˆÁú¿œhbÑÝ{’÷5edɘÛë#¾õÇêЃB©eжa:í{.˲=ôÖóëjá?6@SWe-;oëzCÛ;Z dÙãj’ô ‰LžB[@åQ~j{¦!Ëg-†òZÇ5Ä­LóÉôÓ:ó+£3‰Tí’ΧÐò`íM&á_^£‡Œ5 Ròl ÉÈ5å¥Ä7–êÁ¼…2®‘¡K+À,H•%% /‰ÔmgzÿÔqIÞ`\}ˆ{Ö;Þï7ÜRÆ}[+Ûm[WO­"„hÍùæ~G—Ëõò†LÏSµ-d«„qHa;‚ÕE‚gƒ-`¹Ù{A„\cDÔ€ä€R‡7 Î(gdÍVopÅί×mÌ\¥ÿlÍަ{EW–‘{yP ˆÐ*Ñ$2ÏL«=<ÍMD¹î¿)­x½¾àËõõÿcíͶ$בkÁmH÷ˆÏ©IÒíußîÿO÷K¯n­VK¥ª3äî$³û`€ ݳ¤S++§Hw̶í—ËC)¥˜u€›É2½j¸!(FõÛûæÍßR4™ëV¢×Dä Q¿·!nõ³$Iú[ûbõ÷Ï3êêiü@zCM’й…ÄÙ~äc¸—ÃŒüizéØÖËÀ”ý‘TêLº>ºVuÊݱôŠOÙeûú>­_©@µ^¦ä·ISðL®÷âŠu­Ï‰s¦€_€¨Lª¥­Éá±ÈöD¶çÍÐf˜~l %$¤öà%JÃÆ|®dûÒû*£íQ£ÉÑŠ S3ä˜~õUŸŠ]Š^ 8Œîíj—°Ìõû£¼höRƒÄZ3‡GéÑ[Ïn=òŽ^¯gIÄz‰^_çp"¾œÕî#Özß¿×2é#‹‘ž'‘•ñkìáëgÅÉèl+ J’xVó÷¬¶£=®_ƒGûÏ.uÇ*Ý<+çy†›æhÚDöˆ˜D@ˆ@ªŽ’—w{võ^kOÏÖÛÍ䳄Yw&¿R&וּ®¾AyRKDwØLµÖÚ.\ç®Öd±,ä#‰ÍÂ á˜æ *#TFÖæge-AÄ`†M8— Dy-B× Ó¨=;6¢ÏH&¢S’!-7{sdŠ-o,ˆö빪Ã&Þt‡gÖ„t  •<ûààcBç]‘j}OHþ+Î$IƒbôÉìt7ôÁœ©é¿ÛÏ1é’¢Ú©{P]I9È:x ¸÷zd¸ýˆÒzVÀé|æðBRÊ1i›šìBPtÝ@YuV”å´MÎÔƒÀ¦¢³†˜ïÞx‚µˆ†Rl½3ê —Ã .Ö¥ÀNäæÎÀ}->“ä£Îhc‘v™MW#õ±Ó*Ǹɶë–&fÐ×UŒË$¯N{ Ý.ͤ%3 ª-¶ åwg€À³! ýkÙ0ó 8>†!g~Ïzp®ÿ'ž³÷Bcœ±R ¦´ :(Ê!‡×j¤ŸßB†3Ÿ©z›Tñ°(­bzÊ\ÿÌäö¬1r½7äYüú‘9÷ÑÐd´×ñAÒˆ‚1G‘Ð}6¥²Èhí}?F ˆ ˆM)·ÂlÌ´XÑ9LQ¬˜¤ˆs€s`£ÚΆ Ĩœ=Ò$ÖÈIŽdõ\ŠÉÏŠ 0Y\¦ “c ^ÁqG‡€åþ†p¿ée…°€¸¬ˆ÷Ñ{ÞØ¹£6“b ko ȵéRÅHºÂ23Ùiïi’A¿f¯u­´ÓZ‹©*Š €5™²—毓$CŒ1‚X0%ÙÌl¯— ^®3>¼ÿ€?ýåOøøþœ1ðË ÿvÇývÃë¯_ññmÅë¿ÿ¿~ý‚/oßñýö†›X–BÀý~Çz_àÃRÖgdÆš‰.:»oÀ¦iÚý}]3f爛X¾ÞºfÝ×çW.Ãà¹2–›„‹¬n¾Ì a°DØX6xÅ/óNiâˆðÅŒßÃ$_Q`a h†m C:ýU‰â–¶x&Ý"ÙïL€³3‚(ÓÙbK¥³ÖªTå@a°ˆM×ëz!|þüŸ>¼àã‡w0†°, –{À··¾|]àƒÚ( ‡[ –D³ú @nK²äÄnÉû›O’Áu]Ó=U¦ŒÙ`%)MðL¶­,Ê<üâ§>]ÊhÄΞƒ ûôØòHÊtæ/Ólšoaj»O˜##öKý™I‡úÞ¤ˆ÷FàÅn¥–W@ÙH¬Íu3[ÿÐJâ·z¯iø³G•9pA Öol<[yë8çÔ5ùW“÷¦ê{–öqºg>ûj™¿_?fè5ºŽÜù1ž…4kä¤öܱDkvqäÁY{$Õ~­[æbÑoûà #Ë…|okfPýõlÄiítdÓPßóÄÏ£ºzTß eÂÝ}2&Õ ‰5=¹iGìiS[óò³P²ÑþÐvG}ñPÿŒ— Îæ­?c€ò@%¥Ó| ó¿«ëÅQÂQ¯UsÉC®· õ÷®7ø:[£ÆdDë+鄯 HÛ¬ µ“å>&Ôa62Sy´NWFUyÐR‘7,K6€%¨¤ÑBaËh±é£JÝ8 "U(S“â4š´‡?žÌ×@GMz–ú˜'’ÏN[o¬¨\³z2‘ J0#G}h JÑ”e…ZdðáĨmˆDéýB"Åd`8>œGÍû™—UO3}"ì®k‰%®®m¦·>¥Ù&Y¨3N.ÊÑðšŒåœSvAبp#² F‹<¹D‡$X²˜œÃe"\g*¾L¢šé)õ%^ ÌB¿Þ¦É»j¹÷S±‚OÚ¨þe«OñÐcÊ´­žl1ÙÄî>×Ù¹wÄÑ3ÓëêϦ,CN=“D7zƶ}í1¨v4½:K1ü¯0°ÎŸÿÇ ¶G ¢£ëôèÏžyþŽŠ•Ýdè‰kvöu#ï©£÷pöYF×ó‘Aü[¬Ÿú]û‘if3ÁìXfGש§›og6·©¡ÕD².ðò9œÿnš&8£ÀšI'èD`kaýf±bMàV],úè;ÕTÆÀC}Âd,Âê±Üïøþå+üeÿö†OÞÃ\'\×wø¾Ü±¬÷û„û÷·t}–ô³‡ç˜df7ùX9g*@°g`õ{kX}eºoO%¿u͘M>‹(1…ÅÆœ 8 fkÀˆ¸º W7av>¿û€yšp5 …àw¼­_ooˆ«ÇËõ /¬R9£2ÙÌäÛÞ—zmÌÌ I ˜æ Œ7€DLFÏ^Mf´˜¦BzöH¯"D &ëp™>ÿôþãOøùó'|øø¸Ýn¸Ý|ýrƒs¿ãË·;–5ɤ(ÂÀ ëä\ª!iÔÚ‚™ÈlRèˆ|á;Ib’çô>=™Éñ—ª11yí¡KAÜ @Àá£38¿×Qc]›Ö×mß×€CïqU¼Iòcvóóß{x ^p’$>fWô'}=¾cWKæÓ×ô†L3<),írÞQ3ØÞÀèqS¾g§æmÀCŸ–Xâµé6øf†#`¤?7š¡È@¡0b¨lV4Õº•þ:ž×šý¯{/ªæþ'py´ކ‘Ï$kö¾\ý€­½¶hÎÉÌÊ)&ÝÎ { k-ŒÝ¬ŽØ^µIü¨_©æA׿ÿGÉ×-˜ŒÃ¾ö8½ï<üèlà~´>©¸0&%Uð‰h$ù¹2ÉæÁÃûˆ¾È.û]®sÆþz²c ؃”ñúú¸aK]”cœ„ÐOÍjÄ0§ò&4BÌžœY9 ÿiQ<.ÚT—±ú€!/Ì´;‘±jb •<:#XÖÍÒb‚5.D¬ÁcbˆNjS1žcõûºç2ýÐÏÊA‘¶ñ áne?¨/´×‰ÀJÛ8sHm~D|²™4šl©&>eSdõ"¡”z—À!€##Æt¿Ó†Ëi:nQÂ’sºhM¥wÖ+ “­$Åêä‚4V²˜Œb0m£Bä‡eWGÔrÙ$Uuœ/%9ˆ¦RñVƒ|$//çógBTù„ô ¼M¦`¬SCâ4àS/Ѝæýfk¤¬3pSò”`Y ²ÖU÷éܶjo@*œf¼¾\ðáÓ'|øðÿò/ÿ‚?üùx÷îzZ1à—öÃ+Vgqÿwo¯ˆ†oaV‡i 0“¸^gx¯Ì½N›a7YƒuõûtĪ×´99d!àr-Ih#Ö.9­gpb?%àŠ` Ù‘2®Þ½^ñþú‚ŸÞÄÇwïñþå?}øˆÙ9LˆpÉCmõ¿~û‚_¾|Åüú+þúËß á|ª5Y;# ƒSº^=Ð)@Fb?ôÓyIÞ’É^Ô‹Í HÉ÷ʪb È“7$ÓlñîýÿôçOøËŸÂçŸ>âåEÁXë@ëJxÿá‚Ûzƒ÷„¨V‰9­ÍJ,fΪ*”’¶IT%‹ÅˆiJu„_R“©ÏLºšýM2Ã*<+z&GùÞ{ëHóô?:F,Á3ùÔhðèëzæÖcÖíÓ³¬± ÷ ^ÞŸ¹Ëå›ofYl¯ªæì\”6×ÔÞ kÓÀ{¦”z®µ.WÆÒ g¬2ø$ú Hd°Iàbñ@Ýü¾úïQ×ëÍ9H”üH{(¶ 5·”öÞjØÐK¿ödªi C) :O¿ž]Ó'Sª‡.5!?Grц¿m«çoc²y²¨¤8yÆN&{V?œI GÏÞÈX¾·™&×ZÓ$]ef&Oa#ÍÞ‘=“·kª•øÞöŸ>I¾ff¢J¿”‹ðîìgµÛ‘…IvÖ@wÞ37e˜lÚ³½GŽú9AŒ‚JĈ¨ßjé0c‘„ÅòЪÚßkBRÞË7´±»¶Tõµ…{ÄÝgnë÷°p&~|O?}ÄåõeãTwñJïñÁ|ýú—·o˜ÄaZÁ0ÄjÄ.“úcÞïwØ›M‰Ô/ˆ²1 ¦)$™}h ò¹šS¬GI¤ÊR£ô£ýáèL/ßËs1ÖÏëUe—Ö¼¿¼àãûW|xy‡?|úŒ?|üŒŸú ùùx½N¸LJ Ô·ïoøë¯Ç_ùøíwüó×oøÏ_Å÷厯÷7Ü×˺b >¦u1§ç‘»I:më'X-KGÿ/¦ë6‘5S ’®yÉFÚ$Ú¼½^/øüñ>~ÅÏ|‡Ÿ~zyvXýÆyQß©#¾~µXo m\ÉX4}­œXr¸„×”Fââ_&„  •÷>ùº…À¤Qíku}p4$—*!“:ß͑֫ö(¥ëÙó|hCAf÷^{éᙕEëGúhVù7{V{Ÿvx$Ë:;Ï û”*·–}Å%šä¼9íÏrŽ8‚„”Œ;o4˜éŸåý@]vÕÑ}ÎæC2_{âÝZfæ<¡~c1…‹¤g°€†ížZKs]P3ëÏP{Ìéß›ö9Ú x`íéjçÒŸþ†ô“²mšË`Ê:àIŠá_aL˜¡Õä•ÕéÄÖÀÚ³wXî‹_ÁQ“p‰ÌMú9²ð )ÍYÂlo4XVƒÛššúÀXÓFʉí%)iFP›wŠ¡`ìÃBUò’^“q#i 0eé“$s̶+ÛŒCªé`#”͘°‰í¯œL"P3ñ¦‰É `21ebDÙ´îsŠÕ¤Úè;Àm“*%ÅQ¯©J9$\6Âú:¶4àÚ?I¼t·»9SeÇ+éuû›Æ¾7˜«@“ÞŸ²È4Iaû^%iÈYÌà…¥¤«-^4€ ,A'hKÆâ2YLÖÀ‚#àb ®NÞ,†4u ”XˆÊ rn^½3¦‰à&£^XÆ€¡‹ˆø ð‘áð«6l kÀ:N¸Uê"e]S›ût»~}ÌÔ&é[4om1¾ýSÙq„êrRPšØ` Q<;øë‰Ù™Äðìß?xü¨yëí tyô:»{Âôz†ÑuÔ”ŒÔ³æâ!ø—ö>¸OÜ|˜â—‘Ï*>—w>bÃéÄ´Ý_ëDÌ]úcêˆÌ>Ÿ ×Ååî÷ùÖJ2b­mŒ0©“•˜Î;¤ kÕ¨5 øÎ[ËZ — ½ ÊLI À€5­3iR’#!‚#r³ÝÀœ`ñ~G˜¼¼\`®/pÀÆ :‡„·Õ#~ý†É:|ùò ß¾½áv»Á/Á¬÷»>†ã=ƒ¦ KŒšÐ¢²‚bŸÒà:f¡e³ ¦œ­inrh˜L¤ƒ ¨¦áPSTC¤žŒ¥îÉŒuÑs¶ºþ.%üÎÆ`v¯ó„/W|þø?úˆw× f¢~“j.hbá»—+®ï®˜_.˜– =¬¨í”¼Â1“4R%5ÇW)áë«-)›¯bl Ö¾6¬›0gìpÊ_˜IöX7ÚfýÍó¬¾aÖâÃËï^^ñ:]ðòá=^~þˆÏþ#þéüøðá—Ÿ?èa¸®øå÷/XÿuÂïĸ€ñ2>ÏÓíûý‚ïoopë·h0@” x@5ƒ„l NÛ“ÊÍž–Îá ø ¥œWØNDÎ*Cûú2ãõU|x7á㇠Ódq÷3È\á\n €ëÅâÍkd0j_ZÚyç0õÌ© 5“&S²s5Í1ªÿ¸T¦¹™©ë¸~ÇØc·ÇµL¦qsÌ•çCáu,°Û1¨Ÿc– "ÕÀÉ÷‘¨ù×ÿ¶|¯ü=8ËøR°ON’M Eïuµ1u0ì¯Î†_CÆoúžB<”Z•=‹¥=ÐŒ›ÄOªºEI³íW›_‘úIjÀnó4+oaÉH'9”â+”}¨J¢ž"Üìҹś?¯äs7ûžX²µL¤‹(i‡hªd(¿jXW#¯³VN×ÞðP[¸1œzP»>ù·¯•ÝðµïÕË3Ï‚È~;—H'” Iú¾¨Ô.E†(Œâ$-Ïêf$€% ’ì=F²Âä–£zèh_èÉ6#ÕÍfŠ>3'ŸfÚ}ÿ–1I]òî1Àù¢ÿ|G²Þ€^Ÿ-#¬¯Wû”ʪ›ù¼þå{ñªk` «…W¾—Ùk¶Ý3ËzfªÖ±·¹¼Æ²ÑÐçÍ-œüÚó ýy`¸VJÌ÷FˆHºº‘©É«%\NÖb ×Éáî'ÜÞ<°ê¬’S6”šU¶$°ÆÂšŽŒ%ròRÐ@XNôAF2‰Kà “ú±K°)Þ‡~ ÛÍ1‡ ôˆIu6*ºá#D?XŸ2žfHÔƒ¡ñ¸ªi”F¯›jÓ±–·Ã°–’Jò‚í €óúXÖx,ÔϨêAÕÚ°øHŽu-/ÃOºbGÔò#ÙÊh0DƒÐþìé}†×М?›gòĿ׬û¤3[œ2"7 ç\Úû×uÝnJS5U¹ÂØrÎaž&8¢Õ8ûËìþ€×ùK|cÈMß<Þä†ÕyLÓ„õ¶ Þ=â=‚#z†¿/Xï‹2ˆ‚‚0ëÝ#2ÀAë‡è>ÄÀðÕôPÛÖ¦i‰Ö¬p;ÉD.àî÷{òæækTBhÁˆäì'”#éœÊ ¡ [ÊæRáIñGz¹^1%/ K¦uI6fœ›-0Yg6BŠ3›´'IBÂ* íú¨Ïö¾¹y`Õß=X'4²à¬Æ|Sf„“›'° Á^/˜Þ]q¹¾àúÓ{¼ûÃG¼ÿÓg|üçŸ0¿Ÿ´¾œ-ðþ>¾›ñÁßpùþ;ðö&Ìü‚`ϬÃBkÊûff¢2†`8rÅSJ?ó–Ú fP¹ «¿«­†1 ”ŒfëæŸu­¨Ù»!Áu¶˜fm.@¢7æ‹ÁuÖ€KÚlD¿B‚-µrŽ’Ïi_lˆP«òçQ Ü3Ò9‡e¹!†x:—Ží<:[GçW-ñ«»ûFÕ>ÍÀ}¯Ìè½XzæÄ“‡c{yÿoŸaZ?“p<–­ËpÏ®‡G3©Pj÷x)R­2,’‘ö87{!oƒâ”Ðóß9Û€9±Ö{¯{$3 åóºOˆãNîžCˆ¸€V5 ÖÇ÷’æÚ6cïã[{%¸4û·ôƒÚ½Ô´ïÚÁÞ¨FµÓHÖXÛ†8³jF ®󇙋'ä094ÝÃÞst úïñHº¸aþôºí=G `Í: "vûÏAÒ_½ÿÕï·—¥Ž|¡žQžl 27¬÷¾èjé>Æ.©ÑbdQj&”í}–Smþ<—Ëe_s'fV¶l¨MôëÚ)„PIÍð™q£)W½ØÔPÒ ¼30ܤk`ÅT&ù0š¦©˲ÀóVÜ–éUrú'c0Ï.Ñ•£Rí'@Bú ··EA6kUÏm «)µÒç¦xsSjÆ•ŠïœƒÐ Ö0,!‘ „SbˆàäPðœäWÒPЇ5êãaUª×Ì€Ò&Ø"d ª™š;ÊŒlÑd§ñt3ý¹èæ-ö@SO²(yf1¼Äj3Nk€“y,D嵤>ëÎ˶y7j0t*Ü{±1F U>Àõß&œÌ kfј[ÂAiFN$I O‰*?§%¿F8"˜)ßs†Deš.hÂÔå2ÆA°ð q¸IFëj´ë `I ÐÉõ-¹¾àrÕb|v îñ†yžÁ`˜5‚À˜œÁårÁêW¬A‡ëë†ô^ðuG`Y}ñÛ‚!9ÜÞ¼ÝÖðýî"p÷H&ûÙPUeòÜsMz™goâPûŽy IDAT›†Ó`ã« ~úrèqı FÐuÞ½’H„’(Ǩ >;¤FXB£F¾N‘9ôFóõg­ Gë}tˆ¹úýÌ*G $%æGž<âË™:9ß@ÒR{$¶×e¾õþå×Í”PDY²”¦Z†Œžùµ"ƒŽa…eËç‘jêµZ¥•]dOE=] Žš¯^ÆÜçõÐfô÷GÒ¨šÕ?;uÁ‘_ÿ >Ч€µc®Q 8ÓfœÏ½fZŸ mƒ80|ag…¥*òƒ/±Ýå=Z74Ïì+#À—yÆË媾ZËŠ—銟?~Ä;?ãÃrÁüÀÍC,ã&w|»½ÁßV¼½}ƒ†Xe }{û² àÛí„•å}Ä}]ÁžÕ÷2B™Ý¡¢Õ§5+„ô3‘mî,Û0eš&D¿"p„¤gÞXƒe ˆŠ·•s×ë † çÒ:•40£Mº@ÊîGØI=µ¦iÂ|ðúúª¯UFÄ1‚DÖŠ‚“2rD"Ø0`²/NfýèP0à•-'n[{\Igҽ͔óÖ{yžÊ5ªS §i‚šŒG¤éy—ë1ƪñM^;Ø•÷OçœÞËì359e†‚s—Ë 7Ï`+à‹}7ãã_>ãOÿóÏp&ÀQQ7…‹ÃOÿòüñö†_¿Ç-F,‘á8âúNàÁð1 ŒÃº®€_ËÀ*³HB` ¥'"XÓZlÏbzFó>’jÈl~~[–Ò(0ëYp¼ªwO ,R HJµ6º×\¯¼^/ø $(u[ÖrÝDbJVΘüG”=@,pvF\\'—îéŠÖb®^³Õû3¬ŽIÏûa#•±ö°ùùíuì’)ë}Ú{ ÐÔÑž:–SJkÄ!C¤·ÀxÆËëÙ´ÜZ¢š¯Cß dï52-†•MÅÐ(òPÚêÚ2)õQ=O¥€]º¶u–™ìGª>()IwwJw iz¢1&í…’z¨ÌLŒ Ê +°yŸ q…÷—IŸ°tà†úýc½™j3ƨƒè~(NØ­™‘OV>ËògíÙq=°³ë{ŒÖÚ½aW¿uiy­Ô@‡÷böÁõ3‘DGàîd¦Tùd÷ÀCý2uDz©÷Œ¾¦Õó&4`wÿÌÖõSüDDÅc­f´5µ“ÁΫ/cœöí£i¸öloá 䣯šFRÇüµ>\ù1éÃÜ2zT—b!§ Lv[‰…ê~Ë›\C™d–…ÊêÍ$Ì¥@VCx¥­fØTxÿôéÞîA¥>”H`“|ªÈl NN†ÀA‹“w/3¦ÈXMÄo‹×b•%`²j¤§ š¾–HŠP†N úxÜ#vDïϳodN ±I}˜¤Ûäš_?• xtpR*bëÍ(6Ú£ESDÀÙD\§P%‘¤7=<ÐO~Ö÷„§=…ÆEÃ]Bš,˜6gœQ¿)#›D3ëâ³(€È`vy™”E€5¿j±à «ÏÕlq®× Ó¤Ñl-&ë`ÈÁP„sÀZˆ:ŠE®H´Ñ©ó½Xa!ð>`,-Vs1 3#À"rÄ÷;ãË·~û¾jÄ6oŸÅÁAŒ”rA_94Ù>¢¿>Jƒì º#šð£‰ÓŽ™g$¦P?8÷ªzÄ‚ê'(£ÉÏÙkåûì¹|4a>Úûk<¢UŠõLõ?b³ϧ#ž%!>;m~X:“Už†<yÈn#}Ýp‚;H={ÿD8|î1àj0S-+ÓX#P€9›¢’fZc\»[£5˜åH€7û]åˆøþå+–eÁ·_~Áÿú§ÿù{ÄüFx}ÿî2c ¾þþ;~{û†@‹Dˆ3à >`YÔËX”¡Ëâá×uóŒ@ˆÞWX餗$Mfó|U`+²¦‚’‡×215WUA SJïØÃ8WÁr2]ôuÉÙñ^k4ØÃJÄEL¬ Ü|ö'£a®šRJ’š~_ M‰ÀÞÎ8ÓBÉw (gx/É UÏJ)þÉ3Óm Œ&‘ÀWêÆ‚îé&xéïssmò\ÌTkË(Ë™Œ€c•5ï××+Ü‹'›S!È€ A,×—Kò*Ó‚>°¦×…sNÁÊ æ8¬¡sÍ"w†Âà[Rš(oƒlX±òÌŠa………szÍ!ŒÖÔ´;À {"¬%Ìó„Éy(é+ùñ°¡ÀZ3´ï‰;†Ñ˜ÑY†ÒvÏØ<óã;bI?Ë,éφ’šuâ½sÔלõ<Ï4Îþ9¨ËŸ1¢ÄÐz&Ô¨Üô–aãd5•æe¡h÷žfÕ¿3{¯ØãÀáµî™nÅþ# §lå¨ùãäq2’†ˆ4qö:_TfÇIÞH²©aX`§9)!´öΠ½z”NÈÂ;ƒê¦¦•ãD¿QŠ¢@~( ŠN”Q#Éiïo©Œ:>ö‰€?½úê¨þÏ YÙ/+"L¾fýç?ªEF>Šý>S¿~‚jàúœ=Ú¬5í÷©|ؽTVGk ìûA}^OeÒÎì9zϹQ=]j,Ø]`ÏFþ âÙ)¼ÕkõÚÊïïã9KÊÌ©£GÊ“ú¼I-Ed3q?2ûë)~£Cx¸0ªæÞ$ÃJª€‚@¦ Æ8˜uE„tTNSÐ9õê0)‚•R|ó–È „U"6h‚žN•ˆ¥0L*CQý¼q3&Ž˜ŒÅd Ë=ÂRÄê#›TPèÂG†PJ8D•ÌUéb¹KAàªh”‘)î%íHÃA¨˜¡gv‘‘Íßk;JD‹“Jò/ÝéÕ|ac©t`[=*Àö4äšÉA&{Ú FR<®l†z£-kbèщÊ#)P#q}¢a¥š©‘n"Móª$Qfsh2BŒ:å«X!×­ÆÄò@NŽ`É©©;Ë…WH„3‚ÙY¼¿Nx¹:¼¾\p¹8ÌóŒËeNé]D œ$P§0N²ÕFntƒÑµcࣤÈl›Œó¢g°¬¸-o÷€o÷7¯ÓV5©/K%Ë=ÊtÚ|ïd+n3Ý»â·qt*W³ãÚ‰Š è?’7Û“÷X¿®Ë×I»GëÿIÚH‡þ pwÆìyæëGÚpò3H'¿§‘/5)#kN=Á`¢`‹%½çJ"ªðéýÏ)2ÏšÃ×1üèB·{`¾&8¯Ž õÝ{{¢i5K#‰â™‰îQS4JÂ|>Öþ rÐ RºVÅAãÀàä£Hä"É®Ã?2 SOè,HØ ÄÿíëüÍ]ñëÿù¯øÿ~þþô—?ããOññó'L× –°âVL¯3‰¸¼¿âz™ñb.Xïßpa àx±ÞW,ËR¨ñ!I3€•A“Á›œã’ŒF)%æ˜Ô…±™Tfg,8*XÆ$0l °)ÉN›£ “Õ„7Ïšðæ’ÿŽqÓ&LσäâÃiÓÆ$ðÂP?11„@ ¶*ûWËĆÏ<†ÀjFžü«2¥_iûêÙ’§ÃZèrb;Çò£¬»d욥ë , B!¥‘ŕٗ'ÏØ¼OídÁHÑÛgÔ´<㤒×2tƒš÷ÀD“À>klI¸Îëæ:Mxÿá/—9UR\†@ùð{±ÞÏW¼L3 &c±T;XD#H€/î\˜ê¢/·Ì ö+«¯¯ÓÌoÛƒ“9u®ó´ßûˆ¥ ,!¬E²á½‡Õdž¢zؘTŸ’˜…$‚ÈùÙl™±»Fh0´^®Á‡ƒ¦“PáûCv–1jÓúÌÜ 9hó©Oæ¸;·ÎJGß‘‡Í@Ô'›õ߯¯þ«’ý£=xS…¤ï‘üê²yEÚsuTsè¿Ë¾{É‡ØØÊÛ 00•ÜpK[ïADæpPRÿYfgÙÄÀÎÃRªL×Eba’­´¶Jj:iĘ’6‰ðµ­;k, m5£©'=«*ƈ#LòæÊ{hNkïÍ·0¤°–ÇõÕÞ3V¤bv /2ÍõÉX³°Ê—ió«zØÝ º'ªŸç–2Ÿë±\·CøÀâUÀÖ‹ÅÓZù0}qp-Gr¹š 3ª—DøàÓµDPE·FzFÚPÝ÷½ìtºÕÀMŒ±ñf«å ó{` 9ó¿W‹¦ö95Ý^ç:òRöÌÊ ðøš¶ «|.æZ®}^l©1 'sk¶ÄÃJ˜_ÇyïO›·ZßO>zφQq-ÂÃé‰n"Û‡"Ðä M¿$˜T9!DLx½^R"cñ0¥æ$9"±¢A.ùoI©…>FÜWN…‹~¦‹È›1_‚ØŸ@Ì+Ч1a¬b’ktü€!QGØ›, $•åN§íäö»9`ë´ +ÉL¶ô½M¾—’(°£b¢/’ÎŒœù M{Ú𸀳 xÔ¢~›¤‚ÚH BÐf#§ÑLɇŠêì„kpàKHr§€Ù9¼»Nxwu¸¾8L³z‘\¯W\æI½·e ôÆöB x“¤]|,Dˆl°øTÔQbG¬kôX=ãûp_k °qT"«é[›fÛSXt›ÁhÂ'O1UŽd„£Â³Ÿ"%ÆÉAš@žšÌŽ€žgCÏd‘O'²üƒÏäSñ~ãçkÌjzÄR{˜xôà}þ#ì¨gÞÛ“푉îûkdz:MÀZ%ZVgŸe샧»²Èf_íê‚v8Rý:×1ÉùUr¨Ò¨!–©9ŠlJ›ý³ûº`ÅŒ›ÿûÛo¸þ¿ÿ®×+Þ|‡—w¯Z8YÁååbŸ?áݧ`Ãàà1‰Jò¾¾}GŒp_–EÒ•þ.É=O`Q€ àߦî¤ëiUžëœj%»Z¬ùùº\tºíÔ΀° ä#8س‡M&àÅ7†±Q-Qe Êš˜“L+±œÒ3—-2h•A,eš¨Ù N4l„R„2S‚˽lü•¤‘þä¯ÍiSùç\¸šŠ¼×ÀhSdz6›A l`(ê ÉX̓ŻY¥w‘½6sRQS Ápqf“ä%¬ì(êsFɃúªa$ चMQ¬F–¦½Ón_Wð%1@dK ³¸ÌAS;:“6.?·õëf£¬Ö8 iÙì\<Ú´mŒ€ð.¾>_õým~Z#U̶VŒë÷T3ÀêïûtáŽabw!{oÖ¾ž±±ú¾¼xz ÖacmÕµ2Æ){#@/ÛÔ Fˆ<ƒz¦ù(Á®÷Mêï[Ïb¥]‹+r“Ô#¦ÒÈ‚©g`õÒÁ36fÿsÁÉX@–yôö¾]#û§æL­<Ì”yØúœÕ'5ðyÄô;cƒ¬fjo«¦Ï §É•º¤OaŒ1*댱’¿°w³4©ÈÓó:¢³]8úz1éðPBÙÓÁ˜&YÖLeÀ¬1xyB+F0_ȦÉÁǀ徂)5äPÙ 5Éò¶ô:$j¤Í¢ÞW”ŒÉ-9Xk`mÄ-Œ X|’!ˆN Œ±ˆ1«=ê[ÒQÆÔB³#é`nAŠ"‹“¢²©L[žUZ¸´M^ʤƒ<¬[ª²~Wš¦Â”‡ˆ¢~Ogÿ±Ð–Ì-¬¥:øÌ–e¡‹L`ÙÀ­GÞÑD팂þHRX¯Õœ› 3§”H ød| ¯Te«kEM]·›"àaU^™Í%²°Ò—׋ÁË<ãrÕèóëõŠË4«ä@Bm("¡ÏGøÁPpd†³ÊYCÔØQrA „¨©ˆoKÀméßžM62Ä å0bNÏ3÷øóHb°œÆ›§­²vΣÏo¨ý èg Ô£'TñG&ö§tÙ#“‚W‚2a±K?=“Ë=’°Õ¯wt¦<ò9kh]ÃÚÜÿGïÏÙZ9JwÍÎI!ü hÿÈ#å ÌžŠÏ€·ýu-¿ž…A;ÿÁô1FZùlb+§½™‹‡ØY­¬Ó‚;|_`¾ÌwÂõˬÅ,kñúò¸\.x}½âòrÕ}örœÅ¯Ë!1¶•ᓇfÝ\7÷ÅšQ–&‹.¥,6…; 8øÒô»$$"pHÞ¢ÖABÜüð‚š×³Õ„¸Ëd‹Ô¡LbæÀ€8À:B+Vë–ËýŽûÛëâq½^¡ŽV¼]G¨´.ĈèÂ×$ŸË*¥*1Á8´É‚¹Žõúé½avë:Ë+¥bŠgëˆ<ØÃæïÇ©f*ò1k+Òh¢1o©r$Që“ÈpP˦ô\({=¦á(o©r¶b5¬Ë‚°úô9"BôðÁ+ðC5xÓ–iT¦ÇÌ]²1櫌Úk%5cŒdÏ †× *¬«è–»Çý¶ŽË¼"ŸdSšž9 Fel1©O¸qdÇÁà¹j¢­UVi6Y#!, :_/îS¦¾ÍÃVéÔÑþ}Öä=ÃÞþ‘¯=ûº€u68=²hyT'ÉšÎBš¶Ì;–S˰¦âA[@œênNIþšëw2RèøEÂC„~D¯ìÄÌCªô,ÇêÜs)•~¶˜Ò¡Q6ù$Qã 0«›ïzßIÓ60DU¨ÆæÍc€°ÀÍÆ´ —â¿Øù-Ù4¨µ¤¸—…ÕLb€å|?:œoj ÚüÅöi˺Ÿ#ò[Ó0ƒˆÂ¡¦æYïe|ªò?¯gfê[ÿUñ·µÂ¶dïZ©öÈÀG ²T& ÎQC)ñhLÑðísÄî¨×׳º3i¸†¦5èYfϹ”àÇäkg“ÄÑ>ñÈOé™Ä£~ZÒ¦M@¬3vÒÃýHN=ÿ(«ì‘QåÑTþŒõ¬ßÈ;ëÑ}zÄâz´öÒ3Gfo"|Ü|É@싟”ÙZ?À”±zK©Î‡ì«eëÅÆ*:È,×;Ü¢J× ‚\Q_×U½ŸÒëO“&ÔYk• öâ€ÉªA:oƒ¯"éÏl°šYdÚÄ©¾&j ® ÀbFÔğƤV„ôCkõT Ý5©R¿´­o÷…H³Uؤt”&ÖÌf†X]»Ê·X}¨Œtbº°*¿«#ùÏΧgtqÕØ·×3†xžšûƒ^„Gi‚#£õg¬ê‘3Üg?ë3ÃÙ͓ʔÁTsÎ÷Å u»iþûÅȘ yÀ$oŒ²38½;#ÏrP(ÙúåÌÃw룸€E£Qùœ@±£9SgÔ;Ú£¦9‹Mv5ÉŽ†È ™DqMwØóõƒA–¡×Ó¶—œ×½Š¡‰íC±!Oôgd¯P©Ç©«úg°–†íØz&ïÓöé:kOf B¬þܽ⧭ŸöCÌ£k8J¬¬ƒŽ€©3­'fŒz‰Þ½^§M ä ˆà¨^ãN­’™Õc&eÏ¢Ü{{+ÊaNe ùœê×ÅvÆtç·ÏH„œ}îlCÌ `F¨’£ô¬<]ÙSó¸AB]ÒÖãJ¡@[¢Ká%#öŒæ+ÓÊ#Š–˜ÆæÙ˜a¼¦ 9/ð«RêU&%šJ˜¦¸ÞŒÄU«äsåø`œÕ©ëÝÃG'˜¹iÛ͈ Eî8úeÂ4–v˜[Y§^´¦†zq< vªLB*Wtq¢Áç$’‘d¨k;,"¤÷ ò|P™ÍÓÁf$•ÔoÂV E€2œ2_z"iÒÛ‰Wfê!¥<ôôÆ6V—£¾|ËÈ»%mbЂ*BRÌæóy­’ “LÚs‘g•ùF)‘ÓT‡t‚9» –€ÉÌáÝeÆ<[Ìàúr)‹bbˆKb*D<‹‚XÞc>¼`hŒ6‹$ÆœŠ ,+ã¶®XVF`ðj:a²ùpu ó¦TßûœÒ‘NV¦‚ç7¨z½öDpРW›¥Ð!pþˆ s<Œâ-*„xô5=EüÑç8K/böÀ|ÑH]Þ_S“ŸAz¨ÿG@¬£ eûÙÆ^_=àuø= ‡ ’Ï6 ¯³5Ã<~ý>Qê„o¶=*ÑÛùÌংF{–Ðã†n4½kÖ¯7^Wà•ôЭÑÉuÇVƒ üy~rj¬@å\y àƒ&§Sm²Æ*TezXüæµù]ٴƸºž=dóêX¹ñ¯ÓòTêâIa£ˆ~žKá8Ï5°f‚÷j¦MÎ"ú°Xó_`'‡yÞRíäô<±3©7‹DAp7,b°¼|G|»Ã¤i’©<»B¸÷߿à˯_ðöí†õ¾Às@ˆŒ@z®–¸€)ƒ "’|²¨±•¨éþ½¼'³úƽà:͈QTæçƒþ•k’Ü-ÍŠ' Ï’üµÔÎÀi˜ŒÖyLzFÖRÜ Jk€Ø”š)Œ{ôê‘Æ1 ‚eX‰šáK’¼²9rjWô•gÇþlËÀVÞÛ#{¨¤Ý”RjN,YØ…pð¬1DAd½`¯÷»‡÷ "{M„Ñ{õ~™“³Y(ü©ÆØ¹îâôç\"Ó1ú¡2ÅF•Ò0¥ùÀ€qÀº"õK“ìó9ä÷µÆè³×ç²­†ƒ\àtàò_©Jñ{‰`n¾»žB¢Ê5]¦z»†6u®öpRéYþÜ<<³Ë°,?30Ãs<3x2“ug’„ÉnŒ« hSj|òþZk2 Î% ]Aä Ée¢„£MŽ~Ä1‚Àž“sÿT›Y×ÒÉÝ}=aïµ-˜«•xÅaýrÄP”ޱ2²Èàëj/µ+ÆxÔÏË)ý9nÌʤ²AÜÖ˜>›¬Ÿ-y•éº3›¤ù îSLG6#=od(>"ØûŸ”0<®5qHÀÉkì¨^ nÎ’ÍöƒÜÇåµ>’ÓþêÏݧ÷=bØçÔQmhsŸE鞥û]Ü`åõÕ³Åú5Ü k&o®ÛZ¬½Fî()#ÿçÃRE¶É5ù¢Ö ­v±ñŽ"¦TâXÒ‡l–üƒÈÉtº’Ö…Àîâ'º·^Jk¬ÆC(` ‚ËeÂí¾7§ IrÌJ‡B­½ŒYXhŠ¡5’’ã ì‹Ãd·%¯ ¬)BZ"¢^åB{—$Ëœ§q4ÖM”;à ?¸åVhÈxh7>9•õ“¶ÝHHÉF&Ñé“q{DC+Vz2%ê: È™l$*%Wôô÷í4÷Ø‹`+H"Šš¶‚5ÅnKôÉ?ƒ°,+îÉ£%‘x‹ö1ÀÚ”•ü1’^¡›Ñ8o×|[ ÏLOž·ú þ¨‰¸$1>òò1œƒ' –GÌœšÕ4*8{†Ð‘‰ö3Ò­gÀ³QêÓˆÉÕOú{£ÍæëdoþøìTù6qG`œ°Ešˆú,„‚ÝðàGÀµÚ”óóßýðØáQ£Ítå üäD×ÈñôìH¾]ÿýÈZà|Ä`ZëìŽþûG©ÒÙº÷µF_¨ÌŽŠI+6yŠ@™:3—ÙÁ/+l ¾’†P1X·fRSm(heÈÉd¸œsF™=¤ƒ/!†3ŒÓ"ÐÍ$*á{¹\aS<{þƼ¼¼ÀNjêžóë…5<ˆAäR0UZw ‘ÍFèµ|Ðì<ð9{£øéšô:MãÂÚk5PeÂÞ\êž/ÄxÂ|KÏ[ ¨8}³—œ5—Âr© Î ¸MÓ¬’Ùäw¼Ý«4`°ùóI1žßjýý–’ç6ù éÞ3bÔ9Ý[ŸC\ØlG–;æÊAÀÀH¡R›` •úÆ¿gS9 –ˆŠÿ¢I=`.Ï\‰jæOù\,Cöä¨&y3ó)£}¤Ö8R/ôßã 8ÌÃs*½º ܳa_ïoòj:ø%Ö5ú°ö®î½äý·¿'g5ñQÑ‹`/´Þ]bšž0‡É0GD ‡=ûkŸ8Ý* XÆ>„ÛP¬õ9sÙ¤ëHcn6¸Zç*KÅUºîj5ävôG˜íÂg±^¤C/!)%ÕB˜'5òœ&•ë…ZcŸ7ä<ƒ+g,.nB˜4e'] 9¬^§q!8*X9ËeôadÑ èËÅa ^Ù4¢ # ÁJ“D,¬ !õZ 8+ø€Š¡u<ÑN.‰ÍÆœe QÒb“dm±ÅZ«@¦÷+³ÈNg-¦1ƒ+ “Œ7^–±„°ñ2Þ–îY Y^›6 ¢ìw–~o6sÑË“Iïg›ŒgôuG…e*ì©|ÐÕI5ÓMŸ¸Òy”AÈU“]‹d©G*5HßÓh*’€ÔÍ3&ØÈÂÍzr–ÅCœÅe²¸\&8c5­1 dÕéÞš Óä@0ºNC’ŒVR±ê£³è fඬXA V¥ ÄÀQB?áËÛ ¼­pÎ!ŠÅêµ!‰XëÔã$zõ¯‘=³¤™>Tw\ˬÝKÐãDŒ> ›ûnëIš‰VްÍ]ÖÁ70:¦ÇAdí!;&råA|N÷:œ4ÖP;bEÕòšbjlhï)ÇýæèýÔÖ›föI;à3ý}Lûë#­,S­Mškÿqáºù$öæªÍ÷Á>dÂô&à ‹)§—m×€àì1³*ƒ!FÚÆ£–ð§^’ é˜O‡ª¾7Ó42Â2,^¨r ™]5É®Ty šôÖRS˜ç/$2j2>H¿iRéô„Ý5퟊†ô÷ë"›ŠÄð:VKƒ3`Häн¯T}Vå ‡jÚhí”Î iª*§u±®˜¬­mêA,pi®ëçš!²6ïÙGCR¨…Ä`qJ9àLÊ9ƒˆˆÉL€9ˆWÏ1„ûý­ajå&êÛ·Y©^zyyµ×iNÖÖÚÄÆ²øùóOX¸N3ÌuÆ[ü ÂÇxûí Ân˜&ĈÛú†_ÿ ýû¿ão¿ý'¾ßo¸§A‡JFqM9òˆ~iØUœR3Ë(u`£ëCAÄêï˜f DA âꌀÁâl3õÿ~ÿžGqÇäòºÏh´·¿/o+Ìdp®˜ÓŸ›äÕd˜à—7\Ü+Â}ÅýÛWHô‰î“Ï®äÓ)ŠŒ €ÜïÀ²À„ŠÂ”)e-ÁsJpL)g}‘`"&Ã÷áýZXW(’K) kÑ+ƒ‘`‹`„fÎßC™žµ–ù¶®øÛ¯¿ãòÂøôÑáóÇŸ1Ma½Ãˆ³ÁíÎøöÛ¾}½áë÷;"+xjŒAˆê»Å‘‹À´ö”Ìi€Dïý±¹:ï­B2C…9Î$0‚Kúd®„ã±òÆjµ ¥T¨Ø=´¾j­„¬Ÿú7)dhÓss}6 ª¨CfCÏÎ’¤\ßÛš?–* Ñ{>6AÎÃOÓnfgD­VmÂk0Ekª$ƒÖb'ýÌ $ïZmθ áRÕÄf"̉yU(’üQSS+œêqIç‹ïÖÍ*Æ ÁZ¸ÅYÄô9¬¦y†_L³ÛTUCïœSEŒhÒêd¬îÇ pž¦),*‹6ÉËÈdO-a83«É;+ë³x`MNý¥È‚œŒÓá/AcÓº´Žƒö]]VjB>/¶3Ç%MŽö£Q½ïrZžB E¥cIûÃH{´²c¬à\]ûµÌªò åý;d%ÜA÷°irÅ3¬f¶6“|—sª¬AN¬%C°iˆ˜!16 ‡öáT¥c¶¯ßÛ^Ô5fî?r];MÓÀ$œO}ëbØð‰­Úä…èjç\kns}¤kÿÀÑÞ¹ DÌîz:WIbò¤ŒaK gŽX×í}Õ¯Ó&¤r¹o[¯ÆE•¤÷vΔë[zâXžã¢t2›OfL“nÞ–ô®ö$ëºnDÚüñ$¤ÞG ãr‘‰{@l{ï̬&îG,‡‘oržy|ï)t¤)Mj&¢‘F6ŠIfß9Ék þèuGR<9`AŽLwtóÒ¼#9aÿg£Ô ;º_µ1虇ÞØ8“OöLÉ#–hÏ¥NµO˜GGû®H/ÎC ~„áuÄè%y.6z¿= ·û,òcÏî³—£çéèýÉ~F÷³/RcÐÁÈè>Ž®KíÛÙ3$ŠL¦˜ÍG5ÂELÄ鈩©©î(ñ¹‰1ÂDO~7Y×Ô¯VvcÓä?ï·{IôY僉)àœÃd~{÷ ,ï__ñéÃ||}|ˆøæ~ÇotÁï—wo ` kXðõö†ß¿þ†¯¿üË/ßpûúËmE b 8FH ›iú}'v”÷>1*†Ú†£†zï¼7$ÖÀ°)ÓÜìÅ©,Ù˜ÿÉ¿PDˆ‚ Q‡†ž±Ä»z~Y‹Ù:pjf­%Üïw|{søv»ãÛÛ>EiR±œ<,ļx|ùò뺂ÃZR·›L2Fg ¦^ç‚?û1&ð§H;±ˆr 73Ý À¯G5!è¿ñÌÝarÀÛÛ„å¶byó*ó +$ªœtyóøþõŽÛ›Çº2|PÆEF ŒYìü·qèGçôQ²_þ}–õ g¦ëýk÷6&gïí ”zöÏ~dŸ>þõ±gⳙ㳒‹ï@°Y!iÈ“ö¦Sß pQäb—)$kSÙïçÌ^¶&-;ÆìÎÉ\_dƒlÀ©IÀ.¦9ÙjÄVBdík"o ]]Oé—´2OSˆÆ´ƒ¾¼¾Ôjf«¹"z&·A$M ¬å•Ïø¡ž™]:\WŸj5‡X†UÓ“v‰y"t óìžËîçѰôX’7®=ëý°g1ÉÙ6†wú ÷Þž#¿©Ã¡õ ?>ò%Y'õ!%Ãák•®{V÷íSGÃQpvÝkÓ¾ÆÚÎãã¤örÅ4㚉}æ5{”îȬ ¬sn3•ªžÃ\žÀ‹È`=’ÿìý©1ÛêáØ,¦|ƒ7sýa޵‘ùÂeTÕDu^Á­ñk áÍ#Ã%¨Ug-ì$0dáÈarÜí‹ ða3ÐŒàä_¤laÆt½¶3cr„É1¦I0y†‹€[#n‹‡Eô‚ÄÛŠ3té„’GìRû’tL_ê4/)|‚È ž26ஹÉ>b¦xvœ+ª]—“Íít¨õÑ=ÊÝÍ£Ž×ØpEàMå·dw“ýt8 ZùcÖÉÀ+ž²±0¤‘ ©'˜Åó©iýƒ—Y$¤²QCÀˆˆ˜àÄ Š…,$€3 ª:CË`ÈAàÀÞ¤)¢Œ©5F¬KÀ} ¸-÷Õk<ºgÄÀÛ€wÏÜhë:åá3¢†>K{?*Ï"€GîqÔì?4I½DÎA¢G²‚‘´¬M‘é$Eö‡§‹Ý£í‘oÖÙ=:‹n^·¢1?›¬Ó¾‡±ôóöQwäõ,à÷èkö_OeÏm¿çBÔo<°Ë0*ùJ¬±1+ó$¿LÖöÐ!¨tÖ`þÈ×=’éI(G&ôG„ë±?Ûú‚óÈ vðL#ºk05R¿G«Iq-ì °Fe†“±UÒ’ÆÎ;3aN,Ú×ù‚¯ïðþúŠ/Wüû§ÏøéÓ'üßú¿ðùóg\^’q=QBŒû X=Œ÷°i"V³bŒXcP ‡·‘úzfpçÁ±“$#ñÖÿô—ù#,3¾|yÃo¿}Ã/ÿ_¾Ý°¬‘M°"‘Q<<Ï …é‘d¤ÿ³Þ¼·?ÇG€õ÷õ£sjÔ´ž×2`¦þwüG‚‡éÉÍŸÉ^RF €]ÝMÉô6ï½!{ëeklVIôgsw¾RëM¼7s7ÔÂÇÙM·cºe†HûkÚù4ÒÆ†g.索90ÚÑÔ=R¶Þ2%ÿ7 ¡i~£uǬ [¶>‰©Ç2coUÊþÍûsko> aiþ:¼ÙÍôÿÚã¬!û¶?óÆg_¾v=CqÔ+d³ð‘O—9©oF©Ì}]šÐGÁ G–gÉÑ#FU½ÆÔˆž†ÒÅ£ºùˆáI´I;JÉ™ +2¶Ä©ë•|fd.km:{¸KTWöI´Mm {Êw&¡=–5êy«×Ìë*‰jÖhwµIZ¿ÀŽÌ€›˜ÍÁT¬ÑMˆY—ŽŒ½ŽSf{i™[Ôu»ÐŒ³Ålœš·K˜'¥ß_&‹ûðýv‡O“5Ç“€a š’1#ƒ`ÐRt à˜`ŒOr=¥DFL|”œ£:ò2+7]Ó¾iØkC½ýµÈL  ;kùWc2ØÄUj¹iÌ®{b@ÿ°gùUl-³ºMƒŸ|*vì¦ ”!7\G4Ýí”!µ÷Ì› ½N‚E4ÉÈ@L¦êZ¬L0Ì000áŒYH¦ÕMΗïßR¨AŒÁºÜ–‹WÆà²¬¸¯ëÂÉÿBFb åŸkU?ÕÑuðx*:šnü£ Êˆ.ößè`ïeHGßó(¹nÌíuñz8›ðö€èØP¶ù®°)ë¿Ú÷΀§3 ö@æ,Þw4ñ1ÖÆòÃm!1~Ϥù=Ê=z¶qÀ¶z–yôLñ$Íê‘ÖÈãìÑt¯PS|ž½Q1ô¸Ã½gûZÏ"í%Àgâg³GÏV¹¶Õ¹—¥’"±’È_nçgâŒÃ”š¯_¿ã—ß¾àJ“±øx¹àýË+ÞÍW|þðó¬ .J’=7|cï3p'•ÐxްøÊëHDÓ픥±%ùr~šÄ>¢ò³²@Œ_þþÿöoÃ_ÿóW|ùºâ¾0)cE=â¤0ߎWg ö¹NA±žÉò4Lø‘ÔÀÝÞAÿ}V–&>›€ûÌ äŒ ~ÄÊè÷ ʲ¹QÙÁ¯€Ò9žœÕýã3¹¢ö!ADFí6@!X“SÍfµÉµÎUÛ¾ci{ úÏÚý¶–r÷ì%ÚÙpéÇ|ÍôèjÉž=ÿ¨> NŽØD5HgK*¥Úô:³{öòþøˆ¥~4dë{ŠÞç¨]fæÁÍÏÿ>{×uô™Qý3!K­…NëÓ£dÓ:¬îŒ‰Ö{fõïµ7œß%ËvÆúýó=²ÎîÍh c’%‰ w¿FûLÔNÝOöŸ÷¨~Ò{Ÿ<¯¹õJ¯¯¹sÓN^³æÝQDaÿÀ‚M%­¬¥¦m¿Fð¹P8K™76}R*$2éGc›Âð¿™{·eIvd[h¸K‘UÕ½ºƒ>‹Gþˆ7¾3¾…sà˜ap8ìÝûÞkÕÌ É—’BRDΪµ›j«ž«ffFÆE÷áÃÇð”ê¤aTŽÅúØÜqbº¡Þª¬Æ~a6P¶ê;àûÇ^/#Ò0¾˜#v‰ˆÑú«‰bñõ³hA+C˜Aä°E‚DàüŠ Ý„±MS“rìÒ9Ö5lÍÕ¦±¡UUBKÅ¥”w°sTnZ¢9 ‡–\a`ijdëß•xpÂTQZ!Ju¤³¢Õ –Í ?~ßnxùž0²ž‚m Ê«)Ï•#U.ÐyqˆÉõ0Wj’ÛQ¶&æØÜþ†‹\=Ñ$Üù¼¢D¼éÿRÀ®Šà™QÞŒ@#–vÆ!`O‹yZlà¦Ä¼záã%øþŒøxF<÷¯ ˆ¢6¦”ÒuŒ“©Ú)td»Jמ~¡éþ>Q›µ¥Ýad]U?®ÚÇV‰wèúy}Z¶|åÖTðíÖƒYÛáªìb¦@Ý(±[wXc£@yÆvY™=ŒWFUšy…ï>»í‹éŠ‘5eÿ-6àz’@×`ë]û÷Л^Ž p²Ñðªl¾ï°ÑÞ=¯»í13×Õ9¬æÔªrô';ü̸«ë˜­A}ìt¥Å'enHÚ£ÓñS…6h8%¦LÂÆr`øHØ”à•ðoû†oÏ_ááñíŸÿ¤G+ILæ:òÂËDgú˜RéyïÒûr,H.`YoCMWÑ-.LŠìR$‹æ¢U[ Þoa‡ˆÂ°öŠq<×|÷¹Ý~ÿñÝâDçð Á?°}ý‚/_¾aÛL‡(|ø—¿ûüåÏÁÇÿ+Ü~cw´ƒªÅ’¯þ ÿüW<ÿúûÇ«bREP  €°CC€ì¯¤¤1BªVC‰{]ñÄ0±˜rñ®?uçj„ìŠûŽß~}â?ÿßÁûßý_øã¿áõzá¯ÿòWüåÿ¯§âãimPJ&¼/$@rc'=Àîzfìç[ª×½ROò˜ìWñöˆ™~%°*Àžx´¿F ä(¾±Øz°×A[ãŒÌ0jë¾ d®r€þ=3&úyNX‹-w9åH k6¶=ûC¹Ÿº$d„ÄvÛm©àœ¹¹IƒŠÖôùRœ?¿©U1B‚ç–ĺÕ5ùL{‹1˜È7>±±Ì%ˆ@ "›^–£€×.¡¢Wse $':±ÀAA¬p¬ð‘ˆŒ«FIEÏÜaî{*dmŠÙY‚©T.›ëî'fº>Lš6}ÞVõ,=z©]./ü¨\)ºŠJbI^°(¥v¹úïÁdÅåø³çR+¼3¼wÆ¢s´y‰BåÝ)Â+âµ1ö xmÑ4Ô_¼¹¨¾||äÀ>(¢Z"Dñ|üúý…ï/k±v !”ä Œé¬(7k§%œ3Tü¼ éÒbø.Kë*¡¼ËÌh†Ð‡ÇÀPž?[gTÍúÃß¡9·"zÚ8û ŒX‹óщMD”\>;À¸×Ü@í ˜ª¹C-³0[ƒ†dA+W½ä.By/)"±Çg¹Z;$¹*¡|‹`nnÝû’*Õƒýjª_€}pÑ·°ž >tÕÊVêÓ÷ù·@¶[°œ¯¢;#ûù~¿ÛÒ8mûè; 8õ†&ß]`ñ®~×L¿û¹™uôlîß›ã/Þ¬Æpú˜ß¸8Cf&’.Œg€›dΔ11$ĸ›ûUà);» .ì²¼’ô¸8"¤±›ïó)/H 5Eq«-n{ôJ®É©";ÐÕmÌöw+¿7«íbÈ9—­kÎÄäùpä¦ï§ný½,ìÚ:)Ãöýr/%^‚IöÙx“ÉÞ-‚ÁJ[v0ã’§m™ëØa­‰Iâ˳²vµ®Á¦Þå°oÃë×çÝp¿øô,­ú>Î qe ö°ýyVr’œ·1Äch•k‘qËë¬Ca¿öë'f©@ɘ÷?eËwÉòì| ¾o/šQBÇÁuZhh$t&Í ¡‘"ï·)U 0÷¾B•©qªŠíë·BÛ¶Í}/VŒªZDàï€3—U ~«Ñp~ IDATùöÛæ ²!DÁo.àׄÝl_¿”¬õ1¤Eeh€¨à˶+^‰€†§ Ûl!â¹+{¨8(’8º¤¶=䪇=ÙØ  £ýIÄQEß¶phì¬éÚŰmk)v#@`Æ,èÛÞadY‚Zè­g¡”‰G&JŠ()€§qdZSùïy¡eªéÇç…±wy¬wFjIMŽ "Ñ=1»öÀ„謽`‚ï.`sŒ//_ÔŒ¶ /yªçBxíæ˜I¼áã ¼*ì+ØøQ†È~Ò¢[%O}9¢ØÎªiMâ5&^2³Öœ\5ƒgÆzšÚ«dx¦5k­?w×±n&&??Uýf¦•]æ(q¼C)Ÿ%íµãÈló‘"> df´íF¼zà’R£þý3÷ |¸Ã=‹+ d¥¡v%h‡Ázu-½Åù¿Çì‰; §+öÅ•¾Õ ¸½bp­°»lÉš°JŠgî>™A³ÚGêºÍaæ¨XΣ$X]åUÏóSkq礡”]úbæäEŽÙõpX×GvDˆžò¦‰Ñô4ÐÅ3ƒ½7-Q$Æ7^¯!ª4sήϟ¸½LŽ1cŒ˜ª„^S#ëBõ÷ÐUºVªZô¤1ÑâÌfÔÃdçå£ Üÿ<þë?ü‚ÿüÿ¾yoøÓ)ç¥$x|ûŠÿò÷‡øë¿âïþå/øçßþŠ>4à#ì­`–Îs—Áê¸Ñø)î“Mç:yé™±ùZ§c˜Ø ±ÂØ£58Ç`ÿgØS ÊÁ܈91F°çKý«ÕŸQ;{¯Ý²Zß³ë•îÏŒ}r‡|ú: ?îÛ‡‡G½¯.5V¯c”î߃Ä6·îÕ­t3 ÐÕþÚ'È'¬[eÆ_ÅAýøÉµ– ŽŽg P#Lд-Ëâÿ‰˜z×Ubó«e¸ŒZ–gºÎe¬‘ò~Œå œÅÖé¤#ºb0÷ÂhZºWúø¯ç[@ï~œr˜È2þèñ‰¾‡å>Ó³ãûi;çè{{öWŒû”©˜ã‡ÞÑ»^÷WZ¢£Ö¼ž@wÆJ#°|Fe:vêBSv!ì¯s–¿ œ£u¾ÿûgUð(Ï#ú_þ§ÿAß¡Ÿµ”P€¬©.ÚþýZ’™AJ§Í ¼Ô•»þâŽ@!#ÕpU,ž«Éwü<*†BÀ_ ÇèM_(0BT<Ÿ/üúñÝ´÷R²…N#uÆTPv 8£éÅ€ïߟxÅA‰Tœä„W¤®²¤A†9%±t©m0WCkpÍûÏ@C •†Õ5Q÷£é\tÁXÉKïš–«8SM3ØKPÚ:!äßê^’>Ùùó¹âY ß™#K5Éô úO‡}°}ŒÛÜ2o%ë€$’8é„$KíÇfýôž ›3[ï­Ð”ß¾<à=ÃûG™'1F±gúñÜñ ÀÇó…gÄ÷=ࣗHZ@gsw•˜ŠØm§Þè~£˜ ó]µÛäë™9rŒ€±Ð/ü3[íhÝÙrlú6nöšD*‹ñ–ëÓ¹ÎÔêûgÀVg¢SиyF|í²2 bz€jÞÑ€Þ}ª¨W̉QŸ{a LôÒú ³NjëûÞ»^#à ¼š9µÄÉX¼Ë òÞŸ¶Qp55I¹H¶®hïª4\Ÿê{ɤP¾øýî°$×kÑÖ+ãj|7]ÅRC† ñ©(Ø3üÚà´ ÅŒ¬­kT@'Æf·^J62l`<#ˆ4µCiû³¹o °èRÔ~uýÓ n5&süPÏ]†OIµK.ÀàÄÏ sjÜÄôi¾’ÃWöøæ¾àÞã«ûÏÎŽEÆÄÝcÀ÷ý…_÷'~ø@Äoá‘4IHÐQ° `×8W81,gëŸ ‹'÷€f+”š©’µ†]Wy–BI¼½cÆúëÙ£¶Æ#ÕIM­sÅV˜]Ä fþ"ÁýëÖT33O&àV~ݹq‹]ÍÀÍëc~ÓÐý š™ p:rƒÏLê<'ûµ¤° ã­Lz¿Û©Õì:1ÎjPÍyw-D$ÿµaâdpÍ9—´ŽmóÆ,%›c¦_lí}Y3,¯ûþ‚s›gÅäæ x—˜ŸI Ù“92X8<_6?|û†ÿæÏÆŸþô'üáÀãñÀã‹Åè4'EçNh]_6Ó¯Ý6c~:dž©LZ¬ÓX•¸,މ†iKž™>óâ«x³gjP¤Îl݈SvñÊA¸Ø,nÞ›sËù*¥fåÆÏ­ô£Âvþoï¹àõ9çsñì*'Àö<ò¹Ïô1ï¬75#·=³4Põ±cž»5°Új%Ò0o›³ÏíUbq÷¬×„|ÝåØ8\ëý8ã8£Ø¼Ï³z‰'ç\ƒ7´y `ßwÄ„è¯zG•òc‘óÍ«îÙE¶BfELsŠÖÛÃß¶ äꘀ/Ejdžß> I"0E­DEÔ#4ûg£žF(^!ñõ‹Ã¶1^!âãµ#B@ìàx…ˆ‡71p(åV”SÀÈÈ® @pæt®¦Ðp#>'e‡mn}ÜcrpÁ±ŽÉr -âµñÔý‘X_'£ D­ëE´®.´•ŒTuI`†Dã$fï´ie:ÓIŸq^dí¦$í²Ú¤Í:D‹ϨË^áà<ã_~ýÀÆT„#3Ý:¦ ‚ DÁ€gˆÉVÕÀϾJ?DújÒˆâß# sÆðYouÐ;cJ­¬f{ÃÈyg%28 WÎuGåàÌüçs†Í¬Ýh”Œ¨û«s¬ß·ºž;Áþ ÙŽ‚£‘ËãÝc¬*mÓ}æ†ÊXkLßÌïk¥½Ú\9v®Æñlü–{äøíäîg‚WŸaHü>£3ö{žÛŒá9Úÿê1X·”°šF„4jRZgRÁE¬é¿ŒQcWÑZ ÁåSŸ×ç,b€±ÌÓdÄ’~–׫Ÿ5À}ZûáÚ@»Ù·ì¦ÙeÒBÒlowÄpêð"<OaüFŒ~ÅÆF¾à ¨àvÝñ¡;G"Yk“’”–h+0X»4.¬‡« .÷ш¸Ü/F-úc¶Rå¨LHúe“ö È-&îHÏ¥w«îÛçGÿžÏCw‹Áü{ƒèçN‡µ @‘¯X‰ã2ðzkƺ¢Îtà´h÷G‹QW¯µÄ&±»+Ç–¹i”ìÏ´xk·<Àd>DÔdAHáRŽ9À `Êì+$Ào°æUÅ9xOðÎÁQÄãñµªj!÷¦¨‹Þº`Èš0Òutþ"ïê X3pi´—–·sQï>†¬ýÁÒ“=z†èL«vUœå'õ‚y„á΃ ¹×*8ë<™;<ê%xõNñ«_C­Ã–5ºgËbPw_Gš=Kª•¦s6»«ŽÊÚð ¿VÚlõy)Í ™ÜÈ ôßë8”RM¤Z;¥œP¾1ÌP‘âºTD\¡e•c^Þ@áL‹(ƒ‰í¦ ý=ªÎÅ/•¯rUÏ1‘o¬iÐbœ¨Ú䡎%8„$–Jø"VÑz½A¢¹Ñ™«D(Ó¡9% †c‡/›%ÁE€6| G@pJ„Ý>žŠg$„¨ˆ"p« ²§Q œ˜'“ºdiià÷ ]¥EÕ´jA«çYo$&oBõšÃÆôÌQzÊó©²> }0&t¬‚I›\êÏí\SõU0^ØúE!ª4¬(jF_õ;U|ÒG%Òä.t|­D- €hÖ6s1HÎb˜i„™NBM)0‹eJ¤qB €)Âq„£f²ÿÎU ؾ¤ì{Ln‡‚˜t¶FÍw,°Ñ …fÔ\Ý+†ÑÕ9ξ«Þf-w«ó™±sVºBÙ-ŠØ™žÁu|ß¹^igÝq}n¥u6sl»jkkŦÓüe:»ÎB“G?sÂeë@¿¯€­ƒa⌸ºM¢¡##‚QÀ×÷Ç};4Äêk;ŸÎùw‡Ÿ‡Nt³À÷ФÔÂÈÚdõýõ•–¦D¿=+ò î#1÷4f@Ýg[—î~×÷Þ1G˜Íß+3‰™>LÀÏî½f¸šq'Y;Ž•ɵ"§Fš†¤ séÆBv ;ötžÓtRA`A¨$†–蘹EË¿Áv†X²&cwß\ÜJq„Ô\„) 2(% ŽO5·_òiµì °„ÒQ*½Y 1i&–¶ÆtOQØÕÈÌ3ï†N¤Åö›C«Eо“XSÊ7Y‰\E9ŠH9 9’‘ü¬‹«%j ¾nÿsÇ>ôfÐ*Qùh5«÷•V M-ÕûPéØœçPS†~/Éab]15OOGÑ8Îõþ:vœ¹òæS@ŒõWk^JÙL\\ši [É8 åKÇØ”¢ÿ”ó—eRnAsuljâáZ£Ë®Å ™˜Ç‰j•¨l2¡œë é · ˜13óÚÛóN WïWÍõYÓ†Åü7ÄJ ƒÊ5õÆ-€åPL™aƒ@ÖmžMÙݺ’Hkó6ظb÷-bù¼o“8?.ãÞäj[+¹gí“£ÔÙ÷}˜Çkõg€çêÜïº;ǸOA(f. ½>v˜˜õ×)“X©@œÞ5d­÷e¢FÕñ™°‘5#G.Ùǘ:âÏzÖÇ…Y…K£÷æ9TûSMJèß7ë1Ûܬd:µ˜6 p¶>oÖXjÎkVÔXéQ]É\Í™;ë3ëÊ‚Xw^›1Yúñ¼4¦šÜ§^ýüý:oÇL•3Ëq¤A)¢c½L¹ên˜²9Úë>˜ŠÇ˜Ly§9­5¶Fëð¡ýU‹–箑š e9`::ÇÃu¢}'n"Å2; ù1Öå 8½ÒrÊz£o HÕm`³üoæ]ëÿ‚i*6¾Š¡F]#æ&U¹û4Æ^ÆÏ÷˜ë< Æh]€ª5¬†ùÏEÁjT€_­9£ü|&²ràžiõö¹YJžÞëRö“Œãs¯ÞOz ™^cŽ Eó˜}çù2Ú߸‘ðßÁ¤á*8ØW5Úll ”~n›\Ö+zT~´Ø§žé|‡ Xá¥õ5¦‡àšÉ‘) ¯h}þNÄ@ ®(nÙá IBr Ä`ç# ü[ð¨x²ÓŽ]÷ÔÎ¥pÌøâûÖ" îçJƒ¿nQ¼Â‚€‡sŠ—wx¹€LÛ(¨"J™ŒŠC¤FÏwÔlæº'M}®­ûàT¹Ï‰LíŒE¥@¹­\VŒA„Šö‰Ò»ž«|DZQôبERƒ IUW²Îíóñàì¼ öNÅ ×™¬Qy涆̸¦„< %Æ•íƒH¢ÿÉåC³öEÖ>Èß™…'s¥y3ætm\êvШ!õÌ;ì¹êÊìQ•:ëI®`T4ç+P¤Þ{ ¡Ut% y‡QµrïzЉ€Ï¾»ß,¯H³ÊHH›]ëžUžåEÅèG™&WÞ• äÕ¹\‘W•ê•¶Õ=0TO­ãŠj±U÷kËíÌêÊïJ¨~¥[`BÐÔ¶i×›h~}xÿèXoz£{\·ŒžÑ¶F’Vã±®x áV€ø.hy7)üYv÷«ã¶ö;ã³Ç>×…;g€PùÞ^kB,I’v·àÆDßM‹šŠ&+ˆt$w×ï¾¢¬‹õ¿OjÍ$+ ñÀيׯŊD©‰h-HR AÁìQ­HXÜà\Yoˆ\bŠ™ ËÁôJ’84¿,ÈBè9f %ϱ¾7]•\;1…¡™ÃnÝ®TŒk 5ˆNYU3Í»ªxµÒZ\V+ ÷ÊFý ¬» pÿøgŒ_Ê>QªçøŠNk®Å}\:ŠÓ~”µb‘ZãrÌŸÆð¹ýLÉ‹|".uÎÔŒ?mt™ÆÚšwc"L>']F‚!Ýê%­µà:JQ>Ï[î uœc8G`—瓵òÃF*ÖÒñ9ï=©ý)· nÛVþ:Oøvó5¦(ŸÄô˜!Â…áR€iÅ €ìŸáh¿é÷Zoh5 § £]ÓøDŠŸjP¬¾¿Ùå|>÷ÚRýç뮨UÜ?Ë[zÓ‚ó˜¤%èþ£{vÝÚ7Z£zwÏÑú02r™Í±‘©Qÿ¬¯\âGíñÚKcĦjt]u\$é×Öm„Eë¼*J×cmV¨ *#Ù˜|Ÿ|=Àf'8D.s…|$@LþØX»*üÑ“ÙÚ”Y—mEWv»ýMeíèpÒFB…~Ú·R:2@Ç3½Ct‡–’ƒƒÀ‚µ²"ëùº6fhŒ)pQóÅv^àXâ7…wdmŠ»€‚;‚Ü>`"¢£×ªFóNi4bú€§Iú,@É=©c½—ô}MÐSiÔ%\\´U🈟£â²ÂG4ß`Ee¾˜)§¤8M Yc{q7b€í¨£¤ûÏËAŸn@_¶À÷Ä!«Šo&Ô«” 9ΔA-X°6Fͬ¢3Ztúù?Úlz½„Y‚ýN¹FûWs|T=¬¿·^ðgŽ_«ß]°‹ðãæŽswù¡~€èbS§&‰¼tß¹Þ»®’ï|nŒÅ皟YFßõÎs_õ1#ôSì¨c¯äËó^Ù+V_ ôàCˆÜÕàz‡ ñCâGÁ®• –ÞÐ:»J >̀Ļ󦮶ž]I5鿈íÉ‘XsˆõRŽ=¼-sYYI¦Z$yói@®ü¾ŠÀ´*|ÌÀ«º7c´H'þÜÃ0 UiôHQ]·÷4««£N«=oõ™•[ïg“¨Õ÷®’-«˜éŘúñêdG9¸Eûÿ,àyÿ‘$øŠur·˜6«€ÎÆñ5ÃäÐg±ý`!PìIƒ“£Ý1#Ì\fXœÔC¿£1Ñ%¡M‹nä”h£b²ŸÀ“\¬ G²vG9žHËL隊¤ù+Õ&X ¥ÂLI @ÜC‰Š¨ŸÛDPy%Ö'%ú3WAst™*(n±šÄ?UóÕNÕ5ˆH}¶k-:ïÙtššs£3T+‹Ó¸Ñr§g­ÑAü~帚'Óq<8ÇŸ9ßÅß-äÌïÙšt–è5mþ¬‹F¤T˜üïÝcØ„ ™· ŽÈ`ÇccÔ¢$—íÒ53tTtm@RÔ Æ£E°°²Ò½‹Iÿ*™cŒ–oUÝuÌz´*Úq-̹¥?¹ð±Ž]ÝU14 PPÔ$;“c—züw0Ézžã¾é>÷]Ì´6Në>£¹Ž|G­r#à¡¶GKïrÝϓѸ˜×…¥ÑnŽqŒ`aûÞ·EeY0»êX‰ô¯ âý½Î-z£ñ1 m¢¥Í¸¾Ïu.™ÙRºÈ'ûë©c÷cãz:jQ^¨QrÚœ£§1€‰áGIΈi[ÿNN_E\œ¹2¸ •Ü(Áì[³(Þ(‘ܶÍ£´:N7KQz8 ˜…#FÐŒšMD íMµ¾î‡Ž1â)rdŽƒžÀ¢xì;ž$Ø< b€ÅB°óœz‰C€xxñ Þc 'lÎ,C7Çxø€ÇæØ÷€WP¸h€—UW“Ð;3$ÒÉ­]dx)Æ|T9iHm=4r«àa|X2Óe²QìTEëÖ-Ÿ,$ jÕ/vEö¢J£JÏÁ|:¨û͆Y_ÇØ“H©Ø“ 5éQ%÷!Nª„ì7±îïG©Š%Ú1ÜBŽJy9ÿEB5Ò€«7˜ºÿ;ßï\yzíaX9œ<if"*㨲“_¿³qÌÙ{æLQçéBÛ01'ñwÏí×I¶6–›¢Ïý:×k¼œ›ñæ\~Ï×-£+×»™ÆÍQxˆ?œDܰé¾Ç~Ÿ &¬ºþõ™‹OÙ+WÝÕ8À¨ÕX•€r D¸ÊˆâØ'tɾ;퇘µ»˜ªEûZ‹h¯‹WÍOœÛ¢FsdæÎŠGT±Jëlu§µÿoý§Ü_6àO(Y<]ûM’+·V23pLK‹Öø¹ó)Ÿ=£ë×½‚9­÷㉶ä x¿(¶ÕÚ9£¹^Z‰Š+©•Ÿ³5RÁ©Ýõ`cõlMËïøÈM”“LM&^²c굿/ø‡Dœóv©X5gÐ3èÎëë–W3yo¯îÇÔp‹[õõÕŒžLø°ó¬}– 4Ó¸_›ä·ö[WÚfûyd ¦4zÙ#=®U±°¨Vúb3§ÀQ^Ók@ŽbÔ|ßjq”›Õϳw”L§;X£xÒ{_ðZ>%+ã/3–Ôãñ(ÌÆ‘“{.òä4¿üÌŽpQŒ,"Ö‡Ê †½ý¯ÿóÿ¨ï$ˆ§ ^jæ4š!¶e7„„‚NŒ§‘@\þLôˆ¡Ñ'@™m¥AñН¸\r&øcÂKÎ$  ÑœïŒ@n.qìþú׿âõzžÏ'žûn=ÑÉEP2ê¯tˆÇð ¬IÂkO“J‚àµGˆ(ö|ßž» D5ZZûŠÂ5}§¥u/UžÏ§ ¶÷dÀ€àÍÖÓ2¦xîû^‚å¢ã G5ìNNgãÀi’Pè$€åa®…àËXiÀŠ6tµÅÛM“Žðʽú<`_j¯ÈdM­}Éý *Ž?m X¿€Õç_Æ´sia8ô±Žûy2#¨ûŒn6‘•6Rý'/£ªØ•p:3#D=éåµ×}lb¥]´º^"7ˆF‰üŒá3™Î8 ¯qÌ@¦ÿZ1"Κ[£öÊÓ&.4èfŒ¡þ}Lgç~S=ÃüÞ<ûÏ13‚Äa½bÕµà w#åe[ø•ãe_¼ã¼ÓÜ?æË`lv]=9«]1§³çv IDAT#ÖÂȽæìø30® OIY’© [&9çõ=kãŸä.—mÿ‰!4›‡Q"˜xÊ„œ±ôJ…Reúl)ï“w$Æzñ]PÒ“¦íþˆÕ¼.z‹i¶:Í.@ùhûO¢Èœ™D¢Ðgx)~.¸½Zs§ìBî^™\§A©µº½JàôÞõ]¹\Þe+ŸKçbxïþ®ÔR±í¯îÏÏV¿ €_=žÎ+]ï¯|ŒÕ†Xí'I‰7™­eŒˆIì¿3Çß1‹3ržÄ§¸‘™“û f³ëéq|.Ör9æ$am‰ ¢¡‰cËù—÷uà$k³eðWBrÏî¤Õþ–ßÏΊþÌÀæLSÊ1@AjÒ.Î1¼Ë@Ρ¹µ9†÷@ÇI̳ö9øtþÛæðõËß6ÆŸ~ùþüç?ã—_~Á·o_ñõëW8G‰|s)÷&Æs»Zf8:2PíËc+çÁÌp„²Ö4ºVf[½¿Å¡ˆ ¡" e§gÒMÆùž¿öçI[èª5Ò(<æ¡ MÂ3µØÌJk¿¬Ê+¢Š@±9_]S4à˜¬ežˆðŠ¡'ì°Â2’;d&BØ}JÀUxÙØË.“NˆLàÆÁSOœ•üB 6Íæà(þ¯ 8«n™Yþ0fö-záŠõy\o 0ú¾¿Ÿ•—×ÌÚ¹êR»Æe`ÐN„´ÿaªç©}I§@¯4UßwÆ×-öGÕþ=zí¤}¥g¸Z«¦ Ì!Ú4e`]±Ÿð;ãSW……Ϙ 4×÷£k®~¦¥ô÷ÓÞZ»q|Gçê' ŠVbó0¨$­gÃûôúÌDãˆEg ïJëðî=-’TE«‚ɉÓ·&‰.ÁðÑzRX³BÐ]ÖíávÇÍýž>‚ˆ!I·­ 9°ÓôÚ¢Ë ¯»éŽŽ’&±e)`(D1hÉq2“$ËyôAƼ£RäˆÀ©Ðr€aHÛuŒ¹bXSªnå \ÊOˆš-¥ÑGãêXÿñì†P+€eÓqÕî7lÈ7úY£ê˜Mq3ŸÊÎæ'Ÿ6"ËÏs±¦EÈŒˆ‚ÒnÝ É×ùßHVeö¬Þ‰¯bÌw€°[ þ`Î;GSy§‘ëß•,N <Ûïe©q\K 4Ÿ®3m쀿“d¬\…F½ûuÔÑÛ©2¬ò÷í-#”»ê²¨úcÎ4~jÔ• ES 8D²ë¢î÷t Á̽¢… Iû¾Ã1Á… ”V1U€X€ p©à`‹2™#Žfûl‡'ư2· †ÌÎÙD7£ŽD±#†²•YÁÀ“öMƒjë4iéY,Íb¤FýR­Ÿ/FV I³pŸÀÓwÆf^ÓïÆ‡ÚŠŠÈfïšÐ¸/¤šŒœD±´ñ@ƒ‰o-6½vÍls™i$Ü.f´å¾m™.žNÁ£>»›˜¬*"W×=Z Þ7NyÇNí©Ü£{]ßß,ò?ÓØZÝ»>»³¡õÇ).X3 ®ŸÇ»ôiP¯s*ô;Ž‘W–î³sîmžgÇ|›íU?#á\ét\Uï´~öÏl>ÞK´ûów Ä‹°oA8ïéü6:›?wÁÀ9£K·$þ]=®wt½î0°¦ßƒÏ3%ß™£±ûï­•´b%ÜYÞ9ßwœ7ÿfàÕÂ%úg­w?Ãb4'Vúwµx4]^¿N“ËÕúUˆè¥'ÞamÏ@‘; ´ò™@¦c½CYkp]í³Vx#Xq}ãÊ0Œ«â]W<ÍŸqOuk#clZEs^·ï;^Ï€ÇcÇãñ(šÀÙtꎔNbï*H "ßè@õÚ»W:Å óïê–ÂÙ¸¸6‚9ç9W ì,–¸ e½°£rð~´.å¹E“;4ÏS›šR•jEh8À’œ¯®\þVNàŸm•1œV.¼+‘û«“^ù LʲÈxUؼ*ŒöÚr'mX¦qËizN™!Ö3É ƒìª;4GË8„ÒŽ áÕüŒÔ6–#ê^lUQž‰Î6‘Lyó>÷cÚdˆ¤«ËP»‰¬ú†:ÛÃØe÷à ζãÊ!ðs7-Ä  /IМv@(¢¦*I«‚ÄÀjgâñpHl). cTEsÈI @n4×CŠUÉWœÚyp<Œ\šÉ–œù¨p¢ŽÅ‚’c®„Ø"/Mò0)5p,÷ '׸aKØñŸÝ¤>Feƒ—1­'Üþäþ!Û€æñœŽ“xn®xJYE•¡Éý%–J^àîü-[£ãd¿œÎ(àsIôÕÂ9JûyØTí‚OT£9¹Z²†ÏÕ{îë–eÂÅ@õ¸ÏÞÃûèz1¾Ò°š]÷]çnB5KúF¶Áw¿uÜ;áðu§]äêüî¶NÌZ)Þr­Aõ#Éܪ:{Å8^Ý‹•HÿÈ5«ÿãèŒÕÎQ½[WÞ#˜´¬Íܵ®êBUŒ€‘ÙG;þ„0<ß“ FI@éô¹ûü>\ î"Óï¼ NYd Kǹwµ½~6€ñ3@š«$ì³Ç¸®®ÖÏ•nÊò~àß™ñôÆ=ý÷ü¾;X»`ñì‡E½ ˆZ/k³Df^pkü‘L•#Ó¼ÐÇÃØánÆ&+ׇ^_ðŸZÇ{ÐäwµzîĨ™æ³?1Fø¾ý ‚Í™.N½ßçfgàˆ“æ•ý7%Ö•#Àgæ‡0‚(ž{Àcø² â–µ‚ßCÄÅÔ‚lEd[º"·e]Žë‘[ú~pÞt ð«5™ú}þªuvy“·À˜U¼ÚŒ%_‹“»o\\çÑ墂ZÀà5Ó¼îöÿã;R>É3É|?ý Ôü €>Ò—Z2ŽÞ(8® €#pze¦5{¦µ+él ­@½˜ÕÇ÷ÃÀÈOQIXãd`p´S’ꬑÆÎj°¶›÷\{¤½@iDÇ{„mDÍž‘&P/´6{ð8iG!DaEÀkݵ†Ô×íŠ œ«œ¨já>Õov ï“ã›`/·›x`¼b€H«Ù”•ùs,t P ä†—˜5îã vÁÎbB´ ÇGëް~|óî©…ä×í3!ìQâºJðf º‘pôÔÆYÇ G½AÎXw¸¬¥Í(1jie9Of* `¤ÃuÇ处b<ô»Zñrª(âí8¯©”«Ä3ºw„ÍžWoR°JÀßq[WÜ ØZ]3­®Þ™cÜ­£fàÕŒb¿jé7”‘äªåóJ,rµé®lo¯@£+VÁÝÖÔÓ½Ó5è6Y_WÇ£k˜Åf™y0̪à##ƒåܸ‘—Í‚Ä@¼ ŠVóìîœ>·»[¬a ­Ö¼Z«Ã@}ö]³*ÿp9cù\+€";æ]ï9?Â@9­ÁøÛ:¾}û[°¯V ÓU+õ»à×íóºx~¿7Àõ{·0^eW߯÷Û¹Ûuö:Þi[žÞã¿cô ŒFe²7Ì\sû½~Å8¹³-].zb†Ÿ c\uoôŽ÷ù3ªb²(àJªÄL¥œóP ÅñÓy†#S´–AO•}Êñ@'­X(#žG¼^¡ì1Þ;<œ¹13¦™÷ÔÇ6‰…Ÿ´°zé”cœE2 7)¦æ…o^æÏWûĨ3 þ×»¼ŠP£b[9ψ“Ö¨³ënQçT _ĉµnÓ ,ª÷FstôùÕ:3+,v»Ãž1ÌzŒdf„´rîc¬6—™¯3õzPwZõϦ>£–F?K¾Vz.-Pe`IÿeÙ]°þ½ýì…¾²~ÓqQ=(ÖGú­h ^"ÈKVËI°¾Ô–› $‚£¹‚ÄM8•apÞ!¤–ÈÍv(ˆ/¦§ÇpŽà½!ûn'8‚Wøàñz½ áÌ(Œ°˜6—›¦{ämñÞ!ˆ-Œ»¼ÜŽWÂnVQû‘õ±Ä×Y3EÖ*TöÌåСÊ*;÷3ë/؆‘’4vÃ*ý‡R‘ìY^G/¶Ò2œt¬$«ìòæÈÿ‘?³Ófø&à#k¸Áœjó³JÛÙNøøœ%’„T)kÁ™¶·Iý××'(ZhÉ€ZHÚéˆ ¹¼—…¢ _-n+—ŒUrTGÖ›-Ó8aH4ý³ùÆå ‡¬ªÌÖZU{Gv?¿G‹`=¯î&°³±g¥ÔǬç_ßï}Uµœl½ek߯uÅ®˜ÙϪÑûJ Ói,]‰r÷ïUx®*ü³öÄþ…N¾fŒaíHé/+{#@r¶¯´ÂVì«Ñ{®“WC¯‘1››"‚ÇöuøÚ’»-’wÖ¥w“R:Ä/.[9¯XK3ÐÑzu âp°°fî‚+ááâÊ„`$’<«ÖÞ P¯~ù}7ØÍÞ\™œÌØ)+6Ïøsªê_ƒ«s?4h>€½åÆX–пé½üݞѿƒÀüù˜z™¿¬\n§óüJg°ïÏ@ü+v÷j½Í2ÇþL­ áEl– ŒõšX»…mÛv×Pq+Ÿ»X÷­ÙuÇFÃòž‚|³½ZM‡Xâ­õÏåö#EJ€­e‰ÕD£íú *&[ñ)•hkƒD „ˆ×Óâ¡øE“¼ ÆWfý7ÑÒž‘­Ã…,÷Ó,™“[ +Q׺„G|ˆF÷ˆ¿Ü0g;~ʸíâ™^Ì}Ô6:‹¥G±€°¹ÚÏó©(Øœ‹´¹Oí:?‹7î(€ë´ºï›<Í€À¾ÝónäëN¡7Ïß|/G¹à xœˆù_åÕ³vÅã~Œ»»Vø@¯S>Š ýŠqÐOŠüZvj°¤\¶CAË…¡I ]éXˆEZº~ֿωgþ®ü¾ü{û÷Z`­×Öê+Ôh2)”¸yϾ›†×Ã;¨c|±Zµóx Ælj®™}UHj+#"(›VTö´3õÂóc¾2<1ö Q¬RàcÒÇ;X"(l//„èÛ¦ˆ}ßaÅóã…§ Ü/ßðÚa«¶2c¦Å´¶¹ì)~æ°—7in–#9‘Ç\˜ V)1à%s”N‘beݾmµk¨mÒvj‰ –ª6ÇâP’™JZ‰šbR*4‰9”®s2Mîç¨u½8@j¬¦ó&Y29Å%ÒT²V¶ÍWb!ÊQù3WNÙqûŒ¨ ‰±0±úë5„¥ø` ¢Ô¹yÞ½^/8ç†cÀÆÿ>eC8´Švžçïh(îÑôjÅ™¡BžëùjZµµëúÓùÕA%ìû>5$˜fw„‚O:a14ìª(1E®j™;˜}TØk9 hA£V(´fHØù‡K5ëLÄê\ëc6еá„› õø¸GÌŒÙ7ïÕ—é3ê[EgàtßÝS×GmèuÐØ'+589Ó8胅U€°º/£¹9b9õçxÈ…XáÐt+Ǧ3ïnÈ16²Ç>ªçåß]rÛäý%~©“áÆ”k'Um޳Pïj`âqën¦ÎC/ŸÿhMñ’èt['=C¨>÷áx1K=ž~®C/MMVçM éõ]‚ vÉü@˜YKÌ]†ßU‹àl|Ý5810².ñxÁy+kIÖ-­ªù+mž+pÿÎý?iåý’Æ×Gz¸@ÐPX:½†S XáÑf«s®0àGIyïR;ÚãÊ~Bý~@dÆáþ­MrO”ò-è´¸šs¤>í[_uXÜ-綘u>&PÄÀdàX]cfxNQ¼ÝÈ"ÑbÓa8Ub’tíYWçñx”."+P,ç|ø¼wˆQáÙØQÛ¶5:‰Æ8áÂ^;Ü÷'~ùã7ç’TLþ.VÛ2¨XÆ‚î„L”LÀ¢úºÜ*Kè€h®£Ä„ ±äQDd93ÎÇqú:—ÉcJ‹caŒRò[f†O8”¨ßÌt%У5õŽRà?..‚vOÂA°`Ó¨‘ܨ“ävž¢íRÌ΀ Ã.3´í{}Ñ*+´¼Î1ø” Ö[k15Å’A@•*žv%/6à ‰'9¤ã´0^fvf­åx$)é:L³]DàÉÛšÍé»ê±‘ÁšzJIÔ{h°—¯»WN·%(ïÝ#‘d´Y rNW¯ùYÕ¹žéƵ˜K áÕ†2«,dÀ*·dÕÈé õTÚëÄ´GóFèÛÈn±]ÇUKªÐKâ¥m®à@ò³Å²>wÑJ€@H(½1Çb Ñ\66ÿûñt–Œç…##ªàõÜmÀ« 3Èè° ¨^1ê $6X"x8Æã!x…ç"v&D… È ¥L!«8ŠÈ195F‹~Ý£&qv=(=®]sL Z „ßaö”ж•êªr= €îVOLUúù6*ó‚˜HJœ9¿ž?j­ä%ƒr®>§|ܤ?Ü ]ÎÀ€~þÖ‹Eÿ¼®XX#AÉþþìûÞ#gþÌž€Ÿ+Mµ¼™ÖßÝÿî*išé \Ø£ëçjƒ9WôS­.Ÿ©ò÷×?àÖ}s7“‘FN¬¼¯œÌîÞÓÑk5 zGgdT!Ædê+”Ÿ’FçûsX9êöci– ÍC{zä.4v£Á¥{Mí™Ôìûóç<¸˜PÜ™+5Ûôêþ]Ï5sk¤=3ÒŸ'¢ü©9\Æâ¹ õsIçw ѹ ø»lÁwÞwõŒ~ôóŸ=î»âîÿÇ\i¨]tW­©§„Y×ûèHì@ºw×é«8kt–¨Étý½ãYÅWLü‘ë­;±ÅŒuÎ]œ–Aœú¯ˆ´â¬ƒ?ÙexÆt®÷§«öÇѵÙ9GìcÀ’&a¾ xØÃ[÷ÛR¥Ù™VIcçÊm ìJÏ7ÃPqc%—º>lÎÐølÇjU†$¨.Šíá°9ÏÀîûÎxî;ö@1B½XU#H©«ÅŽ)_KUr¶Å×IzÝ@‚Í1<vVìAYð ‚HÑÀ¶ ¬’ºªBR\õÒM/tvÉ kù›îwí\%ÒþØ!Ú"¼Èc©íý¦ôÚªœØÇs¢M•LfaõJW@±åÝX#àHÜy=™5¢–Æé{§Õì,S@¢E“%;!’ؽcâT²VVBóÁIì‘óµæòp[VÀUὫ€æÖ¦4œçÕ1ˆÆÁω*ª& ›,\­;£ö¶zS]«ÅúDïÒ>ÀžW샕PüO92 ¨9JUî$³Dx/I=Ÿ¿Þ°î¸]mš£{Ø3þÞI*kjÕF¸L’é˜ § IŽŠåI¸ÙS»çaJw_´ì“ˆ)ÂWZU ³†!GÀãœkÆŠ«äkDŸ™(\·h£a7A3©X„TZDêBÈiŒãhõ¨ Eº Ÿ‹ÊÁA®ègJ5¾¡]¢’’Ö[L™óýÓ¤ÿq®úžÇ~šóû©Þp*ÇG çõÏú£èDÚô=kØú7!ÿLÑà÷±†{öˆÊZ"W,8\Ž/Z~ne ÃÉ(ë¦Ú¼9ωvŽ®XnzbuõŸ)ÿÖÕÚ Ÿ7䱆΀)Á5ºo§{D2Æ £_¿«Å0i}:][WPÏl½oLqÕZÕì{¢'ù…Yq±Ý/MÔ£B­Æ ZS$@$Vyµ&2–™­¿bZÄIÅäKœsEó,ƒ[¹kÄn$CÙÎCÉ2¼˜ó†¨Ö%¤ G ,? ! ÄXrÙr}Y«§ÈSäg”€ ç‹î§ yq1"FN:mKàjî]XyLÎZ½t^¢[t¤{o×› ù§ˆ”Ó,iPÊ WÙR!ûO<1{Ž–É4®™Vg¹î4^$ˆ@ÈÏ$DÄ ¥3èñxÀ¹ƒQiRÚ|bÌ—¢~ò Sú IDAT7G’*SÖ°ÕÓ´T¥a™yO/^*WU8NùWŽq*ækor6Ëñ˜GùBg âÀÛ/¾»`|[á²~÷kKÃ\壸Ñ=‰6Ö¬—õj¼ûUbQ#Š£àvD.‡ÇŒ«Âü¨\+º|}=v”\ö‰ó¬ÂÒ3eúÀ<ã*#¡Q/0”:-°ÊòTáÔŠ©IôÛäÇÃÃ{N=žüÄ+8xï!"Ø}@H.†¤jU‰ôKÇ·SkŒ x[$l1÷Øœà€ nB‚(8±^E$z0š” @Ñ2Z€ÆÁMÐ+]²ñÂ}Eyï[ݦ‘o±å'§ãIZ»°¬Újû t-Š]ÏtL+‹6ÖÒÖ©)("©Z`›óË‹ClÚëñ•YNã~d­èš{ç¿&‘ÅY¨]UáÛ-§¯+6ÑLëNb¾ªZÍR¯À™U°÷N²t7¹r{¹bÊ|Ö ëÊ…åÝ qUzç¼û@bVÖ{Û]—(½°ýž ƒªÔªê¸ZCûýw5WgûöVÆ,@¹Í<]‚Ëœ‚àxU'QwĘg×£0è•¶Ú x鵷ÑÉ•íÐ>Ú¯î͹Ñ9­ß{wxÏ0õw„g€­…/ùßÑ…ñ*öYUÇo»Pá½ýdµŸ_Ó@îîý,›ïü9¹uÞ³ïë c5ƒ!9ëø–‡yÁHKèªÀÔ¬MrѬ7Ö+S®ñõwï¿Ø_Oöm¿Žf9špÌñkyM ʨí÷q6‹­œQòq¬;‰ÉÅG{y4Š9‰‡¿¿ðÜ7|ݭȯ@SÜ?ö8¸¶³Ë´ý¥Ô¦gæM#­ÖYÜX¯Í3 Ûù_Ø”£â=B|Ù^¯Ï(xíŒ Z¼2˜Å%/€‘4 C®|{ê&˜Ê±ˆ Á(©Tç :*‹ÛQAo–£…£ýÙPl@!´íw“¤2fvQS-¹¦q\Os ¸Uó¡k¤Åi0…%»šXSŸ3²b¾.) "ÕΟ€t')-X#:ëlAϽø£„6l"d½†Äjž6íʃvÇ«ó\%Ø3vɼgmÿ™V’w¥U õh#¼Óµj-“Oº’Í(ÓWL®+0qtßz›ß¶Uù~kH=vg‰Ï `Ôâw7!\=›»ã¦ b¥!Ñ›Èôî­¦Zå"x´èÝeŸæXdëgç¦æZ—<€ì88tn2;¢ÿÎS@Ö(W´2ò›ØsJï ™t·®æõªí£v¡\@Õƒ6A:îá›ëDCäÐ3ÈUYW·¦7ëygÍûÙìªÿ¿£¯Ö“;€é |¾»>ÜÕòº›üL×_}Ï{KLýr?ZÏ5ZÄ<³ö«Vq¾n¾»&_ãíçä¤Ü<´¢áwÁ;ñJÖDê$›™äè é×Äd ï¼W&TæR8AZÓ¨f¿<Š¦Ù«ÑÞËóųtõˆ‚£ðŸ÷/R@%X+b ¼ž„ÇŽ/û ßöÞ)à='7ô$Ÿ¶“Âv¶s£SœU”à+0«Þ÷WÚ«G ž, sð’/ lyœå¿õ=÷ÞÙ›¢=ÙäðdBa.NÆ;gpŠ×§ð%ÎOä’ üD­˜Xö˜aÿÀ—¯[q©c¶.*qö,Üd~Ìd‘>w×€ÞÐÁþ¢nöìFä Õ±®Šù3ãÕ8µˆÖ€çHÖ¡ ú"kv´ûºç1ϵ´V¡ÅþÊáid?JfƒÂ{?Ô³Ê!‡¹ìÅiU¿®`÷´îó\=¨«Mtek/€÷®­„‹õ G²êB®Ó'nD$™µéóe&<6C”k±ŒÁ§ÅcÇë%Ð`”ªŠÍñaYšá1×Bb6†€!b-„Þ‚SºÀ ¦Ã$Dé6Ö›ÁùÓäî†~~‹ðˆ)w$ 4HNmµŠŸÚÆF ì]&†M ¹ýï,qiÏPµJGÈb]2Æb4U¥P͇C¡4j´>k¬€*J€3f•ƒF®p•:Umf q¯p'¸ëu¶2ëòÊ!qå8W?‡ôj|_«?KGeÅœºªèÞK ÖšSW¯›:NWcèêþ^i=Ü©ŽÀÕcLÊrüÝa$¬ö™Ï8˜]swZ\WãÔbûØ:Óì*& z=žG™ï$îtê۬⠽f&¬Ù“?‡A¹gË}ébì\•;ê ø& sÕJü0à {˜üëø»@ÞÕøøLÛáÏ(\1vjkuïVE£U!à*)»ÖñÔlN]ZžøtŽõÜê×Ï™<ÂÇãÑþÔ…Ü™?3 ÉÑó•ÎÕ­üíòª+·ÃÃÍNJ¾3c¹¶‰XK—Þç‚÷­TF2lJ‰i6JŠmó–ó rMUET2€%KÓáõz&Awu¹YáÞ0¾|ñøþzÀù”,{w°ãsíº¡$D8×y½=Ã$ºŸÂhæ+&:ŸÍº6¶-å ñÝÝN ÙX]Åÿ«ü¢}Oãz ›E|¶*¼s}#‘ôQÌ9sœœp³üo¦Ó»ÎÚsñ3KùQ Þ·ð´iÊ;ßô¼ßS£ÂÒé ášõÊõõ¦±²×¾C“í«ÍyÕÎCr!j6k!Ÿ…j À ÒÚ”ž$ŸE!ß#ç%|{l„Àx1àHñ"ÅŽˆ= œ÷…&©%Q4˜6‚ší¬AØâpäÁ °‹`aðn, ÓÏ »¡ÛöïT/G\ÞÓ!M…¥ü­–Ôéþ¥×%§ËÚ',•I‚žÛŽ÷f&Ö} œŽ¥èYšç¹hœi•¸Ë,Q¯7²êzc]Ú~.j˜)4±¯œÖ‚Ð’NBPk~]ÁˆàR(¤xfswä¤v'y¸”´Ü÷™ËHïþV/bìÝ­f¶ÜµìÇå”16HZßÕ׺¨üŒcµqÝ­ö¨¾—ïÉ{çÿÙ–’Õûg̸+­·ïž1îfuÝÿ˜zGèwÅÄXkêµíNÒ´úþ™D@ó¹‹6Ÿ+ʽÜýk­oÓé¿+‹ù MÖ°ÚÅ3m,å^ub¢¢Z\l1üõEiâÜeâ¬ÇÇuAî3ÐLÜþ€õÎܽ Ð|fùQÐéÖ±~`{w­¿ ½3ÆVûàpßïÇŸÞ> `ë’¬“µ·Ï#1ð¥`Ýdè*Yç)£u~tîìO3×ÚÜ|\ÇË«g>Óú¼ûœˆx(®ç¿äõ—Îø™•@«|Y^t´^wÓë•äêcLfnù:k÷ew€W-ÓhäüöÛ«tÄl޽GLàÒãáðíëÏs;‚ËÀ+‚DHŒØ sìÐ2å©÷ÃkÁÝù1b ÏÖñ \5î~8Ú½¬#È7탵8ûð|”¦9ú06©Ì j#sªS8—þ2 ެӇ¬³HĘY>(¼×¡äÍè¿W죕9ÃUûN;Þ̬læ.}Ó1“¤Xøà³½<Ï5wb1ŽÎuV­\´šÛõ$kÄz™Ä™™V‰9¿2!¹s_Uõ°úÁÝßüÆQwz"©$ú’z¨•Œö/ \)r³y°³µzYokvù‹åÕz?ùõì0K`G‰ï½dY‡(íÕ¢ßk•]À©®¥, ÎNBv]PÁcÛŘS5ÍsÛbTÝé+w«Jæhƒµ:Î*ÓóËûQŸùsÅ é“”3m8^i&Öãó*ÑÍëÙ=\¹4]mn³Än¥ÏÔ·>°©çÎŒÑõΟÑ8œ%:#çš;:3bU€½¯ßóg Øóoî^µ.2ÕN¨ùþ×÷dÔæ\kF6ô40WÕÙ+2¦Cy)‹ùÖ?*SŒ£Íë#ÊÕÙß_‚Ðñ“ˆÝO©~Öï;½?‰-+™ÃÃõޤ¶Î®ãg»úý((òïýýwY´kn—VZ/£õu´VŒæõ¬Zß·UH›­Wí03Ÿ+6íŽÏ^h¤5™õûÞaPôßQK¨ô9L¨O¢ƒ¦í«™Ú}¬{ÎÚí ƒvB+šOtjAþQ|ÅÌV4Ø÷Ò]3íOìb=âï(„(€÷+Çäæ2ˆX\ªäLÊE¯<ƒ˜–pbr}|ì 4³c…•á}Äo;þøŠØ6P‰]‹¹Ä‡â "‚WM[Q*<û¾UŽJL¦ÔNW;IÎF½µVœ÷]*D‘ÑçÍÁþ^¿¶Œ»ÍÃsÊ)A€3S©Ø›4ckýÕ2.8K£8Ä"£ÒƒkÎ)È+|4ÑØ#È2œ¨ˆAÁ,eÌfß^ûºÛlšÒyV·A š!Y¯y®õñ[¿fÔ¤–ž4s~¬%7Ëif`ÙHvDXZŒA 0æf-ZœfyÞ)?Æ@b$S])|TiÔúÊ‚ìá$àÖz^ŸHG}#²ÉšBæD9%;!²DV£€”Ò BrPÁ-€æ@`vÃÀØ¥Ÿ1îP©)’ù½¡É°Q)âÓáZW%£'ý­xè9ÞŠ£C@ ýé1؈)3†š„ªTÕC ¤Ý¡öÀ<Ãñ›g<ŸO¼ööì1`k5S$KT@¢1¨ÁnÞÈ\4[¹ 6çc—ˆ¯]̵0 "¢((ji÷p¹2AíûÚv>Il£­°ŒqVÑFÉ- ¹¾B³Ã×G2»Ú#»D°vݱ+¢â#ö—"˜Ó^T\!ñù`2{v¿ðåkĿ㗯Âl‰õÁ#ž{@IZM±"V0¼c0™NÇ@𬧈9Ä3¹ÂP9î­ËCÂ%.ÅÝ<¦}À%¦Íà2ŽI Ž‘ ¸wBEy‚s>ÝwTðt1ôDp ·mð ¼äe ‰TLdŸÔ™D–A Cðd-‚ÃÝ/ ;LD ¤à$Öo€¢+amLƒ¢}&Rb×'d_ÕŽ§‚ÊXÆ1èÄ(ç)bà.Õ]6y®rûQ¡Ý{_@ô~͹]of;‹î˜Å“¾Í>AxMßB¥BI%9×aðLÕ¦šg ¥ê%MûFAsZnMñÍ ÞLÑ?#ÆÆŒÕÓµb¸Ýiºë"3c”†çµ`šõcíÍ||Í÷Þpºã°yµîŒrîB¼ã"Zëk¬îñc¥@Gl†«±§2fŽŽÖ¥Óˆ#áùw€Õˆi˜õ"»w˜#'ǰN°Ú&. Ø¥@×TfÓ:êj`wÀœÅB9Ž»+ÛÐ3s-ÊYÛÆ;ûë(hþQ6Õ|~}ž­õY¯wZñ†k²Þ_ƒG¿ï¥ î¶FÏŽ¿rš}‡…v‡ÑVωÑ0ch^iQ½3Îzu¿þ˜Îϼ«/°åçq$’q© ÀÅ ðyxïp Ñ1ÞÑbF™M,ª8ÏPç9i ã  Ç8ØA\)Í8Uˆ Æ ‡ïBœoÅ; bH¬®hŸ#J–PcdhÞ!Ì\»Èi E)­BûédF´+#‰»@UAù:e€DyÊà!W™6öùÝ@Ì©VRM ÉÊô­Ž–¶GyB€¹‰ýJ–wW€>•?å $@,åºå{,b± -Õ,68ÑdI@2ñÔa.ÓŸÙû‰ébiŒ¹cùú…yòˆè+õ anÜW·¨}<éB9UÄôW=ý]Õ¤¶ª5@AªóOÀŧ ÆJ’96³ÄàòIã²+ w»÷°k.wI‘ŸH¨f‡¿½¶,üµtŽojëpG»­©DõûøæÞ{×Jйó/¸KO¼Wf&¼wÍâXHެ—™ŸÞ Èzj|=NÿZtð=’ŸJ—×Ï}–>IÝ10gÀÎ긓Úî¼åv…òì,ëÞ_~þVß(½o¦ÊÒ͵~²×þSÏ öoÿthÍO®Õ÷Í<ñºû(ú·®Í®~y>r7T¸'[Ç"\y›³i¦Hyz>[w~8wµâ0m癸zžÛ ÙyÐZHŒ L¦…›F†=•c·Û³»tojîéXïsù]Ò®¥0+³¯ "8O®B°~'F³®±÷o,4uö>cP¼¿þû¿ÿ9F„óÄ˧½Q!œü‹ðò&KÆ‹QXbï1÷‰«÷è_ÖP í¾ÌMÈÒx.ÕšÚÖy+·Ë?ÖIS—jß'÷éðX%«Áuy/Ô§…rb…æTÇléc¬N‚SA”XRðò/5Ö“†"ð D¤ ¢€‹7Úx/§ÏëŽl—“{&fcR­ÎàIýra1Þœk+ #j<ävæï—×Ĉ¬gõÅ] ³Û¯gV]_ß?Œ©­‡?ϳJ¥&±|(™k¾»Å™Ìõ(Ññ HþLõÃD¬=@Z Y}û2ü{ã8š…9úÜä@\Ø7cÁ×RÜf7I.œtnùya”fˆŒ}$‘Ê„…]„ÚŸË3Š_£'µ¤Ð9b8Ï8™pD‡à¾'Ь"†wyhe^R”<²L§ vðB…®+ÎÜ/ÿÂwˆðpA<8éÓgÞgLS2º&zÏ%“QpÙŒ®dwEë 2F Û}5Ä|mU#@&ýáà¸ó?¬œ~²Ãu뀙™šç‰Ýª i'zOŠÑ™ï\Ï¡‹Ä¥RèSè×(^ME‚MÚbòÓòß¼Á„A[½CãW,¤ÎìwÃæX1¨îе]hÃÎT~5‚^¥Í;ßÑÀtõþŸ°ß1hv±½+0mõw«¸í•ÿIÁüé„nư™y¯ì<Àv!0Ÿ2mªì¸®/Ÿë[fuŸÆ×_MÙÛbg”>mdïRW÷{pîö‚Uƒ¶¶VîêûvëéIøBý¼nÛ$¯Rjk=³7ÜžÅkß=+ãt|P~–š‹ÇÌÖŽ…Þ‹m° V²Ož4æ?¤ž§ R}ÊèÚÝ‘þ³÷¿“Pz°ÞWì€ú§¯³€Ì˜qÝÏÖ_ïaGÏžƒ'lÜ›4¹Ù{œy®ØYëšf]÷®ÖÐSàW$N}yÆáG=£$#àÅãê' 1#“ÐW+0D”UᩪB„d܃™¾gÉ@%‚wòp걜s|SU|ƒÀPœßox“}K²ß`_jkçœIFã‘€—j€Ïä eò7]¸ŸìsÓm1ˆ`¦Gƒ§ëßõ}ÏxÝG¹Ù“t»Ë3“d‰¤•»¼ê§ˆrXU4_ò}ÒÊ%bòÜà²MP– ºBBàÄÊ ³Be»ïß%R¯ú¢À·ªoîÔ_À}@Ÿ¨òÏiVÕ—;nk”®¯Á<ìèÊ•iÝz÷ú­‡élùï¿ÞËìPBml§½éºñÇÅô¸j±Û?W9P‚?.–^ëí;JŠ÷Žªl›§Âi&ôz¯´žblŒ“¶Ý%¯)XW{KÓ@Ò '–’hOÁK¦ì%Ô!„`žT‡GdóÌ2j®ˆøã×+ù)©±¥H³g™$iÑpe‰ÂÓ/ˆÁg,dF~ˆøë<Œ<UÒgˆ–ä‘õTLKX€G-—ƒ'#ÝÕS#§;¥ €O°Ä$Aäø¥‚Ü”i‘©ºe wi5uÃŒqd€d QÒ{‘Í \_Ü0éÚ†f†”ç5S ‰*|:¥»ÌùçiûôìwÌ /J´îÈqŒØh”MŽó9_'+ís=‹Ÿ®@œ¤ç•¨ÐÖæ¤ѯž3ôòN~vu)‹Cã§“Ê' íî\X;€ ègÒJ1–åcþjq»Vw‡è.Mï§Fé«×»kŸ€©Ó¯¡{ë)À´:Ìwï¼?1ŠÞC+0è\¥éŒ&§¹€ZX+ï®»µ³»ýµÆ­Äâ§ÀÉ.ÅñžÉqõ1§’3~–ÚºoiÙøîj¸k1šÏx¾eÆPãÜ,þî:¿ÛßWàÕÎØþ§@Ñݺß?Îþ.ð¶Y>*î3»õ±g ö~M×ç.-îf £}ž;€`¶–v̪Ñ3m7äš]£™mÊØãM¥I¥çÑKMÑ6£c2]õ~M2"™KØÆ!¤qÏ@H"ÒF¡‚ÌœOÀ~®»… Q!œ$…bŒ‰0)¥=Ùžà©}ùÃ|YµÊÍ(ùÆ(8Ü(#Á["„íûëo¸ßŠŽò‰‡ê Üh%l«`ÇÞ™®É€Eöe IDAT›@ó¨Ü1=:ÛVƒH,Ò÷ê3À”-y–jJ€Æ)u=… Žá=#›tS29¢`1õ;Ö«LkžE=ß ßiý­ÓUÞûËjfæ>K| çk3”ÍXUw̨ÖÚá“ììkÚ@†v€ÿdh4S¦ÌÞÿý×wcj:¦äÛDÅ”zõf-@ABPVó„ÊI$`eÀýבEâé!ÄŸ jàAj<߉•ULɘËωˆ8ø(?'"”t£FKÚ¼"H¹DïD ɸ5£®µòY‰iÑFû=ú- ضkr˜+y±M»ª}_pÚæÓNYìaïQNüOZÀQÐÒš»“ì uÔü°e¼9– Ù¤ƒ@ …D@<ðbï()-Åh²¢fn{FÃ!’\´Ã•ÚMÛ¾ ¦Fšs¡4ÒKž0Ð5èëC|þfiÖ°Ó’Aз‹ƒáÁßì ¼;ÉŒ=ð à%é&éÀ ƒÌš<6€•ŠY¾Ž­¾=™æïï8ütº›$õ)k£YøŒM·šÝ¦ï<…ž0‡ž4±£4nõùvÿÓÆfö<‰GŸMOÚŸ3Øf ìxó©¡ýx›½¿O¤&}²ÑÞÓi5Ý.ϛ۫äÞ»âdu_ÆDÄ•ÇÁîúï“~}¶ž ã÷æáÊ“Æuv¿ž­ôÌçe6-ü@\±ßvï·¬e^ﻆýðe5½]1 îŠÂ~}Íå‘ –-Üôí`bÅ~n‡íñ·’Vês÷O:»õðÀø¸þ #ê§žY—5õáÐìÉûÿô¾É… ˆ=Gb ±køòdTÑ¢¶j–V2ª 2m"J4j”z´ÉP‰ŽÒ,ÖÌÆÉ Ù4ÒU è‡dG7/XÁžàÕ€>C—Pb2>KÒÌÞ80³¨öLÉ}¹´ØmÒA à8û†,^5¥f¦àsz˜¶ƒîq›…„GŸÞ7ÓõzïÃ|òˉÒVȹĊÅOmdèT#ùæõ¹ú±Qšµ¯éÓa)—4œîÓW6<3™]ÑÀ£sŠk7±6Me$T&leZdaš{AŠ…BkL¼2ìßC¬fÄ:Û°Þ99K•n<¾d;Ø:yÒj^j3†‹>–|Rlï¦PŸN°ŸP¿?™hŒûÚL÷Þ¾I!œQ…½ûè=Í*óõ±~îgìOŒì/ÁŽ“ühœHŽdz`ÈÍÌ×Ç=ªfÜ­ùY!y'MêÇ ý ܼ۫fûúJ|w¿VÒ¹Ÿ0qú3\&Þ •1Œ¦¤IÁéà;Ÿ‹îAet2w­`¤ûýþ)ˆ³kê—÷HL†¯‹ƒ©žÃw~E}³¦å\˜ï9t„ Ë"ŸI-Û§kvð ýÖÝÞ¿ŒxïO„ݽþ'˜VŸ2§ž|ýFè' ¯ý½ë­Fhˆ}lSvóº{rn-}{˜0? f,éÙ vv¯moŽ7ûï¼q¼÷ΛªFF]¼Mëçˆ1¯®µ÷M“m²Bɰ^Ì_–›½ Uñ½lŽÍÀ€´lnÞD”613pÑ3ã(Ò))@7õ.«¥Þ’ ^_¿¾¾R² Â{Æ×qÀ9Æ¿›½ˆÕK¯—ÇËpžà@ðGl ‹pInWåÇÏ×Ó!h{_ZRÃÈ„©©–ÃùÑ<°‚4F¨Hõ:v|+µë÷U²w læhß•9]‘8gG´oŃ9„€è1DHòº­~`%í^tZ£IÙ't beú£¬{ÿ k ÝÝóËPSô¶Î[Ég™#ƒ‹>ȵÆÑ…rfÎÿ$¼éI*±ÿ¿ÿõ?jÒsÑK2­SŽ\¥Œ²=Œ]ÁSÒxʵÙýÅ‘aºa‰vFnöÚæžÿvW´’¸—<Öxëú;2C8ÛD´cˆeF—À“/ÿU®_çà $— \>;·w,«ÚΧºÆK‰~Iã£ô1᜵çÞÔâSC•®5~ýú…#DO ¢vï+ˆ\[-ºà(à)nW$–ûâÈãÞ´˜ÚITóÀ‚E4Á‡S“¨"±¬bDä–Ó MS^×Áj“x¿ßi͸ë:L•MnM§ŒªFS?m2Ôì#Î[{sâ',šëfešñ~cEBvenæÚH,KÒJ…µ÷™³É‹à<Ϲ‰;0ÝWÒ¢]ÚÞêÐnþÕ3RŸÛdÐr—¦tç§ò´¥íŒCeÜèWTÝQÚøä=ʰ?Œ°Õ{ <™L?1Ç^MâŸøw ’ÙçÞIÕž2ˆž0 ö €õ$“ƒí¸šŠ®|RV…ÐÝ~´š4Æ—ûÀ ¼\­‹'÷oöÞcŒ·kênýR¤ ·“Þ­@7úAcÇ<½c ®Xg# ½’¶?gΤ\ãkͽO±œ?õýz ªþdŸÿÔkëï2Ã~"·»âVëb÷k•r;®ë{oÐ9:Îg@êØS\÷$<ªVéƒ;fÄì3®Î€ñkZ†èêúî™sæYîƒdÑ×ó}cཊ´ÿ6K!lÏÇ×ëµdgåBx—žvyï$Ûë9þvŽÁžAžÀ®úâš½†%¥3¢ Rëù¼wx9ç¬Ç<šÒîb É_à?_ø÷¯//‚g‚?^ή¿w4ô¿bÞƒ™àÉ,O˜) ÕD báI™ô„QׯƒgûáÎö¢õ×áLö6Ö"RRÏw²²€UžÃtr6)ßÞT ^àÄuXD~¯!一•‚£òâù§G^£c ¶ÛkÇg{×=©‡pš¶‡h=­2ˆ|×_–k"Ò½ÖÌö‚ã J¥Ñójµ¾vàÿ˜²º²ÒPUø¿~CHáÉÙM8†'Æ;þ’Ä&*L­ö ¾^þ‚ª¶´ÒfÒ^C®.óÍ&æ½/éy–BàJ."øóÏ?‹¯U7PtÓ!Ô šÐw瘽”1º –`GÊDx>5&™#°Â‘¿P%vôò÷ilÝõ€;A³i$*mŒ±¼÷îßUáØÃÔ‘f ˜¯k±´²ï–È€1"ÄÚó<á½Çû÷Û&fœ9fS‹%%FÕâCÅÌ6ÅP B 2¥(o1MX”ÙN5C.I”qp±}¯ã´QY‚HmÆyÚ\ÔvNQ¤äù•¹PDšÌÏÛæ‹©Gœ‰ˆ¹s\ëÀ›ü1uûò¸!:vSêç]ó_ŽØ?à¡DLÏßm™&ÉÓxC(¿]Ê(áûŒfnIÔ$Ʀ€0ŸH?!'­ ‰šÌ3Í»|MJiÙOô¹“§Økæ”I4 rT*‡Y»ñyï»FÍ0^3Óìq³ß™¥¶ OÑ~Æ,‘Z%•Œr±Ü”¯LåÇÏ2ó¸Øc1Û¾ïñÀ=ŽçyöÓEÉËÔ£,K‹ g3°Ê>mMsÏ Äîk&N„4€àº—´‡höJÓÁl½ì‚uzbHWžãú¸œfËLj:píúhïw^cѰcwí˜^׿g>±î®pn}ò÷´´òøÙ…ÞûaðÓ?‡+o˜8ÐY‚¸“,ag,Çn*ë| –øE¯¢S--iÍ(lY{‹ðmX`ÝÐ$›è²Ï1q³©õ(#öš7öãgÌ èÓ£}~Úû;zx,=F¥g¢MªÈF¥6Äíuæ…'XþYeíŽ~"Ã5+ëww3#jŠœ#ˆbahXéåÏD.!Ñ ‘(qˬB75ð>&S½-”$=ŠøëwoBÏG”tM\Œ±H¡²¬Îó *@H&áfð&á8@4–grÝב “&Hbƒòê I?œG«{Ôä5”×ü;Ú5ŠAå„(([j ]÷úÙb’ J´ÚÔ IIƒ1¨éÌÅ6öwx¾›¦û¯÷wjÞŒËqa³˜=Y±Oæ‡ öÞÞŸ# Ú»”§MåÒ¹PjÕÌx)Ê1DU:ø™g &³îJ5ßËVôÍÖ“lW¼ŒÆãW f-z";Øi´ÛIã_‘”Ìë©{@‘I Pd›¸õùÏ̹ü\Œ)ž³IaÛ¼ŒE][´Þ}Á{¥Ï›më¶›ˆ®Þÿ8žM5žD_›>¹0Ìv~2;ß•ÿÛÝ4¶>g,µã8–Ø=ù‰/ÖŠ!p'×Ü™žÿTjvç)ð”‰36-OvOïÙª‘zbâ;cïXO+fÑÝ4m¶Îg ¸+mÖFÃÑqúØNgI©wÁ ;þè“x'ç]IðvÏðO~ö3c†wïõ†eJ›5÷äsì$᫵ǨzšŠy·¬ä\wÓð'€ÒŽyõÔópµïB“>ùÙO= ÿ‰_;6ᓔͻ·1•ýL˜-+êÎãŠu×ìšÎΧwumÚgXgCÙ› Ýû¸ì±)dkü «}›hþ,++gšb"¸²Ç;8Ûу<Î1š†Ùf}㊠Æ K©$¢;&|ŒÃy°Ž—+ w””2ÎPôòÿçß¿ðõõ¿<üÁ`5ß,ˆv– ×0ÔX^¤Él”QÙ{ÊŸ…™»T¹©ÜNë ý‰¤ûn®ÅÑãixµŒÀ]XÛ.o4Ûu T®ÿÖ³rª)Cq rºÞäS/ÂFØHý/"§~™·J˜]íÞy„=ô"Ü1;gÞ²-(<«åëºØKÛú¨ZÂTsfª.·w ÍÓ¦aõžïŒ`8“B®$ž³†þiamDÚFFq5çƒ9Úð€D!Ÿì1åiҰȇ¨olïÏfåàœ{3¶_{ÆŒ)8»ëiÃþäïžq«ÏÐþ'ü;9älÙ #cò®Y1^-;®•ÐUÀ¿mäôüt÷Wö&±»Bÿl…˜ìîaÇ Î]Xx‚Š 3«‰=]SkðúO6ÓÍû¢Ê-÷É{ d|îÀ…»³|ÇýÉó÷)73çß±þÉkø¤ÆÙ1Ïïl×z±^2£/kÿ)À·’~²Κ¹d_=×­‡êNª¹nïdõ«¡\JØñ,mpL{N&”k¼Žqäìži£ê f„ä’¿n Rïm°Ø{°÷@¶ õÙžÍËÊsQÞxïk…$ÏDbì#TÙá—Çׯ/ç@°>¶Ä2ËD‰–IYÁ"iðί±Ê]$Â6Q³ýå™|ÇYÔ/Y!aJ.³kÎuPS¿ŽÃ‘ŽaÚ°zS~*‰áh9À.õ1ÖvB­!00Ðrˆ2{Ç€rñ~Ïn'V¹†A–$*Ú4õÒ›KW ¥š»æKÐNug*9vžXíïx†<Êé'å!LÿMRÂI™e\QCº&)1.=Rœ4+°]ñÔÒ¨T,±1¢J3B Ñ"W !¤”?žŠëÒ(ì°Š ‹RˆTiâ´©Ç$‹ýµº˜Pr¡ä{¯JÃr$ª]XúÓ,CÝjñ…F½s™Ô®9m ð¶ažJa0kŸ£ß»¦ði„|¿Kß7¨D½<Ð6Ìšü¬ИEùç뉆©Õhtþ™WÊJK?oòæf€-ûcWÌÍ 3Ñ*b~|­?àÈ:ÛM‹wÅmy×ïÀ¬]ÓÓ~ï(›M¹w÷”½{vïžVõ”y6›BϘv«÷:KËÚ±xîžÁ§¯5[çOXg3“ä;“ô‘)xçñ¶º¾O¦±³ëÙ>·3ânúwMËâm¸bVµ_O?ë盦1õ39ÈSx5e_1‰Ÿ4ñ»{ó“×½L›ñŒ1p¦,È ï¢OÎà@¼ ·Åúƒä¹Ý^ú)KiUï÷ñÙOÒÙf…í^š¶g{Œ¬ŸhXy{ÜIwžbýá‹[æØ®IRݳv4îíxh¬ä&³µ8cå­…|ý[€åé„íé:ßÅßãOÇq\ÀÕ}Ý»qÀ´úÙ«{2zií$œOÁÛ¾”JsÍÁ¬u t1E^4Ç‹!Ele«¨“û’(÷ §ÙµšEw/›ü™I³ò´qzú|<]»wi÷×€>uŸò+Yå ”Xí—+Vë?!üt¨°ÚÛ~„ÍRžï²æÉ(5ÿÓÀœÝç_…¦ì$Ò3»q‹ì“…sC¾6WÀòŒ)Ñ@òùqNÉ')°#s=3­Ìn¤ŸŠhID`O¥m2a~_± &2N´A?C™¡ÂˆÙûØ11$ZR²%( dšXV¹N,ï1­‡˜’ùð€¶ƒN)é¨ìÐ)zÐ-FÉœ]§ìê™÷?ni:´¸ì×QpgC›ê'MØÖ×=¾2Ígò?åÀ„uÒ°.|¤ž€e]’&ªÝS‰9Í—! ó/ƈó!^ >á£Ð¬˜iÉRÑ%P£ªˆÔ¤bnÀ]ìÇ#É!ÿ}+ù-æ5÷³è¨ }Öž€R+¶ßŽ9|§àÀƒáÝPÌ;&†&âÝ\˜o:-)y¡4éÙ/Ç.¸Iß²–1¨Ì )Ç’ªr'½Ë¬hœ<¸jÒ+&|ùãb$hZc{½¯?~™7T´â(§r³•°K¦â ÍÙÖi‚Ѧ-f´?ÿªˆâ Xa6ÓÔÄpj´*ÉÓ.õ õÄÊUNºh]ö3­¦¾iM"@*sÏ’Á{$3£oš7 ùÊQͨ>ð/ÉZဗ3Ú¢÷Q¤PDµƒ' 5 'æWå<›O˜1$eˆÍ&¡]\¹ór(!É%©L˜ ñ+E•V¤e|`gïjÁOÙIØ{mÜIoF“çbò޽4fDçw¡O&Ù»éî¶9¯ÛƒÍĆLÉOkSÒQíõ‘Iú"¶Åõ ø¹^ *Ç:W.›©ÈŒ~Û^‹•Dk<¸WR©V“Þ2/fæ›w¬‹§^[w¬€þùÙOqÇkÒJ"V Sw@Íx/öëC{ê­˜*«‰ýݔ쎶ºo³ïýH‹¡ÙZÝyw­ÖÉŠý5›’ÏLÐg Ðì5gÀæ Ú±kGVãjàÂìÞÜ­‡ñYžQôwÏâ³e4cþDžyç ×^÷º?ш[4 Ÿ€0OÀÜ' ÊSùÔÝþ±ÛŸ1 àóÙÒÊ;edõ®üHš¸{Ÿ&Ë>mRwI²ŸÊ”wÏYÛ8µÌûùž»‡ÿ”¡6c-†×÷C›g)°­àίænÿÝù­¼‹}ÈB”C´F¦W!24øRS Jò²§/ˆ•ƒ%Í“‡#8|Y‘‚¤Ìú¥y¦%3´Ú¥}î y¿þø:à+¦÷çyÂ3Áy_…]¯³ûæº5×ÊÖfé~wv3^Ï èÞú»>é“ÄÓÝ9½Z7ùzØ,ŠÕ¬^¾¬¡äUm¯CÓà–ó<co<À ži:¤ºû¬½7°.=sWgÿ]’é,Lh•ø½{þ§²àEtÌßýœKíÎÃõÎ?vÅtÎÿæ b"g8FA¥‰‰1¡¸\äu™k#xv Fçäq•ëóß[Ô"”“CI2ÉSó§1æzw’bo§ãR’5i–ÁÉ?§EÄ­ø²`2:çŽ<&'Ô”fEŽ‹:ƒŠÇ—ufˆN sûoLìQüÜd#ªÍLó>šÀR¥ÂŒI²Í¨2ñn"púÙ$ N €­ŽÚùŽÙ|°NA@EEñ‚ /ˆ¿þðÐxŸ6v¨I¾¨ˆJ…Aƒ"HØD‹>±•¢(¢WàŒ,v;†ˆƒD$vMM»˜Wû€Š>­µÌøÊ&|™á¦Åƒmž¤BC.ÉYªØ?Pc‘0F÷Œ&†ƒ¬¡FÎå3za¸y‚AÞü¨T&€QÊF­†½A©Gô½÷p|ØëÑÀ¨ø“íçÿ>ß úýõþM/Ä(pþe¶˜WL‹#ª@‚['¢ØŸ UFàuXD© Ù€1*ä µ)aÓ. Óv©©—ªj¬153Á¶i@ìûŽLsC¢‘FE¼øf]7|’Ûo:—˜ÓVRER(Þ—ÂDçSÑÂ.9‹-7¢'SÑ]£3û÷®Á—_úpc~Ý¿£Õ¯ÏÞôZe§ÿ:Í2áÂ:jÞñ`™E­Ö 2_Çú^ηÚút=ÜLV&Ñùÿççl>Û”´; Q‡?cŒì¦é+FÓ>EeÏêÓ×Ò“ñú´Œ²'’•ÿǬa¼~îý”ú¢[ÃxÏf“üÛmO¡_3ì>aµÌ®Qf¿^¯¥|õŽuvg°þ„}Ó~¾]¾ºï3Ï¡6„$OÅÛû3JW÷vð­’gÇý|µ>fáÓçgüy¹>X1sîîËøÚ½–™NÙN>g¾Wíúzbªÿ„=³~¾æ±öä×*©t%½šýÜ¥x}†0{?ãži{̳  0-ºk¸¹¹vÜ­û¶W˜=ƒ##ó²ÿ<`u¶çÖ ÀkªVâ—#OY[ãúËß_k»:\gnΚÅÀ ´ ÊÞW!jõ)*ïárP%œðÞØYB'¼k‡™I_‹_’ !ßâìgåàýbŒøþþÆ×Á _G÷yf¾­ýº»LµÃëÃÅB†i¬1â4,WJ¹„gMÓ3 /ë«ÛÛu7$óå9›ÖFúYMÐß“}ÏZ)02Go¯: Ñ.5Ñî«Ãïß¿S_cÙƒÝÑœ‡÷Ké[4e–Òó³ÎBã¸ôcÓ&¶&îO½ŒgƒäUÈÏÃ÷“tvÿfà|÷µ¢—!÷ЙûÞà¼ÝXócRœÑ8V¯__‰š©Mh.\ìb„àHÍÀÝÃÉ|Ù’”-ý—À†¦«™~3¼ó¥@3\’.¸Ý0y¸ H¾é槨S#ú˜ÄHáȼzœc({ÚDðë£lª!xvûÁŒ©íórù™ö°\ÓÈÄ;c"•‡‹ “0‘„Òº*@ˆÆLcfq† ÿ(Q0§£5K"Æ`AR2aÚd³ŠªÊøzÕÏïÓ6¸É/[¿~Ÿo“2!.5ê‚ b¾c!A `| b,šð‚ QÞï7Èód€Ãy‚Ï .mÙlÞ9«ÄÄòtJÕNxǦˆ™Dà#_˜]ÑÁÄ€¼;êâH>R³)‡±ÆŽ„Åë…fZ§(ˆnsS釭o”¾^Œµ™j‡OÞ[œR(€• ¥3 Âi?û ¯”Žh ,I߃3yÍÚƒ$@|ˆÁwÒ›w8;JoT‚úœ,aÒï ec}\ÒCˆé³Ç@ɬ$!0NÒôCÁéRJ½p òÏ\ÙD¦¥ÎÏqé0A$:tf÷uÌ({ÿÇŽnWDnd>O(ý³ô¿^~ hïϧ+Ë)4ëiëŸÓµóßyB/­_`›žè§ ?ÆgÔ^ÅtÊš èÚdçÍse"é ‘àeÂ⎵´ºfcBâÝ4[U.7c5<ñ@™5OÖÉ&ýõ³é’yÒ¨® (ÇâòŽqÔMùÞƒgÅæ™I4>aŸô4r}4=¿fÕ˜|âÇñÉ~°“’ÎØ"+ŸªR˜Ož¹¶éo÷¿YCYR–×àNž³{F@änŸ›™ð®¤‘#ˆ½ºç+FÇX¯Rñî˜iãúŸ1qgàÉø^~’1¥ž>×wì›§ÞWëI»~äug€¿óªYy…<Ý‹Ÿ¤L=ñp×r ÂÎeõ{³úxÇlç{ëSõT¿ºw#Óã:€¢8Ü=wëa”HÎÀIJOÏ|DÒßO52(¿fÀîíIŸËû™³í ×tñ<0  ýÐeàFŠ¥ŠÙÖ´µŠ˜üÍÂD)à×Ëwƒ~Vv ‚YÎDƒ•k"8*=TDÐ.Ž)«³.# ëÛ¢Z Ö…É«‰_'r÷úX()Êù¡‹5:†`\éû3KiPU‚ÄÈüÒ¼º¾@4Ð6×Ù‹èjQ®ÖöÞÚ爧ìb看@è÷¢-¹’ø(c½é}{}2jìjì&çwoó£:zœ¥à‚V7ïŸÔWãÞÚ*¿v~TÒì+«ÚïÊ ·DÇÏd%’×y/íKÊÒghµŒ)ŸÍaé]Úî± ¿ S}™ö ±¬*ÉHœx(@PRúÌŒÛѧIwÙ{»gpdu®H»ý»ûïê}åÚï²VhÛÔߥSî>ÿÊ—jvZ†úSÓþ¸s¼ðôL›†ŒLϻЀÝ:Í¿«gëÏ~ífv€ölð6e>ìÝ­·»(ø6`eü»'ÆÕ©w`$n«O† 3óêÙÀH$.%¨F`àèX²JËÏ£ æऄŒÃbZœÕ”†é)•Îq1ôVP—†;É.Ï@¼d^ë‰ØQ1FHˆ€C‘ÎäWõþJaÈä÷.¢¸²ÿ 1K› ê¢K^oÁÕÐ sŸ¢< iÈÐÄÙD=1B‹ÂÁõýkIö®{ 3CRJea´‚ ÌI“õ`=˜ó&XÖ}T>wþYÎ%… Ȥ–¨(VÿØ!ïɈâŽã€$ƒ[#â˜p2AÇ‘|­Ç“´ÇZlaR³…A« b I)Ä SeIIº´½+YÃÔ›™K5ñ•,ŸEæi’:ÈQ/êÒsÅMm¬e8ÃÜlg`.Oì¾æmÏ%¯ÕSÖúØOÍŽV¶ 1Ð eL;$œQµÀãáÑÒŸ™æÒƒ‘Š=ÓHÎüv+­1±B„ ¬Û˜³BatÖó]CÆá §·÷Õbï3àdB¶)eðõŒj¦~!n7bP"_E°KÀmñpé'ÃG&ドì(¥È.‹íÕjvÞ>£ÄYœ®¦¡Íæ¶j(VqÓYŠ÷¤øV}b­Ÿó«órš§“u”ϱð¸i?P{8èªIÕnÓ2äZ hUD®¼<Æ)î$뮡÷Þ +Kžg¬ˆOYT;ÖÑÊ”q7 ¿ ÆÂU³8c¾ô_÷¼a6Å"S¦ÝLR6}½x@÷ÏÆXpO¿Žöl€ñS@á ˜3[o³V|Àž\’+FÏŽ9ygìýóë‘}´’ì­{»uÅ–lÖJ¶û¤ÁÏõÇ ¯ =CÎ1c¶ ï’ª>a0ÍêÈ™Dr7Ý^ù îÞÇSÆØ“ëý‰wßê}<WWA Oöܻ϶òx[1òž2®g¬Ù  |ž‚øìªlù`æ.ãÉ™Iï‚{vûÓ§)O€Ï¤X&Ê1uÌ¥Y Ò?—2œ½Ú±ð¨í-™“n lˆTÛQ.n–õž…LŽJQ“^ëº0Ä2eÁ^ÇUPs&]í°’ñü(ÊK²ú”ô­U:˜tç˜ùªÐtªyOg§ (ÔÆ²· jÝ¥èz9kÖCPŽŒÒ8yð†ú“l§Ãí´nv“¥k†ê#*–Ę´Ã £Ï‘F8‚éÙɤ•›¹»ÄXßWâ”QLæk§ÂM´µ:©Ì’ü^ ʲû3=X²Q|JœãìS`›|Û˜,M’“¼Žmq!a…¸´IK*ˆª‚ýó$„—ƒpJLl,ûù!‰f´(&,ÌQN]y'Eó»bÅË{HdQœÎä¢'Eœa(ç 8'8%™ÈG”DG;€³J‚´0ˆnͦ´;W7M¦”RBš’š¨+Υ葩aµZç¨ ÇÔspEZFÓô²†b®ììi­ …âZ¥” ÄV´ÛJsÐÈågîêw>5Aº1>I~zzÕ>ñÞú=¦z´h½L™Z– *›$Qa XÐxw•Â)93­€ ·,‘ÝgßÉv P €Íö¦•¹ÿÕK‹¦Ã‰§ Åè936TO°;s÷±Xë%äññº›'wazVµÓ÷'¬…Õë¦öãgqÄKÖŠ½8¾Ö²Úšì{Ç\ªß5ÎOÙA;æÕSfØ }vF—V fóz-Xó¸K‡?sõWn0V5Ó,!ìà½Xžò?³B•=ËørÝÆ4Ç9xø)`ºúúÖ¦bµ&W{瓽êIÊàî™ùDúõ“_;pp€|€ûúäuvÁ£ŸÖO¯ÍloÚ…qì¾~†Þ}æ@×ùYA>Nç½cÜÝ%ÈŽv-wÀävP“¼wê^¨…A£K&y—åº-J,– ¸k2vŒàðe‘0É.KÊhC’„²¥…ÀEâK~?Ù# ó$Õ1D¨5`6¥‘à zñ2Ò…l•±#ÅäÞ’3%a­K4Ì*3ò×E9B¨C ¹\voòç9ÓŸ]`…ཇî”J\¸ d›}7G  î*‹I‚à8³×qÎáÈýdÔÂêŒ1š]YoH×—&i)’Œ·SU*èT&›U4a¢q#–!ªè¶&¯¿ÀʼÝH0DÜ4–THùSoû,y0 ºzyŽøÌ,ɰ?¶’Ï–]§Ü“+ìõ c°×Ž“áY­3|iÝf‚ˆ³ŸåƒMY¼cBPqˆ ¢Xqhµ ,É ¬!Šå_’ŸF±—Vêý™]ÿž!Í´€áÀW¦…ôÌ’kA‡e¢àÆÊSðàʪÁb#Åmsõ £è'ÌŽîðÐÊÊì÷*,§ë£_RÖÂ4Ê6íoVÜÜ%pÍä«ä³»¦âÎÇãé¤yÖHêôÞTƒ’X"häêÂJÍ“ÑæÀâ ¥ûkLMé 'H†Œ±ñÊRµ¨Ú,AÌTYÀž!, MÆóD x‰ðLBÝ„%D))u* eÕEsH"ˆ8*‚F» l€”ˆ“²DFTI]†ÄŸxxœÑhbLEcGå¸_ ÷†ÜgPMµõãAa¹mò!t¹G}!œ½ìšÉÀÌÊ·8æ[-Sm BdtZ+Žžia|þ4B~žîR ó|uþd– mΫ'ÃÃ;¶ÕòÞÒÍÝxdåÁáèó:¦ õÒ=ß|ņ…pê—“çN«C ²ÞCjÀ¥uÃ-øÔ™nkµJÉä‡ì‰›ê½…ÓdBÀ)ÀqºNæ–mL ´%X^H“0‰¼/Æ”@ÕTùætV·ïßökm® AŠr`ô«ëÖtžŽÏ@5þÆäZ†‘õ¿3XçÌ'ûW_ý°Ê}A4™Fcž³ ›G2‰|iÚRºd”lal­´rI—ôšö²"U3‘!­- ˆA¯8F顸°Å2Õ¥½ÂÝÀ²Ï T æì‡c÷2XP ·óȼ &M¹Ü‡dÛÖýy$Ä@¬–1ô´¬ ‘hAfà ÐE”Òdyލ*ع¢ÊÄž²ŽrÒº"c±ûÜþºÁô¾sk1Ò¦8¦ñâX!¨Åõ}vÇ/c.RY‘$s:eÔÕ„GûÿG³ù…ÆxNµõF"[l9r<* ŒXsÇÀlÑ¿ñ‹ƒˆ1µòƒK ‡é¦í`bf#îŠ Bàå ’¥@Ådo1_œ|·AÌþ @ *òqò¨\‚5ÉïÆKí‹ —€¾ømתcî’-êZo£¯ù2ù¸€ÊÓÂ*Ó¢Æ'€ívRý@ºñ„†þ¿bíü¶ž$d©*Ï¥Aõ4÷+@tõ ãb¨¹cýè‚ÙÚJˆf «+sÝCu¤7ïîCþšqï™™±?ižf»?5q_1v‰‹³foõú)ºÛ+yfˆT¶ß°ƒú¾õ‡zÊhZMzû÷Ž)È:ó |È| 6¬‡Ùze s —ˆøüõ­¼¶e0Ìžƒ' Â§¾D+6cûoíù<{~F†ÃÔ¨Rcåo#¯Çu5c~Òèw÷ ‰¬K |`Z:ÇSÐþ)ûgúåkY3sþ1\çÊî”[O»ÂOÀ×O@•1©s¶ß1ØV`ÔÈzzšÊºòµ]±³.¦Þ£‡š[ìÏØËw²þÝ:Þ±«ïüÚîÖåÅH™ï÷ûbQ²Nç×o_ß´kxÅÔÜ™ÚßAò•Ó »=K"Ä÷{R‘1C¢ ˆ")Ãí@(bÂ)qH‘$ƒj~I9­0²)1ӘؿìR깈hƒz·8£àÎx A`ó Öd}ÜÃrïºJ¥õnæI·ÃÇ1²{iýœççæ IDATÍhàÃ0”º<”€¿Rß1kj~`ʃêÁ¨öîJ\ØXùþ•ÎCx·¿×e²ŸQ…p6 ižKÑ)Y¦Üƒæˆ“L¦ÁÊH:¦ØyžˆA;ïµÌÀ¢ÒKJcsÁ €áý ~¹BÂñ“ :ÖÕ+¢U¿m‰ bhÙUÙ ¤º“D§¬Q¹®²XpŸ,Q]YÙZ‹‹úÙ™·v<á}ª³¥úˆ™=TJ¤Ì ¶ò¬Wæ—÷Þ7jZŒÏâiw&wÊç ¨¬âyNy$W­—•O,¨qÍ身 }ýödfxv8œm‡óÝF Á¿^P°} ¿Ì6[¥JÍ61¦;S+Eçy³«^IöúÃ¥L_´ð»lZzõ›™5m?)߯ÃôSS#7Bj¶_îU¦«Å[I{û QŽãÀqiÃN׌*#É)o¢#¼g9|¿ŽÃ•{£yaEuˆ‡ÂLjïï7œÿ³KáyÓq@'¾¼Ã/ÿBPÅùŽ8£@=AÀ ÷ ç_–Å€pF¼<ã<¾O€pà ”¦u 3ægR“`gŒBLë3ËóÅu%ÙÓXm*uƒrL%¹…ˆÓµŽ• Ñž$ªˆAÊCm“ -©#À{×l ‰©Å©¨Í5˜•—‰EÒ”ûÔN‡ó`¼9x²Ý‡w)JõÑÐís´®¸M"[ 5jwýx8$Î3v,€Ø‰ù—bx®H £¦”ž\&SE.LA5`4ßë–¥éö”ѳ¦mÀW qm:2-fÀKû}ùç†&“šÊÂX5à™±ãw†v’g…ÎøZÒ¤Q“8ƒé¸Jƒ{ÂÄÚMø+CI·¯?“vŒÅbf*e­¤Èàr$ùS4û9€2½ïÝè¡Õz/\?‡yßüÏÎÐ,Û"ºKm°ó~œIfça{Ç×jÁ©1å«ýÞñXAìÀ€Ciò‘¤d)ç¯Iæ¶€ª—óR@ÔwÀ¿¨Bë1ˆA¯²u «‰bbtµu®OÞ·ï÷DÖ?UÐËBŸ ÒØ÷¡p`'ï©9´+÷œùÏ+F_Ã$é— 0ál¸âš{® ‰Èª&b…FA–”å¡<;à_î/¡Ü¤ï5}ü³tФz!héÑã¸r­®ˆ !x>l È0üÈu%[c2qçÚÃ[} œ±z]yvÝ3ië·‘SE ŠpZÿ‘lηÉó°ä~73°¼÷ ˜"þü×/¸œjÖìÌŒÖ@j¬ýÚ?÷ṇœ’ןë`@JKL^g1öµ¢=_-QçÝ%m3û˜m%©cmÐö/#¶Âœ¼‡%â›&ÓÔ¶/ç}#1ºÒ%¤ç8'§À³âëë žg”dönÆZŽ’w ›W±5Œž|0œ'3Ї€ØƒìÁ„Z*ïðuÞgÚàÈAX Â* H8÷Bˆç€$YÔfxp °©"‚šô’ÞÃfšÎ– øg×~Ö@Ó 8”ÁP]$åŒémØP“Bm¸ÃØpàvr´zV¯õ)ÃcŒA^Rc2æÕävZèåÄO·ûÜTŒgL˜U ëƒìv´i&+?“' ‚;†Ï%…l¬ŒMÿØôô{þ3vÃNôäs­Rp™ÝöëFϓپºúžÑÃj—v·’̵Lå)Sär.p×)0OüÛf^fËFê¦QÞ­»@¹Ø{þ­Ý2kºÆ&ª®¼Ôv’¥–óTR9^ó'kåöÎÌÌ|P¶EèX‡m‡ )ó˜Þ:»®Ÿ°žì wuèno}2Hyʨº¬÷LçÝçíl&_¿b`ÝŽ<‘/ÎX·»³÷î›ÑmݳJ"ÞÝ·4sö£G.nÂfVëwv}žìmk±ç~l«û´K ^?s²e„Ïä çy1€]#ÈÒ»,ÕË×53¼LÊx–¾"'t†`äŒ#ÞQ ÕÓdFÕ°+ÇGgcR?5Ù«4ƒ,"0‚Ý·$¢!!B †8†#6›¦&ûyL&éLV²µñ€:4Uðyv`XéãhëÇ—…íl*®1§ú \pf¶ Wš ™i+”ø–B}×H¬³ìgÕÞ„NšÅ‘PNÞLL\èª;óǼ‘´l°ÝäiõkfL:+z—±·C#§ÍD¾ûzm¢ °ö!¸¿æL9¾õòá UKÚ`~šÊÐ{œÉ`Ý•THûÿ~½pž§±œRCóNˆ¼ó }ÁGÁÉ„w DêåQŽó¤7}®Ãtñ'Gœ!âpJÅ£ÞZ&¼” Þáp‚3*¢O›…¢2Â)ÅìÝÒýT= 9ZWq&Ÿ´Õ˜kì«âHFµ‚qÒÞú6UöVñIñz”S1(§è5ÉŸ“N6ì°,jvŠŽf_&7éõkº`õÀê@ªæÿ÷fÈÏ¥d9܃Ô|6àkãŸ/®ÔÃmõéäòy,>¹~Rj‹±nÝW¦Zñ±½ÈlU¸|˜bI5E¥²Œ¨ ~H $èGÒÍÙþ3î]+ãè•”áIƒ¶jV)g³ ò,.7OtžvlÓyû“n ¯’¥l g†ÀO›á™Ä³€@#—«‡Û('[ùô¬d[#€÷ zÚ|ß™ ¸§+Ë\çì….¯ÇîµWàð§a+€iöü®ØeOÀèÕ×ÝQ­ sÞ|'ŸÐ†lçOõxé÷íºÏ>ÈÛ4`]LY~"Y¿KÁ]ý÷S lT1X³_ãàvU£Í OÃ;¶Wf‹Jb•F88qnäë‚„62€©²âœ;ÄIvo ˜‘¨Ésk¨oÐË ‹ìRÙ fï,û ˜¥Mfœ2ì7‘T œ‹gQž¹(8%ù+ ° 8–N2—%Í÷,ÿYˆÌcÆÌ’Æ÷Û’Ï …‰?%þ°–[ïœÉóÚ}ªxPK,×Áñ8K *3 ¨€$ÉxCLŽ ïðåwF~!Sî)<ñ„!º&PÍ{ã8à½1b QФS äšDÂY¬q“j©ûy¥Fú‘×¾5ÎBxTí¦"kÆ“\hµ•…ä1$ÉÉü•ìáŸ\Oð/ÇÎ3âφ:Áî«ëÝa6ã¨ÌØ"w“Õ^ªA[Xb”Htl+#ù'“ÂÞ_ƒDpj¼žú¦Ž‰pG‘Ò˜&6ö`Ñ´îŽxÏURUñòTäyBaH¯sgˆPröÐ8_&1 N(øËãHÒEI€ @<gÈ̯¤o<ºN‰`Dx BÓë¶’ 6óú|?D'Q©ë d; Ù1jK—‚¾cäZŒ> ´oì'Åh7i»‰±¾š6_€‹¼`äOÁÕ'¬‰¶aš5™ýôWÛxõ‘Ç:•`d¦ñ$ƒi¾N=Y>-ÀÛ{<ÆÛÞ»w)w×õ)ƒkgT¾òʺ‹dÿÔ”w7õ^MðWö§¬¶•íï06f` 7~’}c¡Kƒÿöµò{\¥îYœ÷(«pzè½w Â>Îî<#wïc•$<4?RF†Ì ½c®þ´™„³úfg—°b`îž©v?þÄì~ÇRÔ@çîZÜYD=y»€ˆ]­û [lþ:û}äiÁ§w­ÿé“û†YWãoXCO†ãó;2Q§¬ø†Iû:Üí~<ÚýxÉ’ïüc×ûSµ€øœiøwö‰zßX‹ÌûwÏ[ëA˜?H{?Îóì ¨¾ÕΫǢÅë'ײJÖD_®E®ë4âMæÆ.ÂPá§~V“î•ÌlöfÖÍ úND k¨Ï/‡—ç"9Ë{a°*㦗WµÞÈÞsê] ˜áH¯×È1³—’PçýcûV³y iÌÀ*2hÝ<ƒˆE²il¥Ô÷ÕL’Ýæo8%Yr$±‹Ús ÛÿùÏ_`F‘„UI[b'IL6‡{PÙæÝú`‡2À#CbeЃ}L %Á;sJÓsg_×{$ÒØë`= 5=ñŒÕw ¢P–Â42† !â¾áÙA¾tžˆò*÷ѱà`JRvm˜l\ÌÒ q ã*™ÈÃ@¿ ç÷ï3{tY,qðµvTHHöÙ¤¿Ëý-ëFûÐ=òœKû§gÁžMëÈBôI¶›í’ìº ž^/Á××ãhì€Ç÷9¤Wšõ‰_­Ë&E‹,Õ-#cL º$ìÀ«OY+m¹Ýˆ¤‡'ã2d”ÜÐÙÞoÎVâN—ý¤%F•ÚIc$ûÔDÇhH“+VDÈvZÆ)åGÌfŸX;qÁ°ÈP\Nøºpøì­¡~‡8¤”ï=¸Aû[Ó?Š ò®€KfæjÆ…yc}¿ßææ<",‰ÃsJýP@ÅÁ+#²"d3Æ ˆÉ牓O‚Iþª,€ƒÂyGØ%ÄÝC™DL¢‚À á îpJ*Tx¿ð>#Þï€ïpj¬/:’ÿ”’±›”Hj€¥œ¢4÷c"™^×)@ˆ)дó ÎÒĆ5“h¡ÐgÓæS$R=ƒKa~fe²·2KOä0¡kôs–‚|Â` k!Ú:•¦`ø®Úºþ±[¿USh{Û¥’×&Ç¢R´ ÄžQ4Í|´šé¢IüâDî àgÑÛwûãVÎÌšw3-J<’¬¦Ø3ͬð~°’;Ì Ÿ0„V×õÎGë®qâErÖj¸³ûš\÷5N}»Ÿ—¦œùü¸“cÎö’qˆuçi·zÝÙØÉ3Ÿ5w€ÁOÌ矦`®XdOÖ' ¨'5ÒÊŒy%÷¹0®òÐlïçµ6°fÈ8“ýñ0h|ðK')Oî÷“$Ñ;öüؼÿ4¸ä Ã5@Ý%W®ä^»zöníÏçý@á À2³ÙFOè»KsÅ”›íQ;Fã]ðÊu½a?°~È|ß1øV×ꉼ™¨öG?Elž‰îçLÑ`þ»ÅW¥?Òì‚hñ’dUÐÏlBò ²•l‡ôgÏA¹Ö,ÉAä¬÷žë6ŸbJÌ…Kl~J¬ <~;c”ä´¹ñw{~áfÎ9žñ:çA8ψ׷٪°³¼Ù±$e‘šE‰Jbµ‰™}æ¨îÓmMF¤³3ÀÀûúdE!曂dçy"jíT T@z?™ÙÕ¼|`¼¢âpµÿuΘe‘URÙsiLÁÒ¢ªr=ÀäÙYp[ºNíuˆ1"þeH 0à'3#ßßß½y»Žû_¬VÞ¨`qb 8I[ËŸœ1C£IÏ̪ < ~³‚ɤ©ùú¨X@õR®»©öB²Ä‰9D„÷iV;§¿¯¬ž+×ÒUrOÆ?H¨(GJÊ&¨#µ9óAƒy©"ž'À ‡ cVyŽ@£“áË. yÎX³&ª‹r¾xp·oÌšóUƒö$±j<ŸfMô ¼Z%nݤ;F/šù»„A½yκçwóÜIýfr²Õ{\1Õfûë oí;¨Óúl&“š1øÆT«‘}ÊÌu€pSÿ}`î˜3OØ€;©ÜŠáó”Ñõ¿ñk%û=§­ àòôš~;ÆÍSÀxUÃÌjZàùñ}¦°bþŽ{_j$,˜„˜ÔÒ×Ï8c,í@äñZ””RÒ§û>9¯¯ï‹.Œó)ÃgÂpníò0ÏÍ“ˆðü…H¦%5_«,mÐ|°Zožf?* ]Ö41F('˜9K"$Gp.¥¶¥wÓõ=o2?¦ì î¬u•# !Æ`Æë)-]Õ@‘ç|dº\hú³â/‡·OÖË,ç.y=L Ìß\c$¡€•=œZBÚ%mºÈùc(" PüþýÿiûÚ,ÉqIHydÕÌqö<{™=ótg„‹ÀþI‘Hʳzò½î¬Œw¹D‚€Á`ö“ëöëY§‘áççD„¯ãÈàâYsük|P›†n†NíLdd -¾\þši0ÎNŠÕ”83•.R…ÀÌÅÞ鬀™UÆ\ `ŒFB±Ï«µ9çÀ& _ˆr™tÚ˜« 6Oè;¿öϱø±¹ýܤ"ì|}w€\ç: ­¤r \ŒÔ28Èæô*¨ÞœµD@Ö„Öê ùN …9ï_­ë¡ÝûeZ‰T‘p6 )3pæZüÌ:cRØwÌàd.¡à8¾«š ¤ôÎ1˜ p¦K×K²&Pôlš‹í±-ˆÂ×XQ™çº Þë?ÑŒ˜Q­;D‘Lržƒ1m,°ØƒŽ„Æ6r^ìÓ†Ú¼u.8“¹iìºJÅõm< ÝªÆ÷Bèø$RÙ2å÷CÏÑ+ôzîoÈ 5 ʬs¨Mg—À`Æ`$»´)BvÜë©Âö³ 5· 02›ZC¦ÿþõ•¯‰À!Bì=¿bs´q=‚ È1åÙå ¶’ÐH€‰Š$+’(b$Ð)Ùm.Ù"Û½•T7°ÍÚ«Í%+!áçÌ1$ø‚mè÷ûïï7¾ß "T |1€K$³­„³ûœšXeF½E¤Ñ¡îž_šc½ÓE‰îõ²X{÷¼[•5²~\;åù‰ ü‚±_rc<=Óšî1ÚÑó7ÉØØqÔkíõlÈ,üI=k>ö@Iƒ̙ۉu:ò÷$¿qªDzw­ frÞ/“ñÆÞY—ÀåLgÁMÿ4ɤ›æ˜È´ÐuG~6Öãã=žÝƒÏXºýÞƒ„Þ⎅1+ðgøñÙµ£¾c!Ô=ƒE¥w+ÃÀ¤)‰àZdý­®Ý÷ÅÑw\±†f ¢¶P&O$ÞÎUò]¸2TfÏÍÓ¸Ùî®´Œ>a‡=a>}]­ÉÀ¸û^ž<¸YWSìàñ zÂfóÌ:fÀŠNìÞk÷lvcvO˜xý>á%3h&º½sžŒø>Õ|ò̦̳Ì4'ÞéCêòþ?a>ÎÌ5lDz½Öv“On³æÁ®™õ”Á·rŸ¢íÏµŽ¥=ØvՀݸ’“¡õ9BÎá9]£k)e õßÓe*ÿ«lv\ò2’Ö”‰²Ìž˜I`”QwTÀÙq]5KE(3Cróv-I²À|%‚Hu47ÇCÓN*"ÜvÝŠ#¬n°ë: ØÈVûl¶ æš Ñ¤^…5æi‚”ë©"=@xgB€]+gÑ|­q¼[•¥Ã¨¢½¦‰½ç\¹™R©®³†Ö¤]ye£¥ÊdFsÔäλ8²VØ{À ­sêƒBRqÉëµì?¨(Y} jfËïÞRØÆY#«©Å‘5p‘I×H§i,S ¬y VöÎßU^Us-ŸãŒ H³Íul›þ©¦­8z&°Þæ|beVÇ8SªøBŒÆTƒ²m¯´M6À èxéÓ1aˆ]ÅÐí…(ßb¥`NŸ1"œ)¯1+ª(ï¥XߨÖyn2"­˜`µEÛRúHC¥]`Å>tØcºæ•ÕˆŠX\ @R&ëÞèœá ªˆÁØ3³ëŸ¹î̺=íìhéâxì«yBê‹"?-è¯g5wIÙ%H»Ä¸E`c®ÐnyV¯× ???Õ9@U™ãÈÉI:ÍààÀ‰­ñýþA€À‡±Ÿ‚Hu›3Îd¬²o!¼pž`•ZúN*W…Ž˜%óȨžYð( à¢8óµŸÄÀЃó(O@B ‚¤ŒR#ÞM§ >Ê`“>cÍ@ÊɬµO“éš ¥kœãФë]%‡‘ƒËÕ¢¸Pt ”Þ™ PÒ¬ ÀÒŒîyKöb ö_O¹§T#§@úŠn¯|ïçl†û¾Š#é+GPhV8y‰î8òSö„·?Ÿ0F—÷[c–:Ïl“kç(ž$¸êZ³Îùl­ØÌ wÆV™x+fÃîü›9ÝŽf ­NYGcoŸÿFà~ÐÌÆûVëí*¾þî­¹A¾YHŒq `y ûjßB]}Ó“ rs ¸pWwòÑ€ á)å¿ùtª9 Šx•ufÙ-.jÓ¼mó8•ËüèjZpØ2RÓœŠˆ!šå‚þJå¨3ó)c~%ŽÝu˜ss¿žg "%W¶ÉÓ-"¨^Ú½DåµíýEO¨ru€³z;@åìß“Ø1l#e%ß#ö÷\•Ú)Ìc_BÖ×@/Ý^ÛŒ×+7úSžFÈä–šW”ýÁ½vÕ+pS¶sZT/S† (J"—¹{?ïR½OjÔ"‘BÑ×2`(¥w½†~~~.¶Rv&&(ÞÌ88fñqd×Í™<@U/­²Ù´€„𠔟Á*y„Àˆlsjéý†(Ì òÖ{ÌköGùwë.~ݪψŠlZaµÅ«€~0g>QÌïó:Ó’"›: †qDlk‹PÆ ÅÕNZ___IU˸0‹YàÃÆNY@š é "SÑLÀa Úª±%Ú`+eì­$¤&+yã»*\jT2Š¢‚$V¼÷ŽuRøìÙæ._‡ëJ® |q´3 ª-"ÊŽ Ì Ž@DfqVº×˜o6ò¦—›aeä‹q–®0_Ú!!.n JD‘p±0˜Ì]AÅÄämKp¾OÇ‘?KӑЋzyįþ`à¡–µ”*ÓERF €’†„®?äÚ®w JSAmôV¯"ÒŒ&bp=ÔR— •¤¡lÆRÀŽ…´Šu9B8Àë†Iª p€³5è^$H¬Hœ B²éw²€ƒ¡´åµƒ")šª‹—²Ö_J =qðÊ3Äš,¸!dàÉPKR%· IDATíoùɨ¿Í G&ïSðNÀ[“u^çyâß¿¿¾Ž/|¿X:Ƨ#V’Øai/Ò¾³ø6×N¤ösu^ܨÜÄ—&Å)Ú%q‘±æjó'U´SD³ÔV× ‘|ß2e³¸ðÕÞYà/Ô°ªÊžj…7¹PSëhsâFV¼XR58{–ŒÐòÙ~jåPzæÕåjXþU“Ëü\¥ ,¿_5³z³\…Œ O%;hFÛñÑÂP¬o’P»G6Ëϵ³H!Z|‚Ö{ØR˜;@'Ä|iâ2ª (ò8)R²=yÄ€3¥ ɨåf›{JÞßÁ„OKü¨…¼ŠË–]}AB®yK—ö ¸JoÌ!|6G0¥ÞþR8Œ¬&ϼÕùñ€¢6®y ’«4KçyºEL ®Út-%" A<{vŸÊè¸'&/’¶Ž\£9ÀUA5~\cZu¤ÑW,Åàûý¾­ghît†8\‹H¦5G5/ÎKõLg½³uÎPB·f»Â 0=ÆBêjäÔû‚’€ñRÇÌÓØ5>ž.ˆÜh’ΞsIzC赫l-¥ÜœðÀÝKgµÝr5Ñm’p»ÏRó S hÜsÛüãˆ0M l+`¹æs"Ò, t;ϳæ#åsPÃr‡04Ñœ‡‚#†Ž1Ò²êg5?µ5cÃNÑîhÇ^¾ÅÊÊbw„÷ÛuX5\ S5S½ëŒµâáEò`ÆV"¢:bãÅxËÛ“ÃêV—¡ëŸ"1^___ÇË ëã0JRB¤€”?ßïºþ^ÑšwP27õxÕ—¥>m²‹)s1WT1×§f7Ø,»@̦ñÞïë Œsá}’¡9ÛB6¼J¦áòõ›éª.$mè 'rþ¸çš5¶GˆÙÒˆ½Ò/ãM'„›Ö':XåߡЙÇÀ¬l§гw~ 'V‰åø-?ù#OS ]þÒ5™ f¢íVÓHÖ†"%P¦ç¬±Š½ˆæ>ÉG°í£ë9 L|¾êêó¹§æBÈÁô—)ðAÕa¾P Zീ|öµPc«ˆ½p(ç|œ!ÂõB ý)Ÿ£=ˆÛø2p”Èc@¬;‹ºªBÚDéÁÊ|ÿýY ÒZ£8{Ö.‹tì°öš³ÂÏ+šŸêiì\d=ØŽùñdƒÍôPKÎëžÏ?»8éÄì>ÛÈì<€¢˜wŒEàÌ:þeïœ×ÌŒ9ZŸŸ°›ž|}Å Y­¹'{j5Vö$fýãU\}’›=Ñ»Z†3–ðìLðÖÎ8òì1Tmï$~]לYŸ>÷Ýó{ú¼ŸŽ z{gÇž„ÞŸÉX_<‰q㟶Qä]‹—/tE|"XÅ®1™Î” l싽JHbÏJ˜p&ÂY™WšóPTÉšRlßë¶Ì~'ukGcRLŠ#qÑS¯s°~´‰óTÆ×ðõbüýðë+âëÅx½"Ž˜ÇÈ2#dfWÎfR:jÿºgœëY“âëÅ8ÆqÕ€,ºåñ¦§®yÇ|‘,*`€”¦ŒïÂP³ñ-'¿ÑVö ùIÎðñËm"ôûL\}mx}ýUϮц›æP¿6Ëšˆ6ï¡El PªûaëÞX¾¯‘nL̾ÙÄÓóîº7wLãD„Ú3£î÷Jc¹˜¨€®¸¶²G¯gWÖ@€¾ÔÍ3F&׎.'`º\‡¼O„*ã-%TÖ §¥{7’jóä–Ë7|IA‚ÉI¬Ä »7G$Äì:HÌD-Ç¿x§¢ÛL¦_+3‘$µ² æm!Þ~M¦•b¹“ °•™Ú^G¨Å\a>+PKÑJ;Ûôë†OŠÆ‡Ì?xæÐö”®ßŒ¦îÑ“W#>À':c7l&,;ŠDûãQºÍVI`ÔªÛV%šÝ»Åœi¢’GE1`pÿ $¡ºÙ~~Þu´-ªYz^œ€¿WvÝ8Ó…^'µñB}¿¡bÂïÓ„ âÜQ°Á`H™qgÃ, ŒÂONʬ(!òged¶ÝÕ²ia•Ä5›M=•ºË“a©î/š)J¶µ¾žæûBŠ \]]ÜJ×Íú1JÃ>­íÍñùò P€šhÃ`Ê6©^÷Zgš)e6| ÔWfÒDÓ\x©ù·öÌ®òSuoìã‡ÐdäI ûJ—šGmBVÌÉÈŒÓ; ¼<×òy+C¦8‡”y|í™X…ø”/:ºÀÏÊI¢^ €ög[Æ%•g8ö¢gÅÜltâO ¸•+ÖîwiãjöÄmkV4>)Vo‚ÍÃ¨ÚØdòÆC<i5‚äÒOA¿±ózg̬G‹v"ÌOŠçÛïŸüyòÙg ÈÊÕsvŸÅ |¼nwùÄjDv@쀑¨zgM~.¾¶Ÿís¯`Ÿ™`x±êÉøð*þÜÙ:sÁöÕgût­{Võ#ÃòilÜåŸ3€ææf<œíµS+Àèþ\çgÁÌÀc¶žv±À¬n èMgÌ÷nŸ³Fú5µ^Ð}|ië¥ñ³Ä­ëxOÖý͉’(ÆuÈÌ*ËCÏóDÊLKÿH+vKå}èr $)wSÜ+`PõcÀ+F/ÀVÈŒ/ô@]ÌàЯWÄ×+àׯˆ¿~øû×_¯€  M—Òaµ_#ïïŸû3Îr'ÌÀ×+àë8Ž!PÕ* |ÉSH;õröÓÈ`yä盦gb VõkhN´iÁ¦d,ñé_öSð×õñg`yRrf1åêrX\ûˆõrK]õº—«óm5.<ŽÍíØ·’] Ç3©Õ¨êtgüí{¡ŽV­-Н‘Å5Cé^À(5«ËëF¦ÐëTñ^fB’=€µîÐÜ“€šw‰Ö È>©—ÁQ&ÔûBªˆÃ¬­¢¬›KÅe/¯¹”7+ø…÷y8ÁyÜÊ 8EÓžjè‘§(ΓÀ§ 2!)p’@‚B"ã”y Þ’5ÍÑôÖòܯˆéÅhï“Hp(›P£ÎlMjÂ{ á ­l*“Þ²Ž‚âbë7–˜ÅŒá'".1¦–>šY’Ù&”kbÇž4‡;²Hg…NêË (ËgåšËH¡B&lÈ!¸åÿ»4>ú$¶ˆA—"w|,Œ-ƒ‰ÐM'Ì,€¬tcBõ#°…‰„’Tn׬­ÞŽ^" œ–Š4ª^×w9f3¬UHYTòbZå{“Í(w!‹UnwPꥉ¢êI¼í\{ÀÁØ}Ÿˆ{Fˬ`\TŒ¢™ ð 8›9³Bx5³côxÅÿÕmÓ©¾ÉQþ]±¶+ÄvŒŸñÌXYÊ{ï)*SÖǪ`ß5vLÃ¥Ö–&'}0Ø#¬ÐO×ÕœØ?­¯Íw~ž¥³˜;2w@°kŽQãÑ],?´úßD¼|¦ž{ç°z{|Ç`ÛÇOØsO@ÚO¤ÂĚخ´ÝZ@hFÍÖ’5¬ey?V®¥õL-àí²éõìY=‰{>M}Äb\ݳQë¶5‚ñ«‘ä~/Ð4v"ø.ˆ›5y[±mÆ©Ö,Ö$Y·×´tÏó ×½~éUj.¾CotÓ¡è¨dG¸–ÁÑŽf™ÆW Œãˆ1áˆ\#ÐÝÅ6€Æ"þú:ðׯÿý÷þúŠ8^G&›Æ‘ªB‚±ÈìSç ‹ªzß7e$ë×+âùzòøT,÷˜äkmL-4 ]a‘õϰÞ½ØPþ9çÆa«;+ß_Ðí=ë¿u#”€už¦1Ì™¬Wþ.¢ê¬YŽD´Šªka‰÷÷ÿÄy;%î§‘ Àœ‡,ûùù©XŨڲ§<¶nË`ëb_“@Eœ¾=E»ÐòSv÷w¹¦QZ¡‹ûHRD ý×ù°˜‰{ÍËòùVš·u­ð5Jèå¦1\õ” Å-$´±+ÂÁ]L·j¤™eŠÝhG ²Ù[ÈEsë?ò»”<F- «kl-‹2šYΞ;Ó_¸D¥æ™­ÀÛ*á-¦KûÔ åvX¼íÊçŸ0ž²<Í ”-Â:£xk~×ö´zZW¬ñ™êÜye}ˆ@™*$bóöIÌ^W³ý\ àˆÙDBÝ@1)N&„`:\gÊîzvf"H2€!òÎqpÖÌ„ߢÛX—„­vw2ñÒ7Bv[Au*9%!ÀÉŠƒ @S6fØØÑ-n+mše‡¶>ûHÞtëŒ>‡Ø¶Þ(NmU)0…rúÿZÁ^‚æß“;sìîø¬SLðÖ8/™ëa¢Ž¬7]±koy:X}p‰&€Önì3†ÉS»ôÝshÿ„!åÅäUñø4þëa\ÆÏ¼ j]bžh{íâ¶§åQ´ÿçÈêýWç×îwÿDÃç‰ëš÷{^§ºü~Ky_1R> žêŽÍºÑãùY˜íOžG1ÇPè”Y4[‹ýÞæíÞôÎ_O›mtI[;<>ßOÀ•'{í·ÐÐ4sy}b^ñ´l%þ ³i Þ ¨ [nœ´øä^Ž×5ŽðÌÜúFvÑuô˜ õ)#ëé:™M¬´ßv·{yn·Ö"\¿ÿn}µ“3o÷Œš"ôÔœ‡ŸHbŽñ)™kÞ;Q`Åž,ëc¬ó(7[f)s›w‰ æ†òÈYl¬¬È}ÙÓ„mÏ€ö]‚Ý¡;çLŸ‹{Q®iÓÆV˜äˆ¨âˆI¤6ÚùÒ8ÉüqznÍš‡ý~IÙ8Æ´²ÎS r"<í>”ë4Ý)c”•ÑTÃ'¬ŽKÐdâõÈ„ï߀Rô”ÄF_§{ø"å˜S& V¬ë¶egõ.à×~˜™xTMÚ,õX?bß‚öû1²3M6:½jÇȼÇ[EJï[ŽY0{ýb‚!YJŠ:M½¨Ã +&m ,a ŽT²WQ*z,E_'6*Yåß>ˆêlXÍ…ÍL ®#cLnôÖñyÉ\£k7Ýýp•!ävxÑÌv+ÕÏdMˆëÌÅàr +Èiñl9cý<§qJ¶$íÅW €§Éñ“ƒû‰Àê“oäDëÌvî׆5C·„EÄXO"×Ïg¨Pœ9@Ž—±ON;X)$äßÿ‚°%Òg¶5§Å€ÈÌÎŒ©t}™²H¼ˆ h4ÇN1±@É4L’ÌÉb—6ÉHDˆ"8ÕlX5*$C+ˆâ$ ÀRÒL·.B…¨nL|Kä¨j4±fÇ¢€k(M•qÅjN‡*vh(i³¸î &ήÒ$J×Ái=êXgÙ…íÕ®Ti®„žÃt9¨tL#1ê5y7'^„8aQœ°‹2ÈÅ„[<`oß0™ÿÎè®Õ}’KÌ¿è7&ÙA¨ÔߟòYCT4“K—F´sË2ý3X¹ŒL TW$rKêȃ¯µS™é] ôg…×S«w¯™ð  22£fãO­Èg‰àŒ4±‹ †ò|oªp!„,|}VÄÙKøGZ¡-¤ÐZÏ&Óf3ìkLã<9@\Áö󄺈ý.bë°èAÅæv¤2Cï‡M«»ñ„Q@x]—½}¿áÿiá¶£K¯TsÃVdxçþR^⛋ÒÊ-rÆ +ÿþþ¶ÎF  ”"þªˆþ™çžßGCˆñó}"‚0ãç}â­ ”],???MTüÌÀ1„ Ì„:.Fµ@8$à_ß'2Ë-#›…ÁP„d¢„I%¬ £d¥²Ë$)ò½Î´kE#ä~Q„“äpñ Ú¹<Þã›Ô¤n_n té ôÀ¦LÙ>âè£xÎ.£ÆÂÊ9Ì;C œ2ƒOñýýƒ$Š3 Ž™uE~P“RÞû©ÿŒê0~¦·9‹W†iiº™Óa"…B›‹‰é)•¼õëxe‚†æIŸ‹YôÍì ‡±¤(3R4Iv9|e}€-_)Ò¤Í3Ï÷+¼jÞ#›WÖÊâÆ¬¬îÏl²Ñi¤ê"…êt@ ¹´lc<®ó›®‰„öY†øµ”©.5g^ã8igÕÖÞ7@äÌ5ñqi{)çÖÜŽ%T'lÅqŒ5p2„£‹ÍÜäЭ ùþÁÇÕnèl\D×…pð mñ IDATxä<¡Új_—·ÔsÚ× äŽuTÎ*æÐ4¸â¶Cƒ¥ØÚ`Ǥ!„¬ÑM¡cÐæ**¸à—[xÖ-žÈ×jE¨Ö,ÕY<7âƒv2­å"cR¦> z)öR1ÜèV—g¬—~/U´š«6uQÕÏG–ëp3¤ˆí/rÞ’’ Tq¼æY"‰)}u•”º…Û©#wÊÍûSO§üò»Á^}uÙ Ü®Up`ºƒ ž?ÜCp†ò7YNòxaÊ¢óÇáÀŠgöàž»ÕÍê6z>HлOñšXÒ³Ž¼Oã¿4¾®.ŠÝãävµç.„·ÑCýt¿ÒöšG͉rßu1¸Åw‹Œ™Â˜¸ë i±U:Š+æÐÊ"Þcó;FáŒaá•#¶8×#omÏøN™³ív"â³&^ÇÔu4<÷l“g±|Ç0Æ"GÜ]ìbÃp~;W9áìwgchä˜ykwöŸ9+ànöý]^ßí=¸ƒ)º©f¬Ç:´k`Ô‰Û1Þ«Tx·:1¦,ê"î±¾¼½62<ûxã× gÜ“\¨–bTȾ"y: 01úû6;ߍДÏÎDòÌÆHêè`«ïQ'¨2DOG¾¿š5t^3óŠð×ëÀׯh,©ª¥‡@†Él5=‹QÝøGƒöì¥ÿÈþ}­q%‡´M@æÉyOWƒõ‰6ñvé $µÏëÕ4ÿîžñ ˆ1‡v¯âÇ,zb^1Öÿ+Ó£lW9ØÂ<¿$0Ç,¥Cn>ÔæïOϳ~/­ï×ì|ïɪQ;jlΘ^ÞùRòk0½êÔ®qÌ&Ï9Šéñô J®yÜ…ÓPC‘œuÅ©²)B @YhïÂhóFWÔùʧ:KýßÚ±®Ë–I—¦trÏ*ÞL™åðI{ߤÜt‹¼ß“Žßq}þ½^À­È¹:íâY›éÑì <­faùÞ÷ÀÓSá Â^jSÌ_“;ÓM •ú[Ú’iS¥” ¬HLA¡Qp¦`µq¿¤€œ ñLù÷óÄÕeT q2W6Ú«&IÊãf@BÂÅýÃ\è²’À®…­+PPi†Rq $ Í=hû<Û¢›À„$ÛIc—n^œ=ãR·1\À(ÐÕ2'. A:§UÉè~¦?ç8p1š1_è5 X\)µwë,uyF …†$§žª@d+ü)¸hÝþs’Þ&ZûÃ@ŸŽ¼d0–ãibÏŽ;q{%éb ýíÁµì{ak­U`·+i,¨ S£Œ 5‰ÒÕ@hãÿ ¬[¹/yx^¢±Š¡ŸC«B{­GeñQ峸 gJKk6^1Æâ“`ÆYÝ“'O€ÆO€:o|:Jä}†F¤7zÜ(›u6Kp=w¢0çƒì®­'.ˆ-`ÝŽô˜›¬´ÑV‰îÈ4«®ÓÎ(߀­ûÒ,x@ììg·c€Û ßh; èÓäÉÚþ\Úl^è³{:Û¿ŸÄQo2À?zÍÉÛ=È.–êÄÐÙ‚0/Çzû7œæÙ«øª~é¾·ÈÝgqkÖP÷Îã €ÀmO™1RÕeµ„B­^’ì"E1J+3¼f{K •ÙWÒ-ꜙÑÅÍ@†r=¸²—K`ô|fF ¡NB§WÕ²ß4Kƒ\®‰þ½ly w–m/ŸS ËÊ/0‡ÛÙmù×úÓê–”u¨xLSÕ;ºÝGÄÇõÜ©™ZO:Ђ¨* Úì„I£•Õ)¹}ËÔixÁïÞjÜ—Ô¹Uö ÒÝÑ·š-:æz­"(Hs©6[Fb‘ÇÑâYØD= [Fa{ÐçjRÍ$Šú˜ÑÇD"Lܬ×ñÀ­×} :ÞÈ]ó½ìëÛµ*;¸µ:q»Ý8ä² a¡}÷vÝ@j¢v]P¡à‡iÖÓ¹f}½ñÖ^Ü S{è#35ã0~—ÓDd¦#@Ëd´þ|èÄ´e'=MPŸ¼ÎSqÚÝ §WµŸ½ßN„S&6Écg`†þ?ÿÌä&õsÔÄ]D–TÁ¬PŠ "ÔDÕEðAH Ä`I„ Ð3™¨zDU…|˜‚J¥ZF6 «ód„ê(_bÅ!R¤,Î)þDf0›ËFR1WB¨R¦B'Àbz0Ðï$Á)Ø‹­©VpN©ödÛÇê=Ð-‘÷ñc¡ÙNi7P²Ñ‹1(ÏÆ÷ -¶…ÈJõö³Ëãž4žÛ÷²?ó•£ÞSPÏoÞ¬ÙV»d·eÌ@æ+ ¾³Ûu³WÇñN©ä€+vË'¶Óê©ñ»fôгr$|ÊœZ9•®¦CÁs6¿¶¸wçûJ®e˜ì΃Ýù»k´NVâÇΚ³¼þ¼þz« Äa0‹MPLØSºŒ5Éi€Œ¦-+}6ÝŽw¦<•²žUÕi…N‰HuøÖA¦á¨W1¡~–F,ÜÆÓÚ9½šÙ®ŽÏ"tù^%ZèåR^Üæ.Ñyÿžñ Üh7HmÐ_l1r™ZÓ3ø&éÀK÷×¢åù*Æ¡wÖ»úÐ;ä¸þúµÆ°¥ÓI®™Îé'yå.OøD;zÅà_iïΘ—³œ@är½ý3Ïé0ÍßVcÊíyíÕ]óf6mÚ{72îÆº>&цêj‹Ô¢ñ¼DÎQPCê«ÍÁÌÙŠ²]3JÞEÍo©Ÿ íDÀ8KÍv– ÍÁqÅëæÝÌø€¸Î4D6ó«U,Û ²ÖWá)ûêÞùô¬.“xož¶i<™•Åüzaßu|±I4 ªkCÜ>g£Ÿƒ".]º¯t­GEÊ_Ïë'Ƅꊉ့ÃÅ„(™ ÅŽÀÈ"Õˆ ÉÄÞ50D üFf>)Ž`UI'1VgNÞÁô«NAfS‰Ä©"ð¦3wª }ÔöÉ)„DÆöª¬±÷•$ ×5¿˜²¾È;)˜#R选1¼ìã ˜€¤½ðbé'¼»6"\ì((N–›Ó§=k©ZS€Y(÷ yÖÍäpdÚW™™%=³¯¸«( lÀa}Ÿ#{ÊÇ…‡¥–}•ƒh£ƒE0g„FºÔ)#KÚŸ¾'5þMt.f‡EÑ¾Ê .ÎQbÉ3çMÏ£ì©6aè–³Ó)ÇôñŸp ›"xñ`V`=eÙü‰ ï'EÏ.Z ïÜg…ñjÄî“Èê3Œº@ã¹=sû¨ö˜*m´fRO™uÞZ?û’)H>à7s‡| 6®@OFOÁðUƒ§[¢“ÅeÒÐÆ±±˜ GÜš¬FîÆõ׿r>0¥n£ì óÌÛçŸì› 2k~²/Ÿ48F†Ì“÷š½Ï86út=zû`¥ÛºzV«‘Ñ=CIž¤$öÑÓÉ`ÂÅ’ƒµÔE3C’·eºxd‚ÝúXÃõüPÍS WN’¡sþtý»¸w×HׄNav÷ì9Îì&íØ7­~faÕµ1Â+Æ=ýßMOù½S+8˜ zŒ13¿©¿›ùTªŽ † äš*ᤉ5™:—Ŧ VÛ4n°Ù´£+âëë䉉Æ}»0”ºgŠá\6Gfû¿­§/vU¿‡½}&Û&×z¹ Òêæ^cøÉÅ·i÷Vó³«}µoŠJÇRj¯olà{Ìcs —…Ž˜4köúÙ¢ÿ¦Ê®öåβý{þ9#“¬A¢äí~ìÓ¸EÃN®YŽþ^¶Ò-²n¹N›A3òÊìºb}.Yq]'©H*Ñ¥f¯B7ìjr¬‚æ¨I…ÆÒ´·¹¼°"ÚÝ‚a3P¥Ü¸PEZuÚ휹㸮 ÔÚÐKÕ y¢?ákÀð²s5¹ _Hߨ÷§Ñ9bv?ÑH˜i@¬ô?’Š+ü{ÛŒ BïzÚuí íáʺQE¢ËfÕm‹@Ù@ÓËq2oßð“l¦þ›|åd×üs˜NûwPœ'(á”PÁ›”œ²hm2<%\Ö¡*v A @ÈÝ‹ÈɨÆÌŒóñ–‘€xž bœ"H‰ b¢¿RNmŽÛ6¡ª†(T÷ ¼ Ù"ÏÁ6ÂÐ~âÌÍÁë}_dÓaŽ mǘ2G}¾Æö]çOmÔoßÿüqëTÔ’,5c–s—Ï 8=èÒ/ô|6É3fv0?a1ì€[ð)ëpõ9?q+ñgΰÒMA½ÖHðÆX>¹¯»û; 1×AŸŒ{>U|znù HŸÉˆ¦ÝØY|yÊÏg·³¬ýØÃnMÍô&W`B-Â6£§;&ŽgÒ°ÓÚu™wàË,AÞ^Oç³û5º¨í}«=<;[W¯ñI|[Å­]®5i_ ¸¯âðøý;À‰GqÜ+È]殮ό6nŸÉ¬±°ÓdlãZëæoíÏ´n€x;ž½6hÒe<ºî¿×È`H2¬þTÖ0Ô“÷]-mA|¿&ðÃHrÑþ »ß-9¤ˆ@èÒf6– ³˜;ƒáˆ6ÖgΆãó•®qÛÖ—É@2Í­Ò4æK ?DÓA}7—Ô 9bZ7ò0`›Û]ÏJ&û[0ŽÄ>a•ß[I@¸&YöfåêŠcjÇdo×ôJéiΰj­ˆóÑk2äÇÛcŽ.ÊŸ2·f Ÿ+ÞÃSÊhíüœÙç~#›±}¿8>"ÓŸap@‹Ý©¨€RV¢G¸4jøÞñ ! e…+äe}•ÌÒ¯c&¸¨›Qpv¹`+šéÚ í¬ðÊ­o•͘Q«NZÙ8@.—oq^hÜ ‘Ôx$7ßðºÕ]€þtüevßvÅØLD¹)áz€ {\O^Ò`b¹»Ñle6ºn0&³Ð͈7· Eþy±³× ©Hv4‘B?曈­FæŠs&ÆI‚ŸtB…Èô­$³Á~BBJŒ$åÐcˆ|¿Mü]²ÃDTàXød@Òí@"Øh¢1(m1H€*# p(#%à”F@L„>Iêæ–  ZÂÞ)ièŒ[̯† ‚{ˆ…hQº±oî¬t¯+„¹±üàÏ¢ß(ªÚßÍzp5D mÿítÊÆ'Òï½1ÌúQÍõŸÒãižÎ7ƒ[Ð 5Ç…f@7:ñÃ}àNáÚ7ž ùTöÀÕÈÐ ÄZ+‘ÍöýÇóëÏ“Á™úª°Þuû‡eá7sÚZO ÞYÃäÖiÄZD©+²fã(³æÐ-yÆ`oL® Û“{ôdda5ÚYsЇÀ«;®™iÖLù=i:Ô´Î1•©ŽíÖõøå¢^OFD¸1ÚQ’v4Yd¯÷õD~a—ûŒçÖSPeÅöÛX@ß,óîçÊIôa†7eÝŒÀ×°¹ò§ÏØj«‚ýI#àéˆõ(°:w{e¶¹¡—#a»±×æÅå9 ÝG+ÀmÜŸþ™#Î5*NÕ˼YŠ¢)›ÿM–‹òN+8ç#Es³½æb–áûƒôLÉ+šRdV=½ˆ½â‰ð>O1óê´ ¢¢sUöc­Íèb ò+$Ë[ Ñ)ìX5ÜÜw¦A¨ŸºøÖ\ïž=ùÍ‘2iBy‚Èå%ŒæEã3¿šÔ­ÙZe¹Aû{ѼNkFT]‹Z¾¾túqýq|Óä€*Ò¬ýñÞ´qºµíÇip×vä2?çò‰Zýp\Íc IÍYÇëYI âU׈e«7ÛóÃýÌãÏ k ·¤„Ž Àt«¹ïíð†^ÓL;¶Ù\o¼}|Öª_62½Úú¢¿[gñ.FxQƒï êFfÍH±»l€{›sE %'F4&¢tø ` ³dRéxô‘€áªûÔ*#B]™7Ýä øòÞktV#|+f׌áåéyâíµá¸E®¨ÊOØ«Cø6·ÎýÁ©NGyL G]-Äôýû—;R/­Ћ™%Uƒ{d•i'¼kbå t–ÏÆ8Ù§(ïxf@ËÀ5Ò“}³M¬Hòg!H `(Þlg^bEàëõ™)&üdv)·€9)ëÔH@!û2£ŒŸ¬ˆ„Oj@›¾^I²X}Öç’!½Féú5ݯՠ á^“¥JW ´*FÛko†Þ?̨9l¯¿ Ù›î©2Z°ÆˆÈKuüDþ³âéŸþiÍ3üø–'1 ´TöKÈ¿¹-UÊ#¢4gQÎì™ÇÑ(îa->Ý'›§û[ö&+~µ'žä½;i- ÎñZ B=ê;}:¡0:õ¥$îÚX™CÌb]¹/˜¸žsWw¢®¨_—™¡)Ý@5(§ÆmвÃÂäÕl"dÓm¼ݬ©{FœYîR…­ÑÖŠly(³5j½qpfT ™ÁJ ÉÀ•dgûüü’à „ ÔR`‚­Ž”ÿ¾´¯D¥!TCÕW€wzŽ­Û"!KÎè( ºG·`Àø 'ù úõ¥ÀõÞæ^¡’<& ®ÀSäòÜ-‡[é’yç–fqÌóÎÓdŠÊ>[­þþ}ÎÖöA±4e7•ú•öÖûý^6j¼Qã'æ å5 hÅTóΡ™;î <_kOš6~ÃÙÝk=¸çõê¬èžÅÿû¿ÿG¹£1fÊ*_º'…ÊVf‚ÛJ’ ·1Š&W¼ÜŠä4º&ssxIWÀ23©‹4‡Pºˆ=SGDRÂqöžƒKÍEÁÅta´#1½#‡v,³ñsyᓎÝ,‰™Ù ·ï1.Ú™ÐñJðÑKd*…yØt×bÛ[Ä?± ~ŒµÁÙÓÜñ’Q°M˜ãô¾–¿O=oÅžd1õ”Çï§Sqž'’ D€ïóŸï7ÞÉ4®’H‘ROL§Vg“:^ Å÷÷7ÞÅkœ#„÷ωó(|‘w½±³RFÑÿýïãë×ßøýû!øù>ñ~Ÿ8ÁHðû÷o³>áL&2ùþ¹\Ëú¿_Á™Y\!@M˜´ü¼ˆ6®4ÚE¦õ”†`5ÐäK'^ù¶,“ì¢h€b÷7K§0{Ó„ºfº]6ámÏ Ÿ¿´P´Yc-xÄcÑDkJ4z ¬V»Ão\ò#æÅ„ßµì²{ Öy‘4ŠÀ·{ï*^ýFBù™Ô$Ø•9ðbܾO:{1 Ï´A¦EdÙ ™cåº<Š÷¸¯qežŽiÎ’É™g¹'ñutçv3½˜?¾V Þ²VfLïÌÝäÊù0KÆ^¯~~~Rª¹ÉJƒm¼Îcmä´k¨Æ¦)sdwž—gÖžKc&MÔ[ê5)¦´úY±Û2}Dܢ㉆S›o´ñ¾œé»¹QÕ½R¾¨³¢£m¸u R•åúÙtá–ø·÷°£Úµeâ½½[ž‹Ý›kRÎe#iç=žÚÀ ToëÛ1Wkã¿ËÐ^0¨GGØÅÉgñìý~»£ôåú£Ö‘ík¶`äÈ"ïθ 8CÉ=‹®únv36–ÆÜIDpG¾>ºŸV6õ5™÷šËiߣ¼F¼;rϘj6H‡î"¡y’Ø^pû ßé´íNýÝŠö•÷,(6šËL¬Ø×(¬º ̬øðŠÎYuHͽÕÈŬµú|»Ž×J„rö;« Ýn 6œ%mÏ]’îlšŒÌØ÷g!!ö;Ø1DÀªÚUÉÌK183žˆ"X³Ë`Rœ’XqZÕ æJX:9f=,9ñúë/œ)áÇ“ü ˆ!@”@Á’ .vºbÄV#™FÂ+ àë•éWŽd†ž¦¯u‹=¥€: AÂÜ’Vû·2#¢ñ2$±C=]]§¡ïöŽèÍ9!⬯„ü9ê3ÓÌrÔtÓ/³}WXš9Ù*j diË-pæ'ª…–»ëZûlj5M%ð™kOG³>%l}ʘ(FRɘ ËLP?ÞxÓT½ÀÝ5ÿ;Ñà{lj¦žYüìºF—Œ®]ÉÄK¶Â®xyê’7žžÏPÅcF­Î£]Ñõ'Lµ‘‘à1NZ€iuv–NøŠ3÷<@é&?@«î¢º ³ñgJòå± [F×RBàásÏ~>0ꀌÏgdPuÍÜ=÷º¿Å½`nà˜â&q°Êy<°Ž‰— ønæj¹€›«ç2@F€ã‰Ëª 0 ÕÈäi5lÛ¯Ï 4nká?°·g¬Á2¢ý'N±3 ñ3Ýóß{Ý›¬7ÛŒ>‰{+oÿ{óz·ý\öÙxáõ÷üÜz6ÕÑk“^"à\“‚âÉêº×í †Iu îÄž¯p5bZ LÉ „X#T„€ –gжu)^ñ:W2QÃÆüL–ÃâK ±²(7åiœj~£í:lÀ80 ˜Âà¡/h¡ä× “­G¿Ç¸º?8ƒÃZ™¹lŽL°Ññv¶½µ»Ú<™œš1”?a—Ž ?kÐü‰QP«è9(>Ñ5A¡™®æJ#k÷§ž¿âßÏ[ÃÍaC`ݲá;mÞñi5à …“³¨z/‚¨™2 ÒËņõ–ˆ´4êÖ¹¡ûþØö®-v½ç¬›¢Yåmðqœ¥M<¼ùv¯Ã=KÀöÅ©.ÇnfL&¯ƒ4?\u¬üŽä¼»²²õ>÷œZY¤ïò0¸¹p{žë÷‡A Êyó¶ë^ÖЙò~J6RÈç‰óLÞ'3««€W¤\„ƒA§uºQ´å4àL‚ï÷H)ƒ 0CŠE¯!Cx½"˜ ‘¾ð~ V`„I~ DHÉ´ $‰‰ÕÃ*ÉbuTÙvÉô鲿–u™²{ifÔ+²?”óá—ÈIò2‹»ÜkE3?,®¨IC—Øi—7Ü×`iòN\=/µ¨1=ž¥DÍ×톀 —³Œ£ÙÐ'˜¾ ®žÛsHþ ×œö;‰|9‡U$¹Æ ÛäŠE«@Ïî­7öëug…éÈ ˜n3`ÏÆ›ÁÑPè&~õÝ»‘‘ñOA ¦˜—8­À›Ûˆ&tû3Ë÷Õ{Ò6»×«$ed0—¯@ž–ÒØQ]‰ýÏDæ§ÔèÔ ÑË#¼“7:Qß§2,ÖÏŸt¦îX>OX4ã³Á˜YÃð¾f6마6SªºŠ—&(ºæb÷<¹o<÷­§€éê^ÝÚ<íìÏ@ˆ1çðx+]—•Xú,_{$‰ñ¿ôg8Ž…ç|ÄsþéÚ¤¤iÐø²OŒ<†åªáâi´­âû4×wFÉuÒüiïÇ讎‰«qý·Pu2îÖœ–Æ€]ctvÿž€Ô;wÛ©>™À ¤¶i¡~ A›ØlZç¾IBÿ|î’íÙÆû»ˆ{póÓ'g•'!Ó¾F¼wçFŠlª Õšªkü~±Þÿkþ½m‘+›ù§#L+°Ê¿²ü¬Ÿœ·OAéÔ±__±¦vÀÓjs¯6«pîPòÝ‚–ÁŠwõùž:-®Åñëœ] ‰Å З»^Ö¤0_` ” $ a€H² ¢/¬ !àøõ…”Ò)7¡ÜTô–Øö]|ÿàçÒ©øÑ Á××I„ó”Œún`ZŠœÿûš-V! ™Ø|e4eÛÛ Nô®:Eø»K’H* œ` —¨tc‡ò@Çv¹?ûéׯbR‰M qìVÑñ¶ÓŠÊp{I,º„Ž×Á ª)€Xû'ÖdÂÕŠÞWæÕƒ»ƒšmÆ–â¶Éú+ëŒî€ûâOÒõ~!‡r}Mnˆ:Úé4Iª{Hm:SãHÌíZ•/+åfìA•7^X'a†4Af"¾mlk5ºžDŸ²ªv ʪ€öbb7>@ëñot¬c!ÁOžv:oíóõÀFO„Ô;SvŒâ'ºŠ#¬Óx L]~G´Çˆž‰7æÎæ¹Ñ¤Øu°Ÿþñž× Ϲ.-П\kËŠÿÄ&Ýcìv376[3¥×pòŠ¥]Ãñ ØëbÌšz3ÀàiQø©Sã®ðhë~±†M¡8g¿µ"飩ÌŸînŠíŸóbB à8‹¿³ ¬ûz¨Ì²]¢ê€uçÚ¹Žù±ikQcŽ67I×ÓŒ!þ”ÀP5ôh=¡3«Ww:Ì;`jl‚ì¦fÆ¿g.ä㙵jª<É·gLÌ™œÏ®y0s…ÜŶÙý]|³ý>æOã„Ú,~ÎÀ<ïŒ[™˜´S]ê͹8>ß¶¡Xz9>Do»í¨¨íƒö4¤f‡Ýý#½ÀÖ…ET–Œ;V' ²¹û-™@³®þŠÁä%Z+Õ~/Ý@‚–t0O*EwK½¾€F,y,â=‹é•^—wW]Óvƒ­¨š³Ñ®¿]Á4Ó¢è?¿u>úϓ׷0Vº{ D\€$f^Î œéD9_B3.fÅŒ(‚SMV½XóiBéÇ+â÷ÿü†&j 0piÓ¡Ñç‰ñÀOz#rÀœÀ™uaì󉪉ÑçîX+Ë  a0M ý}¥b¸i-`¦Ýk ¦·×Ц3svÏºŽ‹-1n“ä›BzÍŠ£tf/ ªÊË"¯ñÖî5‘*C m‡ÐY-¯LæZ° ‹¬t2‡Ð $ˆfø0êO­O;Dí¸'¼Él½„áË8¤ÝÄÜÕ%—çÕk”¡éÍRsòXCÿjµ¶Fý-ö~X€ýžË˜ç&³J@w`Ö“{¾JŸœM;Щcƒ6leÉúw³ÆÇ¢8z’ cwpL„V: ;3€°§CãböYÆ3l•ŒÏŠ™‘{ù' ÛŒ•æ5£žèˆxÝͱóY,ÅKc2„P€ñY¶¬%OŽúl?ÌÆøªÈ?{¢Ùšã«^ë¹Q èFïòß1ÆÎEjǾ™é­ ¯À[1tv¬3/óöÉ?ÖfñÉë´"ô»&ï ›ÅU!_\GAóöûO,ŸŒõÏOÿ×ÎìÕgèA¥öÞŽ ¤b†u¥J×Ïå£&FùÚõúéÌçf˜r3—û{ÎùëµN,çG­Q8çÒ-© ³ÖUëX ¼â`ù³¹3 ¸ŽÚ‹8‰¬õFª"âÁÑÆx1®.ŒÀE¿êVwõuFK´¨ú³ª/‹#L¨3#dS¤k\ O·V%éYu7íª½Kß,^¬ÖúNÇØÛ—`µÒ3õâàøïÙ᩼Á“FÚªº«íÇû6‹«æÞìçæ1Ÿn.Š»‘½™‰Iý¦æßk?SSy«ä³íÆ@”JZð䞊FfÇÀZ%ƒwA—€Âx°]¿/7ûá’üxÉ`´LÞT-h§˜ÒéðèÊwÐG>r©­~ÑŒÚçu6W¢œOfÞ=á¶5èµvC).N3jæ(’{ODiy`6¡«{¾ú|³›ÑåÈë6Í\=r ª­H¨»–·]Õ³&ÏËÜGÎæþ©Rý®ÿƒ“¯×/ü~ÿ†œïJ[NòFJFã6VAr6 Ò³cŒ6Ψ¦gw_]p(Ùïy ¸¦(˜bf†¥ü9C—1H©µ†½Bã´¸Ÿ±úT›iW@­t«èvóµ•ÇHOâyTQº—eá”Ãsgc>þ£;ÎXŒŒ”ÿñÐ?KÙ`ãAîÙ 3s-(Z€ïiçh<K‡ÓC»$Ó)2ʵyã•í{”Ï7"ÍWÀÕÊ )à‘6Ù¸¡2MÔ²œ.c +öÍï|-åßéÒZBGþœT)b¼%ÙÚ!+$˜×ë…¤ ÿú÷7ˆ’ Îó4,¹ôêˆ?I@¢µƒö?ÿúDï$àã…ïßï¬ãEYó€AtàLöµïó¤TãA ÅO:ÍÑP*b–ÊDˆ«jd‚v£Äœuô´°e0²¶VNÀ`ßã²NR.v¨/ø8˜ø{+ŠÌÌ8Up¾Ï+ BçÏÉ€¦³ÑÓr÷; >Äãq‰ÁWí&Mˆ¡tÕ~®P¼Ž!þȺŽ`kú¼ígº¬…õÒ3,õQ}?¼ó÷˜±Lgþ‰ï 2"œ C‘¸¤©…õyí[êm›xŒ×ú3þ|~!Q…žg^KÍ‘œ÷.3ã`†¤·{H·‡°Gå®ç‡Ê•`¶ñ¥Ä¹kdun‡¢ÛiÇÛxÙ&!%Yi¯¿=o½?ý™Ë·ÆÕx†Œ±öÑÞ¦Q3Hm|t!óDøÇ3~Ô±Ú±=f€ÈŠõû°iÏäñ=ºqÈMXDoç¤×¼óÏ ¼ýù’ŸÌÖþ˜ÿ”5Qî}ËÊjÅ’U¯gçå*åuÞ’¦,²özK .yC»ÎÛñ öß+`·æ;Bi´îádÅjÕñ¡ª_˜(ppe ´ Ð%ðŒÁ3Œ˜”ñû_γjù•Ò~ßvi7@j@Ҳθ'ÍòöåªøÛÐ^Ñ4kz`Ñ0y×¹iÀRÃæà2Ã;©t`‰’éÿI㈫­¥æ  q€[©Àòìy#¦ãº.¦-\žÉÅ`S·h¯±O¨êAZSŒ/‡w<Ëg¤6 ”YXZ'¢;»rŒÀ„&™€yùõ•]çÂ2f§jq… ›N¥ÊcvpeÔkö­fs$HC’¤fèôÇp[cëòé@Aì½N#…­FB£éÓ°‡Ïä¾^K•EkgÅ./ìpÇk-cy+·Oßéúû!ø$®M;ÆD‰ï¿Ëu¼³ÕèÏôëž² ÊÞ=³ŽÓgÌØîÜ€.N+OIðg Êj”fsŸÄõsÄ}š#«?ÞXÚŒÉì€ï˜+^LXu|Ÿü÷¶ÌSf†—×tqs³O*8ãŒu¬´EvgÛ*µ±´¹~®5HS}Œ6Ñõ6O¤¿ÎÆ{è95í4G¯¼0ló8ïux~Vãe;¼ ðÄáÓ<µÍçfg—§Áó‰Û¦ÇP˜•OŒÜÏM÷çÍÌÀJ*KÐÍÓ¨|ÂŒ{úgdHÎΦ•ûÚèßîÿëùù ð±aÝAkƒ`WÇóOÜäº}ñáz¡è¤J6Ã1­+Á‹¬`HmB· §¬”ÎJ†(2D &SÂbf]ÓÂb€ÉÌeZð´X:ÆYì[czH†<¢ˆA§N}“†ò>H®ODOtÔ>i]­ã¤«ëw>€ÚÅÎÕ´G¯ëJ·}RÎ\Oé~Oè#=Õž”7EÔí×I3s¥)ւÒ-G[jÈ*OÎZ^îíxª!¾:kW㪊xæ.õe×Þÿ× ð.?ž»ŸQjWÀÂóSj¡»9 nôé{ï®ÉëB® „'ÎzEÇÊ›…ŸˆŸŒ™´ÙºûUù‰eµp<ûÑÙ¸¦W¨?ûëMyÌ]»ëå¢a$SW2À›;Ý‚ @ÁÀ¡ü¿óœ*Ù…PkÇ«} pa¼ ÒIH H'áÂûTœ‰p&Â;!¿¾t5ÄRõ©FJùõD!p&KdÏ·à|Ûu‰hv¨ Yë¨éæï”ÎpMèkÛw$ÑÆÝ¯_s¬¸ ûÂ/Mç¶IV=ªkŸ:ä †–×!d!úq-6kcІ(:ïÊ4EÛGƒëáJ„Y/ÑAX»®y¨/Ò³)BÛùu´dšY›æ>÷ ¬Úí»"yóûŠVRÊr<Úšî€-€]Œ¨£o8‰:Æx€à3‚V]±îüR…`<7®[±€ÒãäÞumÛØð íÒ â“&ÌjlÎÓxz*;2vëj&âüDdÔÓ‹|Â{TTí4,6êt­ÉÍ-ñ†Þ®˜ž9êí€FH‘åhÚ6šä9u}Ñ*Ì;çü¼Í€…aXbfÛD K£œO5OÆÿžX<ÝW3… û§¦:«Ï¹Aÿ“¦í ×[›;ý¶e>KÒh\öHˆ½Nº1OtÁž|Æ™µwWuάFZ=Ñ¢ 霵C® Z` ¼ÖMãôºgFÀÒJäëî´÷¶ 44öHjBt2ù¼¦Võ²h;q_Í,…åcŽÇ„ƒ3‹‰\TÌ<rƒÓèd¦K+1D&|¿^¯ƒí»ÀG£ßÖ2ã»u$Ü}޼ ëw7þ•2“¸lÎZÚ`áí«'£lOÍ&<·•y¸Ç¼?‹kÞäÓÊqð‰ìÂ'ãÞބά¶]égí…6Ñʼnh §Ñì©äÇ¢E{öª+„£i›Œ<ÙJ½B<ÈGù¶†®ó‹– Ú•á¬Òþ‰­«„‡îI>ÀUýÚ¢ÔíèV;‚·„ 2ŽyµÈtïó:xõA¢ÿÐ3§“û!-KĬc¼bHy]IôOÉ…ªÒÒqa—ˆîÀDÏ&~œÃ¹ͳ™ŽØ'ÝËkÊ{lΠfdkÁÀªÁ¬U_ç* ŒÕtž§V’ð~¿ñ“Nœgª£«¦…Õ¬9ÎÁ+Ó/߉’ÿ½Ï„t*~NÁ÷©öï ‰òìy¾F¦®3%@~~òè_:oÑÊ SbÓáË<ˆ‡àƒVW Ì2Û¦"U&™%ŽZYCÚíß<*YÖEaærqP¼4¤j@&Â)VP(7Â~@uì ÚÖN»Mº|—&·À˜ŒÏ­Ó×lY'㶶¼Ð÷õCô&šÞ‚[]ì¥2ˇ“K} l ÔÓ„Å/Þ}Àbdñxc ­>׬ØòÖÇG"“„g' üiã¦íƯX¯³çéuÿžvÜŸ€K³óh6¸ÌvÉé“3y°­®©ºñèÌžÑIfàÉâ¼+q{Æî˜,k4º%-3ÞÓØlOvë²e©í“m1œ™é¯xEÆý¾ÒGÏ¿Íé>WëÇ|¢ø'ÅßøþÞß³ä•[à 4ÝYÃïò]·‰)ëÆåhpôT<ùI lëŽ]l]5yfÅõlìr&âÅðûsjåãeÔºéyLb´>b/z2Ó{–WHaÅLU ‹a AË?5àý3{½^9O9'ˆ‘q_GÀ+‹·÷]R^í®/g<*f¯*9‡¼LÇ.Kv‘{®éDÝiÈ].¤4Ý?»ú¬o°~ž?ipwâô³ ¦Qü~Ì[ùœuÜ}f 3Ëkv®ÁíùëiX­Øò+Ö×0,¯WjþN ¾všgVÒÖFç)Ëóg§ù=±,×Íá®ÿqCúe-Ö;&úž}¤GQ)ä-µ}¦ Ò¢…«›ó$™u¶f»OiŸh¸˜‚\÷vþ\¬Bd²vÛ¬_Ï„ T5ZÌ‚ ©Ú¸äe×R\°±n´0¢¬µÐ ÷K¦zs™íV®šE7àbÑ\ ž2 nˆýë×z‰ŠÛáÅ«¼)(e}•ü}i&õVN¨ÌpÅ[/»ç»ÖTÀ¢ãäq…W›Šé(;ÇüÊšùI|ì , ÀªUÓ¾¯uk±.ùgÈï2—Â~¡qÏ(ž3 ž0@VŒÕ•õòŠ2ÿGC2·ÒÐz¢õ´£»ë@®ÖÀ¶ÂÎáìOÿüÓÃ{ÈKî==U3ç©6™ÇŠ“ùÙ½[5ãžtPW&+«ÜÄ‹o;ÀËë¼–É/ŠêýQžæÿŸ¶·K’\×™ Yçk³YÑ<ô¢Æ¬4½Äé>U)˜I¤²î̹VVuó'B!‘ àp¸¯âVÒ »ë÷îÙn}Íb„ßÞŒ¿Í_Wku ¬¬Ë*+§4ŸàcLEŒßVØ+s!oŒiæŽ>Q½g1® Ï”àþ¾.ÝÏÇÚíf8ÄmÁ-‘‚¥V…1Úß_ƒd´q5;G·å{2PºqÍâþ+õù—?…é‘ß ¬·ÁâæÍ Æ­wå4³ÓH5©+»øG %Äø…Àv}LjàsnD'Ûߢ¦åÕOÏF †f®ï Z›Ý5-ôY£„E357{Hq&AS÷M"‚&7g0w Þ¹ëÝ{'¹1®÷jìÿ/ ˆfÚs#QfÔÞú‰ŒÐ¬Ù晜ýDSÐcp®Fg ÂY ïiMõ ô»îYáoŒrfÿOó£Nq&œ¹£c–9,dïa#oÞƒ½‘Ý3 ÌØ[ßz‡*3MçFgÊ›t… Ϻ±oº§«Ïô¦Cö‹í6YòîÑ(D?³ç\uSwÎQ­Æ×øÚ;ëãYðjÏs¡YÍ"·óðe¬Ï®óê¾×>cX®×™2+áû<«þUJÆ÷$ê“.AÊZg\—àûL¸NÍ€p^ ׉¬­EÙQ³@A䂤’ÅIUìçÛû’3v’›Éã±9ˆµŽ§U‡¿œ­¨hí6]¼+•Ä…¦çLEÈ.-7ÀD P \bN眛NB@T`Lb¨:S÷á¤UDþ±Gùó[RÈõù?ä~Ñ»ŽùbØ·XLjùû¶m*´×óìžÑú`v¼a xïiãwïÌæ,Ëÿ 0xÞŒ I}VÊu´ÄK°v »ÍûaÁ‚}ĽíJ®ÄÈǦћBw¦G3Š×ÿ `3cݽ-ðVëzÕ8ñØ-úBkÏûŒ²µ³~©7`sü¡…®G;V\>W+$½³Bß­·Ëcµf]Ñ]C±k@ÆcA>Ó˜5N=€'4c@oÇw@m[ì”Fê[]µ7ÚG+Ý«Ÿ¸WírÄÝúôöÊ›œë [κv+öý øݺWçÏ,÷óÆ;Ç}¹ËŸ=¡b/ÿß9~»kDñ¯vŽj5O‚i  Í€í…f,ÖÀåÀZOˆÜ×ÙB6@„¬±lÚ¦!˜¶”±SRd¶ë¼!dxu|¾">ŸÃ$qTž°E­™ËôœôiY!Ub‡F}^Tiž"ÆÎ`ðÉ´ð×)³´¬»îXH\ï9ö†$+y"^æw³ÚþÖ€|×P›Ë«üdÇlEæË÷mR&U—ÞUÞ°ÓøœÅ¾Ñ1Ôk€Ì=\·£ý³ÆÏ(°ßæ‘í>ša «s\³¦Ù8áÞ IDAT5¾ÞnÄ=Î,²g¬¨boúLœ}@âN†Ôñ_vKqmì©ËÝ1eOÍ;o@˜·³Á;ËÏ¿¯ŠÓÀ›÷Þ¨7ŒÌ™iDx{µQ½û]ó¸VÞ$]oîì`Ý=Fà*¥„ë*ÿ>]`«$-)ÿ¾1§Ì)ð’„ó;e–i`IH¬+TÑ{ä×Ì÷ùRà:+Y(3³Ôt¬Ô‘|€gç*Qc3•Ùgª¬!ë (‚12ŠkÅâ’å`g&¼¨hw8Vþ?3 N„h`dÑxbÍ®9‚ãí4SÁ¥TÁ&ŠÁ,P#Bßj_Dœ’ším^Ñ&íõÛ︲T °c²òÉzU—"sä°FŸVí˜bÖ+®*£±x:æhßç€Z×eŸaÀ%éd㞁»â1(|Ç2YìwtZí×ëÝæ‘JžßSÔÇâAõ}·ß ¨Ÿýy áý½»›¤è}ÇúN ÆwQ (–´lDJ1¡ú¿í>¶&!+g `é÷ŠáIÖ¤ƒh¯ûÖÒÏAîéÓ­ÛÝÞK`ímìã¸Ú?NùåhÊu³kDQ86ÅÁ*ñ}“‹¬\÷ã{¶zÿý{Dßs‹òºÈ# ÊÑ]5-ß0^Þæí±]ÁòF3ìÁXuÜ’w`ÆnÍš„ã½õ@œ‹éOØ «}¹»Ÿ­çö¹ŽÏÈèëñs;Ýš·¹ð ”kªÕgðÆv,Ü^£Ç6î˜[ãÈ ÈÝ|zzÜ´h~Ê$¯nõHW äQ¶`V0Žj7…˜À|“B²8ƒDYê‚GMÉFÿ3„€ƒ>Œã8___Ùuƒéc‘&k&ˆVà hÝbÉJ)€•‰Ì‡:’86€KžI…±?2ëÈœ¸ÇÑôûþ–)‰›éïI1¬ ^ƒ`×äÏ™KŸwö¬›ZºÌÞ˜@¼‰}ós°€[òÁè ¼ª'GWA/ÿykÖáMòxù÷ÌVç”÷¹<Æ[çv¼Ðkœe§@6oš­òÔ·¸Jüõu-TÑý ‘Œ~[¤ºE¹n I êH íµgÚÍkóÇñqs¹êíyZ:-ù¶«m,U­6ÎÞáÒŠ“›!É¢¬ë±Ù-Pãu¬WE„7»ºrYke¶Ì´·¹Až‰¸Ï¨ücñ4c™Í7®.íçíÂg¶+½ ¿I`=æ• °›nÕy^$h4Iý[ H—1¨L»ê2-¬ÌÀús^f7® MÔÉ P鎗DI’LJÔöâ%‚$Œ¤ÉXVjZZJÒt‹’×8SBY·R)ájÂçJ!H0få#8I£Á5¨¬ÓÄ5}(n+’ƒéq¥pwÇØ’©Í:n™i§v¿ˆ’u¬>ÜÆ‰PvA$8‡‹»H`ÏBÈ€/©v,¦µ ƒ?×xÈ}…òwJ7±; ôNÜVì¤"úrüª¡M|ˆhg‹R0¬ð„©3[Ø1ç{ð hÿÞ E¯ãКYö=Ÿ7ìW#dRŒ¢ÇçcÓµ 5ÀÙŒ XÊ V†Ô‘XFÖvkD¬æL™FN›<”³¡Õ0ØpÄK¡Ðís ÷‚Öc‚X:œã×:çœyD{¶ž¼$÷Íh¹wmnÉû¦Çjl¥ªÊN³=Ñûê X82=ǦS9w‹Ëï °š‰ó¶:"ž»$`Ž^á`ˆÐ£yÚæTDi×yi$Åøq™ó; pˆ´ÿÅÖï^Ò¿’'Øí­q\­ýzyÿ7̰7ì²ñóÏÖç›"qÔ›õ®o”Ùé3óˆÚÄËÖïÓ÷Wét›¼sÅØÑ)(µÒɪLÕÿÐ$¢ehykè¾cÍ“Rmãç¸oq±<4Pvb”Aœ(¯ 4F¦Ó3QÆ´9W1*ƒ‚B¥@t‘ó} âÁ¦¥  |ëwçÓ33÷ç[ LY¸ÝbZ$àëóÁ¯_bˆ1öqD[öÜ­ÓWîm¹ß1ÆêxYXaÌj@ÀGLªk‡ês,IWçBø±ûºÓ«½æŒ— ­´½úø$uœ´ÕŽ.f;½¸Y6²à½Ÿß`ŸaŒãXíì>]×õ¸6ïìãJqIôð¾Þ6ÚÃÕèö¬†•!Ïâ”ÒÔ½wÌ1½ë•”\©§UNPÎ…Q‹|Õ€˜¬»3(’&pFº• eMÕ–‚]m$ºî5š¶eVi¶6ƃÃÀ¤j7Újé„{§ÖÕΫÖ@)šBà  F`1× Ä gKwÊ£L¹x¹ô¡‘ð§JòU¼§kS)rmñRf˜ÜcZ~br³˜9›)ÒyÕçµÖÙ§ìŽ{$¹>>Í£_ƒ+HC[PG y\L¡8ˆÍ‡ohº7Ž(ô}GüÆ­ýÿs7In1ðÎA±ØŸ4·§ ÖÈ“‘ëá«j£‚çi •ˆוð}^æ4—€Kz™ÆejöyªNˆœ’ðû;áûω”ìÿ9ÍÕï;]ˆ1âÏï?`ŽH*ø¿ K ç)IK8/…ò/(%ˆZbdm€Ü;S†8kmÁZ<"ˆ‚(×"cËR¤gש°[sºðÏq€Ç{àZñë¿>w‡Oý´òœåNzˆ‘Úè6”ßã8pž'Ž__øóçOuÀ<Ó>L7KU2ðÃH‰pI!àRÂØ]×Q*"€YT3wP†ý~P€"AMÖ™cE$ÅM’+®Å|q\™WzŠXvzb’®ƒ-à?c9Ô$–´Ñ‹{&9Çqt€ØØ9Ë¢sØ[\H%Ùý¯±;¯u®ÅWr5 x8ë{ÌÂñóÏXåu=†ïck1-ibòïç”@¶Ú9æÖu3'K1R’é‘YI‡bÆFRˆ´+.B0F¼Èµ´kÖi]®¿ÃG «Ímz桽·`Ì säJÝ=…6ƒå>眧®ÿ¬Gà Èuv×h×cë5†ðàZV&!ÄàêV–sL¤ä[p5Z3ˆÙ˜a™@è¸%çAìÖy«3“÷h×iÉUKŽW„¨—Û˜¹kç);ÄÍ6Ž›®`X²ªVŽØ^3et¼¥<ÆñÙ±ØlŸeÁò0•Î5½g»_±a4÷>¤tÕüD²'S¼¯ vÄë¾åÀHéÌuK¨v5š¢×ÍÂEÒ0CÛh©ªÉ%ˆæÑÁ̰W*žv°FhЉ¡I!U²_ƒB5éZHÏÇcmö?·<(TSu?¬Ô,o8P™dV3„¬J ŠL‚ÈtïOŽvkŽ•] Ðôàˆ|B@„Õ‹\ üõ«˜hn†âQ7–} U«™r·°´„ÀŒÀŒH¹b´=É[$×P‚\vŽØºÎçÆ_:ìû;Îz{ª<§ÿTZ¹Š2zˆšÏ<÷p;öš›â ÐtOà¬ë"Z»;s=«¤ä.à(UÄý¹Õ4Ék“ãiª1Æ!ï\¾ëÑÖØ©)ĦZ?=æ4#˜æ±°Æ¾1žyKž#ôLä¼—%†c½6§8¿TŠ{y¨ÚË+#À‚cWòFÛÀA²‚鬯>¯ëî\Ÿ ÖÏ»ßßßõ:TÑ€£V1³Ç®ç,t¡}r¦„òžåb¶bÃ÷%£Õ¡÷Œ`IOŸÑæ] ÈIÅ^O––šÌ{‘õŠ}]W÷pÇŽÏÜ­l- ÷Fkc…ß‹‰— ®'òÙu`!÷qón½ÃZNˆy>â¹ ÍD=æÕ,qê>ï„>[’í”tHŒnä¼.|w"˜EÏ*åÃKŒ}u¥¬eu]8Ï .cL™s âû²ûñç[:p%…ãÏw‚’ ¥€„òË t¹Ç×ue&Ró5žpW¬=×!e WY€`k´ƒ+#ÆÂœ’r~Î,àÂø’,Ý…bγX§Táþ“‚sÜbE¨’ï÷u¦Ë¡>g·D¯ÃÞÖdt« ›ãÙ îŠl$hR+ƸSs€l!޶˜é÷.Ù§¡Ìùc?ŽÜŸ‹~¬²cÀtœÿù¥xçRºc#¬ÆË4áá¿è±ÎÆó¯íFØ;¬Ûz1Ãrû ßc ö%û…Km&vÕÙZi0ýÞŽ…Ò²µ€½#­çØJ‹ë)÷µô˜yŒŠÕ= ž›ÏؼEg`™A³Ù£ITW#ãs, Xùw ¶Œ m/ ´¢:=so$íVÕZËbÎDYS#ˆ82ªvz–ãÛìŸ}¶]÷vç2:2WŒro=Žž«gñF£nåô®£Í“F0l•/¾ã³Q}Åœë¨ñ”yä56G>br‹¿¨ž=ß ˜vš¸üÚaÒ˱w1ôÁÙ°gê3%¶¦U–gPîG»Ûæ 5&P§Ûóͨ]Ú0pV.‹=[í> nð üpÏê5˜J!Jî* œGÙÄ@$ ·æ†ú…šâ8ð9~¾>¿ÊŸ¯~}Pn` J‘ÜxކÖUiÐ@`{1YfebßÕMû|o~¯÷ÚÞ³ãðHpÖp[ÿÜnêRYu­™”_ç.Ïu:ÀÈÛû±™PðjºÈs¶ñ(Uä±¶F}º1þßI-¸ã—ëÚû®îÌ-½Õ°}#O4ÆÐÙÙ7‘^==si|®Qš~žB8YiÛ®ÆÌc`rƒnà0|è ¶Õ0É〜 5?Kwx•Q£Ç_]”id7Ô6€šQ–} ݽî€×±š'†ã(Ü>ù ÃõòHçëv-r»s,,Ò™˜fIÊÇoípb>Ïûæ?/Ù˜Xø¢Äâ&6E³MòõÝ%ëLÜZXEdýv™>™rqÈEJ»t$†pA” gºð œß'bø³ˆ×yY'M©SBÌÝú"ã½ü\#¡²$%3(™Ä¾¦„ªæh]¢,Þ®eOÆÊ¨Ñ<¦V‘zU‘ë!GZ˜Zu Drg4!3“¨Z„€ëÒI×}Ì2û(ä¢@)û,%pva${€’ˆœ’Äwp5wã,|ߎȧûrEoã¡P%7úÉ{ÃPt¢5ظù_ôŒ]¥çÁW:†4I$nqxÎq´½ßEÔ¿vN›„íç«´ý¡»U˜Xe^VEŽS0iMŸ61‘¶1r ¬-Æ${ö ß§Î’ü¾÷å>Á²N45߷ʾȚ[íxUw„š¥t®¬ýú›5v Þê|Û: Rz€P…Òj~Xìs¾¦óæÈJ{iæ’øÏao¼–ÙXZWß4èú§?ñËcì™ú²!5u|£‰ôŸê„xãÞÈÛL#du¶†Ÿ§·Îfɬ—ã욣«Øní¬4cVàñ\T?eVG‰Áš›&FX‰½™)ÙjÕIÃàóîÿ 8y;ò³ þ ò½þ“"Ï{ÿ8LpÆôÀé€5ûã¸Ï´ˆÊR­ºPF›Î9R>Á]çÀ™&ZÊzGpÕ k3ByÕ(mòú<Å›ý¥cžã½ðªŒÀɲð¬ $pQÍ0 ÷÷™b´Ñ@‚1ZÞ‡2ÂÖî&¡5*-Ÿ1âø‡ýùGˆyÜ th€Cíçƒ Þÿ?çI ~ÅX2í c  Kàêí9¶Sr†ø BYÔ ÖÌÜ‚¸æoF§gîïm¬šRϳqm8±jnì4=ò„Ç@\¹+ÐñÍÙ¼s×Ýé— ¹•\ÑôÚ‹{&lo½n c= Ûp¥•2ëË’Ù'‚ÚœR;Öh*×ÍæÅëY@Ï´lÞÖoÁ“™èyÆÍ¸ê2FÖsa Mý¹Òx¸·¬Û”–6ä³în ðíA@lä@µs©Z¹+í\#däžE™'\c„¤«ÑÉè‘çÔ¸JJYÏJªû 3#É=ªe\bÍKL°]1Ìq«1$ „ v™YăcÊ^-@iB`Blf÷)ga!'m|¸²H¼’î¥ýN]#·è§1+o`ãÊÌ5Ñ›…¨jÖÆª¨€a †Ô")s2“f`<'],J„K$„Y|aå*vc³à‚iB 0B¦†'Bä|ÝYë@¨.’.ånä®ë¬MâŒ<4Ÿ?ßS‡ç…w«4{¿$˜‚¥~XŽX§<Ñhòr¹Œ1΀‚‰Èy†Ìâð>Ù+‚¨³áÓú¾ç÷7,Z5K1·FÞ=)³€kÕY‡r`ü$†Ï4 fbÑ;Æe.„LW8­Þ`ãÙ~Iú(0&ÌÞ@›ü¬Ž±ø N‡ù­¶ãÛvìb¯šh;¤gþÓëµ®H«ñ xl;äÁ!Ü1‚Þ¬Ï4{(Î\¸v 7F;‹Ó«Âç'@¦w¯¼5jîÅ;;õ™ ýXKtàOxßìœ$¬ ÞUaì}þq ‰ñRÜ­ _….“;C›Iµ³bï‡Ñ÷µ°®æú}óKÜ$ —#2~}bfY)F+P‘ÍmºŒ£€É˜9€ãñ9|bÀ'²"f¹š2þ׎sÝŒ@Z: ³]·Çø¹å"Ð5U¯œ»SWï½Í5F†Üó’Y>0;gGæMï€wËfìÜQwM±Yœši\ÝãäçÔIyU·zBño¤ Æ?óÓÃ(¼Ÿñô;½˜´›¢z“—­Lqv ¨¼óÄàg9†–ùá*ï´3œ§#ˆ"‚.]èt,:iÇ•0”ßèR +GC/’˜ë|/á’Ñì_ï9cÏðEgª¸,YS«Í&­ ¡w¯éëÏ@0>0šv纂P'H:R}»YÓPãë ÌÀŠ8Ž‘"se{õã­×çŒRånLã×rî¢s3 «Õ‚¾ŸZž-Ô“š˜ø9û˜íè2vWuó ͘±¿w,¯pæÅšv„|vV{£³sÇ‹ƒ+ÐUsâíxýꜟ±¿VìÉ7,ã7à»™Pð’eï±áV÷lwí :]³œ­}¸røxÓ‰‚¶¨¨vºJc‡“Xo—…F£¢Ûl’ï7§c¯7ý›½C6W ¬ÙŸ= NŒ~rÏÇà‘ü3m„ùHãLãaf“ªþ|Í4`ìºÛ¦³§é{ Ó®)¯?q}2™lPºf½Pèu%(ZqQ®L£€í{ŠóºDq†„ÎK¾óz)Bî(jv»Ë‚J·Î–PÕà¡ìàQDÀ;P¨‰ð@*'-¡ð¦©ð œÝYœ÷oÌ]0RªcPÄ­£ÅÌHëAîuŸ¾‹1ÝÝ-ÊÀ•"&3‹HõsÝ6¬©AðS2aÕ멼¤hÐdà&d€Ê:·ÀwÖ׊¬àhbîšG°$KŸ¢‚äªW±ý&™]f÷\Q¬©Ë䮃=‹Ÿ]üšÚ»?ãçs_Kж€øühÒÚÛhÏ-ãžÞÚ;ÞÃ2^ÝCšíÏ«;‚íRkàMѵïþ»NÙWýkÒ#±“ŒY2ÒN³X?ÓšÙX{‰ïŒ6þv$¡u‹}>ÎÎõU‘éš^§Ü»}zÍ•ñóÏÛ½ÑÇVã©|½D_ËuM—{Wl’ól÷³«{îí•R®FP=Í1O·é¹—«l^41×NÒ´³Ý¬ñÕs{㪸rèš9 ¾TgÅO÷3/ Ø7¬’ÙÚ+.Œž¾^g0ûíפŸM´ksÊ\pˆ[Vá“¡§Ötabwëž°Õú3‰æBs¾óº€lã·æ@ÛÚ¨8PwÖ0³QRô€a{Ï¢ lb”¬y–­#© Ÿê^ pÅçˆø|;²å¹‘)b¨nÞˆ”Èsü©Ô¶÷¿µÖºuq¸?РqO༫µŸÚ’eýÍîû.V–¼Ñ¡òÈGu’«¾qŒ›kîãæ2MòÏöýVìŸÕ8ãøƒ?R8îÅÙù7Û~Ü Ýœ£ 㣞 Yž_½~·l¸ñÜ- âò÷Lt~6ýæ1œÛ†[$M“dËw}ºßPº„Ý6p£Hîî:n#,ªóÀhÜ È=¥/€ä!,7ÞþopoÄìÐ~úÔ´™#Ψì±7ÁbÜl­Íï½È1íðzÝÜ%EÉ[u•dá0Šü>Zr ãè‰p¥§V­Y³{_íP´Ÿ1;õ´ BU«NEÌÈ–Šø`¬§rß!‘+3 ²*©íçxÍcdÐØ"@"+ãûÏU…ê8£H&”nÇ&\IðõõUÅçqæƒM@P"pf]¸¨ˆéÊ.že@AÅÅ3Ó/‰«-‚Ñ«CvEQ±C=äÃ<»ƒE6 ¶1xBN—5Ëlz…¹v¸jw@‡#ïM.ŒK£½60ó Š™%zœõ¬˜ÙQ1š@q5MB™½"&]JẒŠ&PÊ6ΙÄ:Ÿ‚œTá<–Àݵ˜ _oÖzM+.Ì‚†ÉTþ.¶Û½˜aªn`¥Ÿ$w§CJịqöuÉ,TfcJ2°Úšý’ÙP!k¨Ý>6¦J9¹ì(D51f_oïqÞJ!çf`u?•øÝ2yÊ™ Ãë„.47€¿(Û¸G÷Ø`«!ò7MÊÞt“^Œ8ÞI©¨,õ wº‚¸@/¬n÷Zîâ·žNyÿ¸(dg#ˆÝÙÄÆ`“VK°ÕÄb{–u·8ŽçúKàÐsâ™W#ÐŽÌÚ‘2¿TÕ›1…UÁîë®t¹fÉ茱¶¡ô@ÈæÐèÀ4KøÇÁÎM±aVC»Žó¬¨yÃÈs /èt-í„Öo–¥þGzd3ðd,zòo5cÞ¸oŠ©òùgMÆ]#ø pºÚã»ßŸåÓ3€|tóÄLj®——X#³œ»’—¤o-É8ëØ¿åP·enpdy¡RDÑͦβ ôêç41zææ}t1²”f4ú@ýÄ`“ü¼)RVIÁ†Ðj:x  Œ³NÙ ¡½©}²LœWTü•éØŸ‰¬ö™³$k¶a[†“÷9ÚE? ¶[Á.ËñÇ•ø®»é†gqx½¶›Ô!gÑp­:X]HÍ8—h´¢ó:#~Çœ€(Àïßßø|þýþu¿Oh ¤¸H3sˆ4A“8B@ Ÿ®0ˆÙ2µÚ€gÑÈ1 XG49dmÈ„#B,GàÜáâ̱ÑÆ-²WöR¤±ëŒîŽ"ÉÖ^BHDHt»édwè,Н&$_°˜² ¹ƒZ´ ˆÉv¿.%êm IDAT’ED j3ÒLËž[fÊÙ|µý¶Ý_,±„;PÕ¶: v¿$&‚)SüýøÕðãÛdäõ9¶;ŒÖ’<öÐ8Õ²ÇÆñÛ„§HsÇØ5c‹Ž#ˆ#+¤Æ1(Ö.{¦ÑžA1‚GïwTñÙØËš -‹ ]âì±IÖ…œ¸š7«x72 fla/¡Ž¤uJnÔÇ4mÙ²sfþJŸÈcyݽÙ:›½~›„ ªYG²Œµ]Ú‘ÑÑž¯…yU®{ÔÿY&-ì±æ<1ë'ócxEÊŒuÕ=Û…¨úllr%ü<®çö^z…O1[&ßL[Ðo~­ØI·Æè\ Þo ««q:>Ï3ë<úºa«æä›ÿö,Îy åœ3—Ìñ¾Œ®žíg¬’ Nn½“ñbò,O÷4^Ƶ)"@êA°2ëÝÏecÕ‰­"Ò4†èá¾WÏo ºjº¨z½,šõù’vtW «lGd»ý¹ÔØŒcÙ­^ÁX0ÕÍ¢}b•RÂyžö5&\Ik§u&„R};%;xP@J Îo…3Ø¿Ï é2`ëû÷‰?ç7Ò%¸Dq„Øï@yͤ”ìð§öþ‡:h÷÷¯_¿ éÄu]8Ž£Š÷‡Høú,Ý—#X"òÁl#* ÜPµÇP@’ã8Î 1F$1qÅ>ø÷ÏoÀçó*áýû¯±°Žhc”Pè•L$”»lÀu]æ¶È B@RAJ7pJ̸ÒoéRœçišàLH—âÏu!ð‘wÈØb¢ïe-œÉÆ !?¿¬%À%°÷ƒ¹ÈIÖàJ¢Ùæ™pÖ"3daxyt0ºu]ì®óým5Æ< IíÁ»}É4Ý¿H- a[Ì;Ó4íŠÜb€á{â3î‘é.>Ëmû=cÆÍþ9.Ž‘ÅÂz–(½hOº7þ›ï½Iún`yýÚ3ñXà¶Îœj@:.W÷kèsDxϱA1oa<ìtyv6óm²R,ʽ.éœq1‚9^'tÖ€Ùšµ‘Ö?ÂL„V:ÀªÄÖr]WƒÏèûuÞ›Ôxß»®ë²û°ÍÛF@d3 ‘ðuDü¯¯ˆÿúçƒ_Ÿˆ€¾~á¿ýó"‡šÏ‚#ŽãS'/úq°Ìðˆe}§ÌX²3ñ8Ž<Å 8>w¼tŸU)9G¹,zõ{áQÇâðcÖ²ºHôǹÉ»‡Ì Ī’l÷æ[†í›¦Å¸¯*@8!H¬4ò¬¾»ÍžUól¼ÎH¼ÔÔº×o:s©,¾ëº8L¹¶òõÏëˆYîB°úrÃ~2œ:{–뵺5‘:ÔÞûnÍ(¹ |‰/q560vѪ'RÄmgs¢;$W³ø ýþ|BXRè×*4=$ßXKû÷¡¿Ðq‘­FV¬ƒ˜ÄNØ+z¼knÁ¹4trƹðv ´ lç&0Ó ØÙ»{ÀR› ´©·.ºà; jÞ}zv›Ã#Á4fS.< yÌí¸/ò¬ä•ÙKÆÔ HÁ«?Ipò(¾BûßO˜ oÏ1à××x6sž@ &ct*Íš¬S:uª¶±~k@½€fìYp|¢Ë¢'ÒŽ¹2?‡óþg‚Þ~mË™H¯âÀŽ ;‹³ºv–ïÍ€¦À5^‹§W9sW^½—×€ëëÓk¥•›ßŒU¨™yFk𳓻iÏÀ·Âí^þÒ^‹Õjëøß‚_Ñ’@¼s©½ãÒšÏèF+"`y#+-k¶±LãÂÖ¶MÙ ›%ŸÄÔ%ºýøBò)øyE«K’¿!ߨÕïœj|ê1O]íÖ‡M;X¾hîÌêT·t¿–Æ»¢ÎÆëÞ0ÌÚ <»ç«`8«V´Í]²3ÎÄ΋pí:o^¶Óð(Þ‘¨BéyÞ›gÎY ½øÉ•ƒ%;rE˜I$3Q)Îtá¿Åb°4³e—ýü•øø÷ωÙrW‚1²Þ‚\Z©ÌµSF¦ƒEªˆL€$Z7 fÛb×îW¬ã+€Jªº9ÝáA ØLrF™Hgfp\Wßcïh¶ÉII‘²šªW2öYŒ|Ÿ—󆃹^v?(k$‰@S[„sS?8愬çD®ºu&ö®†¶«JlÔ0äØ%É•³D(.G$ÓZK“ÌÆl)3HÏóD‚€s1p©BåÙ®ºC@3 múA!Žtæ<» QG‰ÚqNp•}Ù:è’H¶1H9_‚Xóàa‡s‹®—µM戃›ßjg0ÔŒX–(HhGÄõÖý¸¡.\ƒÓM#ïu¿Ž£ô&)øO«ûŒb›òËgÀ‘´÷‹€ÞÙçóíúòͳŽ^^á€!ÍKVÔC—`oD³‘6_HÒhf °Ø83Rû.·(\ÅÕ¼ÖžI±ÙªçKuÙ,ý¢ÙWôŠåÝúhïìg}ÜòçóG/}ï5­H¯™6º`ïoÉ,/‹ã1ùœL«Ns  Í@-O§sÕÀê³ï­ž×,š€Ëé ™3¿uDÞ¿Ÿ†&£>ºìÏëj?/‚oÖ÷Ž!´¦nÒ.Žt÷©#¬Ã¸g 1+öfÏh,2½á¹J—u]ãË aB$h£‚Ùºà™ÈraS¡ÏÐWz<÷[iI«† éì Ö]¯q'®qº¯KÚs²ä«Ö¦­@wn‡xA+9P˜AÔœçÄTóæ X±‚H²“ŸåŸ!ç)&cܤìZL’ݘ™l LÃósü:coýú0¾>j}ã8L2reݧܹ®÷äÐmJVÀ++ÊV”d)2½Úv¢É_·Xöc"U¢‡âÎ\«öœÊ«\eÆÄÛK4MÙÐÕ«5g$uÏ‚ŸÔ‡o³æÞLÖâ  Ö2H 7 ÅÄ`b$4ÂÑKi3a6²Ãw °36½÷ügæ8ÞºiÇ™[ÍÉ”b—ݹ9\›ÌFÁÇ‘gï,Ù5jg×U¬ë¦$PžܛΪ—0½6ÊB) iFScæJ~C5öÀ«!õ;xiªÑÚ«HõS¬îïº÷;=‰¼²+%\3±¼·.‹L~=ËmÏùcç˜è}>MåmàñšÛäÇ£·Ò ïœJ/7#. p4Òyšˆ:¤K¬Ks– þ¾¡¸‚Ð}_W-…c¯­ˆßäÁ³u´s3ßþl„}Ç,ô↿ƚœvhÐ×ßçÕë[<0‰É@ZaN+8PÕ(-VÄZ›jø±™Þ ÉÑ›N “â8ŸƒâˆŒ¯ƒðë+ÞàÕ' uN=JŽN©¯vÂ"d#¤@Œ„4wuÎI@öA*êÆ·½½æ5"F-)˜0‹y+3 ÷ŒxÁÝ^<𘣾«¯.“»8<®ÿUÃÈ‹ 3 Ï×ùç&Ïx{öÏLMfnáãŸYý?[·£|Ì›üÇ»Ÿãý[‘…¼{•Ø:é¹K*E*Oó¿‹S†ÞZ$•íA´UÅ%âì°u¹ ×cÁH™§®Ã3ºd°H2t£ž‹™ ¯mŽ}ô›±ÎûË×H;Ý!ÆSW¦ôìjßÕö r' cwIw#]Ïcáµ×3KàÞnbÀGG:é8Ïûv<Çë>SÅEÔª©Š2.É 1Nµ$Lë~1V Qþ,!@H;i9t‹Kªž0Ý[¹Ñ9«kXžæ…RýµO¢BY’MX˜u° ÁJà⮦c‡§O¾9#ØtkyÜdÒ»Û .×òÚëcW¿+±‰–ö½³â`×õ ôRDÓ õƒ†ŒÏÈš]_z°¶žŸõŒ!lS§]2ˆåw²1û?\*BéF–u[F2 ‚€ö™yŸsÅVy6V͈ö|º_C—Åð,ñõ4°f îjDµ¶V ÄlÿyyÌJ”y¥VâÇxn÷"É- $†’ÓÈ´ Y¡sÖû¼Q8ëט·ˆ“é­RÊn~Ôû™“é™’QpíwˆrÞ#1â`m?>_GÀׇñõ‰ø:¬ébg\®å˜s.a,ýšï³ßÄ/u‰¾ßâï­N˜±(C§ fþáRzW&'³÷œÚ+€þ§‰ŸÓxÀð8Ö¶‹ùoÙRo+oš³o_Óï¼ûÛå›&¬'KÓças&ÜnŒßˆfyˆ—ÌÈ5;™¨–ŵj†µ.½ÓF hÚÔ0RE¯á5‚Zñ ø0"­žÎªã1mÚßí+½n„èUÙl3N½Îxªæßºü½éˆí7Œ?OûĶï"Ò”ƒÖ½§b‹ ¯âY˜Ñ>Gí)šQS=7‰Y×ÉÓ"ñ6›G™\QV=Úø˜èˆH-Àgº3Ó•»‡É{‡ºÙ ­©”¬8À|³©®”ÁU8ž8q!R°ÿÛÄ)xðGR7¶¥<×hFàÉ¢å!Ø,—•¡!”ƒóD4]vðŽ]õ® S¨ž‘® YcàÏŸ?P5ÁBêH¡Ýw_ü¶ ´e …^ŸÓ·HÆèÒ\ Çl±la‚ 0r 4JU@¬ˆ |è0ñý"Î^BMX4ƒUÜt4Xrá¦6×v!¬+a6ÏLŽWJ€E$•¥wM:$-%ßÁ-U7µù7Út¡ù¡¶ŠqEn×1ĸ pû#×6VÕ$îN ëXÀ´ùW#@oˆ]‚×ê ý„Àõ7¸¿)w,\¯ µb*Õµˆ2 ]c"9kei)©±v÷u¦måÚ¼‚£[býÚB¢5ñ˜uw çÙYû†)è%‰Þÿª;¿+<‘ú7çãŠ)·ÒÍœ4c××Ìž­ó¹yƒ<šY­ØŠÑ4d3ñóÙºÛT3`gsf¹×î^¬t–¬4¿®Ù³|£¹ò†QäåwoDügz‡cqõ¦A:^ǬXœí“ŸÆl!õÌUß1,îqKœ€;=iÛóvõŒã YÑûwäŠn›þŒLnbp7âãf–MÇͤw[¼É@nè¥þýf3¡ãö ˆ™–1ÆÌO²wʨÑä€a¶a½jLv"íOqý±Ø½ç¥½ 6&¸c¢12ÀÜ â Ñ^ߺ·ý›Õƒî½‹+˽ښd’õxô¡ïSÖÓÙ¬BELo) 7ªÀ„‹ŒeTõ×>ÿ|p)Ùn9)‹7Žyl.w13£È€%®E"‚p0ˆÐ%ˆ#Æå¢˜ÊsP¤Šn“(„~¶&Œ`ú×u™»(3„Î 60›;Þ¿¿C•ðùõ…À„ÿýðõÏ/œ® ðhÏ*ÆX“%fÊŒ+ª¬£”ò³ÈšY!ØHžm2e¤`,Ðâ`Çy™p 8¿-ÉQ&|#¡_h€ée%d‡`å¾±Dm- ËÔ4ù掚»–@îdL pLvS@ã´›Þçqô’¦þg#’$¤Aó(ë 3¿î$õ_t¤þæë™tý«T+I3’Ö$¼9TR9óÞôL‹ VäNf¢¹ÔO™ÛD|wÛñ½¿hñF–2þæ¿·@É[`î‘C‘ÞÈ `ô.¥1˜6–é¹*~}}ðëÃøõ‰8 0 ñ0}Óã-Û™i…ÙÑÊ3Œ{¢u‚µ÷£|h»GéÄÆ¡äžP§9fµäª³+îg«øºŠgoFîÞ6r¼úóo™S³³ÎÐßœ¿­â°›5m}Ëô¾c±<l¶Í¤FÐey½<ß¼ñêÕ{Ž"íohã>K*›üÒ3VDÜg¢ñkn0'•ÍÏ™í'`ð©ôAŒA̰‰Ê­¯À̸.Y.ÂYâöܰ;ÄyngÛodÝÜÏ>A áï ›5>ìÖ…`D3íú}QLOcÊ£¸Ç[œö|®eGÛ+BgÂòmw×C½yæó<Éa{O ¨Uï%ÓôyšíêpÏ£9ýÆ#"3s¡œÌkÉ áhÀ@º B` ‚€p0g !"„ßgBâ€ãP¤ðûü¶{|p„É nqê3§çúßïÇçƒ,!Ì é2P(S¨å2¡N‚š.¸J²h0‰U­"DŽæbLg ôJ8;+óìH#÷ûóïo”å]øÇÑ”] ûr>¸Up€³ˆ{Y—u m^‹-½Ê dBqê æÃŒ&²¶XqTµä%ï24\¦³% #(¿–¨šHÀ) LœÅãQmèùIî=X`;°Dª˜äy;ÊJòDw¢\×|¥ïûlЇv,l´;ʸv@'0ê|´dXüq­@lŸ`¤ï7½,zS‘õÚL N|Öhú †­KÒò7AYÉ t™#­ÿ?OšÞ ó÷[ëy6¯Ç˜Þˆ§>ÎÜ ÐO:ò³¬ý™+'`³h–岿CR(àXþNEL·Äù2J(C‘¬`c…$€Ø©Ä™q—”2 fTuXUé¾^~N$™\J~}%y¼~ÏÌ€2Ôö£¹¶ê’!²|Þè}ÌÌbƆÔ,AmÏÙŽQ™ã}Œ<-nFÛc£ŒÝS02cÚ¦bŒ)¥NWÒszô@(A6²Z–~=ãšg6æ+ãg(yâÌ¡kÖ™ž1¹Vl‚U‘8þ{á¼囿òuÉ2¦Œ¯÷x¶›øã™¼Ï{S ÏÌ7VE÷¸/f,‰Ùèl·çõÏš³¸£ $H£­„桳ê{)OÁð2þ¯Ô7žÌ¬ìt]ã›dêdu`ÍáoêŒIˆ¸¯n!óB(DmâW›3ßµN~-FÕ¿ I/ü:Ž€ë›Y7‹M¶èe‚WǾ>#cê“ÚXe Pc£ˆ ¥Ü3HMòÂ:«ã ·C \spO–«Rï;[‡«óy¬wWâëµVÚŒÀí홄ÎLÉs ~Ó8›­Ë– 0ÖnaãÍÄÍài—¯XQ=£ñÙ”5”G ³·:]³Øc Ír’±!0êÚ¶æ8»\ÅË#F|à©Q*nŽSó$Óñ@{ígžÔuÿóüwõÀL;<ÇÎò|ÎTÝŸ­ã2,F¤)µÙ’ÏAã…£ÛM™¹”ï×g$äR/w÷ã-Ú½LLè yóª?y¯K¶š'ž×1ÑÃòwØF¥|íº.\×…ã8j72FÓ®2vÐ{êj y%¹Q•ÌÞ¹*C§nøŒ¥dº "‚ï+áüó+åo2áÏi…Mª£xíhc(dðœC à`DÕÁ¦-Ú ’RãZ„,Í‘/ÁRvÝM±‘kWJøóç×iENL skdVÔä†2%`½×VÛŠvD*4|n×{vuþ]Àóò\ f€SS||d€•uñµƒ ÀÕB’Æx´uj 4A622pÇ&6ÆŸíÖáŸ*pžã\+ ò†½i¦Å(ähòˆ Sßjaò€~ÔïÁrl«ÐÜ¿?²`ŸnÄ7s¹Äʼ†5;£HN¨5Sš×Uf™NTÈyžÉmäx„”å=G`Ä`Ò1>!àøø?þëƒÏpG0v×çÈN°øiº®9£•ÜòRBRÂq| 0¹ oŒˆÑ²ÌöýB¦yïi£ÕLWí°€Gü/Ï¥ß÷¨u[çÎFóv#Ï;ó“YËwo LJýô ;@—n·wÞCSéO2f<_ˤŒ鵫Ï<`¤;'&S=+RHÉËÆ’«ÆÏ3±=ÊÕʳÇøþþvI%îy¦üXW+ý,OL¿¬åSÛÉ·™âuÝød]’ÜûN`7_¹¯‰oÖÊzvçŠr¡CògÖËÞ&™ ÖíFÞõytê±åipí6èø`f¨éL0v5³ê߸ÿlE>º×ÆŸP#Ê(] ñþ­Ü%ç­¹€ÝJÃaç‚0ë¶_k“Ó•þ×ð›Ñ‘ûàpÏø«–ÎT¨‰OµmÏÀÃÉyc§€€@¿Ö rAˆM; ÙN¹ü ḯ-ë2in%ŠŽ3@E¨RÍ  ;'épHÄJQ§ÌFPº“{hÂçc‚ñ‘—–š¢Ý—ØÀ%ˆ`"×ä%€2#ÉÞ+äq4Uè°`–ëƒêï$âjæPži RG¤+ÏçLV‹*˜Ø„éoJ€âÊÀv„,16‘¸TmD® D&bÚÔÜ 2ÙØ©6Œ¦V&O´Oø £ÕØa¨ &+Ö1¸Í¡czÚ^§Çc#•$Z+€ƒ:jPéŪզº}.-3"é…Ñâ›2àgŸÏœ8 Ä › Fb…„è$y’²7qNZÛx.Š !è DáZ5‘™+Öœ¯‹W àû5l½¿‰¹ÿ‰Péê?YµûP”ÇJmn4«°ÕkàxdhÀ´ë‚;®ý[rGd£ºD1‹r˰×+ y}Uª{é~"É9û½‘ÃT»üÞýCfÌE²¢ç{# +Ý Ù¸ âi‚ý“®ûOÀ«öþŒ K›ø®ôØZøYnÙ~o6†7>‡Ÿº;¯r¸±™56>gB]4Æ‚'M\”g9êh¢ÛøhžÍIÞh®§Iµb1¬ò휕Õ3£à2 Æÿ¼ë÷×4×frØ y¡¦Zt'C•m¸ãšþ€´cØËëþ=Õ5ÒõùQÅ“‡©"} #;»¯PYVª)|­Œ+®Æ?e4ÑXµ!˜þMÈÆR·¦¡épçŒ`Úë DVÄ ø„¯ƒqDBˆ@ds1 Ÿ`ÀønP8¥„ª©Ï%€¸Nõ”¼„+°`÷§\ Ë ‹î‚òpë^—aëz•;ÌjПÖQ+PklàxñËÓptÏBìbñÞáïÝç¡åHÞ¸úêžÓ‹s¤rîû¹w6-;ÑcIì)ÔôH?ãÙtëHÒGxÞ1ÁÆüd&4{ÎþcZçôп޶£Y³håŠÐ&'+0£1œ%;m’3£Ý¯tš* à#³ÝѾüopDOj\ƒ¯ßY¤Üåñb“ø‹…¬Q^£tBm·$ü¡¢æ\“ÄO ŠxY}%ëä™û¡B²~„9çPe©ØÏ(´&‰Ö™Œ”p^W7ßÌ2Ü $×õ›ã£4WºcJéܤÌJkã¬VÀ$ÇÆt6 “Ô±SE/ 9£ï„(ŸûC: *Rïh"h;XÜ3#Ñ»þí "íF~ÁÎÞnã/©ùöþ¨Ó#^eÄ4F ÚWÏx*Õb ØS %iÕƒ?­ÆÉûqÄÇk‹“¤Íb¯öZ+Ðàmü•Æi‘º‘ìîuÆ3ºl‚W=†&™ä»`T¨ÿ.F FÖãs‘ô#:l/M‚âFÛýÕ^Rï2v§e´V]†Q["LH+¶Êî¬Þ‰ÜÖŸáAŽ $¥L·.N»órÍQYº™Õìç­ÄÀŠ¡å ¯>çPñrH™M x?3m¨qï"g1®4.¤~¿½}·î! ÄSÁæ ò7£ÖÏß!ŒÆ¡¤Ë›ûº-»¿ßNmô.}3àù ÍHë„a2m:—<)7Ðn0ÆËƒß9™{{j9‰@~“?Ëäfd\nAÞËê¸ãA…¹Ùº¸öã‚­ÙÊl<:±uVt£Œ ™1è>¯m Ð@"d4³Óå¬ÎÓ² bfÄ|¾"þù|Ìyðˆ8‚fuÓª:8˜{4Yü,Âí…9o@Úm¾c™Ö?àâ cè6¸.ÏF^¾ïr¶9–·<µ7€——Íê£7ÍŒU3Â[7˜7FÉfzU×퀺5)d~–­\`wû|vOÆXç1_Çxþd–éƒT12½<-ÏiÈ#À,µM†öª®÷ç ŒÀ tÚ‹4ÏŠ=gSÒ‹¸ï¨ˆ3 `¯ÓèÙ,ÏnÒê=Z ¡PÑÊ÷= ì•«ˆT½µóEĦVy-’uÐgZ\«ÄlfÙÙÒw";°e—Üz×û&A~[äì‚¥gý“NìH§œÍ‘¯Ü›fsÖym°ýgót%)¯— )Ô‘<é1 ‚,V.H l”K­d¶¤—í5Îb3šj`GÖ¾Df •—2ÂX¨ª1H02Æ J8Ï”“}'ðç !Ó¼¿¿íw¿ŽÆÞ•šl!Xѵ„ˆÕZ šÙRí䚆 `ÀT˜ ì‰ææÈ÷øá•G2Á”™[G9¿”²›¡BbÀy™FCÈã‡AJ„‹Í%§tWY‘GB‹ˆ(ewCB(Âð™AÇ šP³ÂØ\…Ae¶‘&`œæö‘:p(€ÙF¦¤hAAH ÄSì8‚ñ“`Ëâ%ŽK£}}é 4×e†0-XWTæ'`¿Žû·»ãê÷­pþ:"˜‘ ŸÀ8"p|~¾>Ѭ` –‰º“5àºäÁìèšÒLí+ÍBÞzÉœ‡–Òöù·{’_8ÇkÇcD¾fK&˜ÕºÞ×V®á}}°r%ÔåÞ¿uáü{¶º¿3âÂc¿lôªf5íè¢9û¹Ýól›8­¬Áìlž½çVËk‘Cï"c>±#ÌÀ¬Àš­ßöçã(Ê9£f¸µO…7:L#ÅlŒWÚ›$¹] &ª¥%øò“ à`OC˜¼W/d²À¹mâBŽÕ=yËpÚ‰i.Gc&Â…o‹ŸY±6C~gÅ󛎢ëD¸1ã¼g0sϪ‹*TÄÆÏÄÀ™r0[",ÂL`echÒtüF½®šVA*,™Øwé_”Ç$ÏJç 8¿/Ócá4áœtm„¦Ûgì-ÉâÜ„ Z™gÒÐ ºçN7ðS4|$R0 NÄ´ÈTg&6M%¶GIÀÊêJ ÍE2Iéð’Ÿüs {>ø2¶pe&š° ‘MT߀Æ<™?+“‰ªÚh4ÙgL– Z,c¥fN<0$ŒU`?ßw»‹ðý-k eÀÌ\)µ±œ~îÙIò•?kŒ6æ(â‰@kÕ $¶÷¤ÒÐŒH»ÂüÇÜÈ\NŠý¬ÙžEnIyÓ-×.®†ÛGÑöI3ƪ"•âL¤ƒ—°ôØÈè:1µanù ˆ  7m œ]¡þ7À×Ûÿö ê¼àܪŠKÒ¶)Ó2°MgÅaPoÄd1^S‰Gj«ÅÓʪL"sÃD¡ž‘´9CÚ¦Ôƒ­Ý¬.LʼwAdN´ ƒÑöšéêÙ&_æíÙè1í=×È™&çŒÙ´:w‹Îä(q3ŒÎ!ßÄÐjÿ``ÿ“<÷†raî1•ŒéºÎ¼ŽøNöâ'Õ²üoÖËG4˜z´¬¨Ð8¦u9“³< TsÖÔ.÷žÕ§4"âyô»eôµ¨ï˜ÿ§ŠÚ¸ï1d§ˆK¨ÆÑñel.ã‹Et 8±`¢Œc„!¯»·Àà,øIÒçž·m!ªû󝯷 ;êo <¯×GW€Ò¼«9vG½Šà$ŽcüŸŸI&þ;¯Þ4e<×̸d(ÎmÖg:ÅMlYwìOx6B0ÍhEÞg Ë+`×áÙòoYð^Ãj÷lW™7–::0{‰üN£u¶ÿÆêªÙ§Ð-KÈ“Q(²-þéåQ31èÕ3è¼ Y Ï$a6¼b$Ìmã±i–»;”?ª…~RxçÜP<@ùÚ` ]ì7fu!…‘Ur…!Šg§AÍìúr¢Xžz;ÚñCI6ñ(Œ/*"è‰#2¾Æ×‡ñÏWÄ'mY´=Øhßú 2 Z\¥iºÖjþ"Uƒ­Ûhk¯¿¶ËÙ;æ^˜©¼zÆëMv ‚™›ÝŒ¸²Ïžx|M@­ß2¸½ëôbÄîžÎÎ8/&ðp®½9{ï7}Á”ü½¼N‘×Ýb}3ß»Ó:)ßo,¦W¯»bb­®É+€TÅí´ ôÊ}í ðêÀKOݼM,«bÒ¥Ú¢òùOIž˜‹x;go¯p L+Óä9 ‚m4°ukœk¢¯Ô3™˜3€5ßÅ#Õà͹€2GNÅb_|eˆSH´rròÎŒø9ª–V·ÆD³`¼T[éº&È4ÀÁºiƒ%/¡q{ äŠ QìþžbÀ™f7Èpq`©éE1A„ŒUu˜‹`ak‰(Žp¥|]ÅýJ" UÂy|ºýnZYwâË ÀBæ\$—š†3eÍ'@j79ÿݧd ô½î Çc <•÷‡Û‰VУÓR¡ÐìRÃÌ•áÖ®ŸHÒ  VòÜå’DAXÜ⫦Ÿ”»}â9%ñ8l¶ë¶îAöv^G2PÓ[í1»@¨Õk¹»ÕŠž V^·Ä¡z}•íÕ3Ü<æÀý.ñ#k€­“‡éS€KõG%ßb’ß`–ØmEP¤–èf¾(õ¯Uc-÷—yÎÑbøÐ<¥FŠ1×vó¶™^äc|k8§ºëÖÞUŒ³“hg›ŽÖq™žÀ¨¶û¬1~i¤ˆˆ² ²hÕ«¿_Î9P ÞÙtøg6×]gΆ]axÎNBÏDU ¬L(­œ«¯¬ 8m»›k=USs ¶ª«fêªPðoë9Æt3ç ]Ž*yÄilŒö÷–—`Þ.¿J•„Øä¡°¬É[£@`eˆ¤ì²K]lQÌt§ÐéÙÍDÜ[87,tkÚKÌšíöýö=ÈmÊÌsç7 èwöO–w à1ò1/ÀüÑÎþç Ü.±]k?3™«3a—âÑ!Ìe .UÈ¥µÑ4ËV`H!Ÿ#žûñÈ´+£Úíš|kBb.±:eyf<õg„Ì0ÄÙ³}|ÿÛ…ÚÏsƳaŒIÒ´°Ÿ5Mû=ÆSAÚŸ®ÿ7ÝúöÙÀ`ÕŒ+ùI»†Ú¦å%iª·9NxÝþÙ¦Çâr ¢Óœ¹eW”¯—b¦œû—Ê2ô±Þçy2-ùqOG[øžÉ!+³ü}¡atÆGËÚĶøßÕ1«5õÖÉúo m/ŸlשI Ügá³›ÀܸTw Ù½¶µºËÐØÔNŽ¥:÷‘˜ée—½"2–ReaÕÐ Ž D Š#2>‘pDàë`|“Ó8Lë*N_G¬ þ˜›ú믕0¸#g³˜ìŒ&.œíÄÙ3Ø1lÞÆ©‘E<^[K~¢1ÜÖÒ;Í«ÙÞ^ÿ´%H>?ŽWîËoµ)ßæ++·îÌίw,Èõõ÷µ*MÝà9ã3÷þ=c1ØŠ7":Ãk¼ÑýÂtdæ.ÿ™1åfØLù¼+FV=ßh’þÏÿñßu†¤zø™ \[i´¤îÀ“$QÀòÛ½eÇ´nÇôi¯¿ %À—cfû\âÙ†¹_­ÙQ‚ôxPÇAƒ¬è>´?[‚íØÕ#²Âs•üÞxoZhúÌDËáæ•å=žˆÜŒß%À)¹Ï§AØt“Êf+¯YÆ=áºÕºoïI輤ћm_‡Aî:¿ÔTí}½îG@˜td]±Yt³4»²Ý)Ü©9©÷Uh¸ä&‚™ccq"¢¼ÆûØÁàÉAj —ÒÝ}L)uñ¤ˆÉ š²Ã]e å JeèÞë¦82ž’pž§‰®sÌâ —,JIñ.HB#T0~Ÿß¸®Ñ[Pþº®¼nŠ`š\©$šö÷UÍìæª÷ç6‡Á‘­@·ˆ»r} "™µ±´ÄÐÂ8Ë£¥ &¬%tÇÅt)ÎÔ<½õ¦ÊuifX•6&Ž!|_ç´ 0³'¶Kí¼í^ ë‰Ðô>˜Ÿ™IU šŸéœ^@ï ð *åçz/ïÙ²7Æu»ÅçstÆãZd1~ 4n¸+ðÎÆ· Ž·@Ö›Îä4€,Ù ³œÝhÎ[€"ÒÚäd§a´{ý¹ùI¾û“Èxÿçç³LÏú±i1®}¯)³k:õŸSð‰½hò˜—3¶=¿Æ3pùÊ™Z¾çém•}¶ë{çž7"ãj¥5îMÏÕzåÔ:²”ûûEÛh5"JîØ]ëFû|Oíò—²VJZIŒŸï»‰uÞÏx£*]ü™C÷šå%@¶{Ö«”Õ>Xų6öì€~kâ% /õO÷Ùé9Ž\Fò+¿m`öN½©«£4uzØïêà†¦ÙU°¸rÕo*l¬¢K*"ˆ1 †1Æq„ÌüJDÙIZ²ãñý:±êd“>0ðùD|Æ'2~}Yvûϯˆ~}ð‰ÆŽúÓ^ Ñ4¶B8Ž¿ÿ³ÝoŽ¡æû!„š§23>ŸOÍûÿùõ ÌFÄø|>ÕÍA[²¬Ï¶IVþMbÿ¹û gòë³ò-sÊ# ìVodz¬‰ÞŠqk6Ujë¹§VW‘€9ü¼l*k³VñÉ"|Öað_êß³š½º©ùLå|h1[wG¯ëzॡ/"à#>›½¥9p]b4/k^ÞTœ­¿¢aµñÊ8cætØm!„Šx†"‚ÏçWÍ\6Yè׈™Oq÷9zm5®¯—RB€•{Îßüç!„;æÑjî·Ýø^pùÉØÚlTì­xûJX~ìºÝBÉä²Û¼$`ŦjÇV pYÄ3kp¯kþFCaÔ~ŠNÏP[Occ÷~Þý·×P—‚èiq´Æý±+ffbÃSšéf ²è0ŒÝÐñà™1ÂnsGà872‰xX¿TçQž3ÛcÂÅÃAã?À’[d» Ζ}÷†Î;¥Zœq»’†x<š¬-Tz’l¾ж#B(Î}„ðëSÁ£óºrR¢ød YÙ„KCŒ¤H°ñ@%à××?¸$È£ !‚H4àG ו™QQ3ÓJ )äûU'ÎàQfŽ^&øN\W#ØŸõÌ ¨ j£•!DÊ>f\Ížº®ËÆI4»*2,9Ì£’š® .Q1qw>1Øø¤´£lÖaѪÑ6K~xЕ«k{Xë#€EÜ¿Nâ „YйS(o]Ñ.:‘ÍÏ‚¦°{·lüX¿ªg€Îú™à6b< §Ÿ¼ÏÄŸþ§þÌÚÿ/ÿ½q~ÃìšÅø¿¹†û=¹2Vzëó–ÌÇÄJâØÆè•Š÷ÙçîÇ›ôÖ)KeÇ– ˆY§öÍ8Ë*˜uÁW ê™S•›‡‘¯ØæZ.@­kæâj-$É4¯m@ïgºó¹ѽÑFú>GÀ`y î÷h]ýnä©(FM¿›Æu|Ю)Lõ®öõ$»qµœÇ33´¿ec½9»vëo¶~\1ö×£|ºÔgŠƒTIe÷-4‹gº^oÏ­G®¹pÔÅ™`Ü4Y=Íãó@Ì6õöÿHZðð‡–eí5ªH»®ÝqG–ç`:b^cfÕ¼ñÎÍxÉ"õ4L»Ÿ& oDºW½J íªSΚ-”Ù#)%³—/U®6"º^wùñÿ›÷+úZþÒ‡­éc±Ö×å>Ü{ñ´3¹Ô‰¸ÝŒ‘[G«¬eÓ*óäŠô }—CÃ^ªïРΨ߀EѬP 39òõa¸oùïUô%t#:¥p¼|ÅÕóh¬º™‰ž}M~8"¹ê@<€‰…÷Š)öæðxgP4„n.‚>¸õY]ת \Ì ¤g7ÓÊúB IDAT§}ÿ´p’l×m÷3D@˜ˆ>6Œ»²?Fkk¯ê?kë2Œ,Ç®ã®<‘±çxp„èU“ξ§P:*í¡“ºÝ.-€ùÿ%ï]’$Ive1Ì<²ú ÷Dáˆ;zÂ7óFÜà=]n°¿ÃÌ=«ªÏ;BVKIvVFF¸›ÛP(TAg©º{ |Ìz¦Z‰KÃA@™Ye.„¥ÐÜD¦õ#HÈ DBnók÷þN§¹õ)²À;#Å–¤œ+°%¢™•“™Zb@à'™¦Sél稇qªTÆé¦1„ø,Y•2ߤ¸º™t‘íkG!ظÌAQF¹€M0Mé;TÁ Ì*÷Õé0É ‚²¿KÞÍ.JšªNŒ}á©:§®¶’ÖD his!,ÿƒ£!#5×L(WÝŸË9E®#Ó±kúb… 72Ýhk©~÷'<ý\áMwŸr»ç+푬¨yðïßýCÏØ«ýë÷_UÅ' HÆÏiïWÀÉ ²µ ?u†íš‹ÁHYƒÍÉ´\s¸5lÒAGlcĺg—¾rU;èb¼v~^W„ÝGJçtOýçØ~½l ÖÏUCmN€êÞÔT}œKlŽÄR˜EOVáâÂŽ¢i…¯Ú l#êÂS±ér?Ó3Ð9¾ó Û×u™¯‘䲨JËImeÚ¬¿^r¸S™¡:F‰/oý;Ã%ª Ñ4H{Η! -Ž€ÕE°›EoŠ)Ÿù:hkÖ;ë€Ä^»«¸r6Å!4§ÏjC³kqfWi:­‹9º3»( ›Z!V{EÂ×W´AVÓ¾z5í«;8˜Æ)S[Û5î¢nËìâÏ@–,‡`zVÅAÚbl+@2åkËÛè3÷1ÁEs“59_´¡¾^ Úˆ7F]¿SàY¶~S»Í»~_Poöf€‡§n¥Ý´®pU{‘œ”Ýg­di<°¯8f®4¯¼¶¿9ôÌT†|§sa½ËÏv<^Qg&Âx ÜJì½>ÃS¦k8óš >(™ó…¤¦å!gw¨ç¨™G+[UófV’׿¹b>ÝéÜÑú¡¾{‘ÇHZiCÝé²Ýôÿh ^Çl­Ç´ªê¬˜l³ÞÞqea³J÷®-ý™Œ.ûˆŸÌÅíY=€5ßÓü³]2¶ÓHñ\¬¼VÕ:线χìe}}3¡ôæˆxeêÑœïö¿Ex}Åå<- Ž·-‹¤kýƒú–±CÒØ?³icçŠä’×>é4ý²€JpX"’”5`DAhºOJàƒ!0¦Óyšk“ÍIàçù¨µ™|c² Ç[uœ8Sg*.½¤´ÀrfzIV— zÚ_!Ö”ºRDfp´öF=³½X¹°Á \£@H šh$Q H’™tí{ÖÀ`…ùU(¤YûÛ Ês¡ÝÎÿËϺu“EîgÆ„·O¯€i%Ïi ‰=;3IÑx$Wïâ.xœ5îXOÝj÷ÏïÖÿë®5èwïÁSî]öï·¯2£²"VúG«ßŸÛý¼Ó+&]‹š…Ÿ±Œç¼ý¸V`7f1«Ák-¸ÃCà®63›ž´‹±¿ëè·c{xÏÅϳOïñgÚŒç= ½— Ev‚£›ßóÁ©5ãkdOé„¶}G¤ý»{áNûwÇÀº+¨Îë—/2ì¶w†Ì:JòÀvdªˆ¬SÞcŠa^qäÌm°Õ¥P;F³fk“,†žÁ窅@à@xÅhzW«öU`Á+FüxE‘qКuÐÍ™ÛÏúýFDðõõesVlãÚÛ& ìlÝ4¼xˆëŸ1²há·/€ïb‚?yŽÞ¹È¯Îþòn¿«óÝ9‹Æ9Øæ§wöÌípkwé½Ù—'0k@íÆd‡ƒxÅ-ïºV]>eœVWw®»ÞÞ>³¥Z ¢í¥+Á;og†•×ÜG+€²ÞkºjdöÎÉwãWê÷wæÎÝe•dxwí^°lv,™6€ÇÀqïE} «‹&ùÚÑ+.YskÌ”æÀ£ÿ—¶¥^ghœÌņÖÐæëêiˆó$±k{f¡¹Š]¹ÍÌ"´+mÜÓe ¿TwZ©V®~o×Âè9O…ýnƒk*AàܪgšC"©Š¨Sg×)9ð‹¹ŠD¹IúP„xtf-¦E‹H™ï3§á’ð÷k‡úòd÷•ÕðgO•}«ÉÄ+pO*Ë U̸ŸwEÂ*‰™Ã^¯×¢µÏ‚§í¾Ï^‚j¬ ðS·z6i¡Ð¦é<âÁ`£°*ë^©<&—äC`ç„Ù!‰ ž¶þ}´ù&€ô4¾ø§À¬‹ ùNƒHÇç 7àÞ Ñ…Q3°|6"þwœÓÀr©ÉSÕ  ³,²ó®Ø¶jŸ+Ë«gÔƒ©òÑ»m?诵²•:Ï>Û™£Ói@¬ ëy­ð˜MÝ¿unxš78ÏTäš ¢10¥ï,&nßó6A, ËÕ=öñ`?¦=3¬ŒUÛi^Qç,©Ù³›ÚÚ1±vÚ§®i—çӟǹÐÒ–öl¯RP V+nÕE´~³=f¨jÓhù@¾Få8_§ýgºXšã'`8[ª‹5IÍúsªSZçž±es‰µg\f@«|®® ÎñQ •M˜ÁZtíýÈ•ÝõzEÄ|”u¨¨ ·áÀWðŠÙZlÓà‹<©Œ¸^{/äï9mù/G„l„ò¸â3wÚÑ= xÉ1û=dÉöóÜšï¦Ö®¸ôä¬~Ò1õd~ïr³Ýµ¨gèN=ðdÎÿWcSöµ]ñèÎxlUØ÷öµ¹ ÓëŽàÓèb»Ó–\ ʯrû»Mÿ^Ud]ÙÝzë;û»7¾~;¦?ž÷…§äo.-„OØ6+öÌÜã¿ê\±‰æ àõˆ>9 væ‰5ß#ƒnõ/vôൖ„.ƒöñ~tk#}WM^ §{ÿî½Goë¾ßõÏö½Ðò¼™ìPÖº·©^žqq_-àY;ÆÓ {b9ºBÅWóh—œèULjÉŒ|$¯®Ã«À[‚ã‹X®ªãwm˜¤‹*?&(ñö/B¾¥ËNû}…}ýýþJ L -á`f|½^8SÂyJe&EÓŒZcD„Ï)¹W†coTÍaQ)àC’B$ £?”²{b­X0‚˜8+8àdA A#AR…à“))˜Í.=×*ó¼ifC©µ² ‚¡ ư@83¸(kƒħƒµc‰U±sk-èÎY4}˜_ù…sJaºy{f¿¯se5Ìjntý33 ®ñ<êÛ¼ ëª2v¡ Õ·H\Y`c @.ƒsÏν×\%{OöÛ§…­ïèlý.€õ'Åå·ñ4AXýìîl»sÍ}¿œCVóÕµì:÷ŠŽ—Wô›MN¼{+±ð©ë¸§ßhÛºcv߉¸Ïš¬3ËÃK"VÏqþ3çØkœÝk íes'„W!÷ôP¶Eˇšpô§Øˆwîõº×í2òÛàÕª¨üð\ªâÎÍ|~63€».„9yµ×Hýfðй2»˜úÏ—êòZÚåj}”Jq\²L~FÕœz}EÄhÓ 2ð:Gø:?¾’Baäqm},’ æ‚ÚôÛzfiY§æÆÈæàAªR´³¿ü ‚ijŸï¶ª€µb´ìØS¿ ^­´ Ÿœ‘3 bw-"‚ƒ{ù÷íÀÏ\mµ'y€Õü¹»g=Ç™"RMÖæÏ[ ¡Ï-è½dŽÕ³§÷¼s­7)óÚ=wºe:Y2{:]³âjœîŠiRõ”7g¤¨¸l­6ÏØЯ2ÂyW5ÝmÒwIÉJ„pþÝBëôl½ äIÓí­;naD‰k3YlЕä®K„YsÅkÖd²ŸÉ#‹ÐUâTÄ”\ßLѼ ´w•¶•`Oœ§\×]»ê,çÑñWsun½ôÈ,Tw­€ò¹ßÍ­r^+G¿h›SDK'à“5Žò¿‡É¶»ÚX‹_ÕQG´fL ƪuÓãX޶ÕåÍlsž5Û«åòÞèTÙUA]Ÿ¢=P74¾Ú—ë!˜›`M’Õµ°~æ¢seMµ«Îùs z¯"çU²§¶‹ÌšZRc¢ÑÈ„ðT¤ÿ(ô®Ã9Öþßku˜µ±CÀö¹¼§I ÊDé ¼»˜ÖKnÝ£'1ö¡pS˜¦•ŸÖSÓ^Ø´ë?«´¯5Vz »à;kyŒkBÓLüƒmÏOœKË<X·™1kÒ‹/Êääì¨<»V‡,ÖŽ©Ó¥gÀ Eœ<4 ¶çB :íÈÏ1$3ÓÙ¥·ðÄ£±¢"¾¾^8àˆ„˜Á¤#ë]ÅÛú¸êEd†.¢„$V»"® Ópqf1"sFŒd:XGŒ5ÇYz<æ÷OâWŠM/X/ùàÝ<^9Å=2Ÿže«ócåŠ|W`™ÿÝËßKׯ ˜?•2XZ0ž®,?iŠ1ÔVkGa©ûþ~ýÞ[¯Áïí›SÊUµ`öÊ*F“??bí¸j‹ÙS¾Nâ­¾ÍF™ …”’QÊcn-;çç'bxAI 8#iùjÉYÉôË ;.×dµ%ì©:Y [ÎÁ~Ü:*˜[ÀQ Øç&¨Ìxü¾|nÿµ^íaã‹odF—Æ©‚ uS~x¢ß¶äûº&O·ïØ ï~æY‘×yˆ” …k´—ôû)“nY+sE['Ix”È]Ù›-þ”ŒæÌ@+˜X' úîõåçå+˜Úþ~&$5‘Ý»çãYœ?ï±Åzó¾¦^5ÐPÓ*ß›~—íµå{Eê \ž²+q÷'€Ö¨œ3q ™Œ«‘×÷@hä5Sl·–ª¶¬c”ÐÇÿT¢.)ãm…·¸T}ÔKLÏ£þN$®Žµc®‘™NÔÞóàÛí¯¯çù“fF²-¸£+•9œÒЄ#dwbMøñ:pÅ눈‘Èr¶?¾ðטÎüz[Ï1Ƭ“E Qp¸¤{°ãóùäß Í51&14ö¢£U€“¢õzý¨y^Ÿ‹AÛïιCyû½ø™çºÛöõ#DÀÙ±FçÜØËO¼ü«ÄíP¥µÙ°l^—5äåÓ×ÜJöÐeÞv]LéÜ1vŸ¯ªó¬zIùR $9ïsŠ™ÙÔÇråoߊºÓ¢ú|>ˆ1Öçðù|j^Wº/úxª\Cyþ¶¦tIÜ0 ÚñwùãŽ<¯f† ‡–îÎÏ2Î3I¥ÏÝæœtÃp¼Üù;Ç×óç–×Ç;ý¥þðœ+ Àà¡Ã3øô„ÎíU W4ÊYíÇÛZµ †ÇÙéHÅ8¢«^€´c¸Õ~¢í=LwäVꨳrŸï§¦3ð5¿ïŒ`ÏÁí¼9¯Ü¼VÌ#Qê@+²\QhŒ`ÀÜž8»i¶g&[ ˆÕýõ챕³ÞÜ~èm=HãU¼~ä‘A–•;Ý rÚwú„Þ«€ìªˆ^µ˜Sšúž¹kX "z¬/¾n=x*†Õ6‘”«c©" …Éæ±¯¼ùíÑfí*˜l –Ú÷œ«q¥Â@®¾[Ï£«µ¾5@%®í¥å#d†‡ˆX@óaH_½BÄy Âa™6ýˆ¹ÍÒXaüu@YL”C´N H2}1öïPKg«×ZÀ ‚²€Íû©‰ÄÓ™…Ø™s»!@ÑZ()—Ø™›Øsqhüd§"áN ILÀ2“òÚ¦ÜRPô6Ê´`T‡€ÌÕ´ÈÁ>”.çÊXÏí¦ž¸:I®hJ5! ò¼£âP²ö b£^eM²ø½VŽD?ÿk‚[½F®@VÖ½F üïe,ßgù2% f¦a†'²j,•,·×lI²¡²Í (*ó9LŸÏ™ñÖ ;ŠÃxÿÕ=·SóŠðŸáŽøŸòçNãÓ‹۹ђ¶'ïíÃî™B´e8mÏ@¾ ¼0[« uÀdfOõNÕâÝ_>J¨€ÃhÀx*qYžØ¢ Í”(Â3¦ã.Ž*×'ùkÊ[×£¯¸šþßö°ò}f΢9üÏÙoßyÝª—ç³ïºGïµ½Kó ¨u¼|¹ àUa@56Ï$³ŸkèGVÁó¡óB†¶öZàålYÌÒÀ+bà|ÿHÀ!Ÿ£Ùô%„"Ë j1)SeR1ŒF „WdÄ!áD „ÀŒ¢j…¹H<4sÜÜ zÂÂãÌŒÙ<§‘ ¸ }næ™5•øf£ÃZìü–g-ÞOt WÚB«¹ÿ~¿—6ã{h-*×ÊZ··/ñzZ·+í¿ñ÷õÚ•|[;áukù¼¶Ã­ÖîÜáÓëήöMôŸæà…ÕãqV_g¦ÖÈ|\»éµüp¯UÝ3'ïŠê«3²'Sô„”Rhöp“•ÆV¯½såõ½g:çÉ+¶òyó\«v±Uõ织“ç^³s%ô„o—죮ÎKŽ=Üë&£Kí®Ù…gu “iGßÑëÝ$XoÚô ¼>ߊp§óQPw|©hy×ç ,Ï÷í-þ |U £ìç­Vgý;€©'½¢îÜ,VAò,¢9S6gÛn}y•îU‹æ¨Çòó„§û v6{óh¥òÚ¹º áÌNº»y Ï›4-€©z-P~^]Áaº]WÍÆvãÒ Ç…³V d˼l_¦oEb€Sø:pž'Bø²yÿë å`•œÈø|NÄãe\_ŠÏ[3(“+yÉ, ФÑZ ÕÄà1”»€ƒ ?UjÒwd(iØgFv7 ©8) [òeHnk¤”ˆç pvˤRùMvÏÌZ»1˜, ˆ13¿r¢Úœ™Ú30í,­ã=Ók.ÅCÊÚm—B»'îÜE ã’)c­YÌŸF ’Ûd¬¿g¥‚ù°=¢P±ó‹ÍÍL2E`f¢¬×c´Òavšµà7½k«åì~*Õ!µO®ëÀ×CiëËÀæê\™]®<§¦K¢ý ÇnïÿˆtoÃø[€ÒÀôË̯ÍÙp÷ÃØÒý9…EŒb,.º¶pu¬“$Y§±ºÊf:hH­î¡¸µÍIŠ÷ü¼V³U|µ“Z˜ÙsÀî°vgëNóê÷æ2=Z?«Ù¯|îwæ¦ÛQ1TžFæ-)!© ù“kà.Ú÷ò>)—o;¯™ y6GZl³ÚÂ2*û(WWÁ±À6íÇ¥HX 2€g½fis«,E?‹7¬ÍÏöa.EšÂBÉmzÄŠ12Dúå&z‚³#ÁC.<…@xÅh® ã8"^‡1£ @2&×¹!XM÷±2—ÄbÐâ Ì Á™ºü^¬×™.Èúbàš¬ž¡ãÍë9—¸v¥zÞÏósïïòºd¯€–þo)€=ÑÆô÷p~@´kÔ-ƒ·sÛ¾§®ÑÛUcðJÐÎõ;nö«¶^¯hRZwgµ ÔM9éê™Ë‚BÜw°õ,¤yžÍÄ™°HS²ƒ~ëü¹3†Y^+BNz@žØ”âÎaÐkÿ™?hn!ÄMb8ƒXžHå³* u´ïúôÄ©cÕNW&åç󹹦µ@ý äÌ–Ô=ýÎ Lv:`=€µ €wΫ öIÐ ¨vlµ@|Óøwž´1Ðm«èzC’[ty÷ìvÕ™y¶ ¼VºT;±Of†œéîŒeºÐ”gq½>ÑØƒÁäT¡Ö_Õ‹Úˆ=w·\ÛSFÖðžÝ°;x¾“Ü­¼ÕýÌÚ® ·J{‘Q­L¨… ÿóý6`J?x‡¾!à<2-¢¿ÿõ6º²0â!§€ã¿éÝDÙÕÄÌ£Z-–ˆð>m¿:™*¥p7ű!^ ¤@ ÜXÔ²,œ~BÌQ”l?Of˜m»3['4|Ó“üÍÂÉ"šµS´ŠOqÈ l'ü\ƲìdRØ%„QHxœÏTÛl‡$¡çûÔÀ¡|fŸˆ\õÿúàÜÛc½–®bGí @~â›èît&éøy8ë[‡@uÀ´ `MCÞÎÉ[kwŒ]ËàŸpAü§XQ|úӟ믻$h<×wVçwÉ”çŒ÷ÔV~–1ðZìWÀ”·¯æßc —<==ƒz³AØžö¸içµ°}áÓ|w¿¿ \=vD]èT«K÷µ}üþäZ›NægPo.ãvBÐô\2*úÌ.Ú\SÙŸ‡ý¥Qûà IDATÉa°7Ên~å¬*ÎD©ÎƒÚ±Í!pÖ%hʶöFùޝ£«­L„À‚@G¾^_ˆ,ˆ±ˆ³bÌ`V¤ÚšXâÖQ{ö"–=­Á¢‘²³aid•‹ôE)Ì®Œ8àå¸w½Ð=°±óçéyè»Cž0w̨¾â;kŽ™¶ÀÛŽÜâŠC·`Ъlw­»"À¼ß>Ñ9öÎŽ][ÝîóWZÖåù¦´—¦)Úªûn¾ÛsûõuÛñ2½gi¯ýÕâD¿¬ÎóÙÉqžwqp¡q„×gržãæ°n›ß£Gwn^°3^ƒ.?s×^ÕŠYXcÅEÅôŠÙ¤0 ˆ€®¢g+»åU…Î{ý÷„UÂQ¸•Ôt›[4W×6£ãwÁÏu1ú“·Ž/«+$7>;UÀÚYs÷ßj[…«×÷Ÿ7÷a÷ë«Úœçô̘òþz½ã«u¥åÝÏåþ[QÊD­ª©»µ¹cMô,*÷PÉ•…cÁêúNûƒìì@.oKkûwf›qfb…`Tak™þb·~b@xÄ\|ç,6õ/3!DB< üzGf^Ùˆ¬8ª°z›f#ü ɵ1-ŽÁ-²2«ºØ,lšÆ™dñùžE#ûj–ÔèÏfÉ1˪€93hVæa«¿H¬@¨9W[i\­bлÂé*?º¡¶…cø…§&3—®É1sÑÞëôSªdÉ5÷¢*3á Í\ nN¼#'¬ØGþüÇF«ç¼sIÜ';L¥íŸ~n|”æâ궨ø¹c G-ã=¸u‚µv³ñ&ÜŽR¾b\ìÜÑziçÒ°«¶yLœ#e@ʇ\Ìü°<ý‡U;åd~vTõÈ·€yÌžQ»éUßç œx´ìXt^5ÓcâíPë¨7o¢ˆä‰Ôõ¯±çZ¶‹¾O¿¿æ¹ýÐ[“ºPD^±¯¼Ÿ­˜_«ƒî T_ƒû¶Ý0¨>„®·ÝÚû$!Ûíw»kmÝÙeRî@-¯‡½½®éV´ù¤–EÑÅnVç÷¸Æîc ©$dƒwÅE¯È«PßãvÌ ï³¼xðÙ3¾àÀ‹¸y‚éùún%ýi+ï?ÒÂû¤žC ANî÷˜'Ô%Ãê^ؽ¹—™#.Ì­Ø5A˜’yÌ9”7çóIÀ¡µº·\ÃØ¿L†ZÛU½:}+€ÙÄÑñ­ÝïRæ 8"Sn $s<^5!Â׋qd­À¨ÀÝÁa#¸‚Üý¸Œ×,Ú3¨EVã"Ö>³­&«×òÖ>sØ2 Ÿj{NáwgÞÖã,ó³Sv{–{âÁä¶ChÎÍ0„Uî5°ïØ9+£(˜c¤"¢¾ŠõW ÿ;ÄgnüóàÔ0ðû Àc6jÇöªû[§MµL˜ò•zÓÕÜ#6ºDrnÒ>¯‚He#¥¶²zÝ­Ê2¢Üî<™} ‹Á.‰_·OZ²fjÒUýÇý}'`ßQ?ÌÜo ;·Õ¯ ÒêL½×¶½¬_ÐcÐkÕÂû'[w·E@'fêØ¦]g{ÆSÙwf †±À˜UšÏˆK+`¾6pÙµÕìÅú+;ŠÛ*ɨ}Eó3ë“ø£‡jà„Æv†ägaÿÏlœõ°Š!ׂ<çÖsÍ5­I›ÄÊùìdÁ+8"á?^ÇXÁ/ÂL¸óoìµ8ó)'*TÌ8¦gR2‘xä–ÇȲö•RÖøêì܃=k‡Ý¶Á2§b,  Åî:μ×f¬çW·SiEÓu+‘±ëd™Ùcókfgòå..ÿn‹˜=¿ÑPàô_á+à©ÿ½¾µlÅ’ó´£æÎ ¸ó è®cÔò/¼Gü&¿ˆÉðLö*›m#_røÝ£V9õJ ÚúV,,ª0»®ª¾xøâvR÷;Û ›I³jM[!nwÕ@OÔý)o§ÇÕ]áfŒ~ƒ#"$ù¸.|sb;ƒ"OÅù¼‰5\OàËÙi˜•K9ÏÓžíäæ8·†Î‹ÅKÚgaÒ2«gí^ØÞï¼ïÚJGa=Þ2ÃÊ=Ì:Rëëð¶‹çhZQAWB|ýóñï}k::mÚ+êæ¯T`½Ö×y~xÀ×|ø$вR´²ç1^íOÄÚ{ÕÜ ÜSÄŸ2¿f ·i'ùU·cµÓ¥”CÄ¿òž-"8b„êÌŸÏǪ­Èš ‡­Ó”òxãCŽ\ég+àÜšš]ÿ„!!4ø”€óœÉØ©B@øŠ8hkWµö´ŸSqOœ-•ãTØô1RbœÉ€ DBS pLk&H‚Ö¶£l@IRÛϊݽ Vö™ ¨sÖðÑ\Ý™@ÈÎ1{×~v9ë8pÚêºÉí.Çq¸ë§U4yËéÞë¼x(ägæïcŒÑ™Í t–g4; Ä-C± ¾Ê³Øèè{êø1 (ÿvá?Zá÷dO~Ë„îäªK_÷ž u—õígß§¿ìßÐÚ®z7½&šaù±ÖʎͰÒÑXïÎç{@зÇB÷1£÷üÿIÍ·?©ÇvÇùÎî˜ ´i÷W^ì¨ÕmNÀ ÔOuß:Aßr5Ät¢]+|4†Paʆ|f'k äbB&‰‚æph åßåœPÕŽ,ÉyJhú˜K2…zÝ‘ðAúÁ+k$Â+2^!FB Á×ëÀ+FÁŠ/Ö^ØÎ°UêZm3ðB:%ÆY´9FcZåkU0y¼ûùnÎÃ빯€ìÏÀù9T "ðVƒÑ+N­º‰vEO¬Z@Hi Ø\/×úeyf£ñ»ë¾Yêrat„² V¬4À.¹x—Ÿ{qvpõk³]CºüÛœ»ì÷’½ùÜÍã9Æç /s©]Q}G8Ø1ªú1ž1U‹ä_/¼ßg^·‚ã8ðyŸHjÚW|²°!”Â(’JþÎ@`ŽP!¼ßo€9S”™b&R›Tq„€˜QGAú˜«bYsC‹3 éAT1 AñùìMHÔ&{Ñótž¹RÜö0ÕûëçÂÐú<»K-†ú½(®@©ò,Ûù'$ °yÐ;6µ5ÚÎÏwª ®Y3{³˜Ä”ù{Y_ ýÈ•ËÛ°70€ú€í¹ Êvгˆü¾P=IÌ¿+BÿÔep‚\À›@zZ¹~?¾æ•F௰̾£CµÔ¾Ä?×¢úyðô÷W{ëOÿ)žù:çk¿“q“ü‰.s²0•B™fÖxn‡ÍcF ©‰¥;ù½g¿ô¦¸2*Fæw+.±›i}ŠµÏ¡ggBa*c§“X1¢\Q@ äòƒrƺµ(lï±íó‘!_Gv)<¯ì(øŠ„ãˆx¬‚¯4ø:œï7¾¾¾òžÏÕ&¥Éñ\½ötVÐÊ ±bŒù5„”>ø¯¯H)!0ãëëÀçóÁq•y¯5Îαj·ñƒ®@/°(yÖP°ìr!¯üDn¥G{…p<1*@᪥®Ì«þœn.†¯íùw•IîûÔk‘”Í‚æN™™TГ"v&T}ÜÞÇ+˜fùgZ>‹™áç±ixÖ^7†§‹]¾ÿ|>—ûe&°$Ž03Þï·»gÍ8ͪK&é¾v%¯³#txÅý·éÇ&¯Ë³óØ>/™Ÿeìô]"é-À0‘wmC»…¼Ò0òÀ´]·Ͼ‚û`®?ÔúÅÞWÙ"ò3ª83}fðj^d«Ö¶8ß öÆ,ÆèNŒU¥±=¹ Šv̤ú{r/Ü]¬U²åº]l˜M+j¢·Þ»ç:3_×®ŠHŽUïê>æk® ¬Øƒ¸é”x­(ÈÞF6WnæžìÝ5yy©4®6P¦ê%¤«ŠÒàÖT*.óÁÊ{Soßx’ ôgï:.Ïv±ÏU£LÛ^ÄÈQùçM£B:à‹‹N95ÑT „…V—C¿UDÞI‡ÔŒû¢„QÔZ »ªZJ„Oj4—È%c] µµO…"p áüŽøx±Ÿ__!'¹„SçYÄbÆ;Yg³>VK~ 8k‚A­OÈZ!¹•RÛo"±r”ÛãYçdíze¾*L'ì`æem Ò°ò³U]U@áÓåAËs Ìƒ9°¾syÛ¶hÏÛp=ê;UvÚ4î+ù+ʺ"A¹µA¹mY("õZ¸Ýy1ïO«ökµÑß`Ý&é ¦ÑSàäW®ÿÔëç}ÿ)Qù?qmߋսü'ë«ÑÔÖùŸø§gQyºuß]7+ÇA ›öDZ¦vøË^„•ÌXl¨$ᘦu¡‚Ä@(}¤ˆÑ@έÔÌ™M–[êætKè5¸xp›¦ì4Cv ,íÝ)!Å‘A«WdˆÙqðÇ!zÚu†€# Æ‘œ 3"ñ[õ@1†6ÂÂ<#²˜%DBÈïóg”÷“NdŸroWÄŸ€kx·GïÚ®Öùþ@úDköN¿¨ÏS<­&U5·Þµ=Ñ-¾Û[wlÃdzúÃ^¾°cºÍ&mW¦]p÷…ÂZ±ÕVùÊõÿ÷X«ü¬¼G-º.˜=ýÜÃVϺKWú”+=°‘`r^~Þã&µ ¾`ÂÅ'³m›s {Ç¡Á%¬G§êEɤûºZðßfŸ“ЈRDrï*¤£ýdëÚÝã…îˆÑ‰ºÄº¯U•çb0ô`wl°ñÞ¸"ÄÞâX%ìíûœxã\,~¾¸Ýµiº,%îB wžÑ6 [Q'w"+¶’'¾¹ï[Øv`Ùj}5 ¸×ÕkjÌó·§Åö,,ï× tyï;Ç¢µ@ýLaõAOC@(ÎV¤9ÐnÏß*àõÉLJ HDí‘îÌÕK09íaÕÕ²×Íjëƒ{ wý4ë‘5-Gs’Ò¦÷@ECͳ´×”³®t€–3J{KsU,Ýï j—l)R Çq-,ަ¯E³ $™ˆÚ¶…¢?Ï– \´¶ê^MpƒÐþGÊãÏ5Ò'좸ÿq`ÆÌñÓ7?¡‘Û+¸K¸þݬ¡Çgþ ê?`»eÐaߢ¿*V÷ZOý:œçM‹ÓdXŸ£æÕlç¹Ø9ÅéMÛ¨På5Ö4£0ôr̯}kÛu;ažÜ±ËY$ù=‚ÖX!K BslMUO7d ‰Ä CÝ*ò!Ú~Ídn¾"ɶš¬ÕUî+ƒeV™ ÅŠÈ@Œ_!’põqàÖRxE<šØ€+Œñja„©_@?v EÓ*6p¬¾žË#cˆ5§{ei…êR)”åÊ|²"„×4ÿ$ç"qÍ™™{MG¶N/‡~bhõ@›Ï¯áÀÓúº{?<±3Uë?¯'mÌgê—¬tˆgIqÈ2^ÝáUAof¸¥”:v]È(=e¾îÞ€`u-34›‚Í Ž—[¯»°š Â܆×ô}sW¼[tntŒÝ£Â-€ö…Ò»;®ÛÕ…¬ÚžV¯vÂcÞ$ôÄΞZòÞ±`¼ªï×u@õÖ™âÒ?µ(®€ODoŽã¸¥ïßé„íž _@¡~‚õ-N+Pi§KļGóÛ÷ç'߈(2û–þ¹ì´îzÄI±u·ÜÙö­:€VJ°š…=psÕ« ÜÏqÏ¡×@[:‹tëç‰ðá|0= z½M»oQö‰‰Žº¾Ü°» ØN‹o§ÿUŸ®÷®ñ¹Ì×m`+YEu£+hbÛÄB ™h_µš„\i=º@ Mwg€„ræœ%HeÆçó1Ñw„x@“ÔV>µª-SÄ;Z ð²yDï`Bì)%|0T ˜{^RÖ¸ ®!«"žô~„†W0 ÆL+²œA¢édúÉìÒE@\˜Y%°UHJÕœKU¿犭»4½µRCà QÓP׿22ygš;@wž÷ZY—½B`ßß!°{.™Æ˜f`ÊýÌm³Zuú²k–ìªËí,`æÚ‚Ôî«ýûº ˜™¡´+Ú¬í¦çtÝü¸Á˾™èܵ¼ý. ó'bÿ. åW®í?…Qö§ÿÜd»Kp¾3—®±ëº¸I:ú«®Ž;ÞíLkÊgú÷LLÛ¢á|Ï%ž*ãþ’²„ Õ1¨Ú~0IRص¢y¥j¯áÎÑÏΩEé 2Ì †iQ¾BÖÎ Àq^#ÂÎïW ™MLp±s Y—’šÁU¿óøMÖ…´º5¹Š ÓÊXd1FœïONÔ›nÎ[Ò~9óû±¶ý§×|­ñ«ÒxíyÿcÍlÙÁØ×&rÎ9¾´ó»P›aBéªbÿž÷ë@H2ƒ–@@d2Ó—ÈUwê8_ƒDðŠÖJoL)Á 10" ¦̤ ¤³i$Ú¸Z¢øÝRfûÇ@3cZ±½o1` ¶û´gSÀ»Q&¢T³naýî˜1Ä7MvÅÌý6ç§l/Æ÷L‡îˆ"+aúÝëå£Màªa9›Èí‘ù9rÍK½Èæ@nÌ¿Cªª&:^~3» ºF:žží•[=åî} (43º®9"}û,~*?·î¤|V¿ßƒWž.xÜ1¡¼Ä{×>;Ø­4|†ÉíT9v¨ëN¯i®­61â-–5³ÅŽ¡J8kØÌ‹¡Od½÷Þm$œ˜[9$7Ý„Uõz´^øžnÙ¸öh?n°Ê7ÊÖzå‹Ã͛܌XïŒòö¹cV•½¡E1°Ë¾™+Dóf°k}r(®ØI«Š‹·{ÕŽ•†×ïV±Wvª«{݉e®¬kWnª«`®Èxn* ß&¶Ò{¶ïcÄyžs§°¥²I”|TÓr­¶9ÍZYíÞ"e¶)˜€Hƒ¹!Q«ži $µŠ®Ñô­¤øÃ3ÀÅµŽ ^Ö‚—]þT1%HN(>kE€$ÄבÅ-3ã)‹«¦”pž‚÷yâÇ¡ô…Ÿ)áýÉ®†"v’u­4YësÕ¢:5A`L2æˆól,cbå×ÓÐIÍɉ-‰0hIq¨ æ'íÚ(µ‰á'm„Tª4!d-.ÐÓw‹÷§9pªF1¸{G›kk}¢½}heq\Ï2Q·xu­È]õòH¥¶^× »zq£¾âÁ%rp}×mõWev@öåuî¹`\ Y/„{³Œ§bç»bÍÿ×°ÿ­‹ÿØô‡A²cÃ+b}'‘s ”J¹ýÌÿ}Ö}rOµ=ˆ<–ûàbYãDbØë¹›÷nõ‹£¥Ã.±ýlŒ"˜³Ä qøœÈ3e“+¼=,Uct1‡œ?H§ñkÚR1˜~åG ¼bÖÑ ŠWT¼€ð:"bf`…¬…u„2~'89¥½Ï Ž™]œ®1‡6v!4®¶råVJf®½¬FŸ²'Î.g×ynÛ©¼Üí®ìê»×\ŬÏõ u›cz ¹_÷>›éé¾±#ÇR‘P¶ IDATø9–šÛ+RËU G–N‡wùëêŒY1¸.ñ¿#2ßÿ•KqŠÝó>º*ˆ¯äKz@Ñ£ÕœXÝÛœ“-ãºï?ŸÏ7Úµ¶‚êÉÝÙ@®nïãHõȰY#ÁO‚†;±»µ®âÄÛ±C avQh?϶óRŽ)YA¹ßärߢUƒ¥V²s)¾ˆ«˜buñ[}üißÎò³´Ü$zº®§ýã23B\ħï‚ÎYdîƒ^„?'X½ËÇ ÞUêÿ‹º÷¸«NÌ-t;züöZÔV`ì®×x*gÕ;pÌsì-OW,Ã;˜Í{‘H©Øa`yT ÑZu™AÓÆŒº2ó¬]UÛVfψ i æÌU3kI)@Ô´6¤:·OƘ¢~nq«0W-žÌjšDVýЙֳ–!‡%BdÆ)bšc}œaH¾•­ ‘Zw"1Ä®¿P„U³ßQ¶ºV¶£ÙÁDÀñ__P&Ä`óêu|UàIHxi´çJGŠøùIHÉö“ó4mA dL5¢êb'4*T"˜ÎÐÆ=„ |’¹@eÎŒôfÝ Pa„ `Ù~ŸT³;Rªzb-Ê­sB•sUøVmßlâé!Wå²FòÐiXÙ3â¬PšÏ¼©T5˜òuNg¡tb¤ZOn߇\Üo{à…ÐlÐE4Ûºkc#p^gÀ¦,#{}ùeÖ³}~›Ó—FCƒ[LZ6™«¥nü.AþÈ”©_©œˆº‚~§míN—ó»`Ë“öè_††Ìû¦Ö^®¨ ñ¯/ø-•(ñîáŽ-UÙ/ Xß÷WÞàŸdj}§Eu÷š3a+îŠÐs~Á«Ëà±ðɣʜíÀÃóR`/á;n‰ÙÈÂ]olÀ’^]=¤0¿Êû·}§}>u¶ïw»X6!k°Ïl,­àZ(gvÑbÌ`óå%Hˆ2Ë*”6À`‚ð¯È,x…€í¼á¼r !qÄW<so?²^bú4çÄ®P\-æÕ3_ë1µ—ÖÁWˆ` ±µ=Ï\À“ilåý™!Ù}\“TÑv/ÿQèãΠÝϼÄ}¥Û6ÿž—çÎ.èÞ{y{ûg÷1Ū@>ƒ³DÎÓµ½ºÏE»Ïg±s8YKûø¿U®2_c‘Á™]”û±Y~å~ÔÑqâxz~Æ:,—;;­{Îësnæ1¬®-‚º$Dxîâ;•÷o|úëîÇÐ#;ìç –âíµÀwX­¬:WúI;ºŸËÎXØPÏVÙ‹kFð¼k\‰Ìy f×¶7_“ý=«›MRK¦½v ž‰5–7 f‡Â¹å©ü[q,ö³«x¾®¾ÄÛ(®ÏóÚ©v4ŸÇH™ÁŒ¶Aûú?¥… ¸¾§çà°²=ßÙ¤ÞU6Vûy×qçR²³Â-A~¿Ìì¶÷û}Ùœvvº{Ë»¾æþpÇw‡r¿I{Ïê‰è¥Ž>a>ÌÏ9L ¾qoãî@-ë˜1ÜõžÏ뢌3ƒ¦Cg˜w$õ“V´óþ@.X I¶~–.+\^­ÝËžÇ+Æfo ˜K_gñõçHçÜf¤3³ƒ¸Û»Jbœ§1TY ’Ǹ€ 1>Ñ ï÷¯× ŸS€#âçùÁW<ð÷ç4FV¾^?"¤óÄûs"¼^8BÂ)É®<öIó ö^°&IÆâ*`“[­µBUqçdO¶ß²öCe$¤2§‰ñó“÷öN6f°æ”¼2½‡ÊŠbûŒDÖJÉUô=?7±×k1@±ÌÒܶ;°óÓ4Õ ú A™Ÿ4žçY?«Œm?‡×] åV íª“¥ìë¾cj{»-죈l9‹›ÓÛhå¹:_˜úgzÏÖY±NîtPVqÈüÜžV¶ï¿ªæ½ÇŸÔŽÚµÛ}÷þ ûÿî^w øÿÖ¯ŒËÿ’k#A@@BBÈ@ÿ]þ1tdàŸÌ¹Ž4860s³~@ª‹\ @÷!‡©:BÓª Òu<Ô'`×XkìÄ „lf1Í=ô…Î"n¬íÔ¿—ýÝ~§*¹/o¤Y´–!ð_?^ÐÜægÚRÆÎ:8 À¯ˆ@‚Ȧ7ÅYwêÇ+àë뀼?±¸š‰ŠéP™ƒXŒÖtþ¹H¤|?Ƹ +óª8óÆŠ;x5›Ù#)%„× çy6ÙòÙÕ,'?7§Ãg3Ñ·ö—97ó4Œw9Å ØiÎÞÊ-ïôs‘•IU›³ióãû™sŒ‘5´—Òé]꼿Ū©2á½ëUMVX%1}RRœé³ÔA+1×]QH#"#€µê@Yƒië6¿>¿ör÷ùoŸÍ¦sÞÞ%"М+ûk-°nºyæýÍs,=е˜ãͯ÷®ÐEÿÏÿýê À˜E¼f‡‚°ixB™W;øÆ^ò>{ç6NætYÔ}Â?·Õ•k6—sË^[v§+š©°*Cn"ÿ|ÞCÕw@PDDð5%ˆÞaçµÏ•÷åü úkME×&·í\=¬ˆ~—1-ϯ_"–”RþÜ•SÙ€ZU…†qI鳈ú „÷§ÜûU, 9æ èÚóî·¡]œ õŠŽ÷cÙÓ•Ë”ïcvB™5©ú1ê[X¿SݤΆyÅ&,‰°GͬóŒ0¹ÚinÕ:/t×þ÷ [0H¯× 1GY&Æ-AÓ:Op¨h{2.+Šð¾½ xÅgzCRJÍä3ý< úƒc$ ò9«ÓÚNGuÞU¸l-‰ Îï#{€º_“^5¥ßÿûïßg…ÑÍM[èRBGýÜ$pƒ…TõÕ*{Ð$õ÷Ô UKës*D©¶–÷?E 8Ë-“ªŠtZPý‘T,‘,¯‰”2È•²Ôú'x¿ÏZP))Bü³;¨Ó©x§²çT‘‘ˆê[êl¬óئæÎdÝ1ÜtZ]‹õ “ ¹`²lü‚e8æ‚kÝ\ 5NXœ3}=·0‹í÷iQ9Ükn¶ÿÊ,‚ÿ’ªµžƲˆ e¶˜–ë¬X~aO{Rß ÙŸésËúŠåê1޽1½Ó]¼î+„ú“çH÷¬¡QXÚ­ðâ‘ ®‡O¾o]î*óNMù¾7©y üy•vïz꾿®“ÏZç¾ÓÆä]ß<¶sL_“Œpš‹OÞ9yt»¾ûÙõHe[0Á}WÍšµZ[æÃ‚-Ï:ƒÇ‹ ~AƒÈ1§’‘¹ÐƒK]Þé}ŽN# ÄÕcœÀ]üÜý®ZÌ}9þÍŒÜÒæhó+áǶËWºª±¿ ˆ²q°Vü,ΞYCf­›³ ¬Uí¨ŠxEFŒ¯#€ƒ=çòšŽ‚µöQfáZL8åáJtgŽ­e”cõˆóª×ãȬ];­UÑ^÷ãõª*m|Å@K— SÈŸ‘÷u Т߫%æwx‚ís >k Ï{¥g‚åqUµÆä5öÁÂ_÷9–ˆ@­ý5^tYË™B0ÁÑš§7`¨ŒßÙÝŸW¨EÀ/…X¬ãN/þž÷ئÑi9©¨døjë6_¿ Œpû´&(,Ìæâúª¾êFªïŸ™ú3©@R¥úç9ç™B“¬D’n¿âáÿMnŒóhØO­¥²µÎ–XÖë")««ªÜûëõª×>ç¦!|º÷Ÿ»¸ŠN®Ç*+ÿwˆ³ªV†ÇÂð@£*zØ^Åv ¨h™Äõ¨û*À[ÑŽ¿ƒ ÷Œ‘#p T ¦&’®I•±TÄW.>3DÝ Ì£‘΀H žÖ¬¢•†Ñ*ˆŸ™JzŸ?;M@Ñ ˜x(÷ü|w¹§›P’+?ÚÆ®Zçû¿.ô˜ewóÊÓ{"ò¸Ò”ú.ÝÇRC®@·ðªjäõ?s — =¥Ô‚?jn÷™‚oYUwU¯€uÇŒPÕÜû&¹ ‘]Ðh¯Ÿ³«Šyà0°Öqs[›`Èãùq·wöë¤\{©bº¾B4QôdÉ๭ÍQ//uÎ'VçqÓÜsr[ SÁ!6 « Š„”ýÈ´±ŒÙT4²Î“A„ ø:‘«×±P§Jé²Äy (/9pDª÷#"øœ)WóLA>) epd¤`e{_&µŸ+r¦ ²Frp@Õ´Æ>Ÿbc†©ò%ED½c^1rk[Ù…ê3ió…·æ³«hq!ÜQû«Sªx,¦Æ„ð:ßy« R–&­¯Ò>8ÚÝ#Û¦+ÌY2P@@À)é¢cêã½øò…á¹aH¥¤Sï y¢©µbn}Ô!ÂE[gþùýÞ¹wo]P[vÚBL÷;n×ÛsQ¯×¶kêM¼kÛK»{ê?ûwïëQL€û3tõúïž'ÛØº3o¨ŽÃàÞ|l¶9È·ó¤­7?¦ ƒ²8–ø²tW¬ò%O”Ú3†é×_a¸·œ*;À¸¡lFÂ\þrfü6æueh…Þ@ØT ©…ؘú&5·À@8B@ˆŒ#X›÷Éœs4§`6à »E{ÏF6ìe\tL>ûÜ™ÁŠI“ÓöéLJ¼zS M ï÷ûV:æbÌC£X?~TØ*;–Ñ(Ó$ ökl>{ïÌÀ*ã+ì½Ýgª”.г>ûÙ™Çw隸ëò0 c~Ìâòrü6Ò/PµéªFœ#[ $@¶9‡ëp¾À*îò/·Õ”üÎòX<«×Å*¦L$šHs@'€Y%MÏ.u I½0̯ftëâ[ø<|âÎL­ÍX1”¸Öºö”öˆž×Þó4ù'ÃýÁè-޶1áÛÀ,R7VU|*Ÿ÷9¡$H"õ˜.‡QIÄv H‚Pbœé®ÂŠÚÆÕk€”ïc8¶Ïë‚c¶ÌàÍ|o­Eo½‰4~¡Ç`å^Ú\ع\ö- +áé«Í;¹ç5  ól®È­‚oãÝi!íìg½¾ß&Ò¼z6ªžÈâêz|'Ž@ŒÃ&·êá_¶ ‰ßJTìíS*n<Ü…¡‡M²õÌRw¥p'ð¾¢öÞíYwI-œ)ŸjЬZÿî^»3iø‹íîþz]!"õ™TM<6ƒ–:1è.®$:SúCeÆ pž*ÝüÌl*ˆ˜è{©©²_j쫨ŠÉ—½ëü´V8!Æù‘úûÆâJ8“AABÀÏ¿? `Ì¥˜BǤb¼OFB4 )3‚’J®ðY…JLùÝ4G’s¬öþ Ôû#âÜÚišZ”áÅU{k`DRfW‰Ö–Çʘè×g0§Ât.ì‚ڢъ4M¥b,˜›2 €ˆänXÅØµÅß˾€VÛÕ÷E/ ‘VX2çºa- áÍE„À le³qo£ ’è•¥z¹.¢¢¥©kêÛåxÈB½@Š3§×çdÊàR‰›'æUaR•ûAi_Wsú+"úÊøÌm0¶âì}ŽpÄ€¯F c…”–ÁȲDÎ?‡V­ä€…4t†LIç\Ü®…YÀ{ÝbûTÛÀN÷5ç^‡†ׯ>3Cj~Îw&IOtnïôpïtaWää±dvìT]4äw‰yÂé0½µ«–HÉv+‘c|ï8ìåµbV r‡ ?±ÝiyëõcŽC¶ÛAåÑó²ö•úë• e(gÇ\òÆm•›7XÏÕ°†]΂úŽÖÓÜïÝu®ä–ƪ†à³‡;¯6w¥j@<pÖ®ÒŒ”5(JÂÉ›u‰úŒ†ÄF©^—þº-`¥E8ç¶Bë=ËÓ¢ØÃókæ5xIÔnX5;ŽÝû®ƒ•VájÿÙ%»ÂÀ¿ØyÄÔ}àÜø´øò]ÌïyÿàË/Ô}÷}vtCûp¨ñsŒŒ®a/Ónº¹hÓ®”-ÓÞä;Ê^kl¬¸-|Î.èÖŠ×3b‰Væqqƒ’ʾ²{Óƒ"cÔ³J»ÊÏlX¬]ÐÚC0çá×qÅqd Šl/ ¥]°hceFV¤Þ д+Ì]8#cÎoc#ÿ½X+Åú‹¶i¸žÌãžpAð‹ž3 uWH¼HÌl´zv+”²Í­¼=Cg'z¾ŠÍYÚ—§©-ôßÔ3¼‹Mçñœ[ ŸÄÈwç— Ä‰nÏ·Ý] cºÈVï7·Τ9o†6òÅóäJ‹üIQeuV¯^{™ êçæ^>°""íã{Œ÷'zÈóð‚NÇÇ»ÐÃÆó™|«Sswèìôjî4fõËhn±*ÇÂÀ©SQê¬ rMÙ‚[¥LlNJ¥2dì¥\‰®yÔ¬(BwT7Cû}fB:?C5* ß8µ¶iôùÐÃÚhãÙC×^ÞT™3Ói>`V›ëE`sÓ2·bÍÜ ‚¯ˆÐz'¿Z˜»v°'›¹÷^õ¸Y=k+\U9gz§W½Z†DTudH18òôBåÃxæ|žo|õö€¹ r p.ý‚ð)oCÿŽ%pxÿ”ZÚ>x%ßJtvN°+-ÂÕsh:/&’ªÓMe’Ïže•©¼jf`5ý¹âÿTöH Gì(عó3hvQT€…ñ‘”Û­ò,Ph~?P #8LG*ŠE GfÕ)•û²×B8’íïKf¬hi­ƒªŠXìÄó>¹TûÍÁñTiÂøJ¹åÐØNÖ†i H"Å91À© pOíÖJ›/®ˆ’Á¬ò¹ZÍÜ=kKHXÓ±¥j•¯˜”ä×1×âkñ¿íÆœà¢ñÁÙ°\·´êîÁ¡:v©Ú³XU[A!k¥e ±oOš¶E„¾Ü7`Û´Ê}Ì̳‘‰5VjKǦT–‰”УåS ¶ŽŽˆ q]íþ› ÚSèR!îMJ‡½ë CŠŠï° ¼3s·Oß¹(Þ¶n–ï€wqÉÓâËï€Sâ=ܽ|±ÿ免ž–q§-Õû¤+ÊJÏÐÈg ®Ìí>î)ŸÏý¹’Ù›= Åy–÷:IåÌèW kð,ŒqÓÅlûKa”‘*H¸^ kG/ÓÂÍÉW·'qâÙÙÙifÖk–üþ¨ŽÁe¿.¹ƒÅõù/sÖ²A¢¬ƒ…„¬e»8 ¾!0+b°â¼'½«×s+¢íùœ¯™r~£ó3¥ÜòÈåZâ{öÚ;Ý÷\æu 8é &EXÿžäà fнshv˜5ëWÙì;#‹è©Ù‘Gö…¦Õ>5Ÿ)î}®FeϤZ;:-œó^³aûzôšóÖYZX°LývÑ'û°—c­Þo½ê%»ïµÐpô†³”Ë 4µà·Tz¦rw¦~óÜ»§z µ W og{;W=‘gŸµC· vgGê JJ²Ý`TÓ¥¶É–jé‰ôõÑíY’'¡[l.–ˆA¡¹">‚WÀRš@É“i£H¹ŠÍ Ô\X@Òþ½¸*ÀKliä ®w­ xƒ©Ía)ß wì½Uõv5¯V‡È,¦¹o@þÜœi¦wíe=â±Vïáße-yÚiýFé±ßú èJkjf› š”È6}P±Yà«ŠË ø´GQÅ=]|—ôÒ|@Ŷ}Žbí¬þ}½Cðn­< šj5Ùú÷Ö×ÝzØ“ÀÅ`xçyþÔ}¤c9¤KÐ $Šõ ø@„Œ –2`2ø$¹µ¢‰À3H²æ•ÄÊ®¨iaI§hT¨1ÀЏäyΤP‰¸rGÕ61vm¨‚áç§à ¦+‚Àøù~£è%ž¹( Ì ²ÀÿýóÌX„WnL´3-&Ì`×—R>cÆÎ\$\» $R^§Ø [zv¦4<¸¶_jm)ìç «ÕqÛyŠ*P\Àm¡Ø=*imÑ»¸Þ²²»Ø#g"2œäÚe?MM_L$8©,™°)­ µXäÊ øûÔÌ€í]xVç̲Pó9¼i#ŸCsu=ÙWXáZqÏ{ΊѳjãÞi==ûî 8V‰å*ü Êúõwïq÷WW/sÁÀÚµKí$VŸo­yº}FsaœAXæÕ—vÀò{½´ÇØâŒ «ŒÓz&'P žž"ÝˆŠ³wê8T ß.X³T.J íÈ’µ dàÍ@¸ìÒÇEf„p‘‹ð:12^LaÕÁ¯ÈjQ)¼gÁùNtAJc]„¥flÓ´bïÎ{¾tÈÀìïhç<ãzN]õžú"ÆX€Å6þòò„;æå]Ñsü¼û¶c/›óï9ެúG‹µ3»zRA"V¬šóç¡àø¶8¿+ØòM,9g³¦ïê}w{º'Et>­ˆK`oYÐß·°êWÖ `š Ï;Mñ9‚nˆ>2‰ôÏysçÙÜ&¼“'š)¹žAF¿‡ÌŒË‚i`­.Õjjcóô}ž´ z Ãüv€šÿ>¸¥Øy”Ï2ð)ÉÅÕp…{ÀKa (F·¾’h´žVv]­º{¥_Š9ËR$=­ú®ÉÊäÀeºZ¢Ë°Ê}³ÕÚ"Œ½ÿ+†Ù˜ÈKegyIÛÌŽz ¯ž¥0É€XSnŸUNë÷Ó¢ØpOÚWï*¿»VÖ'l˜§àÉÓ@vþüyC™©ß+@¯¼nõ¦ìZ"ó~@ãA5ߛÇþ¹ ŽŸTžŸ¾f§}uþ3…;¦Þ]ðr¢í®½øº¿Ö;ÀÕX«XT8® lŠs Ta©æGnZXLlàFæ iÑFû¤šû[Î SÖQk¯Ë¬T¢íÕ’5©`íš5@Þ>’ÛC>œ:…*3¬hþIʬ,jN|…Acm”ÅØ "„»¶"z›ÅÚU l­0Ê_YÖ–:‡(RRˆH@½oÞ§JÕØJga¦DËÝ‹FÔiúŠÍ|΀˜j€[\Ù:¾ê>Á«P@ÚNO«‚@ƒ6ÕçZô"ó"©š[ÀÓcl~NE‘Ê„‰JÖWÔë|ž|F6FU‚ê\¨‚ÓUµÁ.­ÓÔ[°¬…–‡qé;ŠU¸¹ƒö‰vIE{½ÌyÝåøÂ"טh,ЪkPck•‡µ9-úmE«˜^Üþ†÷[nwÝ\¡Yne¼—•è¹6{ViçÒá}ÛÞŠªÁ·*Øþ ô–›º¬Ï\®ýi¨ýÎzߤ9LN„…}Xšã÷>ë¼éå±;V™ø€×c+$µvàñü¼Š?3³ÅÎhl+è¤Î¿>Q2IÀ þP¹™—<"rŠˆÇÊ`è5isû7‰#´^™Tel©ü[7&GÖy²­*Ôs 9¾·Ö@©±T@ÓÍ"4Ö2‘=KfF BˆÍ‰ð1ŽXÀÂ+BnŒÌ1; ’±aíµòx‡ "26¯è ‚ ps˜\­S=(χ;r‡OË-u0á0—ÃVí%læø¶^“êâgMºé÷ú&3sk—‹>çÂõpÑKðØ‚ÉûØÐiÜGækŸ‰)s†%kÈI‰ èJpè?'3¯yÑ^>ï™sáß뻋Vq¯uÐ-ãÊaf†ÛŠ„Ñ0+"@Ÿõ…:Ø¿hÊÉ4¦ùçuÈyÆM^ÑzkÞ†…äÂTXðþÿ‰”BZû‰Ž›q¥}s'š6Oîù÷=àÇ2¼©mü5A[3¼Ä|ÎóœT®c×>Y‰ÞÖ²€>¦ë+µ•hï3ÓâJòcî]DÐO—ÕÄlÕ[ÃØ¥R›«¨¢2ˆ¥V”hK΂ë­ïÖ®sÝØD`{£Þa„ˆð~¿y¬Òì@©ƒo½ñä{ºiC[µJÕ÷r6ýyž¯X>=ˆðTŸd@<„\£·IyUƒ;Тw•蓘^t¤®ð¾Ï~Ôš@}§%äNlø)SiLU øEÕË;l—UlE ¬<òßé]"þÙWšWm‘+†iÙ¼kçêHaµ,Í Cnî˜2¹~ Ä@¦»DjŽBÊ D2GDÍíð‘d¢íª¦=ÞŸ¿óõ4!wR!àbYo¢éB”µŒ  òIDAT0'üüù(@”®t*Þid ‰*äT|Ò™µ_¯PÙfEÃë“>Ÿ„ó<ñ_ý•ÞZÌNU”± `»áDjÚL°{:é„çD½Q)18/ca†@2XDÀiãɹ ³$T ëçM’ä?úyÀª8@ÏkÑàlêПI£ÞÞç”ü¡×E® +õ{jß’Z÷kj¸Y_‡™kþÖ3=âB-¾J+ Ïì×9¡÷Hw:v«žUÁúÉö2Ç‹3¨°bËïäKêu“.;‹z'æÜÚÕ‘]°ŽúÏ?Ïs»“1Ï pµyù=ML»’ç[ZÐÏã™ü1³·vÅïRÌs x&UÂLC+%OŸwÑÞìsžžvï<(.å;£/Ÿ…ÙÁdâàå­çyº`YŒѪ<:väª•Š ÉÇ(Ÿ¡ lܨ"ðQ]<]£Ïçƒ×ë5€6¹^O) NweÀFUºÐJûÍ#„€ÏçSäóùÔ=ÏÅù9ñz½r®•4'påºßï7^¯>ŸÓ*ázNèªT0 ݘ©xe‚T!>ÿë_—¾Òf!ðóçÏz­€"r¦Òê®$P:q³±Oôi•Œâ`2DÅEd¶éìÁ«2å51Ú8|Å/üüù3?‚è‰BÝ8ú ÈÆQáöY„p´–kúñãþþûïa”¹RôÚìk»~Oã§Ÿ/e.–¯ŸÏ1w¾47Õ.¾{~;`¨h°|>ŸË?·o®ÚMf lØ4'#…^ð1¥T]^¼¾þZ™6Öùžúï_¯×¥7¹¯*G¹†Rî£ThÈún÷¬Z=VÝJ`ÇÒôš9€èÇï_¢¬Ñ™Ý¶$ŸÑÌ%6CåN$€Y·¼¾¾ð~ê9R^wžgž{‚_øûï¿3ã٘Οw;˜ŸóSpž-Ø3‡Ì` ù/X‘û¶t+®‡Ì‚XƒóýYã‚Ï<²ì€˜ºýúÖ6a c fb;‹r{ìÿÛܵ-¹ ÂЃÎöÿ¶¹ôA ŽÓÝmë™ì$ñ% t=)Y³µU‚žtSš‚™ QÛ©~`Œ~QSÄŠn±‰Q½Ê©×Ïü÷|µ_ùÜhè´‹!¡7’0¯83ÇBÇ”»EýÂåù¥³›:ãu%—.XpÎ=·NŠªÑ›iç`E€¤”Àõ;äQý¾Y’?pÙÛË#™Qõ‰îµT—ð@ª¼z®Å&)¥šà9æÌs•¿æ£àŒNž K¤Xï[ŠïËÍ/I)‚Yѵ;žŒ%ukBhk@u+À¶<ŸOpÕkÞ\rŽõ™\ã ”g+r?¤ŠPÊÌpT¼pV¹²ãÇö%?6©Ç8lì[AfÆÃ ¹;–9||<*y¼0ý2sKh#ñÅÞ…šP#"0>>¶6ì¸÷CjAž5.]ï]·5}–ĶÉ0뻨Ž=Þ7œb5®‘¹ê“¤jïPIégÉ«ûmÌ‚Ì׌ãÖl¢C¯cåݾŽkÁÊØª¨ÏÌ(Õ׳ò«¿M»ÏPD-±hâO•õ5„€Sg›ŸPÇÖÆ£¾Ö1A1FsÍÔýÆÐ!òò|þìt˜œsÄ“D1î]¼jÇß{W?#ì{Ÿ1%8*Øã/¸:÷º&užÆ9šm¡³¿Çʈ}µ‰´^©ù-öÚ‡m8¹Ç[1Fê¹§ݨçÆ›Þ{ïºø>ï϶6m¼¯ò­që4 ý3Ôœ•+¡Ýˆ¦»hiÊ–‹Ûvìøf<õÿ}ßÏX_}ŒÁšÍö©A¹bø¿³ÕgEün…bt²›`Pï4Ø=ÁjÐubu‘ªÆ…eÂSsl3I/Xû¾Ÿà’#RK"š´­nÞ 8dÀh¼#¥„°ù‚ÿ^7¸¯šÿÃ9Cõ¯ « dYtVë»=~®‚º"˜Ÿ%œVÕÍÕŸMPØà~Ü¢;ãa;®ƒe——ÑÝéjüÆñ¸ªüÇñŠ+ï;îýÙëÞ©¾;cPµêÀ¢:Ç&ÑΉÐûó?KtÝá5{…T¤‚S‡; §Öu2ûž]sŠð7ý¼ÀEò ¯Ž{)@26>tz?ç ΄TíÚÆ¡"}pǘ3žÙ•S½¯'ø”S–m‡I‚•£jX»B8QÙK×ÑÿŸ•ªeߟyXê°f8OØ*©»:TG¢¨´¹GšjSMÓ[pË*ä9~µ½z%_W\³``†¶šUgèoqD½ýµ¹VÏøzæo v^?«´¿³þ§<‹{~õü_m'îòF¾zÿBe]ÉÙI–N +RÝÙxYn¢†²È½^.Sd8ògçªoµ¾ò?i‘ rnM̬Eå%êÆœT«õÍ̵«!ºŽÜ-ØNq°ƒÒaP:J0‚w­ ê½3¡à<Õäp%pw…Á@x€ƒ°Ég<ÂVX@`‚w ¡ò13Š&Új;§]¶,·ôì|«?BÄWîƒ}¸é”ò¥Nœñ@­dÜn“~G?\m ¾³ÔW<…ï4Ö¸ò>£ëîrJ¯M(ÌìÙÌ_6EÄ‘ÛHXW~òyÿÎcVt°qÙÌæ[äÒëôò5èß¿¯-Í8lâÇ9.xG¾¯8¦¯â‡œœ;¢ÛÄâo6¤üçç¬IEND®B`‚src/BWidgets/examples/pattern.cpp000066400000000000000000000062711515163050000173560ustar00rootroot00000000000000/* pattern.cpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #include "../BWidgets/Window.hpp" #include "../BWidgets/SymbolButton.hpp" #include "../BWidgets/Pattern.hpp" #include #include using namespace BWidgets; #define NR_EDIT_BUTTONS 8 constexpr std::array buttonSymbols = {{ Symbol::SymbolType::edit, Symbol::SymbolType::pick, Symbol::SymbolType::cut, Symbol::SymbolType::copy, Symbol::SymbolType::paste, Symbol::SymbolType::del, Symbol::SymbolType::xflip, Symbol::SymbolType::yflip }}; constexpr std::array::EditMode, NR_EDIT_BUTTONS> editModes = {{ Pattern<>::EditMode::edit, Pattern<>::EditMode::pick, Pattern<>::EditMode::cut, Pattern<>::EditMode::copy, Pattern<>::EditMode::paste, Pattern<>::EditMode::del, Pattern<>::EditMode::xflip, Pattern<>::EditMode::yflip }}; std::array, NR_EDIT_BUTTONS> buttons; size_t mode = 0; std::unique_ptr> pattern; // Callback function for clicks on the edit mode buttons static void buttonChangedCallback (BEvents::Event* event) { // Boiler plate SymbolButton* w = dynamic_cast(event->getWidget()); if (!w) return; // Only pressed buttons will change the mode if (w->getValue()) { // Find pressed button for (size_t i = 0; i < NR_EDIT_BUTTONS; ++i) { if (buttons[i].get() == w) mode = i; } } // Exactly ONE pressed button for (size_t i = 0; i < NR_EDIT_BUTTONS; ++i) { if (i == mode) buttons[i]->setValue (true); else buttons[i]->setValue (false); } if (pattern) pattern->setEditMode (editModes[mode]); } // Main: int main () { // Create a window Window window (720, 420, 0, BUTILITIES_URID_UNKNOWN_URID, "B.Widgets Symbols"); // Create a Pattern 8x8 pattern = std::unique_ptr>(new Pattern<> (70, 10, 640, 400, 8, 8)); std::array patternColors = {{BStyles::reds, BStyles::yellows, BStyles::greens, BStyles::blues}}; // Create the 8 SymbolButtons for (int i = 0; i < NR_EDIT_BUTTONS; ++i) { buttons[i] = std::unique_ptr (new SymbolButton (10, 10 + i * 40, 40, 30, buttonSymbols[i], true, (i == 0))); buttons[i]->setCallbackFunction (BEvents::Event::EventType::valueChangedEvent, buttonChangedCallback); window.add (buttons[i].get()); } // Add the pattern to the main window and run. That's all. window.add (pattern.get()); window.run(); }src/BWidgets/examples/styles.cpp000066400000000000000000000164511515163050000172250ustar00rootroot00000000000000/* styles.cpp * Copyright (C) 2018 - 2023 Sven Jähnichen * * 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 . */ #include "../BWidgets/Window.hpp" #include "../BWidgets/ValueDial.hpp" #include "../BWidgets/ValueHSlider.hpp" #include "../BWidgets/ValueVSlider.hpp" #include #define URI "https://github.com/sjaehn/BWidgets/styles.cpp" using namespace BWidgets; using namespace BStyles; using namespace BUtilities; // Definition of a style with two substyles Style style = Style { /* Default style - don't need to be declared */ /* {Urid::urid (BSTYLES_STYLEPROPERTY_BORDER_URI), makeAny(noBorder)}, {Urid::urid (BSTYLES_STYLEPROPERTY_BACKGROUND_URI), makeAny(noFill)}, {Urid::urid (BSTYLES_STYLEPROPERTY_FONT_URI), makeAny(sans12pt)}, {Urid::urid (BSTYLES_STYLEPROPERTY_FGCOLORS_URI), makeAny(darks)}, {Urid::urid (BSTYLES_STYLEPROPERTY_BGCOLORS_URI), makeAny(greens)}, {Urid::urid (BSTYLES_STYLEPROPERTY_TXCOLORS_URI), makeAny(whites)}, */ /* Alternative style 1 for widgets with the URID: URI "/ua" */ { Urid::urid (URI "/ua"), makeAny