diff --git a/.gitignore b/.gitignore index ff869912..e7e76877 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ *.log -module_dfu/host/xmosdfu/xmosdfu *.dSYM */.build_*/* */bin/* @@ -11,14 +10,19 @@ module_dfu/host/xmosdfu/xmosdfu *.xi *.i *.bin -.* *~ *.a *.swp *.*~ +*.pyc +.build* +.DS_Store +test_results.csv +_build* # waf build files .lock-waf_* .waf-*/ build/ -host/xmosdfu/xmosdfu +.build* +*.pyc diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 211bf644..6dadba20 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,12 +1,26 @@ lib_xua Change Log ================== +0.2.0 +----- + + * ADDED: Initial library documentation + * ADDED: Application note AN00247: Using lib_xua with lib_spdif (transmit) + * CHANGE: I2S hardware resources no longer used globally and must be passed + to XUA_AudioHub() + * CHANGE: XUA_AudioHub() no longer pars S/PDIF transmitter task + * CHANGE: Moved to lib_spdif (from module_spdif_tx & module_spdif_rx) + * CHANGE: Define NUM_PDM_MICS renamed to XUA_NUM_PDM_MICS + * CHANGE: Define NO_USB renamed to XUA_USB_EN + 0.1.2 ----- - * ADDED: Application note AN00246 + * ADDED: Application note AN00246: Simple USB Audio Device using lib_xua + * CHANGE: xmosdfu emits warning if empty image read via upload + * CHANGE: Simplified mclk port sharing - no longer uses unsafe pointer * RESOLVED: Runtime exception issues when incorrect feedback calculated - (introduced in sc_xud 6.13) + (introduced in sc_usb_audio 6.13) * RESOLVED: Output sample counter reset on stream start. Caused playback issues on some Linux based hosts diff --git a/README.rst b/README.rst index 9c0d4a97..a569b661 100644 --- a/README.rst +++ b/README.rst @@ -1,18 +1,61 @@ lib_xua ======= -USB Audio Shared Components. For use in the XMOS USB Audio Refererence Designs. +Summary +------- +USB Audio Shared Components for use in the XMOS USB Audio Refererence Designs. -Required software (dependencies) -................................ +This library enables the development of USB Audio devices on the XMOS xCORE architecture. - * lib_logging - * lib_xud +Features +........ + +Key features of the various applications in this repository are as follows + +- USB Audio Class 1.0/2.0 Compliant + +- Fully Asynchronous operation + +- Support for the following sample frequencies: 8, 11.025, 12, 16, 32, 44.1, 48, 88.2, 96, 176.4, 192, 352.8, 384kHz + +- Input/output channel and individual volume/mute controls supported + +- Support for dynamically selectable output audio formats (e.g. resolution) + +- Field firmware upgrade compliant to the USB Device Firmware Upgrade (DFU) Class Specification + +- S/PDIF output + +- S/PDIF input + +- ADAT output + +- ADAT input + +- MIDI input/output (Compliant to USB Class Specification for MIDI devices) + +- DSD output (Native and DoP mode) at DSD64 and DSD128 rates + +- Mixer with flexible routing + +- Simple playback controls via Human Interface Device (HID) + +- Support for operation with Apple devices (requires software module sc_mfi for MFI licensees only - please contact XMOS) + +Note, not all features may be supported at all sample frequencies, simultaneously or on all devices. Some features also require specific host driver support. -Checking dependent libs Software version and dependencies ................................. .. libdeps:: + +Related Application Notes +......................... + +The following application notes use this library: + + * AN000246 - Simple USB Audio Device using lib_xua + * AN000247 - Using lib_xua with lib_spdif (transmit) + * AN000248 - Using lib_xua with lib_mic_array diff --git a/doc_dfu/.gitignore b/doc_dfu/.gitignore new file mode 100644 index 00000000..e35d8850 --- /dev/null +++ b/doc_dfu/.gitignore @@ -0,0 +1 @@ +_build diff --git a/doc_dfu/building_xmos_dfu.rst b/doc_dfu/building_xmos_dfu.rst index ee3972ec..3ca54fdd 100644 --- a/doc_dfu/building_xmos_dfu.rst +++ b/doc_dfu/building_xmos_dfu.rst @@ -1,7 +1,7 @@ .. _usb_audiosec_building_xmos_dfu: -Building the XMOS DFU loader - macOS -==================================== +Building the XMOS DFU loader +============================ The XMOS DFU loader is provided as source as part of the USB Audio framework, located in lib_xua/host/xmosdfu. @@ -9,10 +9,33 @@ framework, located in lib_xua/host/xmosdfu. The loader is compiled using libusb, the code for the loader is contained in the file ``xmosdfu.cpp`` +macOS +----- + To build the loader a Makefile is provided, which can be run as follows: - ``make -f Makefile.OSX all`` + ``make -f Makefile.OSX64 all`` This Makefile contains the following: -.. literalinclude:: Makefile.OSX +.. literalinclude:: Makefile.OSX64 + +There is also a 32bit OS X makefile, ``Makefile.OSX32``. + +Linux +----- + +Similarly to macOS, there are two Linux makefiles provided, ``Makefile.Linux32`` and ``Makefile.Linux64``: + +.. literalinclude:: Makefile.Linux64 + +System-wide libusb is used. On Debian-derived systems this can be installed with: + + ``apt-get install libusb-1.0.0-dev`` + +Raspberry Pi +------------ + +A makefile is provided for Raspbian. libusb is required and can be installed using the ``apt-get`` command from previous Linux section. + +.. literalinclude:: Makefile.Pi diff --git a/doc_dfu/index.rst b/doc_dfu/index.rst index bb185281..330eb84d 100644 --- a/doc_dfu/index.rst +++ b/doc_dfu/index.rst @@ -7,4 +7,4 @@ DFU loader for XMOS USB AUDIO devices Creating factory and upgrade images with XFLASH Using the DFU loader - Windows (via the Thesycon driver) Using the DFU loader - macOS (via the XMOS DFU loader) - Building the XMOS DFU loader - macOS + Building the XMOS DFU loader diff --git a/examples/AN00246_xua_example/LICENSE.txt b/examples/AN00246_xua_example/LICENSE.txt index 844e2bcc..82cfb860 100644 --- a/examples/AN00246_xua_example/LICENSE.txt +++ b/examples/AN00246_xua_example/LICENSE.txt @@ -132,4 +132,4 @@ This License shall be governed by and construed in accordance with English law a This License has been entered into on the date stated at the beginning of it. Schedule -XMOS lib_xua software +XMOS application note AN00246 software diff --git a/examples/AN00246_xua_example/Makefile b/examples/AN00246_xua_example/Makefile index 7abafaa0..9bdea14b 100644 --- a/examples/AN00246_xua_example/Makefile +++ b/examples/AN00246_xua_example/Makefile @@ -4,13 +4,14 @@ TARGET = xk-audio-216-mc.xn # The flags passed to xcc when building the application XCC_FLAGS = -fcomment-asm -Xmapper --map -Xmapper MAPFILE -O3 -report -fsubword-select -save-temps \ - -g -Wno-unused-function -Wno-timing -DXUD_SERIES_SUPPORT=XUD_X200_SERIES -DUSB_TILE=tile[1] \ - -DSDA_HIGH=2 -DSCL_HIGH=1 -fxscope + -g -Wno-unused-function -Wno-timing -DXUD_SERIES_SUPPORT=XUD_X200_SERIES -DUSB_TILE=tile[1] -fxscope + +#-DSDA_HIGH=2 -DSCL_HIGH=1 -fxscope # The USED_MODULES variable lists other module used by the application. These # modules will extend the SOURCE_DIRS, INCLUDE_DIRS and LIB_DIRS variables. # Modules are expected to be in the directory above the BASE_DIR directory. -USED_MODULES = lib_xua lib_device_control lib_xud module_i2c_shared module_i2c_single_port module_locks +USED_MODULES = lib_xua lib_device_control lib_xud lib_i2c #============================================================================= # The following part of the Makefile includes the common build infrastructure diff --git a/examples/AN00246_xua_example/README.rst b/examples/AN00246_xua_example/README.rst index 125adb13..ef159ebf 100644 --- a/examples/AN00246_xua_example/README.rst +++ b/examples/AN00246_xua_example/README.rst @@ -1,6 +1,6 @@ -How to use the lib_xua_library -=============================== +Simple USB Audio Device using lib_xua +===================================== .. version:: 0.1.0 diff --git a/examples/AN00246_xua_example/doc/rst/AN00246.rst b/examples/AN00246_xua_example/doc/rst/AN00246.rst index 1c5b9ab9..9627120a 100644 --- a/examples/AN00246_xua_example/doc/rst/AN00246.rst +++ b/examples/AN00246_xua_example/doc/rst/AN00246.rst @@ -8,29 +8,16 @@ Overview Introduction ............ -The XMOS USB Audio (XUA) library provides an implemention of USB Audio Class 2.0 +The XMOS USB Audio (XUA) library provides an implemention of USB Audio Class versions 1.0 and 2.0. This application note demonstrates the implementation of a basic USB Audio Device on the xCORE-200 MC Audio board. -Block diagram -............. - -.. figure:: images/block_diagram.* - :width: 80% - - Application block diagram - -The application uses a single logical core which runs the application and makes -calls to the |I2C| master library functions as required. - -How to use lib_xua ------------------- The Makefile -............ +------------ -To start using the lib_xua, you need to add ``lib_xua`` to your Makefile:: +To start using ``lib_xua``, you need to add ``lib_xua`` to your Makefile:: USED_MODULES = .. lib_xua ... @@ -68,7 +55,7 @@ be included in your code to use the library. Allocating hardware resources ............................. -A most basic implementation of a USB Audio device (i.e. simple stereo input and output via I2S) +A basic implementation of a USB Audio device (i.e. simple stereo input and output via I2S) using ``lib_xua`` requires the follow pins: - I2S Bit Clock (from xCORE to DAC) @@ -79,20 +66,34 @@ using ``lib_xua`` requires the follow pins: .. note:: - ANOO246 assumes xCORE is I2S bus master + This application note assumes xCORE is I2S bus master On an xCORE the pins are controlled by ``ports``. The application therefore declares various ``ports`` for this purpose: .. literalinclude:: app_xua_simple.xc :start-on: /* Port declaration - :end-on: /* Clock-block + :end-on: in port p_mclk_in + +``lib_xua`` also requires two ports for internally calculating USB feedback. Please refer to +the ``lib_xua`` library documentation for further details. The additonal input port for the master +clock is required since USB and S/PDIF do not reside of the same tiles on the example hardware. + +These ports are declared as follows: + +.. literalinclude:: app_xua_simple.xc + :start-on: /* Resources for USB feedback + :end-on: in port p_mclk_in_usb In addition to ``port`` resources two clock-block resources are also required: .. literalinclude:: app_xua_simple.xc :start-on: /* Clock-block - :end-on: /* clock clk_audio_mclk + :end-on: clock clk_audio_mclk_usb + +Again, for the same reasoning as the master-clock ports, two master-clock clock-blocks are required +- one on each tile. + Other declarations .................. @@ -109,21 +110,21 @@ These are declared as follows: .. literalinclude:: app_xua_simple.xc :start-on: /* Endpoint type tables - :end-on: /* XUD_EpType epTypeTableIn + :end-on: XUD_EpType epTypeTableIn The application main() function -............................... +------------------------------- The ``main()`` function sets up the tasks in the application. Various channels are required in order to allow the required tasks to communcate. -These must be declared": +These must first be declared: .. literalinclude:: app_xua_simple.xc :start-on: /* Channels for lib_xud - :end-on: /* chan c_aud_ctl + :end-on: chan c_aud_ctl -The rest of the ``main()`` function starts all the tasks in parallel +The rest of the ``main()`` function starts all of the tasks in parallel using the xC ``par`` construct: .. literalinclude:: app_xua_simple.xc @@ -136,6 +137,25 @@ the audio I/O (i.e. I2S signalling). Configuration ............. +``lib_xua`` has many parameters than can be configured at build time, some examples include: + + - Sample-rates + - Channel counts + - Audio Class version + - Product/Vendor ID's + - Various product strings + - Master clock frequency + +These parameters are set via defines in an optional ``xua_conf.h`` header file. For this simple application the contents +of this file might look something like the following: + +.. literalinclude:: xua_conf.h + :start-on: // Copyright + :end-on: #endif + +Some items have sensible default values, items like strings and sample rates for example. However, some items are specific to a hardware +implentation e.g. master clock frequencies and must be defined. Please see the ``lib_xua`` library documentation for full details. + |appendix| |newpage| diff --git a/examples/AN00246_xua_example/src/app_xua_simple.xc b/examples/AN00246_xua_example/src/app_xua_simple.xc index bc5a19ee..e53f0778 100644 --- a/examples/AN00246_xua_example/src/app_xua_simple.xc +++ b/examples/AN00246_xua_example/src/app_xua_simple.xc @@ -22,23 +22,17 @@ buffered in port:32 p_i2s_adc[] = {PORT_I2S_ADC0}; /* I2S Data-line(s) */ buffered out port:32 p_lrclk = PORT_I2S_LRCLK; /* I2S Bit-clock */ buffered out port:32 p_bclk = PORT_I2S_BCLK; /* I2S L/R-clock */ -/* Note, declared unsafe as sometimes we want to share this port -e.g. PDM mics and I2S use same master clock IO */ -port p_mclk_in_ = PORT_MCLK_IN; - -unsafe -{ - /* TODO simplify this */ - unsafe port p_mclk_in; /* Audio master clock input */ -} +/* Master clock for the audio IO tile */ +in port p_mclk_in = PORT_MCLK_IN; +/* Resources for USB feedback */ in port p_for_mclk_count = PORT_MCLK_COUNT; /* Extra port for counting master clock ticks */ -in port p_mclk_in2 = PORT_MCLK_IN2; +in port p_mclk_in_usb = PORT_MCLK_IN_USB; /* Extra master clock input for the USB tile */ /* Clock-block declarations */ clock clk_audio_bclk = on tile[0]: XS1_CLKBLK_4; /* Bit clock */ clock clk_audio_mclk = on tile[0]: XS1_CLKBLK_5; /* Master clock */ -clock clk_audio_mclk2 = on tile[1]: XS1_CLKBLK_1; /* Master clock */ +clock clk_audio_mclk_usb = on tile[1]: XS1_CLKBLK_1; /* Master clock for USB tile */ /* Endpoint type tables - informs XUD what the transfer types for each Endpoint in use and also * if the endpoint wishes to be informed of USB bus resets */ @@ -54,10 +48,10 @@ int main() /* Channel for communicating SOF notifications from XUD to the Buffering cores */ chan c_sof; - /* Channel for audio data between buffering cores and audio IO core */ + /* Channel for audio data between buffering cores and AudioHub/IO core */ chan c_aud; - /* Channel for communicating control messages from EP0 to the rest of the device (via the buffering cores */ + /* Channel for communicating control messages from EP0 to the rest of the device (via the buffering cores) */ chan c_aud_ctl; par @@ -66,7 +60,7 @@ int main() on tile[1]: XUD_Main(c_ep_out, 2, c_ep_in, 2, c_sof, epTypeTableOut, epTypeTableIn, null, null, -1 , - XUD_SPEED_HS, XUD_PWR_BUS); + XUD_SPEED_HS, XUD_PWR_SELF); /* Endpoint 0 core from lib_xua */ /* Note, since we are not using many features we pass in null for quite a few params.. */ @@ -75,22 +69,18 @@ int main() /* Buffering cores - handles audio data to/from EP's and gives/gets data to/from the audio I/O core */ /* Note, this spawns two cores */ on tile[1]: { - set_clock_src(clk_audio_mclk2, p_mclk_in2); - set_port_clock(p_for_mclk_count, clk_audio_mclk2); - start_clock(clk_audio_mclk2); + + /* Connect master-clock clock-block to clock-block pin */ + set_clock_src(clk_audio_mclk_usb, p_mclk_in_usb); /* Clock clock-block from mclk pin */ + set_port_clock(p_for_mclk_count, clk_audio_mclk_usb); /* Clock the "count" port from the clock block */ + start_clock(clk_audio_mclk_usb); /* Set the clock off running */ XUA_Buffer(c_ep_out[1], c_ep_in[1], c_sof, c_aud_ctl, p_for_mclk_count, c_aud); } - /* IOHub core does most of the audio IO i.e. I2S (also serves as a hub for all audio) */ - on tile[0]: { - unsafe - { - p_mclk_in = p_mclk_in_; - } - XUA_AudioHub(c_aud); - } + /* AudioHub/IO core does most of the audio IO i.e. I2S (also serves as a hub for all audio) */ + on tile[0]: XUA_AudioHub(c_aud, clk_audio_mclk, clk_audio_bclk, p_mclk_in, p_lrclk, p_bclk, p_i2s_dac, p_i2s_adc); } return 0; diff --git a/examples/AN00246_xua_example/src/hwsupport.xc b/examples/AN00246_xua_example/src/hwsupport.xc index ad53b961..f9ed5af7 100644 --- a/examples/AN00246_xua_example/src/hwsupport.xc +++ b/examples/AN00246_xua_example/src/hwsupport.xc @@ -2,15 +2,15 @@ #include #include +#include #include "xua.h" -#include "i2c_shared.h" +#include "i2c.h" /* From lib_i2c */ #include "cs5368.h" #include "cs4384.h" -on tile [0] : struct r_i2c r_i2c = {XS1_PORT_4A}; - +port p_i2c = on tile[0]:XS1_PORT_4A; /* General output port bit definitions */ #define P_GPIO_DSD_MODE (1 << 0) /* DSD mode select 0 = 8i/8o I2S, 1 = 8o DSD*/ @@ -22,17 +22,16 @@ on tile [0] : struct r_i2c r_i2c = {XS1_PORT_4A}; #define P_GPIO_ADC_RST_N (1 << 6) #define P_GPIO_MCLK_FSEL (1 << 7) /* Select frequency on Phaselink clock. 0 = 24.576MHz for 48k, 1 = 22.5792MHz for 44.1k.*/ -#define DAC_REGWRITE(reg, val) {data[0] = val; i2c_shared_master_write_reg(r_i2c, CS4384_I2C_ADDR, reg, data, 1);} -#define DAC_REGREAD(reg, val) {i2c_shared_master_read_reg(r_i2c, CS4384_I2C_ADDR, reg, val, 1);} -#define ADC_REGWRITE(reg, val) {data[0] = val; i2c_shared_master_write_reg(r_i2c, CS5368_I2C_ADDR, reg, data, 1);} +#define DAC_REGWRITE(reg, val) result = i2c.write_reg(CS4384_I2C_ADDR, reg, val); +#define DAC_REGREAD(reg) data = i2c.read_reg(CS4384_I2C_ADDR, reg, result); +#define ADC_REGWRITE(reg, val) result = i2c.write_reg(CS5368_I2C_ADDR, reg, val); out port p_gpio = on tile[0]:XS1_PORT_8C; -void AudioHwConfig(unsigned samFreq, unsigned mClk, unsigned dsdMode, - unsigned sampRes_DAC, unsigned sampRes_ADC) +void AudioHwConfig2(unsigned samFreq, unsigned mClk, unsigned dsdMode, unsigned sampRes_DAC, unsigned sampRes_ADC, client interface i2c_master_if i2c) { - unsigned char data[1] = {0}; unsigned char gpioVal = 0; + i2c_regop_res_t result; /* Set master clock select appropriately and put ADC and DAC into reset */ if (mClk == MCLK_441) @@ -67,6 +66,7 @@ void AudioHwConfig(unsigned samFreq, unsigned mClk, unsigned dsdMode, */ ADC_REGWRITE(CS5368_GCTL_MDE, 0b10010000 | (dif << 2) | mode); + /* Reg 0x06: (PDN) Power Down Register */ /* Bit[7:6]: Reserved * Bit[5]: PDN-BG: When set, this bit powers-own the bandgap reference @@ -90,8 +90,8 @@ void AudioHwConfig(unsigned samFreq, unsigned mClk, unsigned dsdMode, * bit[0] : Power Down (PDN) : Powered down */ DAC_REGWRITE(CS4384_MODE_CTRL, 0b11000001); - - /* PCM Control (Address: 0x03) */ + + /* PCM Control (Address: 0x03) */ /* bit[7:4] : Digital Interface Format (DIF) : 0b0001 for I2S up to 24bit * bit[3:2] : Reserved * bit[1:0] : Functional Mode (FM) : 0x00 - single-speed mode (4-50kHz) @@ -120,6 +120,8 @@ void AudioHwConfig(unsigned samFreq, unsigned mClk, unsigned dsdMode, */ DAC_REGWRITE(CS4384_MODE_CTRL, 0b10000000); + /* Kill the i2c task */ + i2c.shutdown(); return; } @@ -128,8 +130,16 @@ void AudioHwInit() /* Set USB Mux to micro-b */ /* ADC and DAC in reset */ p_gpio <: P_GPIO_USB_SEL0 | P_GPIO_USB_SEL1; - - /* Init the i2c module */ - i2c_shared_master_init(r_i2c); +} + +void AudioHwConfig(unsigned samFreq, unsigned mClk, unsigned dsdMode, + unsigned sampRes_DAC, unsigned sampRes_ADC) +{ + i2c_master_if i2c[1]; + par + { + i2c_master_single_port(i2c, 1, p_i2c, 10, 0, 1, 0); + AudioHwConfig2(samFreq, mClk, dsdMode, sampRes_DAC, sampRes_ADC, i2c[0]); + } } diff --git a/examples/AN00246_xua_example/src/xk-audio-216-mc.xn b/examples/AN00246_xua_example/src/xk-audio-216-mc.xn index f9c5220f..c2e90f16 100644 --- a/examples/AN00246_xua_example/src/xk-audio-216-mc.xn +++ b/examples/AN00246_xua_example/src/xk-audio-216-mc.xn @@ -40,9 +40,10 @@ - + - + + --> diff --git a/examples/AN00246_xua_example/src/xua_conf.h b/examples/AN00246_xua_example/src/xua_conf.h index 63120c11..d879e272 100644 --- a/examples/AN00246_xua_example/src/xua_conf.h +++ b/examples/AN00246_xua_example/src/xua_conf.h @@ -1,24 +1,25 @@ // Copyright (c) 2017-2018, XMOS Ltd, All rights reserved -#define NUM_USB_CHAN_OUT 2 -#define NUM_USB_CHAN_IN 2 -#define I2S_CHANS_DAC 2 -#define I2S_CHANS_ADC 2 -#define MCLK_441 (512 * 44100) -#define MCLK_48 (512 * 48000) -#define MIN_FREQ 48000 -#define MAX_FREQ 48000 +#ifndef _XUA_CONF_H_ +#define _XUA_CONF_H_ + +#define NUM_USB_CHAN_OUT 2 /* Number of channels from host to device */ +#define NUM_USB_CHAN_IN 2 /* Number of channels from device to host */ +#define I2S_CHANS_DAC 2 /* Number of I2S channels out of xCORE */ +#define I2S_CHANS_ADC 2 /* Number of I2S channels in to xCORE */ +#define MCLK_441 (512 * 44100) /* 44.1kHz family master clock frequency */ +#define MCLK_48 (512 * 48000) /* 48kHz family master clock frequency */ +#define MIN_FREQ 48000 /* Minimum sample rate */ +#define MAX_FREQ 48000 /* Maximum sample rate */ #define EXCLUDE_USB_AUDIO_MAIN -#define SPDIF_TX_INDEX 0 -#define VENDOR_STR "XMOS" -#define VENDOR_ID 0x20B1 -#define PRODUCT_STR_A2 "XUA Example" -#define PRODUCT_STR_A1 "XUA Example" -#define PID_AUDIO_1 1 -#define PID_AUDIO_2 2 -#define AUDIO_CLASS 2 -#define AUDIO_CLASS_FALLBACK 0 -#define BCD_DEVICE 0x1234 -#define XUA_DFU_EN 0 +#define VENDOR_STR "XMOS" +#define VENDOR_ID 0x20B1 +#define PRODUCT_STR_A2 "XUA Example" +#define PRODUCT_STR_A1 "XUA Example" +#define PID_AUDIO_1 1 +#define PID_AUDIO_2 2 +#define XUA_DFU_EN 0 /* Disable DFU (for simplicity of example */ + +#endif diff --git a/examples/AN00247_xua_example_spdif_tx/LICENSE.txt b/examples/AN00247_xua_example_spdif_tx/LICENSE.txt new file mode 100644 index 00000000..236b6d1a --- /dev/null +++ b/examples/AN00247_xua_example_spdif_tx/LICENSE.txt @@ -0,0 +1,135 @@ +Software Release License Agreement + +Copyright (c) 2018, XMOS, All rights reserved. + +BY ACCESSING, USING, INSTALLING OR DOWNLOADING THE XMOS SOFTWARE, YOU AGREE TO BE BOUND BY THE FOLLOWING TERMS. IF YOU DO NOT AGREE TO THESE, DO NOT ATTEMPT TO DOWNLOAD, ACCESS OR USE THE XMOS Software. + +Parties: + +(1) XMOS Limited, incorporated and registered in England and Wales with company number 5494985 whose registered office is 107 Cheapside, London, EC2V 6DN (XMOS). + +(2) An individual or legal entity exercising permissions granted by this License (Customer). + +If you are entering into this Agreement on behalf of another legal entity such as a company, partnership, university, college etc. (for example, as an employee, student or consultant), you warrant that you have authority to bind that entity. + +1. Definitions + +"License" means this Software License and any schedules or annexes to it. + +"License Fee" means the fee for the XMOS Software as detailed in any schedules or annexes to this Software License + +"Licensee Modifications" means all developments and modifications of the XMOS Software developed independently by the Customer. + +"XMOS Modifications" means all developments and modifications of the XMOS Software developed or co-developed by XMOS. + +"XMOS Hardware" means any XMOS hardware devices supplied by XMOS from time to time and/or the particular XMOS devices detailed in any schedules or annexes to this Software License. + +"XMOS Software" comprises the XMOS owned circuit designs, schematics, source code, object code, reference designs, (including related programmer comments and documentation, if any), error corrections, improvements, modifications (including XMOS Modifications) and updates. + +The headings in this License do not affect its interpretation. Save where the context otherwise requires, references to clauses and schedules are to clauses and schedules of this License. + +Unless the context otherwise requires: + +- references to XMOS and the Customer include their permitted successors and assigns; +- references to statutory provisions include those statutory provisions as amended or re-enacted; and +- references to any gender include all genders. + +Words in the singular include the plural and in the plural include the singular. + +2. License + +XMOS grants the Customer a non-exclusive license to use, develop, modify and distribute the XMOS Software with, or for the purpose of being used with, XMOS Hardware. + +Open Source Software (OSS) must be used and dealt with in accordance with any license terms under which OSS is distributed. + +3. Consideration + +In consideration of the mutual obligations contained in this License, the parties agree to its terms. + +4. Term + +Subject to clause 12 below, this License shall be perpetual. + +5. Restrictions on Use + +The Customer will adhere to all applicable import and export laws and regulations of the country in which it resides and of the United States and United Kingdom, without limitation. The Customer agrees that it is its responsibility to obtain copies of and to familiarise itself fully with these laws and regulations to avoid violation. + +6. Modifications + +The Customer will own all intellectual property rights in the Licensee Modifications but will undertake to provide XMOS with any fixes made to correct any bugs found in the XMOS Software on a non-exclusive, perpetual and royalty free license basis. + +XMOS will own all intellectual property rights in the XMOS Modifications. +The Customer may only use the Licensee Modifications and XMOS Modifications on, or in relation to, XMOS Hardware. + +7. Support + +Support of the XMOS Software may be provided by XMOS pursuant to a separate support agreement. + +8. Warranty and Disclaimer + +The XMOS Software is provided "AS IS" without a warranty of any kind. XMOS and its licensors' entire liability and Customer's exclusive remedy under this warranty to be determined in XMOS's sole and absolute discretion, will be either (a) the corrections of defects in media or replacement of the media, or (b) the refund of the license fee paid (if any). + +Whilst XMOS gives the Customer the ability to load their own software and applications onto XMOS devices, the security of such software and applications when on the XMOS devices is the Customer's own responsibility and any breach of security shall not be deemed a defect or failure of the hardware. XMOS shall have no liability whatsoever in relation to any costs, damages or other losses Customer may incur as a result of any breaches of security in relation to your software or applications. + +XMOS AND ITS LICENSORS DISCLAIM ALL OTHER WARRANTIES, EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY/ SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT EXCEPT TO THE EXTENT THAT THESE DISCLAIMERS ARE HELD TO BE LEGALLY INVALID UNDER APPLICABLE LAW. + +9. High Risk Activities + +The XMOS Software is not designed or intended for use in conjunction with on-line control equipment in hazardous environments requiring fail-safe performance, including without limitation the operation of nuclear facilities, aircraft navigation or communication systems, air traffic control, life support machines, or weapons systems (collectively "High Risk Activities") in which the failure of the XMOS Software could lead directly to death, personal injury, or severe physical or environmental damage. XMOS and its licensors specifically disclaim any express or implied warranties relating to use of the XMOS Software in connection with High Risk Activities. + +10. Liability + +TO THE EXTENT NOT PROHIBITED BY APPLICABLE LAW, NEITHER XMOS NOR ITS LICENSORS SHALL BE LIABLE FOR ANY LOST REVENUE, BUSINESS, PROFIT, CONTRACTS OR DATA, ADMINISTRATIVE OR OVERHEAD EXPENSES, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES HOWEVER CAUSED AND REGARDLESS OF THEORY OF LIABILITY ARISING OUT OF THIS LICENSE, EVEN IF XMOS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. In no event shall XMOS's liability to the Customer whether in contract, tort (including negligence), or otherwise exceed the License Fee. + +Customer agrees to indemnify, hold harmless, and defend XMOS and its licensors from and against any claims or lawsuits, including attorneys' fees and any other liabilities, demands, proceedings, damages, losses, costs, expenses fines and charges which are made or brought against or incurred by XMOS as a result of your use or distribution of the Licensee Modifications or your use or distribution of XMOS Software, or any development of it, other than in accordance with the terms of this License. + +11. Ownership + +The copyrights and all other intellectual and industrial property rights for the protection of information with respect to the XMOS Software (including the methods and techniques on which they are based) are retained by XMOS and/or its licensors. Nothing in this Agreement serves to transfer such rights. Customer may not sell, mortgage, underlet, sublease, sublicense, lend or transfer possession of the XMOS Software in any way whatsoever to any third party who is not bound by this Agreement. + +12. Termination + +Either party may terminate this License at any time on written notice to the other if the other: + +- is in material or persistent breach of any of the terms of this License and either that breach is incapable of remedy, or the other party fails to remedy that breach within 30 days after receiving written notice requiring it to remedy that breach; or + +- is unable to pay its debts (within the meaning of section 123 of the Insolvency Act 1986), or becomes insolvent, or is subject to an order or a resolution for its liquidation, administration, winding-up or dissolution (otherwise than for the purposes of a solvent amalgamation or reconstruction), or has an administrative or other receiver, manager, trustee, liquidator, administrator or similar officer appointed over all or any substantial part of its assets, or enters into or proposes any composition or arrangement with its creditors generally, or is subject to any analogous event or proceeding in any applicable jurisdiction. + +Termination by either party in accordance with the rights contained in clause 12 shall be without prejudice to any other rights or remedies of that party accrued prior to termination. + +On termination for any reason: + +- all rights granted to the Customer under this License shall cease; +- the Customer shall cease all activities authorised by this License; +- the Customer shall immediately pay any sums due to XMOS under this License; and +- the Customer shall immediately destroy or return to the XMOS (at the XMOS's option) all copies of the XMOS Software then in its possession, custody or control and, in the case of destruction, certify to XMOS that it has done so. + +Clauses 5, 8, 9, 10 and 11 shall survive any effective termination of this Agreement. + +13. Third party rights + +No term of this License is intended to confer a benefit on, or to be enforceable by, any person who is not a party to this license. + +14. Confidentiality and publicity + +Each party shall, during the term of this License and thereafter, keep confidential all, and shall not use for its own purposes nor without the prior written consent of the other disclose to any third party any, information of a confidential nature (including, without limitation, trade secrets and information of commercial value) which may become known to such party from the other party and which relates to the other party, unless such information is public knowledge or already known to such party at the time of disclosure, or subsequently becomes public knowledge other than by breach of this license, or subsequently comes lawfully into the possession of such party from a third party. + +The terms of this license are confidential and may not be disclosed by the Customer without the prior written consent of XMOS. +The provisions of clause 14 shall remain in full force and effect notwithstanding termination of this license for any reason. + +15. Entire agreement + +This License and the documents annexed as appendices to this License or otherwise referred to herein contain the whole agreement between the parties relating to the subject matter hereof and supersede all prior agreements, arrangements and understandings between the parties relating to that subject matter. + +16. Assignment + +The Customer shall not assign this License or any of the rights granted under it without XMOS's prior written consent. + +17. Governing law and jurisdiction + +This License shall be governed by and construed in accordance with English law and each party hereby submits to the non-exclusive jurisdiction of the English courts. + +This License has been entered into on the date stated at the beginning of it. + +Schedule +XMOS application note AN00247 software diff --git a/examples/AN00247_xua_example_spdif_tx/Makefile b/examples/AN00247_xua_example_spdif_tx/Makefile new file mode 100644 index 00000000..cedcb1c7 --- /dev/null +++ b/examples/AN00247_xua_example_spdif_tx/Makefile @@ -0,0 +1,21 @@ +APP_NAME = app_xua_simple + +TARGET = xk-audio-216-mc.xn + +# The flags passed to xcc when building the application +XCC_FLAGS = -fcomment-asm -Xmapper --map -Xmapper MAPFILE -O3 -report -fsubword-select -save-temps \ + -g -Wno-unused-function -Wno-timing -DXUD_SERIES_SUPPORT=XUD_X200_SERIES -DUSB_TILE=tile[1] \ + -DSDA_HIGH=2 -DSCL_HIGH=1 -fxscope + +# The USED_MODULES variable lists other module used by the application. These +# modules will extend the SOURCE_DIRS, INCLUDE_DIRS and LIB_DIRS variables. +# Modules are expected to be in the directory above the BASE_DIR directory. +USED_MODULES = lib_xua lib_xud lib_spdif + +#============================================================================= +# The following part of the Makefile includes the common build infrastructure +# for compiling XMOS applications. You should not need to edit below here. + +XMOS_MAKE_PATH ?= ../.. +include $(XMOS_MAKE_PATH)/xcommon/module_xcommon/build/Makefile.common + diff --git a/examples/AN00247_xua_example_spdif_tx/README.rst b/examples/AN00247_xua_example_spdif_tx/README.rst new file mode 100644 index 00000000..2026272a --- /dev/null +++ b/examples/AN00247_xua_example_spdif_tx/README.rst @@ -0,0 +1,34 @@ + +Using lib_xua with lib_spdif (transmit) +======================================= + +.. version:: 0.1.0 + +Summary +------- + +Required tools and libraries +............................ + +.. appdeps:: + +Required hardware +................. + +The example code provided with the application has been implemented +and tested on the xCORE-200 Multi-channel Audio Board + +Prerequisites +............. + + * This document assumes familiarity with the XMOS xCORE architecture, + the XMOS tool chain and the xC language. Documentation related to these + aspects which are not specific to this application note are linked to in + the references appendix. + + * For a description of XMOS related terms found in this document + please see the XMOS Glossary [#]_. + +.. [#] http://www.xmos.com/published/glossary + + diff --git a/examples/AN00246_xua_example/doc/AN00246.rst b/examples/AN00247_xua_example_spdif_tx/doc/rst/AN00247.rst similarity index 59% rename from examples/AN00246_xua_example/doc/AN00246.rst rename to examples/AN00247_xua_example_spdif_tx/doc/rst/AN00247.rst index 89267983..d36ba8e4 100644 --- a/examples/AN00246_xua_example/doc/AN00246.rst +++ b/examples/AN00247_xua_example_spdif_tx/doc/rst/AN00247.rst @@ -8,31 +8,22 @@ Overview Introduction ............ -The XMOS USB Audio (XUA) library provides an implemention of USB Audio Class 2.0 +The XMOS USB Audio (XUA) library provides an implemention of USB Audio Class versions 1.0 and 2.0. -This application note demonstrates the implementation of a basic USB Audio Device on -the xCORE-200 MC Audio board. +This application note demonstrates the implementation of a basic USB Audio Device with +S/PDIF transmit functionality the xCORE-200 MC Audio board. -Block diagram -............. +To reduce complexity this application note does not enable any other audio interfaces other that S/PDIF transmit +(i.e. no I2S). Readers are encouraged to read applicaition note AN00246 in conjunction with this application +note. -.. figure:: images/block_diagram.* - :width: 80% - - Application block diagram - -The application uses a single logical core which runs the application and makes -calls to the |I2C| master library functions as required. - -How to use lib_xua ------------------- The Makefile -............ +------------ -To start using the lib_xua, you need to add ``lib_xua`` to your Makefile:: +To start using ``lib_xua``, you need to add ``lib_xua`` and ``lib_spdif`` to your Makefile:: - USED_MODULES = .. lib_xua ... + USED_MODULES = .. lib_xua lib_spdif ... This demo also uses the XMOS USB Device library (``lib_xud``) for low-level USB connectivity. The Makefile also includes:: @@ -49,7 +40,7 @@ Secondly, the architecture of the target device, for example:: XCC_FLAGS = .. -DXUD_SERIES_SUPPORT=XUD_X200_SERIES .. Includes -........ +-------- This application requires the system header that defines XMOS xCORE specific defines for declaring and initialising hardware: @@ -65,40 +56,73 @@ be included in your code to use the library. :start-on: include "xua.h" :end-on: include "xud_device.h" -Allocating hardware resources -............................. - -A most basic implementation of a USB Audio device (i.e. simple stereo input and output via I2S) -using ``lib_xua`` requires the follow pins: - - - I2S Bit Clock (from xCORE to DAC) - - I2S L/R clock (from xCORE to DAC) - - I2S Data line (from xCORE to DAC) - - I2S Data line (from ADC to xCORE) - - Audio Master clock (from clock source to xCORE) - -.. note:: - - ANOO246 assumes xCORE is I2S bus master - -On an xCORE the pins are controlled by ``ports``. The application therefore declares various ``ports`` -for this purpose: +The application uses the S/PDIF transmitter from ``lib_spdif``. This header +must be included in your code. .. literalinclude:: app_xua_simple.xc - :start-on: /* Port declaration - :end-on: /* Clock-block + :start-on: /* From lib_spdif + :end-on: include "spdif.h" + +Declarations +------------ + +Allocating hardware resources for lib_xua +......................................... + +A minimal implementation of a USB Audio device, without I2S functionalilty, +using ``lib_xua`` requires the follow pins: + + - Audio Master clock (from clock source to xCORE) + +On an xCORE the pins are controlled by ``ports``. The application therefore declares a +port for the master clock input signal. + +.. literalinclude:: app_xua_simple.xc + :start-on: /* Lib_xua port declaration + :end-on: in port p_mclk_in + +``lib_xua`` also requires two ports for internally calculating USB feedback. Please refer to +the ``lib_xua`` library documentation for further details. The additonal input port for the master +clock is required since USB and S/PDIF do not reside of the same tiles on the example hardware. + +These ports are declared as follows: + +.. literalinclude:: app_xua_simple.xc + :start-on: /* Resources for USB feedback + :end-on: in port p_mclk_in_usb In addition to ``port`` resources two clock-block resources are also required: .. literalinclude:: app_xua_simple.xc :start-on: /* Clock-block - :end-on: /* clock clk_audio_mclk + :end-on: clock clk_audio_mclk_usb + +Again, for the same reasoning as the master-clock ports, two master-clock clock-blocks are required +- one on each tile. + + +Allocating hardware resources for lib_spdif +........................................... + +The S/PDIF transmitter requires a single (buffered) 1-bit port: + +.. literalinclude:: app_xua_simple.xc + :start-on: /* Lib_spdif port + :end-on: buffered out port + +This port must be clocked from the audio master clock. This application note chooses to declare +an extra clock-block as follows: + +.. literalinclude:: app_xua_simple.xc + :start-on: clock clk_spdif_tx + :end-before: /* Lib_xua + Other declarations .................. ``lib_xua`` currently requires the manual declaration of tables for the endpoint types for -``lib_xud`` and the calling the main XUD funtion in a par (``XUD_Main()``). +``lib_xud`` and the calling the main XUD function in a par (``XUD_Main()``). For a simple application the following endpoints are required: @@ -109,32 +133,12 @@ These are declared as follows: .. literalinclude:: app_xua_simple.xc :start-on: /* Endpoint type tables - :end-on: /* XUD_EpType epTypeTableIn + :end-on: XUD_EpType epTypeTableIn -The application main() function -............................... +Configuring lib_xua +------------------- -The ``main()`` function sets up the tasks in the application. - -Various channels are required in order to allow the required tasks to communcate. -These must be declared": - -.. literalinclude:: app_xua_simple.xc - :start-on: /* Channels for lib_xud - :end-on: /* chan c_aud_ctl - -The rest of the ``main()`` function starts all the tasks in parallel -using the xC ``par`` construct: - -.. literalinclude:: app_xua_simple.xc - :start-on: par - :end-before: return 0 - -This code starts the low-level USB task, an Endpoint 0 task, an Audio buffering task and a task to handle -the audio I/O (i.e. I2S signalling). - -Configuration -............. +``lib_xua`` must be configued to enable S/PDIF Tx functionality. ``lib_xua`` has many parameters than can be configured at build time, some examples include: @@ -145,7 +149,41 @@ Configuration - Various product strings - Master clock frequency -These parameters are set via defines in an optional ``xua_conf.h`` header file. +To enable S/PDIF functionality ``XUA_SPDIF_TX_EN`` must be set to a non-zero value. Setting this will cause the ``XUA_AudioHub`` +tasks to forward samples and sample rate information to the S/PDIF transmitter task. + +These parameters are set via defines in an optional ``xua_conf.h`` header file. For this simple application the +complete contents of this file are as follows: + +.. literalinclude:: xua_conf.h + :start-on: // Copyright + :end-on: #endif + +The application main() function +------------------------------- + +The ``main()`` function sets up the tasks in the application. + +Various channels are required in order to allow the required tasks to communcate. +These must first be declared: + +.. literalinclude:: app_xua_simple.xc + :start-on: /* Channels for lib_xud + :end-on: chan c_spdif_tx + +The rest of the ``main()`` function starts all of the tasks in parallel +using the xC ``par`` construct: + +.. literalinclude:: app_xua_simple.xc + :start-on: par + :end-before: return 0 + +This code starts the low-level USB task, an Endpoint 0 task, an Audio buffering task and a task to handle +the audio I/O. Note, since there is no I2S funcitonality in this example this task simply forwards samples to the +SPDIF transmitter task. In addition the ``spdif_tx()`` task is also run. + +Note that the ``spdif_tx_port_config()`` function is called before a nested ``par`` of ``spdif_tx()`` and ``XUA_AudioHub()``. +This is because of the "shared" nature of ``p_mclk_in`` and avoids a parrallel usage check failure by the XMOS toolchain. |appendix| |newpage| diff --git a/examples/AN00247_xua_example_spdif_tx/doc/rst/images/hw_setup.jpg b/examples/AN00247_xua_example_spdif_tx/doc/rst/images/hw_setup.jpg new file mode 100644 index 00000000..8998805d Binary files /dev/null and b/examples/AN00247_xua_example_spdif_tx/doc/rst/images/hw_setup.jpg differ diff --git a/examples/AN00247_xua_example_spdif_tx/doc/rst/xdoc.conf b/examples/AN00247_xua_example_spdif_tx/doc/rst/xdoc.conf new file mode 100644 index 00000000..37460abf --- /dev/null +++ b/examples/AN00247_xua_example_spdif_tx/doc/rst/xdoc.conf @@ -0,0 +1,2 @@ +XMOSNEWSTYLE=1 +SOURCE_INCLUDE_DIRS=../../src \ No newline at end of file diff --git a/examples/AN00247_xua_example_spdif_tx/src/app_xua_simple.xc b/examples/AN00247_xua_example_spdif_tx/src/app_xua_simple.xc new file mode 100644 index 00000000..9c9e3703 --- /dev/null +++ b/examples/AN00247_xua_example_spdif_tx/src/app_xua_simple.xc @@ -0,0 +1,105 @@ +// Copyright (c) 2017-2018, XMOS Ltd, All rights reserved + +/* A very simple *example* of a USB audio application (and as such is un-verified for production) + * + * It uses the main blocks from the lib_xua + * + * - S/PDIF output only + * - No DFU + * + */ + +#include +#include + +#include "xua.h" +#include "xud_device.h" + +/* From lib_spdif */ +#include "spdif.h" + +/* Lib_spdif port declarations. Note, the defines come from the xn file */ +buffered out port:32 p_spdif_tx = PORT_SPDIF_OUT; /* SPDIF transmit port */ + +clock clk_spdif_tx = on tile[0]: XS1_CLKBLK_4; /* Clock block for S/PDIF transmit */ + +/* Lib_xua port declarations. Note, the defines come from the xn file */ +in port p_mclk_in = PORT_MCLK_IN; /* Master clock for the audio IO tile */ + +/* Resources for USB feedback */ +in port p_for_mclk_count = PORT_MCLK_COUNT; /* Extra port for counting master clock ticks */ +in port p_mclk_in_usb = PORT_MCLK_IN_USB; /* Extra master clock input for the USB tile */ + +/* Clock-block declarations */ +clock clk_audio_mclk = on tile[0]: XS1_CLKBLK_5; /* Master clock */ +clock clk_audio_mclk_usb = on tile[1]: XS1_CLKBLK_1; /* Master clock for USB tile */ + +/* Endpoint type tables - informs XUD what the transfer types for each Endpoint in use and also + * if the endpoint wishes to be informed of USB bus resets */ +XUD_EpType epTypeTableOut[] = {XUD_EPTYPE_CTL | XUD_STATUS_ENABLE, XUD_EPTYPE_ISO}; +XUD_EpType epTypeTableIn[] = {XUD_EPTYPE_CTL | XUD_STATUS_ENABLE, XUD_EPTYPE_ISO}; + +int main() +{ + /* Channels for lib_xud */ + chan c_ep_out[2]; + chan c_ep_in[2]; + + /* Channel for communicating SOF notifications from XUD to the Buffering cores */ + chan c_sof; + + /* Channel for audio data between buffering cores and AudioHub/IO core */ + chan c_aud; + + /* Channel for communicating control messages from EP0 to the rest of the device (via the buffering cores) */ + chan c_aud_ctl; + + /* Channel for communication between AudioHub and S/PDIF transmitter */ + chan c_spdif_tx; + + par + { + /* Low level USB device layer core */ + on tile[1]: XUD_Main(c_ep_out, 2, c_ep_in, 2, c_sof, epTypeTableOut, epTypeTableIn, null, null, -1, XUD_SPEED_HS, XUD_PWR_SELF); + + /* Endpoint 0 core from lib_xua */ + /* Note, since we are not using many features we pass in null for quite a few params.. */ + on tile[1]: XUA_Endpoint0(c_ep_out[0], c_ep_in[0], c_aud_ctl, null, null, null, null); + + /* Buffering cores - handles audio data to/from EP's and gives/gets data to/from the audio I/O core */ + /* Note, this spawns two cores */ + on tile[1]: { + + /* Connect master-clock clock-block to clock-block pin */ + set_clock_src(clk_audio_mclk_usb, p_mclk_in_usb); /* Clock clock-block from mclk pin */ + set_port_clock(p_for_mclk_count, clk_audio_mclk_usb); /* Clock the "count" port from the clock block */ + start_clock(clk_audio_mclk_usb); /* Set the clock off running */ + + XUA_Buffer(c_ep_out[1], c_ep_in[1], c_sof, c_aud_ctl, p_for_mclk_count, c_aud); + } + + /* AudioHub() (I2S) and S/SPDIF Tx are on the same tile */ + on tile[0]: { + + /* Setup S/PDIF tx port from clock etc - note we do this before par to avoid parallel usage */ + spdif_tx_port_config(p_spdif_tx, clk_spdif_tx, p_mclk_in, 7); + + par + { + while(1) + { + /* Run the S/PDIF transmitter task */ + spdif_tx(p_spdif_tx, c_spdif_tx); + } + + /* AudioHub/IO core does most of the audio IO i.e. I2S (also serves as a hub for all audio) */ + /* Note, since we are not using I2S we pass in null for LR and Bit clock ports and the I2S dataline ports */ + XUA_AudioHub(c_aud, clk_audio_mclk, null, p_mclk_in, null, null, null, null, c_spdif_tx); + } + } + } + + return 0; +} + + diff --git a/examples/AN00247_xua_example_spdif_tx/src/hwsupport.xc b/examples/AN00247_xua_example_spdif_tx/src/hwsupport.xc new file mode 100644 index 00000000..33fc5bca --- /dev/null +++ b/examples/AN00247_xua_example_spdif_tx/src/hwsupport.xc @@ -0,0 +1,52 @@ +// Copyright (c) 2016-2018, XMOS Ltd, All rights reserved + +#include +#include + +#include "xua.h" + +/* General output port bit definitions */ +#define P_GPIO_DSD_MODE (1 << 0) /* DSD mode select 0 = 8i/8o I2S, 1 = 8o DSD*/ +#define P_GPIO_DAC_RST_N (1 << 1) +#define P_GPIO_USB_SEL0 (1 << 2) +#define P_GPIO_USB_SEL1 (1 << 3) +#define P_GPIO_VBUS_EN (1 << 4) +#define P_GPIO_PLL_SEL (1 << 5) /* 1 = CS2100, 0 = Phaselink clock source */ +#define P_GPIO_ADC_RST_N (1 << 6) +#define P_GPIO_MCLK_FSEL (1 << 7) /* Select frequency on Phaselink clock. 0 = 24.576MHz for 48k, 1 = 22.5792MHz for 44.1k.*/ + + +out port p_gpio = on tile[0]:XS1_PORT_8C; + +void AudioHwConfig(unsigned samFreq, unsigned mClk, unsigned dsdMode, + unsigned sampRes_DAC, unsigned sampRes_ADC) +{ + unsigned char data[1] = {0}; + unsigned char gpioVal = 0; + + /* Set master clock select appropriately and put ADC and DAC into reset */ + if (mClk == MCLK_441) + { + gpioVal = P_GPIO_USB_SEL0 | P_GPIO_USB_SEL1; + } + else + { + gpioVal = P_GPIO_USB_SEL0 | P_GPIO_USB_SEL1 | P_GPIO_MCLK_FSEL; + } + + /* Note, DAC and ADC held in reset */ + p_gpio <: gpioVal; + + /* Allow MCLK to settle */ + delay_microseconds(20000); + + return; +} + +void AudioHwInit() +{ + /* Set USB Mux to micro-b */ + /* ADC and DAC in reset */ + p_gpio <: P_GPIO_USB_SEL0 | P_GPIO_USB_SEL1; +} + diff --git a/examples/AN00247_xua_example_spdif_tx/src/xk-audio-216-mc.xn b/examples/AN00247_xua_example_spdif_tx/src/xk-audio-216-mc.xn new file mode 100644 index 00000000..c2e90f16 --- /dev/null +++ b/examples/AN00247_xua_example_spdif_tx/src/xk-audio-216-mc.xn @@ -0,0 +1,88 @@ + + + Board + XS2 MC Audio + + tileref tile[2] + tileref usb_tile + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + --> + --> + + + + + + + + + + --> + --> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/AN00247_xua_example_spdif_tx/src/xua_conf.h b/examples/AN00247_xua_example_spdif_tx/src/xua_conf.h new file mode 100644 index 00000000..d83f5a2e --- /dev/null +++ b/examples/AN00247_xua_example_spdif_tx/src/xua_conf.h @@ -0,0 +1,30 @@ +// Copyright (c) 2017-2018, XMOS Ltd, All rights reserved + +#ifndef _XUA_CONF_H_ +#define _XUA_CONF_H_ + +#define NUM_USB_CHAN_OUT 2 +#define NUM_USB_CHAN_IN 0 +#define I2S_CHANS_DAC 0 +#define I2S_CHANS_ADC 0 +#define MCLK_441 (512 * 44100) +#define MCLK_48 (512 * 48000) +#define MIN_FREQ 48000 +#define MAX_FREQ 48000 + +#define EXCLUDE_USB_AUDIO_MAIN + +#define XUA_SPDIF_TX_EN 1 +#define SPDIF_TX_INDEX 0 +#define VENDOR_STR "XMOS" +#define VENDOR_ID 0x20B1 +#define PRODUCT_STR_A2 "XUA SPDIF Example" +#define PRODUCT_STR_A1 "XUA SPDIF Example" +#define PID_AUDIO_1 1 +#define PID_AUDIO_2 2 +#define AUDIO_CLASS 2 +#define AUDIO_CLASS_FALLBACK 0 +#define BCD_DEVICE 0x1234 +#define XUA_DFU_EN 0 + +#endif diff --git a/examples/AN00247_xua_example_spdif_tx/src/xud_conf.h b/examples/AN00247_xua_example_spdif_tx/src/xud_conf.h new file mode 100644 index 00000000..c14d64a8 --- /dev/null +++ b/examples/AN00247_xua_example_spdif_tx/src/xud_conf.h @@ -0,0 +1,7 @@ +// Copyright (c) 2017-2018, XMOS Ltd, All rights reserved + +#include "xua_conf.h" + +/* TODO */ +#define XUD_UAC_NUM_USB_CHAN_OUT NUM_USB_CHAN_OUT +#define XUD_UAC_NUM_USB_CHAN_IN NUM_USB_CHAN_IN diff --git a/examples/AN00248_xua_example_pdm_mics/LICENSE.txt b/examples/AN00248_xua_example_pdm_mics/LICENSE.txt new file mode 100644 index 00000000..dd731b32 --- /dev/null +++ b/examples/AN00248_xua_example_pdm_mics/LICENSE.txt @@ -0,0 +1,135 @@ +Software Release License Agreement + +Copyright (c) 2018, XMOS, All rights reserved. + +BY ACCESSING, USING, INSTALLING OR DOWNLOADING THE XMOS SOFTWARE, YOU AGREE TO BE BOUND BY THE FOLLOWING TERMS. IF YOU DO NOT AGREE TO THESE, DO NOT ATTEMPT TO DOWNLOAD, ACCESS OR USE THE XMOS Software. + +Parties: + +(1) XMOS Limited, incorporated and registered in England and Wales with company number 5494985 whose registered office is 107 Cheapside, London, EC2V 6DN (XMOS). + +(2) An individual or legal entity exercising permissions granted by this License (Customer). + +If you are entering into this Agreement on behalf of another legal entity such as a company, partnership, university, college etc. (for example, as an employee, student or consultant), you warrant that you have authority to bind that entity. + +1. Definitions + +"License" means this Software License and any schedules or annexes to it. + +"License Fee" means the fee for the XMOS Software as detailed in any schedules or annexes to this Software License + +"Licensee Modifications" means all developments and modifications of the XMOS Software developed independently by the Customer. + +"XMOS Modifications" means all developments and modifications of the XMOS Software developed or co-developed by XMOS. + +"XMOS Hardware" means any XMOS hardware devices supplied by XMOS from time to time and/or the particular XMOS devices detailed in any schedules or annexes to this Software License. + +"XMOS Software" comprises the XMOS owned circuit designs, schematics, source code, object code, reference designs, (including related programmer comments and documentation, if any), error corrections, improvements, modifications (including XMOS Modifications) and updates. + +The headings in this License do not affect its interpretation. Save where the context otherwise requires, references to clauses and schedules are to clauses and schedules of this License. + +Unless the context otherwise requires: + +- references to XMOS and the Customer include their permitted successors and assigns; +- references to statutory provisions include those statutory provisions as amended or re-enacted; and +- references to any gender include all genders. + +Words in the singular include the plural and in the plural include the singular. + +2. License + +XMOS grants the Customer a non-exclusive license to use, develop, modify and distribute the XMOS Software with, or for the purpose of being used with, XMOS Hardware. + +Open Source Software (OSS) must be used and dealt with in accordance with any license terms under which OSS is distributed. + +3. Consideration + +In consideration of the mutual obligations contained in this License, the parties agree to its terms. + +4. Term + +Subject to clause 12 below, this License shall be perpetual. + +5. Restrictions on Use + +The Customer will adhere to all applicable import and export laws and regulations of the country in which it resides and of the United States and United Kingdom, without limitation. The Customer agrees that it is its responsibility to obtain copies of and to familiarise itself fully with these laws and regulations to avoid violation. + +6. Modifications + +The Customer will own all intellectual property rights in the Licensee Modifications but will undertake to provide XMOS with any fixes made to correct any bugs found in the XMOS Software on a non-exclusive, perpetual and royalty free license basis. + +XMOS will own all intellectual property rights in the XMOS Modifications. +The Customer may only use the Licensee Modifications and XMOS Modifications on, or in relation to, XMOS Hardware. + +7. Support + +Support of the XMOS Software may be provided by XMOS pursuant to a separate support agreement. + +8. Warranty and Disclaimer + +The XMOS Software is provided "AS IS" without a warranty of any kind. XMOS and its licensors' entire liability and Customer's exclusive remedy under this warranty to be determined in XMOS's sole and absolute discretion, will be either (a) the corrections of defects in media or replacement of the media, or (b) the refund of the license fee paid (if any). + +Whilst XMOS gives the Customer the ability to load their own software and applications onto XMOS devices, the security of such software and applications when on the XMOS devices is the Customer's own responsibility and any breach of security shall not be deemed a defect or failure of the hardware. XMOS shall have no liability whatsoever in relation to any costs, damages or other losses Customer may incur as a result of any breaches of security in relation to your software or applications. + +XMOS AND ITS LICENSORS DISCLAIM ALL OTHER WARRANTIES, EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY/ SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT EXCEPT TO THE EXTENT THAT THESE DISCLAIMERS ARE HELD TO BE LEGALLY INVALID UNDER APPLICABLE LAW. + +9. High Risk Activities + +The XMOS Software is not designed or intended for use in conjunction with on-line control equipment in hazardous environments requiring fail-safe performance, including without limitation the operation of nuclear facilities, aircraft navigation or communication systems, air traffic control, life support machines, or weapons systems (collectively "High Risk Activities") in which the failure of the XMOS Software could lead directly to death, personal injury, or severe physical or environmental damage. XMOS and its licensors specifically disclaim any express or implied warranties relating to use of the XMOS Software in connection with High Risk Activities. + +10. Liability + +TO THE EXTENT NOT PROHIBITED BY APPLICABLE LAW, NEITHER XMOS NOR ITS LICENSORS SHALL BE LIABLE FOR ANY LOST REVENUE, BUSINESS, PROFIT, CONTRACTS OR DATA, ADMINISTRATIVE OR OVERHEAD EXPENSES, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES HOWEVER CAUSED AND REGARDLESS OF THEORY OF LIABILITY ARISING OUT OF THIS LICENSE, EVEN IF XMOS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. In no event shall XMOS's liability to the Customer whether in contract, tort (including negligence), or otherwise exceed the License Fee. + +Customer agrees to indemnify, hold harmless, and defend XMOS and its licensors from and against any claims or lawsuits, including attorneys' fees and any other liabilities, demands, proceedings, damages, losses, costs, expenses fines and charges which are made or brought against or incurred by XMOS as a result of your use or distribution of the Licensee Modifications or your use or distribution of XMOS Software, or any development of it, other than in accordance with the terms of this License. + +11. Ownership + +The copyrights and all other intellectual and industrial property rights for the protection of information with respect to the XMOS Software (including the methods and techniques on which they are based) are retained by XMOS and/or its licensors. Nothing in this Agreement serves to transfer such rights. Customer may not sell, mortgage, underlet, sublease, sublicense, lend or transfer possession of the XMOS Software in any way whatsoever to any third party who is not bound by this Agreement. + +12. Termination + +Either party may terminate this License at any time on written notice to the other if the other: + +- is in material or persistent breach of any of the terms of this License and either that breach is incapable of remedy, or the other party fails to remedy that breach within 30 days after receiving written notice requiring it to remedy that breach; or + +- is unable to pay its debts (within the meaning of section 123 of the Insolvency Act 1986), or becomes insolvent, or is subject to an order or a resolution for its liquidation, administration, winding-up or dissolution (otherwise than for the purposes of a solvent amalgamation or reconstruction), or has an administrative or other receiver, manager, trustee, liquidator, administrator or similar officer appointed over all or any substantial part of its assets, or enters into or proposes any composition or arrangement with its creditors generally, or is subject to any analogous event or proceeding in any applicable jurisdiction. + +Termination by either party in accordance with the rights contained in clause 12 shall be without prejudice to any other rights or remedies of that party accrued prior to termination. + +On termination for any reason: + +- all rights granted to the Customer under this License shall cease; +- the Customer shall cease all activities authorised by this License; +- the Customer shall immediately pay any sums due to XMOS under this License; and +- the Customer shall immediately destroy or return to the XMOS (at the XMOS's option) all copies of the XMOS Software then in its possession, custody or control and, in the case of destruction, certify to XMOS that it has done so. + +Clauses 5, 8, 9, 10 and 11 shall survive any effective termination of this Agreement. + +13. Third party rights + +No term of this License is intended to confer a benefit on, or to be enforceable by, any person who is not a party to this license. + +14. Confidentiality and publicity + +Each party shall, during the term of this License and thereafter, keep confidential all, and shall not use for its own purposes nor without the prior written consent of the other disclose to any third party any, information of a confidential nature (including, without limitation, trade secrets and information of commercial value) which may become known to such party from the other party and which relates to the other party, unless such information is public knowledge or already known to such party at the time of disclosure, or subsequently becomes public knowledge other than by breach of this license, or subsequently comes lawfully into the possession of such party from a third party. + +The terms of this license are confidential and may not be disclosed by the Customer without the prior written consent of XMOS. +The provisions of clause 14 shall remain in full force and effect notwithstanding termination of this license for any reason. + +15. Entire agreement + +This License and the documents annexed as appendices to this License or otherwise referred to herein contain the whole agreement between the parties relating to the subject matter hereof and supersede all prior agreements, arrangements and understandings between the parties relating to that subject matter. + +16. Assignment + +The Customer shall not assign this License or any of the rights granted under it without XMOS's prior written consent. + +17. Governing law and jurisdiction + +This License shall be governed by and construed in accordance with English law and each party hereby submits to the non-exclusive jurisdiction of the English courts. + +This License has been entered into on the date stated at the beginning of it. + +Schedule +XMOS application note AN00248 software diff --git a/examples/AN00248_xua_example_pdm_mics/Makefile b/examples/AN00248_xua_example_pdm_mics/Makefile new file mode 100644 index 00000000..8681d0b5 --- /dev/null +++ b/examples/AN00248_xua_example_pdm_mics/Makefile @@ -0,0 +1,21 @@ +APP_NAME = app_xua_simple + +TARGET = mic_array_ref.xn + +# The flags passed to xcc when building the application +XCC_FLAGS = -fcomment-asm -Xmapper --map -Xmapper MAPFILE -O3 -report -fsubword-select -save-temps \ + -g -Wno-unused-function -Wno-timing -DXUD_SERIES_SUPPORT=XUD_X200_SERIES -DUSB_TILE=tile[1] \ + -DSDA_HIGH=2 -DSCL_HIGH=1 -fxscope + +# The USED_MODULES variable lists other module used by the application. These +# modules will extend the SOURCE_DIRS, INCLUDE_DIRS and LIB_DIRS variables. +# Modules are expected to be in the directory above the BASE_DIR directory. +USED_MODULES = lib_xua lib_xud lib_mic_array + +#============================================================================= +# The following part of the Makefile includes the common build infrastructure +# for compiling XMOS applications. You should not need to edit below here. + +XMOS_MAKE_PATH ?= ../.. +include $(XMOS_MAKE_PATH)/xcommon/module_xcommon/build/Makefile.common + diff --git a/examples/AN00248_xua_example_pdm_mics/README.rst b/examples/AN00248_xua_example_pdm_mics/README.rst new file mode 100644 index 00000000..22e3776e --- /dev/null +++ b/examples/AN00248_xua_example_pdm_mics/README.rst @@ -0,0 +1,37 @@ + +Using lib_xua with lib_mic_array +================================ + +.. version:: 0.1.0 + +Summary +------- + +This applicaition note describes how to use ``lib_mic_array`` in conjunction with ``lib_xua`` +to implement a USB Audio device with the ability to record from multiple PDM microphones. + +Required tools and libraries +............................ + +.. appdeps:: + +Required hardware +................. + +The example code provided with the application has been implemented +and tested on the xCORE-200 Array Microphone board. + +Prerequisites +............. + + * This document assumes familiarity with the XMOS xCORE architecture, + the XMOS tool chain and the xC language. Documentation related to these + aspects which are not specific to this application note are linked to in + the references appendix. + + * For a description of XMOS related terms found in this document + please see the XMOS Glossary [#]_. + +.. [#] http://www.xmos.com/published/glossary + + diff --git a/examples/AN00248_xua_example_pdm_mics/doc/rst/AN00248.rst b/examples/AN00248_xua_example_pdm_mics/doc/rst/AN00248.rst new file mode 100644 index 00000000..fb8b963d --- /dev/null +++ b/examples/AN00248_xua_example_pdm_mics/doc/rst/AN00248.rst @@ -0,0 +1,315 @@ +.. include:: ../../README.rst + +|newpage| + +Overview +-------- + +Introduction +............ + +The XMOS USB Audio (XUA) library provides an implementation of USB Audio Class versions 1.0 and 2.0. + +This application note demonstrates the implementation of a basic USB Audio Device with +record functionality from PDM microphones on the xCORE-200 Array Microphone board. + +Core PDM microphone functionality is contained in` ``lib_mic_array``. This library includes both the physical +interfacing to the PDM microphones as well as efficient decimation to user selectable output +sample rates - essentially providing PDM to PCM conversion. + +To reduce complexity this application note does not enable any other audio interfaces other than recording +from PDM microphones (i.e. no I2S and the on board DAC is not configured. + +Readers are encouraged to read application note AN00246 in conjunction with this application note. + + +The Makefile +------------ + +To start using ``lib_xua``, you need to add ``lib_xua`` to the Makefile. ``lib_mic_array`` should also be +added for this application example:: + + USED_MODULES = .. lib_xua lib_mic_array ... + +This demo also uses the XMOS USB Device library (``lib_xud``) for low-level USB connectivity. +The Makefile therefore also includes this lib:: + + USED_MODULES = .. lib_xud .. + +``lib_xud`` library requires some flags for correct operation. Firstly the +tile on which ``lib_xud`` will be executed, for example:: + + XCC_FLAGS = .. -DUSB_TILE=tile[1] .. + +Secondly, the architecture of the target device, for example:: + + XCC_FLAGS = .. -DXUD_SERIES_SUPPORT=XUD_X200_SERIES .. + +Includes +-------- + +This application requires the system header files that contains XMOS xCORE specific +defines for declaring and initialising hardware: + +.. literalinclude:: app_xua_simple.xc + :start-on: include + :end-before: include "xua.h" + +The XUA and XUD library functions are defined in header files ``xua.h`` and ``xud_device.h`` respectively. These headers must +be included in the code in order to use these libraries. + +.. literalinclude:: app_xua_simple.xc + :start-on: include "xua.h" + :end-on: include "xud_device.h" + +The application uses PDM interfacing and decimation code from ``lib_mic_array``. This header +must be included in the code. + +.. literalinclude:: app_xua_simple.xc + :start-on: /* From lib_mic + :end-on: include "mic_array.h" + +Declarations +------------ + +Allocating hardware resources for lib_xua +......................................... + +A minimal implementation of a USB Audio device using ``lib_xua``, without I2S functionality, +requires the follow I/O pins: + + - Audio Master clock (from clock source to xCORE) + +On an xCORE the pins are controlled by ``ports``. The application therefore declares a +port for the master clock input signal. + +.. literalinclude:: app_xua_simple.xc + :start-on: /* Lib_xua port declaration + :end-on: in port p_mclk_in + +``lib_xua`` also requires two ports for internally calculating USB feedback. Please refer to +the ``lib_xua`` library documentation for further details. In this example ``XUA_Buffer()`` and ``XUA_AudioHub()`` +reside on the same tile and can therefore make use of the same master-clock port. + +These ports are declared as follows: + +.. literalinclude:: app_xua_simple.xc + :start-on: /* Resources for USB feedback + :end-on: in port p_for + +In addition to ``port`` resources a single clock-block resource is also required: + +.. literalinclude:: app_xua_simple.xc + :start-on: /* Clock-block declarations + :end-on: clock clk_audio_mclk + +Again, for the same reasoning as the master-clock ports, only one master-clock clock-blocks is required. + + +Allocating hardware resources for lib_mic_array +............................................... + +``lib_mic_array`` requires a single 8-bit port for PDM data from up to 8 microphones. This port must be declared +as 32-bit buffered: + +.. literalinclude:: app_xua_simple.xc + :start-on: in buffered port:32 p_pdm_mics + :end-before: clock clk_pdm + +The microphones must be clocked by an audio related clock - typically 3.072MHz. + +The xCORE-200 Array Microphone Board expects the xCORE to divide down the audio master clock input (24.576MHz) +and output the result to the microphones. + +Two ports for this purpose are declared as follows: + +.. literalinclude:: app_xua_simple.xc + :start-on: /* Lib_mic_array declarations + :end-before: in buffered + + +Please see the ``lib_mic_array`` library documentation for full details. + + +Other declarations +.................. + +``lib_xua`` currently requires the manual declaration of tables for the endpoint types for +``lib_xud`` and the calling the main XUD function in a par (``XUD_Main()``). + +For a simple application the following endpoints are required: + + - ``Control`` endpoint zero + - ``Isochonous`` endpoint for each direction for audio data to/from the USB host + +These are declared as follows: + +.. literalinclude:: app_xua_simple.xc + :start-on: /* Endpoint type tables + :end-on: XUD_EpType epTypeTableIn + +Configuring lib_xua +------------------- + +``lib_xua`` must be configured to enable support for PDM microphones. + +``lib_xua`` has many parameters than can be configured at build time, some examples include: + + - Supported sample-rates + - Channel counts + - Audio Class version + - Product/Vendor ID's + - Various product strings + - Master clock frequency + +To enable PDM microphone support ``XUA_NUM_PDM_MICS`` must be set to a non-zero value. Setting this will cause the ``XUA_AudioHub`` +task to forward sample rate information and receive samples from the relevant microphone related tasks. + +These parameters are set via defines in an optional ``xua_conf.h`` header file. For this simple application the +complete contents of this file are as follows: + +.. literalinclude:: xua_conf.h + :start-on: // Copyright + :end-on: #endif + +The application main() function +------------------------------- + +The ``main()`` function sets up and runs the tasks in the application. + +Channel declarations +.................... + +Various channels are required in order to allow the required tasks to communicate. +These must first be declared: + +.. literalinclude:: app_xua_simple.xc + :start-on: /* Channels for lib_xud + :end-on: chan c_mic_pcm + +Standard ``lib_xua`` tasks +.......................... + +The rest of the ``main()`` function starts all of the tasks in parallel +using the xC ``par`` construct. + +Firstly the standard ``lib_xua`` tasks are run on tile 1: + +.. literalinclude:: app_xua_simple.xc + :start-on: par + :end-before: on tile[0] + +This code starts the low-level USB task, an Endpoint 0 task, an Audio buffering task and a task to handle +the audio I/O (``XUA_AudioHub``). + +Note, since there is no I2S functionality in this example the ``XUA_AudioHub`` task essentially just receives +samples from the PDM buffer task and forwards samples to the ``XUA_Buffer`` task for forwarding to the USB host. + +Microphone related tasks +........................ + +Microphone related tasks are executed on tile 0 as follows: + +.. literalinclude:: app_xua_simple.xc + :start-on: Microphone related tasks + :end-before: return 0 + +Two functions from ``lib_mic_array`` are used - a PDM receiver task (``mic_array_pdm_rx()``) and a decimation task (``mic_array_decimate_to_pcm_4ch()``). + +Each call to ``mic_array_decimate_to_pcm_4ch()`` can handle the decimation of up to 4 microphone signals. Since the xCORE-200 Array microphone +board is equipped with seven microphones two instances of this task are run. + +The ``mic_array_pdm_rx()`` task expects the PDM microphone port to be clocked from the PDM clock. + + +|appendix| +|newpage| + +Demo Hardware Setup +------------------- + +To run the demo, connect a USB cable to power the xCORE-200 MC Audio board +and plug the xTAG to the board and connect the xTAG USB cable to your +development machine. + +.. figure:: images/hw_setup.* + :width: 80% + + Hardware setup + +|newpage| + +Launching the demo application +------------------------------ + +Once the demo example has been built either from the command line using xmake or +via the build mechanism of xTIMEcomposer studio it can be executed on the xCORE-200 +MC Audio board. + +Once built there will be a ``bin/`` directory within the project which contains +the binary for the xCORE device. The xCORE binary has a XMOS standard .xe extension. + +Launching from the command line +............................... + +From the command line you use the ``xrun`` tool to download and run the code +on the xCORE device:: + + xrun --xscope bin/app_xua_simple.xe + +Once this command has executed the application will be running on the +xCORE-200 MC Audio Board + +Launching from xTIMEcomposer Studio +................................... + +From xTIMEcomposer Studio use the run mechanism to download code to xCORE device. +Select the xCORE binary from the ``bin/`` directory, right click and go to Run +Configurations. Double click on xCORE application to create a new run configuration, +enable the xSCOPE I/O mode in the dialog box and then +select Run. + +Once this command has executed the application will be running on the +xCORE-200 MC Audio board. + +Running the application +....................... + +Once running the device will be detected as a USB Audio device - note, Windows operating +systems may require a third party driver for correct operation + +|newpage| + +References +---------- + +.. nopoints:: + + * XMOS Tools User Guide + + http://www.xmos.com/published/xtimecomposer-user-guide + + * XMOS xCORE Programming Guide + + http://www.xmos.com/published/xmos-programming-guide + + * XMOS lib_xua Library + + http://www.xmos.com/support/libraries/lib_xua + + * XMOS lib_xud Library + + http://www.xmos.com/support/libraries/lib_xud + +|newpage| + +Full source code listing +------------------------ + +Source code for main.xc +....................... + +.. literalinclude:: app_xua_simple.xc + :largelisting: + +|newpage| diff --git a/examples/AN00248_xua_example_pdm_mics/doc/rst/images/hw_setup.jpg b/examples/AN00248_xua_example_pdm_mics/doc/rst/images/hw_setup.jpg new file mode 100644 index 00000000..8998805d Binary files /dev/null and b/examples/AN00248_xua_example_pdm_mics/doc/rst/images/hw_setup.jpg differ diff --git a/examples/AN00248_xua_example_pdm_mics/doc/rst/xdoc.conf b/examples/AN00248_xua_example_pdm_mics/doc/rst/xdoc.conf new file mode 100644 index 00000000..37460abf --- /dev/null +++ b/examples/AN00248_xua_example_pdm_mics/doc/rst/xdoc.conf @@ -0,0 +1,2 @@ +XMOSNEWSTYLE=1 +SOURCE_INCLUDE_DIRS=../../src \ No newline at end of file diff --git a/examples/AN00248_xua_example_pdm_mics/src/app_xua_simple.xc b/examples/AN00248_xua_example_pdm_mics/src/app_xua_simple.xc new file mode 100644 index 00000000..93ee258d --- /dev/null +++ b/examples/AN00248_xua_example_pdm_mics/src/app_xua_simple.xc @@ -0,0 +1,120 @@ +// Copyright (c) 2017-2018, XMOS Ltd, All rights reserved + +/* A very simple *example* of a USB audio application (and as such is un-verified for production) + * + * It uses the main blocks from the lib_xua with the addition of PDM mic support using lib_mic_array + * + * - No DFU + * + */ + +#include +#include + +#include "xua.h" +#include "xud_device.h" + +/* From lib_mic_array */ +#include "mic_array.h" + +/* Lib_mic_array declarations. Note, the defines derived from the xn file */ +in port p_pdm_clk = PORT_PDM_CLK; /* Port for PDM mic clock */ +in port p_pdm_mclk = PORT_PDM_MCLK; /* Master clock for PDM mics */ + +in buffered port:32 p_pdm_mics = PORT_PDM_DATA; /* Port for PDM mic data */ + +clock clk_pdm = on tile[0]: XS1_CLKBLK_1; /* Clock-block for PDM mics */ + + +/* Lib_xua port declarations. Note, the defines come from the xn file */ +in port p_mclk_in = PORT_MCLK_IN; /* Master clock for the audio IO tile */ + +/* Resources for USB feedback */ +in port p_for_mclk_count = PORT_MCLK_COUNT; /* Extra port for counting master clock ticks */ + +/* Clock-block declarations */ +clock clk_audio_mclk = on tile[1]: XS1_CLKBLK_1; /* Master clock */ + +/* Endpoint type tables - informs XUD what the transfer types for each Endpoint in use and also + * if the endpoint wishes to be informed of USB bus resets */ +XUD_EpType epTypeTableOut[] = {XUD_EPTYPE_CTL | XUD_STATUS_ENABLE, XUD_EPTYPE_ISO}; +XUD_EpType epTypeTableIn[] = {XUD_EPTYPE_CTL | XUD_STATUS_ENABLE, XUD_EPTYPE_ISO}; + +int main() +{ + /* Channels for lib_xud */ + chan c_ep_out[2]; + chan c_ep_in[2]; + + /* Channel for communicating SOF notifications from XUD to the Buffering cores */ + chan c_sof; + + /* Channel for audio data between buffering cores and AudioHub/IO core */ + chan c_aud; + + /* Channel for communicating control messages from EP0 to the rest of the device (via the buffering cores) */ + chan c_aud_ctl; + + /* Array of channels for communication between PDM mic decimator task(s) and the XUA mic buffer task */ + streaming chan c_ds_output[2]; + + /* Channel for communcation between XUA_AudioHub() and the XUA mic buffer task */ + chan c_mic_pcm; + + par + { + /* Low level USB device layer core */ + on tile[1]: XUD_Main(c_ep_out, 2, c_ep_in, 2, c_sof, epTypeTableOut, epTypeTableIn, null, null, -1, XUD_SPEED_HS, XUD_PWR_BUS); + + /* Endpoint 0 core from lib_xua */ + /* Note, since we are not using many features we pass in null for quite a few params.. */ + on tile[1]: XUA_Endpoint0(c_ep_out[0], c_ep_in[0], c_aud_ctl, null, null, null, null); + + on tile[1]: + { + /* Connect master-clock clock-block to clock-block pin */ + set_clock_src(clk_audio_mclk, p_mclk_in); /* Clock clock-block from mclk pin */ + set_port_clock(p_for_mclk_count, clk_audio_mclk); /* Clock the "count" port from the clock block */ + /* Note, AudioHub() will start the clock */ + + par + { + /* Buffering task - handles audio data to/from EP's and gives/gets data to/from the audio I/O core */ + /* Note, this spawns two cores */ + XUA_Buffer(c_ep_out[1], c_ep_in[1], c_sof, c_aud_ctl, p_for_mclk_count, c_aud); + + /* AudioHub/IO core does most of the audio IO i.e. I2S (also serves as a hub for all audio) */ + /* Note, since we are not using I2S we pass in null for LR and Bit clock ports and the I2S dataline ports */ + XUA_AudioHub(c_aud, clk_audio_mclk, null, p_mclk_in, null, null, null, null, c_mic_pcm); + } + } + + /* Microphone related tasks */ + on tile[0]: + { + streaming chan c_4x_pdm_mic_0; + streaming chan c_4x_pdm_mic_1; + + configure_clock_src_divide(clk_pdm, p_pdm_mclk, 4); /* Master clock to PDM clock divide */ + configure_port_clock_output(p_pdm_clk, clk_pdm); + configure_in_port(p_pdm_mics, clk_pdm); + start_clock(clk_pdm); + + par + { + /* PDM receive I/O task */ + mic_array_pdm_rx(p_pdm_mics, c_4x_pdm_mic_0, c_4x_pdm_mic_1); + + /* Run two decimator tasks for 8 mics */ + mic_array_decimate_to_pcm_4ch(c_4x_pdm_mic_0, c_ds_output[0], MIC_ARRAY_NO_INTERNAL_CHANS); + mic_array_decimate_to_pcm_4ch(c_4x_pdm_mic_1, c_ds_output[1], MIC_ARRAY_NO_INTERNAL_CHANS); + + XUA_PdmBuffer(c_ds_output, c_mic_pcm); + } + } + } + + return 0; +} + + diff --git a/examples/AN00248_xua_example_pdm_mics/src/audiohw.xc b/examples/AN00248_xua_example_pdm_mics/src/audiohw.xc new file mode 100644 index 00000000..27325027 --- /dev/null +++ b/examples/AN00248_xua_example_pdm_mics/src/audiohw.xc @@ -0,0 +1,30 @@ +// Copyright (c) 2017-2018, XMOS Ltd, All rights reserved + +#include +#include +#include + +#include "xua.h" + +/* 0: DAC reset */ +/* 1: Ethernet Phy reset */ +on tile[1] : out port p_gpio = XS1_PORT_4F; + +void AudioHwInit() +{ + /* DAC in reset */ + p_gpio <: 0; + + return; +} + +/* Configures the external audio hardware for the required sample frequency */ +void AudioHwConfig(unsigned samFreq, unsigned mClk, unsigned dsdMode, + unsigned sampRes_DAC, unsigned sampRes_ADC) +{ + /* Note, without any config the Cirrus 2100 will output it's 24.576MHz ref clock + to the Aux output - which we will use for mclk */ + + return; +} +//: diff --git a/examples/AN00248_xua_example_pdm_mics/src/mic_array_ref.xn b/examples/AN00248_xua_example_pdm_mics/src/mic_array_ref.xn new file mode 100644 index 00000000..66caa132 --- /dev/null +++ b/examples/AN00248_xua_example_pdm_mics/src/mic_array_ref.xn @@ -0,0 +1,94 @@ + + + Board + XS2 MC Audio + + tileref tile[2] + tileref usb_tile + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/AN00248_xua_example_pdm_mics/src/xua_conf.h b/examples/AN00248_xua_example_pdm_mics/src/xua_conf.h new file mode 100644 index 00000000..8cdf256e --- /dev/null +++ b/examples/AN00248_xua_example_pdm_mics/src/xua_conf.h @@ -0,0 +1,29 @@ +// Copyright (c) 2017-2018, XMOS Ltd, All rights reserved + +#ifndef _XUA_CONF_H_ +#define _XUA_CONF_H_ + +#define NUM_USB_CHAN_OUT 0 +#define NUM_USB_CHAN_IN 8 +#define I2S_CHANS_DAC 0 +#define I2S_CHANS_ADC 0 +#define MCLK_441 (512 * 44100) +#define MCLK_48 (512 * 48000) +#define MIN_FREQ 48000 +#define MAX_FREQ 48000 + +#define EXCLUDE_USB_AUDIO_MAIN + +#define XUA_NUM_PDM_MICS 8 +#define VENDOR_STR "XMOS" +#define VENDOR_ID 0x20B1 +#define PRODUCT_STR_A2 "XUA PDM Example" +#define PRODUCT_STR_A1 "XUA PDM Example" +#define PID_AUDIO_1 1 +#define PID_AUDIO_2 2 +#define AUDIO_CLASS 2 +#define AUDIO_CLASS_FALLBACK 0 +#define BCD_DEVICE 0x1234 +#define XUA_DFU_EN 0 + +#endif diff --git a/examples/AN00248_xua_example_pdm_mics/src/xud_conf.h b/examples/AN00248_xua_example_pdm_mics/src/xud_conf.h new file mode 100644 index 00000000..c14d64a8 --- /dev/null +++ b/examples/AN00248_xua_example_pdm_mics/src/xud_conf.h @@ -0,0 +1,7 @@ +// Copyright (c) 2017-2018, XMOS Ltd, All rights reserved + +#include "xua_conf.h" + +/* TODO */ +#define XUD_UAC_NUM_USB_CHAN_OUT NUM_USB_CHAN_OUT +#define XUD_UAC_NUM_USB_CHAN_IN NUM_USB_CHAN_IN diff --git a/lib_xua/.cproject b/lib_xua/.cproject new file mode 100644 index 00000000..08cfa4f2 --- /dev/null +++ b/lib_xua/.cproject @@ -0,0 +1,860 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib_xua/.gitignore b/lib_xua/.gitignore new file mode 100644 index 00000000..bd0fe826 --- /dev/null +++ b/lib_xua/.gitignore @@ -0,0 +1,5 @@ +.cproject +.makefile +.project +.settings +.xproject diff --git a/lib_xua/.makefile b/lib_xua/.makefile new file mode 100644 index 00000000..87b347b9 --- /dev/null +++ b/lib_xua/.makefile @@ -0,0 +1,8 @@ +all: + @echo "** Module only - only builds as part of application **" + + +clean: + @echo "** Module only - only builds as part of application **" + + diff --git a/lib_xua/.project b/lib_xua/.project new file mode 100644 index 00000000..c752d2f7 --- /dev/null +++ b/lib_xua/.project @@ -0,0 +1,42 @@ + + + lib_xua + + + + + + com.xmos.cdt.core.ProjectInfoSyncBuilder + + + + + com.xmos.cdt.core.LegacyProjectCheckerBuilder + + + + + com.xmos.cdt.core.ModulePathBuilder + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + com.xmos.cdt.core.XdeProjectNature + + diff --git a/lib_xua/.xproject b/lib_xua/.xproject new file mode 100644 index 00000000..2a5ae266 --- /dev/null +++ b/lib_xua/.xproject @@ -0,0 +1 @@ +lib_xuaXM-012639-SM diff --git a/lib_xua/api/xua.h b/lib_xua/api/xua.h index cb489cdb..92cdbe6f 100644 --- a/lib_xua/api/xua.h +++ b/lib_xua/api/xua.h @@ -6,13 +6,17 @@ #include "xua_conf_full.h" #if __XC__ || __STDC__ -#include "xua_audiohub.h" + #include "xua_audiohub.h" -#include "xua_endpoint0.h" + #include "xua_endpoint0.h" -#include "xua_buffer.h" + #include "xua_buffer.h" +#endif -//#include "xua_dfu.h" +#if __XC__ + #if XUA_NUM_PDM_MICS > 0 + #include "xua_pdm_mic.h" + #endif #endif #endif diff --git a/lib_xua/api/xua_audiohub.h b/lib_xua/api/xua_audiohub.h index d4eee767..db7e8d94 100644 --- a/lib_xua/api/xua_audiohub.h +++ b/lib_xua/api/xua_audiohub.h @@ -6,7 +6,7 @@ #include "xccompat.h" -#ifndef NO_USB +#if XUA_USB_EN #include "dfu_interface.h" #endif @@ -15,24 +15,44 @@ * This function drives I2S ports and handles samples to/from other digital * I/O threads. * - * \param c_aud Audio sample channel connected to the mixer() thread or the - * decouple() thread - * \param c_dig channel connected to the clockGen() thread for - * receiving/transmitting samples - * \param c_config An optional channel that will be passed on to the - * CODEC configuration functions. + * \param c_aud Audio sample channel connected to the mixer() thread or the + * decouple() thread + * + * \param clk_audio_mclk Nullable clockblock to be clocked from master clock + * + * \param clk_audio_mclk Nullable clockblock to be clocked from i2s clock + * + * \param p_mclk_in Master clock inport port (must be 1-bit) + * + * \param p_lrclk Nullable port for I2S sample clock + * + * \param p_bclk Nullable port for I2S bit + * + * \param p_i2s_dac Nullable array of ports for I2S data output lines + * + * \param p_i2s_adc Nullable array of ports for I2S data input lines + * + * \param c_dig channel connected to the clockGen() thread for + * receiving/transmitting samples */ -void XUA_AudioHub(chanend ?c_aud -#if (XUA_SPDIF_TX_EN) && (SPDIF_TX_TILE != AUDIO_IO_TILE) +void XUA_AudioHub(chanend ?c_aud, + clock ?clk_audio_mclk, + clock ?clk_audio_bclk, + in port p_mclk_in, + buffered _XUA_CLK_DIR port:32 ?p_lrclk, + buffered _XUA_CLK_DIR port:32 ?p_bclk, + buffered out port:32 (&?p_i2s_dac)[I2S_WIRES_DAC], + buffered in port:32 (&?p_i2s_adc)[I2S_WIRES_ADC] +#if (XUA_SPDIF_TX_EN) //&& (SPDIF_TX_TILE != AUDIO_IO_TILE) , chanend c_spdif_tx #endif -#if(defined(SPDIF_RX) || defined(ADAT_RX)) +#if((SPDIF_RX) || (ADAT_RX)) , chanend c_dig #endif #if (XUD_TILE != 0) && (AUDIO_IO_TILE == 0) && (XUA_DFU_EN == 1) , server interface i_dfu ?dfuInterface #endif -#if (NUM_PDM_MICS > 0) +#if (XUA_NUM_PDM_MICS > 0) , chanend c_pdm_in #endif ); diff --git a/lib_xua/api/xua_buffer.h b/lib_xua/api/xua_buffer.h index b35b8ffb..eaaef881 100644 --- a/lib_xua/api/xua_buffer.h +++ b/lib_xua/api/xua_buffer.h @@ -51,7 +51,7 @@ void XUA_Buffer( chanend c_iap_ea_native_data, #endif #endif -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) chanend ?c_int, chanend ?c_clk_int, #endif @@ -90,7 +90,7 @@ void XUA_Buffer_Ep(chanend c_aud_out, chanend c_iap_ea_native_data, #endif #endif -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) chanend ?c_int, chanend ?c_clk_int, #endif diff --git a/lib_xua/api/xua_conf_default.h b/lib_xua/api/xua_conf_default.h index aa7e8d03..969336a5 100644 --- a/lib_xua/api/xua_conf_default.h +++ b/lib_xua/api/xua_conf_default.h @@ -56,6 +56,13 @@ #define PDM_TILE AUDIO_IO_TILE #endif +/** + * @brief Disable USB functionalty just leaving AudioHub + */ +#ifndef XUA_USB_EN +#define XUA_USB_EN 1 +#endif + /** * @brief Number of input channels (device to host). Default: NONE (Must be defined by app) */ @@ -271,15 +278,15 @@ /** * @brief Number of PDM microphones in the design. Default: None */ -#ifndef NUM_PDM_MICS -#define NUM_PDM_MICS (0) +#ifndef XUA_NUM_PDM_MICS +#define XUA_NUM_PDM_MICS (0) #endif /** * @brief PDM Microphone first channel index, defines which channels microphones will be input on. * Note, indexed from 0. * - * Default: 0 (i.e. channels [0:NUM_PDM_MICS-1]) + * Default: 0 (i.e. channels [0:XUA_NUM_PDM_MICS-1]) * */ #ifndef PDM_MIC_INDEX #define PDM_MIC_INDEX (0) @@ -347,11 +354,6 @@ #define SPDIF_RX (0) #endif -/* Tidy up old SPDIF_RX usage */ -#if defined(SPDIF_RX) && (SPDIF_RX == 0) -#undef SPDIF_RX -#endif - /** * @brief Enables ADAT Rx. Default: 0 (Disabled) */ @@ -359,17 +361,13 @@ #define ADAT_RX (0) #endif -#if defined(ADAT_RX) && (ADAT_RX == 0) -#undef ADAT_RX -#endif - /** * @brief S/PDIF Rx first channel index, defines which channels S/PDIF will be input on. * Note, indexed from 0. * * Default: NONE (Must be defined by app when SPDIF_RX enabled) */ -#if defined (SPDIF_RX) || defined (__DOXYGEN__) +#if (SPDIF_RX) || defined (__DOXYGEN__) #ifndef SPDIF_RX_INDEX #error SPDIF_RX_INDEX not defined and SPDIF_RX defined #define SPDIF_RX_INDEX 0 /* Default define for doxygen */ @@ -382,7 +380,7 @@ * * Default: NONE (Must be defined by app when ADAT_RX enabled) */ -#if defined(ADAT_RX) || defined(__DOXYGEN__) +#if (ADAT_RX) || defined(__DOXYGEN__) #ifndef ADAT_RX_INDEX #error ADAT_RX_INDEX not defined and ADAT_RX defined #define ADAT_RX_INDEX (0) /* Default define for doxygen */ @@ -393,7 +391,7 @@ #endif #endif -#ifdef ADAT_RX +#if ADAT_RX /* Setup input stream formats for ADAT */ #if(MAX_FREQ > 96000) @@ -1173,7 +1171,7 @@ enum USBEndpointNumber_In ENDPOINT_NUMBER_IN_FEEDBACK, #endif ENDPOINT_NUMBER_IN_AUDIO, -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) ENDPOINT_NUMBER_IN_INTERRUPT, /* Audio interrupt/status EP */ #endif #ifdef MIDI @@ -1251,9 +1249,9 @@ enum USBEndpointNumber_Out #endif /* Length of clock unit/clock-selector units */ -#if defined(SPDIF_RX) && defined(ADAT_RX) +#if (SPDIF_RX) && (ADAT_RX) #define NUM_CLOCKS (3) -#elif defined(SPDIF_RX) || defined(ADAT_RX) +#elif (SPDIF_RX) || (ADAT_RX) #define NUM_CLOCKS (2) #else #define NUM_CLOCKS (1) @@ -1455,3 +1453,14 @@ enum USBEndpointNumber_Out #define MIN_FREQ_44 (((44100*512)/((48000 * 512)/MIN_FREQ))*2) #endif +/* Internal define for port declaration */ +#if CODEC_MASTER + #define _XUA_CLK_DIR in +#else + #define _XUA_CLK_DIR out +#endif + +#if (CODEC_MASTER == 1) && (DSD_CHANS_DAC != 0) +#error CODEC_MASTER with DSD is currently unsupported +#endif + diff --git a/lib_xua/api/xua_conf_full.h b/lib_xua/api/xua_conf_full.h index 16a279cd..e3696a6d 100644 --- a/lib_xua/api/xua_conf_full.h +++ b/lib_xua/api/xua_conf_full.h @@ -8,4 +8,6 @@ #include "xua_conf_default.h" + + #endif diff --git a/lib_xua/src/core/pdm_mics/xua_pdm_mic.h b/lib_xua/api/xua_pdm_mic.h similarity index 58% rename from lib_xua/src/core/pdm_mics/xua_pdm_mic.h rename to lib_xua/api/xua_pdm_mic.h index 1dcb983b..4b7704b6 100644 --- a/lib_xua/src/core/pdm_mics/xua_pdm_mic.h +++ b/lib_xua/api/xua_pdm_mic.h @@ -1,7 +1,15 @@ // Copyright (c) 2015-2018, XMOS Ltd, All rights reserved +#ifndef XUA_PDM_MIC_H +#define XUA_PDM_MIC_H + +/* Included from lib_mic_array */ #include "mic_array.h" + +/* Configures PDM ports/clocks */ +void xua_pdm_mic_config(in port p_pdm_mclk, in port p_pdm_clk, buffered in port:32 p_pdm_mics, clock clk_pdm); + #ifdef MIC_PROCESSING_USE_INTERFACE /* Interface based user processing */ typedef interface mic_process_if @@ -12,7 +20,7 @@ typedef interface mic_process_if [[combinable]] -void pdm_buffer(streaming chanend c_ds_output[2], chanend c_audio +void XUA_PdmBuffer(streaming chanend c_ds_output[2], chanend c_audio #ifdef MIC_PROCESSING_USE_INTERFACE , client mic_process_if i_mic_process #endif @@ -22,7 +30,7 @@ void pdm_buffer(streaming chanend c_ds_output[2], chanend c_audio void user_pdm_process(server mic_process_if i_mic_data); /* PDM interface and decimation cores */ -void pdm_mic(streaming chanend c_ds_output[2]); +void xua_pdm_mic(streaming chanend c_ds_output[2], buffered in port:32 p_pdm_mics); #else @@ -33,10 +41,11 @@ void user_pdm_init(); /* PDM interface and decimation cores */ [[combinable]] -void pdm_buffer(streaming chanend c_ds_output[2], chanend c_audio); +void XUA_PdmBuffer(streaming chanend c_ds_output[2], chanend c_audio); /* PDM interface and decimation cores */ -void pdm_mic(streaming chanend c_ds_output[2]); +void xua_pdm_mic(streaming chanend c_ds_output[2], buffered in port:32 p_pdm_mics); #endif +#endif diff --git a/lib_xua/doc/.gitignore b/lib_xua/doc/.gitignore new file mode 100644 index 00000000..da0de7e0 --- /dev/null +++ b/lib_xua/doc/.gitignore @@ -0,0 +1 @@ +pdf diff --git a/lib_xua/doc/pdf/index.pdf b/lib_xua/doc/pdf/index.pdf new file mode 100644 index 00000000..8613fe1c Binary files /dev/null and b/lib_xua/doc/pdf/index.pdf differ diff --git a/lib_xua/doc/rst/.gitignore b/lib_xua/doc/rst/.gitignore new file mode 100644 index 00000000..e35d8850 --- /dev/null +++ b/lib_xua/doc/rst/.gitignore @@ -0,0 +1 @@ +_build diff --git a/lib_xua/doc/rst/feat.rst b/lib_xua/doc/rst/feat.rst new file mode 100644 index 00000000..07978c29 --- /dev/null +++ b/lib_xua/doc/rst/feat.rst @@ -0,0 +1,117 @@ + +Features & Options +------------------ + +The previous sections describes only the basic core set of ``lib_xua`` details on enabling additional features e.g. S/PDIF are discussed in this section. + +Where something must be defined, it is recommened this is done in `xua_conf.h` but could also be done in the application Makefile. + +For each feature steps are listed for if calling ``lib_xua`` functions manually - if using the "codeless" programming model then these steps informational only. +Each section also includes a sub-section on enabling the feature using the "codeless" model. + +For full details of all options please see the API section + +I2S/TDM +~~~~~~~ + +I2S/TDM is typically fundamental to most products and is built into the ``XUA_AudioHub()`` core. + +In order to enable I2S on must declare an array of ports for the data-lines (one for each direction):: + + /* Port declarations. Note, the defines come from the xn file */ + buffered out port:32 p_i2s_dac[] = {PORT_I2S_DAC0}; /* I2S Data-line(s) */ + buffered in port:32 p_i2s_adc[] = {PORT_I2S_ADC0}; /* I2S Data-line(s) */ + +Ports for the sample and bit clocks are also required:: + + buffered out port:32 p_lrclk = PORT_I2S_LRCLK; /* I2S Bit-clock */ + buffered out port:32 p_bclk = PORT_I2S_BCLK; /* I2S L/R-clock */ + +.. note:: + + All of these ports must be buffered, width 32. Based on whether the xCORE is bus slave/master the ports must be declared as input/output respectively + +These ports must then be passed to the ``XUA_AudioHub()`` task appropriately. + +I2S functionality also requires two clock-blocks, one for bit and sample clock e.g.:: + + /* Clock-block declarations */ + clock clk_audio_bclk = on tile[0]: XS1_CLKBLK_4; /* Bit clock */ + clock clk_audio_mclk = on tile[0]: XS1_CLKBLK_5; /* Master clock */ + +These hardware resources must be passed into the call to ``XUA_AudioHub()``:: + + /* AudioHub/IO core does most of the audio IO i.e. I2S (also serves as a hub for all audio) */ + on tile[0]: XUA_AudioHub(c_aud, clk_audio_mclk, clk_audio_bclk, p_mclk_in, p_lrclk, p_bclk); + + +Codeless Programming Model +.......................... + +All ports and hardware resources are already fully declared, one must simply set the following: + + * `I2S_CHANS_DAC` must be set to the desired number of output channels via I2S + * `I2S_CHANS_ADC` must be set to the desired number of input channels via I2S + * `AUDIO_IO_TILE` must be set to the tile where the physical I2S connections reside + +For configuration options, master vs slave, TDM etc please see the API section. + + +|newpage| + +S/PDIF Transmit +~~~~~~~~~~~~~~~ + +``lib_xua`` supports the development of devices with S/PDIF transmit functionality through the use of +``lib_spdif``. The XMOS S/PDIF transmitter runs in a single core and supports rates up to 192kHz. + +The S/PDIF transmitter core takes PCM audio samples via a channel and outputs them in S/PDIF format to a port. +Samples are provided to the S/PDIF transmitter task from the ``XUA_AudioHub()`` task. + +The channel should be declared a normal:: + + chan c_spdif_tx + + +In order to use the S/PDIF transmmiter with ``lib_xua`` hardware resources must be declared e.g:: + + buffered out port:32 p_spdif_tx = PORT_SPDIF_OUT; /* SPDIF transmit port */ + +This port should be clocked from the master-clock, ``lib_spdif`` provides a helper function for setting up the port:: + + spdif_tx_port_config(p_spdif_tx2, clk_audio_mclk, p_mclk_in, delay); + +.. note:: If sharing the master-clock port and clockblock with ``XUA_AudioHub()`` (or any other task) then this setup + should be done before running the tasks in a ``par`` statement. + +Finally the S/PDIF transmitter task must be run - passing in the port and channel for communication with ``XUA_AudioHub``. +For example:: + + par + { + while(1) + { + /* Run the S/PDIF transmitter task */ + spdif_tx(p_spdif_tx2, c_spdif_tx); + } + + /* AudioHub/IO core does most of the audio IO i.e. I2S (also serves as a hub for all audio) */ + /* Note, since we are not using I2S we pass in null for LR and Bit clock ports and the I2S dataline ports */ + XUA_AudioHub(c_aud, clk_audio_mclk, null, p_mclk_in, null, null, null, null, c_spdif_tx); + } + +For further details please see the documentation, application notes and examples provided for ``lib_spdif``. + +Codeless Programming Model +.......................... + +If using the codeless programming method one must simply ensure the following: + + * `PORT_SPDIF_OUT` is correctly defined in the XN file + * `XUA_SPDIF_TX_EN` should be defined as non-zero + * `SPDIF_TX_TILE` is correctly defined (note, this defaults to `AUDIO_IO_TILE`) + +For further configuration options please see the API section. + + + diff --git a/lib_xua/doc/rst/hw.rst b/lib_xua/doc/rst/hw.rst new file mode 100644 index 00000000..93424b33 --- /dev/null +++ b/lib_xua/doc/rst/hw.rst @@ -0,0 +1,62 @@ + +XMOS USB Audio Hardware Platforms +--------------------------------- + +A range of hardware platforms for evaluating USB Audio on XMOS devices. + +Specific, in depth, details for each platform/board are out of scope of this library documentation however, the features of the most popular platform are described below with the view of providing a worked example. + +Please also see application note AN00246. + + +xCORE-200 Multi-Channel Audio Board +................................... + +`The XMOS xCORE-200 Multi-channel Audio board `_ +(XK-AUDIO-216-MC) is a complete hardware and reference software platform targeted at up to 32-channel USB and networked audio applications, such as DJ decks and mixers. + +The Multichannel Audio Platform hardware is based around the XE216-512-TQ128 multicore microcontroller; an dual-tile xCORE-200 device with an integrated High Speed USB 2.0 PHY, RGMII (Gigabit Ethernet) interface and 16 logical cores delivering up to 2000MIPS of deterministic and responsive processing power. + +Exploiting the flexible programmability of the xCORE-200 architecture, the Multi-channel Audio Platform supports either USB or network audio source, streaming 8 analogue input and 8 analogue output audio channels simultaneously - at up to 192kHz. + +For full details regarding the hardware please refer to `xCORE-200 Multichannel Audio Platform Hardware Manual `_. + +The reference board has an associated firmware application that uses `lib_xua` to implemented a USB Audio Devicce. Full details of this application can be found in the USB Audio Design Guide. + +Analogue Input & Output ++++++++++++++++++++++++ + +A total of eight single-ended analog input channels are provided via 3.5mm stereo jacks. Each is fed into a CirrusLogic CS5368 ADC. +Similarly a total of eight single-ended analog output channels are provided. Each is fed into a CirrusLogic CS4384 DAC. + +The four digital I2S/TDM input and output channels are mapped to the xCORE input/outputs through a header array. This jumper allows channel selection when the ADC/DAC is used in TDM mode + +Digital Input & Output +++++++++++++++++++++++ + +Optical and coaxial digital audio transmitters are used to provide digital audio input output in formats such as IEC60958 consumer mode (S/PDIF) and ADAT. +The output data streams from the xCORE-200 are re-clocked using the external master clock to synchronise the data into the audio clock domain. This is achieved using simple external D-type flip-flops. + +MIDI +++++ + +MIDI I/O is provided on the board via standard 5-pin DIN connectors. The signals are buffered using 5V line drivers and are then connected to 1-bit ports on the xCORE-200, via a 5V to 3.3V buffer. + +Audio Clocking +++++++++++++++ + +A flexible clocking scheme is provided for both audio and other system services. In order to accommodate a multitude of clocking options, the low-jitter master clock is generated locally using a frequency multiplier PLL chip. The chip used is a Phaselink PL611-01, which is pre-programmed to provide a 24MHz clock from its CLK0 output, and either 24.576 MHz or 22.5792MHz from its CLK1 output. + +The 24MHz fixed output is provided to the xCORE-200 device as the main processor clock. It also provides the reference clock to a Cirrus Logic CS2100, which provides a very low jitter audio clock from a synchronisation signal provided from the xCORE-200. + +Either the locally generated clock (from the PL611) or the recovered low jitter clock (from the CS2100) may be selected to clock the audio stages; the xCORE-200, the ADC/DAC and Digital output stages. Selection is conntrolled via an additional I/O, bit 5 of PORT 8C. + +LEDs, Buttons and Other IO +++++++++++++++++++++++++++ + +An array of 4*4 green LEDs, 3 buttons and a switch are provided for general purpose user interfacing. The LED array is driven by eight signals each controlling one of 4 rows and 4 columns. + +A standard XMOS xSYS interface is provided to allow host debug of the board via JTAG. + +|newpage| + diff --git a/lib_xua/doc/rst/images/pdm_chan4.pdf b/lib_xua/doc/rst/images/pdm_chan4.pdf new file mode 100644 index 00000000..dca43ec0 Binary files /dev/null and b/lib_xua/doc/rst/images/pdm_chan4.pdf differ diff --git a/lib_xua/doc/rst/images/pdm_chan8.pdf b/lib_xua/doc/rst/images/pdm_chan8.pdf new file mode 100644 index 00000000..830a5940 Binary files /dev/null and b/lib_xua/doc/rst/images/pdm_chan8.pdf differ diff --git a/lib_xua/doc/rst/images/port_config.pdf b/lib_xua/doc/rst/images/port_config.pdf new file mode 100755 index 00000000..d1d00159 Binary files /dev/null and b/lib_xua/doc/rst/images/port_config.pdf differ diff --git a/lib_xua/doc/rst/images/port_config.png b/lib_xua/doc/rst/images/port_config.png new file mode 100644 index 00000000..1ed80209 Binary files /dev/null and b/lib_xua/doc/rst/images/port_config.png differ diff --git a/lib_xua/doc/rst/images/spdif.pdf b/lib_xua/doc/rst/images/spdif.pdf new file mode 100755 index 00000000..dc6681d0 --- /dev/null +++ b/lib_xua/doc/rst/images/spdif.pdf @@ -0,0 +1,1319 @@ +%PDF-1.4 %âãÏÓ +1 0 obj <> endobj 30 0 obj <>stream + + + + + application/pdf + + + spdif + + + + + Adobe Illustrator CS3 + 2010-07-28T17:43:38+01:00 + 2012-09-11T11:25:26+01:00 + 2012-09-11T11:25:26+01:00 + + + + 256 + 128 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAgAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8AmX/Krfy4/wCpb0//AKR4 /wCmKu/5Vb+XH/Ut6f8A9I8f9MVd/wAqt/Lj/qW9P/6R4/6Yq7/lVv5cf9S3p/8A0jx/0xV3/Krf y4/6lvT/APpHj/pirv8AlVv5cf8AUt6f/wBI8f8ATFXf8qt/Lj/qW9P/AOkeP+mKu/5Vb+XH/Ut6 f/0jx/0xV3/Krfy4/wCpb0//AKR4/wCmKu/5Vb+XH/Ut6f8A9I8f9MVd/wAqt/Lj/qW9P/6R4/6Y q7/lVv5cf9S3p/8A0jx/0xVa35b+XLStz5ciPlzVkFbbUtMJgdHG680UiOVK/aSRSCMVepflr5nv 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 sVdirsVdirsVdirsVdirsVdir//Z + + + + + + uuid:CDC85FF5019CDF11833BE0BE3DE690D7 + uuid:4a1f656a-1c32-2046-931f-1eb35715ca05 + proof:pdf + + uuid:b1ac9fe8-11a3-4422-b8f3-ae4b8085b7a8 + uuid:5D20892493BFDB11914A8590D31508C8 + + + + Print + + + 1 + False + False + + 72.000084 + 35.999870 + Millimeters + + + + + LucidaSans + Lucida Sans + Regular + TrueType + Version 1.69 + False + Lucida Sans + + + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + White + RGB + PROCESS + 255 + 255 + 255 + + + Black + RGB + PROCESS + 35 + 31 + 32 + + + CMYK Red + RGB + PROCESS + 236 + 28 + 36 + + + CMYK Yellow + RGB + PROCESS + 255 + 241 + 0 + + + CMYK Green + RGB + PROCESS + 0 + 165 + 81 + + + CMYK Cyan + RGB + PROCESS + 0 + 173 + 238 + + + CMYK Blue + RGB + PROCESS + 46 + 49 + 145 + + + CMYK Magenta + RGB + PROCESS + 235 + 0 + 139 + + + C=15 M=100 Y=90 K=10 + RGB + PROCESS + 190 + 30 + 45 + + + C=0 M=90 Y=85 K=0 + RGB + PROCESS + 238 + 64 + 54 + + + C=0 M=80 Y=95 K=0 + RGB + PROCESS + 240 + 90 + 40 + + + C=0 M=50 Y=100 K=0 + RGB + PROCESS + 246 + 146 + 30 + + + C=0 M=35 Y=85 K=0 + RGB + PROCESS + 250 + 175 + 64 + + + C=5 M=0 Y=90 K=0 + RGB + PROCESS + 249 + 236 + 49 + + + C=20 M=0 Y=100 K=0 + RGB + PROCESS + 214 + 222 + 35 + + + C=50 M=0 Y=100 K=0 + RGB + PROCESS + 139 + 197 + 63 + + + C=75 M=0 Y=100 K=0 + RGB + PROCESS + 55 + 179 + 74 + + + C=85 M=10 Y=100 K=10 + RGB + PROCESS + 0 + 147 + 69 + + + C=90 M=30 Y=95 K=30 + RGB + PROCESS + 0 + 104 + 56 + + + C=75 M=0 Y=75 K=0 + RGB + PROCESS + 41 + 180 + 115 + + + C=80 M=10 Y=45 K=0 + RGB + PROCESS + 0 + 166 + 156 + + + C=70 M=15 Y=0 K=0 + RGB + PROCESS + 38 + 169 + 224 + + + C=85 M=50 Y=0 K=0 + RGB + PROCESS + 27 + 117 + 187 + + + C=100 M=95 Y=5 K=0 + RGB + PROCESS + 43 + 56 + 143 + + + C=100 M=100 Y=25 K=25 + RGB + PROCESS + 38 + 34 + 97 + + + C=75 M=100 Y=0 K=0 + RGB + PROCESS + 101 + 45 + 144 + + + C=50 M=100 Y=0 K=0 + RGB + PROCESS + 144 + 39 + 142 + + + C=35 M=100 Y=35 K=10 + RGB + PROCESS + 158 + 31 + 99 + + + C=10 M=100 Y=50 K=0 + RGB + PROCESS + 217 + 28 + 92 + + + C=0 M=95 Y=20 K=0 + RGB + PROCESS + 236 + 41 + 123 + + + C=25 M=25 Y=40 K=0 + RGB + PROCESS + 193 + 180 + 154 + + + C=40 M=45 Y=50 K=5 + RGB + PROCESS + 154 + 132 + 121 + + + C=50 M=50 Y=60 K=25 + RGB + PROCESS + 113 + 101 + 88 + + + C=55 M=60 Y=65 K=40 + RGB + PROCESS + 90 + 74 + 66 + + + C=25 M=40 Y=65 K=0 + RGB + PROCESS + 195 + 153 + 107 + + + C=30 M=50 Y=75 K=10 + RGB + PROCESS + 168 + 124 + 79 + + + C=35 M=60 Y=80 K=25 + RGB + PROCESS + 138 + 93 + 59 + + + C=40 M=65 Y=90 K=35 + RGB + PROCESS + 117 + 76 + 40 + + + C=40 M=70 Y=100 K=50 + RGB + PROCESS + 96 + 56 + 19 + + + C=50 M=70 Y=80 K=70 + RGB + PROCESS + 59 + 35 + 20 + + + + + + Print Color Group + 1 + + + + C=0 M=30 Y=70 K=0 + RGB + PROCESS + 252 + 186 + 99 + + + C=5 M=70 Y=90 K=0 + RGB + PROCESS + 231 + 110 + 52 + + + C=5 M=90 Y=75 K=0 + RGB + PROCESS + 228 + 64 + 68 + + + C=30 M=0 Y=95 K=0 + RGB + PROCESS + 190 + 214 + 58 + + + C=60 M=5 Y=95 K=0 + RGB + PROCESS + 116 + 182 + 74 + + + C=30 M=0 Y=10 K=0 + RGB + PROCESS + 174 + 222 + 228 + + + C=60 M=10 Y=5 K=0 + RGB + PROCESS + 87 + 182 + 221 + + + C=80 M=5 Y=10 K=0 + RGB + PROCESS + 0 + 176 + 216 + + + + + + Grayscale + 1 + + + + K=100 + GRAY + PROCESS + 255 + + + K=90 + GRAY + PROCESS + 229 + + + K=80 + GRAY + PROCESS + 203 + + + K=70 + GRAY + PROCESS + 178 + + + K=60 + GRAY + PROCESS + 152 + + + K=50 + GRAY + PROCESS + 127 + + + K=40 + GRAY + PROCESS + 101 + + + K=30 + GRAY + PROCESS + 76 + + + K=20 + GRAY + PROCESS + 50 + + + K=10 + GRAY + PROCESS + 25 + + + K=5 + GRAY + PROCESS + 12 + + + + + + + + + Adobe PDF library 8.00 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 2 0 obj <> endobj 5 0 obj <>/Resources<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>>>/Thumb 35 0 R/TrimBox[0.0 0.0 204.095 102.047]/Type/Page>> endobj 32 0 obj <>stream +H‰ÔVËnS1Ýû+f™.®ã÷cÙ&¥õu%*!%¤HêßsÆ÷ˆDPW(Òµgì9>3ãgz|õ´z¤éb¦è`>#¡ˆçGÂÑ‚ÄôèBÑÍ7ñ@ºè5¥d +Î’ñ2+oiy_lîE¥U’Ñxkq!ÎZ¨Ç›‘µÎYZ›2#“nd­—ˆ¿öZkÈJå¤vÑKXT¤Ê3Þûm·âÇ>`]+][‡žªNñ¸oè³P2†Lãï&Miœ2²86$c”66&%½ +˜&>ÝQe¤·©—¼ ]ŠNÎP–í:\°ŽZ˜*'飡ö€N\âÜn¾pN3;&«¤¶ܵ1åë9gYËœ *ƒ["eNj$ ®3ÂA-¦uÍ^Ö×"‡a‘OQ5×÷brzr^ïÕÅa½SD{b-mÈÜÞƒáHùô,ÚG©”'mZ¹„Є¿’ÐØj¬³x;™Wߟ¾îUz²Ú{W¿Bè ¢›JÐëb²˜¿f–•öÒ{Fbíåìäüê»õŠ×BÁ¤b›‚!Íåã7/¦§ó—/xâÏnIS êË‹üÅä©ÓŽw£ž†íóýz¿Q[íP")Ä¢ÿqwEËõ—å'zÏßè¨"”&›¹âÒPŠ\Q‡¶æ \åœýV 7jßu‰my€i¯StÒ%d´Gñ +|lßkÆL-Ð]1 ÆúñÁ•Âh' 9†„Ô ¡“–ˆ·LÉö«­·l$ÅÛši«ol6{¼æ´FT­*×ÿ-óÛõD?iì@ÀÝÆVÔúøÛ<< +¤{£óz\Ä¥ (%•6C¥ÒZdðY F÷m¿)~ܰ3)øÅi‰õÍcDÆK¥C Ë }dƒŒ“žßœ( Þ¤ +C¸l{ù,¡…Ó<ŽÞ=+½ œNÅP8½ú ŽÇà¤Ñl@¥$”‡µ`‚c¨-¤pѼ‰öùœ¢%”ô”üépgâ—˜± endstream endobj 35 0 obj <>stream +8;VFbJITC;#jX][ks,*`4/7E`2-J=o'M8O:&-nL_nes9DKGR0[!i("X&2 endstream endobj 36 0 obj [/Indexed/DeviceRGB 255 37 0 R] endobj 37 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 31 0 obj <> endobj 38 0 obj <> endobj 39 0 obj <>stream +H‰tU xMWþ÷>D’ H¼Nî•&AÈ ^ ¹7 ŠK ‰råæD‚ Ä#´)MÊP)jhÕ#JENê†J"â2”ºIÚ´L[Ji~Ü3+‡¶´3g}û»û±öZÿþ×ã‚pGXFÄtí>eCö4Úù‚Ƙ„4k†«¥æ"ÀºBXÂìLå܈ßb²¤Œä´ÚÚ¡ý&´’Sç&]þy¹7 ZnNI´ÚÊÄíã²×3…6Ü'Iî@ÇF¯SÒ2³ÆÏŸÿšú“ýªÔô«óY@§{äóVš5+Cð”ëÀÏI_™fMK¬nz'ÖH?;#}fæÌÝé—ÌÆóŒ‰û +9Më@¾c+!ÁY<'"¡å¯¿° Š3ç®2$‘s‘n xî­ Ê].±­uJeªBžóg³t‹fÌ—†üû1t?:DIvrnââêæÞÔÃÓ«YóÞ-[µöñmÓ¶]ûŠŸÁØÑ? SçÀ—‚‚CºtíÚ½GØ_zöêýrŸ¾ýúx%|à “92*zð¡¯>Â2rTÌ迎7îµñ›01ÞŠI ¶Ä¤ä”ÉS¦¦¦MKϘ>cfæ¬Ùs²æÎËž¿`ᢜÅK^#÷Í¥ËÞÊË{ùŠ¿¯\õÎê‚w׬]÷ÞúlØøþ›>ܼeë¶ÂííØùñ®¢ÝÅjÉ'{öîÛ ôà¡>òéѲώ?Q~òTÅéÊ3UgÏ¿pÕ—.×üëÊÕϯ]ÿ↽¶"'&0„˜“à‚…ØýÐX(‹aV–ÅÞá§øi~C(SZ(¾J{Å (Ý”>Ê.?ƒ_€dƒ‡ÁËàmð5´7¢ ñ†DÿÊ»\Óc‹MPQJ¶F±xÝÖI²u•l5WZ+mE·õòŸlùüfËF¶˜¦i_= ‡¶M› -Ö"´€Ãx|½îƒ§'u¹ukhxÕN©k_cßlÏ·/³oì™öéö‰ö®ön×~ð<ª;6d<ãÏð ìðëw÷O;»°o ?b ¾Â›X|lÄlÅ=äáu¬Æ÷¸åX‹e¸ïð>vâÜ!K›Q„Ó8ELOBVž3HD*qU8‹sh@ªqQŒd|‹U¨Á%\F +¾Á-¼…)˜Œ©HC*¦Çé˜N/š™˜…LÌÆ|,ÌÃ\dcæ£bE6‹qÿÆ!\A®á:uŒZ\…"~'°ûPŽ%8†¥8Žmr|¤ +ø7q|ˆÿë4n6þ:fi·èŽ«T4víŽtÍxƒvSªÑõnò»ð‘M€ô¬Bµÿóñ=|Éï”:,\&±È²Úd²XýTØ>þ÷W@|l$Öʵus6ŽØ1PIˆ +i–Ž£Äg9ít†…;Ñ‹²i%Á8ô"Ýd¿–t ÐÛ(VåÄËÖœbµ—­æ³(Êõ¤SÄS­ØPÆ‚é~ÎØI<æ„(-—¸ñA¦ê^È~R¯õÁŠßNÒxÈ:³bí=t nOâ$ßC]h &ª•úÙ –ËòéÅ ðG¼Š1X#¨a5BÖV¤­Ò¶ß‘´?2ïSTÓÎlXã!KJ–*("ç´[ð†£(¯òéÍål;,äŠnr3-A›©íÐ*©Ã¹QÎåòBÝN9eY5å§_âgB2ƒ»q ŸÅ×O¡è C åU6âáœÅn“h„µXp‹å*ùî“ÛŽBÇUÇCÍ]‹Ô6iûµ‡ÉO8†Ó­…”Qké5Ivby,×=µeèY‹cI¬‚=àyîÅ'óküž*u“´cÚÔ“Ú‘%½ÞBÈ“(Ççè‘."ÙC¸ë¨Êî“=Î<ÈÞpfa#™å³ÃìåRo>–Ûør¾š2­^ˆ’HÊÄ‹Ò>é°,;Å8z;VhIZ=œáGÌû#ÞÜ|%èµÛñ åM5UäæF‚YÂIÌ%ÜãX:1’GÞ>fÅ䱂հotnz‡Ëñ%|)oº}³%Üî‹nb€ØCì/ÚÄdñ{©©ä!]‘~qÆãCOÖ’œw¸;†:ÆiNÚp-Fk Ìm…×ôN‘Mµ<ŸªŸò‡rñ>É<Â#BåɼX+=#z²WXõÚl![Ͷ°B¦’cÇÙ VIèjX=»O\»pÊÛ©„p¯âøeÞÀ5ÁCðZ +F’H!J,Ä…9„|•°IØ/Ø…ŸDþ¾„Œ8UÌ—‘|$‰_‹÷%HRº”/©R‰t[ö”›É½ä4y‰|Iv8y;õuJvn¬âê}U/Ôo!åÇ>êRE”“©鵕ÉÚˆ"»ÂRt¿$´G({¹^çô_®­c5â2ês7àK¬”Ë+ˆ¡Rê†ï¢\ÜŽÏÖ#´[×.!ÁA/vîàßÑhðS:´o×¶¯OëV-½[4oæåéÑÔÝÍÕ¥‰³“,‰g6#ã5 ^ŒÑÑ!k£•6¬ÏmÄ« +mE¾¨£*ñºšò¢f8i&ýA3ü©føošÌSé‡~!ÁŠÙ¨¨gMF¥”Kóå&cœ¢ÞÖçÃô¹ /ÜiáçG7së“¢²xŬFÎNÉ3Ç›È^‰«K„1"Ñ%$%.®4u¥™iÌ(a‘˜>á‘æ>%Îî„Jb4™ÕÁFS#Uð7[mªed¬ÙÔÆÏ/.$Xe ÆI*ŒƒT ]ºUŽPt7ÊäÆç _) .Ë{»Ô“âƒÜlF›u|¬*Xã}x©QF“5¯¡uHp)+«6‰(e{C´œ’Á9&Siæ æ¼¼¥/ª‡ëGxŒÿå»êc£8®øÌìì÷ÞyïÓwgÓܱ܅æcv¯x ˜ô%'‚d¦†H&Td•T¶U‚8ÀIU¾ŠTJQE)gÈ Ö4®úO€¢Ò%´8iicò!Åö®ûæÎvíJíÙÏíìÎû½ß{ï7oë„ÀUkòØàv(óìs àJ“QÇ®4n geãi£9³µÂÊdѪÖHw(e~8z¥ê™ÕkŒH¶¶Ähذ´´Ë‹2«Z{’f89ueö¬.ÝUà°ËY46Ñ“'MkùYþv6Ôã$b†ÈHBð³á—€d‘%Ñ…lhZˆ2/-„ÛàÓ€«-ÀLcF¯aóQÝg"±1ðåÔ+Æ®Qý!bS–Éëãól<ž}ê)–â [”ÿ^5{ÖÎìrã=œ]”¡g×ÀC 5e@y$Ââ·?g¢ð%ÛöÜšÂ÷0ÚXÒ̲xC–4²•«ã+¾z¶Ò6¾2ñx£‰z6ß}ù²Rlâ·H÷{êšk²Øÿ–› +ë;—A1e2ËŒð²LcfCn´m£Æ çF¯î/Éššq `ÏVæÝE„m +²Ä^Dô|Os8Üñ"3!Ás‡‡Ëç9ޤd‘Ýq£¤$_"œ +qâñ•ƒ‰´•X©?J¤u+j0Zl(ŸqE\Q0¢hÄäÚFÚx4ŒLÚÆ^ ¶ÁaÏ÷ÓÌ"\HŠGIÊÿ5òü‹l×~ý T–¶Êçzª"¾møyâÐ!xJ³osƒ‹CKM |¨çˆà!.‡·›:óŠÃ¶Â°ÕƒHÿ²ëO°[mçrWW£@- ­ÞËω¿¦÷Âæ¸k\õÏG>²o‹ßý×ûຠxiÖN„¶Ë ò²B%AQDAÂ"/Óv“0Q(Í‘M¥`+¢˜#U¦Ž04àX!˜ÈRƒÉ 9ü¶éEJKxªhÏ<“â.`)X7UxHªÚ­È«Gó>‡‚À¡XY×´ô @ëÀÀ'ü¤õÁDÈJÔ&òÐ÷¾Ö»wN€ý‹Ã-Ì/QO$ÄP^ \„óD8Yþ1yúÞIëà©»øñß7´³7à üCÆó辘€Cb‹5$Í<ú.ÅÑ©e:MtðY*£T©§UL–ì|7_©¦VB`jCé‘Ѐ>P;fÊç.i5./ûxô2 ^Á߂ܒނQ<Žãñöö¨“aäÒQ¤‚÷ÅbF˜À¼²bþü|ñº7Ž­µ3öiÜŒwü«wß]a?ú +{F–íÏl^Q6Û‡/@SÏ-¾–.µÛCöWö™`ùˆØˆØ[1š¼uf0.ùöa¢îC’Þ*¤Š}êZHZsÿX®¦Pí@í@õ78sFiÔsÈÖÃÁP$jàïmÁyèìÓ^銄©Ûç%4TÌwWÍ#±ˆq‰§áØ;Gí>ûö=ì¸q}çæ~ûúû|ßiû7ŸÝ´ö‡{p¸ë§g¼ZÊ^T”6 o$QDm€¤QäIâArP™áÖ9¼µ'Ò|r¥¥û!/X:X wuY¡Ø/2öw…û–u˜ðÖ09Ä÷°£Ç­¿Ÿ³Í mˆªžj›Ù%)5«â‚aE½„ß*oÆ%ÿ©òíÌ8Øþ† fkˆÕ[ÌæeÞ›šcº˜*€Ž¡ /{À»k“¼c¹ؾ•®Ë7XÚó¾|ŒÜCyA`å¦qÔË "G¡GX9ª²ä•^–,çH"ˉ<¥„¹§(à¬$ ”SøƒbJãd%Gô°òËá,`ÈWà @HÁË@ºß]<^}…Ñ]­î®Þ+AýñP€«@˜€BÙáv]¹F^¸i]"ïÙ¬V¾ÏšIn[‹F†ÈË=û8xÁ£rÓƒ åx$Ñ”X`C ±>:‰  ‚MÆè€ÈÞ Ç€’[' +» 1ØMò™ HAõˆtTÍIªO|$H§“*²„¤i=YK›È[ä4´³×È-ò9у¤˜®†Ë›ÈËtù=LŽÐÈC2D¹ÑpŠ&ª¢LÒ8*ÉÀé|Sf¤sT‘Aq+{tFÍ‘Åf ãYEMŸdI!œê„PCdœ5k%,åðñžW8Ì]ÄNhGU²À”QÒá¼5ÿ´ +Zë­õ¡€•W@× B«·>¨þo!,Ÿ‹×oGë#„Ëpa¢Ã1èôi¯Ýü{{ß7¼—¶-¤g‡ÏÐÕÃIÚÁTðcPÁ"T‚¶™ÅK$ÿ.‰Ów!ÙÓª¥¦[i²t’òMÑ +\⌑¨b®"O .ÁÁäáÃÅ"Ìܽ…@KWõ·àïoÉ É˜š€žðÓgªyî•Uy²ÚnbLQts¥7ìß½w +/ºy/:uÒ¾vûîï?ýôë‡ÑKxKÿ'xKo¯}ø“;öÑN€,†ñx¹}Îþ‹}×î.("ýË ä‡v?§±ús*ü˸âÀ½©é–w°Jt=ïd)ç•b4ê‰É®ìå`ÐEgró¾Ž idÊXá‡÷†Ë‚^5Ô¤ñ'¼¸iýç®õõ×Ï×´lçûVÿªãHÿnë,ùçå+¶,Fch™*9Q9?Sri +Ë5¨gMõjš*kŽ}z›%ÊîTUE’5Þ‚ìR/àà(}®ÛÓÊçUäp®EÉ`(GœSªZ·‚ƒàDj±^Ò*=G.¤“sNœ‡ž»á, €ç%œ_Œùb.ÉÓý nAï@’—wÀy–(¸^ðD(ÿ©¾_}|yÉî—ñÛ¶×õ.½êÛí?âû>{sõ/ÚfYËÉ÷­N®è×;ê¾WÔaÓèî>äau›¥BØ?Ý?#6c¾–tnž±ÓñjøuåuÇÛŠ—Šs£Ã擘W¿Š”N6´ËËáN”¥ÿf¼\€£*¯8þ}÷½{÷q÷ýNv² „€ó–䊓ЦB|,!.1M‡&5*Á‘P@ E RÆZ"ˆŠ£Y(JiKe@í´µ £q¬D+½éùîÝÄ ÚN3{o\’=çûŸÿùýŸ˜ 3õ¹Œät=ïWzq¾l”°tÅ&ü3D„LšÑ•4-¯tGU— t^¥¥ÚZŒŒ÷ù-6–³†}¶À:ÄŽç×a¿Å»sf¶Ña¥wtàDI‘Ó© Gà.º³¸¸pš‹løÎaw:].'‰•L('¼ôð/*ۻ‘]œ«¬\þ›g_þí‹m³Ö¶ÍXüÐÏWT(7†Ñ}Ûý¬ÉÙ´(V6kþÌÇêë[›z0ý»|ë+ïX2gj´uÑâöWô ,•QTR›!g³T-ÄT$ ¤£t  æǃÆoQ1ЙàAX[ƒêù7“VaÔ"²»¨ìôuæÓôu6Ïž›á·KðÛÏ©{ú}ùNžô¢^'r€r˜LËó°J–ôzwR:ƒUÂat"Mi +Ö 0?Ír¢H6ÖDÄ ²Ë‚£R¢N'Haeчê·i#ñÌC`–Ö£ÔûX„Z¯©;{)ݯi8AŽÎ=Ö;Ù걞`OÀÕ)HQ¡'÷(|Ý'ôiw‚‹X{åb,áO”‚¯ñRüøi%‚?úZÙ ´QW©Ó¨Éé¢4MÝ“> +ÓÚ8|•™Î<„Æ¡)¨OvV È“gY-[ÏÚ ºx$B›ãv>¯s²*XCâ99´(æÕ¹=§²[‚US-Öw&öR3e»cê[¡ÆËš(Uûé'gD hDI¬¢bòÖJ€œ„5UuçNrø“1<‰™Ø€L±;]þ\oòyÇ¡ñÂÄ$Êg ÁinÀ¾q4$ ˆá’fÁMpÇ忀fÇ… +ÕÑÍá‹@½`g;‘u‰‹üsÄQ¥ 2§¾œÿrÍOc;ž2ybíìGÏôÔï­÷NÉ6zLwÏ+^ZX¾ëBcEÙÚój~ºí…?=õý9ãë»çÍzj«b¯™žÅü(Xù;졞lœ³¸„¸_ +úù<$ ÊBoÈÅAÙaÌ–9_Že•hÆçÜ 8ßòˆ#nÝMºª Ä´e¥µ Ųƒo…šOgL®?šÝQð"ÍBDœ;½¼èÝIìåáæÒ;’È#ø’8Ãæ(öÀ +Ùê0l€ñu°~6«²@îj³ÐèF»Íìè€ÖÛMÖd³š¥Ìpu¸RÈì[d‘…ÃÞ–±b|*5ë芳¹q©¼¥¶Øínx²bë¦¶Žš½÷¸’ôœ–åògʰr «´¬›L<Ùs¾vÉŠÃWéã 9'zNžvÍ|ÍvÃ|ÃÆä †Õ:³ˆqå\½).ëxçê¹h•­²Ç)ÑЂªÜ–&–\/n:j<“Z†a>Íè +dUî™whab¡¶ú¼f-Àê£-IdàfeíIÛ/Ó2ènÎ#â€-‰ü.7£‘úø©M[¿hÃzì\»û¥¦ýNîè|.4cF{?Çwå¾8õßÿ£NŸTv…‰Crñ£òÔ™‚Qt¸œmF“Éê%9:µŠ¬P‘«ËÑ"Ve9[L]l,õn¨ñÊÈÁ«5 Ü^TÚŒžŽŽÍ·Ÿ¶Ha>l¡MP“É£w%±Op&‘ßÌX“È-z“ØÏyµ9Á0™!U"@r²>”EÁ‘–àz¨ô‡§ŸI+]û‡Í'þŽÓ÷Kï|<úD[ºÿ­}Is{n?øñNl_¯|¡\nÙwà‹Ý›w¨Ê‡Å·QM<ª:ÌuþêäP$‡ôËuX§æž®ÃìrÔÏÇ]/žt$Ô¼W-;%žI ÕÐ¥¯4P¦‹ +)ø`Ên½ÉÒ©hþó4Ì™í9¬ˆ·ˆÚ1‚û®’Ã$@€¹³ §=Ç Þ1À{ã!BÔÉAÃû^v,I¢ù²ºg¼žê±j’ oî¶0QõÀ‰Lqßž&~|“&€_S)|î]%FY‡Ìå1”YaÓ'©‚ôŸµzðF¨‡FŲ#h‹Õh Ëô‹Ä«±ý"ˆ7Ò,í¥R\þ‹š™6˜0ÂÁ+åpp\à¥8mMÀÁ( ‚ÚÓ8è5f g ñ?‘8I8I8I8I8I8I8I8ù-$&ÃDtæ$HÌEF¬ÆŠjÝõÑú•׺w]yzÕÕî®}ÝÛ¶íÛçiÇ–?Ãæk”Ï^zAù×O¶pöí÷Þ{ûìªÂ”Væy¨ŠxkŸ\êÏxkÞˆ·Z³Üb­˜sÄ"2š«d©ƒöŽuW’<¢£þª,V)rÔ`½`°1ì4ü‹ýÿ=V2i{»ÃæwØ,…Í_¡9êZ²|‡¿>riCñ«K¿qW¥•={Nu×]ÊÇûƒ¥oRÏŽq׊á«Ô¯X'xP›œkDýïÉķΧh%%nqahËØt`G/¾$[E©Nߊ;õs€˜sóUú‰ê¡8ÎW‰þ¡UÂ&/‡ŸÝ3o~ÏZ²Å§©Ý2ÐV+-5 ck@ÐžŽº…-¹E…E%Bdª‘RëîÞöË Rدôϯ”zî¦ÖlOÙ.oOïoYbDt3eˆC¯Èöí4Ïy“›€ÂÜkè'ô¯ú5¸ DÖrhD¦}$Ùªn0€_M¶Zå`à…Ž nöu\Šh\z aŒcü'¯áÙÈ 8»«ÓiÇ2iÕ]þÝ4†ˆ3CÜRZ «(ʰ×~eY +Gqu¯r?S6t„®¾õ&áOÐnTÅ£ ²IÀ8!Ï0\%™ÞáÏe#!QS,¢)ŒI9†¶31@›õjT…˜98ë:`½æ!·v ë@>âüoÕ„E=–úã”­T ß +Úˆš¿!jtz¯Ä¼°EœðE¡·ˆÚ•µ Lç#÷gO'_Ró¦>⯀ó +ÎþAäY`ýj.Ï‘ã0^/D=‹Zg‘‘¨¿ü‰©_CfŸ•kÏ@ÖZ¢6°Gfà·%χ|¸ ì®K;jUÖ êA½9uUy›:dŠœQÓ²®ìgämà0p\‹ây‰â<&e-ÅÔ<Ú…ÇØ}—DûêÝÃ[…Ù9öO¾Z6Ú~Õñ,Ú‡Ší 5¤&í¦ÝGû™s»óuçëzu¦íG{?Ë)[÷5ÓÂh—EË~òÿíÞ›|eL‹ +¤à—]}†ÄWë m5z›CÇn½ëØ_\ÔÿŒ®@?’Ñ5è/gt'=L§ÀdJz×éÑRv%£sºMft-åÙ]^–Ñ5è›3º“zx×YQYYaÖDÛÂí±}ær³.ÖÞŽ›u¶”› ¡žrÓŽ—›«ÖV–®^µ²Ü¬no7·DÛ"=qsK8îî ·–›2ÈÊ2ikboØlŒµ÷öDcñR;Ðl£<µM µ’M½-ÑÖPc¨3~wƒ­0£q3dv‡Û¢ñžpw¸Õì鵆;BÝ{ÌØîÙ—BCdRU¢U@«¡(µQ˜Ú)FûÐ_ÔAo§Xãè=FÔBåÐ(D=RóHŸÐVá`+©”VC[)-ÕÛ¹EFŽ`D\öĈ0uSî­’y;“•T6#§­” ½`™Ô(3éEŒ(´ND(ýDF÷:—‡j© ù×R€Jh"¶`D+ÖÓˆ¸bLìíèwßÿÁ˜iû!òŽÊìC@·ÌFô{ä:Ä*LèÝð¶¢×!³Ü[ŒvÿW§è°Ÿ¹©µˆ3Ëå~¨ª jþæ‚Íó +æk¹‹sªÅUÆèâQCs»Ü…IW²ð¼ë|¡f ùåÈïÆøù®Kß½”fE¯9²rM¦«iþP*à2Òüs¶Øa‹`*(DÀÛÂ/Du¯â` _Ï¥¦‚>¸IEë Ö¥¢>ã¯äkép®MõÿÖ5î¹:ƒjk‘vþ<Ý}–—ˆŸ–ì—©D‰qŽMP¿¯ ö‹”o»‘fS¾-ƒÂ™fϧƒ˜—¢ I`ãb^æK%ÖÁ½-•hƒØ”ò}Þ¨žËJ)(Y%ùùøIHÍå«6þž×'Ò +K žúˆŸn0>ôIã[ýRœ¦û±ñ£ÄvãÔWØkÆ÷¡Ïö¾L Ë7ûÏG}RM"߯cÌñ”ñBšŸLƒ~I}Þö?×?nxéïÁa0¯·Î·Pý.Óú[cqšÍy2`©Å5Ìʯ§ú­5#`LúÚ‚¾*WU~}cÓL½ï^!> Ä}–'„¦ˆ»"õ<.îÜþb¬ŸWYë™åÖ{á´Óø²æúFX“ÒšÖ¤´ºYǨõê"¿µJ(S‹üõ֋掦^ÆK¼ž^*„¿iÄq”—y·»ã¨ÇÚw$¼4Jš2Ÿ‚Fe¾¤´iAŒ-*„ -¡ ¤•%‚†s¼á‰€×3HN‘›&$g¢È-9ºä Ø0Ö3 JV…› ¯,«Vòù@é÷I +«"Ÿ äcU·s²)~›âÈŸ¦8ò?MÙ7+e–cøW¸ætd¬oÈ.ö6{Ã@³u¤/â²v™æpߘp˜–cyó®–ˆ¡°5VöX}Ås824‹{H¸#Åžaònmr‡=©ˆ;â-yü#ÔÅŠ†Û.|bºÁééF¨Ý¯<²MÌØua–/w—˜ñ‚˜ñ‚˜±ËÝ%g$æ6Ö øš†uªñoØaËÓ<{Nþ†¦æ…Kü5 òö®·ÐY·ÄÕ¿ðŒBìe—ø­œâk. \eÕeÕÂ…'D¸îƒ97ãrõ¯[²ð ;‘qåÁ<ÏûÔFo°'ÞßÉzââ"‹{#i¾Í±ÜGš-³Øci°Ýi¶–¢G¢×d»ÓÜWìù·êa endstream endobj 34 0 obj <> endobj 33 0 obj <> endobj 40 0 obj <> endobj 41 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 15.0 %%AI8_CreatorVersion: 15.1.0 %%For: (huw) () %%Title: (spdif.pdf) %%CreationDate: 11/09/2012 11:25 %%Canvassize: 16383 %%BoundingBox: 19 27 221 128 %%HiResBoundingBox: 19.2402 27.6963 220.3877 127.2681 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 11.0 %AI12_BuildNumber: 39 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 18 26.8594 222.0947 128.9063 %AI3_TemplateBox: 120.5 77.4063 120.5 77.4063 %AI3_TileBox: -159.4526 -302.1172 399.5469 480.8828 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -43.6665 164.5728 3 1033 560 26 1 0 51 321 0 0 0 1 1 0 1 1 0 1 %AI5_OpenViewLayers: 7 %%PageOrigin:-36 -150 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 42 0 obj <>stream +%%BoundingBox: 19 27 221 128 %%HiResBoundingBox: 19.2402 27.6963 220.3877 127.2681 %AI7_Thumbnail: 128 64 8 %%BeginData: 8230 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45522752275227522752275227522752275227522752275227522752 %2752275227522752275227522752275227522752275227527DFD4CFFFD32 %A87D277DFD4BFFFD34A852A8FD4AFF7DA87DA8A8A87DA87DA8A8A87DA87D %7D7DA87D7DA8A87DA87DA87DA8A8A87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA852A8FD1CFFA8FFFFFFA8FFA8FD27FFA8A8FF527D52A852 %52527D52527D52277D52527DA87D5227FD047DA87DFD16A852A8FD1DFF27 %FF277D7D527D7D7DFF7DA87DFD20FFA8A87DA8277D5252A8A827A87D5227 %525252277DA8A8527DA87D527D52277DA8A8A87DA8A8A87DA8A8A87DA8A8 %A87DA8A8A87DA852A8FD1CFFA8277D27527DFFFF7D7DFF7D27FD21FFA8A8 %A87D27527D52FFA852A8A85252F87D5252A8A8A87D52A8527D5252527DFD %15A852A8FD1CFFA85252527D52FFFF7D7DFF7D52A8FD20FF7DA8A8525252 %7D52277D5252277D527D5252277D7DA852527D52527D52527DA87DA87DA8 %7DA87DFD05A87DA8A8A87DA8A8A852A8FD1CFFFD067D277D7D52FD047DA8 %FD1FFFA8A8A87DFD07A87DFD07A87DFD09A87DFD09A8FD0D7D527DFD04A8 %FD21FFA8FD24FF7DA8A8A87DFD0BA87DA8A8A87DA8A8A87DA8A8A87DA8A8 %A87DA8A8A87DA8A852527D7D7D527D7D7D527D7D7D52FD047D52A8FD1EFF %7DA8FD25FFFD27A852FD11FF7DA8FD1EFF52FD26FF7DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %52A8FD10FF7D7DFD1EFF52A8FD25FFFD27A852FD11FF7DA8FD1EFF52FD26 %FFA8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8 %A87DA8A8A87DA8A8A87D52A8FD10FF7D7DFD1EFF52A8FD25FFFD27A852FF %FFFFA8FFFFFFA8FD05FFA8FFA8FF7DA8FD1EFF52FD26FF7DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87D52A8FF7D5252A852527D7D277D7D5227A8FF7D7DFFA8FFFFFFA8FFFF %FFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFF52F852FD25FFFD27A8 %52FFFFA87D7D52A8FF7D527D52FF7DA8FFFF7D52767D777D527D777D527D %777D527D777D527D777D527D777D527D777D5227F827FD25FF7DA8A8A87D %A8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8 %A87DA87D52A8FF7D27A87D7DFF5252F87DFF7D7DFFFF7D7DFFA8FFA8FFA8 %FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FF52277DFD25FFFD %27A852FFFFA87DFFA85252A87DA87DFF7DA8FFFF7DA8FD1EFF52FD26FF7D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87D52A8FFA8FFFFFFA8A8FD06FFA8FFFF7D7DFD1EFF52A8 %FD25FFFD27A852FD11FF7DA8FD1EFF52FD26FFA8A87DA8A8A87DA8A8A87D %A8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87D52A8 %FD10FF7D7DFD1EFF52A8FD25FFFD27A852FD11FF7DA8FD1EFF52FD26FF7D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87D52A8FFFFFFA8FD0CFF7D7DFD1DFFA852A8FD25FFFD27 %A8527D527D527D527D5252527D527D527D527D52FD1FFF52FD26FF7DA8A8 %A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87D %A8A8A87DA8A8A87DA87DA87DA87DA8277D7DA827A8FFFFA8FD20FF52A8FD %25FFFD30A8527DA8A852A8FD23FF52FD26FF7DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8A8A87DA8A8A87DA87DA8 %7DA8A8A87DA8527DA8A852A8FD23FF52A8FD25FFFD15A87DFD1AA8527DA8 %A852A8FD23FF52FD26FFA8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8 %7D7D7DA8A8A87D7D7DA8A8A8527D7DA827A8527D7DA87D7D52A87DA8527D %A8A852A8FD23FF52A8FD25FFFD12A87D2752522752FFFD07527D277D7D27 %FD0452275252277DA8A8527DA8A852A8FD23FF52FD26FF7DA87DA87DA87D %A87DA87DA87DA87DA87DA87D275252F852A85252522752275252527DA827 %5252522752277D277DA8A8277DA8A827A8FD22FFA852A8FD25FFFD17A87D %FD05A87DA87DFD0BA87DFD04A8527DA8A852A8FD23FF52FD26FF7DA8A8A8 %7DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DFD %0BA87DA8A8A8527DA8A852A8FD23FF52A8FD25FFFD30A8527DA8A852A8FD %23FF52FD26FF7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8527DA8A852A8 %FD23FF52A8FD25FFFD30A8527DA8A852A8FD23FF52FD26FFA8A87DA8A8A8 %7DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8 %A8A87DFD08A8FF527DA8FF52A8FD23FF52A8FD25FFFD27A87D7D527D527D %527D7D52527D522752A87DA87DFD16FFA87DA87DA87DA87DA827A87DA87D %A87DA87DA8A8FD1CFF7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA8A8A87DA87D52527D7D7D527D5252A8A827 %FD067D527DFD15FF277D7D7D527D7D2727FF5227FD047D527D277DFD1CFF %FD21A87DFD05A852FD07FF7D7D52A8FD06FF7DA8FD14FFA87DFD07FF7D7D %7DA8FD06FFA87DFD1CFF7DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A8 %7DA8A8A87DA8A8A87DFD04A87D27A8A8A87D52A8FD07FF7DA8FD07FF7D7D %FD14FFA852FD07FFA87DA8FD07FF7D7DFD1CFFFD21A87D7D52A8A8A852FD %11FF52A8FD14FFA852FD11FFA87DFD1CFF7DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA8A87DA8A84BA87D52A8FD10 %FF7D7DFD14FFA852FD11FF7D7DFD1CFFFD09A87D7D527D527D527D527D52 %7D527D527D527D527D527D527D52FFFFA852A852FD11FF52A8FD14FFA87D %FD11FFA87DFD1CFFA8A87DA8A8A87DFD04A8FFA8FFA8FFA8FFA8FFA8FFA8 %FFA8FFA8FFA8FFA8FFA8FD04FF7D2752A8FFA87D7DFF7D7DA8A852A87D7D %52A8FF7D7DFD15FF52FF527DA8FD0DFF7D7DFD19FFA87DFFFD0AA8FD1CFF %7D27FFFFA8527D527D7D7D527D52FF527DFFFF52A8FD04FFA8FFFFFFA8FF %FFFFA8FFFFFFA8FFFFFFA87DA852A852FFFF277DA8FF7D7D7DFF7DA8FFA8 %52FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FF7DF87D7D %A87DA87DA87DA87DA8FD1CFF5227A8FF7D525252A8FF5252277DFF7D7DFF %FF7D27FD1652A852FF527D7D52FD047D277D525227FF7D27FD19527DF8F8 %FD09A8A1A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8FFFF %FF527D52FFFFA852FFFD047D52527DFF7DA8FFFF7DA8FD14FFA87DA852A8 %52A8FF52FF7D52A8527D7D52A8FFA87DFD19FF7D27A87DA8A8A87DFD05A8 %527D527D527D527D527D527D527D527D527D527D527D5252A8FF527DA852 %A8FFA8A8FFFF7D7DFD07A8FFFF7D7DFD14FFA852FF527DA8FFFFA8A87D52 %FF277DFFA87DFF7D7DFD19FFA8A8FFFD11A87DA8A8A87DFD0AA8FF7DA852 %7DA8A852FD11FF52A8FD14FFA852FD08FFA8FFA8A8FD05FFA87DFD0FFFA8 %FFFFFFA8FD08FF7DA87DA87DA87DA87DA87DA87DA87DA8522752A8275227 %FD04522752A87DA8A87D277DA8A87D52A8FD10FF7D7DFD14FFA852FD11FF %7D7DFD07FFA827A8A8525252277D527D277DFD08FFFD10A87D277D7D7D27 %527DA8275227FD05A8527DFD04A852FD11FF52A8FD14FFA87DFD11FFA87D %FD07FFA8527DA87D5252A8FF525252A8FD08FFA8A87DA8A8A87DA8A8A87D %A8A8A87DA87D52277D7D527D525252277DA8A87DFD07A87D52FD11FF7D7D %FD15FF52FD11FF7D7DFD07FFA852527DFF52FF527D527D7DFD09FFFD11A8 %7DA87DA8A8A87DFD0FA8277D7DA87DA87DA87DA87DA87DA87DA87DA827A8 %FD14FFA87DFD11FFA87DFD09FFA8FD05FFA8FD0CFF7DA87DA87DA87DA87D %A87DA87DA87DA8A87D527D7D527D52277D52A87DA87DA87DA87DA87DA8A8 %7DFD0C5227527D7D527DA8FD15FF27FD1152277DFD0BFF7D527DA8A8A8FD %0BFFFD10A8FF527D527DF87D52527DF852FFFD0BA8FFA8A8A8FFA8A8A8FF %A8A8A87DA8FD1BFFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FD0DFFA852 %A85252FD0CFF7DA8A8A87DA8A8A87DA8A8A87DFD04A87D52522752277D52 %5227277DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A852A8FD %3AFF52FF2752FD0CFFFD11A87D52527DA8FD047DA87DFD18A852A8FD3AFF %FD04A8FD0CFF7DA87DA87DA87DA87DA87DA87DA87DA87DFD09A87DA8A8A8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA852A8FD4AFFFD34A8 %52A8FD4AFFFD33A85252FD4BFF7D527D527D527D527D527D527D527D527D %527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D %527D525252FD4CFF527D7D7D527D7D7D527D7D7D527D7D7D527D7D7D527D %7D7D527D7D7D527D7D7D527D7D7D527D7D7D527D7D7D527D7D7D527D7DFD %4CFFFF %%EndData endstream endobj 43 0 obj <>stream +H‰¬WéZâJ}‚<Kp® €—-,2*.ÃrÅqDeÿÛÝ I§éN:ÀŸÌ|ÚÖrªêÔ©Dú®+z“D2!·:r~¢.åÒY´”| Ý]Ëùsí3]¸哵q·˜lœ‹"ú$þæ&¿Ðo•Êó¬*Þ7©s_)r›¾êdU¹8_Wåü,SDÌ„a±<Ëg´‡v²6ÜJª”kÅT©¬'é»°i§“^«ëÖîñ¸ª¾l‹Mø$¤ð€ózÿè#øôܰ“ +vˆüLûÆbŰ—ŒâDZdÉ·Rü‰‘ämG‰=(1ó£¿SÆþffº@ÿ30¥—‚=ÚJ2»XÙJRž%Iü dcè“_„_ï弿 ‰[¶ÁcUžÄvT³d×´hÓA™R_MÎÎ4¼AFQ]Aä«ï«¦ŒƒRÍ,‰JÔÔ¥Ó?Ê·U],VÆçVnæI->fVHv/f<¬ ì!˜!Y¥CAt­à,¨?Ù¯_1ñ>-8êrA,d;-ç +òÖ/9Shö3ö1íñƥϋ“±õì×ÑI‚º coÒ²"ÄÞÿàdˆ½eÃ'CŒ`4oI¦c]Ôh‚¨÷e~“_&_¥§ÖÄÅþïµc‹¨“MQF¬j‚¨T^ÖšsèôÑšç‘«…Çj`%¤jéŽB`¿À¬£pˆ»Ô©,ögþMeM.„+MçxŒÏ¸_†‰G˜è¤‚—ÍX}/è¸p +dP}aÜ™“1MÁÊ…F +öya„b$é= Š p¢àˆqcâ2öx ÐUvijbEmòkbß9 ZP“TÄJÍhã/Î Õ—ÏÔ‚»x>ê€Æ~mI¢b÷²þö±5 >XòQw“†¶ä j8†vl ž×OFu‚ìÆèYâel}¿°ƒ¢i§®¥+y˜K¸¼Q¢Åê)šêHô[Èü¬Ã'úï¤B¡Ì:oÏK/ë-saåqÄg„ +¨qo#nË>âñýÿj ׫O=Óö δj¤‚Y¿mš› +ÂütØ}5î<ף¶+ J3dë³¶Þ@çF©)‘6ûVw¸¤–*ôî[n@kzÔ]óJ"BÉ,“_4‰ågõ½Óé}žíøì{Ï%!¨`)z'},4­mgª‹Ã€!°è€SÍ2ѱ/:×=´¯e1¥$ß æòÓ̪~þâ˜;ç©CÜ¿ƒ‹Pãå>º~×Ú_Ìm'ˆ¼û3ö²-6Ý„Sv°. `Ìûð +‡FáâdÇ^…U‹„9:^à°=vr`.ÀŽ|´h%Æ´"ˆ^ìœqDCÛ{zõ cñAS ¼F‘zçSœ}0º³LÝar†[I•r­˜9aÿSæºlé0†ëÆ¥ W<{_ÔIÑID@Õ„Gù¹c4c‹ÙÅ»N—óÁhàgÙùŒ÷ žÿÃ)­7'r½r30ÆÉh‚èrJAcG3d˜õ,uô샪]²™ˆö¡6‡8[Áîd‡‡CÜ£!Éc7•^íØ'§<³¬$Þçrn×C†€»Ò¦ð%´žÉva¡â…Ã×äZ ªFÑ› +ôB7O”ôðg<…Àx³ò<«Ò÷ øUÝ…†\•Y¿çL²‚è…f{LUïL²¦º Œ)Í›#if°Hz÷-„ÞɇX53dRІmÇ“´gZÕ?òœÓ£¥ÓŠÀmÇNæª'In›}dŒ=†|úÛ…c¿&£]hã±±ÿfy´¾‡Mú‹Ø…]|ðÆbê{Ú.D^˜Ûó¬ïi¦`õ±ãõý›â??Åû['ÙbÀxu†Ômm1`'é)CõQì(ž¶!{‚‚ âi¶¡± ³áØÞ.̆ã–;n‚@ž6¬‰¾†zlóHü dcèã–6¬0ã²Ai‰ÓìÒÜbä@Wž¦Ûi¶‡+P—“L72ÆœmAäàZ;b?¼ßƒôNµìñ_ª bî#%¿S}”žÀ;‚~¤!¹t„ :±˜ÔbpFiàg¿×Y$ZßR2‘ëoW«+ßSÓ¦OL§Þ/•æ ¦<¿¿§åŠœ†n¦ï¯,§S¶Ó‹Ÿ¾íJ²çš¬ü|ÒN/jÁïÔåå´³WS0®°“Qàÿf§gi/)ï.¹Þ¥Ÿo@õ¹^FÚú;CLÞü0ÿBÝÜêö“˜h¿äVL’¢í@ðƒ²ERø4äoh ‹³j;4',.ºÍmvÝ×Oe%Zü¨2^¢ëþYЩ¾Zè1"¨qPª1ƒBZÇ]œ—åü,S·¨KmÔ(ì¼<´Sm%ãž0‚ +3q²«ßývÁUÿ¶%ßÑ¥DTªÐ»o§Ý¢'úä²[ôÛÉÅn9†q…'Ëë~Æœ›ÓC~à…–¡÷üœ[SðÔpu`H¦Û¥3Ãp²sM|nq®.€‰Alá,Où¸æwE©¼¬5âì3½XÝ¡5Cõî‹eüíÆQßhÔJ½ø*r!\i2”)¤‡QH4>ã~ºŠ0SC­¾ÅÈ›ÖCjÏwéÒo±.3”ät<|pÍ*BYÑûT\íÃwXBå8ß•4mÇC–$'Ëä¤ù1`˜° ¶À¼eLjëM•âO„)CÁrKǺ¸&ž¨sBD€«å†š³gNž¨[·éÝ?záF¦tìúÝ aô'âšè¿“ +¥¦UDvNf^rVd“T„WKe& çe.ç VbúÇx™]bˆZÏ(2Tº1Læÿi˜ +nÛ&& ºà–¯šÃf3ÃÄcU¾M¥DÔwv±q“ûõ¥¡Bÿ½EO°ýBî$GÝz‹ƒeÓ^å5v¥kPS?kMrHiã3‚"øê¶k”ޝ~ˆïmS¹·séܯ_ÆUÉïê·›°zgG7ìdÃXüdÕK¦vwåAÆ’§DL9%bêéK‡˜±NF‹¡¶ÏgjÁ]ÿ©Ñ´º]qiÙ gšó°£¾Ûðºæ·™˜¤jžLìØ'k#ë&Ðt+®Óý§Æ{ì¡ +ÄØÇÞ¦à:Ý;íÌ2²¼h"¿6¬Ë€éd“äôcÚ;®BZoî¶_LICU”j±?t׬»Àá|ÄamÏÔ’æT2ápR.0¡4GB‚È£# áòŠÐ‘êËúφ÷Ìtêd°:}¼È;J .Üð;IȺ³Äð¤Ç>êž&ÞBi_œB§Á)UèÝ·PH; s(NZû‹£2¹ýÔÊÝÊ’~¿À  Þ¾t ‰ÒMN[̧áÊSH †A©ÅÇLã0œ8GŒr˜Kú®‹;P®7ÞcÑÿY¯Ò­Ä•.úy†0ã„mã1(Ò"6W”†%¶W¾n@ðý¿ªÊTUÔŸèÊ +ûŒûœ}8=öç¦Ðx^[X•ØoµÜ™\ŠW’qáQˆ h#óφZ¡{r¦ê¯„î<œ}ƤP}08R£ïZ9É MóÝ„}ñò²œŸMÆ=iT©ŠŠj)·“aÍIòíÐéªÄêGÁ¢Þ±³N6Á[å7ÀÊh%¬93-pZ’‰ñÖ¨ 1p“:.WVlÂÜø„v2g#“b9·-–—-R,—XŸŠXnÑbYØ ¼ S¹×e@íÐ(U{dž{%‰j©ÛµMÐ(Dë–š¦‹;Ý -%MÜŸö~im-=µ%úÔ|¶ž?²BFF]/ ˆ?f¿ø@¡ôÃ0‰qÓBî8L]‰‰±õ&™·zöI•½H[üµcuáŒ4(ñ +ßIšZtÜûeðˆwìË´”sYji6Lûáø]øË#D' ¥ñe' lÇm‡÷Ìw!lÕa“ +a%ÎA o°êS8é½Deú +'£à¦c»dÝX<°¬Ê͘+6S©íÍ7øIZ4s¤gR}.Ø^žã1Ì0V +v7•¯‰bN©.è\D`M¦ öß +xWYˆÅ2u‹/9Œï/vÜ*~T °à$Q«* ÅÛÚK`Ç0x`Å=päû!R z¾˜ðTß®8}qõmM—â —¡£‚¬ÜIÆo{³¥)<” Øc›^Îé"éD;Ë…¿œû…Ͻ/ÒçîŠÅ•<¼,x4lŒ¾Ð4lŒêâÚ4¤HèYÁh8\†¦aþÍXa1£i¹; ˜ +s4%0æ½LÃ|ba­ÏÕô¶• 8J4_¯'< û ù[LŽÃ§!-ìm+?¿E’ÙÒíÛ7Ï‘)Ð>ц¦¯O:¹<žåñg䮓AŽ®øb‰¯¿XÉnþdsëÃ÷ä4Þûý‚-§F¾QØc„Ùuôê%Ã5š¿ªÝqŒÅâKgc–QMf‡/ÜX×Q+rÈ7jYŸCÏh‰0zÒŒ­Ž¾FȨsW’ ~Æ–â˜Ñ“û‹.fô5‘ˆùFÓgÿëý`Õt”àƒ‹Çƒ¥+i´<òF¯~ç¹FóWÏMü²(Q Öç¹þ”gt"0jå+,£ cÐìçú÷MŒ“à£Xd;ê±~‹˜¢H¯Žæ÷« + ›A ÿœBüøz¥ªÏþî.6ã~t²ÿeôî<¢€øù5žëØê„1o Q—¸à·fÒÞ/ØBUw]jnT”‚í$þ­úTÇ÷>p´²^ªjûº“Xêj–äAG] 3IÖ¨.]¬T]FäÔ'åå짤—»Î.|ºÔtRÿé_Ò¥/®KšÎÎSÇ08yêD‚—ÔeË)#ºŸ<ùkÞ«>vrÁEw<&0ù-p–»ä¨qµ~:3Ãć&¿á›±pNÊ`ñee|QN:8]þUu Æ"p*¿/¾äßnË#%§ÐQáà,q—~eÐJïÔ¡‰g#ïäãKCp^øw£ÕJh:W”Áw·ÙËЀÚ2ÙhÉ$2zL—ÐTŠZ)~Öºåéd"8Qh£˜ü”HØW // %áÿ+•@Q±G&¨9KøÛÚ’®–( K’r[c?flÂïJM§ +¬ŒV;&K ÉY´Åd燬ž}R¸d°-–È„iqd–»IôV³êFž¿Ä5Èý«˜èáLP+’`•è±It•B· M7m0Èw¬Œ?YP¶»ÈÏ6½Ü–gÓRŠÙh“h»È 2÷¾HŸSreŒ¸Tí&v‹ Å´I +C &¦!œ¯% Éëk W‹¤!nÑT\ò¦=K)É¥=Q?rÞ3Å©¦«Uð4Týp œïgöÖ ý,µ÷CåüÒtE0©f +’±Âþ2VÜgÆJá2æ,T§ÑLÔøßO›ñ·‰7ÁΙ4DMÜ^@i÷è¨>°ÏçW f5¡¾µ+O`Zj’Ú28„là n°Ìc÷ïfñù«Ö$Æ{8*/(n{JiS•²ÛÕÎìñ°©&d׫âûÚS°’J³2¢év³Ì>fýp²ú Ù~ñD SQkƒ±”®¢dÀé(LâFsÇtØÉ€ .ô‚ã(P9Ȉ©H0Çh§Â€•5u¢+érÄGÞ•ôqM€EÆ•äe^¤¯Ñ¼PWÃ਋çõ&ÆmÉ ‚çZ¬.]“×RuÑ^hºJžª•ûvð<ùY‚lçé]ºÀÕZ ?[Ï)—üëUÉ)Ï¥b —¸j8õVˆÃäÉs©,WãŠy¢.Lé„8u´ÃÈ„#Ÿ0¥øé/¯ËfC¬V: ÐŸê˜¯ÕžÑt¡_BÁ€Ž—ìÜUîcâ˜5º·hѽ= èÉ•Üþä_¶HÑÍ©¥Ht{¡%©Ðð‹ÕéÌШÕ)ïO8-·\‰Ê›ß¡üþ5/Qw¥ŒºìZYÃ¥*q¹»rÙ¢wåÄiA¯$qb¤fçX©“yü%õo*‰>ù~ÚŒ¸Q ¦+¬ºül2NÂT%P­:p´¼OEÝZGšŸ‚¼Ýº=ÑEz‚oB÷Èw`òm½VçÌvàË®8¤de hJ8ÞÒÛÑ´_ NXÚ(ä ë¡€ý‚á@ ç4le%#Õ*Ó%JÓ)±é·@~ö1KR›¾ËŠ™“û/V1ÑÃ!¡Ix3™¢áÇLI 1 +p_¬=·w7•¹©$ë‚’Õü¤KXï^Iƒå°†^ld6Fó+ãÁ(¸O"¦Ä/ Èø^h%AU“–‚¶ÄÈ;à X¡ušûý¥àƒË`Œ¡th9P +µ+aõqÏk+¸7„C8Š2^ì IÂ"y%™µ¤Ó@˜:æÒ„¢aó×MÕ-üݽ·]MŒûB—Û4ïx4¤Hèl1> £ëÏWÙ ­ì‹†}Ÿ†ÊsŒKþ ¥jæ;4 á7}ÚJiW. Õ¯Wg7R(šž†‡¢!…‚ï±´·ÁjÿžÞpÁ¸P޶t$´ó+ ñcÎ$z+‘ÒÄÈ8^ú#ƒœ0Öhµ‡B¢ÙõÊ:<°’ªÌÑdB€•Ü.(Û°Ç¢³xØIõˆD'EÓàô;zƒf²3\î#ªÝ‹Ì[LŽ3&¶Aº]ôP.ò³M/çô«ïP]6sµL¢í"QøË¹_øÜû"}Ø0¹ŒöI4 ¤!àSǤhøÖ«³-u&ˆþ‚üJ(ÒÀ”.Å‚‚ (åEP‘þÿ»›„dw³›,p¿ì½OœrfæÌð­í¼ÀØcˆ á@¹°Ç•QúæF¡ìÂ\ªÌ-† +øè‚ %p:ö8'I˜ˆ½zE†±©Ï½åD½U´¸®Æ%úTcsŽ©ôñ –ËÞ7ÿÍ]9P¤ÉhÐæ¼+[(ó£Ä• Å6ív„ˆ°gè1{PhGð ñj†à†p^\¥¡³0Læ»ïkVau*ì …¹‘ ñ$s`TJš«¸V $I“u¦^×ùº#bæcK/˜ÆRþÓzƒij SˆslM¤’&y¢½–ƒ8·1Æ|öˆ•‡ Æ^lF!ñt„ÀK_– º8lþRý5h¨Š’\ù=àT)xbµLÏÎás)ˆžÈñš'ZlàóO52~³x"<ãÅ 7R,rÞ:š*ª,*è|úRAðgµŸxB=©¦½ÉlvòÑDóä7(%λkE9ó€¿3ÓŸ¬ë-)ëa<†öæ4r–ü¼'œj £¹=òùÚß/t§éÞ3Ó©ê-Ïd¦S©üqó€õšë‘/ ×ÿ±œ¾£NÓ~ÄéÉMþqúø´ýb¸U}Ó‰E€)à‹¥ÿÇÌ´ò9 ÷˜N¼çIŒù¡[4׌tÃpzäó·~’o §½W© b«i¶ÓJtØa: NBÇSºÓ3O\Ù{Ë Ó©¢¶/[PF<Æ…ÒbÑU˜ +Ã[ '«ΖütU‚ÁWÜn±a8 µKó÷¢+gëÌÎb¥~ǃ3 ýfÕž–žÚÁÕ¸DM-'×Ω dröÔb>q.Mîâ£jö@ ê«Üý°6+«€ž}T@͉éÅ2ÙÒ%¡è¾U'U¥ ºRs +½è…*&öx(4XbÛ^-%íÄcaL5x 3ö‡vãPþ³tˆÎ8¹tës>†•Í1jÎ+ý1üÉ¿ôrŽS^‚a…€1|wÁ uøFÞ¦ì|ö ”ȲKFdÉe2ÿœ©Ñ“Œæ5æ‹FGÌ‹›Kf~òhï¥`þº5Ðz»’ÀÏ+Lå +vÛ¢DbLê{Åš°ºØµ¾ó“µÛR=-ˆä +‚{œÁ2—5$s¿Ì3^fPj iê#BBôØ¥Y<EY!ùÞ¾´ƒVýt¥Ä®`*×yl:)J®úÁy™Ÿ(¦‚ݢnŠr¤{Ÿß˜|Ÿ•yãÒÆÉ˜Û­² bòȬþÄp¦Ý1œÑöD,ùºÎ×éÆL;cLu…ˆ‘úð³úOŽÙª¥Íû…©„é;¾ÊzÔëµ + çÚÑ„F̲+1V5ÈõÙgc>F3¤ôú­r¢31 ˆ`™ð, ª º’˦Ò,LÜ.LP!At+r¥³à\-¤¢ÔA¾;D9àpåæB¯‹ÙÐ3ÿí7N…i "L)½ÍAq©‘îÓBD¨MÚô"ãê)**¤zzU?WU܆!*y¶É4LËTËevÍQA„¸·ß5“24/65àD³kžfP†©`m8qO<'-$Mž8ò/NÄajoÐɨ*d¶@qå*'BBT ª÷·…Pu + ï&¸_vÅiàrhX!i{ß!(WÁääÊ„9¿—z-"­.F(Òd4h»fhYѻԟÞE's$”Y¦0‚³uŽþLîâ«+u¶D +¼ô—;ƒÀ‚/rm*)ÀÀ}n„œ]2ÑÁg–ÑÉšº é\²'ì‚ý¯Ž v»Œ‘%Ùë–dß¹²÷¢Åcô2&¾|Ù¨öéV<jGäÚÇAçJ +¢YЖ#ãÕA!êSÛt2H.¼}‡Ú0&¶&²_ø;Ô|¢ÎŸ¶OÛb !/Ͳ7× XÌ‹o;`ð5I\Ÿ¥y‘‹Ï†ÎG!þâ†kzõL-m 92Hè_øÍ¥ø]÷A›:lWn?w°©LW,(EýŸMÜò/Û¦[mÁ8uq¥Œ1÷oA´åý{¬Q m5ÂHvö¥ÍJÄ-9íD9¢8ìÄ8ì sä]US:iÆâ{Ã¥f8Lì=íë>’·99Ü—0EÑw–RÚJáÁ¸¸ÈLß\ÆìÓÀÔ¡|$<ݦ„@¦2ÖäaÚ¾±¼€oÙ…³XÆ.§ã?yh—Eg±÷Vë³ n¥$ 1’>ܼ Ã0Œ%÷ž}€öƒWseÖe¡Úm3åaE]ítœ«ÏVýÞßÞvœE<¢úÜíàcˆ]¹ÒdÕN=d'!ò²€%;•°ÂçVáÓEä\ß®Po»+ù á:[¢cXêœäC­ Ö‚NÞq ?‚KÉMæl†Ð¼_XcŒqM>†„)A4íp/’5-õû¾½Õx·Ã;†„È0¤ýǰC !¼_vµã0†„¦×ì°Ç*홦4†«;KG[H ÀüàOZØäô—PG%'1Ý\ ¤QêÏËÔöy[êþ<ö´Ì!{ì‰&tv“9À”\o`j|—Ó¥¿Lå:M¹ ˆL%{cfÈ;ËhEåƒü¬¼·g$ðÛùƒÕ£1ÙØÁÄ$j'𠄬–ì’Y0飱zzÖr›ÂßÞËѶÕ¾1(ö1ßð!ÄïÊ-Ædõ²b!&Ð-†ín´$Ù[Lb2 eB 9y“&^ +ׯä_F]€©×u¾îˆ˜ùÆÒ ¦±”ÿ´Þpë;PÄŽþÕ] jÙá?RÄÕeîYÝ‹‹4´·W‡³# agßI&óÝ^Œ†àÛ{—Є¡®`)¥«Ô„RczQ({z.UÆBA©>/.Pæ»s¯‹óÆ€¿^‘aléw—/Æe¤o1 òÇ%†±•ènŒCÃ@ÄrÙû¦Û +¬\™x¬J“Ñ M3¦ÒnŒ±d +ñ„ÃÊsZP]P‚ë¦ÇÑ|Ëa²Ò,¾&+fì…æÁN‡`S é£M+/|W¶³㬛5h‘#l}»8lþâÝôgôØE¦êŸéT‡wkìѺ #¿(½XÈ&Æç·`à¹1eüÙ`RP”‹Ö— ^&Vgµ+ùäé!¼ðµÅêa5òx7RªªkꪵØõ{‹âJº,ð£MÂü$Û¿]3éTé‡`¥dÆy/Ì3SúpèpÌMð¾ÊôˆÉHá‚ –š%A}ynµng{ôOo˜ÔJRÖy¹}•É*±À«3 +~Óï„ê01;_~ï®X/ƒ²ñ^Ÿ§Ð"[³8ñšË5gú¸ãp +Qt¦#S.F1©PŠÂS,](àÕÅÜù:óëà<Å¥%ŶGÝûÁÓÅ^±jZ=ãÞÜ7b´,¦Ëo ^Ä^Í +éu ɹ ªUÔVàýþKd__sð6Ü «^,$ð_Œü-’Û“ Db<qSŒXoï«(ü¡ÑL.»ƒÞ3Xd,1á°Èá)FZ²¥ºÀ©ú¼Ù'>^ŠÛ]ëXl> ^Ó!çm°À0ûrÅ.Ç>[Årš +bM,Dàm!ÚoKä|ºþÞå߬‰Ÿ†j”Î¥CÎ×Vçí`Ò‹“É(Ç0Ïi€¹ìWЙ¾¨¤3Õ?Lß|"œ +í\}(í‡0…£&—3ÖD.ðǯ|ŸªÈêk{‚thr·MàTkùb¨Âhzg­,j% åà¾ÔTÎìŒfÕZ¼7šy¬G0×n[Žn»6þgå˜5V’©lízí¶”BÑR‡Ó§šT.Ó€Ëß h¶äTɆÀgu«• !ñò—~ø€¿<çy¡¡ B{1ÑøúªÃ,i¶®tô áe®H¡Î¯{ˆƒ.¡Ê2 ˆWÍ\E‹OER¤/ÞxšâœAᢸ"nE­ Ȩ¢½DvÍ5®SŽy#o“íX +=”šˆk&è[hkÓ¢ø È7„m ,k³ú½U@Na1XhaµBMN¾8ÿÏ–ÐìÜŸ^#_×}üo¡¦qÿMŠ\‹ÃPÛKˆ^jÍïlãh¨±ÿêß=GžœØjläQ5ÚI‘–ù#‚F±U ðªfî’à¦Á¿õZEQ &ä<`ËŠÓ‰ÍùöK$–‹ÐùÃYƒ„ºˆæéåâoCý¯}ãªj±VV¡Ñë«LîôÆ‹ly[û*Ë©+<_~ª¬œ¿ƒ‘é ‚õ…•!§Ñ¼ª5¯Ò>sÚ[L}»aÃôB[‡hZƒ"Ë¿°AX™°‚òuHÖ‚r§r',ƒŸøøÀ¸=% +2ù{GøRbc^ëÜ`­ÚTê8ñ’ñ?¬)gÂ,¨Ð#j¸Ê¯ ÕL×Qwÿwg +-¤¹ù„|6gîª0<:Ê>­œÕü»¬ñ—5GŒ½ÇÅÜùªXì8âMò•‹P £Mâ‚̼ÊltŒs޳¸lD¬É¶Ø³èSÖ…x 0¹˜ƒ¾gŠ©I¸b±Å^±iÃn‹,üÑ+ÿé-ŒQŸkŒ4¶jµÏ?÷…o”ÃTkâM|Ä©¤HJjù˜×/Ö<˜š: @ëá´°ZÌ"ÿ +á@ãèøM£€æ»|"iÎñ7Át©?l“ùúm+©éç2Œ‘"ǯw‰ŠTâ¹&©1þ͘¿òXç À"•ïøc +ªJ“áÐEPe["à­ Ö«;=ÙÎ(œóUÌè¼”cŒ²Ä'.…IöÌœ»IS^dÅrZ*%!ÆøP'ñ$и’ãs…ÉÝÆ9 ƒú–)~-,¼T¨.PÁ  èÞ²ÄuÙÕ«“c :ÈZŒ`x‚ï|>4{,Ä¥ü •bò‘ÓÍÛ_I&wއÀ—ù•kÛ“§•¥âÑ êE‘×iÍÆÒ”„4åêeÑxed‘ŒÁƒÁ±A5€³m£ÿ°^­}©2Aüô!,PðZ^A1KK“Ì2µÎ1³£fßÿ™]îJç±óë]E;;;3ÿË4 ÔÛ€”H*÷ÛÞ ðùuÀ‹Ð|ú-B½?‘i *MÄžøLT†Ñ†sÕ² åˆW±Á¾ft׬?2CCxþXPðµW•â›MEH¥³x[”K`Î3i!U’i2P1Ë[Ë\׳VYC>ìï9–¡ýˆÄ‹F„μ˜Z_oñO³Y?ÐcEþIØŸo÷ñ6¾Ãã7~ÛìRÁ_3´´2JøB¬™¬ê û„«XÍ€2±]òß’NR1¡^…ÞˆÛöp¶$²CÚ Pv_ Éþ ÓŸø?-·CÐ*·»Îâè}çáööj-d>–¸:6qÃXY®D޼BpÔ¡«®{Ë`ÁïGìçBI*”½FUxAÇL`°‹l@¥5Úa°Ï¿óPo&îGüNìù§Ž¹-o7žV6atdõÅGHR5Á7D¥BÉa„ôt”_çRóÉL ²êˆðØõª”×fCbE†—à¢dŽ({p²â£¾Ô£ð‘Þ!áå‘W‘öð«‚ÉíÎQÌ¡œ2œá)Þ_ƒ„ƒ€ôo/^‘Œ$·/åy…€øT*ßl "­Pù?xÅÑÙ@)˜ˆ>k÷ï¾Äø†Ï>hŶ­J-õûY9ö%…;ä± ~é‚äÐÅ7snl–ˆ;Æ6Ë*\ìó(V§õÆ_ û8é$·¦šÐ¡ã$ô@±$8(yÙWJ/…æõr>¨ŠjB½$ª suS¤Ê éånF¬ƒ“¸Ó})6£HëÍŒ»à®§ŠŠ^Ì@÷ +à¥[ƒŠ™’8ŽPÐâ¥ïvÿ&¦« ®Å¦!•UM'jv÷ã&šVÎijHCçU¡yu)üP÷ÿQnVF½^b}á ûüXg—³}eeîêPjRùc·i0Üø{‘O¸‰Ô<Ž?ŠynnÇ[&Sé5Á,o€âð7íMŠM—¼}í¿õ¡uo\½PG10Ǫý^5‰Mžòµ´«N–/‡D¿OàØ LîP +ÿGÇlù…ÃU-0D¢CáE‹ð«ÏQrrEªªíŽë(9)>îOòÿB×n!ˆø:é0mï +vƒMLõ«cOå!‡¼¾"È$9ìúć±K̘“ßk‘)Wdxëp‹“âØMá¥O)R¼}sm᎙ñ Äz +Ô˜Câc#r.¼Ð½¤ ×t¶€‰w‘·xÆ´åPŠßÖ @ŽÞÆ}Iê!f¢—€‘çfWCÚ/9CàŠ&…(%¢­]ŠÁ14rÔG“$d£0àÐo;D_ X*Š«Ø¡X´>àŸBf_/Œ.s‹Ó²`nbr[écOnñ¯@_‚†|Jòß7jŽëûÒL†µ2úä÷ŒZöxë’m˜MÄ?€ÊÄùð“Ýâý]S^[‰âá  äÊôÑC`UK÷J‹ø1¯:!sA“ÖCMcQÙñ×+p)éd0b'¤z=#ŸŒÀk£­7, ¹h 8ožž9â¨È’¨ÉÈÙ_¾+˜€ƒ+вÔâ WÊFÛBs'Š§È‡ÇÊ.ê®$Èð(æÆ¶¤Îaì O-H²Kd‹hÀ…„÷KÙuÆ'¼äDxCdÙJ®rC$÷yS{ƒq5ïáP1'©LΗ™Îs´dóX*í§r"²ïÁ­dO‚”Y´²;T}·äáñåNÄÓZ·ßÞg“Pš1¾´éÀ–ŽQOüˆçÃÔú²gÄoX4mœé6?}߈÷fpÀR!FœØp«b–½Ž¤hµ¸;9AS¾(A³+¿ø_D¤g©&¬mFLDò:šf*&—<Ë¬Š´óK…»ßkôœ&Zù¸%¤/ŽÕrŒúÙØ0¸¹EpFí€)ëêˆ{ÈfAü—U ’ ,g´öÅßß"þ¾¾°¡\³cÔ@S©ùñUܲl~O,›Ý¿àðÕŽb¸¬>xãBÀU/©wž(ˆÙivÌâüS²¦ó6êLîÆ0ûŽñþt«œ¶"ûeXSzu4½Ê8‘®ëü±Q—?ó[Í“d¤lÔÇk$BÓaûÌ¿¿x"ó=â2y ª|ÿa«ô™›•$(Ž‚¬êpLpÃ@ð­²Wž@xZK>stream +H‰¤Wëv¢L}ß¡¢ (xA£ ˆ‚÷K¢­öÑ$Æx_k~ͳϩD“ô¬þfþhQ—SçœÚ{×)¦?Šõ«¬Ó‘ø1Îuþ"£‰Ú-±JB_+i3øFZ>*®¶¦ +2§U•tÄøcb­‡ô8VíÏyijôïõ¼‰bc°ì>1¬Ð&[ŒFºdSÏ”0»38¶Ô˜>ªP «¾œ$ÄǤx¶“Ym{lÚ-e¥‰£ˆÏ ìM”‘ؾ"~°fÁbïú=•Y%)rˆOÄÂBé·Â> +;ÚaU‘‘E=z4ÅR¶“–B‘l•m× ‚ÌëèW‹}ñ³ýÏëí§[C çGov±‡"µZ +w Þª.pôXr²Úy]œŠð¹?Q5AQ|“‹ç¥B© SJ«5N +MG÷ÊŽ^ /y¸—ÔÇS¼19uÉ<½ºÁ§Á²:GË´YàTÇ/SÀl Kñ¯óEUg/þÅÒ»N¤· ÝhÖóËwãYû -µ$jƒ '–¤Ÿ|ªE1¬F á¹ÓKJÁ •a•ùÙ/”FGñ'zˆ³éÕ[MÒd 2’ÙhRHJ–ÄщNIZ¨Ó€Œ-…q ÏLB²V*ZöÃIúoz-ëGXs8ÿÂSâ¤. \f!‚¤ñ/K*-<«•4Zwš0tQû•®B¶º\2ÎS5쌺âè80tÆCIÔhVÉí¨ v$;ÊŽÉîè~3€[Ÿèá£0AÌ\šþ½Êhqy“Bw†p^õãÅQ5`Rñ¦ÞFÜ韈öGš¹ì‡CÒÁÓÁG9#$6><ÏðÊŸéãâ@´?sÝäKLª§ƒóvíÑc(̪Â9JLý×]€Y®g³ò½ô¼Þ§¯Vxàs[Q'wô¢çaÚGaT·’+¨8þü’Lb#FN5gjvɯ"°aÑëR¨ùø'9”D},žJ­IfCbÏÑ1bñ^ëö›·¤êT ‘B"v;PÃØa]äL«¸ãû¬‹ã]I½62'‡ðåuøfªÃ)̱ÿj+ÜÊÌO6$µÇÞýð²÷Q"£æ%È|l+2º ÈÛçX•¡Î·ìN»ÇšðÜM&@KÓuHA¯ p«œ ¢÷¤ +Ü$Ú°O¨äG%Tm·ÊD7$µß¬ÁéƒþÖø×D± …Ä^úV dd­3÷â´ôØüFÑ‚îË橆¬ã:ì øLE<¥…Œqáæo8}3€‘|l\ŸÁÄ*JÙâMm½1Þû‹iÁ”ø9µË] õ‰ÎÞê£Ö=ÈÍKä¦ÉíâåŒ]¹„G=Ë_nä/¶sÝý• +`JTŒ˜·Á ôOd4¾+ÿŠÓ‘ï8ýwŒ¶wùß9ý·Œåÿ?8ý·Œ†X>qZ¥õ8úÀåÄ,_÷œT_Ǭ"ë”WnŸ®Ù—¿iæÖë2ñËG}ãY8(ˆÓf3uÁü”Ä“Çcàùü(…&G¼iÇ¿¡pJ˜×[9)䊄ÂDÇŸ’&°[«ÿ‘İF +„®.ÄÏ®S9©0mÖ>Qbù'$þ)ì£.…cÜaDùüèY| A!R3^@|y2±II´·né(âV+Å&©ÕŽ…¿¾‹‘µR0½9!DÇ ê#ÈšMh§õfEHáa3pÞ³îÈg†Æ¦u>ëqÞ^¶ìeN„u}9ÁÏŸ#àþ)í£G•ã ]G äØ«Y°˜sŠQoèÓSÝ +ï HÁûUÁÛ¥%\†Æ@XêñF.âõ]ïl¹««J ²ÍEàþøÍâƒòë팹otÒ·ŽÿŒøvÞ³=5ñ-ô•9<%à³4¢wükn.c‚Èð€h`J‹Ç<çð„Ï1!‡ƒwi?I|ãa-ÁêGLûl€˰AlƒøaÝKÌÔÝ…”û¿¢:?ˆ2«p¯œ-Åß.¢v5bÐS!¨“ÉŸóãÜÈD2ÓàãGñŸ[üÎF2Xt/b‘©Ê´l”óaëQ¯,r~Ga†ÁÅï£xyTDæ}pà5œÅ/ϼÈáŒÍ[QòºsÔkÞãàϤ¢Â@ëI OhE%]á¬æ3Ém-âÄ€s°ë.±…”gànZð+É^½~Bnkì¡m +[W­ÒÕÀØ/MˆZˆÓÆžrbYo’W·5f–Å—d¹å£´w9 _ ®Í}ü¾!y?دªeÄ.›>;P9‘`yZ3Ám- ºðf:·ïé-þÅŸÄ©_Ž0Ê}ª½k”§ Ê»XS„œŒ@9hKTéw& Dœ"¨’3i¶ÇB2<@qìƒÏÉéòðd”=–#Ö‘#¸?¯åh¸‘Â_ çý#e+ñ²ã –6'ŽÎÙ +ÿ:8Ŝ냖mŠRÕöáòcà+áSzI}»¤D»®26r0öI¸î*;¢YØ3?×ÖÚûÝ<ûÆ)Ë•èb•Tß,N×…lºÓ\ÁÉ08ù ›/)8Êå}ÖOYBÍϽ¼=àÏ2~ B#·ƒ”IÁÎ×—-›H@·Ú¹Ä6ê?õZÅÿpû^5ïóÒ^ÿUNÀs«`&2”®²/OÚ´)>¤jy•ƒÏg Öêæ¶u97X§þðr­ñò3Ùf‡ÑÇ^ëKP—y?Çäó¸·êg;wM?ûkâÕ-H ?טþÈ>pøZÿ‡ù*ïj[WâŸÀßÁLŠ$[¶EY [XJ +4 $¥\BYn/ÿ¼Ïþf$oYàr9çŒ=’fŸÑoRAÃJ &PÞ)AÀ$ Yx¯ƒ€I HI &º¼Ó€€I €aMre§…zJÍñš{J0 À%˜U +0 H^í¯ƒ€I €‘èºê +M4@Ý“ƒa¦À •\Q•ÀŠÜžùK½}ºÚØètV½Ï‹³mÎÖò½¹ÍœÎ¼-íÖZ¾û¸ +Kû»›ýÚÑ!,-¯–äÌq}ãjwz{åiæ¡fÖæ½Â!Ú€Ž­#N×-³6µ›U5n¾N°[níe€pÙÅõ|®xv¾Ž¹ îÁ2X©Yx,?êEÇ'h‹™§°ý­-`±g±9~Ï­ÌŸuT¬ ^GÞ’A±[^ZD½ðcíµ™M<š?làf[?n)Â’l@­=Í´û©¢Rew}Àóˆ.ÐæþÏE¦Êñ{níÛ\ ‚+ÁYPðÔR6³zÑŒ}‡¥”QÊç–6»'0 +œ÷ÁÒìjSzáKóôÂ…Š¶* g&Œ‹;=ãgÀ–¹õ©bwªtKÀiŽq*ß5DÞ´´·t”ðâÊ5ôóÀ 5;aµô©kmXjd£÷å zóQÚüž»èØ×J9í¬¤r‹ÝP9Å P¢¿ôåá£õ —Îqi:öIBïU¶Û«·‚ˆ¡0(Ô·yØšNˆÏªÕ øí"WŠHÑ,n÷_fQ¼\™›Dˆ~mj+÷¢)tHö`Ëë, +ç•…IÌÀ&›=6Àâj(û“N% 3/yö +ªrpgl?-ÜÃpgåbhŸÒñ GŒ4¬q¥§ÝÞ<¹ŽDµ÷eõ­UúZˆBR¹ŠÜN è1g–+ÎÛ§Ÿ´³aM2ý¤} k’é'íìKyÏô“vöAÌÿþé'íìƒRÞ?ý¤}Œ‰¦Ÿ´³Æ0ï~ÒÎ>è±÷O?ig2Áô“vö1¬I¦Ÿ´³OrJzûô£@p”³*,Wt/¬\Ϩ›ž ç“Ç`Sí IõÉà}^í…Ñ߆Ìê­¿ê/íäïÎ{ªãÍæïæs +jC«(îj¢‡^X=;Ør/.œô®„Ç®‚j\S;ªg¡f„š÷z¼˜ÿá5½cw¶½ñó~½B aÃY̪ñB׋Áó™öãÖiƇ<¸=Äb^Cß­[=v@‚cf-q¶©îNØCÞ§hG%Ýÿ®_À’ƪÅVýkãŸÞfû¦ÿÐhA×±€rÒèõqƒ¨·w­rí¹Ñ1˜©~øô¤É¸or!àC µ|mdÔ^“eÍr˰ªùõNoóî¦w×nÕ:Ïæ"’Î÷˧;›æ¢©÷Vaï3ÚÐ*솥¬9û@êAÍuø;ÿcôÕšÇ%ž  ®']ßV/”s/’2×Q +Â!<ÉÂgøØ…—¿€ôÇtÌ}ó⊚ud~lpæßulSp⹎k>ŒQÂléF¤²q›Ó‹¯[ض/MG¹>°åÌ%ŽM=ðq¹c6•lá±Xv3±É– V3f%ñHâ”Ø¾ç Ø4~§XèøW7\3“5Ï¿ÁêØ e(EÁÀ¬™?éuîZ·f¦PX¿,9n÷j¸u J~`UÇxתŽñ¯U=ø7”aK­vËdL:Jf®?¡ã\z Â|*=®^„J_ˆªë»Üó|cÚ1I¸C9T‡‹L,]â2áŤ²!!FŽëÆ$F9ᾃçÂíä7#Tú®¹aD4ÛŸ +|b¨h;Ž2æ>aÒµÍPvø½)RÊFA jh6q¥§}áz‚ëÛž@ïØR‰.´=Õ¨)\Eá‘ÊT)}Ó÷C?øŒ8<RÊ…1N$cLY¤!Åç®<60l^$ÔÌ—:Æi«Þ†LP_µ‡ÆN«Þø¾9æM»óœøÆsë­Þ]­yWëbFÍCK-¼õuxè‰Xá`r 7áûÃpZò„í£”øÔ[¼aÿ¿xÄRÈ[†î`Ž€ÎÇ݈TŽI óÃcHñÁ·¸Ä{§KÒK.Áýp ·K`.NœüT_'oKu—Bz²(a" +ö8û'â ËR$·…è{ù·º2£ Ђô“Ú„$”¸7SCæ2@Žfîø\*æõDq>ÌxU¹PÚLHâ ß ¿o &3Ø<Þàú…"B FÑ$N-CŒÚÚ¨HLD¹1"Uâ]±º!££n »h< +.òÍ?†í )lÀjÏ¤Äøq¢ð‹AœÇ õº6q@MP›HÀJ€üà"ñ0Ì €ëKDŒÃ§Ò ÃסݨÙVuÔpv* ®É^ ëÀøOJé°QOß?Ê36Œ„Û‚é“êÃ<ͤD§f¦ŽæN‘ØÿaîÒ>á©vòJ}C¥ —›+ `ƒ„°Š…ÆßñA¨] +njŽžC³G])<â.Ç]€í;ILÆ<®Øsb»°îjŽÔ^M ‡ô&J¨?îÙ ÊRa{±Ø¨°eøÌXë$ÄÂCK"ãcLƒÈ6é+/¶cøÔ eñ›o3Äì>`xyg²æœ±àS’ËÃZßÕb«^®=7: †eÕn_;µ»f£cÜvk7ÌZ«…“NãVÌÛN£ wXÃìþnÿA + ·[Vñ°düO€3b~} endstream endobj 45 0 obj <>stream +H‰ÌWkoܺýúê‡ñ/EQO£( ­¤ÔE±}‹Û 0èw­F+)z8ñýõ=$õ²ã&)PYbwÅáÌœsfH½úÓåÕi”×wâ”m,ÓxõjÛ +Þ×황¤æyY]ßJÑë'&u7”¢óàvTüM´]QWgrˆªÁLZ¿¾¾œ˜¯Oп.úR@Ò5y±ß4ùþdšv ï1F)±Bb[ÔÆã™íJ^=ð®+þà dq=TyQâú+„¡iû¦mS“ÚÿZ|Ý3íX6Ô6^è1èZø> üíVI½Ž¢ê/Ûz'ºn[—uÛ™ÛG^™ïø#Üü]”eýÅŒK¾û´2ÉꪇêÛaWäüŠWÝjì½¹È_ЈÎÝÛ¬(‚tä=v+CSû6Š2?ïÂÇB)e·j=7‚5Ég)öoÏ\‰¾ÇV1Œú‡7ñzªöúãq(‚ˆö?OF·mÝyû ¶40mo¸¡ƒøØ+td|‚MhyL+_‹cS&SÄÐ5}ã`üio﮾Ӿ)uÃãÚžyÊ,{C©oc[áÆu¼Ðtk7i³€  +ñåÌ|_WBÇ*jû+ÍDZ,ý«G> ¥hoªBF˜JQ¨£õ®ÎE9Š”}Vr$Õèò«®y{=¨S—C¯ˆL3Œ·üQ´Ë¨®ëßÔO¶ñ<Ï;ëÛ‰xXŒ™®g!¤j—šÌ¦óÔtùÕ3HÒÛ4 /íE[Šêì”y2Œ–ýM[ä æˆf ”ÿM°ú†ÓW¯è{Q»Õ¶ïVܱ6ï®0mZåÛú(Q<ŽAš +|*냛ŸÕÌ‡Æøh°|ê^tðU +3ôÈ¡åBˆDy!ZŒt$j1L¶;‘eÉIÊwC/Èû|äbR3ÈÍlÁµ +WÞß-²/ÅWÂmÏ•óÝä\(Kƒm*V¦b6-´ûBë+bÖ©”{ƒÔZ·ÖºõJ·žuk½”A«ZuXT 2̺9?DKr,P²C¼I׋¶”»èÄNRÜ e)zÒðVF ¹'°8ò*¿+¥Vå3¼ådW7`Ê}Oß¹Môæé6UÝçbO¢”\t%ïîYÔ ²‹jX”¦ÿGQ‘ãð\l|£7ý×m¾pUTB>y·JÙ™8äãìŸÑÉMæõ—Šˆ¯»’Õ#ØUìx ƒÙjl.ªo—q@¥,űƱ²ï—žŽjuÑÈw ß i0¢‘lã_JjÉ‘*Ç’ˆ8ª?Ed„X9:Ú§ê-r-Ì‹‡BdÚóßç§}Ë5¢éÐÖj¥*Sæu«žrg} ôÀ̤Á+k¥ ­t±ò7íûBkÜh›µ›=”K¤p”“•µâÈw­ä;ê¾Rã;•:¥uFä~¨¼Ž%zä!ކOdÇag\§ªŒº»½îp€,ç»Ue*­vµ¼ œ™·Ë¼>Ž?’ÕYéèŠ}ýí õore^·ƒ¸~l„ñ‘ztLc“úŒ âóÀKtá ¾Ž«’ˆ×›:#Y‘dˆê L\‹¤r úÞ^=ïêò–èÿ';wuoÖK`"O ã}c¨ëße9`èM[Íyµ¯×ú¾x ÆË0]Üý Å 7ÀQ°<] E/6¼hN¾ë‡V+L=cÕþlˆ=.X‹¹–¦Õƒ(ëfåv– uÌ¿ó¶ù±ëË’W¼5•|öü¶À©wÉ£Å÷"û §8þYý¦Å=›à; +«¡Ÿ˜ˆ÷÷¸É¢ôu³oÝ}ºp-û±¿«¼[´fÜݽy]×åìöéÐì}+©Ôÿ5æ¸TÕE¥ôíL£Âó™p¿üåföžƒ¿²÷-Çù­.=Åî¥ ^ŸgÒcÿ ±TÉ+ºã§•äR–ä])®qÝ:~Ï›Œê}"ªê¶¬¶>6òÔ¼ºçP>ûûLi^Í]y¾¬kìééwНkÆÕjø¬ÿ83ÏdÚVB&-1é‰ñ‚ ÅÝ6ã—÷?–þP˶˜åX.šgùV`…h‘[[+±2jQJmʨC]œy>N¬€†4¢1Ý¢%4³-›âå‘¶cã…ÏöíÐŽÐb;±S;c³cs™Ç|°ˆÅlË–²Ì±ÛaŽãàµÐñÀ‰œØÙ:‰“:™K ×v™ë¸®ë¡á%ÕÝ­›¸™gyÔ³=æ9xó½À ½È‹½­—x©—y™oùxßô™ïø®ïù¾ø¡ù±áoýÄOý,À.±;Àr'p/€Naq°Uß$HÑ2†vÈBÍ 1[è‡P C#ŒÐâp‹– ¥hY˜E_„É(DØo䍿¢a¡–ažHGò£©C=ÆÑvlÉØRÕ2ÙbK5ª‚lüeÁR£)ñ”ˆ: +Ñ ÓhÆ4±R…ëw5lBÓ\À t%¶B7¶· +]/}†pÀÂg(Sc†ÙÌ!Â1Ál¹t…³¯p–¡ÒX§OÐv@„qc„ü9è/ÀÔwc„~„}ü·ÐËFþeìîÆ ýøçÐGkÄËxÄ23tBrÂR#9b©‘uÎÓ§X~‹¤ÿ’Žm>ªŽ›9ËìŒfVš¥iš¤Û4F­A1þ7ùe³ãHná'à;è2€}iUdýøÆbU¾z> Ø…±€1‡]¿?IR%f§nøb%ºG£ÑHUŒÌˆ/ÓÁ8F8e8ü~îǾïeßàé«C'Îû´§=îã>Àp}9ËQöRÊ3XË‚öž0;±Œe@ÚúíÜŽmß +®)ãÊ\ß„«Œ¸Öa nóˆ—O3a¢¬¸7•pk#n0d†=о7që `BÇGtÿ€Ið˜‹ÂÌ<©4áØ"æjÀ|yÌÚ™+˜¾ŒYp¼8qsÄa8r7>pü"dH±àŸ'ȧÑaêÃäÓ µvh¶A¹úÍP1AËІäã‰CÛá*´^¡ø Ý}Þ~Årâ±§„ÛtKøÃ{¾úƒûôùéÕí7î¯ôw=¼†÷À½ÛšÕ¡÷mPË jàûÅÜkûRc²‚ðkñǀ̃´WÃV7)´¢ gç4f#Ó‘ùHZ#¯5bË:Ã"n«®ŸSéIŠ#Ç!E`.BˆIÚ ŽXG°Ë‚;â]‘vü½Ë[OU +{Þ¯Åi_#þÅú;]jÎÂBû½WAb®¿³|Ó¦·¹þ¥qVs-ú¬I-–ê·ún5K—iUjå^K-ܲçڈöàñà˜ê±±J¯ÜkQñÈ'•µêÈ=w”>µ¨ +òIF«Ük¹Tg_5DTkŒ!¸Ðì›^{¯â·‡Êê¹Vós9ÁY-ªL)É”"—Æ-tOjŽÔüèîF¹»Qó"ú\ˆdШz¨ùÏ è>æ=æ<æ=æ<ƒŽÂŒ§¸ê;+|§¹ÎÝwJõk+óÎFPŸîêÝ&ülj»&t—xëγHÎ&hàÄqî  ·Þ»~ÔŒãÊÑ¿l–ñ?p¨žÑàaÔDÍË À Ô¡Ãرàaô0|²–†EÄb 5@d Ž]Dû@&1•˜KL&fÓ‰ù´rAD1¤S *FÃjP`µÌÉØrJ.fWQ~mZ3W¥slV–1ÍR±•jCmd¯t;•p̸Ý)èu›âŽ·*ôõ£oRüµnc ŽŠBõ]-kc6ÃñT3¢¬WíQjíµŽ^vAgñ½ÚÜݹynÉÕ;K½¦Zs¯¥×Ú+÷j×R?û¥Ž^g«ûèJVC¯ñRÑIB«t©éRóC-µ>—S¯ÔÒ¡bO ˜¸s—03¦pÅ4n8†xÂ5fuÄ|%LîŒ^1ÉŠ|á1ŸHº€Ñ1ïi™ˆ“ L Kø‚«8–fà#Ü"`&8ÇÉh‚«:à,'‚2ÀeF¸M¢à;Mv襢ë=°}y´ÛeDû$´kA›åÚ»µ¤ªÐ©jjfWÛM—ªOÞŽÙÕŽßË&+š7ÎÝÉ)Ô4Ò=8žÑaN“ +v§$ÖÝœ5 jp{e!#¡"/2)C +f#;Á o¤ß Ê„C@×éIO=±Ã€ƒ°1àíD C‹MHq*£Q„ÑÌP9aÌ6òOÙ_ÓžF0"\ßÙú¢_c4»ỔíîŸ(:sÖÄâ8òkyç§æœ9Jõ؋ʦ±)œ%¯Ä•´&lª¢®UL2HÂ(åf‡‹_qng‡AŸD5’L<“îô+#=5Þ¯ô^êÌôhfڜԸG€ÕéêNSÆPšøÁ;#ƒ¡ƒxg81̘z1ñGˆÎ Ï<ŘɌ‹<…ýËÛô×^¯E5ëgÖ Oªt)cº±Ö R×ɼ(œZZ-.¶¼™EVÙ÷,u“™ÄV±ÂÛ Í&°]]plÅ!dl ®:k]wlá±¥ÇÖ.>ÁHb Adsu²MÈv!Û†Æ —ØJ´×ØØt”«.rÖ)§ +¾8{'Z1^±Mi¯x„W)¢@HÅ sЏz¸“pÄ€äŽ$‚’Š%&vìw81<1@¢8RŠ'h µ¯ÞIE¬RÕ)‚Õ+°²H­¦W®@k{箽òS=>ÊSíÕ¹Ø]áø+D¾bò3,ßq¹Cókp¾£ó3@_ú£/ íhúBÔõñª/Xý„ÖÞ½¢kKð¶>µÕiíKSêëRèTÒ¸dU’[ŠG¥wPhëpw¥uÖ¶3klju³ ÚeôC|=²°uÑ3 Ý3¢ŒøDoí8 ·:¬kTˆ¥¦%妄´l´DdZî5s >‹¼Ñ)ï,év¥\®ñ6Õhj¬Š´­†Ù\ƒlT‚ùš^@Z‡Î_¨vˆáŽ ÿpþmXøàÍ¿ùÁ/1ò xnO§e@0âÉ’âêñÚÛêÃ:…Ûp ·é–ü !ÇÏúÁ}úü!Ÿµýæøßç¸Îx‡Œ7á >fÂ[ù9+ìÝóKæ‘<g¼Ô>'Žo~\nsxqæ÷kûÀÏÔ5ëœÝj‚¬ü DÞÄ›ë òއ•ßi·ÜïtÄ¿¡y®'÷Ÿ¦ëš¼ ?FÞ°Ç»çQ5¶Û›ùüÌ9¦®ÀðF½]ýˆÃUm»û”ÿ–>_~úë¯?þôËÏ_þm/l?ÿó—/í¥¿Üþôw<ûñ_·öÊ-üÙ½xíÆ/Ù~Bû‚ìÐqc¥’IøcE¶ÚµZ-WQëÕÌøAžd­XÆsŠ4†atÚ³&äq#Û¦àðØú¸i%aÇèØˆZµ¼˜ßxŸ¬ŸÅø$ü3'°5„¿Æñ§âv¨2×€µlmÉ”ª±&ª¥é楇bÔ+FIÚ Pæš ›¨(?姯ù•Ÿ—ôtñ¹s7„ϵmj)ÊmIÚ²tíyºÙŸ®f`ËŒ½ÖaQË2ö…é ]#AQ“zRÑXÁÑ4Í]SRã)Ìþ¦²N™rtq!/Ô¥¶‹ÔÝ›T×ô O +/BË«ÊÁu™§ºÐ5™½V¸¦ó|Á¬b€uQ;V¬‚â®Jþ,ú Ù+B}GwW¥¯²_„ÿZúµƒÓkí¥»ëÒ_…–>_¿–[ÕòèÚ”lZš’UKS²jŸÓG-¿Vr~¥dÜÃÈ~_ˆËMËÐa¹‚²«C¼öb×Âjš¶QŽ<^Ÿ•½ 1.ÚÀø¯`|U¸iÜTn:7D†Öî"ö]n ^%··‘×Ð?jùAÿá†K ½ÆK?^×Òî0®µåËè°¦¼;‹õ¢uâVTË‹T—ÔÍ¡ùŽº£&¹Cbg@ ×¢’!s5Ewq5Mh¦M´×¥”+)Ò 2 'fU7ì{¢ƒk ï¶îZ®Ÿ f‘k'—ÎÐ\¹mJËó¶°bëBG^²'­ Þ" —€:Ì W!H „ÀÁ hÈ?Àæ“#=ˆ™ “ê¹ÿ¿«Û½¡Už6ZZ¹kyjijñج¹ù©¹cCY;¶ùÏÕÚ²þxzœÚejSëw­ۂ⩦ï]=}}9]^WOG9}E1]^£Œ~N)]ÖZªïW¿«L(û>È–6YÔUs”•`O›¤2ÌBl¥˜ÅØÊ1 r]T“Y•­.Sg™\fq¶òÌm%ÚŠ4Ë´j–j+ÖžÞŒ{QͶªÍºm•›µÛª7ë·UpÖp«â›¶V-7mF­‚¾¨¦£ª«µ;»« 'üàpļ;¦ÅØ{…Mëüá+˜Žx ïêè}ÿw¢28ãógÇÒ{ÎjáÝ/¼Û¹»Ü”P‡ô ˜Û¸W*gWjš¤Å'¾íÏÑ&|~~óý7_Ÿ¾]…H+P'ïËžŽúä'kù‹«÷J`–CNÌbâ^|(þ€ªY^tŸž7)¥+§Cå.9ßèø)<¿'«6'L %Ã9 B~=È’ƒÜH G5žêã" 0xðס¹©¸Ë8Ù<Ó«Øæ)ÎÛé5¡Í‹£ºèœ–qFWm§’ç1KAyÉkŠë‹ÔÅ5¥5t·Ù$¨0ª„‹ï „¡’qÚ9Îc#²˜\ÇÔËk€SƒïF£{ÝÉ÷'ñ„ßo”'çô¤÷ÚNdýUÚãaÁ?}HbßÀŸ¥YÒðSAzÆ© +X¸Jñ\F=x5AÊh2©H2¥Q"‚ô”S¡¸©¨]µÂÖ.*¦ÇšÖ¼I§ÅyÑò§ño¢.¨y‰=“|î×®þkGíŸ!f ñBaÌúãr׺e¡v½k÷fUt›5Óžò/W˜ZºkùE;h½eûY_´vlš(³*fµÜÜJ~助»É³0& ßÒä\.ò.O¼—üK ƒY +hbšlÌÅŒL¿ +ÇÎ.2%}˜Ú³ <8Qî£ ×ñ°ìÆMV# ›‘Í`à8›¯x”³¸ gä,²œÅê*è+3×Ûf+"ÐcAU46Š6„æ'&‰ S±I‰<ˆT'ÄÌ“–È¡y©˜(ëHeSd ÍBviŸË"/IAćކ§ô n}é-³ôT•Ǥˤ“#]å7¯ÒatŽ]$Ò¢ h’t£ ­Òs]vôA*~ŒxäWÞ´æNŠ0hå£t"ŸY̰Vmƒ&9ù Ípцx”Üä¶xºÓ_ŸL˜ü"jgUe§íf)öñ÷ú)ý…ÄWŸ¿}þâÇïžß}÷üígŸdÙñÂòù¼íÊoÞ½ûæÇgèµ/ÞþãïoN×·ïN#µö2w +gòÉŸ[/©ªWXãŒÏü'þúÓÃüb¼¹Sûòß +ƒŸCò_§túÝéOv§¯•ÿòøoÜi½ñ÷HÍúí–OSf~cê8îYÏù½-C¨©s‚ùÄMR}/ÅÛ2`î]aN2?"—ß¾|óK¿ã_Çì¹uö¬y5=¾øs­¼‘?È(=Ÿ¹ÎLn…=º–%‡’§R§úé/6¢À1YÙ§AêãœÆà^zJŒy’qZ˜ +|Ä©…ħ©hˆc¬}\O6&rÉk×À|uÝ"p‰ð¿ÃC åö­Ùô|xdòÇØÕ¢cÔ»Óuç[Y$˜>±³öé$膽oqV\!EÖ1¶bøDyõi6%jìiÕ¦[d0€R)HuàP]WœK3 a÷rÌ sÂÈ3è˜ q#CvÒ!v°¼é˜ öÆÚЇ…w%cŸÊ‘tHµ’vÒ1öy'ã˜gÒe˲‘Ž]BÞI§ØM¤Ó]ëN:ĆíA:Åy&sš»A:Æ=ì¤ã=SœIÇLn'&Íï¤Cù6Ò!èî¤CŒ ÙI—y(ËDºœ”´’Q¨n'âúL:äŠë;é·PwÒåBÁ6‘©BÝH‡ë¿“Ž×[ŸI‡\áéçZvÒ!.=ϤC®õ¼‘.׳Ã|¯¤cXýL:æZÙI§[tEbÏ=¢Ž9âjEâüŽ:ÆÎͨã˜îvÔîAÔ1ŒyFs>î¨SŸº£Nq™Q§\ÜQÇ8‡uü<Á uœÈÚvÔi=ýŽ:îgÔa#u7Ô!ÄùÝQ§}çgÔqoV¿£1tÇŽ:Ä{D÷8ǯ¨[êŽ:ÅmFr}GÎMÜQ'¹ udMï;ê·uŒ[‰:øûD:¦rÉê£ +l¨c죟P‡\,.m¨cì\ÛP‡8˜\_I‡Œ§ùXIÇ뻑Žqi}"]*+äx5÷°AN±m´rJù´Aޱ7@ rŒ=`ƒÝWï~ƒû˜ºãVS„ãøe5öqš­Ô6Æ!.ôQGÆ!לåÄ8Ä…jc\âiÄÖ>0©Ø©ß r‹UŒC›&Æ!×SLãRĺ²1qŒ)OC.%È!ÖܬC\B(䫃‚bÔöºA.ñ[› ‡\m§b ­+å¢l´‰rÌ£(ÇØÛ†åós”c2i£âœMi‰rŒc¬å˜ ¦E¹Ã=H9†el¼•rz´y QŽq5˜Šr6¦N”SΤ‡(§ÇØ!å8#Ý—‰rœIý°RŽ+Ê©X)‡OvyƒwR¬q…\"[9‰rÚx”Èis¦ºAŽq,iƒ7t.u‚\baËuƒœëäû>AN¹˜6ÈfÚ9a(–#ä+# §8ø rŒƒqr‚\l/+s»qUƒqe|o\‘›Œ+ã£qE|o\™:WÄ“qåõ{ãÿÃ|ÙôêqQø¯Üe,¡¤¿?`+ÄD@xk9±IÙ ÿ{ꜚé®ê1 $PbÙ§Þ™¹÷é~æ<É+N±âÊKxqåȈ+²WæC\1³âŠlÅ¿Ù)®øÂV\yÓŒ¸J~ˆkž^\%;qÍó!®22â*ɉk Oq•™WÉN\%ŸâZ‚WÉN\%?ĵD/®’¸–øW™Yq•hÅñW̬¸"q-ñ)®2sâŠlÅùW̬¸šksñ)®%zqå1F\™qå̈+ŒW\óWÜG+®xœV\±@NqÅ:2âš§W,»S\¹4¸"[qÅr>Å5/®ÜF\™qå̈+²Wf/®Yqe6âŠü%qÍñ)®˜qE´â*ù!®˜YqÍÁ‹+ò!®2râŠlÅùל¸â+®Ì^\yU#®9xqe>Ä3+®ÈV\qÍS\ñ­¸ò¦qÍñ)®9zq•ìÄ5LJ¸ædÅU’WÉq•™WÉN\s~ˆ«Œœ¸JvâŠÏOq•™WÉN\%?ÄUfV\sqâŠxŠ+fV\™¸æòW̬¸JvâŠ|Š+αâj®Ô!žâš‹WcÄ•ùWÎŒ¸"[qÅ×;Å7ÒŠ+Ÿ§W¬S\e!YqÍÑ‹+×Ý!®X›V\%;q•üW¬q+®d‹WæC\93âÊ}cÄ•,òâ +ÖXqe6âŠü%qMù!®YqE¶âŠ|Š«Ìœ¸"[q•|ˆ«Lœ¸"[qE>Å5årøÔŠ+³WŽŒ¸"[qE>ÅUfN\qŒWÄS\ñͬ¸ònq•üW™9q•ìÄ5•‡¸ÊÈŠ«D+®â*3'®©zq•üW™9q•ìÄUòC\eæÄU²×Ôžâ*3'®’­¸J|ˆ+fV\‘­¸¦öW̬¸JvâŠ|Š+fV\Í5@9ÄS\ù£¸"[qÕs¼¸rfÄ•?ƈ+îÈ)®¸“V\ñD­¸Ê?Å+Ɉk*^\¹ðqåâ4âŠlÅ ú×”½¸rqe>Ä•3#®Š™-®ÄWÂʈ+³Wä/‰k¬OqÅl‹+0âŠ|Š«Ìœ¸"[q•|Š+FV\%;qÅ秸ÆêħXqå%¼¸rdÄÙŠ+ó!®˜YqE¶âŠßìW|a+®¼iF\%?Ä56/®’¸ÆöWq•äÄ5ö§¸Ể«d'®’Oq•‘WÉN\%?Ä5/®’¸J~ˆ«Ì¬¸J´âŠxŠ+fV\‘¸ÆñW™9qE¶âŠ|Š+fV\Í5À9ÄS\ãðâÊcŒ¸2âÊ™Wþ#®¸æ)®¸V\ñ8­¸bœâŠudÄ56/®Xv§¸riqE¶âŠå|Šk¬^\¹Œ¸2âÊ™Wd+®Ì^\1²âÊlÄùKâ:à­¥;Ð xkØun`\èêĵN‡ºqÕöÈÝ!®i.Ôuˆku¨ë×Ôê:—S^¨ë×êP׸vx«b‹¤ëôÖhI‡‹‚47é:¨}‰,H‡|íEºÎ[—é°Ñ“n(’®Ã[•„‹tÞšé½u“nÐ[“#Ý€·j7"é¼5ôEºAou¥Nð$‹´Ý¨›׸P7!®Šµ…º qm¡nR\ëF]x˜«Œœ¹JvæŠÏOsÁ›k Þ\%?ÌUfÖ\ctæŠxš+fÖ\™¹Æø4W̬¹JvæŠ|š+αæj®AÖŧ¹ÆèÍ•Çse>Ì•3c®ÈÖ\c|š+n¤5W+—„+èU 57ÀÃ-"»ŸËÖ[oú9«@²½¶Rª)è²t✾ §šåm +z +5ôa +º´?[Ðå3>ÁÕÓT±˜žž.e±==…®çÜ5½ÍkËß5½Õ=Ò ÙœÕÖô¡ïýUÓe+¨#˜–žåýÕ‡ié5”{ÓÒeÙ¶y¶ôÚµûìr2Ù¸;ºpºûŽÎ®b:z Új¯–>âTŠÛ–>å±›–žäUiKú ×Ûj—ôõµ|uôGè¶£ËwŠgGŠˆ»¢·ªˆ¾+ú(³}­ñWE/©ä…uô×0ËYÑ¡1¶¢³»¡ó«ú†^so¦ ·H±Ü]eÖôÂ0]ÊBí» WYÆó(èXJÑt)κخ‚.çŒqôš’n¼«¡×rÕž«¡_¥ßWt®§]ÑSŒ%ÛŠÞs,gE—5ÑLG­¦Eu¬º˜êYÑ[Ð×ÙÝÐgªúÞ¼º¼²ÆŒGC‡"*„ï†. ¹NÛЧ¾.\C¯¦œ/ø\Ý\h€²ã»9~›a»ùil²ËWOÿÏhÿtý¹*u+_‡]£nùë™ÆýªËÈ£ïBˆe³ uÁL÷eÆúEÒn‰e%IJÓzKÖY +qÕiÉå†AÓœ“ó«NKL-uíÏr{%‡™ÇêÓM¶=vˆ-Ô˜%}Û²PKæò» 5r˜ë׎GÌÚÔŠB-±-Í,Ô’%®o®…«7¦]¨Ñ#U?´PcÖº;‹ÎzÑû¥…:êŽX…ZvN+«k£–YJ}Uj¼þtßk¥ÆÛ¯¯6¥•ÐiWꨗZ•ïU_¨åoÒä.ÔØ-mîB-û+Þ5ï.Ô2ã;ñ.Ô8¯ß»PKžúB-Ÿå õ±ám…yÞº±EïvŒF‡Ò\¹Õ²5žtÓ¨ùp¸›ïFÍgÇjÔX#¹¬sب1ã+ý¾†¬µZv¥–,»-šJÍ’òõ» Rcù–uNçò®Ã5j켨îF]•Û\šû²¯sبe&…)¯F-Y^úõnÔù´l£Æ¬é²a¥Æ%ºî +VjÉx¹JYH«QK,I7µäü/Úë%[rèŽúúŒ{ÿ{êQªjÜ£:Aås¦eéƨ.<:jÖt¯<-T Ó¿ŽYì wاVGͼsÜŒŽš M}[jÖØ +~-u|&'´h©™±÷þýÿÙ=šò„ yå¡ñ}E^>ŠQDïö2ŠóµsŸä‰Ö¤e<íu”uÊu”¯î¥×QüË|å±ßv1v-×RFJòk)km^K)J˜–"Ûꯥ¨ižñ´”–¸^LñÓdÈ‹©dwV˜rɬ_LaˆgýbŠÁD.¦88â»0å÷±ýÅ”èX…)ïëHšòl³UýՔ˵Îrű@»T”rýçY¼ñ}<~âG)s-Jc'­E)7Ï8·IJãôì’4Üê¤<£h\JRžóv!eŒéôRÖ|¯‚4r‚2¯\”‚5L!Z2o+G§>Œ²4òQ£u…Ã(s[ãa4¾yŒb”ŸáÑø¿ÉµüÒèÅh|Ïb”—Tyå2ºH)Ê«m¥(ïч>ŒrmfšŒŽôQn:¾J寴RiúºŠJ­ËUTb¼,D¹ûó™&¢Ì¢/¢rÖ‡(s^6åvÓ×PRÕýÊ,~ •s¯¡Žo•\áO8–4;„cîîŸpÎßÐõŽ5ÝãçøÃjúìoÎ+Íâ‘}ödze.ÞœG1ßÏÁ?£ëúYÞ¢ÔFñ†Œ+xñƼ–<¼±àÞxæ½xcöñèÆt•Ò-–Ë +7Ä¾å± ¥¸½Câp_E›ón{hsç€4‹6ä¾²1 Úͺ=´¡öµuAò:0tó¾Cçn¨ä =º!Â<3Èz:ÜÒ µïº!ÇÈøñ†<ÛÛ'¢„×Î,Ý|þÓlìâyÙ£K{Ò-rŽ¡²ô|u•n¬ ‘Ò MÄ.Þ˜¥ïÇ7ÖZ>Ì8Çuã³-{|‹ïÎÁ*VÙsj +ßòoö¯oQÅ[|Ë9aäw‹öã ;r—oñ4Ó¦ð;dþø†„fÓË7·ÜéŸo±óLßbsæä›ÿˆΩ˜ï8nq·]ÂÅ hRÂENšK¸¨õQÂE\Ô×#\P•ð„p‘EK8ævüΰA}ú¯p,E{|„c9ËR8F•ñ‡šÎ|ˆ8²L’Ó8Ä>ò WƱ&ÙùrÈ2²§ˆó¼2rÆ™oÏ@ŽŸ™«r‘Ó–R.®»w)Ǭ²J9æ>íQŽ5ÉÊ1›y)Ǽ³©+æx?GÏ`.ÖL¯sÈC³!,èP[¼·O:ä½]J:ã‰Ì!²¤CøƒñC, CÆÛr>Сö5]-,Óþ8‡‚O›å²­æåò8î•s¨MóQÎ!cïôrÎ6Ë  C­Ÿæ5 CÖ5zAgß\ó#k§m#töF:æ¸×èPóÖ¼ cžÚ :fïýŽ5ËÇÐÕ5tüž5×]|·¯‚.>“sM@ùŒ)º(¹•tñ5¶K:þ?WøW:®äizCºxœºJ:îu¤ãNòd)¤³ÏÜ#]ìäBÇá#—ðBÇeÝ5r¿+rN¡¿Ò¡fí¬Æß¤r¥ã#éòJ‡Úêwd­k|Ò!÷ùެñÝ9¥tüLÎ7)܉哎%¿#k|Ý‘•·ç¯sXÈÙîÄ3 +ç¸A¦Ûã7Òö;±j»Ê¹ØwúN¬±7U>ç·Ý‘¹‰¿#+·¸št!˾3k‰öάQ“UÐEö^ÐE¯sqY¹3kävgVæ%ͬ*hqÆ|œC):ÙÏ9aGSÌ!I[/sØæžçç`//æ-ßt—¹–ǽ˜C¶1/sÈ#óeŽ2ߢÉ>ãÓ.sÌ2^æxÝ-—9äœbR9Ä6Æ«\ËRÊñ”ë¼Ê5.ƒ¿Êáž©œä£,å°;cVøU®ìíW9Á®3½Ìñ8¾íœârÛûU®—`¡²Q‘_å´WûÊ!¯xYæ«§½ÿ0‡JwÝŲøžÅœžgòëjÖm•sÈ£ŽÎ!ðñ8§Ü^CË9ŤUŸsú ?α&«—sú1Ç9fË\α6÷,ç”V·rŽYÅçXëù@ùºÆqŽ9·g1_}×øDÎ8¡\þ…ÿ*¥ŸÉ•y™”r\µíqŽ Ù²K +çâqêe®c=l¾ÌaÍ5MJæ>o?æ¸ñú~™®¯sÜ +Ù«%sØÇøuŽ¥mwre^º?èO£XС†SóM®Lš¡CìËßɵŸíðA‡Œ¡ôN®üÿ6ÞɵóHÎ;¹òovö|]dy'׸î\½í‚ŽÙ†?бòè˜‡Ž‚Ž?M²½+èxÇ"wp%ëwpE¶ßÁµs;g- ëxb½ ë<ó•5ÓnC:äq&ÙïÌõH‡Úi¿ºîX¥uWd]~ CŹžtÈ%2ò8}hA‡Úv'WämS º>€Øx'WÔ`ß\‘­¹tÌ–‹Xб淟‹Øïäʼ^æPBûzWæÝµ˜cž¢s¬ ¹ƒk]ã0ÇÜÆ;¸ÆWç;;>“#N@y>ƒk”ì®Ì]ïàÊKöý®\HÛwpÇ™J…tÜ!n㑎;iÚ\{\ÐÅÆëïÜÊÍi]?èzýÏ9nçmïÜÊš¨–s˺sk亜‹cr™‹hVÌD´sq™vÇVæ±ïعý5¶Š+߿̱mìaŽ™çî0‡˜ r¬h>AW¤1çücìþ‡ú°YÆ1wße³e.ã„§qqüˆŽQÄEnë!..»´Œ×ÖË8æ•g¦ŒcmæÑ ãxvæ"ÇìÙÜ•q¼Ãcg땳S‡¼cLø1Núƒ5Ë8dõŸ™UxsÎ+ãP›Ó¬ŒC>~q2±š<Ä¡öµ^a²Ç›â‡“N —3‘‹’®BŽy¨r¼½±Æƒjº²G +äâyö^Èq‹lÝr¨ I“9ù¼=ÊÅÖëò(Çí¹d|Ê!vÑÿH/›–¿n#Š•giCqôþÒ®²)Y$–zkÓŠŒ»ð·Ï9g¤Ñ•¡P(IÈsæ/éÞ+Íütæ`:äÜ/Ì1ËkjŽ9¥OÇœôæT)ÖÉŠsFšîœ‰B»8§uBtÎQ‡sÒ!Í9¤h­ý²sõœ‹snÐηsƒ6qÜ}ëxzu‘*vkTI:TF+æîuˆÁ䟾µ==9ê wOê¨cM¶Ó¶bH_®_¨£†(G—«•e¹°hƒáP¨ƒNµÝ¨ërÔu^lýô­ÐhÅO¶lÔqËbKŽ:¤'J?^¨°£ž¾•Â4G+²·u“]IjŽºÉÝ9}ëä9o77é½Ìñ uÛ´hi¨ ¨Þ˜Ÿ¨ ¸ýÓé[¡ÉB]`&—uÖ+Ÿ¾º¥Vë>²Þ}+b³Ôӷƈ6­ÔÃ:5 íf›–~úVéxúVêfwÙa]¤=}kdƒëat õfb%œ¾Õר¬‹l?nÔñÑÖê8äØ9›qõ­ +åÓ·ò¡!Ÿ¾•¿‡q÷­ÜÈ4NßÊãL¡;é! ÐM:dR-§o%_{ì:&žzžèœèYÆÝàížNߊ|îêÆ Ãí6“MèH@ÁAG=Ú¼@Ç: ÆSN¨©tDQXåbež¶•rÌ윺íËלC~Îí«7è*0µy]àÇ{QhS¾Y‡`„¯) v(†ŠÂõæol/è¸CE¡”ŒØâ¡òL7ð@Îq¥‰¶"9ó0*ÖlžSÐã:JÐ'õì59õP¿tßűÇ@ y^Ü ¼ x|À¯=LÖÍiÆ‹|d’s£{¦ñRì šRñ ¿ëÐg<>H=Ÿ‡m¹ß>…“Ûéeã!›=œ‘âiôäÊÍ,6°Ó˾á©<á‡o)ŸV–‡}ø(Œw+ K–Óéd‘—¬æ¾LªÍ}8N³= }Yeu:YëIîN–}L«ÍÑ·ûšE>¶>úÒù2>b„ãòØq (‹|Y_.ò1¶®H%–¯±È—Ù“XÏéèC,ä‡Ëã˜n%!öiޱp³¡d¥§Ý‚.¢ÇbF–ÞëÅ>¼Aë—ÇÃ\Î\v$Çr»=ìém7/~)!r3„¬g,uÞCÐuL­Û¾€:Ö…ÄrÖUÇÈ RÏ¢9L@JÀš±/¾S— 5ø:¥›i0N›ÜL©xñ+$t)aé¬ÕrÄí²ŸP‘²ˆ¥ÖõR¸tŒö„`Oˆµù[ù‘±É"ŒA:Õ‚< ¶$êNϹ¦ ¹&cuôiûU4&“ø0‰1J*U×1¢»i •‡ÛQ7ªƒ¯l68VãÈ1Úq^”ÈVH@]S:²¦èjbŒ5Ûeàô! ½ˆ–¡-‡8צuØ%pLiQ_4ê–lGäîלΠ†_œ£Ö(,iX·ó¶¶#¡¯çÆ(&íRçܺ¦ÔhCãXm£Û™`¡O‹^e—Òú\è1²ÏQg&º’´E¦ö&>‹"”i±:ë¸%— k³–ºç­ÚßÜ ná ÿoµÇ›e_èxãë([ÞT–Ë oÚ…T.¼q§dîÞXcl·6áx1÷‹p.ØéÙvãv2»ÃNÚîO‡bµ8íôÃ…hÇßQ¹í¸‘y] Ž3§3$×zÑŽ™TëtÚ•ÍÝE;e^îí”99í¨Ã‚º×|Á±:KrØ /³:ìT¡\°S,Î ;I[V´Rºh§ecwÚI‡î´£.kÉ'í22tZGé´ClÄr:WjΦç,¿è´c,Žá´ƒnu&§uhwçŠX­-9í¨C?+uêWçšY—ãt®Í“‰vÒén]µìN;hÔWwÚQ7{ŒÓޱ?è.›=n +ßÊ·´Àõ¯v•"›¢‹H‹zk$Fc qÃ]øî{)‘#Eb؇3Ò¼’ÈG«µ@tí#PÝM;êX•v›êðJ³¦ÌPG-ýF§]¨ƒ67b¤KVàé’Û=# ½Œ ô°>/H‡*Aé¸i榔tâwNÞÔµZNpUÖ¨cEÞm]Éxµå ]Š‘tи9×E:Ĭ Û¤ƒžz_lÔ•‚Uæ|¡±ÌñuÐÒÖpÔA—>gb5×鬃îÉ9e4@Ö/Ö!¶ò6¾È¾‚è†Ke]9~äÁ:ÆÄúEe]9žf³Žz÷œÎ:ƆµXʺŸm@YG]¤^¬c,Û•¨¬{Ì¡¬£¶ìtÔé§ÝÄê fZ•t6 ]¤ÓØÃÅROƒ…’Ž2W½XÇ}L«Öéq–@]ÆvÔq£‰Tšêsê˜xyݨÃ-”r ÔAëÙ ub¿èBn·Qj Žp™#PG½ú:ÙǵQ'ÛBÔ‘ERoÖqš´‚uÐy­`õžòɺŒæ.uŒ­.–z–å°£Þ=£Ã±²F¸Xê2«Ã:Ïv»XÆJ«;háØñyꗋͬË.–C–õd +;Õr»X6L,eKËaG]í+;ÆJKÝKwØñ—‰µy;®X$L¬îZv ÙëºM,bØ×ê°Ëø[jvØe–ä¸i‡X-ft•vÐ}»Z¥4®ÎyÑ.WkÂ6ì2Vºf˜Xè2²\°C¬ñ'ØA.k ežÉîRìZ¸vÐ8úâ°Ë8ûÞo‹ž¹‹…¬©‡uµMtØ1Ö¢¯S™ÃÅRÏu¡ K½¬eSÔQ)êë&ö1‡¢Ž:õÛÄê§ë:°ÓWætØ©·‰ÕX KK˜XN™×mb¹u¹‰ÕãÌËiÇ i<†í˜I£†‰ÍÊa‡&^¾=,“³æâ°£6¨¬c>¯z{XƤgÂe†‡UmžÖY§eâ¨SeÛ¡¨S}ÕÖé,),,u_aaU§o-¬`Û¥­ uŒí†VQGKvÔAÔtŒ°žè ûÃAGÛÅ9„Ð çunË9G]MÎIÓr8˜ãÅ2Åœê4/Ì鬳8ç„›²sŽz¶yqޱÑÅ9Ç9’y$åu³&Ï9Ç*?7çtËÌGq_ ×4ÛåœìߘÃ9'Læ‡ÖãÈç„yV«sú0Œ˜&w’ sˆY¶9Ýô²Øœƒ"õâb«qÎAÏ2—sŽÏ7÷œs2QDá_!ó´N1 †Í sˆõÔÚÁ$~QwÌÉq"Ì1¶¬UTÎÉq3›sÐs·›:ÆšÝu +:¡Ï²Þ_AG-©_ c,Ù}¨ {Ì¡ £®=_ Óo×|@§¯˜_UÐÙqNce:註±BAÇåè+sŽ:=O6åtL‘UÖ:ĺÔâ “ÃÜM:M½,阞Sº“:K ÔA§RÆ…:¦yËÝQ§p1T(êTÏy¡N+Å\-Yg¬Î:eQêëtš$Î:ê´ÄY§zOùd2´µq·uˆbËRÖMö4)ںɎqÞv¾IcHsÚMîâö¬¤ª£×ÝæÜ!†Ž?<,*ªs¾ƒ»¡•VŸ¸caö°°xÉ;êd˜rÜqÖi©­¸cÝ&C¢âZ ö‰»¡@vÜ Þp#<,4<ÁíaYÿidÇwMz>¸C†æiý‹ãn¢S˜-<,jŒéŽ;å0v9îJÅ»xq®»«[ìÀvçGÜ-ìÒ&¦á.á̤ܸK8ûúÙp—À´Ý¥:îN¡„‡…î¹·à]Â÷Úía[µ¹‡e«-x§n¤ß¼£ƒáaUKxXêÝqï„lxX¡Ù²¦ÍxÝR»y‡XMáasï„.äÆ?]ÅqÇ7¢­³·‡ÕX ˦–ÏÓ¼=,÷1O÷°©Çú„ÅÈÎ=¼$­”ìàã4k}E>‡Rò¡„Ù‰WG-•u±/ñFÈæ>~ o{4{˜·ä%ýˆƒ¤ëØøã6¦eÌ$ÿWCú<˜ÐA ›Éú=|1‰~GÒyó=û=˜–ÒÃ×ʃnÚðÝzφO{³‡±Åúû _û†gr0㋹„­%ªSðC¹m-¶£äpµ8aRàà¯mëÆ_AÉjdøƒ!A¢…«5ƒr»ZššnÕéŽÉÙô£Ò¥>è‡*3E·ÇÝT¨lúáù\¦~ŒíkRé÷˜C‹«ÐšXê8þK%º=¾2,Ý”:Äxèüc,[õ)ÿ ë&ˆòËA¥¶‹ØÈ>¢ÛãaîNκ=lHaù?»=€©l««Ýž’8G·‡Äsc@$gßèUB¯ÜÆt&‚oZ“åDž—Cte ©³]¨2Z—ÿ„`²Sˇ‚ +!CšRz~÷|‰ã³5Y +BfžÑõ%vuåoPøýŸ>ÿøáçÏþóñݧ//@èÕ_^¿|ÿÓçO>þëåÕO¿¾ûýýŸþýþã/{÷ù׿ùýýë—ïøÒÿ÷¥?ÿh¯üðÿ?ø_@ýóö‹Jüãü£¿¼zýòöŸø×5ü×ý0éÛüïí;žÎðŽÞ WyY¡cøm‡ö˜1+eEC¢&«j´ª™\?ÛÒAÌJóUuŒ¶ƒÔȦ¡Ð±¹žXÁx£˜ÑÈì$'Ê'þÌ—õ.‚Ž:cÆe#ŠIÄvÍ=‹Jã‹ÙÏâ<,ç¢xyL¬cJþÞ¼Õ^³i9†O7Aãæ%üÌÂ窽–/,ž°Ë|™áŒ°þ¡BÊÀDýÛV¥Wzß[æã¨d›¹1|'¥ˆÚ/K1Ôæ±åb˜–FO¿-•Üte),1=˜Æ‰Ëi>stream +H‰d—=²-« …Gà9ÜÄé.ô(vÕ›†Çžj-©[4~Á©SK»¡Aˆ¯µ~4ØþèþMýó¯üóßşΟÚzâ&þûÄ–QÆXþ@NÝ6·¦š©‡úŸÿÔYÛÓ¡9FÈ%µrŽá9sŒ¬õašùˆ¡Y+¡1fê]zÎ\qÄíømýÜV>²6C®½©4Þ¶~sÚûšî"ã|DhC›y½…W±!½¢XeÄdcã¡+\?–›#ä*4‰ìÞsîÂŬ’&¹ñÅ#—:e¤¶í=fó¨+åoî–Û´æó¾x¿ÅnŸ¥­Ÿ"õ¡\àdÎMŒ)Vy ÊˈǞ>ÉÏ&"½Ë3Ã)OU¬ödqp9$viNÂ=Ä!îQ{r⬠¥\çj–K™k/<ã¼ó5“PþºrÓìyÿXUŽâ„CËž9&Wæ?÷gšqtÏ•£æYqï©+1r·[f_µ:°Ø!WåF3KkÏ, ]\%7÷Ë5ÊÄN[ÏkFéÅþÜ&ÿé$¦ô¥é"¶©ÒA]M: Yd飽›t‚e87é ÇÔ/é"d6¹I=–4é ¹t“NP[_ÒáÚÔ¤KýíCºœÕw“.t\®Õ¤ƒžK.Ò!–ôH½U›t˜SŒ/ÒaƒRŸ…$]&M¸IÚ×à‹te3+–¤ -b :Á•Üó º­,Ù"]HŸõ)ÒÀ6Í›tã'ƒ>¸‘#? qîU‡t#f×yH7‘“tñûþ?ÐÑoä}AGñe{žIÐQ¤²Êò€Ž"Óè(þWuçÊBÎ"Ò]ÄÖÞ‡tÐì‡tY¯ïØ!]ÄtÈ!ÅôEÇ"]üîL7é"¶YéÎIº\Ÿ¢C:¼º0R¤Ã3E¢"ô¦›tˆÒá5ÏMKÒÅöìæ\äq :œÃi¤’s(ezqu”}AqN¹»9—U'vq.+S¨9íºt¡] C…‹Rƒ.ÉRÍN‚.oÄ t«Ïm‚.u%$A—$º8—³|’s©‡5ç ÷ÃÁ‹swu®›sT5ÿrŽpCæBÒØ7æ¢Ì­±07Á·Ì…VÛæâò¸ÙÁ\h­…æBÏÒs¸”õ%MÌÅ#VÝXašæ…9Ìêt0šèP.ä˜ó¦ÜˆÌM?”Ã-—u(zUw(û[õA*Ê!eÕjå¢s€ss]˜Ë7[S.Ÿ(‡“”«vQ.c:›rÐ[©)‡|l׋sÈãpkÎåyÊÁG>tݘ#Ô$5æ^Þ¾˜£§úb.¾@ƒõ`.´T¯V˜‹r6µsñe[¢sËÓÚ'æ ‹ûsô׋9j×Q˜ˆH/Îašá‡s¡Ùýpº¦¼8ÇQ «,es1×v®[¼Aý´Š ºˆ‰¯ã\¡ekƒ.4o»œ+Bò´í(‘ÐaJsÅïcÞΕq-W;W ñjÆt©ér®9ë1®Vý}‚Z§] CLæ1®ÐSfƒ £jïtØ/Ñ1®™3>Æ5ôT¿kÄ"­Ú cÅF¹AǸë"]„4k¶Hr*ç:>™û"]Äžæ+Kˆ-R´q -‹é]ÄÌe7èB7‘q{BϧmÐElM=Î5´ë’c‰óv® öçZ‡É :H- 5è³ÓÏ¥äã\¡÷¹EÿzŒ+´sЋäÂb“ŽqýÌÌAŽy×|³zƒ.Ÿ)ƒ“ K½nãš1=ÆšåWÌÉ~WäQý×<ÏÂT’b8‡éPHÙ†é8ܠ˲ãÛ·¢4•¥A½´9‡jv½}+bqšs –}|kêò±Í¹¼%s)+‰¹äÐÝÎå,ãØVèéǶ¦·­d8*¿0‡X6²…9HnÌ…. 5ä‘:Ä\è¹ÖjÈA³}‘hÄV3škÉ8h-ÝŒ#Ëáâð„T'–ˆK=öq9é–fáºnÆAïº4Í8ÄÖ¤fæ1ã ­š»f¶gÕG%ã2aÕg%ãB{…ã(°’þîa\h±g%ÜÆÅ_ÆEh-TA1.äïDÅ‚tÐ…¸ˆ½W2.´åWâa\èE¤ã"æ"ÔŒ ½e{3¿?ÌkÆNíxÖ¼ŸÞ ˆ#”…í q‹ b¸Ð±·ù"Ž^÷ñAb^Ý{2Ž^ó0.ôæò– 9Ĭ>s 9Â¥«Ž?!Mc^ClÔ§0!÷™°€ÔÉäòÕÊ ¹|¦.pB®Æ¬ r“݃ž" 9loîyA.b²÷jÈå27äP".~AŽžSx G/oÊeá1]”CqnšM¹ÐLr0zˆ¬ s(rãÙ˜K°'s©‹û¹¼(åd“sEšÕœKùå\N3¨9=œšs©kÊ‹sH¼­»‹ØB‰?œÛèfÆiç6Å}ûÖ8ϵȚtÀÓ*Ÿš¤‹óŸZíÝ‹ºáŽo²É•¿¨ ]¦ôƒ:ÜËÙ¶5ž¨âAô(F½¨Ã¤ûq²¸/¸´£h˜¨ Í6oÔeý:7ê>mëøÖЉ³/êpùÇâFrF“u±GÞÕ¹4ê"}´íøÖ<™:ÈôEêLQL…:ÆŽou|0ýîæWu|‰:%,_Ôß0’u#>ÿ||kèfr¢nHª=¨± 9¾5ôäi‡u# a·o˜«ßJ>M­Y—dÞ¬ƒkYÇ·¦¦ã[¡g}Êëìñ­ƒU|,Ö…¶a7ë"¦ãøÖÏÉ:‚õ¸Q‡7+Ôá‘ÓÎÕˆÛ·fLŽoÅK‡ߊßǾ}+òÈûøVœ' +ì%£&×Mº($Óö­Àë¢Õ CÙ¥ãù€.Že7è6>î||+nqZ±èâãæ\ctØh0¡A½§_ Ã5Éê|@—¨±:h<Æò]„Ôm…Ü.͹_{ýç¢<݈Öº7§wG7ÐÓh½/Q7Ð,²Ü¬‹ E_£ÿ#½\Z÷LŠ(þUÞeâôý¢«f#.F1Ûà' qq‘oï9§º«Ÿ™ üO½}yº»êWU;„CÕf›v0à«í+7îS5Oƒ¶xC@Æ<à‡s\ÄcxŠ\‹ykÎÉ¡Çe漩G[·9š‹øeù]{4ˆwOԳƒÔk"ëæ4ãE>² è }¼Ä0{wö­Ï6/øÔ}ÆSçÁiR§ÎCŒ6¦¼G÷ÍÍ{ÙxÈf…bQð,ôT“=šYÜ^§—ý5_ä†_•¥|ZYB:ö%á-Þ­,^"§ÓÉ"×Õ‘}™T›7ú2c­uGºÝðBŸ5%w'ËF¦ÕæèÛÍ"[õA¾ ŽŒpªœ~@pÄuÅ ðòl4_ü#qVç)þQ`½0Ø«%' d<©goW­‡Iü¢á¤a¤qª½ÀJ ÌôüæÛÏ_¾ÿø×/ÿùéý篯ßÀôæ÷o_ßüðåóÇO{½ùá§÷?øîï>ýøÇ÷_~úÓן?¼}ýŠƒ¾ý¯ƒ~÷½ ù-þáÿ?ó_øpý{÷Uüˆ?ÚëÍÛ×»¿à¯Éü‡õcÐhþ÷î½O{zÃÓÑãðV¸Ö,Ke2EÑàpÔ…q ÄN™G ™E‚Æ'³ñxˆJy9$_ZÞÇìš}âL¶Ö¢†0ÕPÃ5³t3 *e]q3²¾ÉªHP4cié¬åóÐÞ¢ÂaóÄ9âÔ€Uš\¢ØzÔàŸÞGÚä샊²ô”e,ÏäÙzÖ*i ‰ë¶ŠÆ ž´Î½uÍÁlÊ2ÐòBèÜrÉ +uu¨« ÇÉ'B¶DtCóÆ!KÄPH]S°{ÚS”—hcÄv•oÚFÀ‚„µd ˜jmZ ŠRxw™Q…º¥¤%XkNgrበ=A…1àì«'؇ÝHXSÖY4u¼.tnHj¼DöÐÈývÑÜ~Í))è9+=–šy‡*Ò:-ôHÍ猨Çéƒ +N-Ú<Òl)é½ú`T®O‹¯½µú¢¤²E®×;µwWˆ ±Ú·ô¨1¸è=§Ë»ç9‘Ø3Ù6eè!t<нY`ޱçÈ»aëcù ÌyГ8ï,žô³kùz[ ÁÜ&fF*–ˆ“! -Ê»{­Ã¼M ·¤,Íb ™R?vekJíU6å3EAV³·t”Æ×=OÈrÐ834ýœtÍv»`­²>7°²’N¦ã48¡²°[ûÿ¹üÝÿÊå†ëì#_…‰Å•c4Ò›c²¦rc4Òºc²„x0Š÷½Ü…^êÌVùp¿Ó‡£qu˜¦Q^é,¥Ìéf)m¡–²\40K£açbi\uÑf)ý§f‡)¾,¶xÃ'^ˆ6˜òÎJ:0† ¦ ™'w˜"p¦-YUþ„)l á0…vR’¦-#5¤zÑ´±ªLÝi +]¥­çñD)LcÖê(¥¬½J¡çB«£´œ³G)t*ÓI +‰¯NO’„XœNRèH)Ùr=AJ›jÚRiË`)µú)lhV²ƒ”zç(eÏFij9;F÷ +£Ôa´ £Ú¹5Ç(ÇÄP£š3ã£2µäÕ6µ;F¹äâŦ(oͪS´±¸/Í)Jç¨-_¥ucž0Ú6Ð7F“µFé˜Å) +Õë8e÷ÔâMÑ(48Déý!ˆRÇ|C4Úc9D£U¶QR(ß %«R= ¥¶m¡Ðm-yZ‹•çÂÑ”í®E8êTë&d˜)_„£-϶ W§L¤J=]|ƒmôîx£T)¾ðF]L;Þ*cÑ´ðÆ1y¾Iç o2…æxƒÆ +ÕñFM¶<ñF‘¿ñÆ5BMo”µ]tãùÐ~9Ýt_Åá™f¼ØO·Ñ‰w8Ú*£p– mµ­;Ú å<mÐ¥¤r¡ ¶]Õ mÐ#Ïát« W•û“n0¥\‹Ó zSXAW‰ëtƒ­ð67ݠѸ¼A÷pÕ‰° ët§[íp¾6oÔ£\t£iÎæt“ÎÃé“e.§mô®M7hÓñFÓ¼øF[°6H|Ûkl¾Q—Q.¾ioë¬Ä7êjm“øfsæ“o25Ç›v±Þx:ÞÙ“o¸´6­ößôšÆ&ñ2[ºøOB±YoU¤mÎ7y^ÉßäœÖ:VsÆksÀAç\ç8ºx-Ó §Ñ 'mhvÂÉ–šNº9à¡4.‰U);á¤cvÂQ‡EÀC¸÷Dû$MªŽᨛu²5dŽí"l¹Ûj&dœÙš¥8gmÑJA:¶^rÔôC®0$-} +rÓGrÈI[yé”Óºs:å¨sN9êÔËE9Ú¢E (G]JÝ”£œVÓ9æxœOaN—–ç [¶ÖÕAÛ@89é '¸á¤+ŒÈ1.ÒÁVbsÐA:Ä:hdË~¶]s teà–frÐA皟œƒ¥öÒsÐ:èæt[ÜsÎÁÖ‹±_œƒži$ç\½Ø=oÐÁ”Ð1:è óhÉAWV_ó$m)®¬Öhƒ®¬¡OÐÁVC¨:êž“ƒŽº¦t޶’ªƒn¯±AÇ}Fè´w:±ÆF “^]Ê<§µ8é´M™N:þ®g}Ž™­@éôœy8éè!¹Ö‹tô¤jXéÊfî"ì +èØ ŒÓ°J§Ó°*”-ÒÁVÂiX‰„ht4Òá÷™âM:ØF:-ë^ÃI œÝ¤ãÞÖé8Æ#]< Ëôã E=-«¶)§eåñêÍ9Üc§cÕc£Ä9²Ûý;çxYû£ƒ9 –Î9ù]¾;VùfŽ›s”³œ–•oëݲʵKtÐ -óô¬ +‰p÷¬²Åá “¶7èÄ¢›sZ6žžU:œžUÑÙ³f.ØúÅ9˜Äð͹ÈzÆ1ø1‡ÉÕ^P˜ÃÈid˜ƒ.–êæ0}Z•n˜ƒ.­ÌA7ÓsôK£†9~B/së“.ÌqÝæ ­1ÊA†ÖnÊá3§ÅŸQŽQnî!ÊÑ­¼;”à 9ÇÒ¬'¹R™t”æ CMfäJ)î» tÐe´;¹²&Ë´tÐ¥'¹òzÒ;¹öd?É•c¦{>é|'W{î ®”-Í5¬ò:ÖÈþ :jÝ ã/ËîîtüâœOpµ9+'¸B+&õj˜Ö +•‹Yt…ýØoÒ¡Vų‘ZW’5ÒAãÌéP[îË@W&iœà +-½ä'èPjSF€z#ÙºZ— СÖN tÐsùr]QÌ„^É% ï$Wèšš訫Ob€ŽµvüœÉr’+õ¸1‡R³ý¿0G=†9jÃìs¬i>Áu?ccŽyqÎ^í1È@g÷xÆ1ЙîWpµR=Á•ºÈ ®|d™wpå<Öy‚«-§SÊHÇÒÜ 鸓z=Áµƒt¶ñÊ[¹9k‘ :JO}Æ9nçYïÜÊZ ÎYÆÉ­¦ÐÁ9k“ƒ9“µæŒD¯ìœ=&ØJMJmÌ™N¯ckn°7m>1Ç’¹Ø…9ê"ecÒcE| 9Hí½ä¨K»‡|XÆQ—6ƒqÔÕu0.³{ Ž·ˆj δÛÌ@œ=vH0.³]S ÆQoš`kÝ{ÏÇg$FdeÛÖ1ޏÐiŒ³ óìdŒƒžŒ OÆe…?=-í‘Y3›±—‹q¨õ^k0zó‹ˆËÄNùBjÛyÙ†n<(6ã ±Óë“q(M‘Œƒ2f0Ž×ó‚qyÀyÌ +Y†j üOÄ¡¤©µ@4>Mqy…'âX›½ãò +0›qУx> ȱÖü˜3Èe®AÖ€uNzA޵”f@n?cCŽºj¹ gï®% g÷xÂ1Èù˜þ„œ•dä¨U$ ÇÏÓ¡äP“áÉ gëYJ@Ž[dʼ ‡šfg’A.oÞ.ÊÙÖ+ù¢·çȺ)Y²ÌA'‘~aŽ»¼ ÌYú Ì™ãœuŠ'Y㜣¦ç EI/ÎÙsRÎQ§™ƒs¦×3ç°A[ë—C©‹ÔàÜ ™Iaç]â¸sëÀfí~ü‘t¹¯œJÒ¡30;õBjpù'·¢›´õ¨ƒÞ™4PǦÔ[qK_¶ßPG4_¨ãc‡ïkC›ÖüÎBtiz£®úK ®³%zäVHÄ€;·²÷¹àuœ3ô@ ÛŸ/Ô#y´“[ÑùŒêxkwnê&SIÑ@Ý$ÆNn<1çíæ&­×r|DÝdÕ“[3f«e¹PÇf-'·Bo(;ê°ËˆÔqÝääVh-Úë°öµ]¹¥YÛÉ­{pÔvXgDoÖ±úÉ­¦óÉ­ÔêGÙa]¦=¹53`9uÐ-µ›u¨Õtrë~F°ŽÝª7êøjAŽ:Þr윸rk^-¤ÃK“œÜÊëiܹ•óXÆÉ­\ÎâöÆH‡"ÒoÒq™êÉ­äkÏ=@ÇÇÈóV™elÐ žîåäVlÉnaì:lÉY|ˆŽhtÔCç:öIržèŒ5퀎,J5_ C­Î[)‡û[ãܰӾ¾â'½eÿè º„,:£K´4u%YlD§Xäfж¦nØay÷„WÒ©æ9/ÜaO4™Iƒw($7#€‡váñØ›È%˜‡»rw=>gÎWÔc±·Ôã.…ý®=gïɽij t ð¡ÃvL+eæ‹|DAâwlôqÓt\ûøÁó{ÁÚg>>m†¦<>=$ýöy*¢'ËæÙÌèÛ\ˆËè™){„YÌŸŽ“e#6Ï, WPäDYR:öá2P˜ï(‹or’,&½èbm^èÌmÏF2öÙI²žIî$Ë£NPCßÊ5›|Œ>ö¥ò \ÐHÇå1q(›|¸>¦ë ki’o?c“OIaWôv±O¸¡.‹¹œ»<̈xë—*ÉŠ·æòŒÂå¸<|e.í‚~‚.î~³´>‚~èë\†{«À¾Cœæ‹üÖ<Ô#Õ~0ùª•  1Èqf¤ž]o¯‡QüI# ÈÂ(㸽D'Pgy…Áo¿ûüå‡ÿòñ_ŸÞþúò[”ÞüñíË·?~ùüñÓ?^Þüøóû_?|ÿˇO?ýùý—Ÿÿòõ×o_¾áMßý×›þðƒßò;üÁÿåÏ{ßìÏ»¯&ñŸð}yóöåÝßð¯[ùOëb²»ùß»÷1<íáŠàvL+ºèŸ«Ôh.PË@ ue£¯´tÓ™YMpjO_ÔDư‹&Žnjs‚¸GÔÆpÿñ2;r ɳ{-aRW†&4<&×´.ÿ½ ¡Ò–íG¹,Xœ²4 ÓÐÛû ¼—µ4íGeœßÔÖdÔÉßûâgÖÊ{h ÑRüˆÃ†çŽXCГ5-sú|U»§âœƒÄ‘dXŠ·VË<‘•ˆ`vMÞ7çö=$wÁhwpÄjø Þc3΃Ó ¦Û>ÛÜCü`B“ay_ºù7 34²ˆ=¹qùs´eS{Τ/ïÙ!ÉŸJCÝù•>#–TÖ˜nçK¦sá-me2á±sY†}­Õ6k@§e“ÄŸ†5Òncì„€®É'q¤3¦~2j3Ûs+›–‹C FmŸ‹÷á<1#û³ã¡[&lÍñ,j†J{L+bcdT³ŸaϧVß{æ)ö{h4¸?‹ßŒÙæ•b¯±£iQõÀEÍê3Ä&›~&ûp®“SI"•Çž-h£É¯øõàn§²«¶Vk. +kl†NkÃIÄš7ŤÓÂ[ÐílON’`¢“ݤZwâœ[º©]ï­Î=¦õæ5.¬uA2²úMgÓM|Á„¶oÆ&ÄH|´ÈBxåð‘¶ÆHq­8,¨‹ˆ ûéÿfó÷ÿ+›MЇÜ(ÍÞŒÒL« ¥Ð­Ô¥™gv?(…®)”¢AG¯7KQ3;±YšydÉa)®§¥7K󊙨ÙÜCð”RÊÍSÖR?<¥g$ +6O³[˧ٽ`ð”8áŽÝ@Å/Ëšo ’"¨œ5s5»9¼€ŠWÖœPñ3'~UÙöS/ *{“ÛmzÓÒˆª˜pX΋¨Jo‰…ÛD…nSí2.œ*[¨µÀ)uÊ8…ž ¯SEkªÖSÈRgпº\4E ý8ƒ¦Ðæ^L)™¼ž0e­Í05í§˜Á”Ú¾ôSÔY$`Jí[ÈXJé ”²¤~äJO°Î§æG=QjoVÝ(å-9µ@© ñ:Pj5Z ¥ö‡‘¡”\ÐØ$å46î'©Òáó,Y$åæh*J¹‰ºö@©n¨o”rÓÕv£”ó?d×[¢ä Ð-‰ŠýolªÀ@sçoŠéNnl=™’"n=))G¨%URÔDRîþ6RfRy?ÖƒT|C¤dhTG©U×t”ÙïêŽ"/¿bqTñìrzQ޵á«mÊ1wÕP¹Ý>Šr¬»B9Åše»ÈÔw/Æ¡Æ?ä#Ž‘`|Ä1Ï—qÊóèïi#Ž'³< +qVj+ˆCÆ4ˆc>~— ޵í¸q¼FÓÄ1ë*ÂñùtHg+6?àú•âJöp7Ä¥z‚7åA¼³ð¦Š?gíà Ù&¥7ä9û,¼¡æÍÝã ùŒ{B8]h?Æ.¡ևÎ9(æÉA¯× áP›mO8D °Iònµ_D ¯žÂéö“þÇ|fŽ¥{WgyœYº¿¾B8Ö–H‡ŒnâqÌÒo1޵6$Œû¹†Ç<Ï,ÆÙ½—~Æ1j›aœå㬶‚8»Ë;d$ŽO·}â +ã°hë²sãìפOÏ8îK5ŒÃNÂZi§Óô3ÎvÞÅ8Ûœ>DrÈ*ÞårÈcxÈqóߟrv¼Ë1å,‹å¬Ö×§œÅÈ™BýåL+—Ç”³,#”cnOÁ_å&ö§n-ʱöeSŽyùLkÊ1o×C9ÔÆ>7”c—ØœCîk­âkâc€A‡,kk@Ç|^~ÐMK‹tüÈöFÌ ³Üg‘Î.ë ŸIÇêlÙFX‡¸†Ïtj§·Ú!ßË•ÚMÊsŠv¨qO|Ø!~vÈxiî‚jÞz=ìæÁ*ÝØ!>Ìu(éž;¬C¶½÷Y‡¼ž}aj{ºÿ´ñö׾Ѻyqž÷,Ø¡Öç–ÀyœÕ»ù 9?Ú±æí›a7¿9éaǼ|† ìPÓæ•æ=z`Ǭ½ìX›þB4ì~®aØñ>gŸ‚Ý[χ}äîÀβ¿?;«é íì6Î…iÇÿÇÉ-Úq%ùhO;û9ÉýÓŽ;d¨í¸“Toh7?wŸv¶óÆ.ÚÙî=´cv‡ ;nè­£`‡Ž]쌗«‰6 vV“ûagÑ/k;Î4ê½hg—•ÚYn;´cž~É¢ÝÀ½>Q†v¨™9¹2·¹C;~çõ‹¡krNh‡¼ôöÐŽ¹­:¹¢¦ú:wjÇÜvN®Ì}—Éuð\žœ\ùñžÌ´³Üëèj—½'´CÆÛ¡óòÛ„v¬éÎÑ•ùÌÚñšÃû¼ÐŽ8zŽ®¶l#FWÄ»[]ÇÄ^ó.úòmØ ÊS'WÔ¶útkÚ!ßÕsr/ÏUµk¯ û´kX¥›ØáR·ßª”³–ãÓ®¥Ë¦êçv‚³§1º"öåqì„;¯Î®¨éY9»"ï¾$±ã$âK˜ØqZ99¼Zî9¼N~Ö_f©j³åð:9f Iíx­.U;ÔNÏñõç®ú]ÇW»·îÐŽ¹+µ“˜[R;Ö4ÇW»ÍÌñ•§Õ:®o‹éÕ~̱Ã:nÍŸáÇ:n¤«9½c÷„u¶ïF^mo ë˜ïÌñ¹‰Öñ•{|L ìL—›ó«‰VçW«Éù°³èëá¯WbT­³«Jί–[ίÌGþŸ_í”­]­Cíõ´n°­IêÅ;ë¤û\$u8 +÷hR‡<õTêp|®¿)œºæ; ¨C^/ÔñTúÛÔ©ÃGÔ›2§ŽYV¥Ž—½’Ô!û4âÒ!¶µªttbÝ”Ž}ì”y{Ÿ—Òá MÐO:.Z_!¼»ÿJ‡ÿºWS:|uÏ‘ÔñDÖ¶ŽÑÕžÒõP̤ãB¬v‹t\,kžtÃ:æ!³XÇZ÷W¢Y÷s ³ŽÙwgPg·Ž!Ö>àëmÒù´HgµŸ)Ö€r,L:óìÎb²]ý¬³Ÿs$ux$™»RÇ}«’Ô}æ~Ôqãõ[©Ãk¨õ™Ô!ïÙœ:üŒ:µR‡Ý°ÇL긱ÏNê˜ïªÔÉû¹uòF¨‘“„ýÉ¿Öñ2í¦uÈvä>ë˜ý’źŽknŸ.Ã:ÖîÌ)–ùŒØ1¿ž1°ëü1vN±ÌãÌÀO_§XÖÆkà‰2&Ôœbùÿm•)¶ó\îœbù•ë=™agYêk—Í!–QÛ ì˜§ß%°ëÑ;æ5V`Ç¿Læ,Øñ‰ErˆµUë1Ä"®yë‹Öuv{Ofì:ä®Ú¡6‡º¦òzS­i‡ŒWç)Ú¡fMØÃ®«?é‡òØ] +v¨é'°C—y„×ëH;Ô¶\ÇñÎ=»¾ÙªS,jð/§XäÙtvÌÓ1°cM³¯³ØsŠe>•:”ÐÇæË|ûê˜÷{s|Ô±¶$‡ØŸkuÌmÕ!Ön=ï‡}äœÀÎò®C¬Õf±Ì}äËKö[‡X.ä¼1ÄÚÏÙohÇ¢sí¸“öÌ!¶›Ãm¼^gXnÎÙG`Çì YÇý|gaY“1Â:Ãåä kÙgÚ°ÎŽIPgɗè3Šþ´uv•–#,óº9ÂZnÿ°¢øËõêX{ ­QÇÌðQ‡ì¨t¬¼W¹A‡¼öëHs×âJhÈv8ÇÜõ†sÌóåçœðHî`ŽŸÞ™)–Û)ÌÙUÏç„'¶õpŽùè)α¶—„s¼F{3cVoòÂ9> ú‹Ëœ³%“ó9‡x]áœ,´ g‡sÈCæWáyܽ8‡ÚÞs†sÈÏ0cN6ÔnR˜CͰç²ÚËâ9‡ŒÛÍâjw ç½!|ÎñÿŸ{áœt`1¿"õóz82‡ ÂNaµÕTƒ9d<Û +æä›D~˜cíz¯hÎÉ7Í<çO÷93 cMý]gÐ ç,Y³´U c­ùûРû¹†AÇ ç ‹2w mûëRƒ»Fb†E\}iz‡ÛM­3,jwjΰ"<ÀšÞÙ4²ªw\­3¬eÉ–yùû,½þ¸9à +‡-ÑôY›VïP›-gØŸk¸w\ŠU¹ã­§wüD¶uþ…:ÃZmä Ë›¶‘3,ÿ¿:Ãr!mBtíøsö¶C;ì Tµ;¾4v$vËì¸ñlôùÁ›£ËùGzÙ´ü‘Aü«.³ÖWäcpø,‘%L'Þ} Xªë`_âP¼ûü€o{˜=¬[ËÊýˆƒ¤ï¸ðÇmLË™Iþ}¬¾86|%÷{¨Ø2òö{¨ÒΛïé÷дԾûÚ¼éæ†é©sx>y³Gc‹ýës÷µox&'‹(ÚZ¢:mþágà0Ÿm-V«%ºZÜx6K௲X׉¿Ê­è#ð‡œG¢í®Ö”³«eSÓ£ÂßÝä\ôc¤O}ÐÕ6Óv{쾕‹~ø}.×A?Æ®kRô{¬!úU¶&ž:?ÄRÝnC†§›û Nqÿ+^}ât»"þásÚvðCûØn‡y99w{ØÊòº=œR½Z]¹=‘¸l·‡ÍÊÞ‘ ýB¯½ +3ì& “´L7Y@de½‰.’:W*RÏä]^@0ù©•›‚‚#M¤^£Ÿž“øF3@È€*ò&a¢h«|ƒÂï¾ÿôùÇûüá_ß}úòò[„^ýáõËw?}þôáãß_^ýôË»_ßÿð÷þӻϿüù˯ï_¿ü†ƒ¾ÿ¯ƒ~ÿ£ùþàÿ¿ð_@ýyûEÿøÿè/¯^¿¼ý+þõo…ÿxý˜4šÿ½}ÓÓ=½ÃÛ áŠ!›P¬ÿ¼B†¬@¬óÞ¥nøšuC o@míbbµ#ék´ÔLtêY5‡ H™ç=##+‚é3Žà…CyXÔÝ5z7ßd¤rioèÄø+½$ä$5¥q›@Ë«ÞO`Z"†ÒÖ;mU:%BšZÒZ‹ïò3cIÀ1€3dA³#‰>‰·Z| +Ë0Ë{÷íâ·"U;îEh UZ©zÍ™Écºi 5Í+¬0/,¸­ryz\ õZ€?¼¤öwb‚­ƒÏ‹4Mì5C—c,×!û¦VЀ‡I/»ž’aFºÖ)t²Ð­g}˜<Êà%T´Fo¼[ø±8NŽY¨)³yf™þñ«_Ï[XÃÚ Ðu¥9¼Z [j¾Ç¶§´’t”B9un:¥Ù¸øI=FL™Y§‹r51 xÚoLͶ’ÙÐ׺çX©š#Ø=ÖþbýÊ9ë-žÒ†rJ<¢¿”µ8ákÎPVóþ¼çôj÷§x}¡QÓÇUÞA¬Év]ÜGš¬ÒQ®Iûœ¹¿ÐÏhþ³ŽêJ¢+³“‘+·2y5 ¥2µiÙ´Œ¦R×®9ª6¦²uýžé®9‹À˜|‘Ò?©nïé, VFúûqá i0Ú‘ÉlªïÀåÖÄ)‡N§©’.Ò°KºÔê CòþßLþáerG À¢œÍn“¡ÐÈ™Ph+íD(Êkyª8B¡á¸7BQžs´ƒ¡Ùs9šyWÕÍPüž\o†fï1of^’›£”µœe,ÍQšE‡¢s;9ŠXeß%K¬nâÍrÏ'HéÏx„7H¹i­lÒŒår‚´ðKó)j'Û +vVýê7H;MÍA +”$I;ÿ.v´ÓN–$…¶À(Duít6fQê”k`z]X Œv8¦Þ[`º´…Ä[—ƒ¢ˆ¡WP´óÄ¢Tl·žeÌÖ ˆJ;íQj}é†hgZä¥öÜQÞQ:ü¡ u¿d…ÐÇ +C¯5iÛŸÕc{„rLNÕœ•„*ÖK TO±ízúAPî¡åíôô¼B.‚25¸SO„2{†óŽí7Ìo„2Ùx‰>Ê„l› ™eÓÔóIPIJm€2íSÝ¥Îõh¾Žêh¾z® äO=øIJÛü¤Î¶ù™}¥¯ùiH <ËA7ƪï¶èF]Ì‚nÐi•zбºzÐͧÛR•QžlCˆÞúF%Mø6êæ:Ðf¬F¿ ‰6©s³MºhS(õ@4°@õœù@câý…6®‘¬Ú¨­dãçYÍA6mX °Aòýž\CH_waÍø~6kÆ:d!ze6AyêXƒ,ó2„ÄšqÏýy5Än3'¬AϺfÍ¹ŽƒlƤ¶dƒ¾á«’®—« ²ÙU+7Ù Ñ­n´AtúC„pÝŒ › ïb/´QÎv¡µzMÚ»‘ :¿±n²1Ôs²AÃ>¬@u.ë`c©æ`Ûc¡÷BÓ¶éÁÝ‚mÔæm’ØæsÖÁ6Åz MñâÚømÃ;«`v¬/z®‹m:L“ØÆüXÄåƒmH!˜L»Ùf¢l¶)ãZ=ئ¤¬+àmÙzÀ ºV[ܘÛÖVÐM©ï®Ft“Îù ›b¥ݤ{ÀMø)óI7Qʉ#ºI;3E7êäô;èÖðµ6ì c2Æݨ»÷®¢uu{tC¬?GÑ:;€Å7èÒ{ò¡ì®_€ƒÎÝ_E€£ž®pEé×'Ç!×']ÚA8-ëO„£®yá¨ËháËcá¨[³ õr3ˆãç,·NBœv­nÆA÷êMk@±YR ÊA¯e9(×X“j}øxù #ä qMŽrˆÝVKk/¼J@ºZ=‡6‚qÐm& ÆA÷‹yÁ8ÄF³Œƒ^å²kd\[Øhä+mä€t½Ükw;ó cN(A®ÝÑ9êîÍê 9„,% ÈQw÷‚µ•r@ޱæW  ÷Xcø{Í1ÈéÁ6r㌠'}u%7ä³”ÓSÚ +ÊñwTìA9ncM5(§Ó¬3(Çü¨få˜BæH"åÚÍÛ‹rʸ:Ê)+k ÊQûª‚yX= ‡˜­VrÂʲ€œŠÁ±S,¯€œ´Õ œ0TÊ“rZ6 œtA9êv-ù¤\E~.ïƒrˆÍÜv‡JÚÊqÎåƒrŒå9ƒrÐ[rSŽ:õ£CEÈì2ê¤u»C¥.ãìP+«rF‡Ê!Ù=˜(']ÎUËzk#ÊA£¸FPŽº{§”cLì¿(G=[ ÊqÍê¾.(Ç/¬e·¨Úµº[Th”ÀÙ¢Ö{L”ƒÆ-«¬É*äPÂ:å qqïµ%^—ý¤\ +Ûå”KØ µ!—-e”K¸ü[ß”KAb§~Ÿ_A.£šm·¨Ð¥_c¹ €³GE Ÿ¸{TèQzȱçpmȱ/™»I•.»I…žÉﯠB-í&µ±Ÿr0:åðû*ù¤b³ì6õ±ÆÐ‹¡Ï6U¶±)Ç1ÞÐ8åònP‚rŒÙnSõ”¶ÛT~œŒÃ.Ž´»T¥JŒcz kã˜AË¢K­Âí Æ)ßêÙ¥*'kÆQ¯¶ÛTè”ílS™Ûµå€œ¨²vŸªZHgŸªXž9ißAN:§UóîS¥ÓîS©gþ¶O­ÙÞÇÉ8ÄäaoÆeú˜8ÈìNz#.³*óF\"ƒl#ºÙ<‡ÚYnÐqÐÍßÄÝ]oı&ýâ0ÄÜ„9â¨sÿéåÓó_MDñ·ò[Bb°ÓÿÕÈÆ¸Ðl‰!Q$¼{Ï9Ó;½•˜˜ pxå„3M *Ÿð&œ!ñV;„3$k-q,ÈhãJ†alÂåC/w庇ØÓt‰pÐS7ÄF\Á‹X oÄ!–[Y8h¤öÄA—¼`b5׌ƒîi7nd4øÕ/Æ!¶ò6¸d\©Ÿ¤îœ$ãÊã<^Œc̼oãÊã^6㨫ŸíÃ8†ÆÁ¸B[å­¾GM޽ÇXöKPŒ{Í1|a}\ˆÓ{YÕnjD8Ñ.Â)ör«Ô³ZŽ»1W½Ç]L«ãtšå .c7긇 *Î#!îaíƒ8&\^7âp÷¤\â ‹÷hŽ8$r«íFî´QêA¡2ÇAµ3ÿ Îöa=ˆ³m–ÄBV/Æqš´ã óZ‡qÔ{Ê7ãX_Ã]d0ޱU[U –£Þ=b@±²Æq«ÔeÖ€Kf¶Ë­2Tv¿NÈ©ûq«ü=õÛ­²üË·ªâôL“¶Û­jÚcV)[Z91¡· rb@?f•º—ãÊÌÛº€?Øì˜Õ\äÄ„u›Uü}­çYd¶ÕãûÚÊq9ÊX§¿`ï“(ÇM`©¿)Ç}šr*³yÌ*·~d» ÇS]eäxb›ÄªeÅîGÈ)Qëq«Lî:J@ŽÉßûíVYD½·ªÂóÌYÛ]Uß“€cíôq’ù¸Uêy!Žõnë˜UêåTâ¨QâëvÌêkŽ¡eµÔo³ª÷ÖÓ3îi9éq›UÅê1«Ô¹³Ê9óºÍ*w±®cV5Ÿ#J”ãW¶Ú/Ê)ek˜Õ,þä”pùöªLÊê+ä¨G ÆéëíU³R‚q‚Ê<^UÚ½k0N9'éû!ĉAw§YÒ±ªÔ}«*~nU SZ[âS»GKÄA;ÌpŒ?Dº1pÔ¹½ùfû8ÄÊœ#§ãÌ9ÇYe]€C¬›óˆ€³‡µ›pJ¹lᘖÓz:[9ˆƒN¥Œ qLï–{ NPqDqÒÎü@œJÄÝ«çÁ8A(õ7ã4M²`uZŒ“ÞS¾‡üBî6±QJ ÆM61é´q“â¼½êÄ× kA9hÛ›’r¨^w[·1‡Õ—WE9õ6r`Úè s,ËVOx÷°1GO9Î:=±…9mr +sйõsCÜϹÁ‹m¯ + p{U’sÜ4ë90‡ EéÛ…¹‰a¶ãUQù Ḻ&‡È¥Ç½SÉ1·ˆ°ãU yÝ]Übǵ;=¾h1Çêñª–ð"+7æ>2¯ +ý°Ø1—Рï~40—pêåxUèž{;œK¨Õv{UÄÖnøs&Ôœ“ïè7çèUÆñªÒv¼*u÷+,8gl\W5º*G£sº¥vs±šŽW}Í1|aÞbÌñ½ÕæøÈiã|ÄíU+Ç«ò©¯ÊßÓ¼½*w1ÏãUyšÙÛFQùúÜ”C +µ^•h6rL8yœä”ð(3 7y¥çãU‘ÈCîë9\k+ûAŽTÃrÔ³¯ r,忆œ(ÓäH¡äfòBu«J9W ÆMÝóõgŒCr®f6.È%Ô^îëtr‰­LÝKìs¹9‡ ¡©:TCë«Ê–íË|P‡’je9±Å:®›°Cy¸æE;V'E~x‡‡¬•’xœf­ÿ ƒÃ‰x¨_6Þ5Ç@Ke]ÌK¼ò(=Ч½š;Ì[øÒ7õÈ‚¤ïØØã.¦5Fp$ècõu/¡vƲÓßáÞÜÍ»÷wxcç…·ëö¤ôð¯ö¢š<àZ'ðnðÔ‹½ ,¶®Ïã_?áqÜàËèr9ö•pN‡{ø´Û¾¢+ù¸W\rÍ †°WH´uc³{˳±‡pOêØs+r»WÚݽÇÎlêÑðèSõ¸ä™NwG›%šlêá÷¹\õÛ£¨÷šcp])|a±T^ÝŸ^ âžÆ8ƒ{Œe¯:qºŠ›{ø˜*ç÷â¶±WwdzܛwwøH®øêî@¤â–VÝœOw‡„³Ü.ð!)»6iƒzå6føµ<—]èC~'ùfi³Ý¦ØG=“Û¹€_ò3ËA?ÑÇY&úQ« ^øÃ ®h˜yž./ñ¸ëÊ?Cà/?ýáÇÏ¿ýËßþó»¯~øéïúèwøå?þðíwûðÑß|õýןýýëïþú‡¯~üæ?}ÿõÇ~Á‡>ý¯ýösä×øÿþ‰ ü€…ë¿/’ÄÅýÃGøòÏøë_ +ÿ~ÿ˜ô4ÿùò«žžáM‘¯à©ücGZ—YIä9uåi¢ùj.ÑȘ1·þâCJO2kd¥:¶fÔÌ>þÊ +Û#PËãL}§ÖmCÝ·F·¯-î’¥ú"Ü Àu§¸.š.¡öâÍ´¨DSãê–q¥Ó”mÁDz€z“•a‘ñüD“ý­|] .’gÊQ³š0íVÕ3FÄ@wÃE‡2fŒAåÎí0ôñÊBhÕÍà=•d/JݰA¬,w2%a µãB –kH])?Ct#!¦ûl¨qó×LtcÐ0 š²U‡ B­uMÓ3§EÕwscƒ¾—qM±ÖbC~©“ •ϬÄöÕöaäORžÚ‘ÄTÓÐ…Mw‰g]úÐX®N]SÝ~ñŒ©™ŸŒØlš·Zõáé¡Öçâìrí1fº5UÁC·Võž91?5½$sGûŒi¹(ׯϘc°/ÒÝs/³uzÞS‡jœòµcJßcôžöÒ»W@Å£zÍ.366Ü’ü± WšÏ•$bw¢NT?Ò7,³ úÏ:­â,cÕóÆ +wS4¯ +¤•Qw’ÈϪy°Ó|èÕ–¼ØPÆú¹ƒ{HÍc¸z¼ ’¸"ôK›4*'ŠÍ -%ZŒ š)ÍÖG *¾ Iñ›WEËM쥳k4qÒ¹çYþÿÉüÙÿJæn~$o"$“õ€zÒƒmB¶\o¢¾–ç‰@ +Y“¢<ç¨7Im{¬‡¤Æûª’â÷´uÔÜ]N7å¡)eÉ7MKãÐ”í¢£Ñi +Íÿ_4E¬x•;MI“V§X™u»qŠ/ÞvœrÏj>8\x£_8Íìîíà•cmN;‹~õ §ˆÁ¤ÌÀ)ôÃJñ´³ëÍíâigW‰u?<…nSˆ>Ê|á¹Z ˜R'+Sèµá0íyÜkÀ:×,…ĪóÅRÄP+XÚéRJ)i¸Þ(e¬­(•öKL(¥þ7Ùõ– ;tK¢àcÿ»Ta°™ûYL·=Iôx¥?”NLC2’Rä£))b˜¢4ÇHHs… )rÛ³@Ê_ž3!ÅgÄoï)¿säR–fOHù3¶ÒÉV»8ŠÛh"éèDwWÉu»sÁ/¤ØE+Ô#¤ó#ýƒ»N­BЩ鍧eû9ŠñiJuÔkbQlÿ6£È2*£rÖÇ(r,Œ +-)Š«nOQäøÙPT¢_þ£¨ù¸$Ø}Ï8”F¸Oã»ÙgœÇvú(Æ¡6ÎüŒ3?¯UDê«á¼¶×JàÑŽÀ!ëÍp†Óïh‡ÏŒý„c8–ÚLà<û +–À!ï-8Ôˆþk4ëpˆ6‹o¸>’¾ñ~iòæ±)ºy‰WwqóèSïNÜ ÇðhÁÍ|4äV½¸yîû6‡Àͳjׂ›YvvÄÍð{g§oæâÈX¿¾F8ÓôÍs:ŒScè¶¾Ÿoö†×7ƒ@ûçyµÚ+zÉ_<+}3@:O‡¼µø†Ò93}c;}ó,=^^éjS$}óìÄIय़"j-f! +—k\áñ{¿Âñ·§¥pȳ…‹ïœ_áXš åž1‡«ãMûÎoÚ<Ñq‡òqB§+¶È™½ç[ÉNKáŒÖÎŽ[OGŽ»3æGçÑÄfçyŒh’8ìqÓ“Æñ4Iã˜ç4޵>Ó8æ™ÄQ¡¾‹qĪ4Ž9è¤qÈíøcœúµe¿Æ¡t[d‡çOôu .çòIèxÓÆ“Îó1À&uŠ£×FZçù“´Nq$÷.ÖyMe&u?ÆHga®B×¾¾‹Ô)vÑéIçaãW:¯ØÒ•Òyæ'?é<Ï+_Jçµ¥¡?¥ó|úmÝ úIÔ¸ÏI׺.Iê<={R§ßtócjÁ©Óo@ºÔ!ób¨óšµfIò=©CöY¨CM»%u¹Æ¥¿³×.Ôñ·m'uüLL7¤Ž9FûùÊ6Mëø3zÒ:üÝm±wrD“Dëø<¡ýµ[d˜ë°•,`¢uú©{­ãÖ«XÇí9úgb¬Jê°¡—B×ìhOêˆË±¤Ž‡¢i¡Ž59Is¬Kë¨QïÅ:®++­cn+­CÖXó׺á{–þZç¥-úfVä¦ë³ß`£øcj²÷gÇiÑzÑ:ä6ëÌê5³Û²Ã:ä¶ÞÌŠÜWYNå~3+>#ÑöÑ:æ^‡V®Ý%­óìÇk¥uÈsbj|\ë·êg–Ñâ¥u¸ÄÑßÐÊ›6ÞÐêù¬V‡Öqœá¨Ñ:Ïþ¦LêŽä®3«×–Å\Kë<û+üͬÚðâœÕº–=XX×ü.G]ó6¡Ÿb]ó“¦óY×Ê´Îÿ¾ÿP'¾ì ­žûŒV9¨glÕ©Õk¶ç›Z=¯>åQ‡$îá£cÊ~c+sc«çÝâUö¬óš¶7¶*¬ð1¬M(u¥ÃY¦E:ì¤conDw§tÜx£Î­ÜœC>é¾Áuà笮ØãC%©£-çM®<­N®¬ÉN꘭'uĨJÇeåM®ÌíM®È[þ›\‡ø“›«Hç¥Û͆t‚ž&¡üK»BçÛÜâ:?gۃγÆÛîAç‡çD«ÐyÖ¹tžçÍ Îd¼I:ÿŒ-}Ð!G¿ù ÃºGtžc– ç<âPçš_EÀpç|¬tÎãŠï9çWxù çpËbŒ +ç|{r`øuN£cÏ9ñm¦ãA‡óX[ºÑ}Ç[Îõ4ŒÎyö·æ)ÎyíëÀèœçÍ·Å…n ïzÿ…ÎKàƒÎ³ØY çqáK鼦]wJçy¶ÛÄA:Ï®Ø,ÒyÍïùHé†úwCKJ7¾AäG:Ô$šEJ7¾aæJ‡¬ñ€S:ÔÖY)ÝÀœÕ5¥C¢E:Ôº¬”.׸Ò!ÇöLèøÓo|å'bÒ¡sñ ûuŽ¥Ÿùy«¤s¸!ûh‘7²E§Déø<ǃ®ûýÐU¡ó4B¥€î÷ƒN¸¿…ZׄÎãˆ~- ó mj:¹á¼$t e¯ò™:¹ëƒNîüôA‹D«tX§'ç~Γ9Öü•®û]sþJ‡ÒÑ7¿"ïq>êÙ,þPçµqVίˆ#z/Rç¹o«ó+jãvî Î³¦o~ÅßÛ¬ókÇ©\o~ÅwNô}¤ŽYêüÊußøŠhí$uÈ:­P‡õ¿Ô!Ï1?êðŸItxI®X䯼gý¯ž§ž:¾zÍo«&uÝ÷µhOê:äªÖyMGŒ¸´Îó¼ó,­óì¯Í]¬óÚíÀH]7¿Iû¯žÇêòK—ìŒÔu{(ãøxž·Mê¼¶xj/užF¯Lê:ê³Î¯^sýÞüêY›¤Yã.&u¨Ùëéû›_‘w…ÎK>èOàHè—ŒjSÞøšk\èqâ¥ãOÇìIêø™tHó*ã+KúÆWä>ÞøŠ%û©ã+n¤ž7¾òy©k¶ˆé,Öa+-}ãk§ÂIw^¯Ó+v§öñQ‡£¯ûùh^QÃSü¤#-ûM¯ÌatJÇsò cTMèHÑŸ–ŽË´7¼"Ïó†Wæößðн+v~¡ãÁ‹V–Ð!÷Ñ?è<iÉ*#ž ˜ÃñXk%s<.V”áZÑ£S9än'•ã¡»ùSg;V%r<·s&rÌÑj&r\vTî;þŸr<ëqjR9ÔV>*‡5ÚŽzü¬E—Êá/žTŽ7,(*8+ü(‡¿­½R9|×~&W¬V/Êñ_RMåp!Xœu¿Ú¤ ‡»u»/*‡CÆWÅU@D•ÃcCR9>Æ}R9üýª—Êac¶7¹b+ïÛ¿µè°]ájf‰”DN¾ä9ÔNô‰TN¾1æ*‡sÜcJMæP³}’9Á„%3™C–6 s¨µv’¹\ã2G/f/Ìñ·µ'süLŒ9d.¾³~™ciìdyŽ‘Ìáòæž…9¨±£O"s| èÈ/s¸ô3Na·GB%2'Ÿ¸×9î½.Å9<–-ósÎc—ñ Ã“cè°!¬Ï„Ž´¬“Ð1ï] ãQ‰y–Ò…5+¥‹ã1‹t\§IJ‡Üâ)Q:æXóW:_Ñl•–?2âª(ÝFCÓ²¥Ûhw^ý“kÅÖá‹+¦UZç_Œøƒž¦þL¯þÑi«'vž¿É4±Ã±œoxõ¬Ûû;ä6¥`‡e÷hq`ð±ç¹Øyö»^±[Ä¿'v /·•Ó+¯ÛêôŠÓßVOìpÏdöÄ{O)Øù¦‘mozõ}æÄÌÄGr…\‰ÝÁhÒgbwÙ›^^š§vtíWt}Äîø]º^vÍï–Œ‚]ó ¿éÕs²Lìš·ì—ðÄ®ùžozõ<{ôÊ¡]óãluzõÚQ{Ó«6¡=í8†ÌªF—õ¦WfyÓ+òŒ·ÙÓNОéU0f…¡gûGz¹´ìuAø¯|K Œ=÷K²²ãMð"'D[a‹X+F( ý{WUÏôœ!1úªß3ç2ÓýtµqÿбÎôê÷Ø´‹AnØñÑ6{ìxɱt¶âš^ÊgzåCÕù7ëð{÷ôÊLãL¯<ÏÄ]¬CŠ€A7ëJµœé•ÿôØuÌ<Í=Ô!;1¸ŒºÁŸÎôŠ„îšÈ¨Áf²%BÙÒ­¹uÔ£Í u,”`Dê›zPÇš/7ê+ó ¯”Ã<®H7ÔðË—¤C~Îí«7êJ0µy\] ­)v†„] ]Lù¦‚Ö¦lÜ¡*J÷Œ°àÍ8ðPSØkë©"g8ò·%Ìq1Õ‰¯JN=\·köxŸ9¿àƒÝV‰{¨`zðâàc@Eõ$_`7H6ˆ }À´£‡Ûæ4ãÅ> è;ü¸‰a0E?  õÙæ…¿÷ ÂÚ^½Sʽj´å~{=`.·3ÑÆÃ63{ ÷4{zÌžŒÙc¤Åþ™3¶‰ökÊ…¿còhÉép臟Ãx´°e9y ¯ŽäðË̸yÃ/à Êú,øaA¢yÖ&“{žå4Ó ¢‚ßžnû8éSìËøêŽÓãÜ%¤,öá÷1­7;û kjàù=û2ç›<~™oùpz¼¦[Mˆ~Zc4¬g 0Q~ÐEüXôÃçààëE¿Ì ~8=ž¦\ÜvzØ‘lÅœ¸”×+§'§ãôy1Õ ÈζÈKüÖHíÃùÇ4Ì_9‘çÙx¾Hæ¬ñS¤¡ô ÁN-9!šH={»ý^ 3RŽAFÇñš¾Ú üæÛŸ¾ÿÓ§÷ÿþðöãç—? ôê‡×/ßüøéãûÿ|yõã/o{÷Ý¿Þ}øù¯o?ýò·Ï¿½{ýò/úö¿^ôçïí’?â?üÿï|¿Nÿ½ù,‰?~ÆíåÕë—7ÿÀ_ÿQø/ëÇ «ù¿7o}yØËœM–‰(ûùë +Õ&ÿ’+NŠº°I_pƒ:f™4r; Är 2'1£©•è48]k”€$ÀZgW,àðx Û Ûn®SN¨‘©ÒümMƒ¿ÑHN$z.v-*‰6-ì’V ‹7™º†8À›èð¨ƒîŸòÆ4b >í^L!Ú5ø ]¾gìeWF·Å­×”£Z}Ó6Kí{ +B·ÕÖ™§kÅÑ:pëÚ+%!е2;;ÛU ƒ¶Æ"Œ½ŸØĸż†ÛÍ69†–é2Ýo¶—h9Í;ÇŠ.ÿÖdÌéÑ 1ŒTÍ€ª­‰p#-i®]×”ùq)Ð 776u”½¦“øbØ]3QU¼¦°yöôuHC; ~ 5 K’ùA!] së\ÓÔJ KÐ.ÝZS’Œ zC³kbÑá¨È©ù½8ÂÓYƒÆÅóìlе–®3üöÄÖ%·ßÊR“ŠkŠÀtîNM7Ë=™Œýà‘ù)ÿB—`îvš[Ã猱:®BÍÒd±*K­Ù–Lv`Vf¯{Ì”ì»N®Bî>7îý“~ŵ˜o³™ì¤¼‰9˜ƒaå^• å=?‰R$PŽºY¥Ú5[Jצßû¬^lµW‹Ñö© ‚¸Òz\e¥1‹:t`üÂÚf´!pv‹šm¶g­ =ªYi›£ +IL²6±$4³ÿ›Ìßý¯dnÑÚæÒhä …µFV|¹AŠ +›³B—HQ¡Ã¦ÀCRÄr‡¤‘+’â÷ ½ImÌtœFvÊCSJ ´š2ú¡)#NÀi +M÷{ѱ<ê¡)i‚|uœâ½b‹7Nñ½¤ôÆ)·¬¤ƒSÀ…ÅþÄiB߈ñà…ƒæà8m¬y2æSÄðÃq +½XiQŠ–ì(¥V +I)ÀR†š®ôÜÁ@JF»@ª'·æ å51T©Ö¨A;HÂGlê1†"”·4d8G¹˜X7Gí=mìâ(³£¶|”YÔ[w¶Et)³ûp”™YG!{‡£ Z¼9ŠX¬£LÿF©c¾1í°6F)í®†QB(ß%«R=¥¶§E¡Ûºã“¢µ€9#]Œc,Ûn‹qÔ©Vgt˜)_ŒcŒlÛŒ«(„c©ROáãqoÀQÒoÀQé¸ÊrT6Àñ‚<á¤ó8…BsÀAãÕG=ôŒ8ƺÀj€ã=BM8êÚ.¾ñëjŽ›oÚ®âxƒL3>醿là ²Õ:n•U8Ë·ZQ¶­;Ü Ó94¸A—’Ê7Ädì6Ü  ä|« iûÅ7ÄR®Åù½@l|ƒÎæsß+׿4f×8èn¯ˆOw¾ÕŽ$hÓG=ÊÅ7†xéæ›tÎ7è˜Ô¼ßƒSw¾AÃIL5¯}Ž1L¸N¸s#5þº§g·ê„£æ¿›p¶f> §PsÀé)Vb¿®Û¬å„æµIÿe„ÓqD8¦È$3„C*ÁoV'\j›N©WòE8e§Btæp„8èœÍ9â˜ãµLgœJÀŽ'ãÅ8ÅRÛŒ“lŽ81(‹qb•qGå*³3Ž:/Æ•Æ'Ô‹qŒÉ$/ÆQ7›fÅ8êlV݇Xîc:㨣qX”ƒÖá=)ÇX´@˜ƒŽ­WÇõ^˜+¬JuPÃ/è2a†9éT.Îé¦2{Æ9êŒ*Ýœ£N½\œc o휣.¥:稧ŒÝ?†ü\ ÓžåC:è–5Í9ê('g4ËÕYWX‘c\¬C¬Ä樃\3ÔA£_ö u¥›íÚ¨+|ÞLŽ:èŒoy’¡ÚKwÒA€ÞIÝŒ|‡tˆõ"øé g2ë&ÒÀ§ôr¡±„¹ÑQGKŽº²Æ›'ë3ë&Ô•5!mÔQ7M¯uˆÕ Se¨£î99ê¨kJê+j‡†ºsCŸ3ú¸P§g×á¨Ó5³;ê¤mNÙ¨S¨gc°P¹ðwÔíÅ:îdy³Nç‰7Ú¬cŠäZ/Ö1•jκ² »Y§ÔËýbÒ3'gµQX¨cBÃD_¨C u›u‚ˬŽ:E(ê‹s£NÒn+Ö‰E)]¬Ómc_¬û]€ –W{ endstream endobj 47 0 obj <>stream +H‰d—;Ò,; +„W0{hgÜz€}#fcŒ=ûwo&ªB­{ŒÿIZ‚O0?}~ûhë#íÛ›kê.‘Z}}þú׿ÿûü3ÿ®X=í†ñÿß6—žcmxÿP·žkY³E½– jíM?ÿ{ÖwÚÄbrÌ¡©×Ê9³ÍÜGDí3ÆÌ1­‡s >Ù>ñu‘ûM½F~0 ùAñ¡¶'ˆ ôPë{‚¨B÷Ö,j“†ÅSÛŽéK´FÇRÏÜD-t¾súÀžñm²Ç8Ö÷o,›–ûØPhŸ!ý3 ßÕbûÌ8¤Ùu¬Fm:—aù™&YsÁeøDŸ…ÓjåX>¡gtëï”5pØxbމ©sÂÝ>ÞUá7|YÎé¼5qÚ8ˆc†p W^"$œ™ÚcŽw +ŽÅebúÊ1®gScRÜŽ³Xøþ².ßæƒ.êÒ†ÈWçÓc +µùÊóG›öÎp`ú("ç,œ3‡ÁwÔ3}èyuÏœµp +¸Ótî1K¹FîžÚyÚø¶%Zs¼7^±,£—Ç3É+—>rN(µÍþ„m®œÓ×ð9k lkťᒳ^sÚ`hÍ9Zßc‚cÖBòmáꎔx§0˜¸ž½ÍN5s»dìä\ãa«ÉGW=öm"'!mÂŒ…{€Æ]Í7jFŒ#¡5Ý™«Ð­=‡Èƒnã'|„­Ã$ÇHôÌoGìS7ùûŠQ©Ö·mFÆü +D2ô\òäDK=Öa@Þ8Ö²ý1Tr Ý3{!°bÓ'6uE:j—õ'épZ›ë&l£Û!tïtÒüœ4\èà ðq@݇ߠƒÓbŒ:h@ç€z¦~AǤ\~@G¯¯~@G-ó 9 ƒ9œƒlsÞœãå!‹sÌsœ»8½ çp>òóå=†åŠsˆÃóâœ|;’ópN0N/Ð1ýæœ~[`zqN_†mÎA÷Ùââl³ãÀ/ç wú‚Îì ë:ØtXè eÄ*ÐAÛß!l]»é g[½H½˜y¿¤ƒ >·"õo›IËM:hi:.ÒÑ&®EºÔùÀlÒQ÷¼àC:Úðœé q ½HGÿ\¤£MóAܤ;klÒQglÐåÖ£8—#<Šs{Æøå\šð¢¼œ£öŠäâÑ/ÒÑ‘ˆ‚—tyŸv@§pG_7èI6ä€înŽ‘W] Ã#Ô´ÐA[×:ì7ú¸A‡=—õ:¢Å×l6\ “}]/è’4『$’~“ŽË´8¤£#"騟%I§ˆÐ5çE:Úb;r-ÔAÛR¹PÛóBôCå:蹫у:سöEtôe…:ÀØìê`C:J¡º·a…:êž^<¨£mœš.¥J‘ŽÚoÐÁ4˜Á/è¨C­@G½Ä.ÐÑ6eèÎtÔmúEºÜºG¡.ǸêRï–åE]šv‘¨£Öi‰:.©»3*ÔÑ‘=ìE]ÞçæT²Ž!2HÏÖ1”Vb&„ uyº.Ô1:»Z¡Žz·~I:Æsìb¨HG›˜é-»ÚIÒ¥Žq‘.ó¤@—j»#A— úGI—«lødÂR£þ)Ð¥n6¯2P⌸@G[³è¨Õ´@½‘V˜£Å–æ 'ñöbŽZÇE9˜PŽ­¢µŽ(ÊQ÷Ô儹 +rüݲÛKÝü‚\®éV”&lÓ¢5 +œ‹r´­)E9®Ñvw””£YàÊñx¤çC¹ô—xQ:<®¢œL8ÆWQÚÆOç*LÆ¥å`cÆå 7Á6ädÙM.ÈÁ–Å×K9èÁ—â¥ôB pQ¶0“¢œpA¢ßÔ;”œ£ÎR}×o 9hÌ/ÈÁߌ‚47 ròô ¿£-²NÜ”“§y)íšæÁm#_º9ñ¹/æ¨¥Í s´µ| 7æÎsÔ}ꅹܻka.Ç$r7æöœõ‹¹4™æ¨ç&EbŽÇ›>/ÌÁfîëÅ\^(*òsŒ‘°¸0Û”n…9y€ûr.cOåâãÓeç Uì€äYèæCg.ѲA‘ Kí~.Se÷³$Ý&Í*Ò%‰Ú¼H—Ë4)ÒQ·"]êgÉ_Ò!DÇXwIÇô³}¬$³¢i§¤sV‹~w¯ŽàÊÜyX-ëéVÉ:æMJ¼v°!ÖN÷Š”šðAÁŽù·›ÓvÌËyšWæ/«ˆvÔ-!u`Ç5={ÃŽiÛˆvÌù1oØ­„¿ì_·uºWhtw÷ÊôoK_ØÑe2µ`GÈy/;G‘àãt¯˜ ÂÌ‚3r%¹ì‚­‰Î‚]d§{ ¾™qWt̼–U߆œûðòœ?ÄnØábÙÎìÚËåv”ë7ì@LÛ¢âƒíÿðÅM;äQ§{e®y‡vه̛vì]Öé^SËé^©g¾f?´cŽûé^É%ãÐÜ´÷é^Ïí„ýÇ ;nÝåÀŽCNI·g\Ýkšìt¯Ü´Ùé^F~w¯t¤zu¯¼Om«X‡3A7ëà›ÑO÷JÀ.Y…:FÛž_Ô9QÓ½Pç|ßõt¯¸Æõ´c…:„–÷BÙ(ꨑ1ê˜(m#•¨KÔŒƒ:&Gër¡¶§y¥ô°"çƒßÿ $DÖ…:l#:ãTuuMúY®±bT»i£ì+~pÇÙHßÓÂrv—ý™<¬0ýE<Z†Ï‹<‰á‡yLO4ZÔÃÉìx±ÇE"þÁ=WÎÚÜÃWlŒ¼à£apô/ù_Ͷc£m?…Ö5 ¹ØG4žâ}Ø"¹é‡ûŸ+füâq´r¡§ÖÃÓ‰¤<µRtÚºk=¬gót´Rl{Š=€›—p{Y—ý´´pßôÓÑ>8º:ZTj§¡%¨Û¡~ ånhQ–™ž~SGÆâ†Ÿ‘kqÃÏP ²ôyá‡VD §~»5¹ûY¶33!ºá÷´7/ûØñ¬¿ì3”BÞN¥Ç¾‹HyÙ‡ß=RöѶÉ;³ÆfŸ±)ÉÐ9ðƒ­ÙO¥Ç1+ãmÓ/çì÷ç¥Mºs/éÝ~$ýpœ¾öóSôƒ'éýjhq›O·+=8Ĥߕ"Þv“»+½Ä°žJ‘—Uãþóoâ:ö3ððˆõ]`çöò< Hæ<ýgÚÛîï +mßšþMz¹ìêqAøUþ¥Ǽ_’•do‚,Ä ¢í,ÄlÙä…Þ>UEN÷ðAmøTÿ$g†ìþØu1PZ@©gog¿‡?ùFÃ0ÈÀHÃ;¾Àf@~î¿}óùË÷ßùøë§çÏ_@èÕŸ_?¾ýáËçŸþõxõÃOÏ¿}xûó‡O?þõùËOÿúÛ‡×o8èÍô§ï×?â?üû¾à#>Öï¾JâñG{¼zýx÷Ï=jšú]ƒþ²‡Íå?ïžm±p-ÖˆH?ªî—ª È¡.åÞÐÝtiô ,æÑÇ:®ÆœS˜GÉ9íì†f6¦]Ÿ{FEŽ”¢Æ9@Gò[ºI¯ûNs(A梟+“,Ša ¯¼ZÐPí5ŠmÖIc"íÏÊçMxY?ñ.×ÜÌd¥ëc#=hK PÂ2©Dßžêä*AM¨¶«ðr¸ôbd ÅÈ@c·‘®Y#(XyGêåô•„÷yt^`ɧÛoMëLQÔoàÏ-ðÆŠEn ³Nòºf˜ú{´€Ï•:Ï¡«£ÓCÖ6!{Ruõ¼÷ ÁZ—B½’Á»¡šƒ‡HQë´¤JÖ÷¤ÎK‡¯û3qt3;Òqvið“AO–—¦;lÁ¸[CN Ñ貞Bàí ]IÆž1•kRIlÀýºÆÄ¢S’» .ºÔ +š±js†’aucеOº;)å7£8íÝp7òd{—)â¢JÙMÝH…'bß_­t¦:îüõ& ³:±µ\S:a›É¾kJS}X¡ºÓXm9–HäMØGíšØ€ñÖÒÞF¶¼’zÌ(‹Î¶Š?óÀ,uxƺXAý–n—Rvu ³x»dÖ²´pÔ§ÊH攤§3³kãÏ‘¯~M©½*¦4P9DÎá·f!OËjÅ2wOkóFœÕ‰HY; Žî» \¢PG+¹ÖEj ˇ:å,²±ùyÿÿ"ûíÿDö+”ê„Ëê·‘oß¾yÿþ÷_þöë—g>ò`{‹¢î ߸î@ƒoä©7‡odSWNøpJª_ò-D‡/ùÖËI_Ä'§oä—¾ø=Hßè—U5G^ÁÕLM«yG0c¼µ/³ïO7‚£²ïD0bYënóšÁÑ ÞŒõÙ7ƒ¹k%Ý U5áwãkKŒ7c;âêðƒ!!Orc0‚èßÁ1þ¼ùº!Üõ!ÕÂÝiêaªªõåEœÀ‚[Õ Ì@ˆÙ ŒÀ\H6·‚†®'0©L0´ÐzA”ðÔVqG©ÏÚü¥”‰»ñ—±:‡ñWZ \ü¥æ'ßù‹ìO6þRÏrᗪ烾 5颯/°èKtS;}õàÖ.úrH Õè«)3ôU¬%£¯S»Ñ—K.Ì|¹5Fƒo£Y(ÍàË©-ôe&u¡rÑ·í‹ÀèËÔ“‡¸Ñ—ùY ¾P½‡/í˜ Ñ ¾ˆÅêìe„ì쥎ùdo\geì¥nÑÙK å½<9†^jÀ^è¦%z¯n¹¼×HïËÚîÅ;êT«ñ:Ì”Þ1–g»xWQ +ÃhG•z:h‡Ò;J¦ÿ;ê"í°«,Ë™ v“G1ØIçƒu +É-ÖAc…j¬£t7Ö1Æ+àb×4T›uÔµÝQÇï«9ê´aÅIflS¯ lÓLN=P'ôCµt‡lÐC - +ôê¥6‡3©ŸÛÐ+ÒËI=<¨S뫞éžÞ†[‘wÕ?ÓÓU]µú«E½ ¶¬°‡3©x~.É_\\¢mþ¡Èê…lìXÔÃkð;õpæÛ¢Žуz8Ê©“z¸jI—GO5.ê…Ïʃ'¿]\Éå8©';õäËKé™Ö€+»íÌÃ…Â]ó­ìnœ4æÉ„óä+~Í·k‰Á<Ù®ìó­}ÙF%£ž=bSРžÙuŸoÍ—Ö|+;Ä5ßjÉÐ÷ùV™L}Í·v¬†¬=UI–œ¸`OåTÓšoƒyRÏÊ/ìã­j4 )ƒz2kšÐSY÷´·òù'ô 2m·f÷¼AÏúe1ÏLËÇ`ž1éгeÜšneSd“yf»§[Ÿ‘=¹oÌ“O÷džìÃd¶ÑmOžh§hÄè8ˆ';ä x¸8ˆ:';Ø>ðd'³ð¼:³NÞé‘hÐàÙ®m¼³e[œÀój[&ðd7ë›<ùª­;€§5ܘš x²³É¾ <88:€g3vGױϘÓêk‚ <¯ž´Qð<œµRN?–¼ó•¿œßx‡ïPcðpd]x8ØbÚ‡³Çèðp´ØúžžœÀó_F[ìÐLÔ¼ÃÉÚÎ;œTY^¼ÃA|eòÎCÊ•wòQ8xþtNàa·`3è"ž|Ùn¿A<¯ÌÆ#žLïÊF<ùœì ÞZbOv*a#ž}:…“xöˆuó Þx¥nÄ3_l“x²KŒ“xŠ®´²_l¦žñì\C˜ÄS™ôØ7âácÁ8‰çúžÈ³ ~Cžª´ùr"3ø¸˜‡í¢Æ¿ óTíYòô`žA¦öÉ<³íX̳–±w@o@§Nè”\Ù gë8?¡'Ûu?¡g¶­¹C2͹îB_1Mè5©·„^“†lûxÛž¸Z}>±‡é«³{4È!îácXã-]Ur “{ØóÚ¸§þ,kºå‘šûÒy²ñjqOË6+íÁ=5¯36îa‡\vîU» Âä^ÕUW×x‹ÝuÂî ®†É=%Í—°¸GB¿s¯¡Z¾Œ·Ø”Å=5f5]¸×5¸PUîÖ…´ËxÛu…ö]çuÉ1ƒ÷:i2lNî±:Gû€{Xu÷Ü„ôÁ=~2uqÏÑ?ñ2Þâ(¡ä øø)åã-Ξòe¼õ䑸lP);ø4ÜÔ5Þší×x+»Ø wŸ-°Æ[¯AÌ`9À‡™]ÞÁ‡/¹5Þ®%ðy (;÷ôe•÷ôÄzã…}¼5_\ã­>êâoõ»kûx«L†¶Æ[«Ö?±G•€£{”SNk¼l«¯“z*?MEWêµ#Uõš®ü°Æ[êºj^»RË®{ePO”“z²›äÜ…zjUéI=£N^Ô•Ü?'õ𥾦[™­Ç ½f }=j´gS©êQÕ>”¾´ž3­'öœddˆ;÷púÒMøèˆ\RÊ“|8¬q7ôÑY9R”“}8×O›ðS¯Z˜Wú©K:ÂäŸÓ¼ÙlâÔ:|d' œ5‡I@ÚXÚ}ñþÝ›·ßÞ½øîÕ÷ÏþuÿöõŸ^½ÿîÏ~¼|ûµzú?úê‹ãšµso×˓Ϟ=½»ûéûç?¼¥OŽËüÿ/ŠäfíÌ/?˜É¯ù£Ü=¾½üÆžúò“_=ý*þýKûÚûûwo‡ýìþÛ7oÏg·Gß¼úÏý¿o‡ýø“¶)þ@ýIM z¥Sãœo :ªÊ‡~šÛqk;¿ãÏâüù–n¸ýõoîöÚü/Ÿ a[óû‹ïX÷öµ‚Ù¿µùÎw¿þ/ëÉ÷Ö>÷G;ô’A“É¥°¤2ÚØ±pïì +j±K<½|õÚâ?l‹Ïãsvžúß˧£÷òíg­V´Ý~+t!bÙv‚f·H +e\ÞL&žððŒ¬ôy$qsËWS× ¼ÞJ¢O5F‡,;‚‡Xv%Ž/ÃÆ*í ÒS ú#æ"Ì3F†¼?ƒäMÔIEÙ´&Àæø\IdÕPGQ#¯z3#¬²Â@BX¦c‹ƒÓ¹rP\v‰¡,q`ªdvo]¸±bBf§ãRäošš¬¼Cc;ÕëÖTÍæ^K*PŸÎw:ƒ£jÉ;ú-k «I…“uT)äBÓïˆì4ö&žpÜøzSGÓ©ÁÙþíXÙk犓Zº gÝØãÓœ&"¤©¤ís´…Tà‘2{bïHwƒ¥:9rÆ?Œ>sf¼“ I3g”aè5Íœnú®œ^r¤*¸nÏœu4[8s$T8±kÎx'åñÈYHÜ^êÇ#g=Õ%g<ã;ZøÌváŸ3eA=×û–²ÐÆ£gΰŸyæ,TJ@G³’Æ—CAžuÆîQ"ùLZ§‚Ci[ÒT±`L‘v¡4¾fõͥЊµT‰%u¿ån³Á-ô¡_ïFÉ¢9»öÙš72E£ASsU6§XYºçr¾ÃF’Òasë"΂UË!Æž¢ßs?ºŸghȦu´•báÛæM/ $¾˜Í|5‚¤EcÑŒ¨O#çÔ²A×´’àƒnìªA'pXo¨p‰þ'œT4pÂ#KñÈÆ#iŸˆSW~&´C&-†±â5iüd=z&- ++ÁϤEé~EwIZ<Ðx&u{b¨;““¦•¸%- +½\FÒ¢ty¬3iQý˜ê–4QLy&- +«$çLZ,G \’Ƨ½jàL¡Rõa& κ¦ÚI3β{îLZS¡C¤»OšÕl a“T|˜Mƒ>Œ[Ž+ ÌlrЕïÔmž¤‡8Z!‘²¦".æ]Ø•êišüÈ—´‡'ÇÔnL­œ¯”–ฉº†¤=¸§¹(mP‘ø ò§Ò™âC/;i!4·wÚ~ïÄk꣘]Zve©´‚¾iÏzrõH‰©ñ†RŠK}$i9FŒœý \.¿¡-P2Òêë3mŸ;€I¥Í´£J›i8¶æ5mQË:gÚ°Cä3oÒ3Íç-oÒ3Ù÷™7Ó3Ôþ™7é™ò ßÕ¶b×qD¿àüÃy H +}¯îGÉä!ab›‘Œä8™YBäï³ê²zï3’Œ‘5ZÓ]»º.«V݆ÍäŒÒO„Íô ø‚aS=Ss½ ›ê,¸;lÜa3A£u| +› š6ް™¢AcDØ´+:™a3²Í>"6ȯ¤[n° ŸÏaƒÚÁ¦›wØpVî2l¦V½ ›*$Uå ›)$Ͷ§Âz+$ÐãfIkÄÍ$’–Ð)n%ä&ãf ôÁ¸©Fš7Qûë·—¬®ÿþéûÿ<þˆmî#º/¶Ýëü‹Ë÷ÿÕßLÿÍ«Ÿ~ý…vž½~||óðþݵ<¿¤ëKü¹ÿ|ù„ÿn–­¯¯Z¶h½hyMð:¬äªøhš]K›èÝ´i0›Ág߀iãÑ|ûá¢+•`Hën%Ð=öD!*Iù|)å"ÚUÈ«•&šýÐaë×ÎHÛŽKÖ¿ñEaÐëtà}íA¢èÏŠ/cm†cDA“»q…Ó¬CáIXGË;Øt$8U‚¢óÏ­¹%aÅé²}†nt¨N“•0P²Ðê¯Þnw‡ÉCýö±²ÝõIlpÒn5péfëF0Ì D æJË«4÷W϶ÚÂÀŒ³)Ô³¹VÐÐ_õà;s-'íÜ\NŸ{ œ +¤ÛƒYwVQ5#E +öj®¼R#œVœe ãìW=×”[Ö#‹GMáÙeA¬˜AR Ýîh¯ÉLsIXj6̪4Œú×ÝñÁpn5/Wëü–ts?Îtx¢XÕÊ‹¬µ.„jd(ZŠGûˆÐödUj :ÀljÄá6™`põˆ³Ê-ÀQĬ­ÛÜòö 0*ú?•mTk-Œî¸4ŒŽ¸`Ó-h_‹`Ú+ÕÒE!×Gâ}¼jÅ}ŒÞ!tkÆc&ÖQKCî§Ö&%¾H-œ²7šîT9ÜÂèòïº%íæ/9 t—gQ^Òã¬åè§hß®’¦Ðj¢ÍéÔ4Šw)j³ò]I…‚wiîu{°V@ªœò³tq܈DmlSø)Ò`d‰,8DÂü‚<Ñ7†‹|›HpeÓìjÜ:NÔmf›6¥¼³32 &³ŸÎì(B Fv&0Bá˜SæTGiæÉ£˜xvœ†d„°¯ÝñšíáB;éï7g¼GM ¿/.‘PŸ'Å‚å‚÷'x+ÝÊ©l+e‰ LÝšDX„tÑ–~šiF +¢â÷ ®Óã:óI¹ÝF³H¨°Pö„)àXÖ ÔÜR©*,â¾YåîÉ*šÅ{´‡u+ê ´iO@é¦=ëë &1˜ƒŽúX½jKA­Òˆ€¬@PJùi­ØÈÍLv)+ŒâZgKë+¥Çí½*qÇÊjñ¥±) p­¬aÑ&º »áÃl•µ5œKF=Yr#pá)°¿auVQPÛæ,‹³z°Á[ÈJPŽ‚…-[Gh …;GLõ1«K”†°2Ž”3gäØ×IN[Û’µkÐv‚ÛÍKë–] °Z_q´-rT_ M ¬¹ä}hP†¥°†ƒDf‡ã(kx¬ÂW­ÎOÉ*GP20SdPàŸ·æ€¡²—Îçq\H4xÜ@‚‘j½/B„YÍlŒ•Ö.‹œÚ0·«ô7¹h –j€4v½lÛÞê½1;C(k·× +ù¤ŽÕ£½Iw-ìíÆ'`¥3¬º3ÇA¿^NÛß\£aï8½ïœ«êM(â§Šô·q¿äÁoUßC–ÎBfÀy\‰ /!˜û‰¯ÖbTJ޳%1¯ZصA,ï¼&4Vލr Ñ5Sì®ö<„/Q Ʊ $¬–… ×ß&&ÆÌ @-‘>!—à;…'Ñ6Ca耫 · MÓ^¹Ô‚GF–×¶pÆ\ŒÂ*0gMܹÐ(mˆÈÄ»0v{mO¿)«ò¾—‹€ñÇbk¬+ +N"ȾŠ>‘<¾ÄÖ8S¥SÂ%ˆ÷VdlbÉšÂÇŠy5–Jy–f$ µƒ:tïB£ý}à`‹½9}n„Nè]0 +76,<ÛêöÕ+`aÃæ÷ÅXù†ÇµD-±ÚЬ­rm)òû*=Éä«y^¿B÷ô­{4”40„ÊcNCɳ“G|_ÄžW7åÍœ£°äo(Ÿ»€ùºÆÎιQ +í¶%›‹Âƒ~*—´&Ÿ[N´…j×§ŠfTõò#ˆï‰xžS" «Î~ˆe™ådbÃs[¥†å²· ³`㜋ò¡×­—ÙÑËîÛCUBÄw¨]Š5Ê…£½¬‚·xKĶÎ9²Û“ç4}öO7öèÃê&¢Dùy.LŠV†kêj`¦R±8YókHÀS·°¶g)ˆ-$ ?Ö¦[I²AŽoÌrèJŸ-+Ûœþªª^¨“Ø÷ŠÎaS"߃¢Îu£Ê*0’b‹«ˆê ZîÌ +öÈ1ÆQ”¦pÝÉCUu w*½´½Ê§=Ð ˜WEIzk]_, +D]ݽ µmà85Ö©0 ¸UuxàÁ‘}xw\ký$ “Ê +l+Xtqaõ9b ÌÄ4"ÜÈ,h´(JG·°?ÂÍ*s®{3SYíV3ˆ……Ñ«w@|—¹š®ŸJ>Ýï™Îök¹óh¯ß*aceTÝøý„£T%ÓÕ_^Z€ü”x±å¹‡·Û´ëYyψœb7ËrP¶Þ*ˆ\-n‘&ºì§5ôXÎr?©eSöw÷6ë©â6\ÓPf Ø:×äLªÅ\áf=/ƒ +–Ïmôï.?«‰2 Ñ¥äŽ^zØ0÷Ù&Þgà^{N`)“ E£Âñäi<[¬— Þz®aÍHypŽ«ìz Ü÷x׸6'¯2{Ï)õd•6ëÞ< +wŸ'ß Ç^_ÖõÙóëýßn~úÝË?ΟþðøîÕ‡O¿þòã›ßxtðÕûþëñ~öúññÍÃûwWC¯€Ÿ_Òõ%þܾ|Â_ùšì¿ûÿáÂÿôùÚ®¾þýéúNOþåòÄš¯³è\GAkp\fÁCøîNxÊô3î‰WÍŸ.Ø:ÖÐuÅÚ€%·ão¯jϤë©N Z§à‡Á ú+ŒA•,÷oÔ4† ²öÖ«mÕ®ã~Áù‡ý°sŸéG[ä!!!!`E"„`ŽL.`=8¾¿OUuϾ®£ÉÆ •{Ïšé®®®^¥škê¾+aöÛYc¶/äì7˜4!ùY±j½ŠÃ…_à©YËz°.¹"vå+`v~; ßÙa Ûa¨¥©˜!úK±ð§`¥ÇÒ7@HüˆÒк1s0_:ÁÅèN céŨi©%ƒ„Ót.$‘RO^_t°tzŸ)ö&ñ¤‡CV×€Õ\d v\šN,x},ï˜å@ ,5žzŒV3ÿ$£Ö“éŒ}iøëçN(êÀÇéBn”Vw7¸Ó„;Á3Ÿ•ŽGô’ª—8ýyª¹õc +ÐÏØ ß=ùCG²0§§dÐõ8È%ͯ5ç¬ÖêƒPYÕüñ‹•&ª<¾ì’õétÅ3ÆP™WÎ:§|‰×ÁSzzp ¨Áê+ÕaÎ^Ç&YŒ²,žlÔH€t Ÿ(W½sv*”j*† °ˆm\™\êu[Y®×q@ñb"ÓWôDªQîÛ>>÷“Y×£{ÐÕX~Ð9;ðð¼~‰Ý¡¡p\õü~ôî¤Ä¥ÐKŽŽß2Ü÷;ÛRRøX'(ÞRÁ<ÂÔ”©ÂŽ©òw%ªeºmøŒ¿¸º4¸ˆÕýèC«º,×ia*s]ü-×rK¤VŽ{Á†ø°:HÌÏŸ…³/8÷#L€Áîi(¬Š’0É#áÒ†_U)"b‹{{ÀHI+Š]ä‰TÞ‚¬#躼#5Øo'—&LM…Ò¢t®5ßSç‚öÝÅŽr‚ߊ5ô·I(”,Æo¦%Œ‚ᢠ+Ù²VV$`ìÛÖ®²áù5{‹àú˜áWeî‹|ÄaÆ>‘ö¸SÛ à‹ÓUKxJMÓ¯š[Q/-«GlJ^+¾ëH!ú…\Ìk ¥ðÜC±¬ŒwHdåÝ“¿•wóÆÛ=+cvõ=WåiE;άS±€š«”'–Û’%9?|Ùç[=£ŽÊg` 6ŽQ×P¨1Š?£e¯XÛšHI³ÈãCÊ^ÇïA™Èv³/†Þš ãI:è7bGuY)y±ÆEÍ4‹‘²M:xñJ^ã²Õg¥§ “ÜkY›/bžG›Ê#´¢òc‡¯ýTÒ1É*kËÕ_8'ÒÖN´,*Sb òÆÇýš?_mS”Yõ\+;ůŸ[ë)ý{ÊTÕŸ:KR²1¬Š)ÙHŠÑÜ4ß¹b>ÍÔ=™Æ|)b›[ßÉ®Ò ¼@ JË +ïZ8ËúŒrs+zúªäy:Ì Õö§ÏA[–¼•9]ÈûrÖ>¾ªòS8~éi!mÜ@ZL8wš¨±¡ÔNPqÁL(“ΆþŒžÄ³»øí¼/HA¼8³gUŸå•X)!tÊÕr–÷&‹‘¨ò»—¦c™öºïæ/ñs”ûXwz®œ¶O¥s™ûš{Åî­„ûËÆúУ‘~óYmùÐÃkéµ[¾yr8ºdR2 "oSj»Æ¹ÿ.¸|ŸrØÙ*|CrbjrW.òïs_؉µ!ïE“Ú“W&Ö<œJ_Y|°Lð¶[·`$¶ÉÚjéœÑ#ÅÔ#•ÝÞH‚s¬y0öÙ}&!ø¦Äÿ”‚Ãé ¨P¢tc2%ÓYùþP9/s ÌG|ÿ"Y‰õîéÓõ‘ÚÎø‡Fã›æ ½Ž;ñ…¦=l¾T‚ÃbÝ—õ#x Ë›ˆå"\`}•â®ëêO÷0Ú{mÄL#øŠtS$á "6›«l‹Qy4>2«æš{8§åñ`=Á³úx¬¿à½Â ¾âЃº•ƒÑñ”9œG³ëõ‹sNUç"Í~.úºŠ[h XHÛKTß ýrî¡ÅMÙ†7G˱(à KÛ¸%_x¨ôãß<Ùé‹/Ooÿzó§_}õ»õß~xÿõ?ý÷_þöÇ¿ûჃ_÷ϸ¿øæÃ‡o¿ÿîýIè ð©|ù”N_á¿·¿Ðƒž¤Uø÷íÿð—ßãÿôË©þxúÛßÓé=#ÿBî¨ÏÆ¢#­>°Aœd—7ü‡[$Ûc4~ÿˆ\~úáé׼П « l4Æ8¬K:±ù,кڸ~dimÅØ¡®ºI¦®êóØ å¼À‘5òù²Âp*êS^Õ$ +Üh3†ÙíýiÌj¨ÊÜ$uû±3‰xZSÓÝ1Ëõ^ïÝ>µlP- {˜M +x ÂÙNa«I +†ž +>²y3F¤ßËè4£§W›;¶e‹ å`Ÿ½\ÏqÀ¬å1©«§bCÉ[>J9Ëuìs€kgΕ¥ïš‡ è\hÎ5—ÀŽnå.X4›˜c*Ô-8^õšbàÜÀc¤±;¨G.`©^ñ÷)•ûØújdOøðùë x1l o¨x%UŠÃBròwYÜ€£8æe pç öÔÛXŒ¸~wjòåöî*ì„_bQ±ÚR|Œ&Ä1Ì©áXnv!"¤¹8¿Íâ÷ õðß3qV÷&VÍ®@?)ë>Ó-;7`c^(-´<¸À/ÍŸ²,çÒ¸¨¥ý„ÍyŒŒÙ/LÞ4Àø+c§kMÍW‚)È•á¬_Eî"ô Áº0¥­RlÜ`­º¬s‹lÄ8óhsnº‡ +Ð\®@¼ 6ä +ôÄUcAêñ°Ù¹oàÖ «/°Žºè½o¡„‚“Ç™ˆÝc•ˆ½"â6)°ËMì l4’Þ'÷;Eìþ2‘–¬•;E¼Á#,Aw Lo^ãá´Ò˜û€°ºlf.·¥·kПõ´nc»87ïRp ¦:òù€ w÷—Vk‘®‘#±Ôd¸k;ÿ4 -hõü}C:£•Ñ„`ž}Ø0z9÷»/amXiÿ>c1¸ý÷Ñ·±`‘ÖÆÅ혠­ž]ñ†9ßÖ.—•Ý…MSŒò +Vxm°‹°ðachïz÷s¹ì²EÌòŸèÞÅ…i¯‘Ù¤Tìœýc¨ÜÒ KÝë\îñ/ °v®cQØ¥±ÈþÍóëW#å–)t0™´¢°9À/ŭܘ´/÷±ÃÓpÎhŽÝS²ö§^Çm–épÉkíךöK€{LL®:ô`åʵÞÅÒõ¸|ú=X¹ï¶ó.¾Ö:8³L<@wÀ~׿U p'Q¼‰ù¶ªþ÷Náô_9 +²!ã=.y\’ß Þ¿ø*òØ4,pæ +9{qåwÖÜEªn«íØÁÖtµÁÒú¸èmØC¬3?•lÝAcÌËoãEÅ÷P É…läórzXó¯7\0ÛÌîb! ­íÜ]|¿À]+°á>Ö¨ÀŠežâòÿ§»ÜV,»0üýû&2èP¥’.ív.&$ 6!Ó39ÁÌ…ccòöùKU%i­í`ŒÛµµ¤:þµ¡n·5¯6N®¥5PÅ>¦MÕaÍÓKèÂ+v³Lˆþ8WX­H¾}¹ã*)»íTº†åÝà¬aÎGi&Ýp®oÍÒb¶Är)‰×[7U¢E` ‘AÆå¨Í:÷ÀŠoí×Ò1MµŒ'ÊJ_L¶>?A´mº§:ðQÜ~ªŽ¾ÚKîSA\ N÷¨‹­@á—© ð.|¹AxkÝà‚Ù³°µÜ ë°`³!®9¥¶~Û¼•bÎñù9„&,½”'ˆ×ñ>`aŽÞrž*_‘l½#>¯þsî•=1—ZìÙ4ð14¨Ïw¬‹*Å­äE”V¹â×¼ƒöô$Dw¥:üÞ yÔ¹¥é`Ñ„ñ~…43 N[{ªVYb^€<¹BÆèÌÅm åâ0[ ¸Z‰Í£Ó¢gu^½@IHÜ`˜þ=EÛY¶',æÚƒÉ966†3rÎa˰¶›á†lÙ¸X¸µ¶>Œ¹Zr6">`Àu.YW[Ê©ø©Ñ5¨Ò=e$–)­ˆ$þ¡JlÍÙA»£ëîÜÀlæ"ýžº¶póÈÌTTXð'¹g;þÍ\…¤’7ãÃ×XȲí£û–ŠDεŷ|ËÄŸÒNh+ú)Õ~³EìJ$reb_üZZ“CÓé5–D/PYó@ÅoŽxg¿ÖùÐæ®ÖNìcÕËÎk;¸V†L5gºkÕ6Yà Éqn#š¬ÇF?e)I]êzBàjŠø½ãn±—Sö;„8E¿AøÝ·ÅútðV[º³Šá–l{$ž Æxfº¢Åï7ž3Ç^[²és@Ý ìªB-0\‹½¨>ÙzÊ©’×x‡|Æfã¹ø©u¦—CLq¸4³ú°TÇ¡‡¿ Ðýº™X‡ˆßo,=EleÌ +ä!·JS,hˆú|Áß_òã+÷dQÓ3ðŸW‡âIŠÛ lÔÒœ¬£vDúÝV¿^½§tvïlM¨=#ØC¶,[KgÕ©6Ží§ ß(ÔWÝ: 0Zß¶¶æ§µ½B\KÖJÑ“„j‘mqùàæÂWø×C”»7\ôIvßž˜¢zÐè׌äU©K Ä}u²GYCrºÓgÍÙƒ¡ÃšÍ~Œu5š;FÀx[/ÖXÛaýÈÄÃðn³!Zˆ è Žåæ +»ä€œ\×V£±Œ5ŽÕg&‰ŽC'Û¾v¢²vÝÀ±*•Qü¹MÌ_ `ûÓSoÞµ ¾¾Dæ’wçÞ—¿¸‡t@甘œÊç Ð弬[0eø br°Y<‣‰Mþ‚ÒêûˆÉ=ÿ5nÀáDô°øXN67É +ʼճ¸0ÌÙQ˜ùg +6I8qHuYË­®"!ëEŸZN”äº8u>:ì17¥IÛìÍyÔÚ®–»:*Fñ z%½y‰áÜ2Û;¤ÁT}ŸS¦_1×µ=¥•Ý]c@‰VÕ_ ."^,ì“—Go+4,ݧtLÞ Çú}~f9ïäÚ¸vŽä1y¯«»øé +vQä,õãI¯Ø•µ +¥R4] +ØêTe×òlÀ‡-M_̹ß-®­8UŸAu,xÕ9³TôEu¤Þ,ƒ€vIsÚêYRíTÊìÌ'1ëJ˜<·ñ?ÍêwÅ+­0ì‰\æÄÐÝP÷SÍ8»ÀÆ{çé”È;çŠK‹l /@ÉÜmÉv%;5åC°%DÎg“#vOŒB¦Öfëźô«Kh˜Æ2›-\3 Èk²º9D‡|ó,"áüdK¾ ^¡ª3‡Â[„7òE†¥Åms+¾àÕa«+‹ÌhŒ 4ªíj«îØ;S«ãÑ,$žpÁÌ}ÞVÕð Ôͳ€µ•~@; ¿Cõ›­*ç5©Ò Ç·/†¹Œz`ƒ»K‡.¾À¯½ÐL). õ!Þ»Å4.XVžãµØËͶBË™,ÍIñ4ìµÇ2‰–[º‡±±Ä.˜Éb‹£=A¬k—ÜtŽ ƒI,¸5ÿþÈÌ›Åç% _- $-Ň´}l¹Ö®XÕr·Mè–¯š¤reH°Á}¹Óž¬e(¤h„¡5P2/0ðEðj;ÌÕ€øyPs*ù€·\mQýnÛ¼ë^ 7٘´˜WÑ CØ] ôXk,ºŸÄÐâcpj„Úl.W¶ôlÛK®GJtƒØæ0"Ö³÷퀭—HLÃx—æðëË%7Ô¹µÛmÇ.ˆU}lÜ p^N +Ûœ‡‹õc{Î|À¨ÌÙ|³U©>+¥’-™ºŒ˜’ž#Ø×)ˆOž­[…C]°%·Xá†ìÅ*+—i«Ë4 +´u:XÔ¼S¯–ØDši´rÅß ªLU" tx¾úï½é”rY€þ˜]oç5dT›CQðÍ7,î1'ÛeiÕK7˜ìÉq€cu &Rtè–}N®ÿW ’¢æl“²ã™ÝwìäfË€ÁB6’dUþÉf1Eám¦ÖÆ3V~ä°»#™š÷Œ'ßGPð¨^`` +0÷q‰b"Õ2—Ü+,[î)Œ¨p’~³Eã¡Yµ*â\´ë:Ê<Ó ½Ì|ñJöý"W·ÅÇr÷š)ñ¶§'èÛ~ýõË×/¿øâwýo¿ýüáËïüÏ?ÿôÝ?|üþ³Á/?þã_Ÿ/ø—_þüݧ“>€ô«—ôøÿ~óÓËøÏWø7?Òüç›ÿâ~?þ ôÓƒxüå¯éñA­ÿ¬Lân{$¯v0xV +ZÁÜ;¿¿aB©"Tïo‡ü¼ùŒ/ÿñEš4„û£vF¡óÔÁ(Ò +Nÿ€‹ÛÿØ®škér–J‡àl`ÝÛ@ÏròOb„AT½¯gW¥csm ’xL©ÿõÏ+:xí=,@Tÿ« -%ðz ËĦ$":ý>V‚òþæywÞî¦JPõ¹€#Øéÿ~ûªºáŒWkõ–£™NsÁ :¡9a,9ü–™¸³ðºG 9Ñ'á£Âµ[êcéÞÊ)V÷}ÅP~ãiÙ;Aô?@üœIÃh—0€’¦榶‡õ•ËÔÀüŒÃêwr¢H–UrßP›à®Áàê¸ïÎW˜ú®5**¨ƒ–]>nؤé¨çu®ì0À&çÃX>:Ì-ÜIE®õ9ƤÞN%Kü)T5… â3åeÛA!k8ß{fØ•¶û÷Žzï€1sÕ+†{Êž¦4@øv‚Îs}] cA—½éË«‡Q¼,¢q º>Ïýà°ºÁ-³Ÿàæ©Rp2À`€ƒ1µÀ 8 p@ÿ €ãV +ñlÌìv¯××+y€âù0Š÷Âàe´’÷£»øÁØù4ø£Ï?^Íù6ÁéZç2©tCÓG¦[[Š|. }õ‰[ƒdÄu9Â7ëèÑH€†ésv€Éû©«Ûq-ú¢Î;/#ˆ3v¼° áuuwÔûûc=jG¾r–ànþ{|]`¥ø~R]‚×ÜVgðªÚ¸Bã^Ÿw¥œF½ßa¬ñxy ìå8/–ãèÀ¤U‘àe‰Ã±Àö®¥zóíUáêúl÷M’ÑÊ”,‰s:(‡Äañ²ðõf¦µöœ¹ÿZWÐy¬¼mÕãÛj­Ï=™ÂœdúnðS/ÙàÄ#ò½j PظZv9WÖ nP>ìÝbs蝹÷¨RtaƒxH øXì›Ç´MÅ44A¡âêÊ2Œ&¿ƒU0v^á~åã᳿m»uŒpuÚ{ЮÏz D“–›ÖxÄ—ï­I† \¤¿a¼XÔ$¯•f9 ³X0j›`Ó·Ž={ûöË^Þ9Jô¯–Ñ<“¥ô÷™r?ЩlÏ™2ÀµYeôŸZ«P|¦P³ŒÐt‹ÖÀGuf¢s˜léB-çdÓÝpÆöozàGBïÕÞÿ¾P—µwÙ ‡´Kkf+ܪuÙ7ʾ3<ß,xj&fÂ2ùú#…OY‹$ÃÜió:{&˜>AÝßq¿eü0¸Ëê²àªò¯ñ5?ô!có\œFuqõãXŽ|âNÖl*>ÀÕšöèöºÀÉsaH:´™W„KuH3Dec£°àf78Ö‚WXš*Ö®K/§ƒØ\ôaW0_æ~p§´¨9•OSºf… QŽsÍS ·Î€ùVÇu•êD {™DIÂ˨3©à«JV•OØô|,AfæY¡mõkIï7å}Ÿ,&He×|£ +º[@ûe@¨c±g‚¬ +„²s¿\FýÄiૼ#ÔOÁ¢4ÔÏ%øhô“ÄﺗŽ{Æ<< Ö*½Á”ä³ø”™ÑJéìx»"‰ÐâÄ|ÏÂp…Ü6œJ…Ž/FŸ£’(7=À5ë½w ÍŒ‘†gÝN-@¼Š+]îmÓÌ]Þ ÎÍ|ëínŽ’b +<¦–‡¯º­HqD0Ëâ§‚Ç;«ÛöL©3âgrmMpZV0ÁÉ>е´`?á±@‘>Lª"@02O »÷û>,¯îðöÓXj•W ÖkÁ°ñ0}Æ®SŒkµRUkÏÝÕ'ÁH€D*À3]×øâiÃ8RàÇð ûŠy.gXž`Í,T€†Û…½2Ol¯b˜€í¥wÿ,›¼ +–Ø»b.M^î‡{«{­ÕÓ"j+¦ƒ<«n&Ju+ÀpÑçô¹ð^uI’\¡3Ì‹_ç©ÎbßfÎ8W³,/°Â#pÿJ# ¯]•Áæˆî=|WÜ~xÿíëöö®6´N¸“ÏÂ"¸Ïe =ÄÊV¤çnÀ–õs[)JÀ›Ýá3•r…¨éw +Ý2'ð±ïNJð`¢©Ú¨ è…'8S:€”Ã->ý)øŽf®è‰uеòöIkÚt'ÝÊMèg7ïj*ý®4’G£¼LÐå[+hƒOmÞÂ> ÷j(÷KD¨í™ÓÀ‚ökS@醻aÂ2Àéù1dÓ4%¸îŸÞœzr¼’ íéŽÓ¹õ„¢ ²yÀwð¦3€žýÍÜ úá öí–ƒfºSýFf+\–ð¥úàæBû¤ ‚µ¢–¦¯ÈFJVÓ@, ™¤ )%u±1­,èaÇœ“#ÂÒ êSww4‡ŒÊ"¨ZÍa™¹Šê·\ïê +†ù)ØŽS=¼nIÙ›%’’àôË|ÝfyHÊd!Y À³y^4Ác¤³ðßoÿà3’°g R§`ipÊd˶Pê¼.ÍSKµÌÆ„ ³¶Ï¿ƒ¤YF¾Ræ"è%“œœßçiMaðìëû³kÞøýoTÝqy€Óo´ÁqÔÁŠUç§Lš ‹qâüºHçJ£±AýF[µN"1Uëû+T-3ܱ™—Ò“Íìì-€˜oXm§ÚöÔS|+üÑOÁÒ†óõd‚Ë„´§Ç¶~ ȸÒ†”¤į/îW£ ŸYäc£crã¹>2ŦÃÚÙ)5K\›Eİ,ý!Üe¼s"¶Ä)øY 4—û•–ðÇp– Äî¤ÿ0ãþ)T.åþµ™¤Øx€)«qì Û° &p…[†uÇäEwMÇ Ð[fµ§Ž}À§›ÏàiíÜÒšVÐèýØgσ¶Ó?”æspp&ò_…M¼öÝ ÕSPâ`;‚Ç›`ÿ£:#€õ0uúX‹$}¡™àÉ[½24âè¯f>Èqû=éWŒ‰êa¶y‚Ûúû¨½>µi8m2€ á@V«:·½ ’iô£¶ŸãZ;ü¯,>1üT"¿æjt!äNˆuKðé”5œ6®ï{qÈ䃘”T¤y2Õ ù¸¬oÑ`·+ôW7ƒFJ;oÖ"ø1î^yeqTõÍôÁTÖW6Œ{&m—ÝŽûeÐj&Úqô] +öæŒö`ðnqò\û,Üßh‘+‘P’G»AÀl'QåÊ»¾][b=Ê6s·+¥S‹AϨöO÷ô1:4B·;qàVøN¹•ÑnÞR¡^ÀÏÀµ lfc½¥ûŒ[ y[,˜d3Õ2V¢&ùØC*™ëMº¹¸y- r-ð’Þ”àêƒ~,àÑÅYýk­{ŽsfO.j³€­M2šìvÓ¿À%œrÚ/[Ö“ÐbéZN LîÁXá°`µ\ZÍŠ[|Ú+Aø2¬÷ÛZûë[?UF@ÂPáÓî ¦>‚ί.¸TW9ml\Kú¸Gsjz=§½³0À¹Î¸ÿ£»Z’lËQØVjÝá`{\ÓÜÿzZ„Ï˪ždÜTø`ƒ¿'›ìpê'³cÒUžÏ×ú¼üIcxþÙ âüÍ®ï’Õ•sé¿Ä¥òÞÑ*ZÕ§·Òî £¶p…ßÃê¤ðô;äÅœF5¿—,ïý½ìâö@ÓÒ8Ó@zĵ’Ì×…®ÛáC\®ˆ•à ëù7Ø&›È¹÷&­¼àñ3ƒm + V-š‚ ª°À­1ê2µÏ€:Õsp*ÀQhaSÚ´§+n Ò®$*èl3±=m +@ÞÀór’ä¾6®\ª2ÿ¼€ƒiSüÝÞç¯o¯¨üI$ù»EqW¥˜Óú~ÖÞ’Žº’º|·3“Q/‰1.T=FCÜž£úç¶O€wÓ¿ÿïç~ÖI)6Á=qeãð‚®èzµÙ¸VµÍ­H€çlvWg#hÿÌÔ#õ4VÕÉŠó­Æ“˜û]áL–µáQ…¾ö¤ý8'Ïú¦â=Á*güïkᙲ:±G³TŒº5•ä¸Ñ¸K°Y :_Ö;{s~îÿo_=ÜhòóոÍA†¦îÖìóàè<”Í“íxö%,÷Á›î]<â$|Ò§«ôu8E¸ÖV+Uâ è‡'ðGg* è‘ßæŽA P§õOo1ÀµRyÚ𻊡Ü)KLuÜ­ +3`*KqŽsÙO‡î:Ð`AÛ{ ‰’‹¥Î? Sª{„³3„ Í;©š¬½– #Ƶt¨^¿Êû›0)E?ú£¢8› +àŽq93UcÖG±Y$*<òÚ3…p˜£ÜÔ8X{ÌXÚ «ÛÒG†èUÖ”>·F^;WqÙ™-$ÀëâÂVÓÉ—X¥Q¯Ñr³k¯¼–7“ÓîFÂ^½>×ò¢Ÿ{=sr•·š¿tžºÁ¬vufޏöQj}…å87]v†¯œùö 0Œ÷Âɵ29^h®<êdfo±2À+»y„kÇ9›µ˜÷‚Å-føÔ8TÍhX&`”ÐNÚ;ZÌG8k£OÊ,õaË™Ù,™ÚÓ"aÐîW‹¥" €óÈrðò¸à]"A8!±tɤtHŠÇhï–So¶,{ÄŸÔŸ +_îÉü–3Ú=5U#mãÜI¸Ïœ®Yµõbû#t¤ç±Ï6ä5ƒh0iÙL=ç¹;AU ^'5ä÷çÅP‡›)»|¯ÎœÖ…O¾õ ¨ª%óC¯j}ö8b5>Âõ pçsÜl0Ö8ÚÞu*¡ i^}u+ïºxY¼¼Qû åþÚç‚ñ=¤}£4Îéƒ)6¸6­§ƒfp¿*ÜJÀMã Î4Š2d3`Œ°Ã{µ¼Ag€Ñ’z®ÃdZ—ö%¬Úîø eŒÍͦpŠ]O< rîÀ:Gí²Í{a£Ê³=øøôHJ©í £síi¡+ 꺱8®ä¾Û™{FJ+G!`ˆZÕ4Y÷(ÇõŠ{$nÖ}[Æer8Ëýã|%Lî¿9Ç&±;<(‡„àõCi+ŸïàQOùžC‰àkGün¶²Õb´Y z‹^ãT€³8o†y®ÅÿãÏfp°ºfXÏv6èë2œÏçá+ܹ -æU]Ê2‚±Dwènƒ”µJb!¬ÜÆGì¸bX}ÿ¢{€íPÏ~X¯EÎÑ^  ™¯޵þÌ>°U“ʰJâ%ìs’ùš¹…·ƒ;ÔŸ}ɶƒ½Ì o°iÇh]rb¯P²¼E!¦…£x¦q°AŸ¿(ÉÜPMÎ0Wö™ïF÷ikœ|Š)ä”’ð`:80¹²§ÍZå&Ì ç­ŽÚ†¤ŸÃ'È l@ž­:†ÄW¦õÍ5Ào`_Áà–Éì˜*9üꀥS¿ƒO®½†Ý^ pmPÔ¦ +°Y†‚òçÚi pêû³I©ÈH}¯›S4ºyØ}~‘º_kÍ/{×´³bWØ$€ëpÖãµîÏÈa£J5 à ÓeƒkµA1ŒxŠä2ÀlZeCО‰X5 ’¼ŸÖ…RPÏ\ì*K pöŸú + ØæÓ:oEÈAc‡ g¤ãd#´`I˜+´Ü©$ú?‘p ÷•Œ­x½]®¬–©*úÊÉKQ1gÖG`]ç î‘[í®Ô;íŒzšÅcùƒ¬Ü¬ ÊÔËB‹§ený¡{†h|ÆUó ƒ^­¸kºîäÚ-†ƒ¥Bó•ÒF€ëP ]a7ó,‡¿š@2·{†Ã¼“[’ú.]F§göó=íOÂKøfC“< f›¼¥Ç(BMý¡DÀչß„_5¶Aaï°'%V·¤.ô‚fÄ𾼚èªÝædÊp°·[WM^è  ¡c'¨ìSWd¦Lï‹::ÇÂî’y<³Þ|¤èpÕ¬ü¼½S‘«qüý•D ‹š•ÉlõšÍ€O”’ùäã^Ç‚èö¼ Ajž€ý^÷LžëÞ%O3NZ¯•2^€Î²ëk²”–®>stream +H‰t—ÝŠm· ÇŸ`ÞaÝÚB7¶%ËòerÚ‹–SZ +)RJ˜sús.҄зï_–äµöÞSB’™ßhɲ¾]¤óñ+-4o"¥Ú„ost9>¼8®Eg`™cÉê­·Iû­qm!¨KåT\ÖZC¶µÙŸž;~r㦣ÕÀ…ëñµB’4aé©@n“;ùFz8,Tò +Rý^ø±j\¡Nm¡€nctpu5|–W(£Ò‚å¦*#` +Êm–‡Õ&ÇÇ L®ÁìjÓ4´yÓÚà ½¸±€ÌBi€„Z`" YDª†liš²86`-3BÁðÒ+%ݺ>Éï Sж6¼<«úÁ~±éZ|P±½1dôXô•q†Š‹t9¦"ˆ3«áXvEÕ é + +’[%ûCñÔ(„{õe´¥ËÎ-¶Š^¹1朷ٵg8ÑaI'Ö†Öî°Ž™@†n­ìG­…l»äáH­È®zå­ ÊŒé1ÔB¨ÈÎÌ®2¤%l”—ŸÀè0&±°¢––,:D­ÙÐÉŠÐbO#!¥iát¨„ìÐ)y/Ø +twÓº-@ª†ié+;s‰è*æåÆ­d$”÷q¥§½b!uX'ì6Áü¸†âÛtï*†BãœÍÝíU4ÏÑ·:º¯b:CVm®¢Þxä´;´Hïï«w4à†dí9š»õÀŠ f—›$€czøÏ.±Su?Zw®KVQºâ þüòwKò¦`#Ù¥ÍÈ·ÀU{ÊײÒ\ºìY*ÞB’F@i¥zñCï@v˜¶æ0JúÙ€n™üS×=Æj¢oI;‰Ó¡² +0W4ˆ0Ì`ß°åÌ5Í/ÌÅey¯36~µ&ïœÔNêmX÷a¨I |è=Ý oÖÐq·e„}ä-ñð~s1¢¡%úŠ ž°g#uˆa‹Ö³Þq`Ù®@S%dò[àÕn4Ë#`Lol'%àÒ0G‡áØì ËJȪŽÔZ¸ïZða›6¸‡æUºiZn1ê› ÃÞgÀ¦œ£:¼F’;£É¯.ÈrÛwÓ +ÖF÷®aZ¾høE2JFkZ&Õˆ-:îÌÓO¬¢3ÝÛc.™l/apçí±p(2eêñÞùiWßã +‡è}KÜF ìˤ±²Yl΀ڋä÷¹HÉLcñÍwÉö46ÖÓJ5´vs+x°+Ò+-7’[î-0¶W +Œ-Èç¾aѨ¯5fã%¡½¢AÁ²üC‰Fœýjª?œ±4d…°§•A* =±>¤^I3VKÓ*Ybcïžq*Ó'ÐúƒmçoIg^¯ØÀû˜Xk´ÁO|§Ã.ýÍËϾú­þí7_>}ýýÿùç¿ûá‡ÏßqøõçüëËþù7_¾|÷öùÓ±è|ô_¼”ã+üûíO/?âõ(ëŸoÿ‹_~‡þ ôÓÁÇï¿üµŸLòO««GtçÎ:¶Ù:¯øã=fô*L,Çã}r~úåå—?¾Ôã×8ñ/Ö:VÚ£`Ðu{gX¿!k.°逺…éˆ. ”öØÒ1ýö»0Q[m—¬ã¾£ ,Þ©y=!$”ª× ÛƒÀ›Ùóx Z4ñð–V}¾Ò +lkŽˆOøjoªT ’Ûm`aZ0t¼ ždׯ÷Gê# R7Ã@Œüû†ˆ´Øüûù¼h¸°{Ûì‚ýv<%‡à|¥þ˜¶²ŒŽYý2·¦ݔ뜱váØ\=‘n~±ÿx…Ñ_+†½šCkÆ Ÿ}¬8óÏí…%z'i;êôýŒö¦rQg¯/xˆ»Js€¯Úìqþö't0DbºÈ¢,£”1„ÈKæÑjF©[Á‰·½Dë3l£œ$¶·\ì—Ñ gØFç Ìà)4dã6ë0¸ˆŸàØÉ}Á²›”…¾k4)á"éÄ6ù3ŠëѽìÈWŸ¿ÇÃòõ2ÍÎ åJÞRÚ¹\Z²\àö:I}ÅK§¾WŠÍ ,nù\ÅtÅß mj%ò®`NT&º@?߆E‘'ÙNÞÀñ<˜ïÀ^°C¦‚—I5Æuõ,™‚jŠE¸’^¡7õ­æNÅfZ»¥»oÒ'ëbÙÖ/˜Î¦Š*­™b¤Ñ‘¦ðq¯±Ë7»ä,ŽÀ芉ÛK}`ö–šéÃWkd·¥æ ¼ìr‚x¼]¡ß`¢ÕÒx’Eb‘CÞ=p­)’.е´‡¥î­¤ì ¢X{¦ôK¾f8ÚçEû&KÀ,§ „­´ÛúÆ+ž¾µœ×µ(––O5n|…¯ûq¹ÅU–1±{øKktõ¢SÛ~â +N,{DzÛtÊµÃæp8f?A/Ã¥-²Èäâ= -eFv^a³Ÿ+¸âÌÓŠgHŒÆ2ù ®'Ò¶`ãµY¹ÖÙ½C0 ®[ËÕoÁ=\±6<ÈÖÛŒ¾3G¬''j½îÁž¬Ö("T4iÀ³¶ß=Îò`.D÷’„Žç9…cI@æÜšLוØ*.²˜.T³ÚS×á´Ç£ÛžŸh]½Þ­Íx¬uÙŠLD1&¤¹©%½ˆž +¨GWËÏêIk•ÆŸµGVïIkÇÌú€ džhߣ²Â_‰£àû +ŸYirÒµkàŠL’x¬dÎ>dŒ9˜œßo(¶¦¾¾ÜcLÇ>4ÊB'Iô\nÞŸ1WÔ«5 + Œî²8×#sŒ'ê…¡Z;Ú"°•x•¨á2¼]TôdÙ4‡xˆÍð+¨èŠÁÿø®¶UKn#úûöKÀ6$•T’í?8LH Œ1Á g&7˜óà+ùû¬º©Õ½ƒÏž…Z­VU­‹øw軀ljÚãýÂî}Ç¢®p‰ã¼ã9ÕÇcËÚ+ŸA1ä{_ šo-ûZø„jߤÁÇ+mÎ6ÀçÕ¯¬-^U3…fb„Ë^…³k¿ÁÏ–<½ “ñ¸TÛ«r;÷Ø@Ú4y±* +³Ñ­/å)ñ_‚(wŸŽ$Ân`ê«pÇ9à°2ÉÁ.v.&yæb˜( >ÌÛZv—sµ‹‹ð¢»F3»ºÌÄ ˆ­¬çFÁ Á:zëy1G¸”ÃÑÎãa-ÈÓU sž|ŒT"• 2<à: þ,9¿àµ=Àn< ž‘ƒJp*ï W¾œÖïûªß ²>!`!, ^«jð±”~@Á§È™Éä ›=ûòT‹Ý쯾6T‚dÂæe-ê9S„ZêÅå)d#8zw+Þ†]w••ÆY‹e€1JWÝ®,a/k%Û5ßµ»­ ô|,ÎÙ/KÓìrwÇ|qþIÁ€+\€ÁÁPø‚’ØýcOvUÚ¤{žDcÄh“4ÜÑÔ¶Ö†W„z ÃeŠŒ9ór&"7¦ŒN¬±6²[•„cššMHŸ½†­6‡¹Œ¨a.죬Íõ]Œ¦¯Å±§ïÛÇÈÞˆî¡-;8&tƒñ¥Eŵ¥¤”lò‚Œûªm¶‡µ(b€bί ÎòSl0ÚB3SvK&gÄ3ìæ ©‹¾–d»¯dŸ»^&º¡ðô P ž‚µZÀ©"°™ TùäýéÎV}ƒß­+¿R!oð;§âÖnƒ³ECïکǪӢi̽rD€Á'd#¶¯…T°&ì +ÇX/ H ß½œíG¢ˆSL×°P…õªƒS;YJÜÖÂu²î°LW0ÃèÕaÌîlapU‘T ñWâ`[UúÌÆÕ°7™ƒs׌% +²°ƒ ß}èÊ‚£kEh¸i@ˆ$·çnfŒ!­lºr¬EA4óê®ÅeaëVÆ F{ )Ë¼š•‹œ ‚gåßWMöµ OТ_"»² ( ׵ܔÃBo½GñÔ"£B¾¸-Uá#¥ ´ËÚdÑE8wº^PΫ‰0ÑŒp”²»Š×÷Î^›Ë3æì€²¤NSˆ"&k[`LUòΠtë*àã­q‚ؽÀ)xk–Q60”É£]Ö²‘3@™-º`x“8å¥t˯¬CSUY4BäÈs” æíݰ­‡û®}>@´¹ð€ã²N æµÁïGä{\gew¯ï`Ü`/*ûZgP½- WP‹,£E=ľX³¢ª%SÚ²|3^5M“ʼnŠ'|¾ýã–îÔÀ¨ôì<«aáÓ>©äÐÆ!þJv‰:@ ²0ÕY?å¼¶Z¼ÈÕ…éµòfÐn‘d'i’VN&AbØòtPÓ›ZÃ|ö 2Å öµ f=mL=ÇbâîT…•ç:ÏêYTþç`ŸìY4‰£|ò;P{©píf‹9»W« %úRSnïÖ©ðÙŠs¡Æ¢ œÜŒ¤ä¦UÚA»š}¶­/[UXÄÊ&“l 4É”)‰ÃŽ/oV¢ÿÝKôaÝ©æ%ÂÚ«D£ÄS˜:L³ù +S.-N+$cXŠ8aˆ‘{8!EÔákÛè~ªB9@)ùÊ\zd6\g_›D&®;fá°çU™nn\íA‰Vm°™{·Ö&ûf7ß’Å*ÄÕvV 0jYz\‹Ô–, ¸jƒ:›œ'˜¹Øi òþê'<áÛ¾x{{{ûÃWߎ¾yùðõ¿üô¯¿¾ÿùç?¾øõÇþûåööååý§îŠÞßûçà—¯ðçÝo·_ðW¾'ýïÝñ?áÇýv¯÷?ß¿ÿ{º•“Ãcha„æ·zÀ*å`%QM—H<úæõßÜ^n_È©þrCï` 1xXû+ÔÐ!÷ƒãJü¬{„–LÈ-øW= žïÞëÖ`®Ù£3¤õ?9L\HP@m­"Æ®x€h)?`µužàDE)¦xj8l‘8UÆ»ˆõ}e-Qq/Ø»ù±x˜ïLÅ8Jvu‚…¨@ÜFxÇyl0lèÔY˜u)B±A2ÕÞ04cÎÇó¬ù¿¶×j LÇ r)Gr÷ ¸tòµ%Õø‚Ücmø¡­µ`ÒrãµAÀŸy43ßdiÇJÓSø™$ÑQ@(U­s£¶.vûZp~·wiéíÃ*Hx„ó®³sá4ø`ƒG±–flÁªHK´Ï¾AOýqí ^vc†O«5jÓD-‡Áhzëƒ¶šƒŽ‚ÃöY7Ð6`ˆV£ËZL…y·î±,6µGÆl,ƒƒÓé`É´§GÐð¾vˆhøZ„„ê ,jëÍqùèÑ1ûÝY[J¸k~ø&¡×¿1Ù®Ƨƒm×&j岫D¡>60.?îy[»Üv%"ÇàÕ"=µ|ô¦‰¬­§{š"­ÈáÒÉB¸æÖ6Ð6fvx[{°º‹¨^À&4Õ×hŒË¨>™0sÖ˼­Žr@+W×9¯ä„VsΘ|0a§™÷•Q„êm0Ž%eö\7Fë“LWFψº©1ÀÚ‰Ï eѲº`¸ÌǵìÉîw@õ ±ÁW»pS\"q ܃ +"Y'.¢Z…ÑM&bïzrØ@”±­÷ˆj”¬“DH=b]OÜF´åºƒIB͸ðàJ®ã|A<`’Ž j¼Š°¨•¥†Y>¶è±XÓokÑruWÜÀ¦%’Œæó–H=ùØqñ{&.ÝÏZËz~dr.¨Ôã3w)1?€¹÷¾6X]^…„5J<Ÿ½1´çAßÉÜöVt«û½V¦y1R¹Å0ÄŽõš=|Æì¶ôÖ»ÐAÛÍ›ÇãZ–o4ËÁ1ؽCM)mã*–>¸· óø05…5ìZ½ù€ÈCÀ|³ÀÜ6øÿ‚eŸ×ôÚÚ×Áùê±N° ´P-ˆÜ,óhR +E©¶o;Œ©ß–…&¸ „ÒóÍäE’Q€Óq­—d7ÝÛÚÇ0̸´ vÆ Ô66°åDgéh¶#oà³G.(ÒEfšJy=MÁ†5i|G• k`©Íx¼C0“w`ZÛ¬Ùš´pÜ¿ªÜœ·Á ªäù´»õ4®À{Òs̞ĀúŽ•˜ê»•Éó:-Æóª½U“ÌùÚcú´ d|€µœäá$ËžA3#–jtût„R;ÕÙÈNÞ4Š·S¦4×$aÓ1ÃQóAZ,¸òŒ 8…’W·C;ÌÛUsY’Fëçµ,~Þœf_cÍb—™7Ð6€Tö–Ïk;RÍö» úgÍï£Õ«]"Ë}YúÀþÕH˜e<m @‚[´ÁZ+¹i¸À“;ÆXÔæ’Åsmú¯Vôœ3«Òíàw7ƒ+×ñ°–œÇÕœ†8çúÊ`Ù'¾PòK@¾š¾fÖ[nxÅq±ÿã»LŽ4¹u l|Ap9ÏU¼óø û• UÕñnÝ_àgqÁ’9{¯ Æ}óŠÓžXø¶¹¼´ÅÍGgë’vßS¼j€ë ¾å’BôÞj 2p”ãJ¨í^Ï|{ÄÂÐgÕ€ÞbÀª¬¹â\§jã¢&·'øÇ¯°»áM±¸dªnÕBþêîæõ}½^W‰Þ}Ýð…€<Â,†ƒìjÓêH0èsÉ'6’ë±êÝÏuý®f§ÃÆ&Q€Õ—ÎDj Ï íûêׂz,ênc1å6ü–+šãþòð'Ú-꯿U¦«îý.cV¡_Mk‚€£¬ªd¿ +Xgùˆbgä¿Áiý3àƒî,ô]qëiØ¿¡Íšð½žnÃÓŽu!.ŽüáÆ}—)mÅÓ ¿ê•=Á?þžCú;V…ƒeVmT?G¹ \ õ)1¼WhG÷œ¾šOU« iŠC ÿúTÙ}‚j‰Y*…ÔàÜœÀ|hú2r¢™RÂ|˜¦ipIB»j:A ¯HÐÆÛ¢¨1Ìù”hC6+Ö²¦ÓåÆt¸h¾¡Vå ³@`$å$Š–¼Ö†xh`¿’™a\èä-ƒs,.©6_µo<b^·z§ÊÅ…W>¦[ßÊ—ͱ€ÑpÍë«3bUÀÕ„_wsu5¾c¤óðùˆ©+v„Ýú¶pšn·åðÌGSÈ97læÕë]2Äon7¾xˆDã&0EE#Šï½q›§Ev+dÑBæÆÍšFÀøXµ¾—cUÛ0†Ø†%ùÀR’@1·Û,'´n‡ ?†ï +ÊÞæ¯ŽýVOÅb^4£Çü ×ÍB&f—h›ì¢Õái›ÔÚ'–¸{,du{B|ŠnÆdŒ‰Ži±ëx§ “ɸï5½Éã6½Ðb׈ª)²5zÀ¨ši}3ÇÊ®ÅÃ@†Mt¸8¨®:ÈTioVUÃßß_|N€ìµy¤Ðe1 ÆO0è~‡)¶¨•›QXÝáœe%Ñg¬¬3€4ù !Û¬g‹›4òص¬K“Ù+ۋÀ§ó´.ŸØá6¥A9‰LêÎÜ[èPi);ž7뻵4pWú8‚ŽSJ'–Cµ";—¬«¥ÝñãXEüŠ÷šðDo²m¥ ,3µ3yM4b²H±h‚2¦‹ÄNõ€û9÷ ˆŠÞé­“ºeàT»áP9÷¯Ç.ó1ø«T]“—A2³‰æ\æLÌöªóÉ>u#Gª®ðª: yûÏ€ö{wzïØ]{«álÄñjô½„—õ¿»AíJ.÷tƒ²óbë6òI'[­5“{T­èUµ¬æ¢“q~ «‚²2–uv»B\Ä:ëK´·¾o;Ǫ9[ݧÜÄ´q;ùrq§±ÂË5 º´7dÌç³@`t£Vš×,† ¤™CO¸€Q³q° Øxº +E ¦d&: \,!7cMmÆk¾ O¡÷÷ubÑùÔ¹V&ŸˆªfjÀk{(äf2(õlë^©2<ÃV\ÊxaÒzÍK ?ÙÊŠnŽ•aœ`ÔÖŸ±I²CŵÓwy˜;p}—l äX¬5M„M¿V•~­ÊAQDSV{Ä SB1*ä‡%Jüübî3л6$ܾ0mþbtž^¢ íÜ4NUZr;Qß±*‰(vPFqd°ïÕP3ÂvZìaG/׉FÛÈ<_vM¯ ´glÓ6dö -‘˺»³.Vaj®PÿWei¹!n޶·BÒЈ®kgR¡5Ë ¦^EÜrU/ jÊ"z`.³{,Cæ›jUÎ0(BüŠÕm ÝõhçB‘­€æ¿ÿúÿs±$üaÍðÏY€~Šýþ¸­Ï¦tˆšzIçjxf¯`ddéŸÛB¯nµb¡&ûë 2Lïuqz[ŸíÏ,ÐyWê'c®sKÙ…ÓðúæaÀWÎNù}ÔO®„ÛvsÕ°þSùËhF³×G)r?­4W-7¨*~U8«â/ü쬚ŽÖ»oêôŠU¯5^Ý(Áܹ8º»”yôü½3áÛgë™Ö™èÛøº¸v9q*t‹«‘QÍEñ¶5Aû9ž}ˆ|bKYÓG™+Öñ´ešn~qÜ?$übïš!2‘¨¾©Þç¾¾ +àÍÜá^ ª[`ùÄV^üœ…XÂ,$ªƒA"r‘geˆ@dªÃ^ªœ¨£¸P|Ó;]£Lžq-½z]L¾¿‡…qÚ]<¶1Jåx—Ñ¥'/X}Ä§Ø »¿` È.‚’)xˆOàåù—bÖO’ö¯ü}àÊ +¹ûª!ªÓ§²gí"ã%Öo½&YŸ`¶ _»Àútæo¯±„Ÿê F)Ó¬QŠm¨™˜fÒû¶Gº0ŽPë’Wì5L°‘±­%È8í¹DŒ^·²ÔJÄzÓSË9½¾3Ü–/¸8ìámNÉHr o÷0Z5–Ÿ)¶UsìeÓûÀK–‡."²SÉ´êÔ:ïrÙù:ÕõŒÄìw‚Æîé|æ:^`.6Ëíã%Ka±€ôÑŒB.s¬Wì)dÝÁ\óÏt’gÀé’­yqë­™ãu­]·?cõ +p™O{lÕ$™Ãs…Ööž±q¯X•æ‡a|¬Ï é¸²‡ìùóa»ðâ÷·2"–æxUV=ÎòQ…Uõ¾½LŠíh›Í¯e–ñ†*\J,1YË[~ƒž"oH%ýÞ1²}Åô_³Ïapv©±;c9V™xjFoH&ƒÉ…êÏ^lük¡¯Ú½Hgq(ž¯mt½±Ú+ö´Í :’°'h àŸ¹›cuÌSì€h¼`GIsô‹1ÛÅ´®Ê#Z±öV³ãé÷æQj7Vë{6÷f\_ài"Ò±gtw'dk/c%h ˆ*¹ùŠm¡ÓtÕRê âØtR8 \ ­áOÝhLhgL'‡çùظ±ªT[xA2_0IÂK»f°œ*vù§½¥Eæ0ª˜µW¬èÔt¸ÐŽp›ªuäß­Tƒ«ÎhND&Ÿ·q¬žê$ÌÀà„#v¸ªu×õ„XêªêŒ‡+ª´êõZÚ[¤R‚Ñæñ»/Ö=ÀœžÛºÿ±.†V약 4zÿ±_u½mëHôä?ø¥@ѷåۧĹ +4Iq^ì[@ËtÌ­,¹úHãþúŠ¢$JÞ˜ŠºÞI×(к#ŠšÃáœ9dz…®¶¸Õ±¬FPÙ˜«u­ r­?)'D© #¢º‡uX2†tǦ<Т~#(3ð)¢ke¶P0,eÐ4ýfPâØ÷ ±äº;i™ÓFôvµ ë›\gÀ©¢œrÕˆAy%k6ÖÂõ4ÄÚ1ˆÓl¡k±Y_å2 Š]·Vâš”†-´ãKf—A±/çPcmár%2)ÓAhí Y†¡/¥ r81<-þ«t{²4‚yæ5¦ ‚£(®„[ô-‡b +[å€4·òCž+`T’j„ko»},üö™~çX Ój­¶· +âl6Ÿ˜®×) —lž×*"\âcr·nìTÜn»\ÍÆ[·ÂUÚcîdLµ™mè Ûk²Ð¯ö'~g­¾D¥5XQ–4¥ì* Í.zØj“„m×m¥]8•Q±&ùÖa>|! mÎBž%øh "§‚Ûf#(6˜p±áªk>êD éY­ Üm9?•¨L‚Ž/d=0ÛÄ’·ÓÔ¦%§J!ÈDV…€(†ªY:[›Ö,MlA³Ó=—§eC·I´¦/í‚,bt ²vu2 +¢$W¹ºj\Ê +®t,Ï4íFP¶‡7ö­ÖZNAéR¬«Áн•p“éaòOK –iN{~@Ádž0¢µUs4¦R·‘øüøÇ—“/'oÎ?ú÷F‹‹$OWŸI–Ñ$âA—ïoâès¢ŒE§§"|AXÔ|pr³áOLC<šý}õ…°ÍÉYõsôÇÉÙ?¯?ÝÄ +?ß.‹ào£³Y{<ŒÞ>­Ãžò¿"²¦¿Þì~úH¼xlŽÎ>F™ú0ÛnŠggçIB¶íÒ»<™ç!z€O¿¯Ÿ+.Ï/Y±8"I;?±ÃÙ—ˆy.½·YÈ3/T[?-ãÆ"¸+ ›çMù2xPíØ@•Ð4³¸P!’Ù«˜¢|}dä‘/ÓÂe¡ÕL_6')ýÐo9\­­&6à¼aš±,XݱP»vQ<+ÞA…Qñî¹¥ïZ8×›8eJ +d‘fQfqžô*!› PU†Eí+Ç¢=í—þŠÔU4ñ†&$‹MHû*z`@uö{š¦÷ÕÕ¦Ë7¨¤CO¯ÇSÇw¶Èöpv…Å4¡)“W­({Xé*)tdö-n\ìCoÏ?ÞŸ‡›¹7QÁቿÛái ÃLWYÄóÑ »ˆóh‹.â=­w`„ +žgÙòì’.Gïnï¿åö– ¹ÞÄ,=ú½Wá÷T ~¶ßÃÅÄG»w´{G»w´{G»w´{¯Ôí^×îá’PG»‡Þî]‘°0£I{tÁÃë…8Ù¬â0~Ø¢Q ]éˆð2(>Œ,Xžêvìï{|À¡-X™ük‰«>?ÅSž‡›.X]GÙÓ€-XH2Š +ÓKÍׯAksTµ8Òîú ¤µ#™!%³Ûå2¥Ùë&2Œj½‰d±Õõ»*$<ï!†«.  ëÑçwy2ÏCc¯‹´ê°LH‘ð&f).®v|‡á’/;ÔX¯ÎÇ…fwçGùúnÒ#ÕÕ˜.*PÍôU`s’Ò ý–C·ëN™~naP¦Ë‚Õ µKųâT/J¸flï±tÉÒMHº¦QvM6g“>‡Û¸jÑáð§éŠD g4¤¾Ùù ¬.äöe ÏQì‚2qÝË¡:#ã©HöŒR¬2©H¼5iê +s\·¬Ì¼×0šÆaœ\Xô„qõ0Ik OA†Ù#–¡öš¡„Œ«ñ»„\$ ëŒ‘ü3êü4•Ÿ¨PKŒ½øîŠäiÊHtæÉ¯ùq1à(Š‘f—, 5/Ë2¡ôÇN>ðEÙ«•&A¯óPœ·®(Žp¡j"P±Íéƒ6S{HàÀ ÊÔ[]™ÄkM8¸„°H¼33’èŽE~'[\%ª¨¸²X’‹ + O[²(ˆ_ ®Â‰·Xn±`{Ô帄nB £¹ +B š\xSd¯…/Í—ô‘þe\ U0*RpmÁ5üÖ²ˆ’=WøÀðj{´Xoa¢ï–pÑÎP·„ ÍP·„Ëûuˆ>o "*€^†èv¹Li†Ñ”h÷~€«ÝÞ_l5‘œú¨ð¼°²º e1T`Xß>¿Ë“yÒ¨èz]ì U‡eB‚Œ„71Kq)ÙjÇq˜… +Ë@ý‚ ÍîÎòõ-ܤGºÇæÕ3ß@…ª™¿ŠlNRú!¡ßrhwÝÑcünà-mÅÆ²`uÇBíâEñ¬xFÆ ç²)Û{0]²t’€®i”]“ Æé¤Ïâ6®ZtXüiº"QDà iʼn&®¿PÁê‚PAn_òÈ.ˆ!ó×½¨ÄQ2žŠdþÁ*”ŠÄ[“6 ¡®4Çå^ËÌ{ £iÆÉ5EOQ›´– ðd˜ArPajp¡JȸÆK—‹t‚1’ÊÌÿôj‰±ß]‘>stream +H‰ì—ßrÚJÆŸÀïÀMª|ªœ“¤–+cŽ)WÅN*dS{G R M<ÌhG36äéÏ ÌŸ^Ô2.¹ë"¶$Ô¿é†÷R…`æ üÕ89jžkÍæudz©X\zÄ\„dv½ÏÕd:w3Fó±5.nsæÙíÿ½þrã.»{g5šÿ‘‰ éŒÒ*zŸ‰‡.Ƚ çW£ ¥DOüRD‹Ø}šˆ ÚEhRdšÔø¦§¬ ÝM=UÐ~z<'ûnmö!jtšÃŸƒËì!÷Í»'Sëǯ®™Ûfï¥p­t+¡&ó +^:îíø4 ¹ÅVÊR•± +=×Í 3TV0Ð,‰y@ +ŒË<”J@3£4-ä‚ZBµ!ØÛÃ'å+%ßýìDF´ +x)Þµ¢½ ¢}$Uµ¢ÕŠVRÑhp­h/®h´F\­hÿ ´ûÒ Úß‹©Z­gµC«õìÑ3ZåûZõlÀlšr&{ÂVñòÒ‘š°wœ-®"ûåŒTaø/Ò/Û9Ñ:ºmÈ´Í'R…A­mhÎël&ù” Ø/î<²O4LÕ-?¶ŒÞ7™,ìÔŠåyc¸¤’´¨¶ |¶1LЋA«`ªê!tŸGCj˜6H"&îÙœÕÀç +-vÇiKSy>I 0ÓG#qBÄ%/jÀÊSµÆÈ FrË”mKÁZl„ÚêÆ›,zßrB~Zu™#ñ1&‚k÷I˜&‚“ü O–…Q‰–4ÚÝÓV£Ýq?[ ÷¯ë>»ÿ»îBƒî +«ÀÞ¾®Õ#óÖ˜tv2ÍM<CÌñM°ùˆØ‘†y݈¸0 ]„&EŒÿ‚Àô”•¡»©§f¤=žÇP¿´Ójth™-‚½ÑìCÔè5‡?—Ù#yíÊþX±`2ɧŒæšãÎC ‹BÃTݵªùZgA`§V,ÏÃ%•¤EµMà³a‚žn­‚f¯ê!ôÂ0Ý ˜¸gsZTkŸ+´X7Ú&–¦,ò|’`¦Fâ2„ˆ»1D««¶0r‚†Üð"eÛ’ÁD°€Û!‡¶ºñ&‹Ňô +Uú$>fÀDp­B,¡àXA5WŒ·!ðɲ0J¹¶îi«qÚêÒsp+”Rëí€Ù4åLö„­Â´=m%Âäf,ŠôóÅ÷!7ˬÀÎbr<«è}&´[*«8IÌHaíz¦Ô„}¸ãlñ<î)$ ”ôyÙ¾ðIlF½Æ­¦^ãê5®^ã^nëЪ׸bü³×8ñ0#ßJ(ZV­ÞåŠ¹æ „ºïN4€ì:³ ]×|¢ºw\ 0] aWi&'´*øIK^Ÿ;õ•&suÍûͧÖÄØQð¹E*%ëèýcá)±C|¤Eµ~A­•N7‘G.·Rç²>gb–Q^(™u¶ŠIQí0ìøO+ÌÐ /vlÐÂóâ íä +ÀÇB¯?nôÑšî»ÛO§•›ï¤Èò>ejuäür™&ëÂóJ”aLy8¡ +LŠç?$Ÿ²l #g".zᚪ¢í¬â’XFŸÛµ‚ÀN]²‹ÖÞ5—T’Õ6Ï6† Zx[›JÅP¡ï GÃ4v:2qÏæ´¨Ö9ËV4ó6>¦C (‹<Ÿ¤˜é£‘Üž —¼¨+OÕ#'aÈ /R¶-L„C¤Ø69´Õ7Yô(¾2n¨jLÇgu¶ ¸vŸÑ˜-¼ O–…Q ÛÝÇ'ª;Ѳ»4©]çÁ¡{Ç•ÓÕv•frB«‚WŒ¥l]ŸgÛdæê(š+–é9RùX„žÓ’ß|jMŒkŸ[¤xÖÑûP \ ‹o@b}¤Eµ~Aã”®Ýôaeú{–8,±­MlgÜ¡8y”òBÉLJ°”´Ê`—bÇf[e[}ÙWKK‘V>zr3Ö´ß݆Ê8¯-;Z0d*ÆÊCäúÍêș硳:X£FMQ<‚RvåBM•.÷"r^¥ÖºX»RÁå)’i¨¬à\$1#Ætš‡R hfÐÊW”ÖŠ6Ñÿ9¢pû™ Z~h¶ηØv!²Ó#·g¯äl¤ÿ´@Ú™kÁÍ7Æ‹öŒ×55—f Yó€Ø!s3äQdÓ“úêf&ÓÜÄS0Äõ¦g'1{úì$RÏNj Ï3;i•ÙÓ¤!8dn¦ V0ýÕRcªgçöì¼=©bn>òÖů'v馥¥DË®Ý[‡¾ù Þ¡†©>>¿}ã3ß› +d¦ê# óšqa@»MŠ,5þé)+CwSOÍHz<¡~,h§ÕèÐ2[{£Ù‡¨Ñ=j.³Gòº•ý±r±0›¦œÉž°U¼¼tk—roã%â8и •Õœ‹$f¤°v½[jÂ>Üq¶x GK…}€R.çk¥`(6O8Gæ¢`i­8‹°ØáT–… ié5Ïš@NãvÅ ,°TËnV¯7•­7Ä›±çü‰YYŽfĨזª‹ç0f¡ºµiç[Û:ëÕ¬^ÍêÕ ÷‘ÒÛ^Í>“ÊE½š½&;`5#VvõjV¯fõjV¯føƒÅÎ×÷íÎ;Rǹ3a±’MŽd–'¹ç¡‰‘4í³-š‡à}¢ø$ƺŸöbH«ès~',Êãó«Ñ0f¡º’âYDžS. h¡I±Óoü ÓSV†î¦ž*辊 =ž½¢ÛìCÔè5‡?—ÙCy·’ý±r‹ôÃê± ƒªÝ“|Ê IàR!Õ©aªî€ZIŠ|Û± °S+–çá’JÒ¢Ú&ÈIŠVS$Uë_RPËÐ}·ó¦±#Œ‰{6/ÒŠ¡Ö>—Qè$}"ųÜG ­F²th¥& <_n 0ÓGqBÄݼ£%[9å Cnx‘Doéy"X@‹mƒC[Ýx“Eâ³.5üϺ‰_°‘UMéÓø¨ÁµûŒ¤\+¨èŠñ6{]â îMž°f±¢Î%Ò,0LÜ(žÒ*ñõ7æ× U@}éqÑ +ìD'F³ŠÝ'’vúÕUÒ`·¸v‹Õvü>Y $k+s >`j¸ â\ s'Õ0{†£‡‘‰mµ6)$. ‡ƒ·÷À…š&*]Z±} _]ÓµŸîiY %xË,ø$®Q†ÊêÎE3bL§y(•€fFám?) MôÏí¦2×±÷(ίFCà HȮ눸0 ]„+ôjü ÓSV†î¦žš‘"ôxö¦½Ù‡¨Ñ=j.³‡r9^~S¢éËõ«ÇV¸™LR¯K¬f„N<¶D”²Þ .RDÏd¾?“‚znïݪÍ÷ ›ï7gYÉ EmZß´iE‹å;R²#†“*Ç,ÏqÏCS Øk–v‹ÍCð>Q |c}9¤Uô'åW½i} ÅT/|õÂWÕÂéØ/›¥„a( +¿Š ŽâÏWŠÊÆ‘OÚÔf ½™&Uñé¥Ðœ&SÄSÍ–h>rïéwØÜØå# *_'*ß9Ô®+]h|¡ñ…Æ_h|¡ñu²…Æ÷M㻀b +¾ñ Y¡µ`Ù,öñp߉çdRàŒ†=ü^=Žg{ÏsöÑJá†9S©ˆ Àl1Õ&¾å/‚•ßïd}­xµŸQ’hn:´BÀ¹; bW!Æš¬Øb¯T«®¦|Ùä<Æës-3.³íh‹]û ØØ½yÆØ½$jrgì‹HØ4µ3< íë®ÍLrG¦¤³£Y"Yô|uP}DŠEÂÌú'ÇX‹´„óÚ¥Miax§÷I§,¦×ܶܪ¿ýFÅË û•*²Þ߸«HÏ™iº‚5`Ó½îèóô^yw+’¤ÐüA<¥fް‡ÔÛ|¾6,3‹çw:reIа¿ž¶ì]L “:"ž]@ñ¬O_‡âr~ò±.O ¨¾¿asnxã* þ{z—§P¶È ×)†¢²¶éÐ8bÎVŽ…W; ÓCÈ–z7™«mwriG*ºæzM«¶„¶‰±Qy‹>stream +H‰ìWkOYýþý%‘âÎ}?v>ÙDYå1 +™¤Õ*jìzÖ¸Ùv; ÿ~NÕ5 +¶É K6B6íê[÷Ö©:õ¸_O&Óv\é«?;­ŸÏÏ·»®:+þ1ø¥Øúºx?:n&㮞òûͨoÚiÕÑ¢çûo߼ë3Ãs£´§uWõm·"ªªkú㓺Ï,P—(ž}kÝ2ôÃz·=9mgMOQúìÛß^`”ß ãF½3³·yïÌ ÈÏÞ™Ÿ½óQ`ºO֣ۜù¤êÞÏsÃô³u^moëîè!Úæ-§ÒÏöÊIÛÎê~g2ïºz¼=9=®²bDJßu¹ð裒q)ýf,î{Æõh~œwóI=eδÃJ=ìªQ_MÞµMf×°‹7d–B”®Ûg™éüä=âð™–­v Èkê¼jÿ2²ƒjV¿ìêÿ͉³Á•Âf…î†e€³¾éGÇ›Éʱ›¶{¬“Æ%Ú{í¼Õ?@³Þm'm÷¶Â¢¯¼¾ŸœƒÈ'÷®ì¯`ÈlTMCa_9w2mW7¯©lÀÊmª‹¿Ûž.$YA>¸VÅxUÍg³¦šÒ…%Ç’±V‚e{ëºgŽåÝŸ–‡Šñ‹úsS‘þŠàLV–¬•JïguŸcW`‡yͯãCëZå äG- +ÙâºYÆw r—üË«ÝkÎß'§í¬éë«ÀZ¹CHˆa4Þe“{fMž3øÍ”i¦êǨr d[{ZwUßv+¼+¶ èÒúÿßAûju¸ƒ§«êªÌ.™~­›6“¾î`a¿ê•²=ø³õ;í|:Æ¢öŽô{`„Kx¾Y3Ÿ¿¨‹_O¶_KñéŸÓñÞï¯^²2‰,I>½k§¿QPÃaïÔGÍôê‹Á»SÞäW{g'íd°µÔÅNÓŸD±Ïþ—ÁüÊŸ(^àó~ J¯L”…(…×ÎÓƒÞ¹Pú+] BG<•tÅ~5™^ûgøñ/<ü Ñ—Âo‹ÿGc:îÃ`Jå¢ÕP¶:ˆàŠ“Á0–Æo‹¡/“lhJ¥­†DšÒH) U*5~C_F_Œ®tÆ`£¡‚¹^ÚBÚ2ë!°¥1Nxa´ÂnJ–N +%KÚßÁÆBâ<«’@*C;HkÒ)Q†H +®nqp A“Ž;_#­W$ðÎã,52ž+i¥ ²¥Æ+€pB:Fc…,¤*­á_Ç‚*R/D+B€@ÃÉ>’ µ(¡I N +¬¤ñ€pA ­¤UéƒQ$@ðè§FøHE§#Àˆ¨‚­øo%9<"¨J‡Â—Á Ò$ðÁIŒS^c[ö†–H¿áæ@A²¥D-F/|±{K˜ß Á+ƒÁî –Áf|¦­heM•QÈè$ñk(%| +CrˆŽxC~åXÀkNZÅ1°l©Ržä5I¬5Ž‚3T âVX˜;Tˆœ!„èé@Z£¤!wƒ‘Æ{Ö“°Gi¢¢qáf 5œæ‘´aPq½ˆ›¬„%ÞÁ|çÈU*:Ä•BâA0ã?¼í…•äí"C^6p(a(µ¿a£lk:u4€ùÁzˆ\©,ùHÅžPzhYâ!ªÉy£4€‘c•w¦PV3Ó±IäÙ…†œÌç,‡ù ´-x…íÙ8B%AJS'Řˆ‹b÷©8=Ñ~U¤L”“.$èH4ÅQG¤6ÊÓ¾ E î1Õ Ç)fñCIOÀ`K¤š5¡œÒÂ2Ö­½$Ñîà%êÞ“OôÅúF6 Eä“Ö%=@ÙÄóÚ,Õ>ð¡Øß†mìˆÆ”œÉ',EúË”)u”üâU0Vˆ©ˆ÷ÁrjŠâˆ4á}åŒc' ¯h!À)ìUð‰£Á“—À1KE#i¢¶`£BâH*äw¡}XÈG›`êÿÖI …A(˜J! OàNV'vD",ÒO8RJu‚”ƃÃQU ‡S¤Q­`"g7Œ¦B›À5ÈjÍÕ^#Ý +š­ìLW%{”6éÀh.K”8Ä&‘Ò±ØzZìÿAýôj[_¹#ßÂÝM™»)o7bíœÝˆ±ëóu#¶nÄÕ˜º O7c黋Á’‡Êõ ++5}…‘Χy0ÒluÂ2ô¥˜fDb–YcM‘Bóæ]š@˜ì‚:€áé-‘]qBÚ1*·ÐÖQ°¶tý6É$=‚xQê…“½¬©•V¦¸¹ÿîâTƒ±5 *9*9}°Ø©YWźpÔ"‹gv©°ä”Ý4:zÞÚd…Ñ2!UÑ,$Kç‘ršµ±NÜûi/J÷  ùUä6ôßÀï‘4³“3&I¼ ––ñÔK÷H;xõt{­@_d<’µ$’@óT»;à©€ÀÓFIŠ}Ma’ÉçöÚž’F/š¢xZ<ÃÈîÖ‚íÌL ’`•6iH0^Å–ÆmÍjšÃ¢Âo¬D˜öAѰ°´†‡º‡ LÒ&iȆ€s›tP"Ó+%Š%F…!„Ý‹2ɹlHc‡¢´i Ï`0'9…Õ88 +‚¦ðB@#Î.2HÃ8*ƸÍ·´!sH ÉLÔVƒ—0†!¥x')NrRÞHž×~Ë#í"³nXi¹*cšó0àJ!ÒИ¡A¤±<.ÜÁ¬T”èÎb|ZåTš»<ç"ëñ+HxŒMzðš&™±wê,ÂÖ³Ñx–,Rƒú¼K·G)ú‹ó2Û±ë¨Âðô;ìK‰D”š¸2p$Ê ,!; ØFÆ–•·çÿþµO·[B`©Ý}Ö©ª]{ ÿ!M:“*Ä—¬!hýt¦.|„NŒmÊs ×RçˆÓK[Éa¤åªêÅJŸ,¥f§#ÙlŒ4ù²BQlÒv¾~‡(›GöZ+Ùf«q“ÆpÄ…D˜;@¥L%„P£–)ž¦muôR6¥ÙDz¤"·IâÇ%B/Ûß^n]+0–ž"–³›1^âQno˜ö ¿íTE—}ÅÕ°Bí0ZEŒËíC’áˆéU½£òÕhÄ›fÚ~×ê½_›=ó¦ ‰îµàLÈøA7i;>A4 +⨠E=F.–$-Œ¨øpäq6*ã„‹ËtK¦cµ¦œï…Ö1èüáæY¡@×zdIW?(R hȽ…¿å^Ãd„ c’W8¬±²OÑp†P(œïM{™7T ¥±¢=Í“®‹•ÃXá¹v­4¼ÕÞfd‡ØAr#Ü©ÇæÉÛE³iz“B³ ”!bR:ÚåœÎ¾2ƒ#!“Œ´¬¤КÕGÜOtX¨+(&ïÒâèæÙdM+P¥ndßæ£iìw ÑPñð¦IκB™+î³¹X³8°or2´bžYŸàˆµ˜î«l+a1úê k=¥X³—­vVZ#²¾Ðm +µ¤VâÆàÂtGcªORùh¬„îâRkE ”Æà¹Gu¤d‹ð¾ÔœÚEZaK´†¥†CO”^¤Ø|”ÜD.Ï…¸“³X—4êâš&J|¶:T}W>'bŒ,àŸ2Kòð}E’uÊ‘º¯£ SOÑž+°ª¨zÚN)šX`°H-ÀXãÜ9 Š‚-"ÝD+©ñÌÔÕÛø•Ò´8N/í‘EëkäkȰÉx(Ó3ç¨;¸ësÊØáÌü +uS¨™„ÚàÕ˜±E‘ìP+ÛÊéƒ@Æ«ðy±êø­{X¤Tm`r1ä´Ñ{r/Y^e/PÉahւТlB9µ†È"*jrBs ÓËÊDŸ{°òÈbàrÇâeaJÑ3 ƒ¢>˜B \DÖ¹ªÖöo¦;Q#MH_¬ X’Öëqv"tƒ7 ‹` +e’b‰/½,ýMj‘©ÛM²5,K†8sT™ûÉö‘6K(¾/~W'ÜD?´Î(šYüŒ—>ozMR¥{ WœtH„Âe=\U¥tŽøžÕZÃhÂjmZ±“­Ñ +þ4ý0§|K"‡k¥Aj‰:—œÏY½kp‡Ä„†è=.%l4 Ii|ñ:%Ø TÔ´"KØ®S8 Ã7´½N• ©ÞÕrîÒmŽÆ ¡¾Jªt¡9ƒ+x'ùea®@n•ªÙ7$[ò£fBbŽ^gÄd(ÔVk÷JáB(`/&òF[šçg\ lÆÈŠöÕ1(ÇS‚@yC +àÍêb[nó”>G8›ÓIëež>0Ĭµ§P²uJ>³´«Åq6ÆH°V + šÆiA».Èš½Ê¹€ÔŠ=B½Ÿ$PogB$Ñ£âjý}jKu2õî–!l{ä³J‰wšæB¨˜­ ´\½d¸2ÊMa†ä%‚*Ïjf\Ú‰™ææ ¡a}Uö(mÁ¹õ m«§Ž0p°m™Ãhtu¾Ž³‚1~»éÌî©.+oúœëjáBwg Š–Dã÷KôÁ1œM²<îðK'=¿ùP^XwÑîooöñÑÇÇ“?ý—¿>züìå_8¿zýÅ‹/¿ýãñÛWoþõãñÍË—?|ˆG±Ö“/o‰†¥p5xú';ñ»ôþ¿ß¾Ô-ãóÁpÜ–T>š·›GrŸ{|žÒÍ£ï>Õ£>ûééëŸ^¾øþÕ/ǯ:>ýúõ«Ÿ^üýˆË|ç+üðì;îóññ+­ø~Þ¹|Ò½ž<»g _Ü$PjCüi¢Ÿõ‡@‚‰g1c¼ÀiõpNÕ{ò=ÜÑ«˜@àt÷œ5 çfL4èãvÈ0¹$¼’M+ +§7à8\€%œÌ|£éÌdÉ’L Þ¢ R†6” MËm‘ºÚ<ÏÚÁï=t-~'1ÊS÷4bK‘•AµRK—š~„ˆaé$Í›ÐøÜáyÈ÷8=*c³D¸‹€ýQºGëñ&Ý‹I5»Á i¿a55óžÖÈ©¸“æÈ º±'Ì­Ì„¯YãÂ}ßà }AêõÍ¥¹ šÁB ÚS¸$6Ò]&,%XVm§yšßa» ìšv¨†÷kÊ,¼Q÷𓎯øÿí”ÇÞ¤¬½ÕHÚ‰eÓ“Ôö›‘W´â“=ž\œàðg¯ïq½zÝ#øµ~¾ÕϾkÞÇÿä?ý¬ØWìÓŒMŠu=ڞť0üîÉ@ª¦wXZT hÄŒ…JÈ+b¥Vyd S9¹˜UZC ÕWÙ âɪ"­éÒ@sœ±ÈM``HÞ±FÕº•<G¦Íwêé´ÊÜלEO̬^_̓‘Ø9ü{Þ±´oΦ3FóÒ=eÏ݆"AÞèÌäjì+µk\3l‘VcŠB@fâ­ƒ§½Ç.µß³„H2Ý]¡Ht¤6SFuYfÝ<å(qS“ª§A'è«-î½Leúè̘óKš×V„_ð 'Æ«B«rÄåX\úh\ùuãX᪠+)ZÎV’:)žÙ›„#¿YH?©zÊ÷C[ÆP¦6ÀUKÉC6Hóí5Å;޳ɦŽãã#æljUì^ÓbÎ&Þ_6•*/_S\!D¬àmÖtõ"œÁíцžƒ1=Ü 1å•çYrªQú-ÓÍt³v1šÅ…ÁK.s‡Â!Ddøµ’Çx4ù£·e­±¶·Í™®jPz*O=Å…G¹åÕTØ4‘àˆ¶ÀŠ‚k.-C®5÷² òq(‡œ„ô4Ie¼Q<´cê£àIï§dT—^¶eÞ˜*/)GЕT(c?Îp™g—¼®ûïe&úК™öÇC)V÷a°E{‹&¹e7oôÖ¼4 ¶?*MhV +haeI9ŒêBHs*ûÌÑóâ½½;ĬJy2‡¾ È­ ´]g Ö< Œ¢Å—¹xæL£YÕû ¿pFë{¨ÇXãF‘JMÌ˲ðBuç¦Ü™‹#Uohæ-K±Ð>ÉéŪ}ñ<~yc”á.|Õ&¬ÌUnt7¹=Ì—â.>Ä>Ìÿœ3ÏœáH¤ZVSÎÔ.ÒtyŽYÜ–c]ù§Öem‰éŠ»&Û²÷R™4Eƒq¡é:«u_Cà]i`* +š5Ïbu¸Ä*9ä†kw"©˜–¬Õ· ‚ t$,]>q’7¹$¨@:ÉIg =Ibaf•-êà )ž°Ëo±DM\U«¹‘ô}3„åU}¿g$r0Ku™ˆe‹>­ó˜IÜz +Qg™«J¸Þ¦’(É?ï`[ÁçÉ´S™»òCÒRÓÞ²aÞµËÖŒ%çu¥Ã3]×%ÉA¤îË«—±rIYñ}Ü‹·«)}LSS¬*ó¸†uéÏ9œüslf^!tMÛ±$è€Í¶äDêv±Ö´GCËÎ.Œ•¢X=…å‚V=Y G²JÞlò;ͅݮמk®]›è¾t]0t¡¨óˆUT¸Ñiô½á¯®Xèí2yÕÏsv)ú.iñÀzg“]-¼R³ÀpÀþÉ.>Ò’½íðÇ+aYHPñ“UÚÛèÎ8SÝr¾ºùT¨|õé2ßûýÍ:>{|ÜýåüöÙÓoþþÃñôí»¯_óüÝÇïÞ¾ÿïÇŸß¼ùéñ‘t@˜Ü}só%V˜”ðÂì÷éþŸ¬ÿàMð_v4Ë~[RùMÏná­Wÿ2¥›GÏ>ǧ¾xùw/ß¼~þöçã7€ŽÏ¿{÷öåëJæSøáÅ3Ïçññ+¬ø-~®’OÈëîÅMà=þ×Òñ­ÿí®·P=()ÿ%£–ñâ¾ }p!ÿu¸©§úq÷”›@³ø…s¾úL20¾ —Ô;_u¿RŸT(éuüĵ³ÓQ£,wô;ü|Ÿn:žþÇÿÂÏÝäšx­<ÂÏøÇðË¿}8ìøãñ׿¥ã…¯üöæ¡LÊã¡,þ„ï¼ç·¾¾ù¿ïã¹BgTÅç@ô`M&Öº©æ+Jã¢ÜïïÝTFm2qø†2vÄÙ„U·.±Û±uZ÷*Žm`ŒÆ#o÷qüÛø*ÿá(ÌT¯ÎÌÞ~Q.´ªm†¤hÅUíµ'òX>ÅøÍÕ# ™¿w- +w^¢½ +LæýüÔª÷Öí¢)ˆç¥è{˜¾\Ï6ºð% ùBÖZ㤈5º³1;É-‰Ì÷æäX;”µ.Ä"Do²¥Ž ÉNDR'4y+Ê:u;“Yo­mâXMd’æn؇9•‡æº EåªUFйxêFANdîëTŠÕª^¯×6ä†à$«wIÁŽ»nºëæãS±J¡;›°c?Ä`JüCìÀió ÉåÎ*FmøèCE2èFÛö5®ÕÒµqåÎàÃjŽàMEvÑàŽéˆ“5-&î\™Š‘«¢˜Ú"ãšQœ ®íXsUÅÚ¶ÉeÙÐ:R@‡^DVÚ¶0÷åµRëÂDåyæùd¥¨;íb"á<)l–« ëõ¢<{Ù¼4GVÚˆ÷CÅZKñÑ+½òÜ–ÈEûRE$•é탥F ;ôüô^E¤ì¦ºy´vY^1'®jäõö|¢ÒhÍC¸Së]Óý–©¨úr_(¿å®JgìU> Â]¯ã=EJ†:Ï)%¶uK ‚[êÛ]A3©D騔’n~ŸÈ4í+ÛI™—3+jDÍe;°™E-5Ì%(€q®•<Õ/-ù„ùê>fEß@×ÚU™sƒU%œ{cšV—µ-“cöç Å®‰¶ÐiU^)ª”ÛrQRËH+DDòŸ5] ´~̺p´¡Aî^Fø^ÍgÙ¾©j¸gWÈñ¢¬B{RÖ^…r“þ VMTÒŽ´Œvûr­ŒÞW­Á ”©/Í;:‘™zѾރŒÓ5 C=Ÿsexýscã‰GÌ@ó FR¹$M\ÓvæWû[ðÚ¯ÊtT_Åë€êmº¼ášbH·T;Cu}í#BÑbc6SV}jβLìl;@²M± 1¾´¸†"uIûK»Â|‹±Ú(Ñ*@z‰ý^4æÐhyÃ=Ï|n£½t,aðñk­æ¢¯Ù4£)4#4¾f%éùÆÎND‘è¬âstsÍ8&{Ϻzи½Tòýܧé0å<^þ…üªë±ê8‚¿àþ‡ó²H‘ééùNžð‚""#ÇÈ+E€‘—`‰åŸê®žsï]ˆHœÇ -ZŠ™>=3ÝUÕ§sK\^ó8+qòΤ“ÔMºÏf~Àx@'-›×Œâ£¬ÒðøVصP«¹4â o“e«{‰zÕ"TÙ0ï²öÍÉè½F9 §Û¬JO£²çg1°52˜ùL+Öª…]\4Y 3¥Ä@¹°ŠYýÜ—§¤cý3…¦¬vøÂäñà|܉™€G†¸’vd¬{é3:rÈm£³ŠÚ ™s’>L¿¹o +Ù=¬)R€¿©Á)–‹±¨f² ¸½¯vOª$ù"_<ôù>\È`Z‹“ YÉä+îÓÁ€ªõj–5e¶kšŒ•SñìA¹¢Ë5e„wš Oæž*]ÑÍ„pÔîïl‚CîÓÝV6=/mÆîÌa´ð‚Õ© ›ô3hÑ:ùVªtf1'{@BLŽ…¢#Ëu»DÎeltÓ˸T´¹XCØ: —2"VJ->ˆvˆXËdáÕiá\}ÉÕoÙ£›³Ôzå §“›´)\·.eÇ$:iSÚŠ@3ƒ®^P !w¶¦™ðÉÀ±ðÝÙF[» …p˜ñ™¾3@q`€fR³Ì«ôä‹Ò˜ì*Çh»Ñße±‡ÍRuׂ#'Ò0Ž4Ž `¾UnK‰³’ûN‰$$7)DÌ/¹ëIÌÓJ0ÞzpúÈäh+ˆBs Ú¯á×T¸Æi’e¹c)—U–­Ò*¯)ršZùiiNM$§ÃÕžœÌNÛ,í3*|µŒ`ØÔÂ2qŽLµzƒn´ð‹Ã2(Ê,Œ§«§Bÿò~«~I0òV½Ž4NoluÆj…µ[¤¬´jã³Æ©aÑ+ðhÚ0zñkÕê6xw„+uv꯬o‡#ZÃ× Ë,ìD¹ˆ•XmÅù±t¯¬µ3) · æ!cÍðB cYø»¥£DƒðžaC(¹£rÔÈû°fØ æ¢bí,iß”Ý åà’]û–G)q¦î5þ“lk·)hÞ®K-м»Ž»a ª™H«ËÅõáSÃòä3ël÷³ÃÜîÝß®~øÂo÷¾ºùñõöðýí·ïž¾¸}³}ýþã‡7Û÷77?ßßÒ&ÞçêéáBŠ 0àÏüœÿIü0± «·Üf»TÑG +î8\´?9\<€O=zûòöíÍ»ïÝ~h{ðçÛ÷oßýmc2Ï=…ׯž[>÷·ßaÅðs’¼ ¯«W‡ÀGßÄz uŽÀ<ÙíŒ8öÚ¶\̨#CN#ô«¸:k2+؆®0b¸v f7Ûu’ð ¿ðKÞ¦ÿÄ*u›bXÔ`Új³‹½á®ÙÖ˜5|éû £Žµ ôUç®aFè׃!ŸaYe³!¾fds!-ZÐÒ7sòþ=ãW£ÐæùÓó½Di\<ÿˆÙ¾³¿ÿÛK{è›tXÁý‚ß?w…D¿|‰¶î·]#w~é"mÕr•í7\æÅóøy†ŸUœ²=ü‡ý…Ÿ«_¼2¯r»úÿø#~ù; _¶²ýiûË_e{e+¿û¿,Åw¸Ÿÿ[÷ºÙ¶Tr¯qcæjÒÙ8SëÌ¥”©º°Ó­$\3â)BØa£" OAÀÜJ>9ÿˆ L`>w^öT2y)"æZ>‰¹¾Ú&Óë +S_Å{ñ«Möcœ­cÎúÆæR4ä:°ÂÝ.àO>³níÎ6>XŽu@v¯ËÌ{™[Ãz÷oW¯xAþ&œ Õ¯—ûLŠ/Ä +ãÏÞZÄ‚Á™\·äSmÄkŸ¬+õ¤sß;óÝÜzá=7{»ä~ÜId4f»L¡š)d¬–ê* œ®_(°ï˜Pš +ZYÒXÞ‚±…;%: V˜8—|ÂÌnbïD¨Ù¸Ñ›=0{;†Y£œ?*°šµíGÐA¬•QâŠæÈÜëÎéÖò~•S*óËvqIø•]3‘î dç‚MŠ«ƒÄUú¡ I%{Î °ÌÈkôµïnQzɀƸ®÷•W©l‡*:WAge‘£‚ K2õ<޽oêÀcånË¥3šÛvÃðü‰Œ&ÃW©vŸžÒÎgp¯mÆ>\“>™“šaBAVV#@jaóh›v%†ôÊ}Mz‰XuÄ*XÛ±ª”I¬È¢_…YÔ §!Aˆ¤wˆ‚ëé<‰ÙóÓw4F[GKö¢@Ô{ ‹’lÞù‰Ñ1äìlÞج•O[•v3ÆZ{ìB!é®(Q4j)QJuzR¶(ú´)#ùõ]FYDÙY­;)yÉ/Ìj§÷Ø3h-­#¤²$®*Êç— `1U I±ü¤»LápåÑSìeÁxåp.ŠÅ7Z_§•˜§˜d¨]ãXÞŒ,aݾbI(G±)%b§¹<1Ô<éßm D$ÝCõ nç,†ÚéükTÄj7±>ÙxÌ«_€Ð›kØsdƒ¸x Q;‘*Ìu¤ø\wÑ„ƒ ø°šéÈõðhÅs¥)óíÖ³ÕÁumäõ’+ìG›M¿j¯B¤†¬ ÚW ˜èÜI—ï{ ”ç$%–ãu;ΡmUÝ1Çž(ßrY( ³³Æ(¢ž&„Èe˜?ê“Î2WUÖ/šd] Zˆ´1¼LO¾èDÐo¤ ÔÇž(oTI£¶¨i°Íè)˜=M¹'•J`éø:½¹ÿÄ©êþÞÀœíÉl“ ~17ºÛqÚX)…O-ÇŠH}’^0é® +›©Ãn:chþXÌò_û¢ZS)§$dOIKÓ¯„æË÷µ“s‹_¡E‡Ð/¥uoŒu]c‰jd•Z—f~¯ɆñÈdç^rŽH-ŒÞFØurlÃÿÌݯ-ÏÖE¬eµÈ'“–ì˜×4©õ}VñD~Œó¼X§Þß°8“‹lÔš:>BŠg8©²&Ù›ÌF½@"J“žŒUIhXímõªê]2Lû¹&ÞçÖw>4]6Æ'ƒÔáê§Ã™Ì¹F_ÿ{=>[g»ŸævïþvõÃ~»÷ðÕͯ·‡ïo¿}÷ôÅí›íë÷?¼Ù¾¿¹ùùþ–6ÙÀqWOR^L¬¡ ·¾‘ó?‰ÿÆèÐã–Ûl—*úHÁ®‡ ÊlEÏàSÞ¾¼}û/öËeÅÒ¬ +ÂOà;ü‚YîûEGM‚)º +DŠÆRQèV¥é·÷‹Xû?Yeu Ä“dæ9+÷uíX±"þþõ—ß|wýœÐõ³/þùÍ_¿þˇyë#üéÝ[ç'×Oñ ~Þ;|â\oÞýhü/O®öã·ÿúŸtýV¿é,@ñJ@ÎÐ&fÐI=Lô’ #Ê`\o¾dÒÓ:n$¼Îà‰îãĞ櫈>5¸Bžî)7X9ç MA"³B¦8þȼa["H¯\YD'd—.µU/þ!?,‘Áµ¦åýJ ó[ÈÌìÙKT¬‘{‹v†H=†g{ f{µTk”ÃÚ>¦U±‹VþÉeh7÷B_¹XEñ-±ULQqJ‹8Id)-`ö­@P²>Ð4b [ž&ÛÀ³È]îƒç‚ˆ–ùZy¦˜„¾(²F™·+œ™¿èηy¾‚Fž²¨Ã)·v±Lõz®>›e˽¿IQ]´èÚ¤GhÚí~ßÓ¿&úg# ÙØ(Á8ˆ"a*KðHKPºü6´‡Ì DåLŽÕ’•qŽ¥Lû}ÈâÈÒKy8ל¢ˆS…TjU¤÷6âÁžŠ^H¸[çèOEnH·mäBÛjLz>­*fÂÐr+bRé2'¾2‘ÝîYrÙ-<áöL;^+«±)u™º„ wq‡ùKþ'/ò¿âµ”÷FB¸IIM’ó-›ªvvÖ$®±ú±œV)eŸ{­#[ªZ˜:ð>‰Ô´ +2,Ä8H™£]eeVÀS‘˜Q:·åA½÷:`d̦ÆÊ8Íı…Ò[»œEû{°¥j.µ3+<­#P“ã¢é‚£äéÉFÝ#\Æ–CRÑÍPÈîYº+8eìtŽØŽî{’ Ÿº '²®yh£Tõü¬®æyCK8þåLøy0!‚ZÀÌ4JN jª‰f~˜ct1!Ê”ö|½ùìàÖš^EâŠÜB9jIJLš²µ¾s ÀÕ„ó>Â7€t† QVõ ©Y$îF +dLåª3%Á|fKŒò_7™oÝ.~^ :XÇrzä‘ +GiÐÏ.RêéBÊ„)Ì44)¸Ä5azb<‘ݬH¸‘(’>C +rDW>‡-·PT|u¨áUíªå`5¼ÒZœeç¨,áÛÔ¥R’ºc‘mñœ³ÉLØÍA z£Ù(Rÿ†ªÊë©-u€†ÙN`⦪k:ô» ÚŠL„ÖÂn’´:`¨w>Œt]Ì…Áû›,ÄÜh¤žW(}Œ[%šÑƒ(ðþ­tËU™€í³ñ¦½Ït º_ðó;~ö£µ§ë³Äÿ~óíØ9À{½ùÎ_ÅÇ¿üöjׯ¯ßÿ!]ïbÆç?`ù,ÿ°ü›O‰ÒÿŽŠCBdã Õ¹¥Ý¾:Q:Û-*¤¼>QLÓi®z¶×߻­m\I=¤Y'Þ¥‘°kï2«Ô¼JÝ.,¢Y_éÎõ<ÃìÛ³k©²?íòüÞþ ÁBhÓïïý³ËŽ5Ásõ +©¯@Oí§3£ûyÜÒÞÌœ½ÇiZÍq÷" ûñž÷iø‡‹\Ñ*@ü*‚Hûå`^5rñÑÈ;¡t÷emo9üƒbh\ÅæX=[{ëI&¥;—ñ”OŽ@æ€`¥­@µ²~M<É>•º×JÒ~ÙÀ£ÎË¢:%÷¤Û¬Ï¸r³ÔÑZœj1VP;9nÆÈÚBŽ´Y¨‚.ñ_=µúY9ùô4å x-JQ²äƒQ–+òG¯– ÁOÀ³ ÞÕs†‚‘;Áã§Á®Á”øyöuKœ" +I1ÈBÌ›.ôèm2F¬ªÇ' IõìÚ«Q4cáŽÒØZÔ(Ã÷¦8,œmÙ•L`Æ”¤W)^-ç“°‘óòRùî,ÝRRkù3Ê« +‘S +a·è1ÆñJaö#1FwÉÉMµãF µ7]Þé±¾g’Áªhëÿ¥Þ•Fó̾Ût䑺ÿ.7çV"KDuÓQŸ5„¨YWÎ#4†³Á¡°jL$ëíöSuŽØ£´•ìYFZ~¥âo½Øw(c©†|7÷ºåùа³Ì')<‰èjÉÍ%þ‚ «éfûsÓPSùıhÍ;è¨L·dµ›z¿nŠ™XG/!§SZ±”Í®‹.2hPgËô²ýÿˆë~‘±Ø‰^jeÞ•oÒ<1ÃŽ–²“®Fcî+(‹Ö.³Kq#Šbzþådu¡é‘½K±äÛ¤@Ú‹t;‰þR +Yw÷p¾¥v)lÅÎXBÎ…¦-† 4¸,P,†ì\\‹0{Æ*9ùÌ,eá™QåäBíºŽ•QÔàs­Ž$LD”H©†O5m?‡b¨½†õ —¨Š_áÿÆÊ^‡yR´Ã™¶—ûO¶X}ÒzšG 땱ÂîZ£ Ðt{»ÓHðÐi9áÔô²¢¸Ï¨M›gAŠ1Ô Ù9¹w9UÜWŽâBH%³´,`ŒZ}Ä9i´Õº¢eå]Ú½AskT+ц9›Ý¥7¨Ô¹‚%$f¥ãâ[š*w ˜uØ} G`ÍâÀyšSÈùx‡)æ±&äÜäŸM€«NRNf«­•Ö¸ßaIAl ÅÉÅ#Óˆn ‚R§‰Q~tú´•«eQS ³0r‰ŽÑ‡”%@B“l„4ìÇ5õ²ƒ}Q¯ÀÒÈëTýX+jl‚èY Ñ0ôÝj•w_mx­<Êá×"î$ÓÊG>7-‘IÆÀf1lj^vbÖ -óÔì¸S +˜C‹@jAæoj·³H·Ä$yÐ(Ž Apo#€©*; +©Å‚\ÿ”·ÜQCN™Ÿ9ÄÚ^©ŒÎÆŠ"6¤´Åzíî–Hž€Ë/;³åÝ8Kê:ï‰ã¼¢¶Vç|}¢9k•aí-ÌÊleë—œjqñ)ç3ôŸuºãHŒÙ(÷ÇrM™µ¬YiŒ˜XjJF."<ܲP< [È®ÓÜÄMØî7%k\O¶Dc·¥W4Ö—&«™ÁРÜ.€ˆÖ…Ãz¬]&ì¶{.™­,·1ôî-YMw°µ°tpdn7„å +x>B{”m’ʼ‘‡;I¸SËÿ½#b‰~Ïl­…Ìr¹š.o5ÂD¢L{fëý¾§ŒÀ¶\eǰȳàšs,â‹—ý`b87®iú¹½B:cÝ4Ž’ ¥šg¾/U uë—+ôÞ«Ž{\ÇíÅÃHô*Bëw"߯¡rLe”ÀËÓ[빦Rã>9¢OÒãE‘ÇÖß¡–î÷£¥;š‹hô^ æè-ë$|—|Ä¥°ÚŠ>]´ö#·ó€Bzõ'‡¸o]FÑG­í£#My{ÌZ{ô9Tc]ÍBOä«ȳh5‹n"7µìG´Dû+ø£CS"ú2)ü$ +U£¶é å/¯ÕÚñjŠÎ^Z4¥bñ&ÝSƒàä"2KtDzé¹|ü£.hHSìåôNä›*ñ XdÄDÞ1¯ ²U”põ<¿‹Uš¿—4{T™Zï˼lc°¶9F]ùiš›òI¤ìbaв.G +ë`sÚ<„‰{}.À®º(á9ò8j¤Å#,)l%ƒ›7g6”ç ”VjÎÑÚEI¾Y÷*‚­ÉG±*šº /ʘ§k(_޶e¸ôÂ($½ÈA=hpÙ1üÓ +¤5>ªŸ`0Zû!Õº®< XõÒMƒQŽ ÒR†sRQ‡ÿ›õ*Û±ë*¢¿r^b Èžx2ð€.I”€h ¡È´1ŠmdlYù{Ö°Ï`Ú<0Xjß¾Õ{®ª5ì@Æ77ÞV05'×Úˆ“+r—ZäZ9µØ¶Î#jZd8Åï‡+Ä­q=8I³޲- n‰ü +¼VKjkáZß'!,iJŸ= +Dú&~;Qc‹‰ón4m!ËNÅ bÙøÂ…U 'Þ‡ÅÝ^šys0†R(`šdÎLh{£W@  é|¯fúÁéÓ‚j‰#X¬ËW¦aB}t` MÄÚÈàÔ'q 8oè¢B<’N] B‹TjÞv`pŒ•¢©À/…ر0o¦ >A¼h\ +ä©#X ¼Û¨ÔÑk2ÿ<)l)RbOº·’°¦€ÊXX-¡Ãé±äñ}²šIÌ Œ¶j1,cl5ú²ˆ# ì2ôÔæ¿sN–’Y¶¬“gPþ,Jª(E˜èO‰æ 2¶Ê!ß塪MDÕÀÜðb |¨n¹‘ ’3Ød¶@:ôÒáBPÁTš,™éˆ¨èmŠÕdCxÈZIA0–a¨(IÕñ” ¦´Y)dW"ƒ½›sx;ù!¼IF¤¯ÈÃ.¾J¶M;°¶w‚e”r*‘›ƒ†]:E!a¸„¾¾Ó§ÂÒ²ÉݱÀµõê’9$Q/Å!Mî“§ÆÒ—ÑZ@ê–dHýðª–ÒÒŠ^‰©Kf²•¥\²j>)ÐZp@ºìÎè¡U+ŽÊQs¤5Š‹³ÙE”E¸ŸzNu- =æÒ´¨uÖA•Ô@œ-Å‘’o×™®›ƒI<+½†)¨4AðN& ÎÆ|d9ÒE.ÔïßlÒA¤àº‡ðæsÄÍÅý›M&ù” IÅ&b"Ð!XTZ©íÍúüTöûR·™7é Ž  UÉÍAúPÉ`ªYºŽZ<¨Ø-µïÁGPÈR ¬÷òP›W zûèØÛZå÷ø™Û'O¶û?üGß>yúüõŸ¿Ûž¾yû嫯ž½ý~ûÕ›wÿø~ûÝë×?<ÙÀÞXòþ+ ü ô7ÿ`}~>üý@"*¬}ÞØ^w)¤ÏÀ…ó4eû<üþ)¶ûìÅÃÛ¯_={óãö „¶O¿yûæÅ«¿n>з:ÆwϿ噞l?ň_âçÑENxÿœà„ÕÒ€SÛ›ˆ¬¾\ú8ÇjÇ€†O–ÃÁlJc‘¥=€ä¶²‚ ‡%ŸR+K]v 6œÀ„£ƒ­éM `yXj§R0r^ý’'&b¾ÿ@‚OÚZMƒ¨ ÉD&cBSÆé2©˜§ ÑFÂdN¢Š'F6šV´•¡H¹œ2øœè£gÁCT.ÿ°pj6~Îè\‚®Å+z +-n›FÝ}B<ìˆÛ ¦ªd,ªNÆÍîOô`K}Œü¶´ ¢d+å±üéŠp œ±Õ‹ …Ì&1û ´¨‰(ò 9AÊBI÷õ¼·.Ö™­’¿dšªÔ¦ãåmçHœ4õ ‚—®2u \"y*sö µ£ºØÇ_pG”î«×¯6ˆ‹U‰aû’ÿ“‹'…pètœø$È\±xIPƒÊè>öÜ?³jª +$mÉ÷ÒA)uB§€•9à +Ð"umìÔÚ|P¿_"ø™ñÐz®ÎrfYÇ®ºh™™§v_©ÊV«Î ‰‹' ‰æwÌáçl8?Jêa!4³ŠØˆdïh+ÂDhíÀZÈÔÇ1GOeÒ2)€äU®¢úš\¯qU+„NÀ-ÊŽ«¸ ä,~§f]¥•è3ñc(Á‰¥5éñTÆä®Ñó¾ +ÌuHaÍ!=+@„-ëjAM’´Ç‰:DòÝ¥XùIí’®9Ì]G˜çÏß­Ÿ°}ýßÔÐSM¾_‰$) ž¦±Ÿeö!Ï\ Úí‡Ýf–”Ž`ð›G´¶§÷‡þ¿7úHÛýúúüú7ßoeûíöÇ?…í¹g|ýÿ8Ø——z÷?vœÅ˜(’´/Ú¸FÁìN¢ë!Ú¤Êo]aO¦ÎÞ‹È¿ÎrY; +ܲ éXePê”+ñ+š™æƒ5ñty{¼ËÝuÿÑ4Î4Îsÿ9´?ºLˆHN]øg[§HævTŒ¡åÎÉtžë)²²c—øxÏó4ð23iöœZúåUYw-Ü>:övY¥£¿\d£Ý'ëòGû*j[ŽUo2ëÓÍ̇EµÖÏw¿[3ˈ^P•õ­“îFƒAI0G]A4a¤'Wƒ#^¯«Ž­»#eT^¼KÅ»ïѦWh}ösìªÐ^ðÞ&@ÎîÁ¥¦•YX¨sï2£wIdM½å#aä˾ÌåfbeבŽ*äs\ªs•ŠVóizËž]ÃôÛ4"Ÿª¥TWˤo<ª*%Ÿzîâ]Ñ–‡×‹Å5Yjèž=š+¿xD øÞW+`wî^9ŠbGE!UÖÜÙ] °\ŽT ºÏ1–}=ÛQÌÄÀc¹ +vÖÖ×wûŽ”’¯ßÑ.¬ØÎêµ¹$Ót¿H +ê¼96Gjˆ®ÚÝUùÕ§îª[ï!B».5A‡ç©öôƒˆõè°KÓ‰.Ýí¾ƒ +J®º§´î>oæôË/±vݯ{³Q»Ž?…éwÿ¶}Õ>Õ@5ë˜^/gû§)ÿ¤jÎ3cŠg;ÖæqEr¬×{×ibO¬=hÔØ¡§¥ö¡‘©MÐ`å}½ùsÕ¢%¢U†ÁÔã@®VYº,>0 +Êj&FC—|¬W«ø3I%;ŠîŽší®Âz0G8è Ýc%öÝ"½€ {\¬ ¸Í¡$ŸOú‘’NÊ›‘.CéÞ“À¹¯ÇÓ*ÚBõ̘ìZZ+ÁwE{ëM(œ/7S;ôÊ;ì7«ë|3$ö_Jd±Ókö”γío ìÐ.¦*i\©UZ<‰T•¯Â¼ÒàuŽl£!3gÊ´(‹"aN ,@BJ;º‹dBˆÀz)W6έµòÌ  [LZË™Þk=©–=f†ÜtÚiOÁt„mõøꦶjý„9ô:_,NaÀÀùàdJ› ×“ñSÒ&;ª7Z¡$µ4"¹ÖC¯Äy¬jÖåAÏàÝ')l$ÉïÅ‘\‹O•çå¬Ñ¯3Ésµ!„{7ÚÍue" Ÿ¥åû‹`(I†(—s“ uDõp8F(WzÕˆ¶£·M—!ŽÓ%©Ž¦`Fò *ŒTý¢²‰Ž´Kñ‡â¿.‡è,Z®44nú&Öœû˜D9Ù;”á‹‘ˆö5»æ(‹½ƒÞ3·5"l"ŽIÔÇz«²£›í:Võ÷ÚiqÕR;š¢>_—ætGË;¿S+¥žVÆ Ÿ´AŠiœËá:.u¸Ï¼ÄUÑ¥@izSê9qŒpéÖ]½Åáô\« K‰ÙwI‹ƒöuÛ:V`®Ö¬¶‡D¬.îs"Äk÷Ybp¤…¡rGÞŽ`Ô8Œ +jí"Vô³ìâ²7¢#@37T?Ö).Ëy¾+‚Ÿ3¡ºÇŒpj¤Ïë5’Êi$êÙݼ:ÇivòÔÈÐê(LIÓÚ¤gšD*‹üå¤ÿ“õªëÑòÆ¡幩RµÄ‰óÕ^Q «n‹J«Ž´Z!ZhaÅ̬¦S!þýûäã ]íH/¼ãIl'±ÏAž¬É¤y&e—Œ&jm•UØ}9§Ó²:=²¥Fã}NºRC99a.¹Áª~ÆE÷ŽUQÓ[LÁsT! ï@É<‡çd–Ä·U5¸›þÁ^+d@Ó_*ÝOg÷#Ûê¢Àè7¡–.¾ÎD o‹ã¼ ±8£ÔÂZ;Á0DÄÏ/PKäYîâ,i2צfÕu{f-R·¤ê;¥—Ø—?‰AňŬîžyÌkeÇôD¹Û«²à:29Õ¨Y›ø¥‚Kåí”Ö–;u +‹?¯ KaE±Ž«n…Vïªé¯„!ÁÍÙ}š†bêQf×+5Y6b¹{¼uØúîf`¹+DÐÁñ¥ŽuηJ1fµz˜þ0-(J“ì„s®©–µϨ96.U—uXq9nýŭºû÷"_N«Ð¶Šö£•ÛGv]é<â`—‹þœ©Ò7ŸZ:}üˆO?îÝ?.~úK¿Ý{øòúçWÇÛÛﮞ¾¸}}|uóÇﯮ¯ßÞ?äˆÒÅS,ü 횪0à´ñëp÷Gøóó¤ŽË£âc€ªÚ~TH/OBÀ÷÷øÍ/·o®¯^ܼ?¾€éxðìöæÍÕozîi¼zùÜrº|Ž_âóÑA2¼x‰/e™WX²ŸË­²‡8_ÞN¹£Ñ+(ÿÜø->‚<®®¯ÔøpûÇø„ã{ûx¦¸þ€GßÛì -#xÇu|i …^Ž‹‡¾ µÿn”BN6b-Y9R\'“réo ’b¦˜˜U]¡˜õÙGއÿáþïÅ»•¯0§ãâ½ÿúw|ý7Œï=þqüó_áxÉßÿ_2ûötWŒÿÝÿr_/f€hÅž]¹¤Nܚ˜uKø$tóYâÜõpî9@‹ R+Öí»eZ“i¾åE«[û‰]˜c?‡´d[Í~!Õ€ÿø8Ê£S|7Ø_ GÓŠßÄ - qˆAÍuy +Yà)}F#þwE¥ù³‘í±{ÙP?}sgc|¿´íórYùÀ6°N„þÎÚ3rø£ œ_.+óH'ôE¡ùk  Ù‡âX媠eÏ–§¿œø¾%åJa 1æþJ![n¥Ì7ÈÆ¦¿¬ž&ŒYÁÝ +mgá|´„Y+®£²uý•%£`ÔÈb¹ÖUömÁÉèØ¸*_«_œòضίÒ ó*«ñ™J•ôä®0ªCÎr׫¶‰*³Ã¤ð5våa‹ƒ,bE8ýg3HÌãR>á«P a“·v÷—kà‚Æ >*‘Ã@í7^¤Éi£ +Ë0P=bNQ+ëŠSwHæ™0œGDOZgöpôåât…´ñæ™§½½0Ï…Øw¢Ü=ES+®ƒÊYò­«ÔַܤT ‘B•­Úl«.qý¨ëQìLøÚ X%'Í£XéÇQ#JÅGŒY`©xÈ]Â^×ð––??%¬˜c³æê´ù°¨cörèÍpuöRH¹°6³Î Ù,[^ßÿ°tsc·†Äüð`Ywo†¢ô—r=̲žä–·lÆ’öÎÞ¡æ•G«'»Ó9 ¤ebDW'¶&4ž Ëv³²®AŒ—uÖIºJÊ*gÌ©Ù=2)‘•CDØÖð`á¬Ü õÂãcl¬BÛ·Tûè Ynl•V –Þ;!ǸÁÜÙ±e%6•YF†Â1›0!òÀåê©©  6|£îîÄõ4¶¬A!žµNœ›;cc§`NÖºæcŠ’ØÞÒé/‰ú9Ú#Æ9×h[\­~yÉä`à4FP®þú6¼ˆ›ñDjÍÚ=¿XlJÌLZ,4ûYÖÁa:BÇmíd+}À|VbvÈ¡2›ÞÙ)aMöC,là@©) 6‡Ç5œF›…-HÒ¶ü‰”m³üMj‡Š˜äÑg;Q?€ÝÖe%“´4kf$LŸ³æ„¥ËPqs‡©äJ)§˜0$O@‚m̃,8öOÚâºÅ­K `msJ1ŒŒøøîD-}¢nhç0`&ÏihܨŠ/“Ögº•R¸ ûÌuP¼'áÈÍAyP· +`Oì+HÉÜ(2•³­H#!–T‚Òb<Í™–0c+ÕU +)ó­d”T£$¶×8ÜÎ^VIº ¸dÒw%µ´©Ùã’H©,UínjjÉ»­ h¦5a&lè x-eеÂóçì͸ŠÊ¸Í°v:›ÙÖMU”tŒ6 döKƒÄ°JwK¡Þ$HLEYåt§— |ÜHbcnکȈÙê{áx Ùñ~ ”Ì^ ô¸%æA×óÞؽ$“ËŸ°Õ‘uú‹«òæn‰,o…ß6%ë‰7²¯ÒŸÑ5ȧ¬Û\ÍÄ»ýáho™r(¦Y­>x1p̵ØáăZ¤ÄJ>_7;ÒqÂ:ºá×!6§›×é¸\VÖ »®Ý^@I²‘ sI—‹ iÓ7Ÿ\;½üˆO?îÝ?.~úK¿Ý{øòúçWÇÛÛﮞ¾¸}}|uóÇﯮ¯ßÞ?ä^ôâ)~4 ¥ aðÓBú:Üýþ¨ÐOJ*½<Š!>ŽÀ#Û_,OBÀ÷÷øÍ/·o®¯^ܼ?¾€éxðìöæÍÕozîi¼zùÜrº|Ž_þ—ýjÙi‚_À?ø Pb'¶sì•"õ ¡ +µ'Dj£þ=3³NŠÈ qì!i:òc³ñÎÎàZ¼H…ûâ K¼3ZPVljœƒù±¥Ö¹wmQ•V5 sP$Ñ ® ƒCó*ëž´Ýï¬zT'x-hkÇ–•xNE CF'ÃwlOý«¶"° "*—dv,( @àµFŠJ>‹TÎç%ψ¦B¾ô‹–'H–—àJä}™ ± 4Úªï“ÍË”€ªÙX3£ ”^••W,”0Åa†'ÒçhWö6X,ÅòM÷åZ +·IáJ“|æáoéÜ}-*¹r«Oûѽç„×–T×_ô÷oG׸G÷üR¹ƒÍØÞòºJÖNwÿRñ²" -¤vÎ$Õœ@ßAv¬'4YtMÓyE.pmN•B‡ŒŒœ—–*y½þ½aø`‚a8~ endstream endobj 51 0 obj <>stream +H‰œWíŽ\· }‚y‡û'€ tÖ¢DŠRûËv EŠIÓºÃönb·ÞÀÙ­á·ï!©{uw×ÚX`æŒDQü8<‘å›Ã/¹œ¥¶ë§TúbHN] ‘”zs„ZR_£*¼<ÅΟ×ݵsü’k].W´Qv´×ÔçI·Ö~³YÉg"Tüi‰†C9¬ˆ¦2¬Ü]»·RJ÷›ˆ4雕RJܦµ¦›•¢ê¾®@85?­¦"9î9vJ[ÊqJ×q CµPµ”d¢YêgÖò@•rßYè徟ʑ‹Ê93¤¥¢sw ­†çºùÙr +{•pŸ5¸-ÏLn(ŒS©:QÎŽrIðޑΣ¬<¥L´Œ\=]](JÊài®×Ø,…ÊD-W~ˆìŠ2µÆwSTGêK®»+åhåÆ[àz+azÏ÷ÑZvAîIÂ_”Ê)>z@²”@4Sxßõ´¹ŠŒ { !oPÝ +·yjÓÆÉhzßÙyÀÛ ·ÞQk3fiq«Îë8G“s•!+æÌ•¶Ás¹ E÷ã’5ÊFiìK9 +É+j݇ Ea¶ª³M³DRKOµ„)Nˆ{ƒ_Œ#¦½4&.@ÓÞ`F.*Ã\ßu‰oÄü‰1DygNÇ@pÖ[Ímcâ6ZSŒ ‹Ì<ºÆµ¹§t q+”vžŒ‰—6s™ò¡iLKÑ:;=çû£ÐЬw§ðÝÇêþ{û!x¹¡­}æyxïÑøó6EÆxupùûŠàÖÚÕÊøë˃‡Ë‹þ¡oŸŸ^_,?\{õüÕõÛåɇ›ßÞ.?Þ?\hI øôÅs,ü"q‚‚LQ›Ð«_¥Ûÿ(~G'LÂgµÔ^Ÿæ”¿ÌàsÛÒêõYJøüÇ}ùîÍõ»ÓÕ«Ÿ–?Z}ýáÝÕ/K8ôÒݸ8i>=\þ„Áß½‹$xøâê‡Åá +o§?e]\Gia昗 Oªºüw•ïD;6u¤ÔñR¡¢c(å1§äÕ›uN´xHÔ kV™ìôi´BLË)Ðp%ä »¹øåÝÕ@B9X6f”UÇ{»yñ +›¿û7› Vþ…OøòW|ø7.¼ümùñ§´œ›§ßŽ„¬Ú#¶(*•qy TMÍ—ŽÓ¨Á6’4T:ø‡cAu˜X­ÕÞGË=#ÿ:¼þ|xá¹v´ÚÃÙ7Ož<~óææò»Óõ+[»kš¶T ž&£¸YÐÅ‚ºÂ\Dnñ(þÏã/@F1’,–´|<ˆ‚}œK«Íë¬ +Æö¡Ó0ÖƒNÐMjýÓ ¢Š{ŒÃc3Dö´ãv¦‰Ð‚Í$+ú‡¨hÅH`Ô¸ ‘cc rŸ»X/Ø.g ›º0+½Y"lläß¿¿9t–‰1CÜJV´¨uNg{ÒâO ÍŒ™(±ÑRKX†KœT›¦©˜A@:´±:`ݬíl¶úcžys¢Ì@Ô6—{ ˆG1±pl¸ 5ömPb±2±‡iSyˆCgPät1nЬVÕ‚:1qkâ ÓpGBÔ\$w˜{kQǽü渨x0޹C[ 3>²fÖ}°ÉfœÏEFù²½›ŒŸì% F€Æð@O\Tì±d“.È…*<*çñªùa=ÃíêjJMÁatGëÆ­5…O8o#øÀ®®QS.@¨6¼\Ä‘ÚÍ+7Sj8Oì½e"CÖ-6ÏíÕÆ!CñØüd´ºU¶7êéXPÕ®"áy•×ÊV޶\]/Xá¡hç°¯ Y ymRÔ\Ù®µ¶ôö€EÎQëÄŽ +·‡)[Vü ËxM€Z1¨PÎGFL3Y(×-’hô!¸yØP¬`•»ùôðóç¹#-¾¾ºƒ”—7§Ë_O7WçËoo_ýz±\žÎ/v¼qsxðüôþ?¯–/O× ñõÅЊ1"mÜhÿ¤bŠZ:tsõÿ´üzðYÖ-@Bð?ƒ6\jõè1¢I^f—- 6ý«´†uÞÄÒ¯¨N†!×jÝ^ˆXŸlŠ[Äwï4µ›ä¿™ö¶wë± pÍO¦lª¬¸N÷ºµ&o ¤Äùëå¶[×U…á'Øï°nÊEè<.[+@‘P¡¥"R…ªÔ1¨(¶Kâ´äíù¿Î¹•¨ØWÙ^Y‡1ÇøOãIjí ‘…‚˜ÿ«Bôd@`Ðil–½ ”îjaSXfï´v=÷ÛŸyÕ{‰ýÒø@¨Â5z.¬w~(0³yJšÀàÃ’ô¬xßÐt (|´Èvò«~Ž\÷²~æ +†%[£±&¢.¾"“Sª‹>|] „ s"Ýê~¥ï²æ±3M¤z‹„>1‘6Lµ©†ú‡œ’ ¤§Væ­‚ˆ:²µL)“Æ6VE4©œ¯è®J8“pïé‹ÂÍÖ²PÊn>㬦zní®RÅuÐZë´N£àÕ¯²ç>%nýb¼J\Z§C'T¥mç|RX§Ôîy†wm‹Ã*/4P‰ O2$ +éo‹B§ÄHMÞ +3Δ–ŒFÔåêŒ@S©Òƒydþ+ ß¢ŠöÍå‹H’$£ÉbP“rÖ׸ä_x!¤õz¿´D{bwé>¬YVËàŠ¼OÚݨ¶wa,£ß´_N[Ü3ZíÀÍâ¸uéì^]ÁïúôûÓ_Ň?¿ ,_v mïŒC](±D‚Š ’ƒ‹0âxÇ22¸2ΈOªƒ€óAºÃŒ™™õúJ;Ûß­-(Ø™a¢ÁGKXO«Ó–®w$X*øgËðn˜¤À¤âjÌýG¡Ñ·ÿêôå%àñ‹—̶êA‰X¨Ø´=_À {¯ÐB’¹¬IÕåÜ:~…ð§ŸŽVÂg²ÿ«í3_îšEˆ}Q¯–uÁŸY›8{ƒ‹tVUë,Íg~Æi5ÆX,HÅ”t<èÐZ9±%ÿ‡°êiÁ,P}¡cˆsÊ®Å6eÞžt±:gûpÎù)©IÙ®";wÔºP! ›ôôE†’ÈëºT¢×JÐÕÍœV¨}Ò•Ùn%i3u!‡‰–s0Ò¥¥é,!}‘Üô1Ò{çõ…ƒ¬¦zsiõYÀjÝ®Šú̇¦Ê%?XÑ¢a혊ÑeÏFá’¹/Œh«‹ög\§Ž‹ñ‹¬QÈ9GÈ»l!1Ó‰OðH@n3E‰)ÍΧ>ä`£t+€„.áE^'±Ò‰ïs†°“=/}&äš3òŸaÿIs-G«m+‚ó¯ 3ÖµÙqÓ +ÀÕ*ŒÔñHvôµNZ®ÐìJ‚R1ù¬¶êoc>†³¸Wðm™½*¿³%Ú—*':,³Æån¬I¶Ì>‰ ’뽄rëmikÆ +vk[S3ÐSè®7Æâ·´ý–à¬àâ°*õ¡åÁk3Á{®3UÞKœ`Â4¯ê”l+šëˆÛ[qÃÕOå ]QÜè…d¦÷ö’Ó!¿_×m­RˆÚ!H# +Èç)&‡èMÑ\ò@Q‡àxŸö©5¯tÄ=•HÞW1’§®ø}D¾,ù*~jêi¨F$FÚ…%ú[ḻo Àx“žÓG$¾LÇwþ<ùÛÙiÚú‹þ­œ]Ÿ4kï´H +ª˜‰Š”£OØ–Q×6VQ9 ˆ„¶¸Êv&QJ4 Ë›¤"Iéò$‚ŸhY¡žÆ¢;c§ƒì"rU9ô$Ck&ÁW(S§);-Çý„𬕯cO ª!)3W¿¢ÁrñFꦒ2Çrúfk3€þb$DWÊîóxÛJ4Uº"ÅÈÌKUòeMŸ%jJhBÓ)Mè]¢” +Œêí™äQ!wNô\ÍŸ© ;Ý\¢ùZ@—ˆÀø1÷ÓX«Jnàd{@§tfC~iÐ}ä,˜_Y”gTñÅy8<ð‡Óß/×ÞÈž¿à¶¤˜†R àl3™‰àÏÂh‘tA¬ìŒ¬‡ªîÏ>Ñ£U®´ ñCcÓÞiV£9¿ÁgóÅjµƒÆ>:sަOb>Ç÷‹l<pª5VÛ8µŒÚMØÞ5ÙÃ@Ç^‚;z¹ÇèjS­¨¾ ÓôMMï1¼Ùi4f1»)„˜Ž‰M‡„ìäU’I8CÀ90‰hÆ™žJî4 ›mìO‹ËnÎ:+"ZEVäÅ’ªAÎ{ðà-òô%ɇ/q‡ÑÄ# …çvV1mÌnq`¹¼3„¾aŸ.øÈëC†*N èÑ‘é1Z ˜°®LdÑÊ®]àÉÂé)`2ûSž¹®´°÷‹L?°Z@²Š Êx¡N(@P‰-·~T ¦š½‡yHë8Ö“ÌA!RâʘuGX9b‡ÌLÔWŠ#D?…½Fv›Ž“²OdX¯¤ß}àu+(:ñ%7O?ÖÐUˆh«ÆèÀ¢åY“ ú‚£>‡õjùLy´–v"ŒRþ,n]¶¥L6#?¢#±/òb Ê!T\68¬†Å½ˆ(!§â4#0ñ)EŽaÁ¾I#Y‰­FÄdi@õŽâÄ^¼sÖnÏ…Æ?wê’÷Ý[“¯`õ`·æLÁN*õMû¨“»s{ª{U‘ÓW.ˆDÒà/¡uî  •Ïèñ5ŒEC(1˜â9e &pPDè-ùá©köH§XR—G6y„…(L&½Ó†Ø…%¤xëÈ{C¹•nb[ßò‡…N €3yªñ§þyóºF!W/4Ò¬¾ÉÿÕgñ§±EÁKT°ª#øÆBÈÀCʦœ!ÂQY…ÈÈ6sÒLÖ…¯¢µ¨ŒÌ¼«-úIÖÓäíp1y¿½~øë'_Ž?½¿y|ôÉg1ÿéùÃÃÍ«»§wÏ¿}yó»7ß½¸y½ÞZ?»{ø¯›¾¸ùÇw¯^ùÓyûýͺ1=¾ñé¿¿¿õðþ–ô]Õ¯tcøæéÝ‹/ßÞ~{ÿÒ—o>Õ»ïö•®^Þ¿yñk½Üúxö£=ÿs ehcvä-¨Ù"B°ÙO<Þڭܸx"\ +€Ïžë¹¸î:žiK;þ ÿÔ¥rüñøúoáøÙe·sGmFá+øîaŸ Ô cÏØc·G RD¥ª(´j$PQ• +”ÑÜ}Ÿgy>ªRUU6þfÆöû³Þg}ïOZ·£½ç±pýLJaùàÈSôF, Æ­1Àö¡S(Û@ عëO¥êeàAo0E™æè/>¦[.-Ýå·.ÒÕjj±P:¢v46Ú-_νѹƵ”^¤æ)!Òôe·õu¼”ot(áØÇ"øacì+ùso{¸³Jüî:¦„œ]‘hæˆä°ä2cË·Á ]§Åfîv~|É4ÔH%*ð ~{³3ňcò½åC9vÅ»iþ¬ò²~Ýúx‘Ø ·ŠX9…mý`QÇÇS +É¡hÿ)ì6©ŒèßåcIaÞоíœÙs¿۲Ö- ÈðE‡ªÁ8ü¶q·,Ì[uÐ:«êåOª[EMvä „9“ïÎ=Ñ™„MEZ]Ûã€xŠüV0Û„·‹b1ÁÞ÷†:ÇZCÖš©¦rXðäÄ%ÖñcÝŽ`ñõÔçý¸¬b‰!É~Èú`À½Y€€þq›æÊ“ǺéÈÑ! 5w!>t@뉀cwhD¦uí@ï Kng·@Þ=Ïœ¶èy.—ã5º.÷¹µW‘’f;;[òå>”›Ý|¶8‰»G/¾ÔLI=þm¢«–`5f4Ró2ü;OXÙ‰’—z[Ç%C϶s丹’Çn†” MFï.têçê ž»B Çïìkb½˜¤üÊÈóÚM§à(¼síTô°c?g‚g‚‡£•KyeL†gÝu÷¡hŒ™&™›qᑺ޺;u«½{§'vûûÎ4+ëÄóbÂÝ8¯Z-iÏûN˜fê‰À±QÎ ©"ÚRȳ¶‘›#u'†ÇZs°Å ìP¸ÆŸ†å's³ß0µ¼×`ØMšìò`PoZ~{¾”úõBÜóH”ïUýâúh¤øŽ´-0}¡VŽžØÕ£¶Å>VM–ö(qm¬ÔÕSù‘?Qo½ç5ª³oÛjý°Öâœëràk·&×-½å™nþŸ ÚÎ Ë‘»Ôêq]¬[š¸Œ@ûF ,(Ò™¾f‘?WûêÆõZ 7´¢LD¢®¡›Û; Y ÒjI0™SÒ‹×sac›(ÚãÒòHͳÌAE‚cRÞuJýÜW!=v -6ívÌ=‰tª-b§ÉÒ,¡³]R À+|»²Ü¶¶ÎË ÷möDé#³Aƒ©ƒÞªiq,é¸=¦4çUFèÞÖýû̽(xæ;[°ûv—¨@²Þ2‡ði=¯vA=ä›ÁÇ)¥p¦e mi5ì·`ß@gSdT'Ä(²}Nîª +;¶oéE<¶^BØ4Aw"x¥ÁËËÐÏœ[_FFd>WŸ8XV©Ê6KŒ +­:þ¶œq¶TΨËz/³”lÿ¹SÙ¹ñºŠk`\Æ~¯7Üqg7J#<›š +SïXĺ’› "Öô•¢xÓ¦ ëõDp;¢h0 fã%š•Iú'©ç¸òyº¼¬ùÃE”ÛRaf´ìt˜;³?º•]‘âðì¼>ÂÔ•äûÄ|̸èw»¢cdf€P¹ÁH­ps¸íªM*b¢£7GvN¿4sÇŠ¦âæ¸G-EÕÑ`e.„Ö Í“rB¶¢Xð ½gq3€ô1B"†„—®¤ròc,²´c„»l±U8©ic¨Ð¡Œ¢'Ý~K©Ïþ¾>ypÖ3`Lñ…AWr2Ó++ XìüôS_¡êáoÊ’¦ëŸ ±ÂqpÅ ÔÙAÃÅ-Š©ÃÔÝÐÄYèäfßVLÛµ&vÐ¥RI˜>S*orOuÔŽªøì¨U¨ŽvZŸ}›²ÐÑŽh[@V@³/lÀI‚Ú Í)^ÊRÛåä{7{|Û‚EGB h‰¶}G6ïªq\cdh–ôëv„|+’GSñÃF'©qê“ÈI_Ñ–ð5ú¼F¥Ÿqæ^³Xš3a®yu[7«ø¬NY ùXqV}öާ*hùév‘·tüØ,© ÕóœÇ *–ØV‹ô’Óí"E~‚(=ë²½­õºÆj“Óez“x†Þ’Ææ\ö(S£-ÈøJªÍZÑ]ä2{f¦õp-gIÞ{™Ì ;1]û™y¼¯Îu?°>y¡Oê¶÷Å_õ<óÚ¡è8ñ&íì.§+Űi™Á‹âø‘ÄM9†8蚬2fé]ÓÕ[jÿ<­ê²LÝ_”ú~1’ÔÛÆŠHüÙÉ}ö¶Æc~<·¥Únøé) +J¨ß-¬!ìÑÜ),%ˆž"‚B:<”äÇañÉ3¿G®ŠB½Hìµf)xØ"C5§í“¢ð{ }¬å%z«$ æA‚>ì}+Ðr‚#¤EV ø8¯ééî·ý°ŸúÚ†R½9¶—¾RÜÁ3ƒ© +]ñ¬{÷Ö£žbÇÌs\ÜÙ×k1žBN!®Ã§ œ»ì åÍ ù½«õXû#ú™Ž¿ ¨ÐŠ·µÃu5L‰¼”:/´›‹9×Zã4C/e¨FbFU¶Ý”‡ïW”0Ç$V|®×5²ùqZ•@Ž_ñ,mµJhÚ÷P >–7˜b˜!kC$QW®6ln̮ٛÛXRaî!ãY1g¿F!¥ÙµòÃå †ø\—à,<>æ¶CÍð%Ü_Ýbõx¦^( ÖŽ«5×ý‚¼ÍÙ÷T@ó6µïðTçB­B”¶¬ë²=:×vú5„iÎ3t‹s¡ÂTPLüÞŽÕµG~øÜŒ!ðRcášLm mšd¡,gÝ(Õ]‹vµcÕq 6úÐЉ2j~^´âd8nÿsèÁPä Ѳ%ž¬Ÿ}ª-Ãæ0ŠLÆÅ]hhã™α¤L.Õ:‹}ñ3ù\iä…eñÒîˆ¨ÂøÖ·Ò® $Ó‰˜Gúu茊ý¿ÇÈ8±¶¾ˆ‘ª ++·6Û…Þó2³Dp5´Siú½bïÐÝæ‚ÌôÈyÖÍ7Î+ Ü~ù˜ŠjÇ yUZ}} µ¼Ëpkôù| ÷¸ '÷£µòLqv#â}¿¢gÄcœÍû²P0'ÂÓ’† :aB`°é¯KR˜Ç à¼'¨[褖m®Ÿ•¸vYiž¿z! š¼­˜oNXÊÀþÆOá©EŠÁÀÈÎìkdÈm=óF#°eaÝš‹µ.P)cýÑÒž€¥´8†Ò=4ÄË!“¯à¹˜LÓ'æÑÒ’D™(4—0Éb_—Ø5{$2fkçâg +##jßH;`STDН)›Á6¡´,RFµ ÿ6b"_ÐÜVJMv'8.CÕP ›ÀŠÕŒÑ ÖÝ£HBÌ×çͽÓùM¢ž‰TÕm?pÕY‰®3@Dù-¡>øúáï|ûɧoÞýñåów/_¿zöæýí÷,m·O>{ýú‡Û‡Ÿ~Yö¯ž½{÷âÍ«Ï_=ûî‡_üüòûo?ºýާÚí“/_½ûŸ‡ž¼øçË·ïÞ<óc{ÿÓ‹õ`ýÿ?ÿ÷O¯ß¼ûï#àÿóöáG·§ÿxø€·o?õý×ïüîõùïãÛÏøö«kåÃ/Þ<{ûö#H,¿=ýåáç_ÿ·Ýþ +©sqÚ]¨Í(Š^÷À=Q˜›u79rLVž>ãå²øÿöô=ÿñg~ü‹¥_nÇí/·oúüé‰ù×”O:s?Hù +t•ô[Ìä*²>¥­ã⸩˂ՑËGª©È`Ÿ;u‡rÀ +£Q>¢ªõWÂûçå²cIRÑ/¨¨ Ë’2±DµmÁ +!ÐìZšÍ€ø{αÈÛ3ô uõ]Ìt_»¹™¹êz,{Ì«Õk¸’›Ê´sÁP.ªüÿú {㡇³oêÄWÎwx  @OïÇ^Dó\h „^4%ÑçÉ7ìɶh,¯Ž¥Rl¯eó¯w»;ÖÓ§F|åœÞ]èwÚ™¾‡péLÏgœ“œh:Ï|‡iI7š°H)tÐEí¦}б+âsi“nZÂTZ,íæÌ"‘;¶zÀº§>ˆ·VS¶(Ö±‡M2Í©‰Ã/3æÏ†õ3‰×¤«#sí:6GUžPÖ)» ´ó=§³Ž2WL¶ lÄ7v0 ”8¡'Õ €Ëî>·r2¶¦rQzn~E·úÉ"¸áìTW(ð79m1;£ÎŽv’)"KMvɈŅ˜2Kf…˜Ü+´07ކ6b_nE*{ST¶øR¬KÿñØL¼*’‰á•ËŶxz G­Hë<ŠO¹ìN_°¶x/GLj¸üÉ/å²kzAô&pG’.zM5õ_»4ó¢ÓÇD!|ì/¼$a°E>öËiKœjÁf½ªP»-Î}Ó{8ò}$sϧNÇÂrnÃUP5iï×ÈDUÏÝÂõØSªc×,»½{Ó2iN{XœpU®O…0êBí…U¨_Ït¤:‹ßÿ}zùv“ýóeÜÄú§/û|ûS˜þþ´ñ¹‰EÁû´ $a212Éœ¥![üÕ›øç¿ü–Åȹxý7Åð¾Ó5”¸ÀŸ¥àUÕ_ìqrÙ9Ô`ÿò³‰ä4íuùÄ—áJæ¨ñÖXñq"”nñvV핦ì@~Üv‘¼\c~³-µ(+˜öLÞÒ<IòÁ”!ðä‘'…î}ªÿQè•È? Af×]ÃF¡ø·yWP°×Ò3Â’$ãþé’Â7‡^*ÇaÓÃw]Nü5ÙûÀ±]rq¾š›·Ãéo$ºÝƒÂ•ÙOsœþ¢…iån§F" ¬‡©ÅPdâð¾’›#mÄ=ƒ×ò‹Zh³ªžçá„e„6l„‡•b-ݺÚõ¸èUnK¤GŸÿÉWÜQZl·2½ÑïtTëm0ðO{ˆ¢Θæ*áiêT‹ˆ)Z¡}"SÞ7Ó~»!¥Ï é÷Ëè3"ú }J@Ÿ’ϧÄówÈãO‘Èß¿<=ÍþýEálpÊ~‹R|N(ÍJ¨òöéÅóy`3Ôd½—ÜŽ +0 WúžEg„O‹ ÐÇ›`;ôëÃß_~x3›™kU­½‘”X™ +ª +9óÉ’žèÀŽ/R¾÷, +$åÅ“®3Ë#7DáÎNùÀÔ¸,`0Û^™Þ­+¤»¶½ñ¡ÐRðõí7ÞÔÅê“ê<® ‘  Eê)Š + %ÖšFªØ¾r± ŠùR²Hç¢~zÄi«D½ø9]˜Ê‚±“év>úå!ËâÇȨG°»’šÀ©3 p6Å›@9kÛ‹Öu–ì²æ+δɒJEVÚÄZ1„廜1”Hž Øì±rþ¼YǽÈ'P +ÐC@c“óöòèV_´¤5kê¨äŽL6»<•O„ñáИ B®Ç2‰®¦«3Sùöê`± z +½}hµ¤Ê.Ñ£í]‚EhÛÏdîÓœ·“g’~›á¢ Ôce¢HÂ|Ëm $ù&Œ£‰ BÕÑ$.÷=¾Ú*¯±<^‚@ÌMWx†Œ—eóeÍ]`Bi”O/ÛY”|u\µÝ¡Ù…!Õt‡ÖqîÄõ5èÏ»CÉáè}M$ºñ +u› MK¿4?e7Öûö1ëÈë;7pBóÔFaù|¾¿µµ$qZN—“¬†©GD Ê¿aá3·ê³z¿b5÷XGi‹ÙÀ`ì|8ªç]ãöYê?>ëJýøË±â,RüÄkra „õé{£‘L‰IàTÿi¿~— 1™â튞eã $€œ%®ÓðPißÔZBxØž|"+Wìó‘ +Õ-6[]1ÃEQhéÈóöOèï ¤|Á&¶ekÖñ‡™P-N^Á1<ªUC£ qO×è—? ­%ÒäËš:Íå%Uy¥ûv<3Dl¨hN˜nSÛ3ĈÍôؾöv+R¡ŽßpÚ€´sÛ´]õs7¾‹¦fºÅý޾7îuæz±Þe–3wYýÜ× XâÖÏšÛ8é–ââêø³è7ôä¾ã63æÚyDüž÷Y±²¶Á¿æò:®Œ +×™Ö{3õÎÅŒThA¶v«¸·b»dÜV¡Ëâ’û¦ù÷%ŠUô:f0¿‰ G¬§ÝÏX‘Î(ÇýÍe«´=Ç–Í3-‹6W-=X#y¬KÇF}Ê®ç¾Q/õôkìFؘ?ż"b¢|´CLÛÍ\=hõÚ½>ìZì«&°VOæ–Üç„ÕÉáƒwÈysÇ\Çì_F¡{Í<ÿKtdËŽê@p½‡·ŸcÀ÷ôí=?"åê?º·T6BJE¦ðf4ÅÏ;ŸK "lÞ̨Òÿ’¬R ˜ÅzÍ£%ôöOªVŠ‹+j?ebÒ”ák%”†î7Ú™ñ\!5 +»1¤¿Ð«´Bþ Í,ÜÏ÷+©êØ~ä@#ÇÉ¡î|rt\t׬+ Û;C­ÈõÓ}îÿ¶¾iös2•4m7õáëàÁ*óŠ(Zçˆñ í¼´ o§­@ÛúªdÔ(Êh¾oÄœBj“ƒ¾¯‘ÜÂp¦«ª”kñ pÒÂëu8îWãÙ-$‰ÿ˜dÔ`džð±}ô‰¦ÕúRÄó QÞ!Ux¬ÆB†N =ÑúTrWn Ä®!½Ó1jÏQœ¤i!-P1ˆ*<ßáâ¤wHù)J QôÛvKSÙGÚC hîÉÆ +Pƒ¡?ܻÞ¯ëšO[í¬åÓÇ®{ig¯ð纛sÖãÅÐFs¾¾Äй¡iÒ²p›‹Y3ü²#·W ñîé)äiàY¡)/ÈÃŽùDî€9âhõ£ÆÖ⽋’3ÿšÙw¬:‹JyÌç99½Åy„ÿUz|ÔÞdÆ)<ÜèŸÍ­¨t×¶(éÁ½Ê `Ï8¹mZÊ”È@D6: ²d‰Q›h'°ËœX%²üôLÚ0ÂR(fÆ>cGW«2]OÙ±…ðÙ2ßâóÿ8Öï_¦¢¤;3\0h{3ñ•Îhà˜ 1…¼$;<…J|^¤õ3’7ºfd’J?ë¤4‰ã„ÜìñóÔþ[ÉÔ4Ât±2|ê¤ü±Üì§BAë …t¾B±Ÿz`Z)¾þ5ò{²jû è´É³+Ð÷É{3ù~ϧmÂ_!;³¬'ôÓþ¼:§'£ YzüŒK‰Ô<ãx#DÐÿi.9æ¥ët©òÈó +ŽŽ·(Œ§öˆÆ">ËIMƒ/Ëì±Ó"›ÝÉ8¾£³Vc4ÝœÀ»o{²ž÷»Õfq1›ã]ß¡²´ª·s¼aŽEÝ‹{›*0UÄÐ}ÿýgæò-AÜ!-0i…=2ùÒKÏ)—þ¶wÿÈqE«Í:{PŸyRoï"ï³b$ǽ”ñá?ï^wæ cÅt襦¹…g|fgÿhì±Û5´¼/Zøg2Ô$¶+¾dZi…bt'eähÒ²®Ž¤xŸþ¦§7Âj`Þüö’Z˰N‡Ïb4hÈ¢n»]ÒºÇçIû³/'ÃL!4‡šJ¿L‘ùoBÎsCxÆù…î5‚5Ú/ÄdOhÕBn„Ú$ô”㓛Ϧäè§“,\DŽÊCl‹„0zî#£{zBoÉÜd€ñí·Ó°ØŸû|ªiýyv Ýk´z +‰¯ +á¸{·]··Œ¤-&g(ÉÉs}\Ÿv³çÐ9ýû}ëõÐ€Š ‰1›1¬o@Zsó”÷û÷Ÿî7-Î%F±«D|Ã[¤sØ-°QŒïŒ¡ÕÑeFæÌÞ¯øÞ5`Ú¸×!“pUFÚþ³"Ùk^9{óìq ö³ð™°v~ÑŽ ó±’½ î<ãDIo§+ˆô•^ßýMIJBÜ}¾Èbüÿ3Ð[žÆë_a.x™™±EÆ1²Dœƒ%C‘™DÂ0~ãÜQ Z ÔŠ_Á§óÚ ³.¬VtZýˆ£dÖâ„Q}Éa¥…÷,U¼Gç9y2âwF9Jã̃¸ò…ä_–ŒB÷K*™®i…qéÝ•÷Â:Õç#ƒÈº£ºÝs¶vf÷HAˆ@ìú“?B¼ûp¯Ôp¥±T‚ž˜+8x™¼®ñ£bÉ{à(FËi¨\ÚÀ¼Ä³ê¦+—&ïŽÂ}Ô‚Àô„"AŸ”³(ø.Ëõ +L·¢C›ÑÀêvÌfa&uDšØú•<ç´óÄ"¥È/eqZåì†PzÔ“B2o ’.{þÌ— Çm¸“)“ªàü5ßwfkòMO…—ýGØ`YS¡¶Y´µJÖ.ïwN{|iû‰R¬j–ºáCíþ8¸÷0Oσ*ë¢#áKÝÑ¿ÀÒŸ'È4ësÀëØÐnvYp”7&¸ìѤLìN‰æKp*ðCŠ.åïÝÙ›Ns–“›»dZì?§R¬îר8Ë'k¡:}òÄ6zf[Q²*OËmÚ9GÍàòÀR^à⎞^srÀ¾yÆþ4l¨>§o+%Ð ÕgE>î[u¡ÇÏš± ïc½ˆâÊxe·Ú„!îLÛ^ƒŠw(² %ÜXÓ>ióå2½Õ"ßÄEÈ$£YëŠòe¨ÆOÉú¥µ)£˜»ND ùŽRêÁ;ÓwŸh„£í©€ìá?_]ó©äØkFüòÉÜëžFŠqFß½ÞãîÕ!}§¢ò.™{^v{¿RgÖ°»ŸïyÚÌÙ¨ë“Ûf6ÝÖ†)Êý‹ÏŽD8f.}:0#e×v:H€B$­¥]Œy¥È+ó¼½w/Ìh»dž¥4ÂöþƳÞ%÷ÍT½Š;¦ÂYVÖðZä¥5¿ Îá#ÕäTJP–o”ór¬—ŒÝØÇI'\ðV­ÀStðÑsP·öwºë’€œBaÄé\ç¯ì¥ ½Ë{ç”çÙ=$J0Ò­·J+¬9ü:ä î©¿n@ÕZU8kÔ:üËÈ­bH“¥_£·x¿Õ,A`¬B|×^ì$eÙ+ý¾[Õæ×/“U/1L7–0Be÷ò \%8>íÜø,–Õ‚Y­èoÚï::èsW V…f©Ï±¯©Y§ñ«·=^ü®9¡ÁȶÇ91ª.]4t3нÁKxÀ™J*e?kw¼ß".®ôÔ!OT“5¦Å#ç ¯Õ˜`@‹’±ø¦¥VáB]ðÎTîlîê÷Ùîä‚×pPÈö[¿êËwµU2&Y¸=¡Î³‡ë²ûúæL×áþMlZ‰Í)9,™Âªr ×½N#e¾»âj1‰Ö¯Å¸õL³Ð>¶ûÇË’UÝlžÄœË 0 ¨ÒÈOF~‚ŽÕu:¾·G×àÞÔ|1³ÊºÀU¦ +Ö'Ä‘Ò]Éfþª“渙9ÄÚcKZ¯ÜAÔîÄdŠÉ‹´óc…YØ¢³ßY>gèËÝ–Aºï~õ)÷pð•ÒR„].œÞ³Ë‚ë±&oñ5šx?š5÷i`2/U©[>v{¶âLø%Je£kº¦-­çŠ^4ýƒ°`äV“PÁÓUÜÍWP¨Ô=kÝÿ̬bƒ{¯:ÍIZw¯¡êüDw¯»Ð¶h )[ù9ó¼J‚ÇÛ¡¿“ˆçv‹Áûlتaí\ ÿELRFΨ il†› µýD÷„—ÛŠ^Ç…Ÿ`Þaß,ðú|H®Ù¾°Á6Ñp,'Ä(ŠÁoïõ­ê_>"0ž©ÙÝ]]]µ}…˜dNÿGH·‡ÈX9Ý©Lwê!ñmæ Í 9‘”š C¬Ø;ô_OÜ”»G Ÿ1ïŠXþÊ)BKXâØ:z ØcžXuŸ«ç~b‚™¸¨¸p¸š¼(™ËA¤í¬1ƽ>’ÄáG4§ŠÉIÀ³ÛyâÀ:z`âZê]DB<6Þ+&Õ±K°T©еÄqê$÷Œ­Xv#ë ¥ÕgªÑ×Iƒ‘É8à=°Ij½`J H[ª¹àzlØåAq3Ÿ!¢ô„D÷ •¾ÅÇ༔G¶äÙèð6ìc‘àC…Cjt„~D¡¹ú‡P‰ˆ…$àåŽÙóð t¨çN±[%PAxN#¤zbþ#$¶tš:¡2#DkG( YòE½°×âO÷œD_Åx@«"Fo{’UK°#ÊýžÕ2îÌ "óæj´„¥ˆ,¡|^T.ðRÜ:ݱz÷¤B²³æ`znzÕê§G¯öŠ +ÐÜPz‘å•gˆºÛìÀ÷¦¤šBdÉ…TÀÓ»°HÔ´V¾ä¼4Žl /)s]“xžEå+ÜΡ˜©­!\#L–·!Yh64ÈÆHz7Bfy™G ÷I^(» Éø±i%ìë¨&u]«á[ÀLÕÔøîâ8쀵üØè–®[¤Õ=•VìËGƒ>™Qï)L—¡¦ÚÃé*Sc½0M–MCÑuÅv–eC²Bäc[ÂYÜ- +ëh“±b®R¤škt‘Ò`"}Ô³.wƒðŽÛc$Ääµ››éz´`Œ!Š\Õ¡qòæ'Î>U«@=Ú¤ÓCêÏ=G¸´ŽÇËSVptÐûBßo~·fð’Ü ˆ.íñ…C/„ò°uÐ`dd:°ï*Pêeá®*¸9éiF£ðjG»Í{]3w¬l9¾YÛj1µêM ¯¬A=²F “Ù·}%(™+ùI·mÜP +ŸÊé7¬^µÚ-½#â4 (r©Ó])(Í<Ýkô—YP‰Þi„½èâÝ»¿ÙÞ¡CÚB{‚¾LܬE`C:nu²Ò³j™T ob…øÁü¦eú±—Ž GqjB=ª1ŠÝ 2նЃr ^'¦hª2£g,5ËÞ©ñDìRC9åÎ:éÈÝâó>Ð=D< å®®qËîd…^c:±¡¤‰ÓpÂ-žðÆø4 A‡Þî–ΓMšB]jkÌz'«^ɺK½%ˆbæ$]ì’]ÛLæV+€„O%[¬Ï)`4Vrl ˜ÒWfº6W!©ÌbÊßPF;ZŸ¢u´‹€ä)õz5t"/H`#ú™‹î¶cg°53„   oRr{Xe¡îmu…ÒUÓ: ²ûí«ßpŠNaC4†6ùIÔM#fKiÖ¢ ²«çµd,ã–¤ +Êåôzr áéš+‡öØfcÍõ 3òÆ”½Ô™þ­¦n)ÇRÕz©¾ìUŒOå{­So¶…ª‘'hR.â®…N×=¶ØNÝ¡C"™jz¥]­žEp“Ù ÍM؇YüŽý¸H}ÓwŒ`­Uˆ!XЭ&# Q‹ä. Y›lˆBÀÕÀ³Q¡ãF`péÜKR>D ò$–'P+M‡D"H¢£‡Áe¯sdBr9­‹tœ"Ò—Íx®*Ò ¯ éUG:ýŒôÚ»?ƯçÈÅ䥀´ÿ0hå*Œ• gj%,¾É6ajJ ¨¾’× %ÏÆªPw¦>½¢n"¼Ô0½\¶S˜ œ«G8Ê¢€Æg“ŒºJÓ4bQ+È<”ÎÖIT³™»ñ½Y$ š]ªÌ€¥™õ ¢UoV%ªiM%2è a ,:€VXÙ 8ºe -RVXA<ê +õ,8sÔR¬5$ÇàjõÁh1«*;5Á:28¦Ue­j{°²D.+Žñd –Ó>åâC÷·“ÕUf{:ŠŒgq–4ÍÊŽ€"¼Š~ÊÃ`¡w—–X˜©--(ò‚Î÷¦½„j‰]þù°i¤Cúÿ¾~tÈ/ü¬Í((46 +báJd*±Ìõ§}Ø\¿¢“бf~$–£}ЯÓ ˆÑ@ÓŸ#߆´ˆÉrÌÌJ¬­³.ðH;µáu8,¾yØ×GO¯ÿ??}ôÉ«·ÿøþúäÝû/Þ|ùíû®¿½ûï~¸¾~ûößO/‘Í%€zñåÓ$JEFÿÔퟧßÿËñ!†^l|6êØãyIåÓ’z{x2ô&ã³”ž¼|¦£>}ýÝû×oß|ûîçë/ +]Ͼzÿîõ›]‘ÌK§ðý«—äóôúX_üUÿý&ù¤¼^¼z'ð䥈^L#ÓVNO5'šAqµ‡(¿í$#„uýÄg‹aLaarÂC°}„~+ „œšO¬šEž$”Ь•Sl!b1Þ,‹{ù[£-肯¹øÆ’Ñl0üÎg&(' c:l‰WPêñ4–ºë¶ätè[g„nù‹&ò°` ÷èJr--äßm‹ôÆô”än8c™‘M5|#ísjYóWwÞèÈ— +ø´©ùbŽ Ö²ŽuuºÒÄ7éž‚;ÛšÔöŠã„H;d²*„Ú#’ ¦¢H"_‘µ ß +FÂ}x ´ª¶.Ì«àY„&å.p¿2 «Ô^7ä"Z€b$ú Ûe·£ÇQEÑ'øÞ¡o"ÁÅ$õÿsI, +@2!d9ã +òŒ#Ç–ñÛ³×>=ŽX™i¾îª:uÎÞkÏ1F÷P”­Žþð©MŒãÒ¤¶¢“»íÌOµÈ®·£¢0ƒC,¸Ù÷–óÌ2‚¸€‚Û*tÉËú/9eÖ9Õ^gSÛòæ >.ió¶Ž(íüx;t¦“Õ™‚xOjœUCë Ì+  Õ™fÛ­7Ö;åW {ä $U/'¯3CÎ)äãÅMì‹]§“ž„˜3*¦ê)fËGhÃsè*‰—ðIë¶°„a‡¨+UTg#ÔWÏU)ñlæár+Ñ&É'ö¡½%í"TE" ¿ø‘Šèü<À 6 }cÚŒ oøTÜ™•‚í’u: ™Ùg Ø-“I:熭a¢ +u”Å*Qö‹mï–MPþ~z,”—œXÁfs#ûí0#­,sÀê‰%MæP¬\Ðøš=3Ÿ¾òx¤®cl_ë%ÝÂH`µ6­9Ðø GaÂ>ö×ÖtT@ >° +3q¾é^˜M; ¿.ÔÈ.÷øR4iQÿßeÕÆºœ +².q®Ã94!¬¾ºzYö$ÜÚ[µÊA[©;µöVËm¤\ ‹VË$xp"2Ô —÷˜®>*¦FE÷Œq×%ï¡9‘¶›üaqrèNAˆ4>zîwT@JÕ­´é=¦5+ªY5h¤5p°Ç±„*Ún·G²$1)ÃY®è.Žò+Y®ÃÁB`¥ÖLjh¥ÛÃø¹X Ë‚½`.ÁñíùZoÃòœ +I†!™ Ë ]̦^u"}ø£;äzÞ¾¶`¹çWK<ÃjÆùÌÁkwÿøæxí/—,ï}xýphN¿ì±_xðE/OÇ7ߊô¹ïr•¿½{óðôáůîþøîÇ—w?‡Ÿ÷ã›ïÞ~ö£gwÿùñç·o^ð±¿øé.~X~ûçÿûéõ›·¿üä36øJ?LÏŸ>¼üÛ‡û^¿òßíù·úöÃùäwÏî^ׯ^¿¿{ó{éúï÷ï/ïôŸtüõ’ Qå%¹°ºCõ%P‰¿Ôþ:?`Nܤtuj^í Lr|ÿB¯ƒK®Òýñ'ýÿêÑû£>þõït¼d©gäI3‰¬BÓ(/¸çQÊGÛgÔ­5YÖˆêú'O7×hñ`,Ö¢ëÐ +]¨"V¡A4‚T#°‡ŒÅgo/jƒ´œ~gÅiµ³8;Ê’šÁè½ÑŽ+D?&t‚ +V…üª%úXÈ©¿Î=©Ÿo)v„Žá‰A¯£é¡2ÀÞ)¡>¾=™lA)гì kŸÎ¢€êá´©‹ox¢­U·ÉxkªYÀKù¥*Ý¡¬ú˜T¤ª°vhñÚ÷w¥kÑÆ$¡™˜“ñ€„Ë,Â… +,ëêÄÒ]ƒho/JX­¨ н-åXaãj}žHµOª¥Mö0jRˆ©.È0NVÁQ+ŸÔ ŒDkÉg‡ÛQ Iõ¼Ö,@i©I¥¸K‚Q*+âS¬CQ š(fÂ&Ö×Þg›dthu¹Pxhlj¹–yÄ œÞib|:²gÚŸ\àdqtÚï Ý$™¯þ‘i‹Ï®-‡–cIo«*<3–‡ÀåmÑip7wêíQ*'jð6u¤CžvBܯN}óYŽ¢(%P ÷4ìœf™C1%DGc|ö‘Mͨ–Á h¶×°œÊ„ç¤ØöÂî‰W@1ÝΉoøÂärObäÛð;#·© ª‚Œí_ÕæX3¬…ƒä™byGÏØOξ¯|%vͧL¯Ã½3pHêSÂÿÅ:òÎ^\ _WàóU¬]‹+h6ù®”¤ P‘€¦5/¶D^çª)ms£eL "‡>À3¨Aô‘dX‡rצ…ôÁá7t¯ÙLt} + +تq©T®¥ôÈ> ¡„XÛ(¤ŒÁÛZW ²¾%ñöB€TÌ:: ±WÔ¬I©ŠÊ¡54¦Ý'(e{]y±“~ã+ºç‰ó¢ÒŽ×UcfØ@çëVx5!פS4°Dªî‚%RÎ<=ç«c–kåXÃðHK¥U<^ý»ÅSZÓ5Ô` ]•Žë Ùuߪ®ùìžfùñdB×ôÕ";àümÁ´þÕß{%ìòP¶å 3 ólnüíž( – µËò¦¦¥±ÁÆuÙõ}S"yvu„ØÍj{ÄÙ: 4Šu^}&%ÕÄ; W>¨c(T.ÍùqƤ»Æ!Vh;£íëèÆ÷×j'Ê7= oÓ*aºÚÍlO%Û•Ûg‡£9uGìw¯h9!õ1j»#¡S•Ê,ÇÖ÷ДkŽ=Ó9XâÏ’DÊ‹È(¶ÔQsgzD»,iës´¹ÎéwÂŽ‰Ý©€í™ +šõ5¿æªxJ +fvª%×ÈŽ,ÅÊa“-ÔóœáÖ2gæî\ެþ„ gôÜÂËž|Vxë•ôH£ä$a«ãØfV_Ûó¡¥Îªƒ“_DÕ%É5œâ(NûÚˆ?#–×!0}lÙ.¨G¼”Â7ŒúMç9[¨“mG®PÆN4QˆáŸ$¯¬BŽrúÙî¼åG×kµ©N¿çklÙ‚Ì‹BÉÆUÝ vªmèö¦f-ÀiT,]2Ð,ÔÚŽ;þ7+EŸ2-˳êÆî-ÕMŠn‰—”ÄmˆÅž“±l=ñÍpj Ò³D!‚Vmî‚x’ɬôt*þ{œXjÄ pby+¡ád°ó’7ÚŒ|6ðV*´ÇKxÒ +ƈ3Apz Ìha9ÕAç:®©¥@^“OŒÏn?ƒÑ@<Ì™ ß;äß+ɦ5V=/Üh¦GBNZ­‡{]Õ]àîü''$×;¨Æs¸»H€œžœËsâW°k9·®nè¦3^aãÓ…)~"¦þ–Q_OåüÖªsäRwèçà=f¥Ýáâu' ‹´ö΀?‘šì´AXgJP?‡ÈV¸"T¬\Í#=‡ž ôóvÿØ›HF( +㾃ëm}@¯a”gÉÐ6Ééì‹FÆ^Á…"è˜>ŠºlWwú<]ŒG‚VÙ„œNpì]:KUËiñw{žj KÒSˆ}¯î™æÒô͹¶•¨ñ&˜›GˆE-‰ +„VE«4™8Õ{óÅ^™BÎ + JW ÿ„«0õ°I¦B–u‰áÐÌi@*<úéî\Õ05X/ÛÜ%ìAà„Mì–M­Å±8zoÌíÍWv¸¶§›„ÃòÑVh«ÕD£Õ,µÝ£[ŒvŸN©yõS‚´™i«U KÌŠ}¸¥Ónõ°a+¡ÝõmÛÒÕË®Œ+ÛV«t¢ ç·ëIÐôòaÉ’êæT=·³èôpG9‚IÃWü?°X %©ø¼6µÜ¬·—È¥Úž*Y«ûA»¡+ ÇüECü®mCó„d ²S1ɲv3ÝmpÞ>¾„à b<±¬Å;úIò¼Vž”ø…ö×zÊq0•­öMûD³Fz¢DòÛ±àNafM òé¦ïâjP?d¶ãëf*.­)ƒZ (ôŒD6¹ÎÒø"|4coM"‰b™DE+ss©¢ìÎ/€5Õ“àn|Îo¬[ö_:k'‹TµWê’³AAk{{ªz—èó§’„7ÎPu:lLm+žÐ÷G¼Ò#ÆJ&a¬Ñ‰CZ<ÚGÛÖ,¸Y—ôÄ~Zš®@Ýg"º¹DÄÌž}ïˆbäñ˜TæÓ ?è#è°ÐDÿg¾ZV$;Žèô?ÔÆ [Ê÷Ã^ÊKƒAF;3ôÂÌ¢%3aü÷>¸u«»geÍB‚RôÍŒGFœsñl¢ +ùÚ£oö ŸLÍfìÒr×/<ØëM•×R1ÔÓZx$[)É”jPáºÂä +e $6–Ô•Ë.¹1sŸ”ÍZåa¶Ôâ@D¨ÄèâZ´Bÿ›q "=ȇÎ%AޙŖxîxÁº‡Æn¥dµ9›Š t!°äŽ Ðèe˜ÔX2i)›Aÿõ0eg¶f/š…"õÜIÐüï Ôòèðj]„ο >–Я-ï¶Ú8°S &UjÊíÍÿÂx*+òDkÆÏëe …,Øý>ñ’ú²EÍñ©x VGt>³â Si`1s?Áûå‰JWVÚ}›Ð\…^˜qýýú‹Æ“; +õׇš¤õ :òR8K«.ï—×=òô¢‡î»éW” \ ¨a_î-4BkOt#ÅWx-X@6 §ÄÐIn‰3¿K¹üôAB®/Écò7QñY›ŠÎ™ƒ–lswÁ¨zé‘*©R{³Û±›ÑD•ßJà8FHÓJ¬àŨ»Xç‘dŸŠä;p#“s¬Ñ’žÝÞ‹< Ê)ÖŽÑíO†×—!<…iVª¶(‰.Æ  Rê"Jë‚ÓÎÕ¤8sÝÒú ËTÍ–beiƒ@ +elC–0e9·R•mTpÍß­$kR@½Y¥4òÈZG0ÐPã!AÓœa„9BkÉN@á¢\SÍYlRhW*Nð”qî†B.Ò’/ðÚî[³[†u ô` à!Aµ;ÿ¹P’Ž ùC¾æ–U„¢ig@½;ÚEm6D“’ ,·ôq“—æXµ><=fUoªï\Ùœèb±Þ]ØOZ$oÑ4ÉËHÓ â›ÉÎ)YÔP÷hqæ!ÄÔW‘Æ Ï;ÙšCÌþjô$àG+q=X®>À7¨Mv7!r;eí7¸[Å…H1Ù'0xsÂëûzœÑ›`'2į É%;^/_P!–à‹Æ}ÜÓõ|lGr8¤¦A<µ.ß„‡õ¹ +À£-[.b&ÒÌ\}ÐE?º–0ܽòwZ}žÄ¤xÄ>1aÓåÇäÒÍŠmLx¨›‘œ ÞL¦kº4 EP[±%w¶ÂVÄ5p…IËÊyj¢`€7Kç¶Ù¼°Œ²} ¤Ô2÷8RšH“ˆ9 ÝBŒ'– ž[!¥ª6ã¤ïΠzß|×z`,£±-+w–7É¡ +¯?B(1H §®Éê¡ÂŒºJJË« sT &Ö‘²âš-˜ C³L"p«`ª.]~$hC5Y&ŒÂU…vÒ%]äf€ÀØ_•{-éÿÍËOïØ„“cPQyjB4Í¥iÝóH5X[Àµeޤ•¿Úž ƒØ‘à>­ÐVà°ÀCØÊqÔÊ›|‹®½Ãp"xàÇö@úÑ<}¸# >GŸ.V8À¶ÚÞñÒì†A)ŽÁÁ¥nHfÏÉG×LÉVä4Z ŽA +¸+‘›4•Ôà±íúa%ð‹v˜ìF±Å{PNÕÈÊPaÔ0|#5ÖÂÝGŽðúFMbºßa|YÙ÷ùòî_xï¿ýÿïýAUNӵ¯Æ×¾3õ ;˜êJ„µ/×oö~o2Ûåúê;ÂdÏ/n;Mò郧©‰êΫˆP›Óe˜Ü&Ghwß9ù²WYRòhƒ,âµDäl<¿2¦®GüN5m%1w?ä0=éèZÛwœ!ÁØyÛ½I^ÄiáḠӗU¶Ói˜ìôîî»3…ã²W™ºÐRå <éó ݉^oª +&È”&“—“›Épž²Üí»Æú÷·&;õÉÓ9ž—‘²ÊK§aòÈÁݾ»O+n{©ó¯ÁI屋ó‡“IÙ;T(Ùf4¼6%ÆV¹þÒŠ Ð{DZîÔw%|q„%°¬"5”83ž–@Ž‘] zûl,Cè9ðE û‘¶tH4ÕnqB("|#3ÿÃ?¾÷éó_>>}þøËÏ>ý÷ò'˜¾¼À&±jþöòýûÏŸ>þüÏË7?üðîéé×çùüß~{ù#¾ü3þýf¢ÉLNÚÓR“vUIÞ=ƒæúÜÒ¡Ð"Ò‚IRׯY§Ä ùqŒr`w³|¨J™ƒ{ÓÞ5ïÛ@ÎqÍ5ŒÒyrÑݑ͂M{­!ѤsR»T¼ÈråÈdÚz“êÓÿ¿Ò#ü6ô‡>¬Em‚4EÊÏ4BµlÛp5µÚµ·~_ PrjõÀØX°%•²¢j©hÔ‹›SÔz Æ^Ó…äÉ1vÊžT`'ƒvm ã YÈ»ì“ÜàÚÜA9à’¦y…ûB¢_kxõ¡„²—Õ°Ç…Ití qëŒÙœÙEÝ5æ|®T]#Ëy e8´®ÏMÏÑòè/ÛŸ¹XoH5ЊbÓm8k0~e8P¬ó˜%ç|sA(›æïI(6»µ‚4˜!5bë˳¨ïƱ.‚)BN!÷õ4={¦{>®óQ˜ávK&Ä7Cÿ¦| “Ú“†´]o¨dºD{-jÜ'G;ÓŽ“eMM‰÷:º$Ú¼MókäkųL'¬ Æd5P‚†¸­¦Æ™ç:À +‡ÙtbøwcXÇ j`8h¸Ö>G>¸S¶ËæÅŽc>¯-ô$—±:>€Ýü†8©]”L%Ô¤½|!Ïß CìÖÚÞã¢÷üÊ㈗oÇ\âß Ånw&6"z²Yðݾ[XBïâ¶{“¼úèi\V@çmåP[§×ÛòyÝÝwgqÛ›\%Æ ›@Kû€iyŠOÛ1s¦T¼µ‰`0bep,‹ç0¶½ÛWÔ5ßÝto‘?ž»Ùö9À·½qñMïü…Eó{Du|uF~Üô&?f¼Â ÿè ±QÀµI2sRàOÀ—Åkƒ&Ø:ð\ùMÁ* +J z.ÿáB™³ÜdJË c'Ý&›@Fø4$ ʆaf@ø^§M«á«+æû\¹*|”©§SO Tl¶æ£+$?¾Ë,5Ež’v³ŒÈ¡”ìˆAý¤©+#Ù(N +ØEK|±nÀ3­Ê¶_i[Ià$뽸ü]†WTS/Ìåe,wUzzxˆJ%؀¥+!d¬£¢Nºn÷XMŠ˜³df˜ZwåàdïƒGTtœ³+!{Àý- ±t´^g„´,n#žßH޶ ¬4Zx­@Qפ“—Kõìx¯ÞIG¹ìï B;j]ÊïÝ­¾ŸË\Äö@µ)‰á‚r–é·~,@º>cÞ€ô +$ÇÊ…s¦bÜ”;—\Ün,/5äó†7ÀkqÔ¹@±iqSZL 7Y‹dæb§Â¢Yâ9yA·—ˆSp„›Ô`|¸ÅçÚà%È׳¥W5 -A‰‹JmF¬­×=`ƒî@8\^gU ¬pùÜ +úO„Í…ü^\ßT½dÀô°Æ иÙdør#x9ÛÎXj9kh޼)þ'všÎ€Ô[ù¡7¤)§„áŽ-‘zð嬠e¯T{SÅ`P¹J&Æ8o38•<—R—âÞ°o¶0ܧÁð^,·p–8†µÐû‹<—ϵžÂ÷£q(cÖ©éXsS´ºš‹ù³;¤c u7î±.,.2°¸Ä”4ÃròüPø†+T¶v/†»¦çFØJXÊm¶øHªçJ<Å›Í`!Õ ÁŽj²{ Qï+ÜUT7îî(EeçÁwœ`T_Å‚KÙ,×bU66 0ÿc»ÜZ,»ª(ü ê?ì!y¨°î—G >(ø’Fl ¤ºÅJŒ„ü{Ç7æÚ§ºÐ4Sûì³.ó2Æ7³&HµËjé<‘ÿ–KQHæÛ“ouçV{º¡ «ÑJ³—3özˆ‘ÌZÛ Vâ/ö“%ìƒVC>|ÑçÂj¡© ;ßSYK§„ó¸ £¨.áìw­±ªƒh¤~K–DfuŸ[Í’j )rªh%=Ì}‡‡´éC/¦C Ë–Ì£:ÆÙ€ 1~šr=.¦êã½êQïXL£5ÙkçóÈ£ ?•ð•6¿°g»ƒ‡6ð&R­]·çˆlr¡üóS–׊ꮟžÆõÕ××Ç¿èáÿ<ø¿hi`Üçßüö9}ÿû?}øõõ‡Ÿþå¿Û÷¿ûü÷üxž|õÝOÿþüóÏŸ¿ôÿÇ_žþ£ÊD+%}ªÚN¢gÞC*ÄÙf¢•{ý§Uf¥ûA —ßáÀ¿ê?êÃ?õè—«]ºþú·t}b«ï0qý°‰ºØ_MI½h®TR3 +XÅí™ñÉ2†Ð–B݇GÃa%AØ@‰‘AZ½Udí6GûоÑ^ *Fª‘u;w¾e½¢Ô—Q€Dá71»‰¬@OÉØÕ0]#lVOëê4ª¾m:ÐŒùo$FõU¿QäU+¤fÃzA@&%Cáêt"•ReY¢M£ÜšB,zu[æ¹SS7”îwZì¤Ød&,ôÈ[ȳyû¢t›¯¤°I….9¸°³þ.Ð’¾J]¸ÙÖh¥_¨Ã»ïª¦(„©ƒäK!pÃ8#Mòƒ€xú’Üi™R¸½Ž wÖU唵lè°0fÿf†þ)r*Çlªit·U“›L… f»èæ–bF‘Š`)Ú°/„HðQE‡¶í0#HC…†ÿ·(#>z«`Sàpí1¬êªÒ>XdlXí 9 ^Tm æß >¥ºYáOÈïG÷C»‰Bë&çéa70/ér.Q0ƒÊ¦N¶¶Ê°è‚-õ)uÅAÉ)»Q ² ±¬"9šO©ú¤Q.fŸ1¨:À\Å¥g DÅÖ "tªÖ¬Afu7 ÜKð ]©x7‚:t&D; å"¨à)¶v·DÉ0a`¥ùäk—H‘A T2T pZΜ5Âí&)bqP/ÜÙ¡¡Ä }¨¥¹L‹›iï¾Û1jÀ ÀDèØÞ=í‘Aª|’~›AµóRµ¡kà!õøMv¦÷œ!LÒ©Œ±åºâVƒôZK‘I6·Aõ̱V€,tç˜xÒ«*Yï|«Ê碷“EJ—‹T…¼èÞDr$C÷ +zMd±0Á`±O…¹ï©ª'^€¸ežh äätfq b´ ƒÚÈŸÉ]%>èÒ"KE¡%< +AŒZ*SÌ?¿NÁ©7 +oè†Cfò(^g„ÓsÒk<Ë>¸ª˜Ë宇&ý˜¡¡Å g™AxA.ÏmÃk¿š¬èj IPeNáŒF¾8ŒÜÖT j°iE½¸Í”KJõ$Qš Duˆvc¬{aÜì 0¢[T…ºÜ§Éd ËÉQrî›Êª!fôu|?”„‹î +§º´2ó•‰C»hɸÔg¨v8ýº'I§h׈9r¬ßô”΄ªtS©«ªDÍU§‚Dæ«ëqGFšï¬äædMÓ'µùòùÀAt4æ@Ü æb~úBÇ‘q|¨O¡Ž%?3•(¡±~/&SÕšBËäuµö¨CüTzųXÎô-„áW ku5‚L +Õ@û5Ò®0@mbo\Ò54Þ7Ä+i3ʺ)üü~.4Qœà«+´J,MǺF ÕéZ’€åeC޵æšj‰ûÙë“:sçÊ“¦â•¦¯ð0 QïSHØ<*,·ÄËS—ìlERJ³bÈL´˜N#;¤ï2¦½«+A‘1øWªe[ð1Þ¦]ƒ¼Š+É\®6`}sÖƒ`4DŒºøMt jÞXVêbX—K=hÚ…é*Ã/ v¦C»º´ÊZÒßM¿ÄÐí%@¹ÊˆòÑm›Ïd¡ËÒåy Ux‹ÛH#j þ<¦²ªåÌe9§æ·V⺦¯S7¬¥7šg˜!õå +’K[Œ8¢ +$¯<8 :£qvf0p‰Zì°}öÝG¶4{vs—µ¹s®Ýbÿ€E…qF+ÇŸ»:H40|TÙì-%Ë1‹ê¥WbXÑø¢¨uˆí+Ç{ìPI”»1³ë3l€¨nÚzB%•Lh”ÖÊBW#VFtL“æíê´Šµq¡ò¤(ô%A%ᵌ;ëhš¸²»¸Ê®ìÈòSƒtp( +¡ä;ÆP{?­JË?´oëù½ ÷-­CþC£{™qth€ô6Õ¦’“mœ*9f?"¢N—?ŽpàI—¨‹U}ƒoFÖý%”Ë›æÌ1ÃGU>Kc%-[è{­!ýÕðsI]XþªÊ e*‘žõ +žóG@Wð“Áe¹M`T” º…in°c;Ý'í£ ?ÊsNÆJSbì’èËô^Ã~ñ“¦ŒË+j)õì~¸‰íŪuT5ôD§Šì’"b\e.¸Uœ]HʺœXz©Ö(säÀÂGଷW¤$l›ŸmÈTÛÓ¥q›H ¡ó*19Á ƒá@¹åºÏn(2y{î÷ +^(:s@”»lÉxT±-K9™ÆŸ€Cí ÑŽ=ÏZu)ÓúÝðì€- a²ä½œE²U÷>€t¡i×$QãÐy†Øî'>FQ1 +­š…Μaà"Ö÷|È~è8‹ +Wµd_Ù fÙ*e5cdótv8xŠDƒŒWIÑñ¢’ý¦ŠœkÁ©5“u… …ðJÖÔC3ÔðJDŽª¯²'<õÁ +ëØëÚ‡8NoXï²ÎÛùˆ—Ä °ßªbyGHå’Vv;´Û,H pl¶¯0¬º5UŠïqDÇÞ%@·¤)‘¸z|ãåÅõ‡AX…>üv%á:R*FH5Kã§ðZÖ EÔ£«T= :0Ͻ„jèݬ¥;´”Ìyå/Ò±´‚¾É‚2'Ó#z€¡¿ßÀ+ýK—=¶‘·«s"6Òëâ•têZ{#¿øf:·Q‰Š—FN` p0DB]MfÚ«¾MešÀtu½œûY‰<æN)¿²xJs«(µíL¨ƒ)RaIcǪfë ‘òåkH‰<ÞQO¡ä§”Éú¨ó<(wÓü—êr9®‚ +r@$ˆ¯={ÿ¯›YŸ¤“f|è®Ê¢ÜËsÓ¢Ÿ3èýì‰3¼º>ÌÐŒÍ Jçž’ÖÖÔн3#îYpµ¾Ì4ú¶ì}4ËXéÁkîÞñ³ûÞ;ÿö4O N¾XQâÁô-"ñ?“ôûŽ?N5èoØ×óÌ`´µÒ­µøD‰p,íËDÓ®­”Œ3Ik‡X´r‹…ƒÈiò 2(Llx`À×ÝÿúûO—ÇccA“IVæä®\f³æãlƒÜ± 5`7=As™âXg›5v±óÅTÈE‹„Ä[ŠÁ\ ‡¥nŠÈ#°ªÖ#¥5ä³SÀÏ´¼i•~{6(°ÁÑÜ Ša Ò6}×@GT&á“pTûö´£nG¥~!G”hsvT.ŸäËУÕ~}Ú‚}ÄÂò%v±}í—/ > +ÐûCÔfñ¢?f‰‹ð5¹¬ãXr±„ËKwmq ‘ÚV-Èàäè°ÕîH;î«,å½Á I”Ù¥»:“$Âùœ|FEû“†ùÿÂÓUá’|ÉT5·Ã/ŠsÞœ’¹‘ÕQT°G?9€‡ÈÌÙnŒq$³Ô,Üíñf[90†ÏNxЭòeXUž,µŒËƒ6šb‘@T…¦t¡%›iä@“QÏŸ+U:S 6Ê©   p÷$¦;;ð—õ¢ˆ•ô*·€‰.¢?Ðá5+G©8n÷‹°Ôòñ®,#°ÇØë¥æÉaê³XΜÓPõ‹,ë.צ{jT%'J¯ÑsOa^Ú‘ZKzd:/œY³‡¢ÆÜb”W’¾µÆ‡O¢¢=\Þƒ»Ú—Øh6†Î*I¸Ù›îƒEïûº³Êl=R]–%ªIŒ9±X¿;CLÀi«¦lj¿/m¹¬‚)q#H4ot‚ÝÇO…÷‡›þ¡±K,í“Ey¹Ó%%`³nõWSUÌMž´òõ–üÁž,þ>|¡Å9K2iÖºÚ>;ˆ¡; +6êR;X¼£_ûâמA­Lðæ1Ðr%äU=ãà6Œ JbʨjHÙ¢3¶Üq„A•0ƒ÷åCÊuåPc¯܃"Q¯5Á÷,ß®#Ê!çg¾¶†û#ùiì´Ôô<êBuÈŸyHÃ0ÃWÆ<‘zN¬cùB&¯Wx© ƒ1NæyuÇøÒv\pu„‡ãs²)ë¶O'8ʃupõÚf3f1\ðÎã<ø¡ûÚ3µÒhÔ›îvA „? 9œnÄV {´pßH¿ý—LˆMï²·‡F£\lÓAñƒâ_è>þI‡­®!) §Åì7xŒÍ]`Çbæ£h÷0Äd¶•= ä%·<ß@Myß…/ÿ Ôtè·õ¢rýºÿ„ŠŽvUWPŽ©$=qõ„:^×G3Ó.Xðº4±ìº z]„£kè2PW ¬Í¤:ód–ãF¶Æ5$ûÙ±Ã= â·{ /[1}ñä™NŸ™Ä~LØv(OzK¼s3wUÚ®-À‡÷{—Rî¡«â‰!Å\° H«²ã÷HÕ/N¹:šæžkú½’¯½1½ËÝï;­ZÕýkq&†®éE·Ñˆ>5d.æ6ÿ±Òi#E§§˜9Î'º±z¢€DŸþN‚áÜ_tØ™ŽÆãšð쬆½ÄYŸmÅ«bBGà |¡¯zÊP  ?¯pèò•k(3³Pd®;›ç„40¬ñjã€Tb‰ŠB©Ð-0iŠ’“5øKÖk”¿°ïmX£«sS +­²-ÀªúE¯Ö±¶ûµé–×Öø?’C; ú²Ù?(mT`ÈwT¿ êc;±Wœ¢ÞöAÝ®îGè•°ƒ”ÌøÏÄ ²¶®<ƒÇa:egøÿ~.~j9Þ®õœ'…€/ &<3=êý4Y‡ûí–àÂFÑ­ÝÚZ“Tý¬ÝáÔc¶â2ô‚Û™:½(u’QÊ §ýæ‡d8Á©uä :¯Ýj·ÞJœU½9Ð'sÒ‡$•·å­Ë<Îár¾8€ æ £˜ wSuu’ïñ¹Uã9 &A胾ºõi¹ù"Ú~¤[ç“îypCº{ÒlºÄ› ù|}OޤNEì×Yöö†ÑÙÓàú¸þ%²«{ßþ¼Ù¤›¸6‘­½Y…>ƒèl圩YåRÿݤ§ïð hëûQϹߧ!'¼º®¹õÃSIâÐÛd&þ¡•¾Ú¼ýB¿SëølÉÒ)eò¾2ZžE®¥¼â1$ã™îŽSm­Žº1Wp™¢˜Ü˜»Æ1ûŽP!Š»Šßò6OŒ ÆôéÓ“Vñö‹†}ž ¾J~à¥?úie+‹-® 5yþd‚œ‡kÖµa)ƒ]_RòQÂ]rv=¼ÚŸŒè¤êÛ Ö>Þ•·Ù$¤%Jæÿ gYü endstream endobj 52 0 obj <>stream +H‰\—É™å8 ƒ#¨œ€ý‰¢ò+ÖŒd˜YB)d'×Ó@û¦o#ø‡(Pïad‘Ÿw~º)ñŽö´±Ù§vɸ=³-›ZˆXˆ©‰!LËéªG¯ÑÓ*^rÍýÊ'¸½Ý_–*MýÒÁ,<ÁßUXÂy—nŽ§ÈˆÉ»ïß÷t`£¹ÛAb&†>ú°¦Ÿ´#cNQ +ˆ™ªém öti¬€Ù„¡MýkÜ£k<))èš„p +ôÝ(ÎM°'ŠÞ\3|o˜…=o*t1á¸ØÒ͘®ÅäiL#bYPn 6èØv¨ëãn§‚p1iÖèÚV/ÄDæšœ}0#ÉT+‹-Q6Ú„<C,þ:ƒá6œ–vÎQ¢ËîÒZ~¡¡³´NœuÍ@úd†K9`+ÌV ™ø¼O0ÏuÌ +ê:Ž (K,µ¤k²~CÜ¥–¼£ ü›LþÑQ2êœF±Ó˜84Ûæ<Áƒ~j ÒòˆeBÑ&´— “Q“á +•õl…Oíz¸âk(­Ÿ“X¤°tÍJ‘0Ù }žvx&d8˜.HH¥äj“Zrž|TÎDËLòwѳ„Q¯LËõJªœJ¦l'r„ÿ)$’Ì=Èkj¿Ë ˆìõƒI#sí€éø“ù}ë,Ñ’kм.q+-¶”É”SÁ +_bŸ)UP§*@OÑ—½P•üµæªBGÔ´k) ¿äŠlõ‚³zVT¡>jŽ_Ù>¤ +¡ ¤j}››]‰šLA‚PHÌe1þ´èQ•CLÞä—Ñ\ær—VQ±”šÐ[¨™2Œ¢žúh,qëUCN¥©FX +2JPªœ«,P/O[Xü–¥áf<Ž?‡ö5¥@p©Æµ(ñ´3jÄDNCþ¡ä†¯µgf”,ŠhÎ%DÜàzÆ>·ï·*zÝ¥Y¹3¾eɈ€Û¬.ÖE_Ž B zCsö>ßÄ|B¾BJm*o^4«°ƒ¹ÕɵRu5µ”ÐàªojÔä¼D@‚^-mµÀOѺÃ."DÍÀßUô×Â-qõ[Ì—jËYI¿õD³zK*iSSˆJòËû~kŽ¡xå MÉÙÍ¥Ò„3ã¯7ñ*šeðv†\ïGm+ê*,îCıL-VµˆCÎA.ÊÞˆcœ‡´³%`ÍÞ—[|›Wƺœí.Í}•M`¢:ðë}IÂAì5¼—bÇ’Šs=ïpš\)«ýe†Ñ›Ò.²+“ œ^oKß*Œ[‘.½ìàY\P–A±ÉR¥-¨Ê[гð€Û埗|ÁêmˆPƒîÊÍOׇtB ·F[ÈRü9O‰,‡ÒŸ‘¥û󨝩y$é;×ÉFp­I=Ä3ßBð诗FΖ¤ûøNàѬö1ZÈxgž9Éö ]ʾF;½Òõå‘ù°•cMÙafKÆfÈä†^<+þžß%+”™°Zâpžò‰SÒ¦“Šú±Eý¿ +Y£pÐTéu|h_=+Íé"óËD+W`é9±'\ˆ ûତì…ÒÌFOlc,ëNóv)hë‡=U%…Ç™&ÀP ôSvŽ4•ÕräVüÃá•U2'D“šl†îÛ!¨âaa³NIǹаÛáÈ’½£¡*¤:±+¶E•^½Þ”òÊn¯†{a¯Ì šº +Óñ‘Ëò^»Šžªí ¿%r˜7Rýø'›¢w[,Íz´5FLD‘𪼴L¢ú Õ$'®…Û)Œ8D.n Œ§(¿š›Oá ŽQÍ„iˆ;Èà {®›üˆ¯}o ô3“y³j³IŒmêUÙBíà*ï0*`á§"üØôr‚ }@à;Am†ªÙ’(¹NN µ^:'jØ“ sê:¹ÉšÔ6sï5’…µíó×ȳx˜»Àíj1D$ÆCò£Æž‘ž„‰);jB“3 ”8Á;=Lk•‰òÀ +­³±.K)W¯÷ Î"ÒÑ¢ãŽ(à9‡ˆÝ©Ÿvo]°qi‰›¼.}Ö_£ؽ}ÝÍÞØ†ø -+¼5Q¢ºñ¨¨µfÇTª5ž’z‚ +-·äc:Ї7É;ÐSÂ¥ðÝCM+6w!4JVì!D¾8 +Ñúêý×o??ýùÃÃÓ‡OøüûíZz-PÈZÎöæöõwOŸ?|üåöúÝ»·¿=þýÓÓ<úæö=ø'ý'á]!3àÛîíÑ×Ë2¸±=bÎJ ȼ +BweEK +=œWÁKú1ÄŠ2È"¤´á6DpØá÷q¸m£ðáýfP¡y¨&ƒ +Åϧ.µ!¤â±)ó!wÑqrz¯õšÏŠCÛ]cm§ä5 +NÚ§_öËÏÆÈs@ÂÏ`{rõÅëväuDÉt ßœ;Þ,cŠ|ý¨M9‡Jò÷ì;ªª1 +EÁ*«´’<±xS’¡‹š[V÷¼{€_æáøÂ´r~T^,Û(Ya\þºùè8îX­²Â#&ˆÕãÊù-¼"°¼èª6ÚÈnsûrï`ÎÃg +ñ¹2®AAÄ耸³ñ#äâ(ÉeÊâ° 12y'$"›n丳Ùr¯ô‹¼Žzx”ŸcÔľ•ð¤²\q +=àj÷vî®=ÓjaÈÆ:êĨÚ³££f§öÌN¹ÙwÉ~#Î<Ó[Ð8¦Å¤X‰­Gk·`ßâ!¥ÂâÒfX*Žå 4‰Ì!ÜcT´²â¯îʦ2Π7¾¯ô }‚nª©Q+$Å(F ádƒœÃ½‹'扵`Zãä’#afÅÃgË„õã$æf§† 2Éb“n; ìKñõŒâѱ}–¢eÀ “îo V> Ñ@žÃ<³à3 nÕÀv)dñ8¡^ÕG›¹ÙV.!ñ“ ÝB{ñ™Ñ’Ž éÏjÿh‰t—„ +Yý PõÂ2Ä‚8üšf@s{ΰK³œöKÆ4—á,ê +¯¡¤E!„ªÞ_ˆÂÊP; LæÚ…è‘…d¤Ö€K²ü€|ûÆõŸ ŵ:Ö™zöœêÞå@˜®¶åÅ”½FCÍNEžhu °QzÜêêŽçP’4JwgP˜³£q9’~í8œ¶VU¹eK@D¼ƒh¦,ª ’éŒ1Vª «`¨‰k¤taë&Ê Sp m\ñÞŽ‘a^ a˪—‹Æ¼×EùÇ«tK·ïz5n¯ßܾÿ§þ¯æYÊöyæ«·Íéý_>þôÝï?~ú•wþùþ›O¿•>Iï÷X~÷ó/>¾üáÕ7ÿæ—¿|ûëoúóo?þë燧ÿ°_µ»mãJô òüsØÚ$%Šâ-ú#NÛEn‘µá¤»-Š¢ -%V£H†$7Û<ý!%ÅNìÆnšFq‚ÐÔpDž9sfxÐ8 ÒAH:Ù$‘è‹0#Ý,³æÝψ}x¤ã8ºÈôx K˳4Û„“qÑ"ÝoÆ·M›ä¸˜·wÚ/˜:ÆÔ¸xëâ^{ëz…©q±Î?$Á½¾ y{„³›ôt1Z°î…É0ŠÉ r6Š’ÊÔ¸Xm4ÒÙ0A²Úª£‹$ ³ÊlŠ0KVw³D_…I¡cÒI1–í&iYv¸±cŽ­Á¸4ã +|ÀH,h1^V YüÑ»öùC¯u¦¼0¯…+Qð©^J÷øRÕé[AHÌßÜgçÄQ™ßý¾tX|)3/„þj‚‰,ÛÃ{åÈ>[‚¼Kæ¯J[ØWGcÊþ·Éûó2(-z¨UÕp‚ÒÃf*t<Ð8QhŸ¸€WJI‘êVÀ>0°kö]©Òºw¶wÜH›˜Ý@[1¿?øfvn§÷²Ñ¹]Ú-_½ÇAp—TY'ܰû[ʽ¹jRÜž4øH3.wÐÈÍ ¹€ep}-6ð¬"˜q±Œ”}‘=-¾Ça~Ð~—¤×‰ùíQã0I“&iÿ"´¡uúVOÛGéÕ³ÿmœh¤b ìlÓìº]šüq$ø;Ê£AlÞöpZèáå::†ó˳ô2Ü|=7ânV.ó "=-úá™àCkV"nûpiÙàÂ7nŽ/$FZâ#Œ8ÃàBé™û‡³`ø_þƒ¯Ä'×Ä%'äÓgJ˜ýÐ?`¶Ÿm¿ÏÉKr@s{iÂÞ^³uòò€´{:+V s”&Á$*6æ/غOô5Cs €€j¶€]Fbêq€t —Iã}¾ù&Ý XÏg,/@õ²ôzê ošý­9f¹â8Ž'y‘é"ÍZz<†Ü±9 +‹Â2‹Ë^ÛgQq?T ¨zœ¤Qè(þ¢q}yZ3‹¾f³¦û!hX#êéщÃ$ØUd³­C;‹élýÚè´ßü'¸óÀ¬]%a„1åÔ:v·ŽÍU¶V—¼Z—j]ªui‡ºäÖºtO%åÌ´WÊó3 œs¼¯Qæ¹U×(««V¬¨èJÁòW +µb-(–ðž–`•ôËŠnÒÓňt²I>"g@ë{H˜Æ-[:ZÃ?€ÏXÍQoKÅ›Òët¬‡Qr!jôÂdÅä9E ø~ŸDÃ4œ3° ×Q>Žõwûµi·n¸{|…œ¹ +“b!}{Y:N3³…x¾6Òpöaœ/¯£<œwu”ÆiÝh\5¿æý8‚ð5ðgÛv_û@–ÿ’åM߉|‰%,‘ŠÀQ‹âš +àqÁ=‚O]!,Êu|)‘-—KW`}̑܃C…ïóµÁiqÆüíË›† +” D¾.;,¿³jŠZ5kÕü¹ª)=jºd&„TÜ¡®²‰Ðò\Ij*tÕTú»ìŸk¡¬…ò‡…Ò«…²ÊŸ,”ÜUØ@RéxŒJÏó+¡T>uP(}Gqæ­J°µVÖZùµRÖZYkåÓÔJî ߯å²D¶»=²z}»~[eY­²?®²þ¯­²ßÃR,KµÜxý–2{KV~´WX’† d`ß,å;fé®õlçTùmÈ߆)ÏM£_ë|â©P ~m¡~.¹ó³ëÇ.ÛRɤªºRÖ’ÒwHùoóuoýè³Ëm¸,‘Ó‘Òë'•Ù¿oõîQÔe.s —óŠ)©d>ª¥0‡:P w˜#q† WQþ«]«ƒt’…<`ë‘2 cíZ:CÎôâÉE”€uXfÏRNEÅýûðÂ~¨á(Î.›«Q÷”ô¸D­•‚Ûã )~G `Ô\à ãLxfaèù0ÎpONµÉoaV4-4ÇIAÃ<âwQ âI6o0ˆØre’Žõ°4±Aëhñ-£4»ùEzÉGÑæ?ã'&Ê{2 +Ì|CCvµ³ÒÓ=?ÏÂôt1º[z¬ùqOò"ÓEšµôxµ-¸ÜL¸;MÌóÜ$÷tâ*Ž®š¶†šdþšã ór¿ŒØŽÁ”D¦ñ>I¯€\d:ˆB8™ï5çXF§¹ÏHçÖv:»oämLßNnn¾“_îŠoCˆ=½YôÝiýé“|û2Z7dÏû"q:Ì¢Á½<¡‚U“v‰©;/qû½‡ÀÝÃaÊÜ:¸+9^H<î¸æ–tUx%ñÅ™‡sÔ<¬Ôý*i›xWÒ?—‰›i%ý§Ð‘GÉEy0;w˜\LjgÞa.±ÿ­³H£_ÛÚS5õTnaÑ`éi”„y¾øÀn`É­Xñæ²)—™ìø' +°ÛÙ¶ní— ¥T!/åÅu}0¢2‰¼”xkÃïÁ|‚>»z5вô|2EuÅzœŠõÄjä®b˜ÀÒñ$3)-=Ï·ø´<åSG͊ͯScúˆ19J³$Ìò]Õ˜%§›V v¶écç±'잟çaAz ÆnYp¹¼Åð§Ä$=Ï‹æ é|g¦QŸñº÷bžŽÃ<Zª„ƒx’ÍÛ â$°7gÆs¸)”<·ñëhù]£4»Ù¾Ù=J“`›PþwÏŸ`VOââó\ó|]ãiól¸Wn™áRÿ¡„<\OHwñÔ¬äc„¾˜;ÊÕ—7Ip˜f³9ΜùòWšô2°†Kè‹vºBšötEhÔ`3((gæÊó3 œs#ZÌsËý5>õaµQ|@ósÓ@ñáæ`yþ 7¼UãŸQT„öÙCsâ·ŽÒ¥VU•âE3%áFª¬ò23Pf!¶¸ÐÖº8°WUtutòñé‡AåÍ‘.¦ø+Çw¸ciÙR®€Å¤jÍÇ0ŽAÚì2ßõ÷M;M]ÏÃB*Ì.¸rlSíJjŽæÀË]9sõg†ÉèÂM?oÄT¹ô¡n˜máÏlñÑw]­UÊ1¥Ç󸋠R—ºÊ (ìÆÛzD‹A[/ð‘ð| ÅÔ]'žTQ¢Œz%²v5à©<{U=Xh¦NôE˜ºt¤Ϩc1d”švŠJ A2ý•EµÅ,"hÿ-aŽ^A N^Á"òñ•¢ä §1§öÒôä ë»J¸^76kÖ9Gïÿç¾ú{ÛÆ‘è}|‹=8À&!%’"[ÜqÓ´²Ù\ÜëÝa±(›I„*’!Én²Ÿþ†CR¢;Nv{mîZ´‰-òi~¼y3Ã&h‰û÷ß$ĆWc’)ÞU°ÅCGbÆð䌑í~7¶šØ%®DK‡¸‰À¬QJªXÚéRBDžz‚Ä@DnM¶XžÁõ4a6ʧ“Ê»ô€@U×9cè Ç–?ÀÒ”Y@›Ž „,o, IO—ʤ…“”;M÷Û$ü’ša¨¯r‹8ôb—Ú]•0Ž,QŠ*CöAê|c[fÎÄõ)\K­ÓBb”’’º|S†¬1é5ÀPÚÂ<Š•ùͧ|-°‰»@“€ˆ(âJŇ3¶þ[(iiÞau4‡UôȤ:aÒ’ˆœ˜Ç‚ ’'‰‘´X âAf»#dÒ{–ØlÄ"” ³Á¤Â`¡Ï~V øÓ¹œ†üIQÈG +ÖcæÓŠ!T'·F +—%Ö¢$Þq6@µ²"ÅU¢\[ÝJeêTBat&"¢áø )œ¬XÄ‘¶5°„X%£½«ðÖ&Ë0D„!é ‚‹¾mbùÎc4¬®vY1J‹ÁuÒFPˆŒ¥½ëù’„BÆ$Åô{Ÿ©W¶ÄÖyee26`1ïrMrYI!ð"tsžRו°¦ À×ê¹É­,9·Øƒ’¤ ‘XÜŠS¼UC™ëºLðÇ¤Ñ &““µÈ‰J#'pÒj°I¤ûXv3A9K<Ÿ’ÞØ„ú…‚"¶Â‘2a~1œ¶5‚Òcñ­È É0_4ª1WÜ  XÚ„rJ]“t¢éËŠcÃŽˆòi‚„*¦`•ÄòŽebË3µñ ÊSt¤‘Oã~lÙ ¢ŠÛð3æ’Ï$xˆ³‰ÉOz“X׈T—¯*fLeÜûÎ;È÷X`Cß¡ºyb2Ê‹ãÃe7äYJ +ïšœ !s9K„7Œ¢¸ ÎsJ)¡avºlb‡ì M4B.°.À @a~…Ð1‘v¾ö‚ñõÔ5ÿX(«cÖ¡v1&)WVaLa®`ÄaG ŽS¨ðúÂ|sN,Õy»P¤îš‚@­Å ±ö%Èêƒ`¥u£‰·ÛÄ?M²ÀHÈA÷© G¿¥‚´£ÀpLŠbŒ³E´2õ 3÷3@â¡a†N,#H.VlÈ9(7;M&]3ôUMV9—öM‘÷Ò£pNÍ„‘†d‹dNñÞû`‡ a“à4Æ#µÈãË8æ¥Îj˜È³YSlDwƒE†t;*Æ×°ãŒÇ;kn84¿o ð<Ίç?¼±ÙÌøÙfÆO3s;ðÃxôÏl©›è<ƒ=³.wöï¯ÞoÑ|õ‚œWÅç,:ªÚg=¼e›ëè¼ÎÁÀ7UQ™@T‹ù.Ü:¿Þé–4¨È8M-•bågjiÇâÔÈM¼Úsº1+´mPYþ#e)J7|/PU7wx¶Æ¡˜sÏÑÁpMÌØŠå»!öÔÔê c“fSÁâ÷™]=â`J¨íÞ0>ãÒ'bd¢`KëÆ÷8*5ñ#ö`ó0؉ˆ‹ÄNØ^Ⱥ• +tØ6©)T­ŒØq„H¸áR*+°R»®Û_ƒýÂcÅRJ–Úá:?LÕˆÓ6±ãf⥵3Q†ÑÝ;`¡-bj‰©Ç ÈÄÌDÖHß®d¸¨Hïl`PÊê¾™f…öT®wF¦;øwQ3 û­êw03zÛ/eŸcø“Ø/Sÿ%ÃÑÚ~):‰µŸy!ÿÖOéý;ºíBïˆû5¦G¿ÛðþºíçãOø§·åì†ÊµŸÇú:/?U%–o^^ïœÍÍeŸÖí¤½/ôiÞ´;£_ôU¶(ÚßvwF“i_^BèvFïŠê ü8Êš=‹&m]}6_ÕÕ<šÜd3|:¹Éëêj1½Éw->X2@÷æ…Æìí=n%%öÑäþö²* Ì_vFãb¡£q^Ïà­oŠja~^€aÇ`¦®wÝî iÌ‘ª1aÙu¸`IˆºÙ:©£jº¸‰>ÊÚlçÇOþsô +?åÓ6¯Ê¬¾ÇÏ4:WUÌ«¢«Â(i©ëh^ëF×KUK]ÏÍkšÝè§G.T‹¶€Þ5tw˜l9Üê»Öž™:8WOBH@Ú÷–zÚ‚š_fEVNõã–L‹|M«Ûy¡ï¢"R•Μƒý|zVÍ4z>úaæ³U ŒÑèî¶(áÀžù¯ÌnÝ›Ö?_f={@9ãÃÇíýÜ==8¬¡¼møÜê6›A–þ¼ô°Ìê<ƒÒ™h“ÞïoÄw·á[Fáu´¨˜ÕºtgVj48±[´¾À^¯áõòU“ò›úÿƉ}²KC‹ÍífŽþZ6Ÿ¦‹¦­n_o8ØÛ4x¦¼Z>Í=àaóR3>üô:þAÕô³žmSY•úå…È[¿¦³Êð ØæÛe^Îà9}yþ…^ü7Yð -xÉÅòÄ }o®¾|·Øùôÿ¢ý¡#“jQOõ¸Z”³éÓÐäû­&Æ)ì“"‰.tV¼¦ß¯íw[Ù“$¥/Ì•»u®|ÉgíÍVw¨HäKËŒ³ü¡K7:¿¾Ù>gSBö9‹_˜WÞø‡n]V-Œ…§úªý¥Î¯ór»ƒ~y|!®=tà…4YèIÿã=öë5š¯dü³jº¸Õe;ŒÝ¹®›¹œ¥~Wç³OºøÅœøJ\=ô¾ªóß«ò}PÉÆÃotQLòß} ðÇνÞé7âUUÿruÕhwr³Èìy6Í[×4çÉÇÍÙ ?K“ ‡ðÝçEVêy“_æ OÚ¬Õ_»Xº¶%vRÎôÝq^7íó®Lô´*u©âtŸ°”E2¡bŸÄ ³8¯ò²5³ÅZïÐnå·wmÇ)Rƒ%T$©¢Oº0Yÿ˜•ysÕ‰ç" ]Œ= £­EKÕ³Ñ>Tó?g˜É*ÔVÂäFž}ÌõÅQÞ´Y9ud`™n’qœMõay]l=Œ>­œÞHšÎÿµô”,ñ¹~*ozÄUâh²õ¾.2ó gg6/¾úAõòÇ\ßZ¿xjÜ5$NEúØÑwµöjË¥’ôíèQcSöÈÉt‹Ê…Þ?f,žî¼ßz²·•q™n²"ð¨Ð†äxä(ÆuH¤õ¯ÿG™·~l¢[ËušùâHSê‹ý©ŠfÌÿJ‚Ö í×гl(g›"Ö_[ý>͇'*:†ª„ ˜áêï‹ÌŒNõRƸÁ$5ÑÅû¬=ª¦€¦ë“£Ÿ®›¹º“§¤ç F¼ðlxàCvYhóV7R¾ +&Àχ'Ç‹¢8r3ÌGð „§+ƒõá ¥Ñy­]/uôAßµÑÛYÞf6ÃðáYMt»˜G§Yy½È®ut^ÍóÁªåîø o²r™5ý`¸¾¿ÑaÝ^VY=‹(¸¼žÂŒæ=;ë·ÑXî+"’€  ª ; X’TMÞµ&ê$'Ž÷‰bi‹}É{òý¸‹Ÿ«ÖË•ˆž4Þúÿ^­ÝmÛHôä?ÀÛÍ©[§”DI~$MrôÈC­8²Ûl7§'HHbE\€”£þúø) ²Ú㈃Á<îÜ™’%Žü°p8 $̽ÀÇûÌ7i©w/¥žŒEÕT$nv‰R ™ù gÁˆ<Š+=“›9ÁÈz~…A¢9P’ÞßñèFs"˜É?3éY:sCÄÚp¢[*«L@#PÐVj–ºD-xC™³aàÜŠ³¬¢†öÀ¾TÚgõá0Ÿqdƒå¨X`e/¿‡S`Xœ=\ç¹Häå©xw…·‘‹×ž~º!®m•0üyX¯u]“Ò ØŒ[/DET{!c!xWRÿæžUñ¸IT +R,¬ ¶X¤•×?ÏR`×͉f4C£(dyºÉ¡ ¨ÉCñl¤‘«bN±Ev…;`D*äZòÏØŸ“ òEžægò«Ã¸KÜà ¡Î;–>«XI{£¦nd4é‹iGÒíôõç÷;Â~0Üê ¯!}ÉBÊíÊ’X‡û„¸óbEmp–Ø)¡GSÉï{ξ­}˜ÌZë1òì `Œûu´]Pìù"ë¸1" žïg¾ èಙ2í÷¢û5ô$› pM›üŽ ÅÀÛ•@kB‘À;Ù™˜"ÕÆÒóá ?\¶€‰6}³’…~±IøÙØžEÈœJŸ€ ä—øêÄÜ +{y¥‹ž ¸,?J!$ L8y¡cÃA2 mBµ"rÖÒ½…Ð{+Z˜In£õ¼cËâzO ˆŸ>Pë—²êp/(zsq%$v¯¨ùÐDvßó4¡öð\W0Úîá!w*+7–$8ÊBc(D)þÒJìê<¾‹ñ× ”Ì„ù‰÷ÜÛÊÑ.ʧ>ÛŒªbK×t N© –6C»œÎÉʃÒÛÊ +º‹–ùX‚êó= +‚°m@ß&¯q”Ûò1 +íß_u+‰’p™û}@ÌÔ#S3YЏ<:…öxøäW—šD…Mu½v-w J{F—Ì\*qˆÁò.þ%޶ì¡.™Yý~$Å(Ð9¦”»>¶àT]¼t‡’fõh*XL|‘å­ä£•RÓœ\sc¥¦lÆ–h¥”u¹KÊBn‹4¼åLR¹¼VÍá¹.ï—KÉXœm¡ˆßTw14÷>ÿiG9Aaê¨[DcøoH÷5\KŠWß}œãŠ1òI}â¿©g.DÞ[z$U܃¡éÙŃg[èÑÑ‚íô\£Üñ½d©<ýì +<Jµm§–%Ö˜ªvíXé±.f—²dV[¢ÝÂÙ~0ÁDc"¾¥¨Ô9¥kôõfÔíVáÐA«ØÖ–äqÎærY?䀚øŽŒûKx÷$XG5Àå¤ÃÜn`šxPþÚ +.Ÿ=¦€«-_ªC½Ã•¶iÙ°¥@+rþU¢ù'8À±ŒóÈq‘¿Åá:=0›²0uÇ`{õ‰SÖ? bÁÄœx€f«ì)ü˜L²In)/°1cP—·P<ü²#o¸ç~¾[³‡·ž[\Ö£¸Rª2jhšnP莄Q€®1]EptË‚(¨Ü †Å[ï+ñá–%\rÀ/±íW·wèZ²4 ìm.º¹ÚÈ*ù‘÷ Š© U–­˜…Êt=é…4›ÌóŠÙ|”ægrëüž α:8Õ'¦N¤DvŸ+ì^#æN%»CØDÎI:?æêühÐ=Yaå^çüšÔ:,.Y¯h4;^9'1¤EJ†‡Ž x|¤e¼·µá.A££þŸ`Çô±Î.»B”!–Åy4LxaŠíL½¸y1ߣ§¨óŽ…sâ0î·‘þb +6‡}?1Rxw€ƒåЫšKÂ$áÐâDn!D:Ç›K"ÅÆ ÆM+ +•'0 sWñÕôôìˆÈ91îƒxSD¿°…\°Œn«@Ÿ~š’%ŽüаP´%nú–›X ’ݵU,ä±OsûmÎî>û´µSA;i-8ñ@ËOÔÕGðÖ|»Ä¤·' áUí+qž›ÍÓËÝ„Z+«mï² åIe`ùùòdB†™V^\葼¸þ²ÛÓcŠ\=…ZŠrÑb¦&/×'AZ)2[+ÎJÔšAjÐ4¦X,aÆ*°ƒ¤Ç(X»6‘‹K„·¢¸¶®ý,¢®Áb Œ%p> /Üfʧa•ÒqøjŸ[²õ‡QH}(jÞ"‘ùVu6,w-ÆåüÅ%EX \Â\3þwZì ¨xX©¶j*!¾ueiK/ÅìÒdÔ¯˜%ì“Ì–·Ó¿Q8Ÿ-{u`*t% ˜vº2½²äãÀ‡§ñ=Xm7¡xáëJ”÷~»AÖ.Ú¢Í(øÐ }ƒ>H:ˆWä^ײëY^†q µZ™·êŸ¹(ÖŸFŒÃY`€HAä20À8(Âx3ÔvQr©ÜC˜ MÖ‹_*£¨8TždÂr³—ÑêD:o„o1߈²×-À¹×-°Š×-Ъ×u½¤¡åúzòM0_2ªc^ Ñ"ã†~]ˆËŽøšÐRuj!”¬ ÖvŸ$Wh/¡¯I‰ƒÁGõ¶üž´†³§ÕÓ,àăÜ'š(I —°?Pð-OL­µ2ê¢næ| ¬…ºÖ*ÉRG‚L™3–ÿÔÑ­%ƒGøŽ°pÉqÒÙî7Ír€R©Ã)•Šù›1š½šœ÷®Îϲ­ža— +`ŠZ®ßó`k%ñm ô)e¡&Y1h™î¸B×QÇ) ³ÓO7Äõ¢-šçÓ°wAYè%XàF€Ð„:8L p@3驦 9Ûè½M‘!ùšåaØ€\UgjÜ®uH^E>C§£Y¯‡n¥xD£ Œ¦ž“ÞÚ‘ +=Ew,œ‡q¶“¦gztã‹jÓ•Ò>h®«Ðâ@Ï’j·(¾_Á×½»êN¸ÒȟײšêÍ’“ÿE„f±Žâ ¸]}­Þ›^Å›Ó[Îè%4ÙcHáå]C½«÷¤¥Ô\˜j@ã="j•™ê¦+ìSí–œ4ƒØÝ4j»îöÙ´«Ù4…Ø>²¸»ÿ±ú×W'g/ž¢ÿïñ¥ƒ—è¾ýòËKéÒåÙ‹ó¿›>Ž^Ý\œþ:;¹Ë¾N7VG ß^}ù‡ó2]OU‡ÂðxhqD γn±ŠóTœÛjkí ½ÿ“TÀdïöüá±]7ß—•••”ǦW +k¯9›™wšéʤRÜf‹|*$ø>Ýýòüþ£"NWGÞÿ'ùgʾ®ýµ Ïað µpÛ] <‡X¤eÊp‘jŸñÖ4ý©¤¾Üλþiˆ|ì ¹º oø«Àk~i¹)k©ê× âM+w`íæ±ŒöufêL{MArê(HŒ;¦E´æyØ”g]/ðOé~«TÎÂeÍÁªjV›¨ól§ ±¾×¼*ñ³ØÃVæˆÐù«P£B‘]˜ÁP¨ÅŠEÐ'uŒÉЖàs 2 ª¹ u°[+t“_#’VÖ‡@ö¹Ý$AÕÓ*ãõ³9fE‚‚*(æ0í»Ö„ë.•}IS Ê TB—¨ÔY=dØö[³gƒB +ÆJ®½L18áòÔåX“ ÍjCuö©#¨ïvMã(?zðºÄö7«š¹+ÐŽÇc[ÕØ )}`(ÜMO¢:W磧ž Š2YÇf–ñáú5L„.‚ƒš ¿ô=d(¬)ª– ÀL&kí$çü½jž‚ÂS ñ­Ï#l$QŒTšrÙO»Öóª>Æ]߉S“ÕFW @.6žŠqM&h)KPÝd¨t—w˛핺©‘ Š)ºÁ5w mu¨8{¯Z vú4O‰ÓÔ­-?ãßþ€ÐäÁ•ï[s¸+u¬ôÚ´&ã¡Ð„ M v“dè½ó”’•çÔê`MØöǦF…6Bߎ@_þ>‘¡èÂÁÊÕj‘!jÜ¿ÝS¡ýfb°¢A+`é+j1aå k°^ú³Dèh‘רБw³<РpõÁ8XÈZe10.¥Ô2:á *tçÈ +sÌŒ%Àüq C[÷÷ ÛâˆÐÅâaI…:Øý¦è}¥h5ÁJ”+dhuÈ;ŽÝ{TU[A—}ŠúàºXªR-ö‹Qúè/¾ëÐâP–­ö¾e·Ýã3/«NÙ?™Hæë Ço£'7]ÈјnšB|c‹š*¿ +Ó¡ùFùZé1×õèM/0ɹàèmyŸÀÊä^1F‹ÿòº‘ EË ÉŒS´¨ÚÏ÷=Ã1B| úå÷#åë)ú#C‹†À ÔôÚ¢WǦq0d¾Cä¯s POLÒˆÞVª ™¼µo³Ø´)£×`‘—Áø.ý‡mqB,Ó¢0q%çgÇnã;0˜ø)_Ï’`¾{áhÑ4X ³Q[ôêØ¬–‰ešòõRåCþFœ}ôòéU¤I‰>ÁjÉ îE•ïó®³N‰>ïùÖ{ä]ûxe×pÓ‹/¾ÙÜqBþ:¢u¯ÞÂш§à­Y£˜P­TУ—Êwq,rü`r±úÎ/ý=ó Ì»„½ÖÒë~?‹q=T“˜w—žBºv·Ã¿ÌuLU‹<[ +=åê ˜T*“ª2¨LÄ\þTËBè¹\ÂÀõþ+ûfÕy&²+êÁWA\åÐ=gjîÇÂÍÔ—„ó'´7¦°<¾ä.7UWø-ÿäƒ{È)j©n¦c)¸ª3âÉw‚¸´â{Ž©Ü^ ø–ߢ›ÎþZpÍИò@‡:«ë0Šï9–~̬6·ð¦óHƒ®þ•‚itív»0Ô¸%áþÿ¢5j3uÿÙ3Tú°Øëôš¡±þÝ +ïƒ|ÈÒ]°ºÁ¨û§@.ÔýÏÈИ2%AqMÆFHZ ƒa÷O…¢îMƒn0ôÒY´ÂSºû@‡¢ž‚j/ê)–6(Ú•¶{³ª® gàñ/#Ï3?|/{}ï}Ú›±™ü£c¾Žþž^-"râòE§0tÌ´u«§°öLËFö?öÜÃéÅåììuÇ—xnÈs—Ç[dtÐmdêÁÚó¯_hˆÞe]xasïÑôP7Þ/™KÂ×ã,‹h9ÇæØ´/³©  +ÓñTñKg^½h”=iغYãñø`ê˜Ñ8ÝëÆ…/O+¼8×$“ÜË„¥ ž\s¯»£÷íçr|U3°l1ðì<š²Þn*,zÀ„,‚{ó-‰4©ËKöIg#rúÃð“ÿ2FÁó2[~¯Àû«éøaèëx<}æïúìEfïï+ˆúäæ¿ÖoyòŸõéw]ßõ.f$Õe‘)fýxý²k~§Ø¿ÌúË`Ü’Ýñ“t$åðû̺敡gxáÊÿtÞæ»-I­ëòKçÁO+Öb7ë`qÚß”…;Xõ”ÒO1ÊjˆH†dâ2eKéñ¹qV’½S¸£mWÞÌ×vü0¼“7Ñ;q6bhe›¶+õ« AZ‘oÈÿSš~Š!qA׬›NÈ]8ør²ÇR瓤J?Å®9ïÖU‘kûBí}ü{AÖL†¹c=#¢ä<—n[¯nY¦JØfËå¬ü1Kú) 6ÇaØÈS&ë7â`OÚ¯³eÚuä#ÿ 0±‰´Ó endstream endobj 53 0 obj <> endobj xref 0 54 0000000003 65535 f +0000000016 00000 n +0000042116 00000 n +0000000004 00000 f +0000000021 00000 f +0000042167 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000077 00000 n +0000044318 00000 n +0000042659 00000 n +0000054089 00000 n +0000053976 00000 n +0000043496 00000 n +0000043757 00000 n +0000043805 00000 n +0000044714 00000 n +0000044968 00000 n +0000054163 00000 n +0000054548 00000 n +0000055582 00000 n +0000064009 00000 n +0000077693 00000 n +0000082508 00000 n +0000103180 00000 n +0000124924 00000 n +0000147058 00000 n +0000158311 00000 n +0000161832 00000 n +0000181907 00000 n +0000209959 00000 n +0000225751 00000 n +trailer <]>> startxref 225920 %%EOF \ No newline at end of file diff --git a/lib_xua/doc/rst/images/spdif.png b/lib_xua/doc/rst/images/spdif.png new file mode 100755 index 00000000..946b8782 Binary files /dev/null and b/lib_xua/doc/rst/images/spdif.png differ diff --git a/lib_xua/doc/rst/images/threads-crop.pdf b/lib_xua/doc/rst/images/threads-crop.pdf new file mode 100755 index 00000000..d23e9a3b --- /dev/null +++ b/lib_xua/doc/rst/images/threads-crop.pdf @@ -0,0 +1,489 @@ +%PDF-1.4 %âãÏÓ +18 0 obj <> endobj 20 0 obj <>stream + + + + + 2010-11-25T07:56:02Z + TeX + 2013-03-27T16:21:44Z + 2013-03-27T16:21:44Z + + + + 256 + 232 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgA6AEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYqgb7XdEsJRDf ahbWkrDksc80cbFelQGINMVVLDV9K1AObC9gvBHTn6EqS8a9K8CaYqisVdirsVdirsVdirsVdirs VS3X9aTSNPNz6RuLmRhDZ2qni00714JWh4jYszU+FQW7ZGcxEWWE5iIssSfSpdR/feYZRqU7gFrZ gfqUZG9IrYkoeJ6O/J/8qmw1WTUyke4OlzauczzoO/w15fBDRafBBKu6TwRrDKh8Uli4Oh91IOVD JIdWkZZjkSmWjaxe6bewadqM73VjdN6dlfS0Mscp+zBMwpyDdI5DvX4WJYgnYafUcWx5u00mr4/T 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 + + + + + + This is pdfTeX, Version 3.1415926-1.40.10-2.2 (TeX Live 2009/Debian) kpathsea version 5.0.0 + + + pdfTeX-1.40.10 + False + + + 1 + False + False + + 154.163889 + 137.936111 + Millimeters + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + + + application/pdf + + + proof:pdf + uuid:cad1a048-dbfc-444f-80f7-b8cc29717859 + uuid:adfc984f-b1bd-654d-b0cd-db281b58fb97 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 6 0 obj <> endobj 4 0 obj <>/Resources<>/Properties<>>>>>/Thumb 24 0 R/TrimBox[0.0 0.0 437.0 391.0]/Type/Page>> endobj 21 0 obj <>stream +H‰ÔW»Ž%¹ ÍïWT¼À­’¨Ôk`o`OàØhìì3vþ{óªªoÿºë´^yH}úË?þóÛãÓ¯?·ãOþùxüñh‡-9ÜæñÄÇß?þùhç˜qÈQüþøôËçvüþ¯ÇøgþÈ!2ÏXk½³‰oßùþ;5?ÔN;žÒξ?Õóÿo6ÏupæÓãôœ_ßÏ—ÿ>_&??ìò|Ùþ¹OÄÏ5C¾î³¸à—Ÿ}Ô¼¿ý’—œ6ŽóCŽ_ÿ‡Ë}}|ÆNYãxý!z±^û¹bÚ¡qZkñbýiÞqºëñíÑÏnö‚læ…ó¾+‘ž­ëä:;GœÙÄoägŒCϥʉ>õF-‡`Ô·´û©§Å¤O9›Å}ð3¯òåìyØ^•Ήtà9uaå8×è~ìí‚ ý1§Ï´ÜV‚èÍ« +ƇLùæ$14hašŸ«gäNU‰;¥Ër×£ ±šhHD!Ó\øl¹™ž=Wä$;—9œ1æôÅL§Y^õÑk¶äÐêqÔÙ¹¡b‚XÔ©* Íh^g„ºL€ÈPö4r_·9ÆÆì¼oú¬B™ ÚÞèO·;ÌéïUÊœèïD73 ^ úÜG/F¯Ñƒ3ßëôóbün±¦{ž}{À¬JOYÞbßÒÈŒKXMl¹"O±Ü1=»4º_ ]) ÚP}ÚÒ›šc<±J6®½£%Á2’%ðìø÷Å£#}“dQw)z-œ–‘,‹QIçLÖ¶'.)Mý «ItþàwÓ +ÒÊ{¶ÌyÉùü;æÚ©ŽÔw'iÜ™7™•zad +ÒíÂ@mâÎÞœÅ#˜¥]yŠIÇÜáÂÑô`ÞDÔxµ ßSs‡¼"³Ò3prã„ñ¦A¶Å]Z—tïÙ!µŠ0ΈªGpTs{Ö 7ÒÕ×ej°øHUÁ,Lû’ T¡7ºdùؘ –´§]…Eê¥Òä^k|Ľ]Ħµ¨‹cDCëª#@y™tCÑK`̵i{¢ÀXŸŽ!°\ò®°ZÖ4¢¾jÞ@Λr?Í32>k¢"Åz°2š‚˜f’m“2øcïi<ò¥Ü8³uÛf!º¨`(Ù1‹ ÝQÁb³f&1ôœÜ3½-Žd(a‰À‚DÒ‰VÄFÕÙP" ÷Y¼ü®ãšwlÜÒˆLºW0[FE‚îÎ-“Y/p  b }Ñtéͬôƒ!ƒ‹…GöÅ^)¡ì 57òT¤jÝ'Òb4—Ñ‘ºl„¹3ÛʸG'ëQî„’¨1ÿ—×¾ãœ0 ¥8¿Q;ÓZ´„a]Í, ê`™¢aHëD SöùM€Ýê|'ŸakX¶öµ:ë€Ô=Ð}“jßÁlŸ¶§ö&LŸÚH -C›Ðøˆ—‚›qÔC9šI“MŸ¤žf•¿œ×hºÖ0×G¹Ö¦3›¯(4A¦ +LZÖaPÌE„&PµéõÄuªsý…²[û5wc݃èë5ˆK|[ AgRÈ\p–étéÚYQEPÖ¼¨¦B*ûš"¹÷fPyÔÛdS„¡w)—°tßnX9µo÷)çÎU£NÑ›|Ód£ŠŠÞc¡’•QA_•^ÉØ6­&°©H$Þo„[Æž[˜—^¬éžY [ƒðîwÃ%VG¢4&IÛ,k(ŸZÌ=Õ[[+þ4GiyGöË^%žYHœ¹Ó@e;–Í´­¸ƒ€üó/TÌÞå5¡ù ¬‹ÁjÑ‚E…¬P–†¹öÜÂh†\¹ 8]gdsEO¿X`è´µAíEÇÖÌb×½,Uí-¡B;ƒ°vÎXÂåwЊ×xfë¢Lk²Œ·ŽjU" F¢³Æ++ó<>Vü·Ç—|·||`9„Oþeï +¤^ØÏ íïº3Kc{G9Ót+C ÌÌôbüØL¹ƒ†\NqV3¡ô¦Z‹¯š8×䤘ÈÙ~©€ƒÎv<(щ ûnÈ$õ.„¥ØN¤žJwñÿ¨Ê¦Fî(¬­@/µ¤Äâ“ +³LL7>%Ê*@ªF±=£óÙEí*HKôj»ú­•žü%ÜJ>5vV§y Åe¼ðÝp!4ÑxŸšÁh/ +zíã¾ðQ:ð$:êïÇiË"¿2ulfž@½¿Hó:ù¡øCa²?ó7ØXÀ’$g>}žðgý-Õ¡aîÉû{ï²·¯?× ùúÐk«Eøå§ŒýŸ½Ã×Çgº_ø‚€v/ª7¾ÿÂo ógÁ0”2>™I2ñ†.€,–ÝHÖ¼‘Eš m}šzÙŠ +R5Ö5ßWˆ îwÙÎÁV ÿ(EYfÆ^?AØõÜPÉBDæŸhbí‘·E¥Øª&Ò¤ ¦Cå¢ÂÜÃ;ÜÕXC5Ñ¿-u®PéGÜ2¬†z(«º¦ÑPU7¾¿Ÿ„»§d,Ð5ŠvU•h8P_ž[ÕšujjMÃ[}[ÿÆÄƒƒ[ÆŠ•^c\F÷|oatPOâJ­=ýÜú.œ©ÔªhE+Ú|M­>£høªJMx:üšº{XNÖ[Uy¸›wÝ|‡q¶€Q×< XÔ¤ZÕ,­ñ¢îÈ#ØÉ2JcgR#ÅêDÃõŽv½Ÿ×HÚŠìí܉,#§kê™^,‰Ü…aHß +å*rz¹äæñ"ȹ£ªí¾šQÏô2úÞýk‰X)û˜MA;¦ÂŸšz7ib£F +$,D骢òÂÜõ«ò5UöO¸€V]ˆŸËqWî³°¤P¹(»Ðð®ÒáRÜ^SÚ«Zebç.®f¬ÅÁ\Wc[ÍÏ8µ2œµÜ7üí+v'yœè9\†]aÛé"mçN¤t±Z±K¿Ëža« –»:¸)·žˆÍk¹º?‘-gŸ&óÌ—·Bµ:ÂÊ&'²t©¿¾»§¨’‰µ‘3±¹—û(yÌG›4!×YäDS$ +t¹f`È–,Q »ø(„NãH¹.‹B½˜(®"0¤lBA ¾!Ö IÇ%Á,O³Ã>„Ÿ¶ ÏÒI¯çIMMr@ô ØgÓÎqc€sÅѪ7Ôd¸Ê¹sqñÐ×\¶WKí& …ç¹Eç‘¶¤h)FGÉÞ2Ÿ[fÛí*«/©Æ|E¤?GÈ Ü€Ï 7zŒ³UÈ€.u…|l¾^;·’¿G:7?‘Åqª9u6î}éoö¦I¬B'3±u#=Úó\VxÖΆ<®ðã³›ìü)^}RºEgšNbEÙwºp2º4·„;y”çó\ãP†Õ~±½Bô&sc!7Ò÷Q\ÓcKbe»iFÕ—'çÒÜ€y<:·ÿ(hoâ©Ä6‹ìÜ1$ÜSê.dxcå'(ÙŽÜÖaQÍKxÏ¥¾0¸v¥•§MÉѰ-d×P]°mo!nõ5Ù­M…#Ké,û%ˆÙcWèÉóæmõC^TjB +#Z öLvMŒyÄ`üI +-m{‡23[•f¤u©3S’4Ý4ý7í²•CøchÓi¾é)˜¬Gq”ã¦ë`JÒÇ^¶vMYr)£ùŒQ@™D,ï÷Ô{ÃëÛzG±½—Ý×”+-B„»3…¦ö"Fx; K…„6¾´H¸ ±ã%>¶>Q?½O¾ˆÊÏyÀ~§éUsb¢ûõë4ÛžRÁr'qm2Õ"lPI™Ç„稦e:OŽæð›ôEì³yæV}‰Üµ hu[" Ë[º/l>ÞM³QäŸÍ¢f ¢âWñ3Kòœý‹,œ.ûkU‰â>NL§;o‘ҺϳýYüëlxÉ¥ŒniÃv y&qt¯­ÔµŸeM|îØ8ûŸ¿™0 Π2…Èᇠ+‘?<$¥=µó˜¸f‘‚:áPœù³éKxã>y;Ÿ‘Ÿ¯W~~ûÖÏ×"?ϺüwG¸¿¹bÓÇRá_ÿúÎéÿç'ùû?u±•Ïßï×Q;åHïîFؽ‡0¼)ÿ¯?è6_ÁÜ!Õ"¶aêi"´.Äš]SGÄ'¤7ýN×ûÀšn«Âþço¾ˆ(Pa×ǵÀ½¦Ê–¡ì6cÄWü7˜1p±`n¹¹HÓÜTˆ`%ƒi#­®À^'n¨]uFÈ/ ‰·Û<jK¯n{¸Yª¹¢=Q^ |b™B¼)qÙ4sÅ@õ˜­,f5È»‘ò}¢³×Ï(¤—_lCYÊ&+@Ojæ³kÔX·ºŸK ¸Vh5Ï\ö–±”+m¼£{.[¥…¾‡v»uNJ¥µó<Ëöô °dN§TYófþ6¤UîꋯÈ*îAodÇU‚&8øYËÐ×; Ó’–ìmȶöFÝ—•ª¾m}chAÌÕ‹r~:Ï~Î]ƒºÛ'ürÈãèÉA߸V~‚Çu0$‡®¯*b†Áã­s£À ¤ÉI”à­DYÕš'°å˜ùÛKoUõ{_¼LÊÚÀß!˜Ìv†ù9šVî“ ;-Pxß½L+†”Ÿaæ z +y:¾F#ç#ûºËUTÌÜÕ}Ò–ê{UWm­8:Û3êQ H-º}JruMC‰ìYÌÁØLPy§må'ðÕžHfÆ ^æ²&i²µ·»î:×"i¡\/‘G,û–y¹ƒc£Ûk®qê›ÖŸÂçÅâ g(ÄÍh-Æ/ê*úßÌ4K9¼68ㄜ則„N+N¡WŸjO3,»¢ŸðKaòµbËIX­üË|ÃÖä‘7ïèL´„ di,—n©u‹ªX}eýŒ5YÑaF¦Ù;]°Sܤôð%4PÛ?¾©ÌAGl +_ñ GÊ|‡¥0?eóã¬æEVAÀæ—Š˜À njZD47×.€’ê¦[£!F_&¯µ(­^;™ÈN}d:t¯CxR„àï‡Ç€²¯uíÙ~?Êå¼;ëkÝ}ªô„Q>waÛ:ï¡á ?S4û‰«ÜN}Ž…¿Ý'x¦pc@Ä@*z?Iió¿ÌWKŽ%·Ü÷)ÞZ@dò- ¡‘`L/¬û/™¬biÚ– c€žŠG‹ÌLFFpKÝ<~ÚÔÀ‰²®ÓòÞLž­N„¸§‹wÚä7êbOÈ–:U2ÚÌþ}Käø²,Ö,â§ÅFLíßÅšñæd¯´>ãP¼×ÉÍ‹¤yûô"é™tØ")]bœež iùS€¶øbŽ &|Õe/ —ÕS§`À«ø«ôåÿÿþë¡^ÍX`l+ #*ïK½Š1ÌMâ›ñh¸ÉÔ‚›}QçT~î½n¿ôüŽI3&Ås¼HËúü¤{„Ÿÿ-¾Q‡¨’?|û顼ÿßöþÛÛ/ +vV?¾ÿ>^“쉥NæÍO·p·ù?1 "ßQeøR©_x…qx…íèÊëô +ÛEüÑ,Œ/ÌB ³ ñ$âæo·YX³·Ð·`·°Ô ºÜÂR+˜r öp ãt ãé柺…rº…ù¥[(r vº…ú¥[˜råt å銻¿tw ùéòn¡¾Gû·Ý—qr×§üÂzK}¸ahÿ¢a°‡aÈ2 [¸—u8†¶Ë–,CÞž!Ÿž¡Ÿž¡?=C—g°Ó3t÷ &Ïжg‘y9‡eè² e[é­ÖÝ2l›ðg–A—î4 u†ò£a§aX_¡áÆbLÝ„þ4 }†.ÃÐÜ#˜K¹Áíìô rdævq¿ÌÉÞKO-â² +ügV!^¡ý`†n­$`:$:i>47eÒ8ôúÊ2H(ìÏ·æôM ”ã¢&93œyzúPò½_[Ãöe-fq†®cÝFƒ>@~–Ê\üMéî§_ˆÜ¼#³°Ñ|¥!'–ç‰zɱ™£&‹R8R:«VgƒéZÁ!s18VÅ/mi=R3©aúÄ)‘x©ùaÖ`¦’[ +™í°C£õƒA°¸Þqä´J07Ë™½ÒPi¨®žàâáaïê Tˆf±lÞsggùÖX‰ ób~¦Ó[j•¬Æ%tÝN>8<•6R¸o$›zaIžc§Ê(2oi©OˆŠßæ¬H”~ÝzXW;®ýô©²¨º²3ø‰RAkjuò£¼ÁñÈôFÝ;¬r°½Í­ +!Ð2k—Ô¤y2·¹« +ò`Åͪr©ÙT™{w•E]°KB78Ï} +Ry÷ãò„$éªÁžóEàËs~Ñ;£lv 3ƒºïYÙβ”I…ä^°Ç]Ÿë2·)Um¸*‹Um¹É.x•ü½z“D9¾N|0´»”Ü4¹1Kukà\ÕÁÜÃ,ëâ³z ʰgÖ%ÜNL1R]nx†Ðe›‹\Jƒ…ÈóÀ´h,]’}à¥ÕŠ9o»Õ| œöÚÄØ×6{êÁŠ.lLñ\Îa6‡&êë""niLD×!‚Û£©ªÙÊ_z×L—GÃADè37Öq"`Ic·‘`ROêv‰¹b\€"_šÅwœJ:v;¢í„§¥XêsJ_ÆTSÞñÄ•8/z‘øHz®,èèÆnÂï£Ð?¨ôÛÖ‚¢7ÚNQóô–¼ïñܵóµ,@–øE]= ÁX +c­/w¯JOt;°W+dÅIšAîÊÞolÄܤ*`¶i¼æâ}7s4„j¤g*Ñì–>Ú3kkè+h$~Vó¹UjÕfÖ(ëÔ¢#n4­ï¹yJ¾ûºÍHòm4ßJäê/À«Š[«ÇÁdró³9ïùÙÆœ{ñtE”È»@fY}fEªé;]ƒd"Ö†¿8$qk›1uIþ*eŒ[ÇâÝfª+‹«wE…½§Ž×. ˆ¤y£¼ ?74«óóÂæI´,’¯Jç%—³ÆÞ.çd=Ž6.Iˆ ¤y7ðê* ýb¿nke­kqwAÿ‰©˜ºçè …µª£:bsÌuL¹F$o7Ô8‡<ØBbb]È)…ÍfA@oã)d%u5%4]=A7äVü‡†R?ÆáSe¦çF÷){図">5=]×’‡{J[¹ç®Ñt…_w¦ +9ì‘7N-j+Àiçqt¾»0SgÍÊg«Ò¦t}µ¸Ã^“;”3Ðaº;àù<|CK:ßÔúð2¯œÜÕüJJ–a$ZWÁ™-íBÃûS`$Væ/ +˜kƒòÌœ?ÓàÕª÷&n‘Tï_™3ö›LÒ‡f4-Ûàà|hÅå¶?ôšêyZá”.¢ññkÔåi……QºñÚH \Èœw¸R'ïðÜßk÷µ/}§42ÂÐs“Žš}ìI§í$.í/³HMvΧVö=ÆŠreèà÷¨<"¦/v"Æ«PΖHgºnkωy%Òh}9b îÊp\’µOÕ2­ ×uÛ֮¢¢†Ä‹”sß ×æÕ˜±”ï±"EÐS„ KºB€&.Y”¸Zˆ-ñ}Whû¨ÙIŸÅÉ»5Û,ðwÇU®Äö)ÙhZûF+âí²)ုSÕ¡ü‰–Sժϥr`Ûàº+Š‘ˆsÑ\ݹÄèF×-²*“ëÑ™,úÒØ@É‘@X”ÀîÊ…=Ca·æþgÜeÊ[nŸœ@-ÚÜÒY±5KL59_Q‰iÕ*òÙˆ}4f:´åëXc§ßÈ"šµWm}é^uÉÖ¶"‡¦^ÕgœË‹qQ°0M•­±ïˆ¯¼p"óªÐ™tç\B3‰N£E ïˤñŠêÝ &Ÿfgr>ªooyƒGÿß}ûþKø—_Ig”º°(Óüù–<ŸhRnSù@•†ç?<ºuýö×N¯Ÿ±Þ__ÿÓÅS|â|á‹u)Xã¿Z\íQ’øTÜ}ç¹ÿôj¾LÃ¥çÅ5d–2Ð>ÞrÛ?~ƒy1¦7‰wôÄÜ艫éá•óÒ ï\MËèéãõˆ©û×ä/$e9ùoŸ8˜/ÏO~î ¹“Ÿ1ó‘¤xBßÉþÐõñ8ÚÞȽÓ{÷~ 8Y»Žæç¾cqEȶƒµà&Ò3cyñÚÜŸ5¾•Tvêuõ<”¸ïoU]p#\ë`U²h\6p{Y•]bJw°CB:ÉöáÓÜ åcRà®ÞÙ|*Æ5]U`'Èš(H‚hk‹Üöwê«%IÚÛ†ísŠÿ3%Š%ǯƛܔº¿v\.o³™úÓ“•qÉ‹rdh^#A±NMœ›$O$<$Æ”°è›fQižìÈÞ +V¡Š_@QRCÆ/ö¥–’AØo]HŽ÷ IÃPß)—}†NÝB”p­hW¼‰#ê9Êxl¿¾\åsªÔÃl^À»æ QáÅ/Z\íéZœg!É9Üuî·QpªN4êË_õˆ7á=bbƒdq+VƒaÐòÅ݈À šÅŸ!êJÎÊû3úŸsÐíl¨H/oú޽òüFT¼¼³ÈDEL¨ë­jß ¨‘ˆ3žK•ª2,ã€ßx±Ý/dl¹Eº’}4æ¬N]‚óîȇt5x €­žbT: HË +ÏÉÃü5¶=Ï´yr2¤6¾ÊX°)®½â⟋±­Ü&ˆ`ð–FÐx­#¾·w‰tÕÜ´-ÝŠm#âqž‰Ñ¤ÃGñRŸªùzõ|2JKcç’Eì”y¨–WÍÉô+÷ù½I®aýb À)j àiRôl¨¼öó +5åmÔ^!ƒ€Ä³ñ—ãzÿù7>ÿmI2ÛUþ¬Ó¤xÐ+Æ ”ë4'v‘·ÉV~ˆ¼K2œ/CÚ÷穯Næ_j?µÝ"Ž3VBä rß×újo9§ßƒª+}»Wéú*Æg±òçÖ¯êõÞ¶ü8åqþ½Íë៞Ûïþ0ƒl{Á§ážF½6¾ÿð/{\õ +›©ÏDI26¡[âé >Dè)\¶¡Š4$Š;)$Ó³ ƒb–:$rÁø^Ä$5¢^­8%×áªjêÄäM­ÀhÔ¬½*›« ›5‘¬UeMMµ]M ‹o«6ÑÄZ¦ÜÄ9[¥x6]a&Sj÷KŠMímXŠðÈ×xøªiBSå!¥úÖ‚dšû¤ù–¬YºQCãZÈr-r<|ÂCos¸V‰à¸¦ùyn vr¬U|{çreRBôk@MŒylŸê&H:$(µ–ÅæblŸýÐxÞ˜I›$ußéU[ šrçÀñ,ÀåÛAŽò8ó=¿Š+¸ Wñ;šXÐS&lq*wh|Æy> 1ý¶ª–õµåÄ*lÁ/£ïëDVªæ+%¼èm“|€›ö>vwÒà`ÙÇ^NÅåõàÕI}ÎSÛRs$ÃlŽ[U9^î¯ä€¡‡J?þ³ðE\ð¤6Ùãžžõ iBh¨ÁS/ƈ.¢÷¨JíŒì±tçnê ëq®Ä=T؇Ǥ3Z%ǘ%‰=÷û[V˜cìÔÁÖç_¬ý¢;oArÀí_ÝoÈ­‰Ó š.¤4ô˜õ.±ö‚¤<šC¢CôÓ¥Ôp’ï-ù¡Tg„m s„Áti"<¨o©éTñgÊ·²I3‰ñäocpìÆq…‘h¢hq¯MrS£¯Á« ä‚R¬Ã'P¤øê +%áÜg\&æ¬B´0VLf c•âޤÐi(Ñ}P[,þcòrLÝ~§çפiÖf6ðÚR˜àŸí5”/%Ò¨cº¦s;f U”T®Ê×ÏÚ÷ëwÕ¡O*éE’³bÏJÏUjÉ„n»—ìóSãÖ¨.2g¶uf½¶gŠJ”ªË©2Zа¥šÕƇؙƃ›’Ž\ÆPŸ‘5Þ³x7ßZO±-R¦ +âu%q RL/!伯ªZc>4r¿¾°0wÉh“!‡UŽ’UYö”[Ŧ”*ßšš§H¹±ðèž&Æ36“øKW/+/5ù¾mªÍóF=}&QÚþqqýUÞ5)ĦªØ¥i¹c SÕLÝšã-Ι’­ûÐ+]!XLœ=ƒeÆd]ßCÜ’âM:–aR£5¦õ­\(\jÕJ‘¦ +tÝ´öjG̬Tm»ñˆÃj̷лà’Ç8Ô;d?»@å=Ö…ìZJYN™»kâTLJÛ*`Y6-êìÙi7˜Ëêõ€9«)ЦŸ‘p]MÕ|Ûi^M¢ ñ£¥7d™‰3™ý"ÿÈ@нVo…5¶ÐlÛñ†pîmu5ʃT2’$Êæ4Ž‘êöˬF&‰‡Õbv¼¿÷ë%™uÅ 7“ +çÇK¡ÝIÀÚÝ”R"E×:ÓÏ©t´]Ý^¦âÊŠìŒ1;Lb§Æ¾ñ:Ý!ذ~Ø®ô ]ÚŠ—pšúÞœÒâXñí¨\ÊþuÙ¹ç‹Ch9?"£ é“Þ®!­=¾Ã• +}Å&³YÔS›Z¨¯ê{•ް4ñlš½áC1û õàñ¢tÕ5EÅû®¹¹dSî°•(”ßI0ÔÀ®šfíaêòó7ܸÎzîÓ*soÔÙ”™˜sKQ¢”X#þf˃h:; •Jf_Mjcù 0 jâVÕ&0]c½Q"ÅŒÛ"J5aì1Ó5ð¦ö¬Dã3y,” oì·zŸkÅ •7fºR–„ðÄ%Ö¯[s!~ÿ”ðŽ'ñX¾ä^ó ²æ~ X†N ¡ÙÕÜÎP‘à*5¡H±8l…¼4¢T+›ƒÞœòàîg,á2p;ÆF¥u™Ö5É_ É.1ÎÞÈ+u…ÛÏëø÷s:k ŠºÜjD Òôux×^M¤ÞñÒBƒ-’ÂÊÿÔs½„Ekþ$£®.ë’~kùìªèýtßžR/½—âó–Z–ÀÿR_íH²Ü8Ð×)ÚÞˆ~Aüb-abce¼çÈÑõ73V±§[ò×™é,²X >‰.©€¢˜QÉM3-ËÛ‡!X^îµ5éðÄî€ûu¹OÎ|òòr«1¥…Í꼚¾Ü¤r(…<“zQš.ÀVöq§úèºÝí_’ŒaÿbÑ%r bR%ñ4TÙþ%›ì\AÚyƒ,B«qÈ ¼HÔH85-uÎþð‘‚ÏÑç;C˜MK ˜ÅåÜ€pæTß#û#dÃåÒ”ÎÞ2¨ ¥üâ¼ót_VI]&+Ã;Iîœ=2œ!kWê?}î‹%*fœWR·´ê¢¹ËŒå2#€yÏskcŸ£î´©í[°òú²áIR_„ê×Ô1œCïœ4°¸.0W¸Ô!Ç:À,Æ]$‘Éõ¾î0ñ¬RO3”¤/’rµJØQê½V5ht [“ž§ny·âÜÁžõxÉÐ/vöXr{‡ò?¸+iœ0©³¤% Ü–©<³ÄÙ’ö•`p-­¢(tQ·è€D€?—rʤþвm¶åBøøìæUìlx!ÈD=¶<|PB$Dp5orÌØv(eßíïgqFŠw{=>»¤.ÈnÏö/‚¥Ùƒõ"Ê-Û±“$u@N­ó".Ï>ƒþ%ÄBlc©\-€8‹&°µÐNx/w5¸z¹WíêR.¹\ý€˜°;‚Þ)m3sdùK5é>)o G²Ú«L¼Ý¤þTã-äzMþ@ÀAÅ;M¸h$“ìò/õS‹¿Ô”ÆE®+ U6§L´åQX1Óµ<Û{Òœ“µh™½Iú qýç <–&‡"åˆaIíNº +ˆ5’hßkJùå‚E-º”)Ä솀Y=”Î#ºg)^D‰3h¶ØJˆT¾¸jU8³×j:< @RµP¨]l…ÄÎnÂÄ')±¶ RájW{KfHÁ]+úrG—X‘(ôV°¢ÒëQOyH2œú(°ì{%wSÉÁîèŽ[°‹ç¦¦ÿÐVN‘4b¶íÊ'\ ¸ÙºöÕ›&…ª¡Î÷&5!ÅždXá4þ΢£ —å'Åhâ  ÁÿËâXõ¼Õ]Û²Z²$§ÂVÈx¥Ï¸…lRø¨*Õ¼<ŒÝ9;í½+1‘M*î“|ÏÓCÓ39GÍ‚Lßõqbª›&ýêBIr™b5IªþùßCµöÇ"!Ñ"r÷¥Z9 J7P—Æïzü&…¥—ÕUñ¿^dq‡‹RÁê„ÌáåöØ“ƒÿŸöéÝÙ·qiw÷Tÿg">)ióýv~üõÈéñïÇ)Í «åÑ¿ksöbè (˜ˆ2üýUì_'ÂÆNQq›F鲜ñ «>«]øíš:ì‘kþf›Ä® ÷ž~Ð…ßÎYÕm*ß/©¦$}z-¢ú,óGÞàõ~­{Ô +Ùä ¿N—™g{NùdK®á ÷ØAÍÉ–*Sš'P̪¯¶dc±ÁïGmkÊmÍÇDBf?Ê¢!™Ýn)RÍwì£ÞoS@1 =ÕzûfBA#ÐuÚpÏò€‹÷ïo—Y“Qõ“âøbÍ<¬¹ÜünMÏnMöœ*§oݘÂÏÎĵFåÛßsƒÓîíŒí KQúãá™øÑ±è¢jߎøx—žEdþ!i}6|V½ø–Ò¯oWAíÈ«o§ì»ýÛ¬³~˜r>Ûà/Èû…­:¶¡—äAíxI±e/züBçëÆSjÖŸ0ÏÍəĢc6øúí^ÐÈÛ/ÈÑ'ÞŽŸ<ÕG"ÿÜÏø}Yâl[hòÛ?ò×íö×mRû…9ÿþþñ‰ã›—%Ûª¸øiúùýtÜûÅ òé§ÛnwnßúÅïӸ͗,eœ×%óRϼþ"Р߀Ê/ ²±-ufÍ&¹ÍÇŸÿ¹—³R- u '”¥ Eˆæ3n< Ô—€}Dë\u +–Á[4ª‰® „ ôQån0„¿ÛëôÍ“Ò(×ä:ü‹¼egŸ€Mã-9¼ +/è‚F&çÙUÊå€\Õnº€Hái4”*lêSV{wKúœªþÄ) h Ê(™/V ÜzÌê\ÁKRÇ6ÁŽëÐ…Ù.øu;Ù0€`*ëù Ä~àû©@”q>ÀWôQ8u(`‘£)ž­ÅZöÅo4ãü´ÔÁ–2iÖðV+nc+ò=•#a΃ýJîÒ|‹Þ¡ ™Û‡.}Ý ,/X5hû~@O*IL:0EÜëcV/zš"-fI$vâIeÙ·WÝ9‰»+ÒM¾åá.–ИÅ3²×*3´LÁ–Óª‚µXĺ{ 0¶*Ô㊂Dé»!e)[ºý}^Ë;ðMµ~|°VÐû<`¨ +÷ØÊþ ewÐB’vs0=Õ̼ÊLþâ9ˆŠ&s}eß¾à~ô¦4[DƒÁ«-Ü}ñöéAŽNT‚þÍÀüƹÚ+// ý5/)[í|ïf +ìc’Úõÿ¥ÏȘ!™>×7¢Ï&6-FUÑ­ãg¡Žs Êæ¡Oê|r»þs:c=±¹Çæø§ÒñþÆÕ½´âí ?§Ž:š×ÿÃþ¡æû/;^÷yîžQÀïjçl1æe*ÍŽ©±è¸0©7ÛÒ0†Ö3»ÿKæhhn#•úâÓ¬«$jÔøoùÃjK^¹ [Q+ÏS"7wÛߪ±SS€–j£ñH:€Ôiý¨#>*‚¯ÚtŃNp „Eäþ¨>ëí†ÙÐÇP Yw ”Þ¨å~1c°µ¥q¯/’Kºt`L€†›Æ$̼F«7(Ëoáˆ1•{ø»Èƒ¥+L`qí+YNòµ\ìNs²»³¡;C^q:˜÷mÙBÇ ¨4Ðc2ìp1Rׇ†Æ ²©>E¦ÍRe3IÌ'I'v0€!uYj ÀLF÷{ ´ç_fÁèú8dzÄhFïZKàK“¼¸@j¾ˆ²Å÷¡% )Uþ¦J‚²8oØÚNrlÖLÂFí‚ϫà kpã@­Ëëø¼ÚÌsÓ÷'Ê 7ž²sM®Ø%Þ§Ž¾}B7U‚ŠŒuàžl×F›^I›‚·¢á†Q|Ñ«t™u#= ¾8£=¯u¬›%Ê©‘4µ ž2d„Á3Í„&dF†ÅñKqÞtvÙt?yPeÓ1»> äåäNÇ£äìí_ÌMr=ØMar91w[/òê$¸ˆžT}kŒ¢÷61"§CÐäÚmÆ´MfCˆ,™ºÙIòìˆe¾’¼±žÑäC‹dÝ"Q+8n“+OÝ/,Âòr¢Ø”?‰,`š@˜U¨ó47:b´íÑÞÕõv$1/¨;t]gÆV¾Æ;ûZ˜ßÇ¡ìð×ÛÉÙ+ UÖ«#‡é.Ï öÄšŒz‘Qiª°â ÜŘ™Bà(cؾ¨?8ùŽIF­‘aGçLõo<¡²8ì@j£^1cì¤ÒAÆÙ-ÔŠ¹Ó +ÄÄ^y”Ý>”;Ó +}îÁàŠñ+hùŸœ¾Î̬K´áŠdÞo[3±ç«ÚVöú½ŸT\Pz Zô#õÉ +[ì%FÞmµWÓí¼³Ñ÷R™ôÇ +Y\{\ÉŒ»GóeUt¿¢/KmíWõ´eŸàÑ}AJt”_À¬ò 1½Çz¸ðúüÁÊz‰¿¼sŒ«þÙ¸òOèÑK¶?D)sÛ1˜¸Î8pêäyc°¸yƧ©«‚Ù^(¡ô `œ&Ô‚bÎÂŽ­Ã%“sÓ©N ”J,ª1?߸Z£šÓˆ3ÎÜÁñŒºN* —0Ò÷‰a”¯¼›ñ©2ƒ‘§úü9‘æ_¤ÉyÆçˆ±ÃwY•ϘÆñá*¥hH L_b¹Kì>Â6Æ÷ÂlEo¥|Y|¼$fPE,$g“öš­±°}N²BÈRtÚ ÓÆ`jVvߟ´o=‚”„›F[¬\Á‘¹·œô•96iÓ÷7^U9KÈHDCa'ƒ¶ÖÊ#g0Þ +Û](ªP[Ó!i8ßb’~ÎÄÌÅ…@YÈB)kTl(ˆ¤@ô킪Ì;•$½0½–F‹V¾¼ûƒ œ†Îĉøûï¾3d¤ÊÂôq3ròó{õMWsýè$çŸtô^õYɸú|IÀÆÅ  +ƒÖЋïÎ÷¬ÕåñÃEÞ;äÖ`øéÏ¿}V®ÿÓwþüö:Ð(Ržÿ?è¨ZH¬ýxD”Í/ãX/“ŠÏ‚hÔÃhÀ%±Êƒ¥†º±QhV–àÜažž¤c([ëþFeóã·u6g..J4£àœ­&—YPçf]rß}ÍýÍãŸsdålH¹ÈéFé€jŒä­,žn¬ HˆúìÌ·‘o,»Q§™ÈZƒº +ýãÀ_‚,)U‰ÕPS&XÈêAB2ÀYHz…2L[‘ nNš×«ÚÍ((wÐøè„YûK ’Lg¡p2ÌIc&ìN€Ýå¯AyÔ¾<'÷ÞYøvíŸ …µ•©—2G²»ð¥•£ëú‹å[*i't µPvO6+<­¬x«øMÒ}¯áTÐSèÑÅ¡†–Ð !3tØL“fCg_I°*|Oõv€œ»a6Px)WÙa³¹5£ݧŽíÜÈiìÅ"Ý‚5ÄA;1Ö«þdV!Àá1_7ôáÚégÌ6_§ IQÛn¥ÊŽUH::Å%…ú‹æ m6ÒE $Fz§®ô¡—X‰ Ö• =­ÂlH® æÚ&ŒÆ±B`êY³û¢í#ì +>²Šòùl08 köXåŸÂž Š7¹áÖ‘™Çè´k1A&É“ˆá£9r®‰dZ‚tyåón9ûÊúJ1´aJ´N•%ƒ 2$WP%uŸ”èÀãR¥ëwFçÝ%5G‹÷¦ÅHÙÊÅî("¹%®h’ñK¤žšÁDdÇæQÌCbg2vAÊVÐr°¥ùT‘’ƒ¥óRª„ëå-eÝ Žn{¶Öç¶ ˆ{íðñ¼ÔýÆ7îÁ“TK Óf‘÷KášýãÁ-³ŒÜnïƒ×AÃɇ“4V²ŒµÈFêu*Ä™¯FÕ@«ÌçXöD6†,ŸýoT¿ßP*l{Úê»apÏá4Â"cÎ;õ¹O”,³ÐèXl¢Ù‰¸m‡5Q]õ’èsÙŹ÷÷ +DŽ9µY³g#ýNÀ¶ˆj0à½PiHlœsq´N§TA,X‘3æ#¶ïþÕ[(ï^QïíÅ€*iS2 ü ©û¤m—ÀóEß÷ܯÈK’õà/9ÏþþÂ1{òþÞ»lÄí1ÿárø}3¹gûúßxÜÿä#þ"QËÜë™^Ðé²m¼ˆuµª§J#dE~7wöÖ¶m¹ Ô-‚Í ¨Ñö!ñ†Ö/$ÝæöWäFœ´†$†+¤²q»x‹IZ÷ƒ +ª®fYh"1K)ŒÏèûø-²H1¬®7,åÐÎ_˜êLË ‘=YªñÉÉrAõYeÕ^¨ ¿gˆTÜ%´² µOT»’xòÀÅAã.¨K‚S¹|È*-X;éÐhšX^Ó˜ÕW¤w‘˜ÞQa³â”þ<7YÃlo¸»T7Á uù ð‘gS× ¼«-5êYT#¤'+ª• j;:uog¬²øa+RRÙ©ø«€Ï oѶI –ßï²ñC³*É! +7•)êY¶ ß» ñáîÛÜ_t:ØäCœOb ’Ëõ8 W=ÐÚEƒÓëä5×9ö± T&Cpôc˜)"Ú²d»cªø®ÞYÌçòRô‰ônR†‰ûƒ[dè:[l,Âé>õ'ÈSD­LfëhDSÔ¡çiö†”e˜ËÅ3›‰½Â) …¿â')I<(ùŠÂ=M0ý +ÒE1°1šZdc)Šj‘ÙŽ¹j‘¦0G]€³Ÿ‚Íæ?ر=æ{ü?TWIŽ]7Ü×)tLÎ<†Ï ÀÝ iá¾ÿ¢cH¾÷ äŠ"ë‘Ì!2"—5^Ñ­!V±AÁñêϲͳs«ÓXnTEîÏ´QEBŠ<9ÌÉûjM1èÎ)]Ô#›È9XøÐ,°Q<©67J4M]uŽ„ó¼à)ã '¹ÂÕu¦³c¥óá*–Þ=˜Hàtj]èÔTÌó,òR”,ƒî hUñž¹wÓÃÖê9j†ãlʼn˜#³Åì1¿Î,µSUq)Ïê©òˆ†cÍñã­ž_}ëEãCCvq©x×L:qÚÈ4ÿ­y¿Ç­Ÿ-Òj-ßöÐK`Ÿ—§¿:ïê‘ÇëRSÔÁúꙓØêQ®”Õù‚Z··™Év=r;á +;ÈËdÝ9ÑÊ@áàùQä¤}ÁÖò’sšÛI+¬ê­!2‹\ÆÃ0³wÞe^Íþ.3âésf°vx"I #Ë]}_ŽaPuêNKÓ­û²^eRІÂ÷”Yk²ÄPhøþŸ£*§•i“YÕâ³ÉŽ}òokç¹MºÔ¥ö«ô}T¿34!]*à¢Ó¥k´8‹ï¯ŽËíþJ_Ñßõq³P޽Âjº“_Ûe Q”*m3qÈl\T¥Ê½7g‰Ê¹Ëó5}3ÚøhØ—rþõ–Ç«'›/³{¿«x|4¿¤ªÑŘSäÄqCÀÊh.&¤ImmÍŒ}nZJÓE÷thW{5ªƒýñ¤°Ógí°³pB‡TÙgzíÎÔ°§ßI‹÷!¿tõqÊ7ôz ¦ê*~-ÕKõÙûp’•Œá” êÖH +Û~||´»ãº†W!ƒŽ:œMÄ™1g°Šô2Ùe2G¥}Q+·0ˆ¯F'jË©ç.jßûÙ>¥suªxëÈ"RK”ò\V}ÏÉ®R™é=Úó2²@¾.^%ôí{”~ÿF ÓѼëëŠþîÇ©Ùã¦3V¿éÔL‡=Y…ó«M%øÁ…«´½lõmrfaËðè"ƨ7µÝ¨ë*^oª~f#ËKºÂ¶\5.än^çs¹ˆ‘‚å\iÄ*©â(´&õÑj¨Ÿ'ù/Q•÷^ãþRíGzÐ{{¯êéš{§Ži¨–ÿ©ì*é°¾²¯:zïê9HºWOvå°'NTEIÞÕ¼…bPwà¦)´¦ƒÏQˆÿ%•‡¢÷N½›*öMâüñ=Á~ר㇧ÒáãÙÁŒàz}¼õÄDõóQo¼Óiï:/§ê¥†ªTö68Å·âdaâØ˜]}18E†£åVcWU‹ZÓ :…ÁZ‘w à§Ï¢‰ Öý=¹ùÛ¾¬¤±âq0ñW­î†-÷¬ñ úŽÚêˆ2p)·Ñ‘3xd6ÚjìýUÊëP8ëç7-]7:ëùó½]â¥Ò:™—’Óã5wXÞm§»ò!²w@ŽAú»ú˜»:Ðho1ço`DÕTAª³=þ®«Ü^ƒ>lõqx Ù:wQº<ÃëóºTÐ5z]tõ:=LØV?Ç ï￈²>Ìî¬>°ÛŠùØ=£×ï]lÃ7$`¯ãÃw5lÛ þ>=_Fê6ø`¡¼Ý?u…»È)~®íZu½¾Y,²¶2~@$I;?€^÷ký€÷Žo5ÓºuþS3Í +ä)<Õ@}âEwØØHû>-%wäaÃíˆ=‘¹ß:œñ‰‡˜7À“ÞßOû†gÿæ^ÿùúûëß oü*klV +• ™¡iùç‹Køƒ–¥Èòúý[çu^rEàäp— ÕE‚,EH– ‘ ˜3ôµ=³RPÜ«J>Õüù×— +Ö€ÔB*X!_üÔT±xØ“‡ã/ÄCgê[Fa½¸ógþ.X6îA7¹5nF§d…çÚZÉo.–»>²ï0úàÒJVbÄm«[™j/üm¨®“Z”IpR +r Qõ€ýY“î"4RpÛd=iá®b‡‚ˆ"êl¼°&`åJLçb´ôWèú¢ç´y]\“N®œÛŸOÓÉdO„ùÃK1‹ÝØ(Ë/å é €Ê³ÆÑýùsÏCr£¢Ðí‡õEP;áŠçݪ[\Ã&޲¦ËH±ÂÒŠ£N®­‹ÊqÏÞfÁäœÊìK\´jhuÆ¿*G¼©/ŽÅÄ0©yðÎÔðRMCíðºs°Ô»ÍÙKüåOÊΜµóÔ>“»Û]‹œ *ˆPWT HDV×8ÅUÒº·uŽhÇ gØ¥êUžwsn5ÂôCøýz)0¸•$IP™çƒf{€­äE¬V¾¿*¼UU„ŸKnc!3Óµ·” î”ï™@µÁÁ™kWÔÎ&¥Ì­»ˆbKk*LümHï~–(ö-‘™ì'¼ke ËP_Ò|Å'¤þ¹ÔösJÝ}À6Iï­…a=„“Z!€óåžôúÅml9ü’Ó@ S†`!ËžPØ8¤’y¦Öf= f#Ę ø´»ÆºÀÁŸjðÜ^oQ"Ý8£9•lî¡^Wh.±³ðñ¶è¼è³ÖB߀Z&8_.QÌàÅ}òEC~¿¢ü"ç!­«¼ÃƒgÇþ„§7C=ô@d ½— —I<(®¬ït¾ˆavú'$Ý?IÄHÞë&qkÄ(‰Ðƒ=Þ$z’g7¤¿IÜšo·Q&šÄ™‰ZR¥OQy{¾kÅ –ϧž4BX¢Ùo—x5Ó¸(ç3Søºó۲⧞•k»Œ›Eê˜ñdq¡ÇÍâF%Œ›Å-§ûdï:ïÐçџЕØ5©Ü'!´¹™Å i,ö0bÈA êÄü ‚ö°=ÐŒù1 ‚£h½ë”¯6®ta€}“jñˆì +%gNh•µ„+÷»0CN÷£5Z›"šBgµÜêY›O&[ø‰Oã™»] ú#‰û\ŠÞ°YzP”ûm⢹£¿œäA€ Lžš‘X}˾u­ÒÆ%eòJ»½|t´Ï"¤F×¢¬Teaá;DÀ!FÝ’2ŒŒQ8Hn à¢iIëÁ´žÂU:Næ¸ð]»ø²Ð…=îì³3¸¼O¡N§Ì­LÂÎ"oñâ  ,úàå³® w)ææ • +öÁÜŒ©‘˜¨HX.!´Üáü>jaÀQ™ÑØG‹MⵯOäÁ’®§j±“ãx爞Dã­¤Ü>½‘z¬9¼Ó->SÂjq= ®Z§ MQ÷MØAvb;YŠ*ýœs f©‰ ׸˜ß;2 «7¡;MGAS­¸ÐôšßûY —r£vvhî;¤»S/«ñ\)®n¹ÄP jÄÙüüébiíAUT”{…™Œ_*,–1‡¡$[VWJª%š_FNBµÇíÌ“Èq£å5vÜð’Ý=_°ºšH=ÕûB|¾Az.c¢xînÝé4Žûvn2gç§Z÷[{ájÍ2 Saª´•{‹¾Dsò3F–ÅVjâ.¦®Þ‹Ÿ‹¤çÞ±e-WF«eÒƒ]nøKòW¥qà!‹mBZÍ+PDºØ(xˆFÉ¢%hI™|°¬™w¢Bh.†¾ydívŸy<«ŠêÓ««2/-Ï7*ª‰ÉžÞ»)éZw¶K#*÷|º3bw·ÉPôÞ²úXãuάŒX¤µ²] cÐõº*@pØó߯¾þ†£“Ëûáÿÿï?_ÿþŸújÉ+G‚û:E­(ƒdò{ˆ^ |/¤ÅôÆ×ïˆÈ$_•,` @z!òå#óA€tŽÂ‹Ì¯à!”8o·¤t!W½—BÖ€nÅâwÀ(8Œ¹Š1@‚ŒÓðëúë”KŽØ>Ïö@a)P|d¿—ô³Wy Ÿ·²?Cðã/Üìÿè"?oßмÐë÷k8 dm >`j°^Î-0®†Ó?jdÒzF­0ÛYXDS¢+cŠPó°DªšMMUåÂòAÞvü¾¼´»ó¤~H6^žLeœ•匀ÿÈ’UÓ ”¼Ò°ÈQm,Ÿ5ÛyîÕ´ÉQÕÐAá`z/>›ÚÙ-äô÷1X¼ã ¾íÞð†P7•' ôÎS‘gígÒZH-À壷o ¦-&úœú2t×¼ºssÑ;ùejÌ—«éË—bÅM“$`rÖó…Ê٪˖ÄÐ\ÃùáÆ±Ô?†!i‡;óŒë‰H#^GëNH®¯Ï˜Ý'L<¶R*Ö©£o‹·P¤ðÙ´°Ä ë,˜ª’€hþÓehòyÝez0Ö¶zµá‰Tœ"dðhSiøÔ‡;5ÛH‹nË«!{*PÆvÚ^Ë!X”ôвéºp¬Î±’„…E8‹Ÿ°évwl÷¡ÆH±ÔQâ*ü€C)^¯’Tå+†4ˆñs®xO°6­¥"g¹`‹ò ³q¨>b>û%pò¼U³£JNп(Ù){Îp6‰€%r¬ÿ²D×ý%K% +{â­›‰jN<#çÃ=›lo‚ IÒkwØŒéà ,%œ4¸•w|¯0Ryéûe¹øË#2XûÀçH}|¢Š¥M}lxà !Šr²d×*µ°SMñaG¸ÒX±·J6XsåRštíÙ•¤T–ç<ÛÉÈŒÕÁÙf"æ¤'KÓÆI!Hûcä5ù`cÁ]g  «×2®µ$ ™õèêZ`g®sÁ„–X¤–8 ÁÀ°ûAâÅ3ôª’<’B“ Ìq$r;Í»æ4¥8³*Š@.ZËÃ¥QséÖU¿M…®ó¦E‹ßäá;Ï1$ЬÏÊæh,M1K¿,º‰!i['Ðk´_xD•Ê:ŸÑKw½3#,b‹e×j¡.áÞ.Ð’£™Z‹ï]½¨xï'J¦z +7¢MTŸóX™8Í™ëÀ$»w"»ð‰[Ð¥Ä +Xȇ õŬɸï»ðê^…L1ДÆÓÎZ„¦xpí.F1#éBöF<¯>7c¶¼uŒÓi#(gÕÄ*é¡%T‡GhISÊØ cE)¾´©êåØDLù¦ÆÅ`çÈ¢®T~„ºè–‚ÒãÇ!Ê8ûƒ)¹™³<Öù¢1'€²XTr® ì¥:aȦ";ps”rË›|Ï +­jVïŽ×Å®j'‘-T^@ƒÌ¸®ýêZ\dƒ’ã¥ä¡$!ÀÃgI±X+b64#@! ÿ„Ð3 ˜*¶IdIu?(›êÎê`r­1B•$ÈJHºì·¤£§x.Å+éEÐ6®^L×HŽ×YÅߥj Ð%›èߨ.àdDm‡ôUɶ—¬~»ý¸ýç–ï¿î9Ýÿ¾ßþ‡išðƒÆÉ–”Øë:[2Šìíã–TFéþ@\|6qü¢Ÿ ˜€~‡å$kÿü÷KÃVÈÀŽáG {p ÀÛçŽ~Þ~ü‹¯†#]àäñrB·/>ÜΟÌäUYŽ`ë™JvzŽcHJv³:$ßüJOoV:zœ')¤¼çÕììÓ‡žAâ£O ­Yýú&Ù]b5³!å_C$ðÛ™Z1ûÃ’û¿ÿæ7k-ågoÄý‡{#|3¾:ʪáÓÁôr¾xT‹·xÜmƒOîI€hÈ_ØÒç‘W!ŽÆ]Ö¿8OodÊC6^.¥pÆ[zvka]˜Ø4ÏP /XÉÝ<’—m-È[?{ؘá}üò'„õÿű¸ÓÁƒõýÓ”?¾)„Ó31ŸÓZÊçÝi—ÅîÐÜÇ{ÑÏÓî^Ugÿ“gaüãrKþ×ÝÉK}ÿÁ aÿå“O‡¹Žø|ë†é8àÉá\¯Þ»üºì· +ƒÇ%âô¦3âj40BÖ}ý~ 99¨T$\ÂúT`Csñ&úù+â4¯jEìߟ³„¦Ó|øÃ~‰ÙÀå?Áý>n“Êø º½Œ Æ; )`ƒ¯oˆ½à -(‡&zö êYâÑJ!èL Š*zÐ9vç¬u@~¼|£Cqá!¡ˆ(d½5[ŒGggü‰€(þÄÕ8é3™Úñ_ÐT›’@KK7# •X"vÞÎUûå9óé|>>¿ê‚ݹ!¿ˆØ`Ò)ƒ¯¥¸ÝâJB+àå +¹ Ï5¾Ùä‘Gk¾ í-CþÑåH’>OÑ›äÔŒôA‹» *ùÞiNßGXE㜯K‰àCƒ,ŒšÌß)£r‘OÉgÐÆÕâ ¨™ž/O ¾èó§ n+qp#盆Ïs6±RÑŒ!]iñü‡ñ‰åßMF¦Ý÷@1x¿èêV;tÎÿú{O/zkwuY< ­Ã{bÀøûÊ+&ç$Òñ³Qð1ò¦;e' ^GÊI¶'Ìz~6v?*òKoí'„ïàÇ¿ÔW;’d7ôuв7¢'H€ßCÈÒ:v%£Ç‘£ëofdU¤¹2f¢²€‰Ì·×>ÞvüxùT¼u[O‚°cQn÷O(û_qÂDÇ`Z)hÒ¾àchÖÖ¯#£%ñä“ä4 )ôÐý¢ª» 3Ú‡V–Ú/‚éÔµ2ÓB’÷A´»õ>¨ñqÆ`…°»ÆŽô‰ªä`¾´pçIíÓXE\è2üa”– †fŸsË%Rºèš”Ëg›^¤btt9“Ú~Ç:Òvýf$Œ&æ§íƒåÅ>b’_S)ãNA¥š¤VÍôðK˜R•E–-²ê¬0+B¸âS_.}Ê? +˜,Vé5¿L3é®GW(cU„ÛY±Qf¥6>³éÈ£e5?È.§´"É¢£Ò¿qÈ +E¾9 oiÕj¯T“Ÿ_äõVÄ2³iô´ŒÙ·ÅãÙô›\ŽS¯ÆPVÏ$ô- kJV+C'¥#c‹ð–* aáôœHÇÁœ’•z®³ mÆBÇRÀ§Uצ0`ôXGÒõè7ÀXc²¹Ž&¦Úãôƒâ5ãàt”½3ÑQ°ãh¤Îû3†)ÿ°P²@r‘B1èFÙ‰ÃÒò¾ž9€7.È«Ã2é_ É´Û×:ÏV¬èùQ…fç]µl/¤¢ñ"—k? -»…tóæT–à‘¶\BœŸ’q‡™Ò€ àR° ·ûpæ}æE&*S„P2ØÊùñ„ƒ"V[/hÖ•K³yøž3Ÿµ4¡55PfÍŠñió°tMä5(ÎkA/£¤¾ó\¼MdÈ­§ýHº‹„T îÖz¦‹ëÁ£L—.]°È,Ù`äÒµ9ŸD¥¬É Wô6_ÐòS…­iS)ÉU16±ïˆKí¹TlsÄXã´‰‚¬Ýž„ÇÒ³¶ÂàÖÆ Ü»)!³ìD‘®ºÆ}ŠÔ6]î©õåºÏ§ +Åä´D24òds õ½DO‘®®ô°^5H­‹îâܹ6±º„ˆWyÌ‘ˆ¹iÔèó¶²°d ¾wÈÉ;Û˜F1Õ<«/%Ï6Rr[L6œBïÑbÅ’lÕ`Uäj-3h.2ÛÑãmò¤+Ûï‚(Œ•}¢LzJÖc Ë]á1 ¢iª¢©­_ÄCÎ\8ÒGE"ŽœÑÅ…Ó§u¿YsÊ¢ágøšÑHT•ubmU#®D‹‘èâðå!å×½r•¼éªØúƒ¨‘»®©Zöé![bÕ5¨…’ʉµ¦f1)íè JR(êÑo›r¹ˆÍ!æÎµ›ÇÓÔR¢+رà¶zˆ‡b£hÒ+ÞJùkÛ…ö&¹U?gsÈ™ *(ذÆÕ⨠”U«÷á†2 ‘—Aò󡢿ίܗ yI'œ÷ô?úß›a•õª L\jhÓW÷…$O2”¡gè.¬‡aqY+v‘KhS"6!ëDš‹ê×>ãÒð.?B¹®ºOü·5G‡Æ'sÂEKov˜U6a›|‹‚Sê2Õ|…Ü×pN«/ Â&‹TêÂŽ°kM¨2e°Èú`!áL„Ĩ|°©|QTðª¶Úš(•íŽNA9tqÌÅ;Îö^lïžðKÖ¬µ„¬Q<ãÂf[×"î0`çÇØGË)J fœa’U>iéveÊ•óWÔeÃ5GBeFÃò2ëYÓá\¼`­ ÃÁ”©g½æhŒ>ŽLô™ ÇœÇáË‹¼6ªzx5bN4YIªK66nŠøOƒsð™òp@å’×2„%ân·Òxoúz…äí€øö*3¾#bãÓY¾ ©®ˆ#ÑP—;Tã* «&Ãèô œ8~Ûù›ÄÙ´(wõtUªa4½¯¤…}ôšKã²cOýøÛ½úû¯¯»4rðþ‹­`læC¶s“ÿˆèÈjõŸ7uC«r´ ùËñÜ¥ð%íðáY¾4KœžOùëýÚþ•#žjjjeŠ!]œ‘± ðÏ)–äÊÛ‘}¡J`~|¿à.?·ž‘±¥Œuôš2lP¨ü+ÅRþ„Æ|è•Cç<¨Jõ7"©³vîSj¾wÁŠÛ.àñÊyôM ·Q»»Œÿ–1hãïϳOôý©iòÖ2wòüÀÛ7_¢yƦƒ¿áy´rO~“٠𒰛ƓÑ8ô3çY•äSQ²¶êa4yèùÿ[q›ár6LY›˜ìó¥!Î;6žv”žS,t¢óŒ"õÄ#.v*"yë¯ Úù.MRà÷ÿž‡‘zr~}û}>øAKg?Â!Ǧâ¼iÂûT,øœ×?ÁP'ÏÕ?⌾6ië¿ ?Ÿ*fÈ«a”x dø=TÛ¤|‡Yâð·B+ôß^|w§öAær>6=eÁÖ+Œ‚Cäbò·u¬uäSHßݸ–ÃH£’j­›C뇬{¬¶%¢_Ñð»6Dý +9;{•Üš)gerú>f¥i’KD#^Ù½¢>\d …*ßHmf#ÒÐûÈÒÉrÔèó¦ô–ÍÄcf¾õóöß-í/y¹Àú*v²Hè"(}dô +wgðe0†Êã¶“’&¹kÉ­4h̰L†¼”Ûñ MŽÑÂc IaéðD.kKWñM•¬ïxs5Nÿ:wÙ¬õìa*ª³Z K亿×ÑvŽN¨Ýx8ybx‹Žä:-*(ól76£úù”²S¿Yå?jÖ—EpK±NSÂëë2µ¡%¦Ú½Œ„Ô®c •±òº² ð÷j2—HQëÒ IŽ@¤Ñ‡S‚ÍÒ3Þ”F]ФÉñ8‡Q Uä…¨Ö=UNX À÷8죃].ú¼mY&,[V?o‹âÝö +±ñ>¬º8Ï3E‹„r•ÁY©Ð–òœR¬ô Dm3Zæ6rb¼aTèL.Â㸄3)Ý0ÀsJuÓšAk"Æf/¨¬uÖ–!+¶õtIÍî™¶p:ÍNU&ë[-Rí“6Tñt©Wgö¿.L*ö.¢‚ød.HRtÆ,ni¿pA J§žÔ›Ž¸ +õl‹Ž¦‚Ø¥½ê…ˆ’¨ÿŸùjDZ$7‚~ŸâÙà'É$!c¡#4´cÆÐ:s}ED&«êµ _Îô‹)‹ÌOd„BÒq1Ø€Rw³ö½*0¸–Ÿë×S¶¥ž’>jó¤{®e_r'Ú]"–s¸E¢Á>f7ÇÒî|8êÒÃ^Ä­=ЂJ º˜¹Ö0f…Û¢ÅvÆzÒtð@Æp.‹Óš¬ì°¼Yïmë©O™^¶ cÒh3{éÜâ\kR÷®ÞL°J‚Všvè’øDÀÌb¢AyUϵô~è‰é]•±}_•TV® ì2–Maë,ï:î¬MM6óf-”ŒÖ”YTh”BÛ;@VÂÜçY•2çk#⌔cÓf™ã´Y#2_h²ˆ$?Ö‚7Š–ãf÷¥g”Z´¢±rJ~U;©•㹸ñÔêG ´ªüiIXeï<{Ó¼î=RÍhYfZDB­ÑûõúIµÈºö¬§$£·lÆ¡ìøu¯¹4p­±Ïª$û]âÍÙX~åÃ4c©Hpš=Y>¦ßU¥ÔÚÌ+w)#ZfÖëʲŸƒ¡»˜4:Žï®°®­Òæ¥d¡b™Ûl× Ú¨^’šFñ…JTYbˆZÍš­ùŠ8¯È71A„•YïœÅÌ(Dé†F¶ä‰Éµuœ\Q«|–«19ò?cV‹Ÿì Hؤ€<‘1N¾¼"º“ß­ótF-T Ù6¤L€”u+·‘l»ò;Ôÿ $ûg}ü ×RaÈjùæÆ|1~Xሻ ™ÉP¡ˆwÄçÂ-ß0æþþ S¤-ߌP[¨æ:·¶‡ËÅ™*§˜F ŠåF—¤ä__ଷmÑLä.à—{[üG˜£%/ +ç²rØ9~‡k”áót’ùsk•^¤¼åa´Ý4€ç7%n:J?þôì`¥a=Ÿü™(£×#^¹ŒÇÿ‘gÉmݱ`×ýq±ßÒ÷¿"‘xûæã4çluÝÛ÷ÉÎ ÊãöoÁÈøÂ+´'Ê'Ïld‚2a_:5s¯:°øïß“ú ´hß‹ªHù™Ä‹Dè7xÄ8þî¥á2ßQJ Áñ5hó! rJ÷â»dpe"?©F¨I°ŸtÌZÈhÒYöƒTe’ à ‘¢Ñ%b +Æâ'„áÁ&X ®÷ aé ››O]üGªá†£Ð¦¡®¬#75z#Ú ,ŠÃ…ÓŠ'ÛŽ…åX¸5©[¸Èqq, x…e$¿!.õ 1‰úv)MZÊuÆ¥ m銈`x“ÑjM’p{.$Í-aNÒ¦‚N7±`!Gw=ÏÀ’ZÈqói¸vñºékƒ¤€ùFžw‘ë’#¥À2—FN Þ/;¼äæ%ÒXZ£r´®qVéj¤{)/jØ þâ‹]²+ׯ¬=OQazºe-±½jË,¬%~MµéaGîU€£Öraë’®g½q‚+ו—§÷¨åìI¡r6áû¥JÎx‹ÓPAÕZó¨ &š‰ª¡ƒdñ@aë,´/ÝýzŠ€¨)é:+]žœ‘GðµÅovjò 3še¼ÞsÀ¥¤ TÓ¯D&;Ä•r[³äkÖ¥ö<¿0ŠÁŸ<ú}c“&¯Šæ +AÔ}kñA‚Jù ¢AäjŸ°)%NÙ! 껣² »¨0÷M±#ŸS MMMÍ8%$É¢j‰¸v¨-ÏS®ëéªBuìä{®-„0ŠÍPÊ~ ú0|420†®¤^2 +-™\þF;B¸‰pãM…hæ¾ñAPüê$žºN„@R…äy]y#ïÖÃ$ÄÕ|s`V6!Â`ƒ­M«±­šì¬0ÆÖ«ˆN`õ -DœeÁ¶°^%a›ÐØ”°V=—ºæÑ\ñtq¾o–^€qìØÓõÈPÊŠ==ÞCó‡b¬—εäZžtš©»N½4M—¬êA*Æ*Ä<ŠH­ëŽÕ›Þ‹øÓbÓfÿÑØ‹‹d$0 oˆ ˆZ|!sjvù  9¨è©’„Hyõ*€aœÎÅ%†ˆ7û–&€ˆSzˆÒy¼bšÎ'ÅBmÀcªÈ™ôH”]1ízÊÛ*°–M³z‘ôÂÓîV³yœ™¨ûY¸ÖH1¢V¢1ç`IxŸ¹Ö4^‡ú›µÕ͸ ú'Œ’­²;ë4Š„aÍ 56yÄw7ΦÞMÈeI²º±H$äª}”9 +£Å¾PÉ + 1¬Àtµ_U°´ídHñQ—˜/Ѹm‘Jº%=l®­ã %Êg‘y%ä ?â1(”‚—¸ÇÜXÙší~LÈg;-&b‡ZÙì)Ë’“n©ÿªlޏ™”µZ{½õ×ÇŸ|Ô×ïW-¯¿¿>þýâ0„†yµ*z-.ÿ~}MIh j7L„,Ä ÞÙ„??þ]‹vúë_ÿµén”‡óÞ”[2d°E«p¶Xôò…|üù7ìøÜHKÐ,ÈQaòÏ^¦!Ž7½Ä”BsìçNôƒë¥èáïÛ1{1ÅAüuõo—‡3ã¼k¨Ž°ù³±¼¿>P ñ‹]%£þÒßð³}'/â½ç Ÿo{}>>rÞŠ€žg<Ðü&Ó-˜—cþ—MTÞ[Vÿÿ/÷#joq<ßÿ~ËÑFÿ£ßê,Ll{\«¥’ŠDÊ£õ'¤z"5F™õÒ¨Š›ci/TdJRêœéˉOõ ò™ )Qp$<:Á¾I“Æ`Ôÿ0_íH–ä6ÐßSôºE‚?ÐV(d­µGx!iŒG2öúÊL€Uõv"kÊèèÊW,~@ ‘Y«À"®šíkj§Mò½˜“ìÆŠEõ:)TŠXb¹°Zh‰vá3Ö ¡Cv(4¼™¶Ïã&Ó±±}çiú‚SÖ,Oвé¶R4aµJ7s0ç'CLDeN/S…ªD”‡Ð…ÿ’ÆÚ¼Ÿ“ìV„>ÉH‡]·‰Å4¬t‚YņH2Žsf´x§’bg=ÒžÖ–ô,Û1åNcûÏg?£(oØéð÷¥Çá&ScÔ + Ùônoj™Qµ7[l£³¬<„wéœÎw^N^1*ÖW¢—"Ú|^yöMUÔ¡„t»ˆ?Ö}Ÿì2ãÆ4¦'?YÊf®ƒ`ùÊ®;o#<Ïר$è>)˹%¹$b†R`I»1Á%¦nïãúfJª÷4*>ëí€özë Z¦meãq*åEhêOçÆ$ÜSX¯VŽ6ÂGš$RŒŠš)P؇玓ÏGÄu˳¢Ušn`bŽ"ÂäBQ—~)¦/ •U%4’.¦ÒMDÅÕÜn–|ŵ7¿kxù¾‹Ø}žª¢ŽÈ²'šû®ûJ£2NáW*à}*hÖgåöYW&}b$ÇøjܨT)3*¯(/Îsoí.øÊpïF$×Ếu]vZ‘"â½í‚å Q§°¬ÔD¥lÉ5Ý.3© q$‰e¹\5Èç®rT¥(–4MPi“R- „)‘(ÓH$aÆŽ¤ -y’)L³)y6©UÖ…ø)ù€¦ñû/C¼è™ô¤ ÷š-¾ÊGÎ:0~ùžÏú¦jW©ÿùsÈÿ³º¦üñ³OúçÍ)k\+Ÿ]äŸ[½P®ó]GÍèx Ì[ÐîÆ1Ÿ±Îðë2^Úé÷?g º±>X ÕÎ<|xÖ…¢ +¿¡–B{nžlåw Ÿþ¢Ìéz¢Ž ¡4.”Žä?Ä·¡?üûç¥âU2ÞÁ35 …Tý'|¶óIY×ÿ¯ÑÐzÕþ ‡Ø(– è‡Äæ\#qˆ†nêÎf‰g—‰XºXœG¬*¼)²yIW£óÒ‰©8ôaß¡yš4•F*$±µbœÔ#1{k}¼'2©DQái¤>bQ£ã!]¶@ Q)X¥/ÌNÔºçØ*m;–E5è-»u/Rú„xéz¦Ä(Ò¢±W—mÄw1–¸‡›á—SÇM™¨ôlcçlÐ, ìWò JWG+¼F^ÇKa¨²6# cÎL&…ÌNž¾®žTcû³^ñÕãu‰ü¶>’–3_ïµ*f²¨sh çعÊÎͦàÚqhngô‘^9Ð,b[óÑkP-"úU1¨o\þQÁ³1/Dñä96°4 ¿4u×_ú`kª«åؽ(íÖˆ ¬²¬½ !º1ž4w;”~#Þ-ù^©’„= ·žë3 k™nüÒòþ¼{*¼?§")½æýõäê½×ñ3Fý^o0µ'lד€ûÍ@d±äs)¯‹€Ýã~ñ–­ï<ÐÂóEÆ E=yßÖ'Ø TíI/y›¯OhÆ“€÷|:šúñûG-¿~<;åÂ} y8Ä-äÝ&»ºSI¯„w\Ì!‰€Ô¢4×»à˜T—¨éŠNü>3¤>”ÍKꘆ‡ ÿÜËÑ'ÕË;R‘ÞõLTcwt¬øyMˆÂ}ã &þí}¶ÆâÈýi6c ïyzƾîíP¶;'Ñÿ·£ZŸ«³¿Ïǎל’¼æSe³‡÷ àøãÄ(ÊÖ”!÷ê +)!ÆÅ<æ +Ÿ±dŠ¥|z)ÖÓ„?î#-Hßß‘gYò–ÿŸGúSzN„¾håFÑ}ë!)çP1…N +Öc¨ì‰M—ïr?Ü4Z} JwYá¡)ŠLãP#Mu†\A£3QòŸaÌP‰¤ûA~G^®šÏÛפ¯¢èúd²ŒÍ57½ìëïÔ¸>É»kk)ë"3ö>p–o#VíwÈBé;tQI{ŽÎ é—ÕÁQÀÓ¡ódñ`)×,Ø]$N„`Åa7Î;=^µfŸ±W­SÑ6¶ÓÕ,¶zÇ©S@™võ‡Í#ÕuBg¸0zÜšÄÏ0ã«¥;úŠÊ*ÌiчuÈFö‹ÇÝÍ®°Ï¾b¬<¶=eyåóymÌû¤\>Ó4A®Ü˜é!§2,F·Ýo8u‹¹…½ˆöе,,óC‚²5??pZÅëÂI6™¡€µ*˜Ãj¨6½Tia[Ÿ*@jêÜRº­Có@ÌÅ­TS Kz/ÅÒ[ðÂÊ×}ÕT‰Ìtߦ|ôДlR²¼U´êxY¦](ô‰†&.K4ÒšœÖ 4t\°ÆØÉH¢oT½Ý¦+ßÌÚG]¹·Œòw†<Zͯ„`ÀÖ_ð:ïþâ}µGªÐäØQöyQŠŒ/í 70•Ø…Kl9" ¶¸ØzddÝ +B ÔxàÎX|¸²!Iõ-DÀ”~þâ‘ÊLè¡›¡Š,L/7P“&Vß¾Ñ I™¸EY.U6 .Sy…ÁEÙŒº‚©XÇ@{Št}(êd’þq°LÅÎE=Œ> endobj 24 0 obj <>stream +8;X-Ch7:EG#\BXPasOYPF;WT>LdJeYj9fr,84Ks!,;1PA\9b*6pC?B7F5SG?n/hjATN4.fj6>M2\e9OC4XpBgM +&Z3#:0cB??-o*CP,[VE]o2V;g"rg]oLD"Baf#B+h]eqfI>Z%=*OC\gf*:Ja*ed;q7 +Z=.%>"sdXh4l:m(>ILu"9*LD)SSflB7Jf>Nbe[2=pq%e=Ni)U\*YqooW#kMULp"7, +K!HAVXUFeB>n"a_Qrb>1+>1r/A#:@nT>:TsS(kO-M./e,q +f%Jb=)d=XNq!p!Dmm1WbT^:R$#\Vt]npEGjWpu%+A+>Fd'WIIFf9gMlD-9!A6WCg+ +3m;A'Xkj1Cipp=<0hP4B?__ihJ7kg$Aaa)1pc?Z,;1ZsF/KL3QGBh0"k[XnhSH=Jn +NGFRf*j+@K[r@.7n%)YJ7G'CBn5Yk%+(I_sL1eZ5'cS(D0$u+#_@T=a""`nlrrE*N8923~> endstream endobj 25 0 obj [/Indexed/DeviceRGB 255 26 0 R] endobj 26 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 23 0 obj <> endobj 22 0 obj <> endobj 27 0 obj <> endobj 28 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 15.0 %%AI8_CreatorVersion: 15.1.0 %%For: (huw) () %%Title: (threads-crop.pdf) %%CreationDate: 27/03/2013 16:21 %%Canvassize: 16383 %%BoundingBox: -1 -1 434 389 %%HiResBoundingBox: -0.367676 -0.367188 433.4678 388.2686 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 11.0 %AI12_BuildNumber: 39 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: -2 -2 435 389 %AI3_TemplateBox: 217.5 194.5 217.5 194.5 %AI3_TileBox: -179.5 -112.5 612.5 499.5 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -92.5 414 2 1848 971 26 0 0 66 154 0 0 0 1 1 0 1 1 0 1 %AI5_OpenViewLayers: 7 %%PageOrigin:-66 -89 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 29 0 obj <>stream +%%BoundingBox: -1 -1 434 389 %%HiResBoundingBox: -0.367676 -0.367188 433.4678 388.2686 %AI7_Thumbnail: 128 116 8 %%BeginData: 10974 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD3DFFA883588383837DFD78FF7D8389AE89AE89895883FD75FF7D %8389AE89AE89AE89AE5EA8FD46FFA87DA87DA8A8FD27FF7D83898989AE89 %8989AE89AE58A8FD44FFA852A9A8A97D7DFD27FF83898989AE89AE89AE89 %AE89AE7DFD44FF7E84A8A9A8A97DFD09FFA883588358837DFD17FF5E83FD %05587DFD04588983A8FD43FFA87EAFA8AFA87DFD08FF7D8389AE89AE8989 %58A8FFFFA8FFFFFFA8FFFFFFA8FFFFFFA8FFA85227A8A889FD045852FD04 %587D58AE83FD44FF7D84A8A9A8A97DFD07FF7D8989AE898989AE8989587D %A8A87DA8A8A87DA8A8A87DA8A8A87DA8F8F8F858838983AE89895EFD0589 %5E587DA8A8FD41FFA87EA87D7D8484FD06FFA88389AE89AE89AE89AE89AE %83FD10FF7D7DFFFF8389AE89AE897D83AE89AE588389AE8383A8FD40FF7D %A87D527DA87DFD05FFCB83FD0489FD04838989898383FD13FF58AE89AE89 %8952838989588989AE89AE8983A8FD3FFFA87E7D52A8A8A8FD06FF5EAE89 %89588358582D8989AE83A8FD13FFA883AE89AE89AE89AE83838983588383 %8983A8FD3FFF7D847D7D5384597D7DFFA87D7D8989AE83585883585883AE %898958A8522752FD0FFFA883898989AE8989898383835852585858897DFD %3FFFA87DFFA8847D7DF87DA8A8275289AE89AE89AE89AE83AE89AE898352 %F8F852A8FD0FFFA88389AE89AE89AE89FD0483AE838983A8FD3FFFA8A87D %5252A87DFD05FFA88389AE89582D83585858AE89897DFFA87DA8A8A8FD0F %FFA87D5E8989898383588389AE89AE5E7DFD40FFA87EA87D7D7E7EFD06FF %83AE89AE587D5858588389AE83A8FD05FFA8FD11FFA87D837DA8A8FFA8FD %0483A8FD41FF7DA87D7D52A87DFD06FF83838983AE898983FD048983A8FD %05FFA87DFD12FFA8FD07FFA8FD43FFA87EA97EA9A87EFD06FFA88389AE89 %AE89AE89AE89897DFD07FFA8A8FD11FF7D27A8FD49FF7D84A8A9A8A97DFD %07FFA85883AE898989AE89837DFD09FF7DA8FD10FF27F87DFD49FFA87DFF %A8A9A884FD08FFA8835E89898983837DFD0BFF7DFD10FF7DF8FD4AFFA87D %84A8A88452FD0AFFA87DA87DA8A8FD0DFF7DFD0FFF7D52CBFD4AFFA8A87E %A87DA8FD1DFFA87DFD0CFFA883837D8383FD6DFFA8A8FD09FFA87D5E8989 %AE89895883FD6CFFA8A8FD07FFA88389AE89AE89AE89AE83A8FD6BFFA87D %FD07FF7D83AE898989AE898989AE5EA8FD6BFFA8A8FD05FFAE83AE83AE89 %AE89AE89AE89897DFD6CFF7DA8FD04FF7D89588358585258585852585883 %A8FD6CFF7D7D27527DA8FD0483585858835883588383AEFD6DFF52F8F84C %58AE898983AE898983AE89898983A8FD6EFF7DFFFFA889AE895858895252 %588389AE83FD72FF7D8989832D585258525258AE8983CBFD27FF7DA87DA8 %7DA87DA87DA87DA87DA87DFD3CFF7DAE898989AE89AE89AE89897DFD27FF %7DA8A8A884A8A8A884A8A8A884A8A87D7DFD3AFF7D525EAE898989AEFD04 %8958FD27FFA87EA8A984A87EA884A884FD04A8A97EA8FD38FFA827F87DA8 %5EAE89AE89AE898958FD25FFA8FFA8A87DFF7E53537D527D7D7D53A87D59 %7DA8A8FD38FF52F827FFFFA85883838983837DFD25FF7DA8A8FFA87DA8A8 %52527D7D537D5284A87D52527EA8FD38FFA87DA8FD04FFA88352AEA8FD25 %FF7DFD05FF7DAFA8A8A8AFFD05A8AFA8A884A884FD37FF7DA8FD07FF7D27 %FD26FF7DFD05FFA87D7EA87EA87EA87EA884A87EA87EA8527DFD36FFA8A8 %FD08FF52F8FD25FF7DFD07FFFD0EA87EA8FD36FFA87DFD09FF27F87DFD23 %FF7DFD4EFF7DFD0BFFA8FD23FF7DFD4EFF7DFD0BFFA8A8FD22FF7DFD4EFF %7DFD0DFFA8FD21FF7DFD4EFF7DA8FD0CFFA8A8FD20FF7DA8FD0BFFA87DA8 %7DA87DA87DA87DA87DA87DA87DA8FD31FF7DA8FD0DFF5227A8FD1EFF7DFD %0DFF7D7E84A8A8A884A8A8A884A8A8A8847D7DFD30FFA8A8FD0EFFF8F87D %FD1DFF7DA8FD0DFFFD05A884A8A8A87EA884FD05A8FD2FFFA8A8FD0FFF7D %F8FD1DFF7DFD0BFFFD04A87DA9A8A8527D7D7D527E7DA852537DFF7EFD2E %FFA87DFD10FF7D52FD1CFF7DFD0BFFA8A8FFFFA884A8A9597D527D527D59 %A87E52527DA8A8FD23FFA8FD09FFA8A8A8FD0DFFCBA87D8383837DA8FD18 %FF7DA8FD0CFFA8FFFFFF7DAFA8A9A8A9A8AFA8AFA8AFA8AFA8A97DFD22FF %7D83588358837DFFFFFFF827A8FD0DFFA883838989AE89895883FD16FF7D %A8FD0CFFA8A8FFFFFF7D52A87D847DA87D847DA87D847DA8527DFD20FFA8 %588989AE89AE89897DFF27F8F8FD0DFFA88389AE89AE89AE89AE8383FD14 %FF7DA8FD0DFFA8A8FD05FFA8AFA8FFA8AFA8FFA8AFA8FFA8A8FD20FFA858 %AE898989AEFD04892D77A8FD0EFF7D89AE898989AE898989AE5EA8FD12FF %7DA8FD0EFFA8FD34FF58AE89AE89AE89AE89AE8989A8FD0EFFA883AE89AE %89AE89AE89AE89AE7DFD11FF7DA8FD0FFFA8A8FD1CFFA87D7DA87D847DA8 %7D7D7DFD0BFF7D83FD0489FD048389898983A8FD0DFF7D8989AE89AE8989 %89AE89898983A8FD0FFF7DA8FD10FF7DFD1DFFA87DAFA8A9A8AFA8AFA87D %FD0BFFA889AE89AE5258525858AE89AE83A8FD0DFFAE5E838389838983AE %8383838958FD0FFF7DA8FD11FFA8FD1DFF7DA8A8A87E7E7D7D7EA87DA87D %2727FFA8FF522752A27DFD04895858585283FD048983FD0DFF7D5852522D %5852582D5252522D83A8FD0DFF7DA8FD12FF7DFD1DFFA8A8AF5252527D7D %52A8A85227F827A8A8A852F8F8528389AE898989AE89AE89AE89AE83A8FD %0DFF835E898389838983835E8983895EFD0DFF7DA8FD13FFA8FD1DFF7DA8 %A87D527D537D52A87DFFFFA87DFFFFFFA87DA8FF838989895858527D5858 %5889898383FD0DFF7D8989AE898989AE89AE89AE8983A8FD0BFF7DA8FD14 %FFA8FD1DFFA853A87EA87EA87DA87E84FD0BFFA883AE837D588358585283 %89AE5EFD0FFF58AE89AE89AE89AE89AE898983FD0BFFA8FD16FFA8FD1EFF %FD09A8FD0CFFA88389AE838989AE898989AE8983FD0FFFA85EAE898989AE %FD048958FD0BFF7D527DFD13FFA82727A8FD33FF838389AE89AE89AE89AE %8983A8FD10FFA85EAE89AE89AE898958FD0CFF52F852FD14FFF8F8A8FD34 %FF588389AE898989AE89587DFD12FFA8588383835E837DFD0DFF7DF8A8FD %14FF5227FD36FF8383838983898383A8FD16FFA852FD11FF4CFD15FF7D7D %FD37FFA8A87DA87DA8FD18FF7D27FD0EFFA88358838383A8FD0FFFA88358 %8358837DA8FD52FF52F8A8FD0CFF7D8389AE89AE89837DFD0DFF7D8389AE %89AE89AE5E83FD51FF27F87DFD0BFF588989AE898989AE898958FD0BFF7D %83898989AE898989AE5E7DFD51FFA8FD0BFF7D8989AE89AE89AE89AE8989 %7DFD09FFA88389AE89AE89AE89AE89AE5EA8FD4FFFA8A8FD0AFFA8838989 %83AE898983AE89898983A8FD08FF8383AE8989838389895E83898958FD50 %FFA8FD0AFFA883AE8958587D5883585883AE83A8FD08FF83AE89AE525858 %58525883AE8983A8FD4EFFA8A8FD0AFF7D8989895252FD05588989897DFD %07FFA88389AE5E7D58835883588989AE83A8FD4FFFA8FD0AFF8389AE8989 %89AE83AE83AE89AE89A8FD08FF83AE89AE89AE89AE89AE89AE8989A8FD4E %FF5252A8FD09FF838989AE89895283588389AE89897DFD07FFA883898989 %AEFD0458898989AE5EA8FD4EFF27F8A8FD09FFA889AE89AE8358585883AE %89AE83A8FD08FF7DAE89AE8983585858AE89AE8983CBFD4EFF52F8FD0AFF %A883FD0489838383FD048983A8FD08FF835EAEFD0489838983AE89897DFD %4FFFA852FD0BFF7D8989AE89AE89AE89AE89897DFD09FFCB8389AE89AE89 %AE89AE89AE58FD4EFF83837D8383A8A8FD09FF588989AE898989AE898958 %FD0BFFA87D89AE89AE898989AE58A8FD4CFFCB588989AE8989838383FD09 %FF7D8389AE89AE89897DFD0DFFA883838989AE898358FD4DFFA8588989AE %898989AE89837DFD09FF7D83588358837DFD0FFFCBA87D8358A883FD4EFF %58AE89AE89AE89AE89AE8983A8FD0BFFA2FD15FFCBA8FD4FFF7DFD0489AE %898989AE89898983FD0BFFA8FD16FF7DFD38FFA8FFFFFFA8FFFFFFA8FD0E %FF8389AE89AE89AE89AE89AE89AE58FD0BFFA8FD16FFA8FD37FF527D7D7E %7D7D7D7E7D527DFD0DFF58AE89AE838983AE898983AE898383FD0AFFA8FD %16FFA8FD36FFA8A8A9FFA9FFA8FFA9FF84A8FFFF7DFD0AFF8389AE895852 %FD04588389AE89A8FD0AFF7DFD16FFA8FD36FFA87DA9A87D527D53A9A8A8 %5252F8F8A8FD09FF5EAE8989FD065883AE898983FD0BFF7DFD15FFA8FD36 %FFA8A8A8FF527D5252A8AFA87D7D27F87DFD08FFCB8389AE89AE89AE89AE %89AE89AE83FD0DFF7DFD13FFA8A8FD36FFA859AFA88484A87DA8A8847DFF %FFFFA8A8FD08FF7DFD0489AE898989AE89898983CBFD0CFFA87DFD13FF7D %FD36FFA87D7DA87DA87EA87DA87DFD05FFA8FD09FF58AE89AE89AE89AE89 %AE8983A8FD0EFFA8FD12FFA8A8FD39FFA8FFA8FFA8FFA8FD06FFA8A8FD08 %FFA858AE89AE898989AE89837DFD0FFFA87DFD12FF7DFD46FFA8FD0AFFA8 %588989AE89AE89837DFD11FFA8A8FD11FFA8FD47FFA8FD0AFFCB7D835883 %5883A8FD13FF7DA8FD10FFA8FD47FFA8FD0DFFA852FD17FF7DFD10FFA8FD %47FF7DFD0DFF5227FD18FF7DFD0FFFA8FD47FFA8A8FD0CFF27F8A8FD17FF %A8A8FD0DFFA8A8FD47FFA8A8FD0CFF27277DFD18FFA8A8FD0DFF7DFD48FF %A8FD0DFFA8FD1AFFA8FD0CFFA8A8FD48FFA8A8FD0BFFA8A8FD1AFFA8A8FD %0CFF7DFD48FFA8A8FD0CFFA8FD1BFF7DA8FD0BFFA8FD49FF7DFD0CFFA8A8 %FD1BFF7DFD0BFFA8FD49FFA8FD0BFFA8277DFD1BFF7D52FD0AFFA8FD49FF %A8A8FD0AFF7DF827FD1BFFF8F8A8FD09FFA8FD4AFF7DFD0BFFF8A8FD1BFF %5227FD09FFA8A8FD35FFA8FFA8FD12FFA8A8FD09FFA852A2FD1BFF527DFD %09FFA8A8FD34FFFD0683A8FD0FFFA8FD08FFA8FD0583A8A8FD16FFA88383 %83A883FD07FFA8FD33FFA8588989AE89AE898358FD0FFF7DFF7D2727A8A8 %7D5E8989AE89AE837DA8FD13FFA8835E8989AE838358A8FFA8527DFFA8A8 %FD32FF58AE89AE89AE89AE898958FD0EFFA8A87DF8F8275889AE89AE89AE %89AE8983A8FD11FFA88389AE89AE89AE89AE5852F8F827FFA8FD18FFA8FF %A8FFA8FFA8FFA8FFA8FFA8FD0DFF58FD0489AE898989AE89837DFD0FFFA8 %7DA8A883AE898989AE898989AE897DA8FD0FFFA87D898989AE898989AE89 %8958A8527DFD18FF7D7DA87DA87DA87DA87DA87DA87DA852FD0BFFA88989 %AE83AE838983AE83AE8983FD12FF58AE89AE89AE89AE89AE89AE83A8FD0F %FFA883AE89AE89AE89AE89AE8989A8FD10FFA87EA8A8A884FD04A852FFA8 %A9A8AFA8A9A8AFA8A9A8AFA8847DFD0AFF8383AE8358525858582D5883AE %5EAEFD10FFA88389AE58585E8352585EAE89897DFD0FFF7D8989AE89AE89 %AE89AE89AE8983FD0FFFA87DA87EA884A87EA884527E7D847D7D7DA87D7D %84A87D848484537EA87D27FFA8FFFFFFA8FF83AE89895883837D585883AE %89897DA85227A8FFFFFFA8FFFFFFA8FD04FFA889AE837DFD05588389AE89 %83A87D277DFD04FFA8FFFFFFA8FFA8FD0483898989838358AE89AE83A87D %5252FFFFFFA8FFFFFFA8527DFF7DA8A8A97EFD04A8FF7D59525253527D52 %5252A8527D527D537D5227F8F87DA87DA8A8A87D8389898389898983AE83 %8989AE8952F8F8F8FD05A87DA8A8A87DA8A8A85889898983FD0489AE89AE %83AE584CF8F827A87DA8A8A87DA8A8A87DA8588358582D582D5252522D52 %588327F8F827FD04A87DA8A87DF8F8277D7EA97D5227A87DA8A87D7E7D7D %A8A959A87DA8A8A87DA87DA87EA8FFA852FD07FF838989AE89AE587D5889 %89AE8989A8FFA87DFD0DFFA889AE898358835889838383AE8983FFFF7DA8 %FD0BFFFD09835883838983FFFF7D7DFD07FFA8527DFF7DA9A9A87D847D7D %7DFF7D52AFA8AFA8A9A8AFA8A9A8AFA8A9A87D7DFD0AFFA883AE89AE8983 %5858898989AE5ECBFD10FFA8838989585852585252528989897DFD0FFF7D %8989AE89AE89AE89AE89AE8983FD0FFF7D59A87EA87E7E7D7E7E537D7DA8 %7DA87DA87DA87DA87DA87D8452FD0BFFA88389AE89AE89AE89AE89AE8983 %FD12FF58AE898983AE89AE89AE89AE5EA8FD0FFFA883AE89AE89AE89AE89 %AE8983A8FD10FFA87DFD07A87DFFFFA8FFA8FFA8FFA8FFA8FFA8FFA8FD0D %FF7DFD0489AE898989AE895EA8FD12FFA858AE898989AE898989AE837DFD %11FF7D83AE89AE898989AE898958FD38FF7D8989AE89AE89AE898383FD14 %FFA883AE89AE89AE89AE8983FD13FF8383AE89AE89AE898958FD3AFF7D83 %838989895E8383FD16FFA85889838989895E83A8FD13FFA87D5889838983 %837DFD3CFFA8A883A883A8CBFD19FF838383A883A8FD18FF83A883A8A8FD %40FFCBFD1FFFCBFD3CFFFF %%EndData endstream endobj 30 0 obj <>stream +H‰ÜWùo?߀ÿÁ«UWDZŽ™fH‚´Iùni·«ªBfÆ7f<²=$ô¯ßgÏ „#=”tEŒßá÷>ïäÍ߇ãZ/àSRsêMTyóæL¬¸8Eæ ‹¥ú¨::AV»Þ¦ÞÀ›¤ŒŸˆ”‡§šdâ¹–®Îã‡T=ç[ª5‰@Ö|Á£zÜd·ø;¬€ÅvM§a7-YSÛÒ 8\b)éw [Çsà¬Ïã0 á¬ÏOQÍÒ-§…¯ ÄtDä:G³ît\x¥ß,Ï~§Þê¸yu»ãu@ò÷ã ÕPpŸHyÆò­pˆ®ð (ý—0ÆPŸaÿ¾0´'ç”ðx²Œÿ½eOú1eÁu¼˜ÀÂéêSgb4~”  +´êïúØ p2&JÁpŸ†ptÑ/[‡æUý2"3j˜}=IÕž ,îA¶fë¿–ÓNÀÐÔ[²ˆ k °-·ÞFV·ï¥ï)'x’BêvT³,>:æ½Õíf|NdIÉÃ)ºæ!IÀè 5NBÕj5›É{BÅŒˆ!U`¥¥º W< ,=2òç ÌË*Þ†[,fDA„9‹•I;/»оÄ+"Š n"ÞòOÆÆZ×xaµ,¯å¡®k!»côw:¼­üJ«xO4k=ZK¦Þ… !f7‚ÎhxZùZ·;¹4(béÚÈKÞŒu¯ôßÍþcÁo¥H˜)tvUʉfýj ·¾ƒ3¾ÐàK] !ä 㳄–7£Äó<8  µÎʵ¡x“!‹t!x Â;^©&e+°lèfúø + +9=(¾cªHÓèd¯"pK”AØÖ AH˜ð6>_]^ÃÆ÷¤oQõqÁB × } +:‘©\Oœpýn¿@‰ËŸÃo§0eTý¦VQ +dõŸ¡œ,±oK1*³.qº9—;øBh [j‰\{úCÑ áWÆÀ0îß“àd2Î_”˜?ê×”šŸªÖ¾ArÀRmœ8ì_™û…ÿ'‘°ö"q”ÿO9&ñFõO*ôÓåÑ¥®Y_8£µ{~,_¼l'û}yx*±ÞÃôÜ…;6{]€-¯È”ÿ‡*•w¯x¿pHFý?½;žWï8`Ìvû:'z•=&ÄçË6á–ãÔ=§Ý:ä× Ôü·RÆ—õªÖ¬;÷ S«cZ½gº‡œy<ª¯¼´3ÐKúœïqcÊ,—äNÝ +¿]ñj[æ ÓõÆ<>éó8 ^|úÃŒziDá–¡Ÿµ£û“vü#à~¼ áQºÄ¬OšéÝg‚G=ApŠgIÖiC"dD áBÐ`¢SsÈpH>QI§”Qµ+¬H3ÎÅóÅF1#")„AÇs*¤zžÈ˜øpA¿óðCi’µ½®gíA¡ŸÁîØVkç… Y¸w[` º‰°ФƒÚv;î>@G$uÌÙ©õŒ06¦ß³–ÕÞÇwµ] »ÏÊ»;IÔ!‡L+ûÓi·=(åÞXÈJt9 •®‚-þ±Yê“ëZV½<««?Èé{>áÊ9ŠaK”¤Ò^«u¤“Ë}Ó¬·Õ¸Ýg©¹åÑš¢kæ]I¼åí È'JÀíwT*úÙÖ´3%´}çØ'½pÆ2tÝlpï,QÍ»»¸Ý¶À±:ÏQ'ðûG•÷6¯ãŸÆ¢ŸÎ‹Â¯ŸKŒBÏzfìEGjµ=wWG2¬å–´;c4ºeP÷°£Ë¼»¢ÿ1¤(-çø@ lFº‰jífó äþ=ôp’g wÓ<ár–‚ZýrE/Jn|Ýî$OÅyÞ´†‚ÀÞ‡ŠJÌ!ë3B‚d¹*¼ä²‘K‚nÉ£Bïªp2ùSæŽã9¹+™g8\bYì¯n‘–kÝT˜@Õ–Pðà÷³b¿ÙÕ€}F#Ài1òˆÎÍòÛˆ2ø’ˆðRr;¶Oõx?…Wºu䀭Saöï¤%ûE‰üV“}.l·"Ô¸æê9äêvb4À)A§±"²ñOëYªA¡Î6 +|“Õ@…ËD +Ôžd‡Üe[? 7™H¢Mûo—÷4šB>ÜgäÿH¯ò½Ä‘.ú¾CÑj+ƒBXÅF±YQFGÚ-$A2„T:KÛöÓ·²’JœïŸþÙäTºë¹×B¡\”Ý +¨ƒÏæš›Ýp]âYOžcD¼È¥Á]f•@öl@øýBä7Ûlqn‰Åß‚'瘻’ê[L.„9Ly[-³3’ˆx>Ïš4f^RBË­²Na}A‹šÉ­>–ëê‚×w‚ÛoaHuÝQ£xŒ÷{ãÊ*¥£Ã·ÔÓôÌ6©ñ\”() ˜v¢ž(PZ–34¨Ñt’‚2ñ¬,c/k¬bß9ÍE£xÚ2dbÈFüwüV²²_6H€Þˆhq7p8: }œÀ2ô +Ý´©\6Òk׿L†]]Ÿ̉# ©‘®„€AÑÚLÅ +?=ø‰^ÇùÆ¡ tÁBè÷Iy"“¬Nït,SükbV¤°5×8Yx3W5*h&’Žeñp )ú’¹¬g5c¦Q #^RÔ9vÅ>,Ë,˜×*¡î&Msk–FšæÌTðÄp•Œ +‰Ñ:Vc%Ú#Ft«÷¿:Ü÷êh÷Õ °k¯×'sž±*-¹ ŽÌ~Ð|ëC$”ˆ¿Ǭú,¡ˆ§ÉÊ‘óœŒï"¯/èÑLÔW¬ì61ÂcrÀi]ÔÉKrÂ’6O&#ÍÔôXÌš …†žSù,™¹%VÉþJˆ£x‹ÀtX=œÕ,Tä£qœLkF‘8g… o³Œ•çí±¸Eœê[¼cß&8¢`M¤'=AAþ) ¬þ±Õ«…êsfLq’šu·'˜Ê¹%ëh·‚uÚh H¯ù&X^ès‹·hVQ%Ø|3cؤêâfØã ^ÐÄ79Î“Š¢f¡kÉ-hýF‚8Ø{2ØBˆééÖe^¿Úo sè`<š} ¶ +ª®Æ48îÅçè¸Ú$® ¯ëh>«G.2F‹\œ§C”—ú}Fy£Ïi¡K@@XC¢)€>±xhºdÃ…¦&0›ÚÅ%¸°¤,%/œI‘2TïL܃,¼³Å´­_cv˜ $ÁÜzo\žÚoôòy4$¢†Fm‘Ó×_b·c4pZ™3–Ýtq1]•åIgD¬Ì£kA[ø6¬ÀFàž±˜”»ƒ'b5ý›41ö Œhâ­-‘˜±¹iQ°ôzÔ‚d„ßðÌ7x¢F]ߺ7tìýT7 +ÐNÐÍF[@Þ†ó|[Šé“77TËwľ ß­{Ü<ô9‡›GúÛz6ÕÝkHo›¨ÿÇÙæt_;dÇHÆÈÕ\$ʈ¬aDú…0¿[aLàxׅǨ9cE<>tCA ++;kWŽœM }C¹¬«<ÈihËnUŸ­Õ°ÖGÜ2lw^&*«(Îzöæ­ìW¾7Uh˜[ì‡R}Ç@)³ª"3›Zæ`M|=Ä’èn0Ÿôµ§„éAÚøîcS"óÞ—·+‰úÇñLÓ?&~êäÈ›ÝÂ&{ï­+Fö™è½æ(ν0»…÷øˆ Us½èÉœd|&d·æ>ºß­3àOEwÈꋦ[Õ4!»‹Âª‚ìšRŽèGǶŒ›*-þ17£hQ§”¯jÞpøËÒùY@ç)E òªþœŠg¬Þg? tìcÙB™–NN9ßûV€}†#³gϪ6 +‰x@(~4Y ä<¶×“ `g$ÆÛsòÞš,À:@úB@öT t´†Þ‚Œ4ö‰:+#ÿ$)«‘Ÿ<ž ž€x{È¢¿5óJøwý²l \OÞ$€› µuÝ #ЏFt€€Ì=*ƒ,!“+8‰æHÃ"‰…o0¯( +Ô†•!šÁ-Èózr[ÐÄ7Ù»Æb“!h¼Ï=zQC†¼”¡Ãe“å<\Í©¢’Lo†°2öä9Nª¾}w»¤$$ìÑ +ø¹~çqúÃ`=Z2S‘ »xR€]ðhíÐ"‡Ïevk$wERa¬.LÆj&³¢¤% ‡_Dhë06³*OMˆ°±BwwŠˆ€îN{…ïÖV;4{RÛdUú(´Ö }znUq‹UXSEg4úÔÔ¸ÑxOûrÇþB!B ¦ðÞ +ª²1ƒ)™¢†ÎïTÂõS ùJ¦}˜33/þegÃKšÌ£XAòõ!Q^ÚPê<>6f¤™`Y‘˜Ä¯`Á Ïóh‰ÚðÈ0íÑÚ•þ-w{t¾ml¡µ­]èi/ç2ï,²mVgÉùüKÄWž@]:ß¶ÌGø!›mcÜêõªå¶@RÜš©—_2gw³“Ë\dÎz‘üU(Ü~+ºnݿ̵âÙDo¶çÇÝåÅöè”mÏ™‡ºûµ9U©tñâ4u˜Ûmí¦2õåI*}3=N,Døô:Ϧ2Æ·qêàúŸvê¹.0¹Ó‡}“¾œj¥oKZA»†Çµ—¥³Ák½Ø¬«•ie5=9|íà£û"Ã{_™‹¡µµ«ªõÓYã@¹¹ü~u¬Õ«'÷Ùž–îÎÕÇ)Óžv&ÓÆ)—ÿ«q$Û,ÅÏ™³ŒSÕRêàî¹—:¬VS.;&VUÉo穃¾œJ‹K)•Ö›"1-í7­t0br¥ñÈe¶ ¯+鬺\míÚv±£¦ý×ëå™ip6§•Â_ceNЪyRØ?~Øaø¯yÓÈõQ{«f‹ýª‘©wS_Åõ2\[íïkÛsøoW‚Ómçy}MUkÚT}ª äÝÖký¤ÝücéŸEÿ ŒâòôÖ¼ðh¤•¿¹TéL}ÎeîÃIošéí¿©o’níhµíçJ3Šô¢~{$ß…“–ÒÿdjÜà:ŒtkWûÒy.y´R¦Ó¼úAZÙÞ‘ÕôiéÃ3әߌMRȱ€­_º©“¯ùË—I(i÷¢0‰toaZŸ¼š¤ö³s”ÔKM»WzŸÐ¦7£ºÿPü!åÓ@ZÂÁTzê3Ž{‡{{Òryõ¢˜¤[»ZBú¢>-äIéw¶rÔÙɇ’>Ÿ½ŽÂH·vͨî÷ka¶ªêIêIÛ^£pÒÛVºþsgÕ#ÍÔ¤ou“”tË ­•ííŸÆô(œ´ôðƒé\ CI¿tVÇ»¥›öm€Ôî0L‹—®l½Ý(RéÞnOÃ-½¹gv—¹»ñÖ.Ð)Á¢Ùë¾mÒ‡Ãýiùçz–Izþ¸ì¬‘NëL¿w\$¤y¤ÀbÙz±üyTjž•ÂH™þj.D’V¯ÏŸgQ¤ÏÌ@[ÖimÒ«½éU6‹ÕPÒñuñ(’´ß-]•¤„Å¢ýQb&½q:‚ÔøëUº–¸Ÿ Áš°'Ç #àdQDAPaÄQö÷¿ÝÙÓé“ðOô£“³ŸªêíM«öpJuÚç· ÓÛÙeê]fdZ®|ÿ‰-ж²lŸó]©Nïý0áTö¢º½ûÃý@N?øûxþ‰îôòböéûå¨N§~äÌužûÇ6§£"ÿôô'Cwzó/£h' §ˆÅ ·Ïâ€ú‡OÑÝé™Ï·^W;sì4f[š«ô9ª˜ÿ¿³¿ÈmnE¢ÒNøî«NçÙ(át5>ýZËNÓl«[™¦Ë-¶vª(/÷•]½M…®>Ú]äô|CXº\òªÓm1FÐ[ˆŽ•¥I?ns +<\£I–¤^»M¹®wÏ!;ãN‡ÈiuGBa>•¸Sœ…f‚pê¿mÜ*ð {­f1ÃmzûíK—·±SÞVà¾8úT΢ÈiÃG–w½–b½u¾lê—Î^¼‚ç>ñïE<ò‹§ðZG~û9/½Äµ¯ol´Ü:¯?h§}’UøV÷vLœZ&¹õòüþºíû÷æpš &ÁSÔý«Ýüþú¦ŸÍ:œ¾K%øô¶»¸2*f;_oãiÔjC;<öNWÚéˆ\3¾ÿVÞ§–ŠÝ;Aøë»_#Îá´þ^OQÅîObð×sî +>}â2‡Ó·§™Q1Û9¢÷BüZÈôø4Ÿ|í9TL(e3øëË‚¸€O¯V¹ßË…—‹1xî ÇÊ'ÚéxMžÛ…¹v:%‘Ï—æ+_FÅlç±³t«~;ûÝ­ZO—ŽW³°ªÆµËYûÛñjVÏßVæB¹”jÜU³ÆM¥»¹ý/á ïеÎyjË–«ƒQõ±¿"† X-ÛÆ…4úÈO#hübƒbׂ›kšÍwêe§?ì˜2-DV¾H*—\ùahæýTû¿oÝJ;ùºƒÊñzFsŠØ '€Nù*mÓœÊj]wN»‘Gƒ#,N‡#Ð)ÆKvZ Ü÷,“lÎõW€½˜&ß4§µf§g¾ˆÙiæ&h.oç$mrúd§ªß°§acLE‹Ó“÷W|øGwš‰<ÂNýÕIÒÂûº[µÀèî8ýÀw‡gÀépLs*ßŰÛZð-WµÀèî8EÂé‘ ä´+;Õ'™(ðe³;ÅzÄ:JA|×ÿK¨R+šO‘ÝÞ˼‹üs4÷| oÊRÍÀ ”õ0£|c_\V®N![~ʳ_ÈÖå4[ä/pYD¥²úgx+ãRÜô('¢eT"á[E%1xëÛ„Šz‰•›K%ôB“šO’=À„Ü÷:ø.öƲ]Ts HhÕ‘Ò=Kí•›sÙ„z|ã$2…%÷r«ªmdEEKãuèùJyIsÖC.¥Þg•~ôêDÍp¬¥‹2x¨“ [— ¨ußrA +©x{Ae©ºq ) Ä{Bí úó WUbXÑ#»2½ÈIM°èjÉåÇdPÁÁGˆüTL–3ƒ¿›-}D€üðí¬ŸèŸ~³°tïçùFDÉ _¯ýC3æØA~ö9ëïS,ª)&¤ÛÌïÜŒyö… =njDÝq.LÖ龜Í1êŽfÌ¡òãõÏlÊ嵜|8´XôH£BÔ +=’ =ò$kôü÷ìÆ0¾¶PX+ £‚Ϭ“ +¢Ì^;Ï<{áÍxÇ"doÇõÚqàV>IéÇ]©In`+3 µ„ŸH¾•.©s×m·B?GÂòÉ /ö*/õs滅 «Ý§ »4ª$Œ„,Ýß+!|4Ϲ¾†–9ãGWåû?Iü«àîUZYL8f/L¼Ä©c“o§´Ôs+ØXé>ÛMÉêÂɱw-fÝ»*Iù”œo{7Mïœ÷.õÈÅ凊5_Ø ó$£@Ç~÷†Ê®Â>Ñ?S‰2UM}‘ÏÏùÙ¶—²E6#ÔøÛi0ÉÔû"–—å—¦ÇÜ[¢(EKKjÎ*Ì€Ü}|´×_jB´ôY¥ wÅha±ù[gbrî¯ñ2 +þiGÐ’¦Ç¬úÉ]=ÕHœ¶+jÐ.î ÔÌqå¹—0ÂÀ’ï,LFÿ@AÇèšÂ­ƒZÿ²¡ýû§#?Y¬~âdž¡Ÿdˆ 2–M1¡½ñ?Y1áç’LÿdÅÄã*¦Ò²:hqûÅõ­Î¿° ¼•0žÕqº4x!‘´Žm‹>Ï›¾•ou}qÞÊm1è!ù¡Ö¦Ã²ÀŒ•ÛÐÕÑ£ zìêð³É¸çñªÐsÛì=í‚§« §P @\×Ô–(B[ˆ²©h’=Þ ‘^ÙÖ(UG+<Ý8 +CÜ cæÔ2ñ®Éb‘«¬ÑŠ?”MÑ>nÞ¶fѤa"@í>/éqSáÃhAˆb«µ9ž\çh #Ì>€”‚ ”€·Òž¡šß– ÿL~LH,öoÛÇ]+ù»+#“S hy$ójýÅþù1!Z†ü+»x\H|fô¯²&A¶n¹Y^¬Œó00ûËmÅÁaÀ˜L¬¸ÐØ+.³Ëû%Íp%¦MåT﯆uÅEzkÍ0b0ÇiÑ /û^*¤~×»až ù1TäÚÈÿÕ°*øÃRËpÚî;•:Œ]0’–éYEÂŒ’}Ü…ÆÎz¥<(¡ìJ$¬¾†VØ›u’aU`RÚT¨VÎÈx*ÌkŽ»w+Œ +r+@[âê¤K÷Ù†[u (˜ŠHJ§)Í„P<˦UL»:¤´XìÅ.ûâ^»eÓJ„öhÔUŸ1Y¹kÖËDX•0Zîø}Y6­ Ϲ2ÉôI/öB±sÞ”y ¹c­KB$åQæœQ Àr×>™ïެ.z¡_ +ã®e›6¢ƒ&Ù“–-Ô:_ø•®9+ü´uúÏÛÞaŽí?І1².£6eœ±Ï+ÛaS¹—} )ãå$;°±üöhLÜàAk{ +pRq_pß<’<ñŠí"IX‘1y;îH³¢÷Űc½M˜••÷Ì÷J¯Ìg6VN>x Qƒ÷-ƨÐF€Ÿ}Î8BoâߒΛ“úäâòCCËBͦ¯áçŒ?šnÔ{%6u#BýáVÊ›o¢”P_ÌÔÑú ;¢¡ß¬ˆf±½m3OxE4Ü:Ë•¤T©8¾?¢1!d¬åárâÑÐAÇw´RôD4b÷Qß~Ѱ ¢3æjgDSX °s<¢a+Ñä{¥>ƒÏ¢fçêZ 8] XF +‹X;­Å9ªØlÛK©CW)KóªÒFÛÓÕi¡Ý;²zjé—²/×xåRy¦8Õ& §Ø>É)¨˜Uà+ñž”«9Jñ?ÿ»˜Òœ^3Ê{ÙÚ¸OÌUUm¼«1ø3î/ë;}ªç9¾3¶.· +_žSµßߥkß+Õ£’ g­âèÊÍÕ• ³å"¶ðC°øåêïH9ûʺ—„×ôÒ½«ŠŸÁ¢¤Û‚²¯QD¶ë‹`Ù‹ò:uNá·FõßšMÚìWwÆðUÇgz°ì“¬Ù “å'Õ+›ƒ•e#×hÙ•—šçÁ|ë?vr}Y¦¤¦E·IÍÜý'•‹¼wzU‚@”45+;ë™õs·«Ë"!O%=©…7y9 +TIIɼ?”6eLÎÏ_˜Èê$+~JÓØu·“LÙ #ÓváUžªŒaà:mOôz|,¤ìõB*=®›=ö| +v7ìêT¾É]})-Y$ Ñq^\i/.Ø,2¨ (ƒö窘3îc}WœFW×âÓ~•%ôwßäù¡¾:²!ÛšdïfŸ¢N5…ÐߎvH—Õ]ˆ•ý}íà‹F€É Óênå¼ *Vý%ÁR©y_íúBr½°ÈôÆÈÍ«"5$¯u^ÿà$Ó;8±1—·pÆjWä(Va6 ¸ec³a¨¸`.TcÆün7I‚îûPe›Š½£ÚÎ*öVKÜï¬b¾‹.ÉJæÚ48É«ã%”‡2ÄÍÑ7qdpÙÕñÚã–AËN1Ñà¾Bœf"d¢?*šOÀunŽ–1!¾±wJ{fAÅöL¦b§Áç!À€yÇúŸœ&²'P“Iž]^!¸ÉÇF1ÕühóÈ0òRü=åÙý zK8DWRËQoiRBæ…ù{¼ç)N™Ýd‘gp+QÉ(:k’ÏØ<Ÿd–T*=Ëhˆ«ƒHŒ5*ÏÃñ±ÇU5Ý…¦ÌÐÚU‡<žù´ñïyy½êh œ]üàÌ.z~¥Ê\\ŠJ‚… :ÖБø&^›®IFÛÞjñ9™Ø$¯£èìÝgCè +³é$ÍŽUàèe ZY²¯@13(fàcqzàOS+`_ bªùÑÞÆŽeE}4:$+B<œ—ƇŠÓ/о†%ÔN¦™°aÇÔ‹ÖÃ]B×Ës·á4þÏ•‹¯6—wÖP[øÖÐú›»„4ý¹†êøLçPeBœ¹†Ã®¡Ï”·Œíl ‡ænÉÆa½9Ö0ˆCÏl½†¦o ¬^-;´5ôY±x2ÃÎÏÖÐg*¾]P{ÓX©y_í’6¿0c6¶ÿ ˆ' 7âÙœiôœN¥­}±£q° Œ×xÉÛÖä®Èæ&Ü4˜Bt#†b4¢C§9ÀX…ƒ3 ÒÔ{ã¸TÌ;ug3ح혧> ûœv´Å£ñî˜igÌvœÑLüh€(¾“Âl5ÈÛSäBË4ºêPvQ¯̽Æçß¿Óu°jÆ\B!α†`›úß‚¿ ؆,!˜1ÆNtÆ¢4€‚Ü8Š`.§Ci|Ø¥N_"ô¾XiúŒšB1ö.Šøöî¶þ¢RŒÍ9¶Rä«X£vu± ]9Ñ ³édÀ­+)˜TKät—B ]eA +œBc"8ˆ¡yÇ^ŒMjþ¶}VjŽ^×ÎVn¶; P¹•+Q1^Kä€'¨¿/FSð›*~QûŒ=®›½ ô…m¬òM5%Ä˱_½óp˜Vî€Q179.1èå$ÇÁ–)wäÀ…ÁàAc‚^8p€!•¼›¼”èààmïñÞÅqœa¬ÀK>}nèzÉøÉ~]M"™á“Éþ.?E²Ýª¦i‘ÌûÇ-|N"éÿrÝHF¹nÁç.W>¯ÆÜvJ¾€Í_<)zâT6]¿Þ×b\GåœX–Á?ì~æòÆái%ZªU½ç/¿äB¾>ZëúQTþÞŽ\",jÜá¨*Äõõs.‹N æ4}Tú{Eqº/ŠƒÅ¿²ÓŠvï95+†º5¢í"Õi¡ývyCu*»“ÿHNA.Àí+škå&†8=¼lÞ N_%IôœâûÌ;Še_y—±Ï)uþa¹&5ªSPÞz‰ê´Ð®.IN…¸™kìú³ôääêsª=Ò3¶ +Ýi'ó<4:Š/°w„Ç|¦#úKQtÀƒ½ L8 (FH8ÆCl†x-› ¡!èZÛ@'}Qâe¿î£A5j/L’Ô:yXï°ñÖÉG|ý!9UrgŒ^§_)ªär1>á²'â˜lÌåìc6ÜÍ<fÆüÎg +gãÜsð+*?à…”ÓŠÀÊ­‹n‡ÔÊ=ìf_~yCB¸,$S(ë{œ‚zéΪ +œÊi|šwìLVŽ’)C){RÙ:@ *2yײŠl>vj}Y6­Ø3†”_kÑ­S+7†·^jÐ IJtzU‚@”4OV³~N2¡ +Ù—?XÏéÄŸ;¡Â›¼Ù(Fžë¤$%ó¤PÚ”Y§1ù4Ha²X[I-LŽìÁâÃ7ÉJqc8IHm’„iª$”&/Ò~0¯þŸõ²ÝJ Âðä"D¢ÀuÅ30ƒ ÑÇGXăî9 pÿÛÏîNWw'áO~ä@¥¾Þª§®@õº&ðÆ ”e]V&»–-+~x¹©-ƒ»’©êse-P²Ù2<—H¿J _Îõ˜?æ·ï+À@_ª+²ÈOµu 0×+gÂúhÈÃðÇ(ª7Ÿ7QAxC×·‹çXW¸Ôàê’“ý|Þ¥…ÆÅѺ8'F«·÷…j¹y·ÒúuÞç»xƒáF†:7$ƒö`ý°^Ü +.² ñ”­‡YRRÔç¼{ò2›T›Å"1&ÆA5¿¶ÄÆ¢@˜4È`«ì#cR&Œ“±×ºñko¢¡ÌXͼ#­±m¬Ñ:yl“[¬Òý+¹±ðʾhÎV|]m;PWš³'i¢y^¸úÛfFfâvd9ÉtnÖ\m£¯Pð£»ðãì’â—çGݽRÓ²¯•N8×kOõT M°ÝÛw& ÿzVšKO('Órü +Ñ»ml¬bëíR´_|¤á+쿞Šöåé¯ÛžH†O°~:ªq@ˆ\p@”Êñ~_¥”b—NU]r{Œ8C§*“Íó1}^± ÄCðJB¶ÿÄ8=²Ó¢it2ñ袤ÿíŠfPx¤tœÒÅé¯É(]L¶Fn/yÊó\ò¾+Or°`[ `~¶~[q”#p Šùû’ã’DÌZ §d»DM䔲œe.]ׯІ™ôEôiË^DM«Oïý fÞÞÇÿ.>¾÷­ÎdÓ•Ý•];'˜ÉÕlÝ Öv é¸HÞÇʱ©Œ‘×$ÎØSN÷³ÑWQúßûÕì…}­š;a¸Û…V3„¡9(’syrÄ‘0¥~T…œ¤ šÓ;œÆ­Ðùº +ö1-_nsÐ"ï;_¡Wy²Ä0š¥Ó¢ù•Æ*ñ\®¯ÁìÐç*Pîè6÷v¥«÷Ÿ²ãTã¼—}óýYÙãgÁ„r¸´3^\†¹#¨õ÷ÃQ7]3Ô¿ë¼"Òûå°n:1tW›ƒ³¼¼’rk:Ý6 ݉B+8¡…ÚOСv„¼þÔtQ‡¢š¿l÷i:@K6f©2é§bájЉ™~ÈstÈü(;4B󳩗¦_<#óHamª“ÑÛ‚8jµE7úÁS}¿Èk‰›ŠæVÎð¸5¤VŠùc“]Ë–µE#ä[€7±)MWÝw`ál[é{¬³h¤Y2¨.¾bÚeåX)ɦ¥¢3¾7nõ;G +vˆ]2Ël»KÇJÓ2F£f¡Ý{#´:çWÞäçë|ºËã³È ´a@2üÉodhŠ„‡=SfÄî +£Öež«”UêK’>Dp"–äiÁí䯠·õ¥–© ól(~¸ wŠK‰¿YHb9BÓÅ$IÆG$ÑË0˜ü›E%µöQ¶dxÙv뢪£*N0VP]"v†âê+zó° +­ Œ%¶£ñ'vh–n*Ï'/ÛAÙë"éDsØòâ„*ü×EXøòïeé“¿d#,Ï•agÜ(2"Ä<6n¯ö!Ljvš®,Ã×üúDU†Œ½ºÐÆ””#”a`ªšžÆÛ(ÛãÃÔ4>&”!cŹ^ÓËpÈȱ¢é1ì¨Ë¤qÇ,C´§L=oè ËXͼ#ZLJrG)½›çgP9¸“Y˜¾YC£3^\rÛk–¹Û¤Ÿc÷!è¤Åœ{ü)è(bÎ}©iÙ×>stream +H‰¬W{_ÚLýùÂ-@­XB´…*"¼b}¤•Kàû¿»›ì.»Iÿ‰þ ÌåÌœ™3ÙÂm¾ð½SÌÉúܪ¨Óu/›ý/ZT)ûßÅä^.›µqdmÊå·uþX¬¦nÜ׫¹ÄÅ&WÒUõ%~[A/Ê7Ï%µ1îêÙ·¹|!—Cëyi‘|ù%—&ùTÁÊÇ:Èž •©ï ¹|7ɪYù:‘Óûƒ#hû'æEï?Yö¯í÷ð—i- +¹În9]À0;Žð A‚¶;rÉœXš1´L×DÞõ ¾Uô$´£8²z ß“ÝÄÅœu ’¬ÍJgfsix9/èû›Ž¦ô4Å}<@©÷gÿ$‘)AòŒƒÇØ2ækLr];®ô‰á™$ÂØZ +6 ƒX¹Ø¹æ"Ök«ç¸¤6F›ô¶–Å%UK¯’êt<êa-Ç3%HÐX×k:¯CÕ×j&«¥õ÷zpGdýC^PP¯ZdÀ +ï6X¥ ÿ[¸Ÿéšñxeyþ€—­Çœ]ƒ‹îÉ›˜nk¢RëÞ‹ÊÝÓ­¨Œ^~‰é_?NàmQ.ͪâQkt¬fû³Sûg¥‹ù ®{Gÿe¯¿}$ _.ú›Õ께Ìä¯^¿»N£p(¤@³D ë[;«âxŽV€Sû…d%bóÖ•¥h>4ÿe²Öñ[rëÎ@¹ÝÜ:N ©G¾ÓHýéˆëT­ë'7”SXÛíI4ö‘?qœž|œšâ1ß©i®‚äºÍ¹~kD—'›Ç­Só/îô»8Änc8¼JsúGÉs+Ÿÿíýä8=~KWîÓ ¶ÓÂ`Àw©ÿQanq€‡.ÇéITšeï&<§cÊ©½_\€Õ"×éÊúÓŒrŠÑ“^0-ýr½ŒSU…ÔµãÿÔ—ÄCÕ›  Ðâ_î`òÝÍûÔDoÇ„’¨Í°9Ý<–$ïá(‰ÁQ’5ÔAH•%zewZ† nH+ÿ`7%!+ôÒœÍ÷Ps_qV'æ¥dH[‘Ž?탧aÚñÍž8µ Nm‘*¶÷÷Á) “‡ÙcNôRÇú-u( 01ÉosÙÞû_ÒOç +×” ±2äç÷šXö÷ϘÉÛ 2{îR1ù…ª èêWñE}½*X{MÛ™¸sâìÈtÃo:Û¸'ÐtÆKr{2rÃÞbËX4a܇“ZaΛ0ƒ£÷¦ ©ô½ÔÀŇÉóçT˜í×x(/зAY™­8%ñÝN¶k^;:<¡’9 ;‡ž–èŠÛG¯L~Æ®À å³W‹mJÿ}Ö„Õÿœ1ùm’àÀ5eR…Ôv¢AL˜ÝN5aÆ‘þÆŸ½è¸z üy@«AQк\N­ÀBÀ‡Ó)ª¦H¡×Çuo†úŸ}^\ —µÉŒ ž‘^’X]Ð÷uºîe³ÿE‹ +z8ˆMò)1§‰"ÊÈŸ§AH/&˜‹cóŒ)¥ÐŠÄyyöÍâ}/Lô¶›Öã¬ú‚{Xû‹I +EVuA.àubÒðÝ´ Júr8ûb²Ä›;-m°¶ëȯå@Hër“·ÔB¨q2(bÞŠÒ-]¨úÅ‚”ÒN·ñë÷!që'Ha+è€e¶ÿíß b¤±Ûƒ;kkên.ðÓÜ×¹UDìqù…ˆV_–äÄúBĦÜQ±'?>kùÇ캴¤ÔaNï?Y!ŽY/<}¸.iž8ç(‹Á¬ 2x•µûš`ÿ ¶Þ_Æ|‘ÜG×^oé릔rYk]…:ØR¬AkK×€«-ƒMWðt)Di‹É({`…J––Ößë¬).Hôja/‚?ð'å.ö®l„˜\8\0ò\0‰qÊ> U3¡"¤3ÇÈ Ž}´ Šf7+R=Qê õØû%¥ŸvÕ.(2¸È^B¥k†ìd”k;‘`Â?´–‘õÃn¿ÝËhâèiáZ²G>¦-÷NÁ#CBá´–ûãä¡´U}ådmMž¦Ÿo '¨è»2 (/$ÍZfØÀ®ô *ô<IXêùS8Mø»ÙQJaƒòÓÎv4;cÎÈ—í¤ÊÇÎfYòÎmzwî!W® åcÅHÄ÷ÎEéÆmæ°Çè¿&‰{žÂ]âòʼn¡àÒp;¼Å¿™ RÓ§–/ßýºöRc\¯èaÚq37¨ßR “Õ´‰£•ÀÔÉÍþ~*!o‡ƒcöÎsÈŽçTMN™šmK4¸5÷`±µ%˜ãÀ`œGÖ& ØckÙèDÙª€ìåb{M ö|¹'‰äe±ã€ +ÁeÔ?gnFÂ-¹4;»ô ⦛¤:"f¿¾h‘CŠSKø˜wÅN’JmÛc¼Ng¦F‰îàþd¨‹bG$·&¿Cùý jŽIM„XuÙµ2‹°ÄŸORwÑR_µÈ`/`X° Ž€ê˜]ÕË@ç4T'óø»À->§’”þYõoC,:RqV:但0ó~©‚@ Kÿ) )=Mû²þ5F[@SEzbÑz,¬n…Æ.Ö÷À{oòíÜšàÞ…h÷¾|ÖŽ5»÷·"„²C®{Gƒö ´s(m+Åäo–÷Cv †s¶¸ô1Fž°ÌS‚D‰M¯Ôéû4Im>øYÆŸ9¬KÍÉ ß§¡´Cá1L¥iͼ»¸PÞ~p¡$ë‚ÎjñP­ÁWº„ðÙKbl°$æ™b<Îê,ƃQPñŸDL9ˆ_ñ½ƒ•fªœ4Z!´%`Êǘֺ:˜ûwsJÁï/€0†äƒå²¢¥õ÷ºoõCÚ1†–¹4„CvBÊxÿhHæÈ+IÑ“Naê˜KC@Іçfy[ø›Ž»]Œû¾4,vi>ãÑ"¡³Åø44/W^eý;èå«hxçÑ0ôãÒð. Õ8Äû`®x$´•Ògípiþzµí|ކ”A:œ†ÐECÊ +¾_ü¥½mLÿ}Öäãšr´¥#¡ß$€ð7eȈŸsÆ‘«)MŒŒÓ…72È c>.¿ ZD º^YB‡g,VæAB+rº ´aE¦±C'Õ=\+‚´‡»ù'£A3Ù³3X|EVt/2o±`;#bÈ×9×JE®{Y§‡¶úÕem2WË8r# +_›y…ϾÍå À@Cá2Ú#!Ð0†€Om…¢!ø¬ç¿Àø4$H8Z\ø4Äe€ÂÞÜ8”}˜Kƒ»Åp!¶`àB œNDÿ$)S±—ø Æ1ö n9ÉnWúÇÄ`³›…`e4 båbçúkîÊÑJŽG½weŸüøà*&3>›v?aBƒpàè±Ý ðŽ' 'Ö®0ŸAaù( ý…aNï¿lx…µG°»P¸¹šÉqw1 +Àƒ„’¥Ç&©IRÆ´N]€©áFoù"æ>c…9×X>vÞºâšÚGÃT3§!¶&VIwxÒn-G™ÐÆ8üP+CŒ¿ø „¦#>X”FË ­I†^CëÏšÛÄ6q¡y¨apá±À«ñœRQx¥³FìÝ…ãª'ƒGæF3OØÉ‰=W:``6&‰‡êÖ½ô— =”lÛº8ƒÙ åTßÎ¥tÜž{ˆR·h&k7¾‰ñq¯ß‹à³Û…óÊhZ]­.rz©7$Eéã´ &Šj]LÏo;b®x{-Ÿÿ-ê°.«ŠÜk½%Tãç"¯ÖÏŒŠZ×[†j*›®zuª?¨W¿ÿ§þŸ÷ê^LÖçÂWàEPEP¦¸7 P­Ö]WÝ£ÕjPïÿK‚ûµVmß?Ôš““œgœg§Áò¥0áåK¸Ì¿|ô‡|…˜ùJƵâ+Ë'_÷¾•›¦ùÖ[ã;)fÎwE€¾i;t=˺!µ|º±°§ôuèëÕ°.å7Ö ¬©hÑ7Æœï‹|ÌG`Ï/2.øÉ1Ê[+rÌ6×9Í.x:Y¢[ +ÊO†*ky"VˆŒ| ñ§O cL$GM•ñgìàJ(ÍxÐR ¦OZž›<‘Ý?û?B{pLfAŒšy +`_AÛö“Œ¡ëdþH„ =,t a;ß}& —3¥Âø_>ãµrUã­‹¼nªCƒ°-–•ÑÚF,SQŽ©Â­< äUõƒÓæ" ßYO »‰’=|bÑ%¾/4ÓL˜Z)d‚Gý˹“p¶´5F?j]i«ý\­a$Ó{•6}‚0ÆHî<Æpö6<¶ÆÌ MŒ°A¸9üÀõÙƹˆt[Òç"cHéjµM)4¾ÖÈd*úÏϦÖq¼¦¦ë^è8lahPñVÆìœbÞ¦‡Ü†‚½IbÇÉÞ$IÅ´5ˆbLpÑÅ*6 ‡ôf˜`Y8dwKp”Z©%ánšîxe)'&=ÎÅs1¹Ûf‹’dÈ‚o§BÎý”Km‡"Û ‘ÞOyËĶ{0ÑZ·ÅíD†ßO ð»(!ÌÕbo߉Ôþì#?jÌ~ùið.ÙºÀ=æx@3^Êm ®< 笀°¿˜ºúm¼'†3˜Þ(POöOWébàÙ•…M b$tÂÖüdàKpÈSqRÑ]ƒd sÑAãÕ…ZAxûuâžKS7˜/›w 8|¡á6h™5£ð[€f%\¥ƒŽ¶æ+¶Ãn£K~šNɬƒ#I·à{Wä~½âñzü¶’ÑŠ.ÎjD¨—°î‹½x²’¿5$‘ŽF SÓUäü*ìn£ë¶E"]³°ëát›x•Þ×¾ $£°*«ìæ^¥‘r™P¹ ”Ù‹°ùµ~m#‘TG¯³ù%¼{á^sNC„+6À£/,„Î 8ô¿uÑeÁÍß]Gm¼ÝOC8ØO7<üØMxvéäÒ­b Èaw¼üU”gì»SÊÞ2J:…•J!T"Þ¡I$å»îÕ~МìDÔ¯S£mЇÒpÛ…Ú«Û~õn~)½Éî;÷æÄÜöʧtºŸ\¢ÜÒ”ÙÃ@*–›„ÚgÄêž-M ?v`ßùÄŽ#C{†<`ËŸ8Ò‘m€ À‘ëPe£ñòŽÜéˆ!-ø°Ñ:‰r*&‘œ[º*-7ŸôV¤uÐ%å=$Ï}‘ðº;_š*<6Ìø[ñ£‡\þXQ&[‚·õ ×&BÄZèV!=Âf(O’Ф¸Ií‹5/lB‡(¤/À«O{¿‰æD¼’M#Øo±ÿÀ©Å)æwð¦SòÏÁ»(µÝrÚ¤Ø>Á\Ò ü•d¢;•†‚Üx‰ï)“÷öÓÐ¥A%(È£¼òËyÏAŠsîòs€PM Ý9 Âm¾ë=¤–`˜2?JSÿgsÍ•d4\Àµ_Ù‚»’ñ¢û¤“;nÝì†^Äeß–Y^¾­ž•è%/JƒBV³àJœò>IôBth帿.%}ݬÜ}®&‚j`@«z;Ô72óØã¬RkJIï+/rÆrŒÊ⨈­¤5 +‰-÷˜<§u(ôp°p?n9àø¬ËDBžó¦Âú #< +êS©´ÆÆþU²˜Q{=‚UÇ1*ö£†/Z‰“öâ$(`˜ã°‡AC™¢RGyJ’5™Ÿ¸Ä•ÄIJêsb¸ºä­ãR&àŒ‹_º.YÓÅÖvlyË0ÞG§mJSy|ŒN¥²â^]›®G ù}3´·ö°HØ'ÀBãl>¦LÕ|PÀº º}VC¥&±T®Tõs‘-ø·G # ‚\w¥îŠ\–TµÎW àE ?M‹·z<³_¾îÿ Æœï~Úu"7´ Ì”·ouƒ]xŸçÐÞ0ºÏÊ\ÎåE@ÿ^oW*‡?H%õê{‘É1רWˆz*c/§zrÏ›\î<ïkOÛ‚ƒóþ"XORú¤_ò\NýÎÄÁíÿ˜úï ͂ߔúQâÍà‘6WVf×r¸› šßY"ÝÒè ¯¬{ã*¢Qñ­¼ «z«ŸóÎúm˜ÈçDNÿ²ÉݬPÒ‚VoL ÚŠÃDëÉš ¯ßc´ÌzôŠ6Þùø×`?©xPÉG`ÿÍØl€ZWÍ;¡t¤r¢ÝÜßЗŸÀþù5·Yð›däÎ’CÌÿSÂÿ¤ +™3?Ä犮ÇC…Ë9Ýÿ“Kd¶´}‹5 þkZ¿k°û%­_¡áWÔØ?*~cd 'ü?1-Uì¦åâA£Jþ)ákÓ=Wh(2Èåï.ù[\;DÖïjì[·fÁoç؆Ô†bÓžiæh¥(ÀÆ-‹Q R®šy4Œî Ÿà öy-غùÂCcL#–/6Œ^-s°Ï¿­„1’;CÐÖ’˜C×iŒÆº ÉÚ´òoÇ7ÊG)Øñá&âÕ¦¶‚_úwͬ˜˜hv]¬µ•¸Hêu­C'­Rî=’ã±)o£È';£„µesцù·¤c +¼ýÃ¬ÍØWDV{]u*ÎW\„/Ö/û(TÉ›ÊãÆø‚¾/hAy³/­Ïû ü s½‡Açú±‰¸×=s—q¼MÊ »¸N»tO2ñíiCæ¿ÿ¼¯ÍùN»QDkì/,ëù#5ö'þá²|­¼ZÀÏF¾Š_-øŸ¼ý°5[Yõ“s¿½KºÍ·Ù|2ÜÀ_«Ê¾ä,øaѵgËÐÈÝCy®·âN gCsó>Ì‘m¡tˆð!C™ÈB}/œ„5$¥'e$ 'X(7%8Ô0G$ÂèJ›ÿoôå^ØÒmɳÁþ_·«—õeûþÈ•‘XIGSeLíúrc$¬üiý?ëËÊïåDŽϥ &ˆøwãû+†*öW— H½bSŽ”MúD‰ß_c ãÃÍqGa‹]=ñ÷¿MÜ‚k¢þÐÍÀ.éxÝ™8Àþ-ðº32Båõðº\°³ø[69®ßðØõéZð›àug΀Çn×ý5v ¼~W‚q&¹6ÆNÄ}ç.Ljz÷‡Zùç ”ôùDðˆÈr÷´WçVò\½îÁôB‘^¢¢(ˆ‚4AAÊZï¯ïÚ¿9'Õ†Qÿ°N2aæÌž=­î­ãÇx1¶ –";ù¢x]¸¨åÄm¶š/Gš‚z£]]À£¤%üK5¡zGGü-x¡Å½‘Œ÷5FR¹;ö–“»I†+áõU0eJߟëöOu¨ò8ÆoênG:‡üj¤û–¸¸¬ì±ê-÷÷Y73LNyÔükXR[/¹eyÝvÅÀWS´‡ü»‰Òv¦>´ÆüÛ%æÝ…sÏõoÌãÊïŠóŸ-®ïçé÷àc+®8ÿ Æ¿³ LþÛÀãE˜ü×è8š.¾»¿eVÔ¨ ËFœyA½à¿qj#ˆ–”:ÁÞP9´¿ÌÃÁõFÇð"°&øãxK_I`9‰~Wù(ËbÎ<Ïk½ÙœÑòóþ“‹Ç'ÐÃjëÝ}-Š=Eëšð†ç8..-@)D‡v[Ûô£O¯•„^a +ÐàúÛ4z90Þ*ÓèÝØõ–ô‚õ ÓâiÓ+&€cµxü€mÙs›¿l>u1Ñ<äW9†OZ€SB$R ñê¼ÝNÑ•xvùÇÇa‡-éooôÊ?ügæß‡ÝCþqà±QùÇÇa×sÿoçþ_~ï»7ðÆhÿì5º]˜k 4ŒpFˆZ¼Fì•ß™fý‘yõÇð úÛÊZg +ôEÿÍüä8«ã0òsûla¹©;ºœ¯ØXƒñ¹î†a +wÒ ïè¤þa¬ê¸&~Gl©¥à +@{¥­"Ì”ðÞeîAËWà'ÅŸØ3ZŠ·C¶÷ðîÈKŸµH uì^oIÑ¡BÖZ%ƒnb",PÞQ˜/âc¦Y„ÓÙR|äÌóÝÕ‹ù®½OŸa ùR©{­Gwª¡ìU½ú*©0è[”†ƒM% “t ¼º 9oÖ!ÖvsÝ¡Ý}:hL}èòS&wÍôÍœ–|Q, ©lgî ¤­Ç =­Ä`'ÛYÉ&‡§'’x:>D·iCµtÆ÷„¶kK±‹e»cåÕ”ø·rÿ0\Òoã$Ÿ¼² èÚ€/©àäÜáÆ ÜÇ Â,¶2AÈ…)âÞ„ ,Ú ÛÌ01u9Öæ¿!›˜=› 0o à- £ Þ_ö‚Þšìß6DxÓñ»áA6qÕÒ v®Z ”ï„ç¦ ‚ÀÊiÜïLò'DxŒØg*žÆ” {lf4Và!ªâ!ðÂØ±?Œ¸¼S!²¿rã!Aq¶‚O³r¯ +EàݺòŠZXøÍ„ø†R:bîIõÐÍIßg¥s¯”¹À”úav +¤gú#Ò½Šø–ù]…‘9…d?Tá22Wc¹OÀ<öÁ-Þ©hÊüWÑè§ê¶‚Pg.Çl`…ëFE*™›¤Åý +pîïU±R¤/¡Ü×òx_E6ªåæ°T.˜*޼Lgzq|Y*¼ÐÆwÚ“lG†ëê½ó»Úá‡yñ}^•šÔO«ŽÉ±RWø˜"ny^š„?'ˆÍ±½n¬¿"X)ûrâ¯Ü(óÚUçKŽ•jòïîm¿ìÈëŒ([*Êá­ÐL9T º¤›ªãìÈoo1˜°ìïî°’9»#ÿ‰¡/Ê»eÄÇYòiá7…K)âï:²<ÌV²ÎÇòiÎùxÞÌûYD¦‚…¶\1¬¼šô/(™Eh‹èæ’5bçÃübYÛä«××=¶xÕ*£Ó=losmÚ:ýx•ÆgŒƒ[ +Õ¶ÞV:Ž$pLŒ|ƶñ†h¦ÕH”Á‹+ ˜²#i?¸ÛYã"˜ÓD­<‰Ú²Äª¹Ó¨r¥‚zo_ûR¥¢ø¶ozPe‚;´¼SÐŽ-謔‰ÃŠìAýeà]q¾kRSOs +&á‘%ðn„j‰$NǪÄÞ:Ž~éöEKÍ ‚ êoãÊc_”%ñLaÑFÄžUxs=Üé '¼« ø“` Ý‚õ¬!ï6~Fè±¥+…/{ ˲¤}m¯]Á1+Šœ4Œ¶Ol%Tˆ…bÉq—~P¦GÚiaóÆÐz4öœôr&EW…~Ž>ÚQA*ƒ²3ÿ-qzdtS°M‰A•ï°¸þXe*-w²ÄE :má¬Du®T¥åâݦ„«ˆšgv&€ ¨HïàÅ‚LJo« ½‚¢b™vƒ’‹ÝQÇCâ+£"Åëõ Ý¥êqj)Áçš`Ñâ86›æ‡Ïš§Vq¡q¸Q$ hô ÿJ9eÎ Þ_jQˆ`<,i˜Î4 Ú@U§&J‘A5‹ôèP¢aÃÖ"´!ßùÿ2žh<>@yx 6vóñútý8y|>à~Y‚ .^Æœ¸™¤wg'qõFÍN“Y9&è…ÿB¹«ÌÕbçžíã"nä2ªðL—®ÏÜ5bî´ø.µîª[$¸“ëAñýCpavŒ~’Ÿ¼èïôãëx?£·^ݸmäVxÚeâŒ!æ…NiÐ.lÝ/ É_—íäõÉ$ì\;ÌIOÓzV™•\‘Èßv;Õq¦üÔj_íWŒ;Ðsö²Úí8Uºç+É£¨úÄÍãö(&ˆ3v!åF›²ò°Yßv¼O"ò¬Ø½Ú¼Â*šÎm + MÂÄ•ÜçXOÆ +xÌpf\ÒìhNŽÀ–¹É, j_eî2Zîʇ-a"‡6ˆþOÃé™`"ŸÛþN1Ï3¯4NÆ7~ëã°³ Òx^|qMúäEŠ[#düáH^픈W§œÐ%é9Îqr¶œŽz÷;Ä‚•J—÷·ÇnÑS~I*ø ?f«’¿í\2+7º!Ø7«hž“ÇÒN$¿øá•äϲ²Ù)¼ŸßS^TVg(K€Ì‚·ÒY¾Ý·Žð”“€Šyd櫨ÿ¢B‹–e­²ÿLîÅqa:MO¢Á¤7ÈO§©DÍ­Üy|³ˆ}¡BjÎj^Ì[b.\ðTô·Q‘S\-µË”§™‡²\ú"‹mˆä‡L³Èã[yˆ'3<#ð¾?nðÛȤJ)õ—ßÒ'ˆL:­¦}9}^Ê×k¸¶?;÷u‚·¢Ëøe׋n6ÿp«P¢\tU/¼¾i‹öL?Tή_Xá4q®xºï®±s<”3EŒ’s†vOp¤ú#ÍQPÜ}6೓p>{}îøŽÂ÷òëOO'mì†u<{:jp¢0 +û£W›(£GÝ»KÇp::"…-žÎÄbÜ– ­I+ìròjî7Ü -І|"ÚÐfjøv\ËËCÕméA½†Ÿ‹óލ?b| º+kC ¥Úöœ–nZùBÌ’J¥b­e-½ +<6È9q€¤à!røì’B©'ñ˜N¾Ý<”x${‹Z¯;2^í¹šá¬â{ÿ +>Í)§#`"]‚ŸôË +i\7ö>¯YÎcÙ„ò¾“°é@ʵ\ÆÔÍâ”ÇãÒµÁÿq&ºÙ«uxq)LYr—‹²WÌ!.Ïäk—#3ùÚa׳»Qîis\Z%.ð†ÙªäoFû÷ê^ë%ç†x9)¡³kðˆTMìŶ-êðЕ™3>³O‡ãl™†ÍL×]ÀeÝ 6÷€aKWa@m6¾1€Tñ² Pe¦2-Ä,YµT &šLÀ¯(Ò ðYÕ&_Å`ÙŠÈ”m› "š q¡£À4¨É°ØB®ë&^“U0$ªÆá|5†ßÔ²uþmX +nnÑáö²m¨ÀB P-¤"“q€@}n2d†6,ײ¡;'ÊO‚fpÃ͸ ¬°M.ÒL‚3UæÜˆYz@`9ZœMžˆ1w˜9zàj©ÉáÔM¦ºæÙ¦³ÆTùæ î@`ëÎm +†pfñpÐ`Š4ðuÈF³Q`0ËvÀ³ˆ†Ó»àkE¶j8ÿüj×±,·_0ÿÐñQ%14fÃ6 ,``R£ãÆþ¾«Š:çÞÛlnLÐ÷ÔèÅW±è ?Ù0F<‚ä¤ÚÝÏ&kf„"mkMóÞ ì±Ö`ßÍÇ>›.hÌØ'œßkŽ +µ·jîXh~öŒ óõ\eÁ +$#€hYZð{Ž>/7~ZÛk Õ ï+²}ÏyåïMƒî%ˆQ¸î3¦€iÈ~^¼sŸÀ¢¶´iþZcî‡ÖØç drš¸÷¬üFŒáy ‘¾µ›ãhcæÙsC½]ki'ÎY€ÃïìʺݖUDPHïO• ¬Ô7²/ë;iûÞWŒsÌj­‚²~h)“f‹òT…ȪNÆO´ÃÊy–C@VؘީH÷sÑ„£½‚_<‹„ïYó¹*jyj4{ZƒØ÷Jc"òcâ |JoWNåìeAdÑÒF}ÈÆþÎ?›.è„§4WUìuj+w€ïò&&š ÎõSÝjMg뽩¸ù^—M±UIÞz™×i*Iޱ0Vì&Ë]l±Uçk†É¥:ÇÒ +ÀX®=JÈ+²œÈn¾ ’d̤jæâ íã$"ÚÎ$‚bðÊøÖø´W íêÀ7„ ÙGtnNQ8øªŸ›‡hÕìp:ÒlY’žwï•«Hp§pÀÓ~†ŸÊ…÷ZÓ—U¡Cvˆä-mT#°ð8éÀ¸=Ö€†’4:¯ähHsn´m"è©Õ`¶Ø™=2F5²5ß¾4ÍŠ@žh^:™r©^É30ƒejÎÖñ (â"€ˆë©+Úiµb'e¹‘L›˜sˆ" h‚¢R×÷¬#ÚÓÙ²˜5¬ä5†–l¨33à@UÙÙTê G=e.`Ò÷ºgYSø¨çÕ"í†~Ö¨%0¥Sïz=3z^{”þln{»| SZ” `åT·ëHmr&c2É‘¬pmÔž])6ÓtG=³ÏJL÷*’I.3pXf\ßC²ûAÈ´´Ãöè÷¯±×Tðö»vÇhªÃÉ~ˤÀóÞõ¨°¶nˆyž}¼…ÉQ8ØO4a«×žÌk:טźUÐø¯=9–¸F$¯¼"A3º“*éØ×÷™ ªzá){ƒ hÕéÑKýÜ$>f®í, úÝÝ* @ö»g“ZõW“̶]McŒ +ÖÌêÒ>äÌ6,nèý«Ë‹¦X Ö~)ÐYêí¹Ahkä'h¶ž*4‹ãùñí£ïghª)"¸ÁÉ@æ áÈÞ@ÍÕíø PU1¼ÒIƒæ®=½°ÛÐ÷ègSz—HgÏ&QúM~{à°ë&Aì!ÒxlÊkømV¤$)œ>Φɲ…‡æ* œ¼¸!¦HU’(g5"˜ °ÒÙJfÊUñofïÇw)õ¾Û¾|'æ %+ÃèÿÐ’¡QÃØ–8{´’ÔvZƒ+2£f_v›€·ý~|MˆGÕÎÓ}Ð…3Sð³×, è]ÐØ}ÜËÖÃ|ðÔØÚdQâÐX¦‘§›rþ¥†!°5°nR¬Æ&uªã¾j’ªš Ú09²È‹»ºnR­ž d™÷kd =ÅA¤ïÚ”½i22Nˆ[ø*še2¤½ÆŽ¹m>&S´+/.Hm]§ô,=UŽ eîÒÁÑãzÞœñHmÃCk¶­!Ý\§d»½‡6TТô¡÷z—Fl-·Û5ø¨Ð1nèýk€oŽè¾Íž9¢ƒQ•Ï„ÐýTá„F2ÙHMáóYJ¯Nú\þrA„^CU~|Ö…— 8 yÎ(J¸±) ÏÖ>¼ ž‘]3Üû:ÛFd¼@ƒñš/Ö|z8­ùíßß~û¯˜ èOƒ¸…½ŠËY…ð@oEÊøøŠøÒÐä8A©þýuµÂÇ6(…¬EEÕ(hêö÷/ï‘ßñ{4ŠÚÇY‰”W`—XWZÌ Ryz'¢xA6óP£n» ìsBÖZ¥åÚTÌÈ{JvÕ4e ¾íä? õ”îTjSij rQ¶9øÝI²U2}“ËHÚ§§LJj²d o5=ž tÊ»xq4ruZ{õ=oEw¢%Ð'}û$oÜ~%ßSP=y/ZÔ›«è§ [4\µZÕ>ÚºÁËÒÎPpR8šþšQkö(oÄ22cÊ®›†ÕÌ +ÈÛç×¼Æø‘¡Ô@B¼½5}#ü •¯cƒJë½¢J9J€U­ìc1ñáŠs`(i•í\H@K–Ö¼ö-yªM ‚sÛU9+„@Wûá>Ìuóy ”Aœ âTC`öªµïqüÎ +\ÉM›²üÖõÄ'çhä{Æ¢[]–Q1Zmš€mQž¥x­ËP Yìä«õY@=2Т +(j˜¤*!´¦Ø;*VD’„ 7®Íð lÆǘê +ëNYÄ€¬±„Àyûµ¨ý¨@gº dµi(¾„¶]ùŠhn:û. zÐNŠ0ü1¨&+üÊq"îvÛ6Ë<`Z5‚IÌVïFc©“r~˜5*ÅÅ’Òd€ É=òT¢¥?¯bàlÕA yÜíÜO™\ñž‹©l™§¥{½»œBΘµÍöÉd¤"*VNAºO­ò!SœÓ~E|¬~ö=°ÞÎ*W ï¯™‰ƒÀ”óÌhòC•’×ÏœnzºŠOá“î'¢¤¥c 9GyîÚ¶b·4–%lQ•qÇ®¡ýü*×­$9‚_0ÿ@{­ºS˜5G°€€qÚc-„ý}Å‘Õýš$ ù2XÕU•y*c¨é ^‰D¤¸RÆTC `Ò"-a…íí]˜Ú¦ã°Y0šÕ½¾jÜuú6åô/SÖ#ÂéSå3²ßÚÔln yzA"#øJ*FòŒ"”¬AÄç¥eÚW(¾^µs3‚¡$Ç­çv®/øå*É\F;õ.ÌMÃʵ É«Œ#0P à Ü[º)G&nžÙÝ}ìpÈ?¥Pjì«[tª]:*!8÷$–Úª·s0I>U=f”H]iǾ ƒé™þúnÖæÉÑ7ˆV‘OÖ +qXš'kŽ=8X3S6'q$¾–XäÁÁ\;Úýæ˜I"å:n$X¢lÞ«¨4Ë&zf!áà:Øx åMF—¬¡j’Šø]í]i—Ö%«=gĵåýðX¹„f¿@ ¥20"°FaØÐ„ˆÛÑ-Çš3ê¶–Š)3Jj ˜" I_+ö™\UP1¯Z¥F¹‚ Bv=e_¼·KÖ†DÃ%d7+|È~"rö ö5÷žîm«M#á< [a>×LQXU¥¤¦í}HƒµÓŠ^:Ì¡—Â!Ô>ô—‘*LßÞ)Lr5ö-Z6µó«WH›ë‰Œ–Î=/Ìœá—Ú²áÙ­{ßÀ´c3BÆÔ´dóTvwÐ]Ü4É} +ï[j,‘1$J$GbÈ4Ú"¹Œ›z$ÙÌeßÈ÷/*Wùö»hê@ÓjU\î—hšØK.ÌÔmãX2b:„3"KDij#ŒUJÎ:bà s*°Ç0áK÷0`¶Ø6v÷¶Y81e;®š©”ÿÒÃïu÷>–E)‰äW…Ìð{Åü@F½÷Œ%ªÏaÚä÷ž+ˆTK-'{k®ÔRW¨q_¥´úp<ä¬óÆ~|‘e+‹bL#ˆÇFvzrfɘvnLL®–*/Èøièa•AñãÕEM‹È/˜VOD>ªì`£UWgivK8ĤG¹£îšÇä•ÃVžm…åØ'ÍÅHÉûD— +ݶjUË¡lR"©„@ qœGÛíÆ~|QÆù·~ûíßßꙤ«ÖIãº4haPؔ膼¡ a ‡Ê¡‰–ïÖìµÙýÄØ ÒNZúÚßÕf[¬%µË. H–BÙE#œí+p¸+Ÿj'Û D= ÃÅ–¯U§j ¼‚‰ˆm˜‡°µ™P ¨[‡HpmˆZ/®Ù«M:™­Öûò´‘’?`ˆqRÓ¤b#öÖÉ £ùOˆWK\†ºw*ª±Ê"Ûf ^ø~NÓ¯L•)RwX<jËؕ :+~h÷) ÉƒVæI’8T4÷>¥_Uè-ßïþe[5~¾Ä¢»¥òðÔ30 ¬¾È1¨¹”¸IiO¤÷v<Ì… +ˆ¾Þ˜ïº^üha©4xááHwõª~MW•„«´ŠÅ& +M«Üˆ­V™˜u_VMº¸nd.;RLGÞ‡~ÛÂÙi²ÔVòhQgvè“®‰›Hñù|¦²Í¾É'¯is+;ÀàPÞ‡ôšZ0+Æ+µƒ×°C:;å3Û5Á½hñ;0ùZ‘+SF€4™@ YH=GÚ³!÷i¾Ùl$ åš°zö>x™3°nMF&“Väd 4• +œs#NaOãê¤i È3+õ³06@ÐØeê¬NX²§î¨™áäTù`Ø•²}q•÷»«º?o-  ˈZ)©Œ'Òí˜^¡¹–Í"Û¨cKÈjQªò +ß¿(&7:¦˜nùEwiCêSdÝ–÷¢•j/ÂkC™I2I´¯Ãû2‡1[Óº¥ŸèF=W­‚ñ&Ñ„–ºJ·÷#"­à>VØ0ÖŠ|ÏÀx$¹¦Ù)FzNõ~ïuXeaô»ViŒ#’it#Uêì;XÚòõÃ>R…QR"–+ô»ž}˜T"Ap¾Z•SLß'—¬ZXßQå;²VÁ’„‚ìæ¿W¯=?Ý}ÎaåÒm&šu$]aþq¥j$åÝ]!Rêk³+h¤ëEuw«a ß¿ ÌíiÑá¢:{EÌ¥YÈ¥ƒ…iby]˜í\<½ÏâƒxßèóxÅ<{ ÙMöîuô"ÓJ/Õ•§¶ªÙj#“ªéÁ¾Í)ÏK¤nÝžkƒ¨YuD¦äðk®•V–Ô-­GS<Û`â—‹oTo[…Ø„†?žÈè©Å¾ÀhG²»YÅ®rÂŽôbæ.˜÷sÍ)Vª +|©\Å\8WfWý"Åɲ¥ñh6c„‚ôz_Oá÷ 1óFÞÒFg}°Ÿ3ÿ4wÍHÑIoè +s³ið×þÑÄÞ¿þü˜ôóonyZè0àÿ¯Û;^˜VgçטV¨øÆé¯+Õ_Wò„ºŽ’YZ$ÿ…Pr9¼½»°¼i q÷ó!Þ ‹ÅsÜ…8fKÛ®Uçª×‡®»¿œva×·î{zÝwÇ>½ýñÖ”j0G(ðÇçM‹„͆Ì&ýüüÖ¢‡­·¿ÞÐüçØ¿ãLÅÿ]øþüŸÉõç%꟮|£hÂè1="Žž¶R1lF}cÁ0º¾øE…ñž‰´`0AÐ`K +Íp‚ŽQha²Ž,|b«ªÊ’ÜÁÌã{éÇêµÚŒe68!²Ð9¡ éy !RÊwí÷ÖªÂ> +doX}‰š‡'F"|#·!CԷǵºEå¡¥ºîgƒæt(þƒÛ(\†ÐW{€êÂW +šU¡ëP¼¬@©à̪Z ;:0  ÖÛö®¶Êö¶M³ÅÃØ{øå‘{‰8¬œŸwB}-L°Ê>Ë­º˜fAb;±UÁ2Y»’t#3*Í„g +‹HEßYMTÇÜCÏ ÓpwÕÚ]mψ~"“5fð^/C©`’ëÃé7M¼iì'„yìùöß;Ê w„/ìSvþ@¸ï4òG¬£KÞ[|ñ9R¡l-›Ë NIúÅAq:e- +g“â„)DÔjÌ©A¹Íïš‚¨0®^•Gö‡2_©‹³0<mÔJêY…—‚®˜… 79y!àßµo {îac{ÕE±æ3ÉÞA?š_‘šÌ«”VŒµµÖ‡lVôˆÒƒ5ïõÙZ>}Ï*§žç~H)¾ˆ*YÏrBÛsÄÀˆýÐÒOß»-½æË½Á…ýò«G²Ü +ž@wÈÜSh7cµ+”=Vs}Åòþ–ÕÆøÂ“Eò“o‹ˆn9ö§Ý‹†dRjUº"£“–4à ÃtƒV¸0"ÙB¢""¢CuûÛ¦®"HdAy¨}Œ^ÈÅëd¦UTùÒÇÁ”)5c¥TÓiÞÐè‘ZÍUoM'ö¦qÀ~ëK«:£™÷öSHËQ›'FZü=å•HË$}ìßêÍy:Õ±>dÙP·ÐœBò.Fþd¸ h¤* ½_æøU„p¾(š¤cj‰/eAewéŽyéº7”Ó̵ýïTü1ŠÁì5ƒ:‚HAŸ_•3î–÷ ùñ›z9G3ý¬æîV«4NŒ;±·0ÑÕ‰ñË-•edVs$?L÷ÝTo +N¦ÚÇ+MQD–Þ‰v­¹ ALÏèÔí[-VͲ¼jkN0ª›Sé)°1‡¼B¿8‰º¤ÜM°Ê2Ò4ÆQ ǡʤˆõQ]È£ò»›T’÷ÁÝòàŽm°’[B + E[gq“Ô¾]Ú£—z\sŠ×ØÅ'-5 ¢æ@ÑÝ‚i=ÂÒú Œ¢Uá” R#†Ýê…|9¡”'öþMâßǸ,Ô ã9\(°gÉnƱT0¸LùÄêdólj·Öz04–- ˆÂÖû±þ3­ª“2çü—|†-…P”ñh1#Po]È\+_ˆ·!õ¾ªøs¬Ê£ Qntvt°ÔââØX;‚Íú¨þ`_7hh#vgrÜ|´çªTSŒ)&˜uÛûê0j­Åࢤ'Rr e.G.1¬çFžØU…gsÏ¡Õ>î?(î™Õ]ŸYìó‰5Ô§Ùý+Ÿçù+ -j2·â¯t$Vñ""`ÛîòÍÜn{ß¿9Ï_Èé£Je +öóÞÓvókCyd³ÌËΔéÈJ¿†g×îS4V ¼âN¦AXÕŒà$ÐiL ªyéÚ’»¿ÖÕ}Üwªáf?î‰VnϘ¾û,k®¢A²ø³ú»¢ ÑY¤\ÌÔòËgË¥lv¤Š¯òÿU%í¢³nƒ*‚`ò%¥„‡íû* ’\}}M"#Ás°?!‚¡|úÚ¤IÉฦÒD<ºo ]?BO÷ ^§ýÒÅ"„M’û tÇLW<¨Oÿ6§%¾U< ¡Çë(h¶»ºv?N}Cdnš Lj*æ(Ĥ¬£¹DøÔ“Pá·™…èæ2ƒ‚SᾨqQT{"¹RÀŽäɳº·QmzÔöÄÐ"]HªsÜ<–*¶µyUõàÙŽHCjb!؇yi#· ³}„,rcf+*ag¥Õž@Û¦Ö;–:cÊය£t“‘ق°¯Ä>Ô‹õEZ…ÜÉû@xÝ•ºò8)³«ÓÎE(ð²òÓ}bY•)¬Øm¹â¬Ì*9"®¹Ð3¯ï½ùuˆ/>i-ëŽJ+à®-i]›¶ÊËZéN"ìC3²øµ;Òó‘ÃÚtkª˜\Ì:¥¨‹p·LM~Ô°+ ]üÕ¦cѺ·ùm¬ÏÖú…8„+ÅïUˆón>|Ôá\¡Q5c\þpÆÔ=¤Â1Ýë gK´•9¾êòvýš: TêϱRûÞŸ4P5ØûC¬pÝb¶X‚ñP+@ƨù!W€Él\z¥®«=£aqù²ïlk¤«Œö\¥Unz¥rä|è`£|è•Êb¸ë~°®}S"¼Ôl7s\}ôû*<0?ô +´»^–<¸½‚€Îˆõ +Q>ôJeC•'«}Kãev…‘ +ÆszÁÇͽ$þs5zÇëçÏÿ¢­~þñÒЕ¯¼ÚQ€“jÃ&V§çŸ¿Á¸²ÐPÂrÜWöýó' +µX¢Øô?Óòdþ:®°›gÁy/5Ó}|æD°)QŸ0£v^ñ<éºôõ± ;ïsœt]øÛ³~8äéõb¾19P^àÁ5)¨N6•þ4z9鿟ÿÂZ”ízýõbW@Ú¼þ#˜…ÿŸ¸ýúÛåôëoç/Uýë?ˆìØeN¿GÐÑ×`qþ#ÑCamÐÜú͵Ã_¯œ “-Úü2|8‚à^eÆ|B`Ní~`DzZ$Åqîè|ð†diJ4âh¶zæüB—SYkw!0¹KHëâbbPCUd6÷AˆÂàFpÕäÅ ÉËH_Íû¹a +,I"-Í¢¯ÖÊ)̱/°s†Sà¯!¤eE ²`fÿØ[šX·ÊÝ—éà +½fåd$ïb¤ÃEøO ¬ßå\üÇÆ áŒPÖ²³#uG6¤ó”Åä å®\$ÇJW9€ VlƒL\ÂÀµ~f¯z]DÜ.[OGòOlÏâ ·¦åûˆJ§tuqËTÆ5§.øþnL~¦ +™ZÈMˆó{„¥öé&,³;Ÿ©6ïƒ7s`üæ…|9£ìÇ{Oü;D˜µ¹qÂ}jl‡:̧æÀ~2Ìgö ?Ô‘}ÇÕ«cžró0‡™©Ù/†÷ìŽTon“7æOi]÷1êmÕòmûl˜Ïä)ëÓ£‚¡~ZrMæ2¢VT[¸Ob©nß]îSÂÚL£bÕþDB=0ÙO´²?#û©d˜yØOݳטeµ{Õêj%ÿ)j«µ)bá?‰´ŒÉêYÓq[ƒòGëù†|){à°z[¥™]\“bP"ÓÞv…%E :}K9P"eŽå@oÈ<è“2Ô:ÃTHÉF‚rù\½\ØÛØT†,¨€1GŒîö‚>0XШ øn ª'ŒåÊ8÷!è#ÈMTOÏ1ýÿe¯t®òäTkfˆoCªq¶Y% ¨šCIÁ\E2MsãÐ~ïίs’Oº¿(/ûO®FQ• {Ö<Úd@ ï”} 6 HTSG<P÷»°ª'˜— (_‰áçHÊ[ªBøu8Pbp·í¾Š2VÉ*5Z#¨.Ó·ï ª´vMàiú=T_çð»HMy)ˆ³½Nò6rƒAäu:eëJ±á)¶¡TŒrSü-ñÖ_ù>×2x?—ý˜~Àpp¾¯*vg:©SÓ¡ò¤Ûkª€Átëe±Iaã»Æç¤¹°C ˜‰’|V£Ê9šÁJÈ¥‘zœŽGÔ¸ûÚiD1«€Dˆ®ó©:Rwâ}i¶r_…zÙÃû†¤ã9ŠoŽïãZ¢ ñÈD BÄMªhØ Û“Œœó 1WÂÊÑ!67B⨄À(ÿg¬Ú1îÀXÛ_3mÓHìyÔy霓/ «dS<·ôq!Þ;û?²«ì:‚†µ’0ÃaŠJÿ¿‘l1°ÙÏø °eíþЦ²ˆ¶éI?]Ü^zP…íÔw²ÜY˜š¤iÃüE¤ +¢£?–¦6/Ø©M‰*r¨¯6b{ž¾ÎÔyy‚IRŒíá£]6ïàšz2þI8äñy}…0[–å> ¯zTÀÉo9›JY/"iN™•wÎßTˆÌ§6äûPñLhèϬ %ìëX³¢!n4*HUãžÕÊ| ¡Ç)]4팦¸—‹YÁÿ¿Œ#ÏùÕûÚÛZþzŸ1¼ªM«šÎ5ë%Óˆ;_…á!i¥)´ò$%Ì¡ø‡Ï€Ð8*>f›Ÿoœ¼jM$Ô¡KwöûYËEäU5 k—­îeU—÷®ÔRÓŠCûjµ»É¾}­MFýüJ~‹¾¥Gaõgod*3fc&k\=t1Ž´ÓVš)÷U1ÞÚ¬ÔEtD°ËIÁ*[Baû½B™ç´“t<+·a­XÅ +äו}îË6ô¬–XËm°‘”nC@ßôô=¥’7Ïå(})oÌžx…-V,þ'À*ß: endstream endobj 32 0 obj <>stream +H‰¼WËŠl9ü‚ü‡\÷"±,˲—Cõ2‡†» +z1t­š¡¿#$ŸWfÁ<ÃåBž([–¥PHöûç­Ê|tmã^Ëxô&ýND»×@܆RZ›Â}ø9mžW‡õÑÒÒˆvÕ@lYûÄFZo]°\ü1½z u d”Ñ)6{ìs¸W‰á*¹Êj±@¬Ó= ­i ¤vñûGìÓn<¯?¦ ‹UZ{"}¼"ͤâ¼_oåþó­Ö–Žã˜F˜¾+Uxn{ ,®Uñ·¸R{´ið±ÖÇèUfåeQ•2±ÉëVy̹֌b5¶ÉÃû´ð îD¤g ·lýŠXW[ûvÌmj¬ò2â’eö44Š÷@Ì[]^ªÇ…'Œ#Ïï'½_!\¦Iì¬;jƒ< }eĉô:Ã…Ñd\/MÖ‰;f•h\! :™j NÜxêÚåZ2,2[Úƒ×"QQÜÓà3n¢=ÖXøJË¥d2=Êg“ƒ¹kö’¢Bp(( Mûp"uöu3ìÿ ž™M%uÉ&_<£E (µ™Ì+uÛçêHð:gÀh‘9 ³'õ«em»Ú)K8~^1Ü\YœàX¡ƒ§¥é+veþ5A‹e:w×ô‰õÀªó—SPåàÖ+¶«ŠÓ¦ÒS3fF„*‰…èdU@`ÜÖÍÊHvcùŒØÎuíŠ?ʉx¤d"þó¸mâ”\¤åQ]—q¡±¾\nb°a3±H‰Ê£”¥~RJ?#ÇôÈÉ+ÂpÀЬ6Vn=ó(br¢»­ãzÑ$·wV(Vº®lðq™‹¹*ÛõÔS™ Íƒ>g*ŠÑSTêîk׊RnbF7y×*ä –’9^å¼Ê±jäùîsÒd¦—è2é%XN:JµmÓš‰_µŸÖLÈš¤E­ñ¹;½2_¨Ä¡J‚“ ÒÆê_ÝΙV·};6ÆÈ}R©dèÔ¬©’]µ•±åÇe7î5Yñ\£ AÚûä¶R[;¯B±h_Åít€!é-0]‘lY¶ P´ä*--É'£®æÏ$å¾l)¼ž“OLœùùJ‘ÜžÍ_I¡H¸'µQ€¥å¾:®}Üß ¶7”oË€-Yõ´.1ÔvÓ ¯j^ð‚Õ-j‡¤¾Ù IUºæ™`’ +,«•XcŸõ¾JÉ+«,®EUã_hjkœE²¡+†±º +žÅ dïY·Šrˆ²8ŠPÕ¡çEД*k\qZÒµ¦p >‚À´µ4>f³X•Í ePƒ¿h§Þúª9Éãô1³¼œ†¾m}Ê0Ô.º¬]4»(ÍôÅ“æ.yz‘q Ù|ܸŠtåª5\rª•ˆHÏ™§T+$šº…Š0RTîÜs[k—¦,l‹Ð´ãŽÑТ-ø1:SF>#Ýhˆ«åª„¢¢e°04ºÂŽ8Õ+½¦bܼq@[Áʰ—f+æëõ³U4°®m\WA€V‘ Z…—Ûm©µÏuyŽ!n†çþyz„ä9NsLÖDêX±dó|¦cUÙzŒÓ¤å°‰µ-Ij¶¯†­œ‰5sT€¤Ÿ¥÷je\ûÙKÙÎ~ú;ò›ÿ$þýøJæÇ/7Ã`7!QÚpp¥¯[Cß<¾ŸëÛ[ääyëh¡Cä7ȱçÍì3öË­Ó Bˆ° <º ?ºÌ2•è?¾Üüñ8øO.SÄêlþ¿zûûVÙj!moßÏ·³¿1½CÇ®7Ã<í§á†CxÀó†:&ÔœQ)Ó|vå1ø_…ÏPüp¼c™È‚8 B =.lqá¯7„©HÏÂÂF÷õò}¬€‹—8ûúþmûVÈʸÁô„“Û wþþ¸Ù¼®øíÖ A¾#‡ŸËè¬S?.á\ŽÅÐnw»Î~ô|Üvÿ6²—U+Ëê5[MýwŒÞØ|çÐ(þš¼þ>ØûÑož½z +ïq¡·8¼Gê5š§û{€÷¼¼$î5µ§ðîÉ~#È•>r}¼ÄƒõñïûûDüßW‘u¼Ïœ‰²• ¶¸ë½`býÍÎ)ãýGHçw)È^CÓ*¬eÊ5š=Û ôÉc Úãu¼@SûZ{• +qwã¼4Tzqª= 4ÝPŒr†aÃ0¨†)fDwïnÕ‚ná\2Z‡¶ /ã8ž{„ÑTc‰Ä‹ß£5¦… 09²ÿǼgF@•Þº 7ñÉ™€·—ÐñTâ&Ëüj†x0,|2h>Xê}Ý|žb¾ ç Â(9¶ã]vEøvÛ­}ùk "}‘ž ú˜ïÒg.7¥83˜u&CÜhEGnòj7q®hõ_1Œ'g 7]™]†»]ÃY”–·0‚ñ°‘Ø 9‘ë§ qÒ¶ƒŠGðñNW*=åŒÙhŽ ƒ8…·áÙ†™’Ñ„‡£‹`ükά†¿–é_ÙùW©˜êÎ>,èäèìýâ˜A wQ"Æ×,ÈL` +W4PW[ò§öZêµ@)MÆÁ“¾QL€n[|bj$m{ÊŠ-³ÐpmãPÇ‘4µFåq²…^‚t€a¨õ>,€˜Cf«ðÉá@ÑMNkpÙÆŠ ac½B3+Úøê² *.k-o€ƒ0õ5 +–?ÈúP:µ·C˜£=ß@Gò±CBmØ×~ 2H®32øââ_ y¢c áàõœ­2’ÑF˘PÕ(x<à[ªeðE$âØC7{0‹ûi:o¯¹¢àåHÀQ±ashV72felà Ä*Fu¥âÏüލÆi#ù6+Õ@ÕŒ«¡ù_€xh䦄ލ¾oŸÑ>%¯LûT tf>Â"/ÇÆo }cÜÿ4fÆx)r_å8’íFðÿ};“¦Ð2Ç @~»¿­î¯XÈW¯ªÂ߯èz1\’¹DF²8Ðû²Ä÷+ ôÈÍ×f üëùóÊi-|_ ñ ¶}a{]·¯…èèžç í +ãˆîXÕ¨/šN0P¼âqà1üqíA>oæ å×u§]§?mÀçÍÇÊ?ïØ~G~}û»‡þbéùËüÂŒ7K_ŸsâÍï¿pλ_ÝüùÇ{8îYðÚKTŸ¢~¥ÁÍã/ióžV¯/ÿü…‡($7ÉþFÉüå²4hŠúΩë¥ß7(ðÝb7Î% /Öø5¶·þx?M¥[¡Î³[ ’äû;{©`zyƒ²W K`å*´É B¢wÒ(±’ Ãò–µ¨fô2…½‰HƒRÒ ÷6´‚.¬Ç\Zt/‘¹ˆÔdÙ3xú‚û€õ×k í›HP´A˜±ïM½xßʲPÁÁ€Ðí+ñ7¨öéz¹ž=FfEËð3„8±yѬEJuåmà*1…e( 8[2Rè=¾!E½ï‚úy^#EàcjÈ?hFDÓö┃ávâX³ +³ÇFº­nù„,Ïì§µ±£/Ý¡£:¯a[ [ÐÃáG7µ‘•)â³"Ó;Àº fÔŠh1‡±çuC¶—rÜÁ¹Tu:§Cºi£{ DùÚ!Áó¶My:Ö‘›ÍntÓ èÓÁ×w¨öì£'&eCLÇvæí’ã\^Öš²(ƾ«Sÿ;Óèe •jŸˆÞxRMv§í@>¶³4˜Ç‹E¬,fŠ3×ãJ UDeV1¢»’Ð%Р«¦ ¿Ny‘]€ù„<ªê}Iñ)M¨Z/RøüQ˜> +õ »n^¬Q%Æ,ûa, õ¢â¨˜305qÕ‰ª7­'BŸ-f9 IóÁ&{iB”cþ, µÜ´ ê0ÛÄ6ô(§YšÁá°ù@¸ Ê<ï“ö* ŠuØ¢$ #ï“¡?ÇÞ+ [° ŠÁAÛ(B]H©Ùf{B T‡L˜¼whQ«í¸„Ͼ#­µº÷]Øà„ë“–‘$i]ŽUª×}YÁVRòcL„‰ƒû0M2DZïy?¯¥bVïeU9o±Á‰øQrBêÉH˜{„1Jv¾ – +c—vÂJß+¾ÕyWömÈ»ÔOiNÏ­Bð8ï2Ã¥%Rð¶$rGÅä(t&Ä'9ñþ$›Ü‘HáØ]‡:ñ +N*m;2‘b‚D +Ô}[1˜U »µS©Ù¨Î¦·¢ozâHkôr˜Î£‘ÛöŒlÏ"‡×á.z{3ý^ÅLOmŸÓDë^ÓKo;ÞeÛˆ)Æ9ØÇ¾ZËÈŒdZ›3õ½M"‰T_U` ÷Œ¤ýD,A@k­Œs[Ù”ÕÑüUó“üR7GŠê™êÉHᜪ5º{]ÕÐfìòJÇÒ4‘¢“¶±=ÅZ=€Ý»R”û"(È¥FJ²gû` +žëÛú&™1|x+ym&ê'+âp*'S/ldU§É([jTE™£Ú‰éêMhQòzGÓúpâ4Ê[h‰™]Qé\³jïŠÂh<$-å`kŠÓÚ¹n§Üm“1äÝ‚ReOŠÓòPv¯hØ—jžRÛ½’Í~ÇþHµ],‰¬Lp2ùd{ÉWâî5”®a^謕SPáŒÚ×Þä÷6"8¤ðEEBfÏ@'%î ê +“Àš¯…Îk¾Zš@'[ù&i+¸ >)Z3‘ìâ8QoRn‰!²r‰Ï¬Ã~>Ž0»&OtÔÛ¼€/yO|òX¹Û}ÓXLDv¨^u +Ô‘ß•é‰ÉK#wn„/ïÅmh1íºÅó¢c{d¡´Ó³•gÙŠ:­í3ö¦Ô†s¿ïbXY/Ô€åf‘ЊBÉ£(§!¦B {ÍÉ•ºêøxKž¯Ó,Ëž=nª„­‹}áNXè 5Í'=¯÷ü”¸/g™v[@'GFú¤Zb…Ý*cn‰ù©ƒž?ÞÏòH~N,ø»fžûC`á z ûH·,5ˆòÁ1«îXmYõÔHÜÂŒpQKîá[¢šÕ˜“ì’jAÜï°ö['1eÁ”·n°L·÷ޱäŽû’ÝdPÕK>vG*aBfŸ eH Q)„™êwlõÊHmªÇ}*šêóä ê=â¶ú5¾.ÎD˜íºÔ“ìAvrÉÈšºK"hzš{1#‹Á4QØñ&½Ó\ ¼iå~s8¢€V2óôߢcÇ@ŠeìœeL¦oÝaFNå—óž`„õƒ½š‰HR`Á–å„LÖ8ƒ´èÔ)} ²–”Ñw>1(LbxZd±©Œù“­s"{IEztvòî0mǵgC:ÏE[Û‰2i +ªÂäqUTQ–8áî½üÑ\¹¼G…t­Á¢)â&€Ú‚(Ïu²·u1Úɯ’K’#øõï¬CëQÔKFæ*êÚujÄüþ˜™GdF¾,Ät!Ä0ÔKëØ|37s-ñìÂ^ö]E]¬Mi¦ïÈAˆ tu¬å4¡”š¸zž½ää,g–Â9™zçeîþåŸ>€þ¢- I˜²Ï²|z&oÌ¿ÛÔ¸ChŒÔIÇ⌠àS ÇJ5£I¦>‡$õv‹èsHÑØP2;€VHÅÛ©F’ùô ´¬óÎÀ{&¥Z^ÃKÎ&Èå§êCèàšõªH³¤¨OÍÄSX*.  F×¾Í2=45·`D˜ÂÙd$DóšpútC&ÔÝ´D*‘¦ŽèÎT|5§Í$Cg"-ewo*|,\Ø5¶@ÖQ•˧iN½…Çñ>ÓC7êv›S¯Þ^ï qèC¤bVùÈhÁÇ^˽ à·â˜e¬Ó6s‰%M_NMH¬¢@’,aœÆPm€™.RžLØÐEûøn "Ÿs£:#}8è1ÎlsÈ„Ÿ)ݬÀöÅ„d¨>uÒU ΀cŒð'*ŒI€ePövK=îÀ åú–H¢ë Ö(é!ú5&^ ®ôçÛyáÈjHþL^cÍœ¨=QÓmYC„ÂB^3/\ר‘âŸ-sï²âÇz»ömi7ÐWn@'lI– Ròœ}̺@ë0?F\?gMjq@¹)9Àbø¤‹Ähœl™šlk9ÎÁVS,îŠ($kf”‚g&Ž›€o¹Ú¹†?¨åù7VŸÍÝ<“ø‹Š˜ááçŽYÄcÅœº+¢9RGð-œ%°ÞËDÙÖ@s˜çEë2º©þº‡ö]Ž‘n£ƒ¤É5œðW*Ž@ Õ‘ +Â<ˆHW +†³Fo±’tìSf{al7÷áŠÙXi³Ahм³_ðt–kãÅÉÈÑœòœ‘Qco9BºBkLœßîgù†7«rBn—çÚôÕÊ­‹©34Û„JròÆŸË + ‡”¡øpbd®°Ès˜b/ªÆ½Þt›#ù˜‡’ÕÞ5¦àæKApä™™|¾oðÀÍÃ϶º‰ax;¡Jû©=é•jo®¯[Ô«JÊSÅ(a‰F&ÉÅʳ—äˆYM×Õ)b‚•¤˜]`g´ðp…mÔm ¥±§¢5×ÎÞÀxl¼ïÒ׉:¬(6¢ôM~îHœÔ¤MÔ ÉæÃRõ6GƒŒŠÌ]Í‘kgYlPóààr&kªµy3˺»Ê˜3ç j2 ë[½SÓATáK›»Òp“R`¡Õo”Þ³ÒvZ¢È“¤Xk¨UïA¿Á?â’Ê»§ðI…%¼%ò¦êwRv"Û £”â:¤M‰?BP¬Åé€Ü môæPሚüÛ¼mŠ 7€cÑ ?r<¾Æ Å }Õ~Z¹Þ›Üªê*à‹yñÑÓF‘QÀ r< GdmæÞB¬M]÷|݃£?ó=vrdÜ,½‚Šé }¹‡ûg»ÝåÏd[}õ#zÏË¥þ{“Õ ­ÅyC¯ £4˜…Û¾uþoÑô–!÷ñ€:K‡)½¥Ü vF[õ½ñ_!fœ'Ï%uòÛ}g_¿®Z7¥˜œNO xå¾n¯é^9ß7¨ºOÖÁÇ‹×åðz<ñ€¾¿˜zØúNã`Úþh™°9p7õê„›—^_n¾<yúû‘ç¨Ü\yÿ-Cž³èõî…·—ÿ1=üÉ$ÿ¡"RבZcˆÊ Í·‚qC±ª5ô¢ÃÒú'?TÖ¿ƒ7ƒù9A:±DÆ‚ ²ð¨gNZ'>³ª¡ ?F¨v,8™ÔÅyÕ´†+“Þ5áA[ä8C¨‹IhI4®AúXèô0Ge,å]¿¼¦`бô rX³T ŸBäè4È\º-ÄË¢ˆi·Ô"½•bÚg}ü„öUÏž%Q’XÊ»»´½eÕ˜u7d×óI:ž£d´Ëñ:ƒRê©ÅAvw;]Z8*–øN¹?Ð\œ‚X©œ•ý‘7×ôuQ`,!Ec‰YnêÇ¿S–¤Ø¡+¦<¸¦Ç¨o–ø&ÆxCæã$îÁ?õâª<¤6xžP`È $¦ÞðMd­ø¦Xº©«BÇZÏ,«þºÊ +Š ÀL52B-jžäÙ@#Ú”ƒ6¡¾Ju³{ö„è¿tÌÈ݃×:\&çµ8ƒWñß­ï²€0²'’H&¥o­†ÛLÿÒ´-'בóü×{>H +?~y)(Á0«J´ Q˜VÇ y^\V@z½ÂÑêR 0· ™×½Õ¢ÄÈ|Sî]ÙTúðM5÷™MŠ˜PÇ1ôYN0±÷jÌM@)yz>ÙphCÊ™'5ú°x´B›&~íIk¢Ž+M¯&šB°A¯þº:³6Td]SXq"c´¬{ƒûŒVÏÎ-b¿2‘@ÅØÂpõ˜6à}‹Ê„Þîr ‰¢þÓ•¸´6ôÈŸ [FÜNzsU Åf È©Ï2jÁŠ~ÂF¤ÿ#ž?—TL gŸc@‰AóÆ òyl ˜×PvÃ$ìâpe»­Lfs|[˜.ìnTœÇç\Þ_æ7êAýÜOâd ã–…`ÙNCÑÂή“nCÒûfÆñšã ã¹7£þËRìÿÆk?þt*ýø“Éù¿Yâ1LB ÄU­$¥\P:Ö ‚²%M‹ ËR¹bÕû1XbŒҥ^1Pަ@âÀJž{ŽOXj•oBi±Ì½¥—g(ÆçUôs 6·ŠŸ°€Özšöv·VuL;àÏ«ÚMï°]õ:–Þ:ì òS§ò,Ûõ´©\ íÅÔ[æýCŠò9þf¶X`×þlKEQ9¹yAm÷whÔéÕa[_b6C°7 B“tÅï¾}€\ gXY|}–X€îÕù#dåŒ +ÏòB°’nÏU» EzÇQny™éÃc¼qwÝ´±ÊØ¡‰´å~# W ôÀ&}â,ÜQ|ºÔ@jó‘ׄYÏ<ðõ‘®®­m¬žœ6 , dô¼»âAç?G&v¢Uª&&jºSÖñæÙ-÷õ5„!ªõŠ;“Yã‰vÛýdòZ«×* mäª6ÙúÖy1þ˜;vO­‹Ü­tqhÉèÁóÒ¬ðBОÔœkÕg<¿SX +Õ"|gNš©V$VUãMÿ” u=&ÀY×…04]>êZïRVÓ™ƒŽH¸"¾2°PUf¥ RgÝØ¢õ}#Tß¹ï…ùÌóÚÚO CŽú9nS‘Öž)æBŒŽÈ«üfSPùdsepŸ°í®.8jPæYƒ#Ùð^E«åªA8ýše2 rû uû¡¦uÂ÷×§êrg÷þ,œXÚwè™çã¦#GÞÅÆ!à×4œÙ.Eõ‘EШ ÊÑ<  -$Í6(ÑÍ©f +ìŠ"c®÷È]Ã"!ƒå)rõ"®Þ„Híò4 {y­q{Дº¿Ùãwϳƛk‹>›È¨îñ~è@¿‘,-í{aPÔ­$Vvø•e@‰R@ŠÛI~ïjb=¦„ÊÁì PfÏKÎÓòK¯Uµ·•²ãŠÈÌ%m׌ãÒÛ• (Ì¿›¾M÷¡®!¸ôX–Ûú˜’™Ú|ÕF‡e‹X` BýÛ +†ÆˆÛt•ö‹HF£ñ“Z_9Û¾Y'ôP,y’ß¶ô§y›+ÃwanY›½NKl×l¼^ª‡Ýªžz ó¿?Ëæ\–ÒŠö¶Ñº¢6ëÒ>ŒVwµ6üᔫ¦âë¹je—ß•hh«Ç Œ%9Öœ#˜1$ïÀ­Ü—bMwBd´(„Ö§ÎÃ&fûœ¹ó˜ª6†;"…OéqïÉÖÂPÚ:¯ë[í#ÆH"èÙ’{ã´ø + +5ÆýS¡ÖF³昣ÝIhýB¾”dïó^µŽGÝF ¥¥´S4+y¯Kýõb½un©‡GÄäàÞB68kÙSÂçuN]ÅRClµ6´ïÔ¹¦ë Sœ+l{³%ª#w­92ЦX€C +ý²1i§o¢¨NÆØWõPœ”)”·qn}ê3z f¯ZµêTœÕx!¤Z³Ü÷‚¶ÁÖR3vgƵZÖÎ}úôEÍT5¼'E¬×S[«¾=ï4¾×"ë;Ë{.±¨ùH©›LÄn§V'‘)½iU)¶•ƒìû$8Ï ûFn)v5šÖ¢èJìH¡ÏØÖEm`Éã^t2äæãÁ^b×àJúи&RïÆ6iEd”®~2;MHƒÂª  €@BÅt5ìfTöq+̼ý÷¡JãMïUð ;]ÐÚà%DIÿ '­¬’ô¦ó`¨z¬ +òÄ5khÃ…TZ\íKlr8Û±jØT/€øZ ]C7ÏmofGVqÍU†´aU"@r¢@KvùÌamzJË64NÝã-NU%×Ò[=u°aíŒ@Ù‡ ˜5$¾‹f“ˆŸI¡(a´Í§Xw=ûò–$mÕªåQ“ bßÈ{z½1ø'Ý*;Ú +WWe=ééG¢8ƒÆ³æÜÈ©‡¥œ5ÊߊäxüJ>±×N9XB¨˜Ù^ž£nõà|᜺ß^á Ø.«É©TûºÔJXíX…Òû¨â›ÌtŒÖæS¬ôݳÑDÞ.î"íã'›ßjI`]Ó y¾Þî÷Ø@`hó‰á£?çÞß‹¹·- qYëyJšº÷xÕv‚'¦Ævöþõ›ïé¬\>oéåmLϽ!*ë;«—c*m91¸·6²¥NÔK› ½!äß©¯Ø&Ì‚ +~µ ÖÆz4 `«´{´íÈØÎö°uøQó6“…Ê}àQO +އD¼gžÚÂTq!H¡õ•û^Ød_ã‡tºñ^úÐhÝ¥‡kî^æ#á| ¦À6‡©¹â©=±…&“e‹wbóËâF-V†FŒ‹:¾¾{¦Š¦‹ˆËìmU¨ö…㱡õxþ5æiíØ¡™=Ýóµ +c„hί·ÐX2¢2ǤTÍ1Â9Øg¬X]€uÓg³j`ØÔg{Ðwµ;$-KÂbøвӫé¦;´={ƒf¢þ²@L³M,šJWÛã¿$ +Ì‚38N +Î?“çNä+öÕ>ç½ +gåÚfÇâ;õk¡ªcê^ƒ]—ˆ­©.6;;ëìÞϾÄðˆî5V–]©1 ¤Ñâ­ÖsMWÚ;VÇ‹±Ï¾#îß$oû;6 N!Pp30¸6ãµ€9M¬ìúí{資¦µö¼ ìIï ƒÊ©ÇN%a}äbf+rÔÛiêÔ½Ðó„ㅕ͆ˆm c§òo¥gô}­Üw膗íX„„¾9ùƒ¤Ÿ?yK2ÿù¿?þü7fÇÙé\Ç(„òױСQaA³¶@6L*Nã̦0²Øê1ÅLÍE}äGD‚68ܦYklµS"÷- ôÐä‘NœCºÏˆzÁÔW\ƒìðD¦¹æœ)¯e ÅÔ>Ý|àÒ¬M€o¤æ7¢á+ÛìYÅéÏcÔÂq!òœ?wXyܲÙN¶¯¼B1#‚´‹6ﺹîl{A1`ćfÄÒUcx)©=ÈÝl¥åHŠ¢æª¤€†‰.€6M£%VstÂkÏ×õÁЦ‘E£e"ÈLNH/@©ÛÓ‹ßðbüÐ*H›`=Kp'x=è·Ø”Œã­ã;ßyùš H—ÌÃáVc&à©Ñf€u”¼îÓcx#V5{ÝX©3÷ͦ›Lö9W˜÷Aךi]€UzJñ“½Ò­øKîb"â÷"tÓ5´ªz¯È ó8Óä„®® îÉ.Ƨ”%.Êð±dÝ“ á°#N0±nNõ &ŽÁEÐôrß Ãƒ—ˆNËBdÕ-¤ºê³4Û§>4p],C5Ô;‹ªŠÎŸˆv5y”kUј†ïL ÛT½Vª˜"‰á#‹Ê9µ°ö«ëÖX-DzJ¥©1UFšbà¢õ(u§Ïhºðä×ço8÷VPúw +AAÿ(ÞÜœ¶ø'ú‹á“õýç?ÿ‰ÿùûf&g¹Q¯ î¯O¨ä߸& ]è8þ#¿ÚqËmà ö}C"õ IÛ0àhsÇM°×w‹ïÛc°À&6³è®–ô$²X,~Å事~¹­¤yõׅߨF*’Þ'RÁÉE}B¥J:΃vQ_?¿vØA9~»®xœp!çg.è¼K¹=ê냾)äåã_ˆ÷®†YàƒÂ;ÙFðeÓg‰Ê˜ ?þûýïX;‘Û?>0— +ŠÿG0ÿûñËúñK”ü!Æÿó76:›“ïpŽ>;20DÍñ>D—ûõ‡(ƒ?ðZd­±‚°ÖZÏDàG l(J-µV«bÆÙÛÞØj‘ ç(hÓ⪽Ä$M(}ܶ±ê1×Q-ˆÀ}I°^«,¥CÂ[ÕIø_ »ºcÐD§BçØÏkMZ¿'ÃVš_¯VàÁߨ44~øZ˜\ô{aÑoÈ‹ÅV h\#ÚÛ@B³ˆ­–T–ûºfØ·i2ù=­I¬Ý2ŽãŸ÷ÂܶÞX~Ä­°Fžh!lW=w}Ò{8 d.]%†Ðø"L»û +ÌV4ð +BYƒV‹NŒo3}—}`›G¤¯[}áS$RÞûbÙú[‰ü2ˆKO¢û‰Mù¤ÇÓßÇé#0üBšiµ?¹@Ã9ꃹmýüÉqÇG8ÁÜ‚ÒÁ=x9Çîyàôå—РÖiO ¾²š„Æ|zb0þ$Ü6V¸OÛ5€aœ;Œ__Zât¡´†žoÏàndm¼?9‡O]·Äó±uÓîÜc ¬ˆ7¬RpfTi´wa$wn·wÃø!d•D¬¯¥RNý­t +¡1·´¾b«Þ:åxÜæŸ¿{®{lÆá3°I‡})ÎQŽH¬†8k룫Šü‹ZW’˜¥KÄZPao 7ªs­~!ÜljÑÖsU±¤¾ÇˆÐ@‚|ôJ#Bƒ³\:|Pñˆ˜åá™n(ÿ\5.n.ŠLÆãyÎñʨ‚UÏ º!÷æÇ¾ƒ¡³XEî ‹ä J¿Â6÷¬-‰álšëBv]ñàÐøP Nš + ˆ‘eÝc.ëGyP«]†Üì QÖNMÍU“óI¨Rü2¦¥Pöc1X"Ì åHv W4òÄZNi7¬@´ª³y3H + ²…tŸ5C2¦¯ û6L=©µLçèCj€ê…°Œó(A¦VÑeèEß*d'Ç]ˆwŸj¥e”±mŠ-¸£Ï#>ÛÛ…hߩӹ +W[ÀId&‘¶grÖ„Æ›¥1J–;Ø«6§"£—öñµ<ÏQ÷ŸÄ0׆Ý*\ø}a*Üf–)¢X ñd¨8{C¼.1û†Í:’1¤a¸6‹ ·Ë6$ѶuµóÖ¦‚1Æ:+‚öÑ.DûÒµœ«zvRä#³¡Åç +XñM9kCŽb©êÞž#zþ×H1†%b¸ÀÇõj7œíü©ó÷Ùç²¾uì‰),ÞôÌÙÂ9—ƒ)4-Xçõ°f8|¡;i¶ç­Vd¯ŠUª÷U ›¥Á? $&Ð8[ÕéTÁ´ÞÆ>õØÜÒ•¿×Š’Ñè ãNsÜãæËî«bxÑIòr@†ißnÁ_bnCÝu8ì5‘‚ìI2(ÍÌB^ó¦µ[¦ñÑ2ß¼ ¯bpÍÉÆ&*’”ùþLÃëúpôXÍ÷ߎuó2×’sh: 8—9qX:×ð•ˆmJz‰>qbË8MÕkúâ}W_;‘˜¿ ÷`̉ñŽç!ñËõ•¸ÿycëyÓ÷kþ‚aõ:Z?þ+]~ü2íþš•£б›üva³DÍy¡`zÍÁ­p½1ƒºxœ±Ã&HnòÆŠC_¼°F{HeAÝ:Zì ëÁsQ™UóN£õ7†.‡ nL^,÷¶ÙÇs£‘:žöù“çF½ò!› íL_h6¼50fì¶×ZolÕÙâ%½·™ƒbõˆD‹ñŽÍ”k¡È‡?ˆu ýÃ8Ž>Ò-´©K@=k 1ŽžÈ¿c|ÝŒõm•k‹“fÌ¥x8¦Ý`t ¦.ýå5A«`ò•ª±Øtïˆ7µž;V'‹*fø¢±—NƺÒm´ÜWhìî ‰²7>±˜I#é]óߨû—4YD +Ý¢#ÛŽØXë%WE2a䑹]žî¹m¬.~æÑvŽ6ñ@DÖ’Õ+=SŒußW‘èA:»*ñx°‚îs…þW¢æÕÕ¹ +/_GøØ¹ˆôFSº9Ú唇¾¹èÃï s9^áæš«fƒ\0|ͪ…ÅÚÐ+­€¾ièàN.„í ›ÝWÑå-8ˆ›=í ¿†÷(6´c[X£I Ò&X 1oÞªãX¹/0F¢Ìø\CHVƦ"…ÁKñ iRYŽ‘fÏk:m\dgM!gâJŠ)žÜ† +Å3*¾g¿WŒ{ÛÏœÎEÆCgsd€ár&NÁféuмµŸ²ŠÖà+Ôã†aoŒ¥÷2Á7‹Í7öÌóç1/~±áèûsg¿$²Û¤Ìˆ-Mai™¥yP äŒ|©V…7#‚ùq+¶+¨³$×Ú·ZSÆõF›u¦‹@¬­ PJÐÔÚsB:ŽÃw„ãˆ>7wR`Ê|ò1¶=­:Z»,»Z^mK l*ìÁÌeÝ3…eé¤Pµ`W~pÀEBtª‹Š’{ʘ³Ç~Š_—G«šûHñé +“Í\3¶LK¸ü ŸshHݨÊÁªÙe1”yæ Ò¯ë™á1˜»k_;Ķ-ü[ìó#RµêdÏÚ>>¾r윴xZ(þ÷°|ÞÖx4R£öÙ¢Ö#¤ÓsªAM²”ʹϵlm{Í@pÂÔYªbz¨ºdTh]ÜE¯Yã§_ÍØ*YǹÊÑõz¶é7@sUãFX3*Ø©óc4íÛz!ž6õB¨dhEÚwbµ²ð€Ä¤QSߣ´¯Ç¹­æŽeÊðñ2G–$ÿ¤LW‘†räó|i_a§"Û;ÔVXæ K ?¬}9ôù¤Ô©rØÜglF¬ +Zã÷'f:`aœÅÓR#^£¥|,D;.‹r°2SåLW[­Hœº¯o,ôÔqYô¡|$ áÊ07EÂÇRà­uíëê܉(¤¥µ}_Eªfí˜e•œÝý¸ùÁÐ=“aR‚¡uŠC¥{"^#)sbÁÚ ˆyKsÕÈòCæÖÊÏÖÒY«yÍ"b/¯Gi­}! + |ɺ¯Â¾²¼ç‡ú8tnžáômRÃ>šöEÐðÀH‡vèJu«iP;|ô|rW›~1üÖ¹¤rdÑ·ßDÇ*#‹âëö,íã+ÇN•³–Vm9âÀx¢“YDV1)ì³mõlÓÕ¼€Í•Z„ÎÆ0—:ƳËMÁ¸õØì¡W¨ìÝ¥†(³z´â3­´¢o®¦$ÂUY¬Ú}¤Á®! 'BSo¹- h©«¯X´ZW[Ó^ÒT sßEmeu!â]%h¾©©‚Ú€ÎÖòy^†ÔiÖàÌ@Ŷu×ôÏÆz½+ŒÆÜõ¾ª‡‹ ›Q[èz=G‘\e¡öœ7+ÙÛ6ÓÔˆo{ËØ®v%YnöûŽOpKõŒO:‘«\åôÖÆýÿª[=³Ù,VRK$‚átøàßžu¤J"6†“ýàFZÍw¶|_*F>„qi¨;çÑåìUŽûZ,ʽ½v! V>^oްT…'—~ƹxuéû± +ãJÞò$B’W~rÞÙÉ!ÝÁuØ2ÎVWlˆTi7XQÆŠm^öþ’¤Ì©—,Ì3"ƒ>÷§µ?7WŠF8—ö-†Rä3q=™)Ê}Å5Aµ6¢ îõ·@ÐùDöüzb«N•ˆ÷3Lwj¼RËý©˜xŒMüàìç,9†Ç6´J6oD9kÍsU—ôøI‹£–‹ÂPÙvÈJìËH^(¦“}r Ý7ŽÌÃHFGª8}ü}–´ª•ö¸ë ôdyEˆÑt®sBX9ºgïà꘴.Œ¾5‰jób@uKÛÿÞVÐà2Ûc²l= ÷ãè ¸we Ô…pé#áëî)˲|ÁVÓ:ö¾~8O_ÁÊÙíù”r{ÓëÚè»óýyè¼9Üb£+f¥E[eˆÏ¢½&ŒD¼\Ú1€1‹†»wSS°Ek¤Bl–d”v4 îƒÔ%;ç\ 5%í³Á:>Å zk±oZÛ–OŠ@–E;F5·'bÕfì»°<؈è{ÈÍš:i–ZU h¬ó…’Âkšoœ»m–ÀnËS飈Ա뀕q"0˜û›V[Òª„ë+a£éš1¬ôa¹€Ë[ápθïYHÛ–kO„Ì +ø\…a‚L_¤Ìû‹=¢Fßw:·C\UÔ=~“††´oŽìÆX™¥<£÷NfQœxÊÚ º½6¨"ýà…ÁÂû€da8©t|ÕP'ï«ûpdzøǼ“ñ‹VbUáXdìªwäÛïU-†k†¼@ˆ¡[-)ÃÄ<äÛúî»m›ÜP“Ëî¥OÄÌö¾ «|yPiê ‘|-eÅ9Õ¼/¹§ÄÑÐ^ºÁåünlõ>Ÿúà®e¼cÓÆrj¹öà€—pK½d[#®­è¡Ãæ;–Âÿ]7AF»'†ð£[©Ó7 ë­«ËOô‡+W@ªSø@Zðü€êJE‹ê’¨y*ÿÃ]Ãßçˆ}£Í/Ò‘¡¨aE‚ƒïLýý{Éé_}ýú÷«$¼fQ„&—œÙEû5Ëù™Ë¶lLbµ±’Q‡} +(ì‡Ù¤zD7—`aŠÙCX@Ü!-n'å3r8²dÙ¬¸CZ˜ú2$ JUàH)ieÌØç„˜óšÀ¢AF'BÙ©{׆jóKV‘ˆK¢Ÿª]T{ȹð–‰XO ·-š"J-Q¤€8Á +ж9–6™ZȈÏÅ)Wï-nŒÚwTj÷ìÁ^äXñRêè'K‰Æû.¬Í¦ïUo Ó]®öy/ô)iÇ%™ßaO¸ùè è«w1D2͓ޗh0œe“¾ì¥ö›wD,³¿mä÷ì|íQ->#MšLÜŽ¼õ4oL,u§zaþÄ]ˆ«X.;Š@zDˆý‚^yrÞ"« +ê‹cuå6Ç\r'Ruˆ0¦Ñð± €º=óÏÎGÄZÛñÑÔÁ|èd(¡ŽAK}C–Ý»„!×6‚[£Š5 ˆ˜áH/¶÷e6gÒXzœ™NšmF”|ÞÜÈ·Ç\"¿±×yð~ }a8Ÿa²Í³ë¤ÂLÙ­˜Pº—8¶(^u ÕøŸãÃå %m›sªŸ˜ÙÜWÂ;ôAZ|ìeuVú§Iкa¸{áXdz9E:ë] €Ô¼V(c¼¯³ ™cèî:½ÏÐÆêóZfXË|{öBû¯Uˆ« hþW«5ô*EmnopëT©¦zGœLqïîo«Ñ±(÷‚ŠëÓI}@Ž@íK +6Ré± SWQV:"BC²;X"«JeZKzÙ’Ãä .SûN,DîÐ}¿i*ù{rßÕ§$hWOS8æð6¨4.7XçóáÖ:ÔqìEÖ?°šç­Í]î.…ë“Tb&ž¤[Õ¾UeQ€0Dˆ`ñEÓ<"̦\ÂzåäòWÊe´jÒÿQ.®‘@å\ãhÛœ,³{:Á,dNºÅ¢”ÝÄ5ojÅn§Õi¢^Žå–e£F¢¤áôUB$‡ñz…ƬæÑڜ빪Žš¸ÆŒ×¤Ð?t—Ø'wÀàV."_iž)ÊG2,3k_¢áÕ> [OÆñ¦Ý“ðÀÔO.°K¬òŽ! ýÁ¾‰…xàÖÒ‹…ãÝy"nc‡Ô^Ž¢1ð¤¶rÄà¢!°¹#%µµ2NÂ]–±ž4¬»ó^<¬ @-'á×;á•{°5ØX¡iéÁ³óC 9ÙØÐ©Ë|®Š6{±ݧÍþdcÛƒU±³Öv²±±>Ú)zl|ée$€`°m»ôN[§Ý(l™E« _͸eµ±dõ¢€†ºª’;J\³–HwXa^%î‰X—Ý­‹rã.G0Ù$OdŒ²6U…!>³½:?㚺Áx{âX׺í{ZXW”îÒk$‰t®^Š}@8W4â²V¬j^ ÑÃè¦âÇŒ£OkëF”s3q¯š[ÖpR¢* ¡™3޲­Š—èÐI:7ïÀ_ÀlÔàsM£ÎµLÓGÀgWFI1’†Ä»ÇÛôý½„µ);±Üð8Rì0'2–|ç‰YЧ´²Ç¯ì€´Å‡¶kWw+àæ4‰c¨•z.gkŒµÛ–«n2ÏUÃ’V5cMQæÜ†™±¬ŽmÍäõÊÜ'Áv6~ø£@¿÷ Ë'­¡xa\Í^ºS7ô +(ŠJÈ~ä*1­a +OãÁ Ê#móÊ”"§¤Zäåpk›*‰rT]'çåÊцڬ݈Bز½­ºæ½e=’±öŠú­”IßaÙúª;D 9×ñÇg ¾÷„dxÚ =ŽNlðtíi:Aƒ>0¨ÂÓsµ½nõ¸ò`ç¶æyqrc-©=«Ê*»ol)9ød}-SŸG½š]QÜEmÞúÊs&LE¶»2b Y»ªÜ¢Øé—cŽ.®‰€ŸƒÖS2ÓÀ+ ë7²/Þ칪æP @0Ø +©uèæð±òÈ‘ñY@¢cA4ˆôú[`‰ýìk9d_ûõ×ׯ¿ Q=øÚô¾îÒñ'xBäûçßÿGMýýçú îÁÐ;L·,ªOÌ;ç¢Ú EÕ!‰øçâ:£Õÿûj×±ë8‚_ÀØÄ‰yÞ=t¸†˜#”Q€à¿w=æœ;w×äÐØäžÚyötWWqöcäÀ3¤^jP¡”ýŶÎÿ}ñþ/WGç¿çÞ‡¹7¸LItdx†»Ï¶×¹¿ûÜÐ}k•ûœoïòÉ¡N/?|`”JǻϠºd],Ò‹‹!zü}þøl üí%(ñ´ÃŒþÿw¬¾ýΤùö»Óð›²üå{Dt¬Á ÷lv°¥è‘À·ø‘šîü/?”þ¿½ä„—¨ Ä[¨Mh†Ð ¾*D)Ôþ¿›m±3s[lè–@cëÁµÁ†5±Éi£8ÐJŠŠ–)’9¦cúJS@oÎiT_óRÍZ&¥0ŒÒÆØah9Åì|ð”8ˆä;ç`r_mO2ÔÌ¡Ö QBÑaí4IŽÂsÖ}¼2IdÃÖƒ7@4°uXo@ïé7à8ØÝcð#S¬BÈFª†Øê7Õ+KÓ ^K §ûâx“>A%ÜLÙqˆí*ºÕŸ JL£FžE[U½#ÎIÕF 5*ÒÁì¨ûÀ\g¸uh’¯åº5ÜX&iû›Sè©Ò1‚ÉKOÁU‘`ät¶Ô™ßÉ®Ic5Boj9iž &nO2„磑Ô*j)H̨Θ¥ŽË¦3ÊýlTÏè1Xðg¥{óé¼|¡lG÷Üy&¯Á¶¦ ´¤IÁôø¤À¡V)J :Û†”“ø®Ø(Mø’Éä +„0 ª8ÈÏ&“WsÚ>òa”ýážøú~-õ¤,n:F h¿Pµù«"?JÑæM W’mSÍZ3?r®fØ^e)k†QÊPáÀI ›ç1¯±(¥°Ê‚ú!0êÒ»ËÍq~*o›uBÍÌi¤'G—ô à95é‚\ÈU,Ý›ZšËΚ³¨·½“ô‰l@YÀë‹MJfâ+qY4¶!ŸD¨'^Q¤~&Ò5m±8˜ÁGºÎ);4÷D³-=Õ à!0:à ®+nV€ðJZ½µiL.>™‚ï¸" Ð?éiA·]‰¹¿œÏŸØQÞåÃå1üæIì=©PÎdqž²:>;!à¢_Mò]¡ê¡ð#PYŒ –}× xÒ,¹>Ysh=+Ê~`,›[ß/Q¡99«éû +QŠ +wàö¤]ÇC™sê +«,ç±·f»[W¢¤åâ–x&#ïìÒÛ ±!BÄM$=OR”’Ùcê`U¡P:Åô2îIZ¤Í…Õ›µ¯ÎÂP³<Ò¼RSõ­]¡GVÅ  7×f[÷·æÿ-”ÝWPÎs×v¨Å´~¡*Ø\ör„Vg8ïSÎ2ÀNa§nþS¾D‘[B_ìN¨FNÄSŽìλ“¡¬ºè‘…1©ìÞfêåñj†kÍ~¹FA†Ì]€7‘é‚zqÛøk9èËÄh‘(¾håºBµˆÄÌ‚„‹§ª§«MñTõ±iõ3vg¤aR@^D(©ÓÜùÉæ\ÔÂxJ~ÏMISou}Sß”kÊ-³l߬µ&÷ÉiŠñ¥s8 â"' ê>÷ÙLij}¯°æ@–­}´1~mûÎ1‘ozŸHVOº[ƒy@ +÷€Nà*ÚÏÁÓ¯w:¯ïÂÉ8ÔhÐqj%Ú*'€Û”~MÉbrTBÔýÊâ,fãXK³Äû—²W¶t'y‡Ù‡Egîwß#Ð(•¦‰š pXf”|ŒA*¬¦BˆLÅÀä@b{R.Š6ê¦;Ü­hHbw!`Ñ]½˜ŸlU*¨pîgd(UFä' % º¢•ð˜åœ“ÐâFþìiÍ+où¢ÚÔuþ²9s³3nXê3ƒ‡•þc Tl™&ì¤:ž›É¸Èè“âí^%_¥è³îüû©”%– +]LÔS,ɃŒ'±ÄR§l>!nÉ¢BäšY€™¢æ4D Ô‰A[bg!]!w=—Y§ì"ó™Oˆ}¢Ës$V¾ â¿`Ä¡¯Zž&¾¹¡$\AΙDKK¾5è¨$¥»fVˆÑÚ¥M7Øš,lH~†V­Ð¹¢”ªT‡²ßUÚ“ÎÓª{©Ê(Uhe´›úèÓ$©Å‡—cìS>ìýDÚú†™¤îV]ͱ€úN»Eæã;HÿÓý@ fª{Ž!6Eä–ÙUéNÏ4†ß™ìÁI`Ý$’Øuù}Y°¶¨5xú>eõÔ}¡SfOã¥KïëáìLžûpŒf›ãCf›Öñ"%¼G–@a«hš¨MÞuYÙ$„êfl€IE{¸¿'ÍI²ŠT¶<%?åá ºïÒ¥ ›ÇØ©aO÷“Øi˜+][2=8¼l#}éÇ39ryú‚Uúݤ†“eŽ^nÀ U×jǘ°¸Ö*Hp}ØQJóí„’ück«U6«¾eøÝ—­FÚ<¦¹¥µå,eºoäçïÃw¥† È8Y ®!uµSIk̉¤$=RCŽ©L_Gåv +Hª§ÇÔç:Ç _­ÒÚU¥9ìe»Å¡²åA¯ï¨AtQ»u«Hñý*È‹Ž¾|x@HȬ"D2 ]èŽê3§¬òÓ™´JÙqêc„ à¾{å ð””ë9¦‚øZ¶6ŽzSÁшÅ‹òÊݸ˜ ðxµoÆÝ)ð–Ûº!Ç‚öövвçSŽU*o •Ñ[lhÈ 4;&|¯®F76P-]­Úau>Ó„mfs ”Wíµ„x´'k¨>Õ'Ûœ/(•¬Ôî.Ë9¤Ó¥(®Á~ÒHi¶;ò ¨à™=é‚rìIYùMa¢´ÍÒÊ$7 ìÝé^uÉK•6Nˆwà.Ì0V¯¡–ºÅ%YX@µ“,:²¬Z¨õì1U-#PÂÊlľW"ó8-ÇêG/+…Oú£Ãnñ©t¼cLjf¼ÈKïí["€açÊÄ¡’zï“£…F³RMq|¹/J¿¹>ÅïM’²ÝþùHà>à¡AõÈ®D+6päÄ’¨ ü+(¿“þ>üPØ×’ä» ôÓ×ë°“IMº¨gJÀ gù–9Ôûwœàû?p‚AQŸ8¶ š,,…cä±—ïv ‘à–Tï°·s‹Çá*=ݾXÛ#yB“óp•л™¯b†?ØÄkAE¡´èq¯=H%è¦ÂB‰É4ýŸƒbÁS ó +ŠËcÕ@O)Öa<|îP(ƒ”J¥Ô"ßÏå%ÿôÏ¿|üå׿þôåןþõó¿üû?äWÉŽdIü‚ú‡<ÎŒPû'¦9&€ê0BꉞÑü>fnïÅˬC«€‡’òYÅâá›™ß~è;l*©úýí·ùù_ÿÇO·ï~üñ¯¯¿¼ýùŸ?ÿK¿¿ý ¿ù)Å©ÀX?dXß6ÌôÃ5ÔF á +q Q´þÓ$̸š¹ðvæ›Ä—~äåŽ=nýpÊ c”|Á_ýö20ÞM“­‡#úéºn"nnÈG³*÷ëÞ^fðª c5„ +«<鷺ù$ùao/þ³}î<ÿ+|;¬µý‚—¤ÜÀò°ôI|£ µÃØÿiðú»sÈt'è€D×íˆÍ)Óç@ª7>æí⺠ȶE%‡ãë ¾âJ A¼JÙÕ¤O€*»Ö|Ù ŠÝØnÇÁn2¯õŸŸÝ&ÿÄæpüïxÂ:çü®ÏÛ3Ý¢/´¬ç+¯øü1ÒÁ’Œië×[‡ô‹ ¾?)÷ŸÜ»]üdÕ“åÛcN_>ù`óÏÅsŸ_6¯n±<\þ“‡¸m¡<}ùN<åHØÜyõÀýåë7¦æ×oJô¯VFÖ0C@>ÜÈtŠÍ§ + hÁj ºÄª ª°w~X«øõW”Žc©åBómp¼(CÑj¥Õ*¾ +lUƒ„ t›8ˆ aLÄvð‚-™¦¦0}&tœ‚ÇJ÷CצM_g¦±g²%»ù˜ÌÒ~µùžÑ’©´mk4>ðüÜ6³È˜ë¢™¨·ƒñNº(Wâ(9ù‹fkCC&.Ô£!Ð9èAGßè' dó¸ +7ŽºŸÐ +Ãý92wÏíÐKµZ®ðÊÞ)>c„s-˱š0­=ÈT9’}¿MÎÈH6¸ pŒ´÷U·¹Ô¾÷:Çò@ÕYG³ÃÕº]G çhj½¦‘}OA`II¶ ¢¶™XÂN™^íAã¢A3'ólóáËæK¹úøÜíÐýÙyw :CÀÔ»‚ö¬o0bÖ÷ J‡R¨Î +%hÀÏ÷ 3À7E!'êƒ Úî¤õf,h¿<š± ÓŒÇ?8Šdêö+{ÔRètÃTM9 >þEÂP¡tHôAíÃÎZ/÷W?y¨£ßO(Îc»ì2=Áaâ0ç`r½&ö¸oРV2è²ëP=¹…äñAg´Ÿ­pÉ-ž?ñˆš·|ÒŒ±ÀdÃQRjq„eã3f+G"GnËfUH켡M©Ã©UNyÝì(I>8OrËü.ÿz}ACrŠ] 3ä¼éÄ–=çAËæ‡gý—uÌÿ‹Ó¾~s"}ýÆÔü_(>íAëè#³%¦ŽØõV -“B k]ëZý˃mÈH5¡9 ™h @¸¦Zz›ÁXbä ‘©ÔÁºï|4ˆHé­ù¶N&–iVêéSç( ”Ò6„ÛÀlHÒ}ø°VT"çB Íœ€~â²mì®]‹F|JqFáãYnGŒ÷¸oÃLuñ$8~Ê(T€¥oVIèÑq¦û2ŽûºÔ#|³¾KT8ÚÈk“¥+ˆ)LM^±™wÄ„—¶9\aò Ô¤p­#Éð˜XÕ÷%*&ÓÝmØ¢Àq‡€©`¼¬[¤Ùg›x ‡+ æ:€”×ath~Ô®¤¢¬:àùÚ' +pŠMBÚìÝ‘utâ "•N‚$¢¢Y)"Ç |~'OŽ"œ²Œ-ivË tçœÆ‰)ƒÂÜ1"ëÝÞ6‘d›V‰}¼*ØØ@ïÄ w¢ ŠªÚ°B¬:Ñf9¯U¸'wA^›bŸÝ¡€JìrêtÄô´bÕ] ¡Y0²f0´ÖD]ËxQ$™Æ`X´¯µ²úuQ÷”W¦ v Ö°BïZ‘Z:ÊSYì^iÐ6.Çë*!4â⩟t¶Õµµ”h™‡RlYe–ÑÆÝ)•]É0w\ÊN§ѱô™OàUÁ¬eÃîïýl(ÈÐxm' Ÿ:Û¥uÌॺu„ÒíB-‡ñnm³åËÞ[Òº>JÆÜ,ôš./ÁÖ¾¾‚SÅ5¹vã½ w.ŠÚ0kNó”}+¼?/PT.ïïzz_öÃ__~øÅ¶S5ÆÒ ?‘ð"M÷ ù½Frª£€¯•-ZÙ $Í!3 ÎZ½„¬Ç+Åh ˜ÉgIŸ¤',♤͎ÀXn„J³%Ã:"¾c±ö 0£Kï˜14†ÔÃ7ÄP,B¼‘QÃxD„#5°hu5–)‘lÜ;™¦@L¤‹CÑrºa-I½‰T”jeJ=AR’|®1ýˆi"4•Å¿É.»#A¯d«œÇýw°I¨èùš;¸ôúi´“JØ$Q)ÃKǽ!’ªœ*rlÈö[Û4zxLUsHÓân }-I7Ùytêʸ7¹ÏÑ!$äJ%ÈÔ@B,±LB ŸHØ»+1F¨h%JHä„)åb#Y¯4ÁEŒo„¿^H8ná™? endstream endobj 33 0 obj <>stream +H‰œWËŠdGý‚ü‡\{q )¤b9”—5Úzkfå^ãߟ#)î+« ¶iŠÎ< +IGÏØ:+?IÛ&£Íç÷ÛÜ”Æ8±÷{ÛÚ09±@„‡/Ä<¼gy~K¹I>S’S´‘KÝ®n3‘>{!Ö˜R޶ÑZaNCò” ¶D¦5KÄ-ŽàÆ!»ØœÄ‰uµã­‰ÍDtˆÞs+¹ 6-ÍÒ$Þ¨{©›Ü +a³¾ôyׄ„Ê9ãt…á.•”ú()M—”€ ÄQÏSL½N ždºw?È™Ã`æ{OìÀ÷Çÿíùcú”&€õm—­kq§I3´Äf@úÖ*“ÍÊž YéÅ‘»ì˜nÅî3¾ºÏ + [FMA•>|K¡9=¡6<­y¹iM€ŒËÌ1Õcëu7â?ç)c)mÝ‚}ƒ˜—5®½¸v$eòxñdÂ;Á.C‰LìOÙnN³MzDøŠ…iLG€- Žrb+]áÔˆCsãæåuhðQÌxYqá¤ox+¡¦c$"Ê”÷fa|Ë„ænÓkô#/~ø©ñå5ÉE- +`°âàédËôÇÿùïë¬P*›¬mãÞU®p‹xœÐ÷S?CñOÿ@ñ¯z~ýò`ÑûM0A=R v4Êü­ïи¾¿ŠTAü3¯[(ïŒjÏ P~@ô6Ú‰~‚i´‹Ë÷Në÷éø¡Hl/^”9ÊcÊs´Ý×µýz̸ÿ З„;ôQGïÅmª¡¢ wóøëÔ- •Âmâ$b#‚±Ð€ú+ã¢@ÀòdŒ‰ë1a»¿˜+ÉvìÔéßÐå.H/+Þ®–Í㮳%yܾۿ Ø¿¾í&îÀoð$ºÈÕçÓ·ýÞ ²´¿]èç]¦»ä~ûîï Goÿ®tq¤«?ÿ|Ú6¡þwåõk>1à#_]¹ºwþ1È»óûöx‰À5Ž } ä‡p_Sà$ü“äù˜`÷|{åèýñûßNñßÿvÙüž…™íaL¬L]AŒeafTÇhfQ·s4óO>dÓøóI îpÓ™lÞ0h`eŒ̇„ÌcGHÈ5!e¬%c°Âl”Hï± YÇÄÅ€ý–b21´³áuÊ:K"ê7¡bçID¤Í”C£Šu&0Pßó”i}G`ðÝk#9BæÐºé8#Ë&Ž];ÁF”ÎõZBn¢-¶eÁL_°ÓNðÈIÀ:•Ùh|ºÄ| N +Zè dvÙIa»#"Ò—Ü~ë¦IÅø[úf˜©1ömÉ!¶’XŽÐ2<ƒ ØL¼@ÚKDTiÑ‚¨îR Û¤E,éDrÉHv[ñ†U¢b@ƒ)±‰¦Q±k‰ ø”êßžyýeiC¦uøgø‚;…<‘¡yÔZ/d’›0®i„ +zGžæB°mëñæcÉ- 1fÝ®¬’ˆ6ë‰Xošˆ3ù’›]CFÄv–sI¤›$0°ý% Ýh±Ò˜K Ú,¹Ë`"bN•©SXN¤B Æv=… H“uVèºhQ–¹BnJeãYý¥eÑDtmU÷ñ  @%¯‰W×!eR–Ü‘‡eŸ]í®ß¬.±£x¥æEèÆÕÄ=¬uÜtµlõ%×UËFo¨®6=åWŽòV½Q"£keÍÄP#œÄ-¤›•¹¾HeJRx9Ku’7õ6˜eÁGÈ©KrmÕg,›o¯_²H%|xËnÁ³(ð™WëÞeó¬šÌ}’~‹õur%H¨‹ÿûšÁBÖÙT/é‹ÀX ó«iôQˆÕFt¶Š2§ø‹¶Œ§žˆpd©»ñfëKnÕc „²O´b[½Õž^«·â™rÑ×),WyH»rVÇ”.wD½xb¡·®ÞÇ„ŒˆC¤Ró ËH'æùF¼Se$‘ÞöqÖg``ˆÃ*Ìy*«"g…¢Poj™–ÜÂ" ºäjÓÁ–8{É­jB¹b•WoÁíeUé5 —I­zÞš©­>ŒUYG‘0u†M+ôŽ–µ!­x“¿k€àCª(ÔHCc澂Ь­Ê‹”Ìhºé‘¤ý;ðö1YÎzE¼+ð½Öªï•22ôÄVÊÐêþ‰2}^^a«Õh˽¹ÌUë0½”BŸ Ôc/††øXäWx°™r1˜o˘#¦E2K¦"KêïÔ{ÅkоÓÏ;nEþ‚9b±BتÃÛÒÇ5 ¢…̹œ›kÅãAA,»Uø¹ÅÒkMðxÄ윽ÄldÂDUÏÂÏ0Ó½=¡º´‡×ðííAÚˆ_Úú´ÌŽx3|ŽíÉòá¶PƒI¹Ö”]Å×Q,?“ÿ;|Á“²fæGlÍ€ë<ü/0tc<Þa§k/^¤k„=·ø?\;¡‹1Ýgÿ ìPñz[ª`¼H„n:¡ó:F1ß{:c1­gÊ£Oºc—sùþ2Nì0/DÛäDû’†ñˆ)wƒÎS/.„_?ü‚üûòhè“ØÊ䉥Ø-FJ¼­¦£Ïá'‹5·å¿¯ÿyô(»ê¹ÝçÒ0x/ø…½?Ø¡æI3ÌÅrv¸ºQù3tÿôtÿŠ&øõË~·z[|h§[zÞUþŠÝÓÿ? Ÿ;‹ÚÐaÔBm›jè‘кyü¡9XpL +¢²nﻯH•öÿɯvÝZ’øú‡;0šýd‡Æq¨Å»0°©¡ô*Œûû[Uìé™;’ëM òôƒÍG±XZ\þ~ùæ/E3¥]~o‰`4¶æÛK£µ‡x_€¤á[¶Õ4öýcï?4mmÑë—yÇu‡üÜ&šo/¶¼ºiŸ”ö-O¾+LøÆÏeÝÚyíó¯e'6Œeß(ÐÎ*ûG !>;óvÿiX:–.®:Ÿv{óÝ)Ï—»ãVœ¶_ïN¿…å ÔvÛ§Ðþ÷[ZÐã3ÔM¬´nùí…¬Ô9Õ, °¬ŒµƒzÀŒ—øÙ´cÎ4âÒ 6苬+Ár&dL)MwŒb¤=+ÙúÀÇ0rZÔxÈ7—«XªØÎE#c¹}’kå`#¼ÀiZjÉ];ÀÈA@X‘'ZXºd¡GŒ9½fÒßÖô†–@–¨Ñ´ò0F—ÜpÙƒ£¥hR žKÇŽè €¼ ‰k~C„ ûœºyK|5B~aÐàQ +#?×o +68Û0-±ÃR縋!QýÆ4QYq‘É”¹~)z0nRÒF©Æö¢Ú‚<²i8…c›&Xˉ(_+;2L©Ì¦œÙ5˜‘~xtÓV ü’zJ’;³£‘á3a—LÏ"7ÄõCO×ÔJœÐèéYY#È1c›RÁ™€@—ÃFÔÒ p=±wqZgŒÙÒ;Þ7æ=Ï0èÐ+r7dÍb™¶•¸²]BŸ«ñ£'CÂ#!ÒfG5Ê+Yj÷pdIíAZn±ÜÉhq‘[:å·¸)qLZ +|2"<€ùˆ„Øç¯ ~íUšÂ–@ÀLedY[Fè92–[ÓŒ#+rAHBμ3GÝrÐèCwpÒ S¾úÈt;>„À„ªÈßž‡^ SMéZa%WDj@6œ˜YLøˆ "W „mà Pç*"ä"Cz¦ªU%â(yij4Ï9~EÄÀ‡\e°»ˆþÖ°.PP-Ý37X&ô + +‘Ì…o°ZèãtÖŠ öž6€ý6#ƒáâ* "bbß MÄðF ß2£m-3ÜKF:ÅðÏÝÒ löŒÝÔцF`C6Aî*K‹Pä ÏΟò,[5.:° 4Ó·Æó®> àž¼c5Á­ š³0“”xpjœ=ðРaÂUs+‹ôTU¾¼ñí·8ʪ0ŒrÉ€$Ƚ~·Öé-hP.Jm læŠ1“ð;GTÈìD±.€0‚Nàšut(cFQ zñ"W÷;BÃ$GjòÈj‘º½éÊÖªÐ]}AFYŽÑ²µé‘º…¥ ¿ÔF¤]2v³ùØš×S³¹ö=dÁöøç¹²†SÞéwö¸­y¥_“GùI¹Y”[îS†ÛPžÓã )s? Ù|R HµÍ«L1Þ¼5Á ´/2"Œ yÙ"ÔÓV°“É$OZAbl8‹=: 46Šb‰y³Ò‹ˆGU¨Ya|uE÷=ä‹W—æõ“¯bÆ€a‘ðÌï­9³ÙQh£\5DðR‡¹ÚQËä,˜ƒÌ”ÿ<žÈÃ|îY5>Ö%6M$'õ•Í‘J¬Ú¢tVÒ›¯ m*8PZN'üb}ÖèEM4sÐ"gÉ‘Û|•“Í;Bƒ$-vdý›‚W\Á– ö4j‹€õ‚ cK¤M/Yò6 pY݈è š‰zã¬#ði + ½¹ÒÚÝ<¼@Ä ½!Eo¦>U 1’{[Ž‚cm$i"—¶Ã‰Ðy«gxŸŸ¾‹ H!„µôw…½Ûšûu d< nR ÙÛÐKËXa‡K>¡T“\‡RÑÃ"¶u=?ž Ï«9Á1j•™D#’$W…¤'!»® ª¼”p5§;†t^å¿kÇ¡žµ"9Ë È‘^ƒöŒ6—Uø°ÀÍ ŒCËWP=‘²ÁJD³#(³– [=bÒúY®ð«ÚÍY®‡ïÏr½Eã(W<¬—¨ŸU®[³‹“ÄxÌþ•fÇü~Ï'i²d׳Í> “'8¥Ù¶‹Žò•&@›ˆF}|¡€]HíëžÏšó7‹ùŠrôA4Tljï§>È ‡Á@脺„Öö¡¤-8µ»ÞX*¼V„Q‹œƒ*PãL[2v8‡?WLÂ^@( äéC¿+ù@"‘T|Ü9üAF܉é"ìâ_èÍSó4uLñTÌj™+<Õn§\‚—jÇ¡Áˆf„0ÙÆ”œ²¸p%uÕúI¦Q¨ÿ¨¶2>£T xÒД­:c¡,ðJ 2 öÊñ +=’Ï€{Í= ¾èzŸú}ôÁw#8’Ïì Vm( ¤‹²y(kf}2Ü3MQÛÎæ’™ýùž o ™5Ú’‰‹"¥©«§Xv^ƒ(ûw˜¹À˜¯I3X3a»ÝÙ‰1rGt ÉJœ™‚wÇŠI>8â„g‹¼ªE0&M¨Tø2 ÇUžœÒ´#4dkð)S¯ÆÔÆa‰rWÅ„WiC€jÓlD#"»Ù9rd·gÑÆ&¯48?qRbr³(˜@É‘¤è{<ׂàT0!z–ÆrBùd,bZmA4vl*‡£ü¸ïmÁeÅ=ÕOp|©˜|f»‚ãÖ gäâW çVŽÇÁÆ_ès¼§Y;À7$$Õ@ŠkÁÏ”Ö"ÌËœBV+Œä9-°Œá¬Lü1ÎÙsäüa:‚óèe:tr:dKÅQ”Ó*­˜Ž*€3¸šl­Ä(KŸ n&м¹ħÅH¨¼ËìmÕQ;Åå&­ÍéJ1å ÷àu§b ¦Gê‘ÍXyz×ïÊf\ÂA(‹„¨C.i1ˆ‚çÖ*Ò,ÆQb=ðÝùá¶œ$FèàW &Y‘(ÁŒHÉ4DBòT(-‰zô4XäP¨×¤±wŠV3ãrÈëÍÏOIÈ.ÕÄ%û¥×nÍîšìÊjþJ³Oj„?ÿB±÷4¸Úæ—šÝ5ïÖпý ôÛ 2Ø2ŠñDöÁÌb§žŽà$! þëï€P“Îyb„œôAò`›%ƒÉ¬̪^v?Tb|Àï¸ö×ÿáÚ¼ÿømÝ5I”uŽ)!NñLb!ì•wÕu—HÐaQ%4 bSæg·c]?›7Õ}£œø¼¤t ”Ö²…;p’Ÿ}8èãÃÎO<¥8 ‡ä©x$Ægh¯›ÛáïÏ:­„oÕ¯+²õTœW ø›ÄãÔ´Ïy»Bìà«×1°‹ã¼h)°õ6RÊçšmâ>ck.7mݶg´mþô¬ç_ËZ,)è=ß oñ Ž@Fýùíã§Óéã§SôCɯRî@È´åz Ji*½'Gã˜ÀWÿâCþýa q)l¤µæñ>²4F4Ä: ¯fÍ$4õ‘t`HU‘Y{©Ãd©‘ìª3r2î…­²ka @3èóGX@I¹îýdßëA.q‚fÁn1ؽë"›yêâòVu@¡ZºJŽcÄM:’š2OCÓ'“¦, Ȇè2iºV ôLjRÿàI½ˆM“Ê·.å Ï7KÑ“ôYúÎG{-~s4Z¦§q×ÁWíÔ¡ä`Kž¡IÈ2jr Eú“ü*ɱ,·'¨;ä ”D.ÜfÃ@{S[#·Õ«ZôõAJOzÿÿÒÓÊ(ð_¤ŠC0ˆ&Ç@H¦ùN×ÁD<׉ ŒFžÎP«´ÖcfàX¢Õ"ÅW5m¾¨5(O _h]û´ŽÀjõÑ$õ3í™–—j ÈJ6wb.ÁÉú¯Z5×6ƒI G™ªž³F!ï9¢¥—¨(k6÷Y$¤öl`Ϫ¤å4¦@äËÄ@e£Ô(ŽhA %.­F +¶ª¨ s¿DUaZPÒ¨ÆfQi5éò£¶<±éµV4Fˆ>ò¡ ºšØÇ‹oRA¡P~Ÿ¤ÂÇôj7ésܹa˜X¥Ü˜´@ê¹C ÄvãnøÝÙㆠ+[èÖ]IŒ°d'¡Ó›w:wû=›Îñ:“"ã‡jуΉ´Ij‹ÎÐ\ì s`v°9~@™êÉæOv^žï#8îæy¤ +‡Ì3vê7S©Þ±¨¨#¹\uʵ9#i¼»f º0”‹U”̤¬*O<ˆ¤ÆmbQŸÅPâgÝ?fÀîlX‡ào éToÉYÒ,á§ò?2`pAøþPÆ÷ß¿IeÂû+ÆŠŒ´z‚xø)QpuIɵ÷ð5Ê!wˤèö˜E_¹°}¥4twäý : o JÃÈíÀ~œH>! ûôiþ6aú÷°Y"j š\Ç®Ïyóûå€iÞ ˜/Ø®W>ûç="˜Þ~G-D<ÖQ,è'Ù0XâYl0”ø÷ý¯X;À:o¾aëw¿áóU^˜ñhçí×öŸ<ñè©Go¾{òùõ—çÐ=ø úöô‹tyN©§Ä{áŸo?¿Ú?¿X&?½ßþ†uqŒa›±c»0fï dÆRµ)øâ‡çŸo9!°èV–`N-ñTاx,šI©œ^ÍéÉPØMÚ}’s®­Ä@Z`›;š†T&°2F…p<@‰íøÜúhÜ%E`"Ž66•fãPSÞØ´»úÝÈRtb=•昴&"R!ƒJE‹ÎT¤@°¼:¢)ú¾‘³8V›H^'©QlÃ.Cq#’yV<Úz5]ãø˜ÇÍù;< ñÈY÷†á“¼1"–1ö:RÀîÕ4Ú(iݰ^JìCçV_eëÆl,YCvGð'6<ˆA7_eœCˆ`À«oxü¡â¯%Q†+Ö̱R`0ø„Þ†NÄÀvG’·ýB Ž6·Qí3gŒ©î×™ÒF]ץჴm¤lJðR1¾&@dd7* }k>Ï%1ÈóN0‰U !pĆK5ët§F¢ óù<"¸7J '‰($ òÆU b5k‘—,=ÑQw.IMŽìx‘1WEüÑÇlÏ%äø™›ys[Gd¨å@ÔÊ mtGÀV2:ÝÏ‘‘à +*áDÕȶ , Cte›—1³NtŽD€Ê™mEéMV8ªÌð§ŠÐ‘\£º…#ÀôXû.Ì' cÔq[BeFŽ6[Ad™É¹çð@ :ÀìèŸY4J{…Ð$VõÞÚ a‹Uê÷ÍPŠmäó ÔÄ>^oQóÙåóA ”bÕ“$MßÝ0ô7úÊI'“'õ5Øov’±$äîèzÇ(·S¿ï}4oå#O°æÙp14oªÎúºÝÅì$hbØ^7Akd4‘4v4±Är¾šž²u’4æzô³©ÛûHC+ýîý »âGO»Êíˆd¶G} íLWíWØáüGëh7&ËÕ̶Í;.†Ã‡Ù/°}ËÓyq‹ÅTq»åÂö‰|\îbƒj³QXµ;t,CjX–_`Û@îÍ6îFƒô#DèÏ7ä¶æþ„O.O=Æq•ùG s®ãU!;fÔú1rM,O‰÷÷©ï¾zû³öI — oZz¡ÚuöÇ«OØãÞHÿqfp3dŠbvËÃOä¼.gGD(ä?ðiÓÃaU2ÛZSÌ`Lú~ÅçaŸçÔ64R*sΕ‹›ÿìP¾h3yÿ„¥iœQISQÏO.uJ¦J˜ùù:ýž‹ZYo hß:½i'’bÀø<ŒÀÓ|Û:gY5oZŸØwy(ö’ËÂuÊWmlt´l¾=ê¿<£þ_xìçèç—Sò1Z²öx=„~Êa$º¢PõµJÖp·O”¾7Œ 'ª…ÑõíHb+”¹"6†Ö@gƒÈ©ŽiÁ©gGºZsÄÚDæXå"ô<÷ Z°et)jJ è@X­}]j`…Id¤áVaÿ?É9Ï]‰Q–Äe½PD ,;0WúäTwb[Í˜Ä CÅWåœÉÐJþ8m$O×1Ò|H¬ÑûDÀxæH±N—bqŸ[ÐJ«sŒipöäw*þ6Š–ô*uªhk; ¼-çy‘,KIº”‡úvËjM}¦Ñ¨"‹4B[«se¾Þ]ÇÔl¬a|KÓùĬ% –Óð7Õ'c®™ò£r”Òm–:|ªõ™b!‡Éƒà«pÃ<ÅÜsžDÅ¡Cr5’¨Jø3Qt†šð„«¡˜Ò¿˜‰Â§¯¿…öz]Üù^0xOœ¾ˆa’>™…ªP5É¥|6Ai,¥)‚)P½ëÔå”õU É™ ˆ¯®X²_©ªbG&¤Å8£j ÃVÉ4ôΟn© _ª¿UOaÖJQ•E˜ÿÁ0¨qž`Çk«D³Ñ¸ ºªú Sõئº2%hØZœ¦Å嬧œ·YÕBÄ'§Êò%é=ä¦|ÂÜlpù)æØ:%”"\R!¢^“K””Ĭcƒ6¹’„s’cíZ<\8ù-¤4hþ†GúÎÞ«õfª7EaäQÍ æè"ˆ‡ýk%¤¹ŽˆV‚OŸ1_G¯¥hg'U8g-&µèŒ¾Õ2‚çji¬wÁBV¥[âG>êÛEÔKN!ÃT™GeŠ`sq5î„!czŠlÒ®#µ‘±äðÕ«'„T»ÏMiç‹öë—ÿ_+È B(DKS6ˆÓ8eà~–¸¶Ôyã +&üb¼Z<ŽåûÌî®—Ãñõv}ÜîwÝðо4g£'fÑ^<Ûݦ¯VËõú×ý‡ý±ã£‹ö¾Ä_s»jfË·áîf÷í¶{臫«f6{ßmúOC·ýÑÍæÐýîÛn·ãØþ'¾i7C8=|ßÿa!ãñÙìæÝ›æ¯h_0 endstream endobj 34 0 obj <> endobj xref 0 35 0000000000 65535 f +0000000000 00000 f +0000057472 00000 n +0000000000 00000 f +0000026450 00000 n +0000000000 00000 f +0000026399 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000016 00000 n +0000000000 00000 f +0000000078 00000 n +0000026896 00000 n +0000058875 00000 n +0000058762 00000 n +0000057527 00000 n +0000058201 00000 n +0000058249 00000 n +0000058943 00000 n +0000059175 00000 n +0000060180 00000 n +0000071358 00000 n +0000084154 00000 n +0000103428 00000 n +0000125808 00000 n +0000134774 00000 n +trailer <<528B65B9447541DA8747CF07BF896D15>]>> startxref 135017 %%EOF \ No newline at end of file diff --git a/lib_xua/doc/rst/images/threads-crop.png b/lib_xua/doc/rst/images/threads-crop.png new file mode 100755 index 00000000..55b55865 Binary files /dev/null and b/lib_xua/doc/rst/images/threads-crop.png differ diff --git a/lib_xua/doc/rst/index.rst b/lib_xua/doc/rst/index.rst index 3e66a00e..abaf3eee 100644 --- a/lib_xua/doc/rst/index.rst +++ b/lib_xua/doc/rst/index.rst @@ -2,20 +2,38 @@ .. include:: ../../../README.rst -XMOS USB Audio -============== +About This Document +------------------- -This document details the XMOS USB Audio Library. This library -enables the development of USB Audio devices on the XMOS xCORE architecture. +This document describes the structure of the library, its use and resources required. It also covers some implementation detail. -This document describes the structure of the library, its basic use -and resources required. - -This document assumes familiarity with the XMOS xCORE architecture, the -Universal Serial Bus 2.0 Specification (and related specifications), +This document assumes familiarity with the XMOS xCORE architecture, the Universal Serial Bus 2.0 Specification (and related specifications), the XMOS tool chain and XC language. -Known Issues -============ + +Host System Requirements +------------------------ + +USB Audio devices built using `lib_xua` have the following host system requirements. + +- Mac OSX version 10.6 or later + +- Windows Vista, 7, 8 or 10 with Thesycon Audio Class 2.0 driver for Windows (Tested against version 3.20). Please contact XMOS for details. + +- Windows Vista, 7, 8 or 10 with built-in USB Audio Class 1.0 driver. + +Older versions of Windows are not guaranteed to operate as expected. Devices are also expected to operate with various Linux distributions including mobile variants. + +.. toctree:: + + Overview + Hardware Platforms + Software Overview + Using lib_xua + Features + Software Detail + Known Issues + + .. include:: ../../../CHANGELOG.rst diff --git a/lib_xua/doc/rst/issues.rst b/lib_xua/doc/rst/issues.rst new file mode 100644 index 00000000..d0fee06e --- /dev/null +++ b/lib_xua/doc/rst/issues.rst @@ -0,0 +1,20 @@ +|appendix| + +Known Issues +------------ + +- Quad-SPI DFU will corrupt the factory image with tools version < 14.0.4 due to an issue with libquadflash + +- (#14762) When in DSD mode with S/PDIF output enabled, DSD samples are transmitted over S/PDIF if the DSD and S/PDIF channels are shared, this may or may not be desired + +- (#14173) I2S input is completely disabled when DSD output is active - any input stream to the host will contain 0 samples + +- (#14780) Operating the design at a sample rate of less than or equal to the SOF rate (i.e. 8kHz at HS, 1kHz at FS) may expose a corner case relating to 0 length packet handling in both the driver and device and should be considered un-supported at this time. + +- (#14883) Before DoP mode is detected a small number of DSD samples will be played out as PCM via I2S + +- (#14887) Volume control settings currently affect samples in both DSD and PCM modes. This results in invalid DSD output if volume control not set to 0 + +- Windows XP volume control very sensitive. The Audio 1.0 driver built into Windows XP (usbaudio.sys) does not properly support master volume AND channel volume controls, leading to a very sensitive control. Descriptors can be easily modified to disable master volume control if required (one byte - bmaControls(0) in Feature Unit descriptors) + +- 88.2kHz and 176.4kHz sample frequencies are not exposed in Windows control panels. These are known OS restrictions. diff --git a/lib_xua/doc/rst/overview.rst b/lib_xua/doc/rst/overview.rst new file mode 100644 index 00000000..0c9095e0 --- /dev/null +++ b/lib_xua/doc/rst/overview.rst @@ -0,0 +1,77 @@ +USB Audio Solution Overview +--------------------------- + + +.. table:: + :class: vertical-borders + + +-------------------------------------------------------------------------------------------------------------------------------+ + | **Functionality** | + +-------------------------------------------------------------------------------------------------------------------------------+ + +-------------------------------------------------------------------------------------------------------------------------------+ + | Provides USB interface to audio I/O. | + | | + +-------------------------------------------------------------------------------------------------------------------------------+ + +-------------------------------------------------------------------------------------------------------------------------------+ + | **Supported Standards** | + +-------------------------------------------------------------------------------------------------------------------------------+ + +---------------------------------+---------------------------------------------------------------------------------------------+ + | USB | USB 2.0 (Full-speed and High-speed) | + | +---------------------------------------------------------------------------------------------+ + | | `USB Audio Class 1.0 `_ | + | +---------------------------------------------------------------------------------------------+ + | | `USB Audio Class 2.0 `_ | + | +---------------------------------------------------------------------------------------------+ + | | `USB Firmware Upgrade (DFU) 1.1 `_ | + | +---------------------------------------------------------------------------------------------+ + | | `USB Midi Device Class 1.0 `_ | + +---------------------------------+---------------------------------------------------------------------------------------------+ + | Audio | I2S/TDM | + | +---------------------------------------------------------------------------------------------+ + | | S/PDIF | + | +---------------------------------------------------------------------------------------------+ + | | ADAT | + | +---------------------------------------------------------------------------------------------+ + | | Direct Stream Digital (DSD) | + | +---------------------------------------------------------------------------------------------+ + | | PDM Microphones | + | +---------------------------------------------------------------------------------------------+ + | | MIDI | + +---------------------------------+---------------------------------------------------------------------------------------------+ + +-------------------------------------------------------------------------------------------------------------------------------+ + | **Supported Sample Frequencies** | + +-------------------------------------------------------------------------------------------------------------------------------+ + +-------------------------------------------------------------------------------------------------------------------------------+ + | 44.1kHz, 48kHz, 88.2kHz, 96kHz, 176.4kHz, 192kHz, 352.8kHz, 384kHz | + +-------------------------------------------------------------------------------------------------------------------------------+ + +-------------------------------------------------------------------------------------------------------------------------------+ + | **Supported Devices** | + +-------------------------------------------------------------------------------------------------------------------------------+ + +---------------------------------+---------------------------------------------------------------------------------------------+ + | XMOS Devices | xCORE-200 Series | + +---------------------------------+---------------------------------------------------------------------------------------------+ + +-------------------------------------------------------------------------------------------------------------------------------+ + | **Requirements** | + +-------------------------------------------------------------------------------------------------------------------------------+ + +---------------------------------+---------------------------------------------------------------------------------------------+ + | Development Tools | xTIMEcomposer Development Tools v14 or later | + +---------------------------------+---------------------------------------------------------------------------------------------+ + | USB | xCORE-200 Series device with integrated USB Phy | + +---------------------------------+---------------------------------------------------------------------------------------------+ + | Audio | External audio DAC/ADC/CODECs (and required supporting componentry) supporting I2S/TDM | + +---------------------------------+---------------------------------------------------------------------------------------------+ + | Boot/Storage | Compatible SPI Flash device (or xCORE-200 device with internal flash) | + +---------------------------------+---------------------------------------------------------------------------------------------+ + +-------------------------------------------------------------------------------------------------------------------------------+ + | **Licensing and Support** | + +-------------------------------------------------------------------------------------------------------------------------------+ + +-------------------------------------------------------------------------------------------------------------------------------+ + | Reference code provided without charge under license from XMOS. | + +-------------------------------------------------------------------------------------------------------------------------------+ + | Please visit http://www.xmos.com/support/contact for support. | + +-------------------------------------------------------------------------------------------------------------------------------+ + | Reference code is maintained by XMOS Limited. | + +-------------------------------------------------------------------------------------------------------------------------------+ + + + diff --git a/lib_xua/doc/rst/sw.rst b/lib_xua/doc/rst/sw.rst new file mode 100644 index 00000000..5201e90a --- /dev/null +++ b/lib_xua/doc/rst/sw.rst @@ -0,0 +1,89 @@ + +.. _usb_audio_sec_architecture: + +USB Audio Software Overview +--------------------------- + +This section describes the software architecture of a USB Audio device implemented using `lib_xua`, its dependencies and other supporting libraries. + +`lib_xua` provides fundamental building blocks for producing USB Audio products on XMOS devices. Every system is required to have the components from `lib_xua` listed in :ref:`usb_audio_shared_components`. + +.. _usb_audio_shared_components: + +.. list-table:: Required XUA Components + :header-rows: 1 + :widths: 40 60 + + * - Component + - Description + * - Endpoint 0 + - Provides the logic for Endpoint 0 which handles + enumeration and control of the device including DFU related requests. + * - Endpoint buffer + - Buffers endpoint data packets to and from the host. Manages delivery of audio packets between the endpoint buffer + component and the audio components. It can also handle volume control processing.Note, this currently utlises two cores + * - AudioHub + - Handles audio I/O over I2S and manages audio data + to/from other digital audio I/O components. + +In addition low-level USB I/0 is required and is provided by the external dependency `lib_xud` + +.. list-table:: Additional Components Required + :header-rows: 1 + :widths: 100 60 + + * - Component + - Description + * - XMOS USB Device Driver (XUD) + - Handles the low level USB I/O. + +In addition :ref:`usb_audio_optional_components` shows optional components that can be added/enabled from within `lib_xua` + +.. _usb_audio_optional_components: + +.. list-table:: Optional Components + :header-rows: 1 + :widths: 40 60 + + * - Component + - Description + * - Mixer + - Allows digital mixing of input and output channels. It can also + handle volume control instead of the decoupler. + * - Clockgen + - Drives an external frequency generator (PLL) and manages + changes between internal clocks and external clocks arising + from digital input. + * - MIDI + - Outputs and inputs MIDI over a serial UART interface. + +`lib_xua` also provides optional support for integrating with the following eternal dependencies: + +.. list-table:: Optional Components + :header-rows: 1 + :widths: 40 60 + + * - Component + - Description + * - S/PDIF Transmitter (lib_spdif) + - Outputs samples of an S/PDIF digital audio interface. + * - S/PDIF Receiver (lib_spdif) + - Inputs samples of an S/PDIF digital audio interface (requires the + clockgen component). + * - ADAT Receiver (lib_adat) + - Inputs samples of an ADAT digital audio interface (requires the + clockgen component). + * - PDM Microphones (lib_mic_array) + - Receives PDM data from microphones and performs PDM to PCM conversion + +.. _usb_audio_threads: + +.. figure:: images/threads-crop.* + :width: 100% + + USB Audio Core Diagram + +:ref:`usb_audio_threads` shows how the components interact with each +other in a typical system. The green circles represent cores with arrows indicating inter-core communications. + + diff --git a/lib_xua/doc/rst/sw_adat.rst b/lib_xua/doc/rst/sw_adat.rst new file mode 100644 index 00000000..14b535be --- /dev/null +++ b/lib_xua/doc/rst/sw_adat.rst @@ -0,0 +1,54 @@ +ADAT Receive +------------ + +The ADAT receive component receives up to eight channels of audio at a sample rate +of 44.1kHz or 48kHz. The API for calling the receiver functions is +described in :ref:`usb_audio_sec_component_api`. + +The component outputs 32 bits words split into nine word frames. The +frames are laid out in the following manner: + + * Control byte + * Channel 0 sample + * Channel 1 sample + * Channel 2 sample + * Channel 3 sample + * Channel 4 sample + * Channel 5 sample + * Channel 6 sample + * Channel 7 sample + +Example of code show how to read the output of the ADAT component is shown below:: + + control = inuint(oChan); + + for(int i = 0; i < 8; i++) + { + sample[i] = inuint(oChan); + } + +Samples are 24-bit values contained in the lower 24 bits of the word. + +The control word comprises four control bits in bits [11..8] and the value 0b00000001 in bits [7..0]. +This control word enables synchronization at a higher level, in that on the channel a single odd +word is always read followed by eight words of data. + +.. Timing Requirements + ~~~~~~~~~~~~~~~~~~~ + +.. The data samples are outputted onto the channel every 2.4 us. The +.. control sample follows 1.7 us after the last data sample, and is +.. followed 2.4 us later by the first data sample. Given that a channel +.. can hold two words of data, when data appears on the channel, it +.. should be input within 4.1 us otherwise the ADAT receiver will block, +.. and data will be lost. Between data samples a window of 4.8 us is +.. available. + +Integration +~~~~~~~~~~~ + +Since the ADAT is a digital stream the devices master clock must synchronised to it. This is +typically achieved with an external fractional-n clock multiplier. + +The ADAT receive function communicates with the clockGen component which passes audio data onto the +audio driver and handles locking to the ADAT clock source if required. diff --git a/lib_xua/doc/rst/sw_audio.rst b/lib_xua/doc/rst/sw_audio.rst new file mode 100755 index 00000000..3258e0ff --- /dev/null +++ b/lib_xua/doc/rst/sw_audio.rst @@ -0,0 +1,176 @@ +.. _usb_audio_sec_audio: + +AudioHub/I2S +............ + +The AudioHub task performs many functions. It receives and transmits samples from/to the decoupler or mixer core over an XC channel. + +It also drives several in and out I2S/TDM channels to/from a CODEC, DAC, ADC etc - from now on termed "audio hardware". + +If the firmware is configured with the xCORE as I2S master the requred clock lines will also be driven out from this task also. + +It also has the task of formwarding on and reciving samples to/from other audio related tasks such as S/PDIF tasks, ADAT tasks etc. + +The AudioHub task must be connected to external audio hardware that supports I2S (other modes such as "left justified" can be supported with firmware changes). + +In master mode, the XMOS device acts as the master generating the I2S "Continous Serial Clock (SCK)" typically called the Bit-Clock (BCLK) and the "Word Select (WS)" line typically called left-right clock (LRCLK) signals. Any CODEC or DAC/ADC combination that supports I2S and can be used. + +The LR-clock, bit-clock and data are all derived from the incoming master clock (typically the output of the external oscillator or PLL) +- This is not part of the I2S standard but is commonly included for synchronizing the internal operation of the analog/digital converters. + +The AudioHub task is implemented in the file ``xua_audiohub.xc``. + +:ref:`usb_audio_codec_signals` shows the signals used to communicate audio between the XMOS device and the external audio hardware. + +.. _usb_audio_codec_signals: + +.. list-table:: I2S Signals + :header-rows: 1 + :widths: 20 80 + + * - Signal + - Description + * - LRCLK + - The word clock, transition at the start of a sample + * - BCLK + - The bit clock, clocks data in and out + * - SDIN + - Sample data in (from CODEC/ADC to the XMOS device) + * - SDOUT + - Sample data out (from the XMOS device to CODEC/DAC) + * - MCLK + - The master clock running the CODEC/DAC/ADC + +The bit clock controls the rate at which data is transmitted to and from the external audio hardware. + +In the case where the XMOS device is the master, it divides the MCLK to generate the required signals for both BCLK and LRCLK, +with BCLK then being used to clock data in (SDIN) and data out (SDOUT) of the external audio hardware. + +:ref:`usb_audio_example_clock_divides` shows some example clock frequencies and divides for different sample rates: + +.. _usb_audio_example_clock_divides: + +.. list-table:: Clock Divide examples + :header-rows: 1 + :widths: 30 25 25 20 + + * - Sample Rate (kHz) + - MCLK (MHz) + - BCLK (MHz) + - Divide + * - 44.1 + - 11.2896 + - 2.819 + - 4 + * - 88.2 + - 11.2896 + - 5.638 + - 2 + * - 176.4 + - 11.2896 + - 11.2896 + - 1 + * - 48 + - 24.576 + - 3.072 + - 8 + * - 96 + - 24.576 + - 6.144 + - 4 + * - 192 + - 24.576 + - 12.288 + - 2 + +The master clock must be supplied by an external source e.g. clock generator, fixed oscillators, PLL etc to generate the two frequencies to support +44.1kHz and 48kHz audio frequencies (e.g. 11.2896/22.5792MHz and 12.288/24.576MHzrespectively). This master clock input is then provided to the +external audio hardware and the xCORE device. + + +Port Configuration (xCORE Master) ++++++++++++++++++++++++++++++++++ + +The default software configuration is xCORE is I2S master. That is, the XMOS device provides the BCLK and LRCLK signals to the external audio hardware + +xCORE ports and XMOS clocks provide many valuable features for implementing I2S. This section describes how these are configured +and used to drive the I2S interface. + +.. only:: latex + + .. figure:: images/port_config.pdf + + Ports and Clocks (xCORE master) + +.. only:: html + + .. figure:: images/port_config.png + + Ports and Clocks (xCORE master) + +The code to configure the ports and clocks is in the ``ConfigAudioPorts()`` function. Developers should not need to modify this. + +The xCORE inputs MCLK and divides it down to generate BCLK and LRCLK. + +To achieve this MCLK is input into the device using the 1-bit port ``p_mclk``. This is attached to the clock block ``clk_audio_mclk``, which is in +turn used to clock the BCLK port, ``p_bclk``. BCLK is used to clock the LRCLK (``p_lrclk``) and data signals SDIN (``p_sdin``) and SDOUT (``p_sdout``). + +Again, a clock block is used (``clk_audio_bclk``) which has ``p_bclk`` as its input and is used to clock the ports ``p_lrclk``, ``p_sdin`` and ``p_sdout``. +The preceding diagram shows the connectivity of ports and clock blocks. + +``p_sdin`` and ``p_sdout`` are configured as buffered ports with a transfer width of 32, so all 32 bits are +input in one input statement. This allows the software to input, process and output 32-bit words, whilst the ports serialize and +deserialize to the single I/O pin connected to each port. + +xCORE-200 series devices have the ability to divide an extenal clock in a clock-block. + +However, XS1 based devices do not have this functionality. In order achieve the reqired master-clock +to bit-clock/LR-clock divicd on XS1 devices, buffered ports with a transfer width of 32 are also +used for ``p_bclk`` and ``p_lrclk``. The bit clock is generated by performing outputs of a particular pattern to ``p_bclk`` to toggle +the output at the desired rate. The pattern depends on the divide between the master-clock and bit-clock. +The following table shows the required pattern for different values of this divide: + +.. list-table:: Output patterns + :header-rows: 1 + + * - Divide + - Output pattern + - Outputs per sample + * - 2 + - ``0xAAAAAAAA`` + - 2 + * - 4 + - ``0xCCCCCCCC`` + - 4 + * - 8 + - ``0xF0F0F0F0`` + - 8 + +In any case, the bit clock outputs 32 clock cycles per sample. In the special case where the divide is 1 (i.e. the bit clock frequency equals +the master clock frequency), the ``p_bclk`` port is set to a special mode where it simply outputs its clock input (i.e. ``p_mclk``). +See ``configure_port_clock_output()`` in ``xs1.h`` for details. + +``p_lrclk`` is clocked by ``p_bclk``. In I2S mode the port outputs the pattern ``0x7fffffff`` +followed by ``0x80000000`` repeatedly. This gives a signal that has a transition one bit-clock +before the data (as required by the I2S standard) and alternates between high and low for the +left and right channels of audio. + +Changing Audio Sample Frequency ++++++++++++++++++++++++++++++++ + +.. _usb_audio_sec_chang-audio-sample: + +When the host changes sample frequency, a new frequency is sent to +the audio driver core by Endpoint 0 (via the buffering cores and mixer). + +First, a change of sample frequency is reported by sending the new frequency over an XC channel. The audio core +detects this by checking for the presence of a control token on the channel channel + +Upon receiving the change of sample frequency request, the audio +core stops the I2S/TDM interface and calls the CODEC/port configuration +functions. + +Once this is complete, the I2S/TDM interface (i.e. the main look in AudioHub) is restarted at the new frequency. + + + diff --git a/lib_xua/doc/rst/sw_clocking.rst b/lib_xua/doc/rst/sw_clocking.rst new file mode 100755 index 00000000..6f9a3a90 --- /dev/null +++ b/lib_xua/doc/rst/sw_clocking.rst @@ -0,0 +1,35 @@ +.. _usb_audio_sec_clock_recovery: + +External Clock Recovery (ClockGen) +---------------------------------- + +An application can either provide fixed master clock sources via selectable oscillators, clock +generation IC, etc, to provide the audio master or use an external PLL/Clock Multiplier to +generate a master clock based on reference from the XMOS device. + +Using an external PLL/Clock Multiplier allows the design to lock to an external clock source +from a digital stream (e.g. S/PDIF or ADAT input). + +The clock recovery core (clockGen) is responsible for generating the reference frequency +to the Fractional-N Clock Generator. This, in turn, generates the master clock used over the +whole design. + +When running in *Internal Clock* mode this core simply generates this clock using a local +timer, based on the XMOS reference clock. + +When running in an external clock mode (i.e. S/PDIF Clock" or "ADAT Clock" mode) digital +samples are received from the S/PDIF and/or ADAT receive core. + +The external frequency is calculated through counting samples in a given period. The +reference clock to the Fractional-N Clock Multiplier is then generated based on this +external stream. If this stream becomes invalid, the timer event will fire to ensure that +valid master clock generation continues regardless of cable unplugs etc. + +This core gets clock selection Get/Set commands from Endpoint 0 via the ``c_clk_ctl`` +channel. This core also records the validity of external clocks, which is also queried +through the same channel from Endpoint 0. + + +This core also can cause the decouple core to request an interrupt packet on change of +clock validity. This functionality is based on the Audio Class 2.0 status/interrupt endpoint +feature. diff --git a/lib_xua/doc/rst/sw_detail.rst b/lib_xua/doc/rst/sw_detail.rst new file mode 100644 index 00000000..fc14996a --- /dev/null +++ b/lib_xua/doc/rst/sw_detail.rst @@ -0,0 +1,27 @@ + +Implementation Detail +--------------------- + +This section describes the software architecture of a USB Audio device implemented using `lib_xua`, it's dependancies and other supporting libraries. + +This section will now examine the operation of these components in further detail. + +.. toctree:: + + sw_audio + sw_spdif + + +.. + sw_xud + sw_ep0 + sw_audio + sw_mixer + sw_spdif_rx + sw_adat + sw_clocking + sw_midi + sw_pdm + sw_resource +.. + diff --git a/lib_xua/doc/rst/sw_dfu.rst b/lib_xua/doc/rst/sw_dfu.rst new file mode 100644 index 00000000..6a293f26 --- /dev/null +++ b/lib_xua/doc/rst/sw_dfu.rst @@ -0,0 +1,27 @@ +.. _usb_audio_sec_dfu: + +Device Firmware Upgrade (DFU) +============================= + +The DFU interface handles updates to the boot image of the device. The DFU code is called from +the Endpoint 0 core. + +The interface links USB to the XMOS flash user library (see :ref:`libflash_api`). In Application +mode the DFU can accept commands to reset the device into DFU mode. There are two ways to do this: + +- The host can send a ``DETACH`` request and then reset the + device. If the device is reset by the host within a specified + timeout, it will start in DFU mode (this is initially set to + one second and is configurable from the host). + +- The host can send a custom user request + ``XMOS_DFU_RESETDEVICE`` to the DFU interface that + resets the device immediately into DFU mode. + + +Once the device is in DFU mode. The DFU interface can accept commands defined by the +`DFU 1.1 class specification `_. In +addition the interface accepts the custom command ``XMOS_DFU_REVERTFACTORY`` which reverts the active +boot image to the factory image. Note that the XMOS specific command request +identifiers are defined in ``dfu_types.h`` within ``module_dfu``. + diff --git a/lib_xua/doc/rst/sw_ep0.rst b/lib_xua/doc/rst/sw_ep0.rst new file mode 100644 index 00000000..23d41691 --- /dev/null +++ b/lib_xua/doc/rst/sw_ep0.rst @@ -0,0 +1,349 @@ +|newpage| + +.. _usb_audio_sec_usb: + +Endpoint 0: Management and Control +.................................. + +All USB devices must support a mandatory control endpoint, Endpoint 0. This controls the management tasks of the USB device. + +These tasks can be generally split into enumeration, audio configuration and firmware upgrade requests. + +Enumeration +~~~~~~~~~~~ + +When the device is first attached to a host, enumeration occurs. This process involves the host interrogating the device as to its functionality. The device does this by presenting several interfaces to the host via a set of descriptors. + +During the enumeration process the host will issue various commands to the device including assigning the device a unique address on the bus. + +The endpoint 0 code runs in its own core and follows a similar format to that of the USB Device examples in `lib_xud` (i.e. Example HID Mouse Demo). That is, a call is made to ``USB_GetSetupPacket()`` to receive a command from the host. This populates a ``USB_SetupPacket_t`` structure, which is then parsed. + +There are many mandatory requests that a USB Device must support as required by the USB Specification. Since these are required for all devices in order to function a +``USB_StandardRequests()`` function is provided (see ``module_usb_device``) which implements all of these requests. This includes the following items: + + - Requests for standard descriptors (Device descriptor, configuration descriptor etc) and string descriptors + - USB GET/SET INTERFACE requests + - USB GET/SET_CONFIGURATION requests + - USB SET_ADDRESS requests + +For more information and full documentation, including full worked examples of simple devices, please refer to `lib_xud`. + +The ``USB_StandardRequests()`` function takes the devices various descriptors as parameters, these are passed from data structures found in the ``descriptors.h`` file. +These data structures are fully customised based on the how the design is configured using various defines (see :ref:`sec_custom_defines_api`). + +The ``USB_StandardRequests()`` functions returns a ``XUD_Result_t``. ``XUD_RESULT_OKAY`` indicates that the request was fully handled without error and no further action is required +- The device should move to receiving the next request from the host (via ``USB_GetSetupPacket()``). + +The function returns ``XUD_RES_ERR`` if the request was not recognised by the ``USB_StandardRequests()`` function and a STALL has been issued. + +The function may also return ``XUD_RES_RST`` if a bus-reset has been issued onto the bus by the host and communicated from XUD to Endpoint 0. + +Since the ``USB_StandardRequests()`` function STALLs an unknown request, the endpoint 0 code must parse the ``USB_SetupPacket_t`` structure to handle device specific requests and then calling ``USB_StandardRequests()`` as required. This is described next. + +Over-riding Standard Requests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The USB Audio design "over-rides" some of the requests handled by ``USB_StandardRequests()``, for example it uses the SET_INTERFACE request to indicate it if the host is streaming audio to the device. In this case the setup packet is parsed, the relevant action taken, the ``USB_StandardRequests()`` is called to handle the response to the host etc. + +Class Requests +~~~~~~~~~~~~~~ +Before making the call to ``USB_StandardRequests()`` the setup packet is parsed for Class requests. These are handled in functions such as ``AudioClasRequests_2()``, ``AudioClassRequests_2``, ``DFUDeviceRequests()`` etc depending on the type of request. + +Any device specific requests are handled - in this case Audio Class, MIDI class, DFU requests etc. + +Some of the common Audio Class requests and their associated behaviour will now be examined. + +Audio Requests +++++++++++++++ + +When the host issues an audio request (e.g. sample rate or volume change), it sends a command to Endpoint 0. Like all requests this is returned from ``USB_GetSetupPacket()``. After some parsing (namely as Class Request to an Audio Interface) the request is handled by either the ``AudioClassRequests_1()`` or ``AudioClassRequests_2()`` function (based on whether the device is running in Audio Class 1.0 or 2.0 mode). + +Note, Audio Class 1.0 Sample rate changes are send to the relevant endpoint, rather than the interface - this is handled as a special case in he endpoint 0 request parsing where ``AudioEndpointRequests_1()`` is called. + +The ``AudioClassRequests_X()`` functions parses the request further in order to ascertain the correct audio operation to execute. + +Audio Request: Set Sample Rate +++++++++++++++++++++++++++++++ + +The ``AudioClassRequests_2()`` function parses the passed ``USB_SetupPacket_t`` structure for a ``CUR`` request of type ``SAM_FREQ_CNTROL`` to a Clock Unit in the devices topology (as described in the devices descriptors). + +The new sample frequency is extracted and passed via channel to the rest of the design - through the buffering code and eventually to the Audio IO/I2S core. The ``AudioClassRequests_2()`` function waits for a handshake to propagate back though the system before signalling to the host that the request has completed successfully. Note, during this time the USB library is NAKing the host essentially holding off further traffic/requests until the sample-rate change is fully complete. + +.. _usb_audio_sec_audio-requ-volume: + +Audio Request: Volume Control ++++++++++++++++++++++++++++++ + +When the host requests a volume change, it +sends an audio interface request to Endpoint 0. An array is +maintained in the Endpoint 0 core that is updated with such a +request. + +When changing the volume, Endpoint 0 applies the master volume and +channel volume, producing a single volume value for each channel. +These are stored in the array. + +The volume will either be handled by the ``decoupler`` core or the mixer +component (if the mixer component is used). Handling the volume in the +mixer gives the decoupler more performance to handle more channels. + +If the effect of the volume control array on the audio input and +output is implemented by the decoupler, the ``decoupler`` core +reads the volume values from this array. Note that this array is shared +between Endpoint 0 and the decoupler core. This is done in a safe +manner, since only Endpoint 0 can write to the array, word update +is atomic between cores and the decoupler core only reads from +the array (ordering between writes and reads is unimportant in this +case). Inline assembly is used by the decoupler core to access +the array, avoiding the parallel usage checks of XC. + +If volume control is implemented in the mixer, Endpoint 0 sends a mixer command to the mixer to change the volume. Mixer commands +are described in :ref:`usb_audio_sec_mixer`. + +Audio Endpoints (Endpoint Buffer and Decoupler) +............................................... + +Endpoint Buffer +~~~~~~~~~~~~~~~ + +All endpoints other that Endpoint 0 are handled in one core. This +core is implemented in the file ``usb_buffer.xc``. This core is communicates directly with the XUD library. + +The USB buffer core is also responsible for feedback calculation based on USB Start Of Frame +(SOF) notification and reads from the port counter of a port connected to the master clock. + +Decoupler +~~~~~~~~~ + +The decoupler supplies the USB buffering core with buffers to +transmit/receive audio data to/from the host. It marshals these buffers into +FIFOs. The data from the FIFOs are then sent over XC channels to +other parts of the system as they need it. This core also +determines the size of each packet of audio sent to the host (thus +matching the audio rate to the USB packet rate). The decoupler is +implemented in the file ``decouple.xc``. + +Audio Buffering Scheme +~~~~~~~~~~~~~~~~~~~~~~~ + +This scheme is executed by co-operation between the buffering +core, the decouple core and the XUD library. + +For data going from the device to the host the following scheme is +used: + + +#. The decouple core receives samples from the audio core and + puts them into a FIFO. This FIFO is split into packets when data is + entered into it. Packets are stored in a format consisting of their + length in bytes followed by the data. + +#. When the buffer cores needs a buffer to send to the XUD core + (after sending the previous buffer), the decouple core is + signalled (via a shared memory flag). + +#. Upon this signal from the buffering core, the decouple core + passes the next packet from the FIFO to the buffer core. It also + signals to the XUD library that the buffer core is able to send a + packet. + +#. When the buffer core has sent this buffer, it signals to the + decouple that the buffer has been sent and the decouple core + moves the read pointer of the FIFO. + + +For data going from the host to the device the following scheme is +used: + + +#. The decouple core passes a pointer to the buffering core + pointing into a FIFO of data and signals to the XUD library that + the buffering core is ready to receive. + +#. The buffering core then reads a USB packet into the FIFO and + signals to the decoupler that the packet has been read. + +#. Upon receiving this signal the decoupler core updates the + write pointer of the FIFO and provides a new pointer to the + buffering core to fill. + +#. Upon request from the audio core, the decoupler core sends + samples to the audio core by reading samples out of the FIFO. + + +Decoupler/Audio Core interaction +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To meet timing requirements of the audio system, the decoupler +core must respond to requests from the audio system to +send/receive samples immediately. An interrupt handler +is set up in the decoupler core to do this. The interrupt handler +is implemented in the function ``handle_audio_request``. + +The audio system sends a word over a channel to the decouple core to +request sample transfer (using the build in outuint function). +The receipt of this word in the channel +causes the ``handle_audio_request`` interrupt to fire. + +The first operation the interrupt handler does is to send back a word +acknowledging the request (if there was a change of sample frequency +a control token would instead be sent---the audio system uses a testct() +to inspect for this case). + +Sample transfer may now take place. First the audio subsystem transfers +samples destined for the host, then the decouple core sends +samples from the host to device. These transfers always take place +in channel count sized chunks (i.e. ``NUM_USB_CHAN_OUT`` and +``NUM_USB_CHAN_IN``). That is, if the device has 10 output channels and +8 input channels, 10 samples are sent from the decouple core and 8 received +every interrupt. + +The complete communication scheme is shown in the table below (for non sample +frequency change case): + + +.. table:: Decouple/Audio System Channel Communication + + +-----------------+-----------------+-----------------------------------------+ + | Decouple | Audio System | Note | + +=================+=================+=========================================+ + | | outuint() | Audio system requests sample exchange | + +-----------------+-----------------+-----------------------------------------+ + | inuint() | | Interrupt fires and inuint performed | + +-----------------+-----------------+-----------------------------------------+ + | outuint() | | Decouple sends ack | + +-----------------+-----------------+-----------------------------------------+ + | | testct() | Checks for CT indicating SF change | + +-----------------+-----------------+-----------------------------------------+ + | | inuint() | Word indication ACK input (No SF change)| + +-----------------+-----------------+-----------------------------------------+ + | inuint() | outuint() | Sample transfer (Device to Host) | + +-----------------+-----------------+-----------------------------------------+ + | inuint() | outuint() | | + +-----------------+-----------------+-----------------------------------------+ + | inuint() | outuint() | | + +-----------------+-----------------+-----------------------------------------+ + | ... | | | + +-----------------+-----------------+-----------------------------------------+ + | outuint() | inuint() | Sample transfer (Host to Device) | + +-----------------+-----------------+-----------------------------------------+ + | outuint() | inuint() | | + +-----------------+-----------------+-----------------------------------------+ + | outuint() | inuint() | | + +-----------------+-----------------+-----------------------------------------+ + | outuint() | inuint() | | + +-----------------+-----------------+-----------------------------------------+ + | ... | | | + +-----------------+-----------------+-----------------------------------------+ + +.. note:: + The request and acknowledgement sent to/from Decouple to the Audio System is an "output underflow" sample + value. If in PCM mode it will be 0, in DSD mode it will be DSD silence. + This allows the buffering system to output a suitable underflow value without knowing the format of the stream + (this is especially advantageous in the DSD over PCM (DoP) case) + +Asynchronous Feedback ++++++++++++++++++++++ + +The device uses a feedback endpoint to report the rate at which +audio is output/input to/from external audio interfaces/devices. This feedback is in accordance with +the *USB 2.0 Specification*. + +This asynchronous clocking scheme means that the device is the clocking master than therefore +means a high-quality local master clock source can be used. + +After each received USB SOF token, the buffering core takes a time-stamp from a port clocked off +the master clock. By subtracting the time-stamp taken at the previous SOF, the number of master +clock ticks since the last SOF is calculated. From this the number of samples (as a fixed +point number) between SOFs can be calculated. +This count is aggregated over 128 SOFs and used as a basis for the feedback value. + +The sending of feedback to the host is also handled in the USB buffering core via an explicit feedback +IN endpoint. If both input and output is enabled then the feedback is implicit based on the audio stream +sent to the host. + +USB Rate Control +++++++++++++++++ + +.. _usb_audio_sec_usb-rate-control: + +The Audio core must consume data from USB +and provide data to USB at the correct rate for the selected sample +frequency. The *USB 2.0 Specification* states that the maximum +variation on USB packets can be +/- 1 sample per USB frame. USB +frames are sent at 8kHz, so on average for 48kHz each packet +contains six samples per channel. The device uses Asynchronous mode, +so the audio clock may drift and run faster or slower than the +host. Hence, if the audio clock is slightly fast, the device may +occasionally input/output seven samples rather than six. Alternatively, +it may be slightly slow and input/output five samples rather than six. +:ref:`usb_audio_samples_per_packet` shows the allowed number of samples +per packet for each example audio frequency. + +See USB Device Class Definition for Audio Data Formats v2.0 section 2.3.1.1 +for full details. + +.. _usb_audio_samples_per_packet: + +.. table:: Allowed samples per packet + + +-----------------+-------------+-------------+ + | Frequency (kHz) | Min Packet | Max Packet | + +=================+=============+=============+ + | 44.1 | 5 | 6 | + +-----------------+-------------+-------------+ + | 48 | 5 | 7 | + +-----------------+-------------+-------------+ + | 88.2 | 10 | 11 | + +-----------------+-------------+-------------+ + | 96 | 11 | 13 | + +-----------------+-------------+-------------+ + | 176.4 | 20 | 21 | + +-----------------+-------------+-------------+ + | 192 | 23 | 25 | + +-----------------+-------------+-------------+ + + +To implement this control, the decoupler core uses the feedback +value calculated in the buffering core. This value is used to +work out the size of the next packet it will insert into the audio +FIFO. + + + +.. .. _fig_usb_devices: + +.. .. table:: USB interfaces presented to host +.. :class: center +.. +.. +-----------------------+----------------------------------+ +.. | **Mode** | **Interfaces** | +.. +=======================+==================================+ +.. | Application mode | | Audio Class 2/Audio Class 1 | +.. | | | DFU Class 1.1 | +.. | | | MIDI Device Class 1.0 | +.. +-----------------------+----------------------------------+ +.. | DFU mode | DFU Class 1.1 | +.. +-----------------------+----------------------------------+ + +.. The device initially starts in Application mode. + + + + +.. :ref:`usb_audio_sec_dfu` describes how DFU mode is used. The +.. audio device class (1 or 2) is set at compile time---see :ref:`usb_audio_sec_custom_defines_api`. + + + +.. Reset +.. ~~~~~ + +.. On receiving a reset request, three steps occur: + +.. #. Depending on the DFU state, the device may be set into DFU + mode. + +.. #. A XUD function is called to reset the endpoint structure and receive the new bus speed. + +.. _usb_audio_sec_audio-requ-sett: diff --git a/lib_xua/doc/rst/sw_hid.rst b/lib_xua/doc/rst/sw_hid.rst new file mode 100755 index 00000000..89a00ddf --- /dev/null +++ b/lib_xua/doc/rst/sw_hid.rst @@ -0,0 +1,48 @@ +Audio Controls via Human Interface Device (HID) +------------------------------------------------ + +The design supports simple audio controls such as play/pause, volume up/down etc via the USB Human +Interface Device Class Specification. + +This functionality is enabled by setting the ``HID_CONTROLS`` define to ``1``. Setting to ``0`` +disables this feature. + +When turned on the following items are enabled: + + #. HID descriptors are enabled in the Configuration Descriptor informing the host that the device has HID interface + #. A Get Report Descriptor request is enabled in ``endpoint0``. + #. Endpoint data handling is enabled in the ``buffer`` core + +The Get Descriptor Request enabled in endpoint 0 returns the report descriptor for the HID device. +This details the format of the HID reports returned from the device to the host. It maps a bit in +the report to a function such as play/pause. + +The USB Audio Framework implements a report descriptor that should fit most basic audio device controls. +If further controls are necessary the HID Report Descriptor in ``descriptors.h`` should be modified. +The default report size is 1 byte with the format as follows: + +.. table:: Default HID Report Format + + +-------------+-------------------------+ + | Bit | Function | + +=============+=========================+ + | 0 | Play/Pause | + +-------------+-------------------------+ + | 1 | Scan Next Track | + +-------------+-------------------------+ + | 2 | Scan Prev Track | + +-------------+-------------------------+ + | 3 | Volume Up | + +-------------+-------------------------+ + | 4 | Volume Down | + +-------------+-------------------------+ + | 5 | Mute | + +-------------+-------------------------+ + | 6-7 | Unused | + +-------------+-------------------------+ + +On each HID report request from the host the function ``Vendor_ReadHidButtons(unsigned char hidData[])`` is called from ``buffer()``. This function is passed an array ``hidData[]`` by reference. The programmer should report the state of his buttons into this array. For example, if a volume up command is desired, bit 3 should be set to 1, else 0. + +Since the ``Vendor_ReadHidButtons()`` function is called from the ``buffer`` logical core, care should be taken not to add to much execution time to this function since this could cause issues with servicing other endpoints. + +For a full example please see the HID section in :ref:`usb_audio_sec_l1_audio_sw`. diff --git a/lib_xua/doc/rst/sw_iap.rst b/lib_xua/doc/rst/sw_iap.rst new file mode 100644 index 00000000..01c57cd9 --- /dev/null +++ b/lib_xua/doc/rst/sw_iap.rst @@ -0,0 +1,9 @@ + +Apple MFi compatibility +----------------------- + +XMOS devices are capable of operating with Apple iPod, iPhone, and iPad devices +that feature USB host support. Information regarding this functionality is +protected by the Made For iPod (MFi) program and associated licensing. + +Please contact XMOS for details and further documentation. diff --git a/lib_xua/doc/rst/sw_midi.rst b/lib_xua/doc/rst/sw_midi.rst new file mode 100755 index 00000000..52ef02e0 --- /dev/null +++ b/lib_xua/doc/rst/sw_midi.rst @@ -0,0 +1,7 @@ +MIDI +---- + +The MIDI driver implements a 31250 baud UART input and output. On receiving 32-bit USB MIDI events +from the ``buffer`` core, it parses these and translates them to 8-bit MIDI messages which are sent +over UART. Similarly, incoming 8-bit MIDI messages are aggregated into 32-bit USB-MIDI events an +passed on to the ``buffer`` core. The MIDI core is implemented in the file ``usb_midi.xc``. diff --git a/lib_xua/doc/rst/sw_mixer.rst b/lib_xua/doc/rst/sw_mixer.rst new file mode 100755 index 00000000..8a6ab14a --- /dev/null +++ b/lib_xua/doc/rst/sw_mixer.rst @@ -0,0 +1,181 @@ +.. _usb_audio_sec_mixer: + +Digital Mixer +------------- + +The mixer core(s) take outgoing audio from the decoupler core and incoming +audio from the audio driver core. It then applies the volume to each +channel and passes incoming audio on to the decoupler and outgoing +audio to the audio driver. The volume update is achieved using the +built-in 32bit to 64bit signed multiply-accumulate function +(``macs``). The mixer is implemented in the file +``mixer.xc``. + +The mixer takes two cores and can perform eight mixes with +up to 18 inputs at sample rates up to 96kHz and two mixes with up to 18 +inputs at higher sample rates. The component automatically moves +down to two mixes when switching to a higher rate. + +The mixer can take inputs from either: + + * The USB outputs from the host---these samples come from the decoupler core. + * The inputs from the audio interface on the device---these + samples come from the audio driver. + +Since the sum of these inputs may be more then the 18 possible mix +inputs to each mixer, there is a mapping from all the +possible inputs to the mixer inputs. + +After the mix occurs, the final outputs are created. There are two +output destinations: + + * The USB inputs to the host---these samples are sent to the decoupler core. + + * The outputs to the audio interface on the device---these samples + are sent to the audio driver. + +For each possible output, a mapping exists to tell the mixer what its +source is. The possible sources are the USB outputs from the host, the +inputs for the audio interface or the outputs from the mixer units. + +As mentioned in :ref:`usb_audio_sec_audio-requ-volume`, the mixer can also +handle volume setting. If the mixer is configured to handle volume but +the number of mixes is set to zero (so the component is solely doing +volume setting) then the component will use only one core. + +Control +~~~~~~~ + +The mixers can receive the following control commands from the Endpoint 0 core via a channel: + +.. list-table:: Mixer Component Commands + :header-rows: 1 + + * - Command + - Description + + * - ``SET_SAMPLES_TO_HOST_MAP`` + - Sets the source of one of the audio streams going to the host. + + * - ``SET_SAMPLES_TO_DEVICE_MAP`` + - Sets the source of one of the audio streams going to the audio + driver. + + * - ``SET_MIX_MULT`` + - Sets the multiplier for one of the inputs to a mixer. + + * - ``SET_MIX_MAP`` + - Sets the source of one of the inputs to a mixer. + + * - ``SET_MIX_IN_VOL`` + - If volume adjustment is being done in the mixer, this command + sets the volume multiplier of one of the USB audio inputs. + + * - ``SET_MIX_OUT_VOL`` + - If volume adjustment is being done in the mixer, this command + sets the volume multiplier of one of the USB audio outputs. + +Host Control +~~~~~~~~~~~~ + +The mixer can be controlled from a host PC by sending requests to Endpoint 0. XMOS provides a simple +command line based sample application demonstrating how the mixer can be controlled. + +For details, consult the README file in the host_usb_mixer_control directory. + +The main requirements of this control are to + + * Set the mapping of input channels into the mixer + * Set the coefficients for each mixer output of each input + * Set the mapping for physical outputs which can either come + directly from the inputs or via the mixer. + +There is enough flexibility within this configuration that there will often +be multiple ways of creating the required solution. + +Whilst using the XMOS Host control example application, consider setting the +mixer to perform a loop-back from analogue inputs 1 and 2 to analogue +outputs 1 and 2. + +First consider the inputs to the mixer:: + + ./xmos_mixer --display-aud-channel-map 0 + +displays which channels are mapped to which mixer inputs:: + + ./xmos_mixer --display-aud-channel-map-sources 0 + +displays which channels could possibly be mapped to mixer inputs. Notice +that analogue inputs 1 and 2 are on mixer inputs 10 and 11. + +Now examine the audio output mapping:: + + ./xmos_mixer --display-aud-channel-map 0 + +displays which channels are mapped to which outputs. By default all +of these bypass the mixer. We can also see what all the possible +mappings are:: + + ./xmos_mixer --display-aud-channel-map-sources 0 + +So now map the first two mixer outputs to physical outputs 1 and 2:: + + ./xmos_mixer --set-aud-channel-map 0 26 + ./xmos_mixer --set-aud-channel-map 1 27 + +You can confirm the effect of this by re-checking the map:: + + ./xmos_mixer --display-aud-channel-map 0 + +This now makes analogue outputs 1 and 2 come from the mixer, rather +than directly from USB. However the mixer is still mapped to pass +the USB channels through to the outputs, so there will still be no +functional change yet. + +The mixer nodes need to be individually set. They can be displayed +with:: + + ./xmos_mixer --display-mixer-nodes 0 + +To get the audio from the analogue inputs to outputs 1 and 2, nodes 80 +and 89 need to be set:: + + ./xmos_mixer --set-value 0 80 0 + ./xmos_mixer --set-value 0 89 0 + +At the same time, the original mixer outputs can be muted:: + + ./xmos_mixer --set-value 0 0 -inf + ./xmos_mixer --set-value 0 9 -inf + +Now audio inputs on analogue 1/2 should be heard on outputs 1/2. + +As mentioned above, the flexibility of the mixer is such that there +will be multiple ways to create a particular mix. Another option to +create the same routing would be to change the mixer sources such that +mixer 1/2 outputs come from the analogue inputs. + +To demonstrate this, firstly undo the changes above:: + + ./xmos_mixer --set-value 0 80 -inf + ./xmos_mixer --set-value 0 89 -inf + ./xmos_mixer --set-value 0 0 0 + ./xmos_mixer --set-value 0 9 0 + +The mixer should now have the default values. The sources for mixer +1/2 can now be changed:: + + ./xmos_mixer --set-mixer-source 0 0 10 + ./xmos_mixer --set-mixer-source 0 1 11 + +If you rerun:: + + ./xmos_mixer --display-mixer-nodes 0 + +the first column now has AUD - Analogue 1 and 2 rather than DAW (Digital Audio Workstation i.e. the +host) - Analogue 1 and 2 confirming the new mapping. Again, by playing audio into analogue inputs +1/2 this can be heard looped through to analogue outputs 1/2. + + + + diff --git a/lib_xua/doc/rst/sw_pdm.rst b/lib_xua/doc/rst/sw_pdm.rst new file mode 100755 index 00000000..4b8adbe9 --- /dev/null +++ b/lib_xua/doc/rst/sw_pdm.rst @@ -0,0 +1,114 @@ +PDM Microphones +--------------- + +Overview of PDM implemention +---------------------------- + +The design is capable of integrating PDM microphones. The PDM stream from the microphones is converted +to PCM and output to the host via USB. + +Interfacing to the PDM microphones is done using the XMOS microphone array library (``lib_mic_array``). +``lib_mic_array`` is designed to allow interfacing to PDM microphones coupled with efficient decimation +to user selectable output sample rates. + +.. note:: + The ``lib_mic_array`` library is only available for xCORE-200 series devices. + +The following components of the library are used: + + * PDM interface + * Four channel decimators + +|newpage| + + +Up to sixteen PDM microphones can be attached to each high channel count PDM interface (``mic_array_pdm_rx()``). +One to four processing tasks, ``mic_array_decimate_to_pcm_4ch()``, each process up to four channels. For 1-4 +channels the library requires two logical cores: + + .. figure:: images/pdm_chan4.pdf + :width: 100% + + One to four channel count PDM interface + + +for 5-8 channels three logical cores are required, as shown below: + + .. figure:: images/pdm_chan8.pdf + :width: 100% + + Five to eight count PDM interface + +The left most task, ``mic_array_pdm_rx()``, samples up to 8 microphones and filters the data to provide up to +eight 384 KHz data streams, split in two streams of four channels. The processing thread +decimates the signal to a user chosen sample rate (one of 48, 24, 16, 12 or 8 KHz). + +More channels can be supported by increasing the number of cores dedicated to the PDM tasks. However, the current +PDM mic integration into USB Audio limits itself to 8. + +After the decimation to the output sample-rate various other steps take place e.g. DC offset elimination, gain correction +and compensation etc. Please refer to ``lib_mic_array`` documention for further implementation detail and complete feature set. + + +PDM Microphone Hardware Characteristics ++++++++++++++++++++++++++++++++++++++++ + +The PDM microphones need a *clock input* and provide the PDM signal on a *data output*. All PDM microphones share the same +clock signal (buffered on the PCB as appropriate), and output onto eight data wires that are connected to a single 8-bit port: + +.. _pdm_wire_table: + +.. list-table:: PDM microphone data and signal wires + :class: vertical-borders horizontal-borders + + * - *CLOCK* + - Clock line, the PDM clock the used by the microphones to + drive the data out. + * - *DQ_PDM* + - The data from the PDM microphones on an 8 bit port. + +The only port that is passed into ``lib_mic_array`` is the 8-bit data port. The library +assumes that the input port is clocked using the PDM clock and requires no knowlege of the +PDM clock source. + +The input clock for the microphones can be generated in a multitude of +ways. For example, a 3.072MHz clock can be generated on the board, or the xCORE can +divide down 12.288 MHz master clock. Or, if clock accuracy is not important, the internal 100 MHz +reference can be divided down to provide an approximate clock. + +Integration of PDM Microphones into USB Audio ++++++++++++++++++++++++++++++++++++++++++++++ + +A PDM microphone wrapper is called from ``main()`` and takes one channel argument connecting it to the rest of the system: + + ``pcm_pdm_mic(c_pdm_pcm);`` + +The implemetation of this function can be found in the file ``pcm_pdm_mics.xc``. + +The first job of this function is to configure the ports/clocking for the microphones, this divides the external +audio master clock input (on port ``p_mclk``) and outputs the divided clock to the microphones via the ``p_pdm_clk`` port:: + + configure_clock_src_divide(pdmclk, p_mclk, MCLK_TO_PDM_CLK_DIV); + configure_port_clock_output(p_pdm_clk, pdmclk); + configure_in_port(p_pdm_mics, pdmclk); + start_clock(pdmclk); + +It then runs the various cores required for the PDM interface and PDM to PCM conversion as discussed previously:: + + par + { + mic_array_pdm_rx(p_pdm_mics, c_4x_pdm_mic_0, c_4x_pdm_mic_1); + mic_array_decimate_to_pcm_4ch(c_4x_pdm_mic_0, c_ds_output[0]); + mic_array_decimate_to_pcm_4ch(c_4x_pdm_mic_1, c_ds_output[1]); + pdm_process(c_ds_output, c_pcm_out); + } + +The ``pdm_process()`` task includes the main integration code, it takes audio from the ``lib_mic_array`` cores, buffers +it, performs optional local processing and outputs it to the audio driver (TDM/I2S core). + +This function simply makes a call to ``mic_array_get_next_time_domain_frame()`` in order to get a frame of PCM audio +from the microphones. It then waits for an request for audio samples from the audio/I2S/TDM core via a channel and +sends the frame of audio back over this channel. + +Note, it is assumed that the system shares a global master-clock, therefore no additional buffering or rate-matching/conversion +is required. diff --git a/lib_xua/doc/rst/sw_resource.rst b/lib_xua/doc/rst/sw_resource.rst new file mode 100755 index 00000000..789b496f --- /dev/null +++ b/lib_xua/doc/rst/sw_resource.rst @@ -0,0 +1,51 @@ +.. _usb_audio_sec_resource_usage: + +Resource Usage +-------------- + +The following table details the resource usage of each +component of the reference design software. + +.. table:: Resource Usage + + +---------------+---------------+---------------------+-------------------------------------+ + | Component | Cores | Memory (KB) | Ports | + +===============+===============+=====================+=====================================+ + | XUD library | 1 | 9 (6 code) | ULPI ports | + | | | | | + +---------------+---------------+---------------------+-------------------------------------+ + | Endpoint 0 | 1 | 17.5 (10.5 code) | none | + +---------------+---------------+---------------------+-------------------------------------+ + | USB Buffering | 1 | 22.5 (1 code) | none | + +---------------+---------------+---------------------+-------------------------------------+ + | Audio driver | 1 | 8.5 (6 code) | See :ref:`usb_audio_sec_audio` | + +---------------+---------------+---------------------+-------------------------------------+ + | S/PDIF Tx | 1 | 3.5 (2 code) | 1 x 1 bit port | + +---------------+---------------+---------------------+-------------------------------------+ + | S/PDIF Rx | 1 | 3.7 (3.7 code) | 1 x 1 bit port | + +---------------+---------------+---------------------+-------------------------------------+ + | ADAT Rx | 1 | 3.2 (3.2 code) | 1 x 1 bit port | + +---------------+---------------+---------------------+-------------------------------------+ + | Midi | 1 | 6.5 (1.5 code) | 2 x 1 bit ports | + +---------------+---------------+---------------------+-------------------------------------+ + | Mixer | 2 | 8.7 (6.5 code) | | + +---------------+---------------+---------------------+-------------------------------------+ + | ClockGen | 1 | 2.5 (2.4 code) | | + +---------------+---------------+---------------------+-------------------------------------+ + +.. note:: + + These resource estimates are based on the multichannel reference design with + all options of that design enabled. For fewer channels, the resource + usage is likely to decrease. + +.. note:: + + The XUD library requires an 80MIPS core to function correctly + (i.e. on a 500MHz part only six cores can run). + +.. note:: + + The ULPI ports are a fixed set of ports on the L-Series + device. When using these ports, other ports are + unavailable when ULPI is active. See the `XS1-L Hardware Design Checklist `_ for further details. diff --git a/lib_xua/doc/rst/sw_spdif.rst b/lib_xua/doc/rst/sw_spdif.rst new file mode 100755 index 00000000..bcde1034 --- /dev/null +++ b/lib_xua/doc/rst/sw_spdif.rst @@ -0,0 +1,140 @@ +S/PDIF Transmit +............... + +``lib_xua`` supports the development of devices with S/PDIF transmit throught the use of ``lib_spdif``. +The XMOS S/SPDIF transmitter component runs in a single core and supports sample-rates upto 192kHz. + +The S/PDIF transmitter core takes PCM audio samples via a channel and outputs them +in S/PDIF format to a port. A lookup table is used to encode the audio data into the required format. + +It receives samples from the Audio I/O core two at a time (for left and right). For each sample, +it performs a lookup on each byte, generating 16 bits of encoded data which it outputs to a port. + +S/PDIF sends data in frames, each containing 192 samples of the left and right channels. + +Audio samples are encapsulated into S/PDIF words (adding preamble, parity, channel status and validity +bits) and transmitted in biphase-mark encoding (BMC) with respect to an *external* master clock. + +Note that a minor change to the ``SpdifTransmitPortConfig`` function would enable *internal* master +clock generation (e.g. when clock source is already locked to desired audio clock). + +.. list-table:: S/PDIF Capabilities + + * - **Sample frequencies** + - 44.1, 48, 88.2, 96, 176.4, 192 kHz + * - **Master clock ratios** + - 128x, 256x, 512x + * - **Library** + - ``lib_spdif`` + +Clocking +++++++++ + +.. only:: latex + + .. figure:: images/spdif.pdf + + D-Type Jitter Reduction + +.. only:: html + + .. figure:: images/spdif.png + + D-Type Jitter Reduction + + +The S/PDIF signal is output at a rate dictated by the external master clock. The master clock must +be 1x 2x or 4x the BMC bit rate (that is 128x 256x or 512x audio sample rate, respectively). +For example, the minimum master clock frequency for 192kHz is therefore 24.576MHz. + +This resamples the master clock to its clock domain (oscillator), which introduces jitter of 2.5-5 ns on the S/PDIF signal. +A typical jitter-reduction scheme is an external D-type flip-flop clocked from the master clock (as shown in the preceding diagram). + +Usage ++++++ + +The interface to the S/PDIF transmitter core is via a normal channel with streaming built-ins +(``outuint``, ``inuint``). Data format should be 24-bit left-aligned in a 32-bit word: ``0x12345600`` + +The following protocol is used on the channel: + +.. list-table:: S/PDIF Component Protocol + + * - ``outct`` + - New sample rate command + * - ``outuint`` + - Sample frequency (Hz) + * - ``outuint`` + - Master clock frequency (Hz) + * - ``outuint`` + - Left sample + * - ``outuint`` + - Right sample + * - ``outuint`` + - Left sample + * - ``outuint`` + - Right sample + * - ``...`` + - + * - ``...`` + - + + + +Output stream structure ++++++++++++++++++++++++ + +The stream is composed of words with the following structure shown in +:ref:`usb_audio_spdif_stream_structure`. The channel status bits are +0x0nc07A4, where c=1 for left channel, c=2 for right channel and n +indicates sampling frequency as shown in :ref:`usb_audio_spdif_sample_bits`. + +.. _usb_audio_spdif_stream_structure: + +.. list-table:: S/PDIF Stream Structure + :header-rows: 1 + :widths: 10 32 58 + + * - Bits + - + - + * - 0:3 + - Preamble + - Correct B M W order, starting at sample 0 + * - 4:27 + - Audio sample + - Top 24 bits of given word + * - 28 + - Validity bit + - Always 0 + * - 29 + - Subcode data (user bits) + - Unused, set to 0 + * - 30 + - Channel status + - See below + * - 31 + - Parity + - Correct parity across bits 4:30 + + +.. _usb_audio_spdif_sample_bits: + +.. list-table:: Channel Status Bits + :header-rows: 1 + + * - Frequency (kHz) + - n + * - 44.1 + - 0 + * - 48 + - 2 + * - 88.2 + - 8 + * - 96 + - A + * - 176.4 + - C + * - 192 + - E + diff --git a/lib_xua/doc/rst/sw_spdif_rx.rst b/lib_xua/doc/rst/sw_spdif_rx.rst new file mode 100644 index 00000000..56479083 --- /dev/null +++ b/lib_xua/doc/rst/sw_spdif_rx.rst @@ -0,0 +1,95 @@ +S/PDIF Receive +--------------- + +XMOS devices can support S/PDIF receive up to 192kHz. + +The S/PDIF receiver module uses a clockblock and a buffered one-bit port. +The clock-block is divided of a 100 MHz reference clock. The one bit port is buffered to 4-bits. +The receiver code uses this clock to over sample the input data. + +The receiver outputs audio samples over a *streaming channel end* where data can be input using the +built-in input operator. + +The S/PDIF receive function never returns. The 32-bit value from the channel +input comprises: + +.. list-table:: S/PDIF RX Word Structure + :header-rows: 1 + :widths: 10 32 + + * - Bits + - + * - 0:3 + - A tag (see below) + * - 4:28 + - PCM encoded sample value + * - 29:31 + - User bits (parity, etc) + +The tag has one of three values: + +.. list-table:: S/PDIF RX Tags + :header-rows: 1 + :widths: 10 32 + + * - Tag + - Meaning + * - FRAME\_X + - Sample on channel 0 (Left for stereo) + * - FRAME\_Y + - Sample on another channel (Right if for stereo) + * - FRAME\_Z + - Sample on channel 0 (Left), and the first sample of a frame; can be used if the user bits need to be reconstructed. + +See S/PDIF specification for further details on format, user bits etc. + +Usage and Integration ++++++++++++++++++++++ + +Since S/PDIF is a digital steam the devices master clock must be syncronised to it. This is typically +done with an external fractional-n multipier. See `Clock Recovery` (:ref:`usb_audio_sec_clock_recovery`) + +The S/PDIF receive function communicates with the ``clockGen`` component with passes audio data to the +audio driver and handles locking to the S/PDIF clock source if required (see External Clock Recovery). + +Ideally the parity of each word/sample received should be checked. This is done using the built in +``crc32`` function (see ``xs1.h``): + +.. literalinclude:: sc_usb_audio/module_usb_audio/clocking/clockgen.xc + :start-after: //:badParity + :end-before: //: + +If bad parity is detected the word/sample is ignored, otherwise the tag is inspected for channel +(i.e. left or right) and the sample stored. + +The following code snippet illustrates how the output of the S/PDIF receive component could be used:: + + + while(1) + { + c_spdif_rx :> data; + + if(badParity(data) + continue; + + tag = data & 0xF; + + /* Extract 24bit audio sample */ + sample = (data << 4) & 0xFFFFFF00; + + switch(tag) + { + case FRAME_X: + case FRAME_X: + // Store left + break; + + case FRAME_Z: + // Store right + break; + } + } + + + + diff --git a/lib_xua/doc/rst/sw_usb_audio_class.rst b/lib_xua/doc/rst/sw_usb_audio_class.rst new file mode 100644 index 00000000..ed4279e0 --- /dev/null +++ b/lib_xua/doc/rst/sw_usb_audio_class.rst @@ -0,0 +1,57 @@ +USB Audio Class Version Support +------------------------------- + +The XMOS USB Audio framework supports both USB Audio Class 1.0 and Audio Class 2.0. + +USB Audio Class 2.0 offers many improvements over USB Audio Class 1.0, most notable is the complete support for high-speed operation. This means that Audio Class devices are no longer limited to full-speed operation allowing greater channel counts, sample frequencies and sample bit-depths. Additional improvement, amoungst others, include: + +- Added support for multiple clock domains, clock description and clock control + +- Extensive support for interrupts to inform the host about dynamic changes that occur to different entities such as Clocks etc + +Driver Support +~~~~~~~~~~~~~~ + +Audio Class 1.0 ++++++++++++++++ + +Audio Class 1.0 is fully supported in Apple OSX. Audio Class 1.0 is fully supported in all modern Microsoft Windows operating systems (i.e. Windows XP and later). + +Audio Class 2.0 ++++++++++++++++ + +Audio Class 2.0 is fully supported in Apple OSX since version 10.6.4. Audio Class 2.0 is not supported natively by Windows operating systems. It is therefore required that a driver is installed. Documentation of Windows drivers is beyond the scope of this document, please contact XMOS for further details. + +Audio Class 1.0 Mode and Fall-back +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The normal default for XMOS USB Audio applications is to run as a high-speed Audio Class 2.0 +device. However, some products may prefer to run in Audio Class 1.0 mode, this is normally to +allow "driver-less" operation with Windows operating systems. + +.. note:: + + To ensure specification compliance, Audio Class 1.0 mode *always* operates at full-speed USB. + +The device will operate in full-speed Audio Class 1.0 mode if one of the following is true: + +- The code is compiled for USB Audio Class 1.0 only. + +- The code is compiled for USB Audio Class 2.0 and it is connected + to the host over a full speed link (and the Audio Class fall back is + enabled). + +The options to control this behavior are detailed in :ref:`usb_audio_sec_custom_defines_api`. + +When running in Audio Class 1.0 mode the following restrictions are applied: + +- MIDI is disabled. + +- DFU is disabled (Since Windows operating systems would prompt for a DFU driver to be installed) + +Due to bandwidth limitations of full-speed USB the following sample-frequency restrictions are also applied: + +- Sample rate is limited to a maximum of 48kHz if both input and output are enabled. + +- Sample rate is limited to a maximum of 96kHz if only input *or* output is enabled. + diff --git a/lib_xua/doc/rst/sw_xud.rst b/lib_xua/doc/rst/sw_xud.rst new file mode 100644 index 00000000..eb2eb138 --- /dev/null +++ b/lib_xua/doc/rst/sw_xud.rst @@ -0,0 +1,18 @@ + +XMOS USB Device (XUD) Library +............................. + +All low level communication with the USB host is handled by the XMOS USB Device (XUD) library - `lib_xud` + +The ``XUD_Main()`` function runs in its own core and communicates with endpoint cores though a +mixture of shared memory and channel communications. + +For more details and full XUD API documentation please refer to `lib_xud`. + +:ref:`usb_audio_threads` shows the XUD library communicating with two other cores: + +- Endpoint 0: This core controls the enumeration/configuration tasks of the USB device. + +- Endpoint Buffer: This core sends/receives data packets from the XUD library. + The core receives audio data from the AudioHub, MIDI data from the MIDI core etc. + diff --git a/lib_xua/doc/rst/using.rst b/lib_xua/doc/rst/using.rst new file mode 100644 index 00000000..0f89e13c --- /dev/null +++ b/lib_xua/doc/rst/using.rst @@ -0,0 +1,176 @@ +Using lib_xud +------------- + +This sections describes the basic usage of `lib_xud`. It provides a guide on how to program the USB Audio Devices using `lib_xud`. + +Reviewing application note AN00246 is highly recommended at this point. + +Library structure +~~~~~~~~~~~~~~~~~ + +The code is split into several directories. + +.. list-table:: lib_xua structure + + * - core + - Common code for USB audio applications + * - midi + - MIDI I/O code + * - dfu + - Device Firmware Upgrade code + + +Note, the midi and dfu directories are potential candidates for separate libs in their own right. + + +Including in a project +~~~~~~~~~~~~~~~~~~~~~~ + +All `lib_xua` functions can be accessed via the ``xua.h`` header filer:: + + #include + +It is also required to add ``lib_xua`` to the ``USED_MODULES`` field of your application Makefile:: + + USED_MODULES = .. lib_xua ... + + +Core hardware resources +~~~~~~~~~~~~~~~~~~~~~~~ + +The user must declare and initialise relevant hardware resources (globally) and pass them to the relevant function of `lib_xua`. + +As an absolute minimum the following resources are required: + +- A 1-bit port for audio master clock input +- A n-bit port for internal feedback calculation (typically a free, unused port is used e.g. `16B`) +- A clock-block, which will be clocked from the master clock input port + +Example declaration of these resources might look as follows:: + + in port p_mclk_in = PORT_MCLK_IN; + in port p_for_mclk_count = PORT_MCLK_COUNT; /* Extra port for counting master clock ticks */ + clock clk_audio_mclk = on tile[0]: XS1_CLKBLK_5; /* Master clock */ + +.. note:: + + The `PORT_MCLK_IN` and `PORT_MCLK_COUNT` defintions are derived from the projects XN file + + +The ``XUA_AudioHub()`` function requires an audio master clock input to clock the physical audio I/O. Less obvious is the reasoning for the ``XUA_Buffer()`` +task having the same requirement - it is used for the USB feedback system and packet sizing. + +Due to the above, if the ``XUD_AudioHub()`` and ``XUA_Buffer()`` cores must reside on separate tiles a separate master clock input port must be provided to each, for example:: + + /* Master clock for the audio IO tile */ + in port p_mclk_in = PORT_MCLK_IN; + + /* Resources for USB feedback */ + in port p_mclk_in_usb = PORT_MCLK_IN_USB; /* Extra master clock input for the USB tile */ + +Whilst the hardware resources described in this section satisfy the basic requirements for the operation (or build) of `lib_xua` projects typically also needs some additional audio I/O, +I2S or SPDIF for example. + +These should be passed into the various cores as required - see API and Features sections. + +Running the core components +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In their most basic form the core components can be run as follows:: + + par + { + /* Endpoint 0 core from lib_xua */ + XUA_Endpoint0(c_ep_out[0], c_ep_in[0], c_aud_ctl, null, null, null, null); + + /* Buffering cores - handles audio data to/from EP's and gives/gets data to/from the audio I/O core */ + /* Note, this spawns two cores */ + XUA_Buffer(c_ep_out[1], c_ep_in[1], c_sof, c_aud_ctl, p_for_mclk_count, c_aud); + + /* AudioHub/IO core does most of the audio IO i.e. I2S (also serves as a hub for all audio) */ + XUA_AudioHub(c_aud, ...) ; + } + +``XUA_Buffer()`` expects its ``p_for_mclk_count`` argument to be clocked from the audio master clock before being passed it. +The following code satisfies this requirement:: + + { + /* Connect master-clock clock-block to clock-block pin */ + set_clock_src(clk_audio_mclk_usb, p_mclk_in_usb); /* Clock clock-block from mclk pin */ + set_port_clock(p_for_mclk_count, clk_audio_mclk_usb); /* Clock the "count" port from the clock block */ + start_clock(clk_audio_mclk_usb); /* Set the clock off running */ + + XUA_Buffer(c_ep_out[1], c_ep_in[1], c_sof, c_aud_ctl, p_for_mclk_count, c_aud); + + } + +.. note:: Keeping this configuration outside of ``XUA_Buffer()`` does not preclude the possibllty of sharing ``p_mclk_in_usb`` port with additional components + +To produce a fully operating device a call to ``XUD_Main()`` (from ``lib_xud``) must also be made for USB connectivity:: + + /* Low level USB device layer core */ + on tile[1]: XUD_Main(c_ep_out, 2, c_ep_in, 2, c_sof, epTypeTableOut, epTypeTableIn, null, null, -1, XUD_SPEED_HS, XUD_PWR_SELF); + +Additionally the required communication channels must also be declared:: + + /* Channel arrays for lib_xud */ + chan c_ep_out[2]; + chan c_ep_in[2]; + + /* Channel for communicating SOF notifications from XUD to the Buffering cores */ + chan c_sof; + + /* Channel for audio data between buffering cores and AudioHub/IO core */ + chan c_aud; + + /* Channel for communicating control messages from EP0 to the rest of the device (via the buffering cores) */ + chan c_aud_ctl; + + +This section provides enough information to implement a skeleton program for a USB Audio device. When running the xCORE device will present itself as a USB Audio Class device on the bus. + + +Configuring XUA +~~~~~~~~~~~~~~~ + +Configuration of the various build time options of ``lib_xua`` is done via the optional header `xua_conf.h`. Such build time options include audio class version, sample rates, channel counts etc. +Please see the API section for full listings. + +The build system will automatically include the `xua_conf.h` header file as appropriate - the user should continue to include `xua.h` as previously directed. A simple example is shown below:: + + #ifndef _XUA_CONF_H_ + #define _XUA_CONF_H_ + + /* Output channel count */ + #define XUA_NUM_USB_CHAN_OUT (2) + + /* Product string */ + #define XUA_PRODUCT_STR_A2 "My Product" + + #endif + + +User functions +~~~~~~~~~~~~~~ + +To enable custom functionality, such as configuring external audio hardware, custom functionality on stream start/stop etc various user overridable functions are provided (see API section for full listings). The default implementations are empty. + + +Codeless programming model +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Whilst it is possible to code a USB Audio device using the building blocks provided by `lib_xua` it is realised that this might not be desirable for some classes of customers or product. + +For instance, some users may not have a large software development experience and simply want to customise some basic settings such as strings, sample-rates, channel-counts etc. Others may want to fully customise the implementation - adding additional functionality such as adding DSD or possibly only using a subset of the functions provided - just ``XUA_AudioHub``, for example. + +In addition, the large number of supported features can lead to a large number of tasks, hardware resources, communication channels etc, requiring quite a lot of code to be authored for each product. + +In order to cater for the former class of users, a "codeless" option is provided. Put simply, a file ``main.xc`` is provided which includes a pre-authored ``main()`` function along with all of the required hardware resource declarations. Code is generated based on the options provided in ``xua_conf.h`` + +Using this development model the user simply must include a ``xua_conf.h`` with their settings and optional implementations of any 'user functions' as desired. This, along with an XN file for their hardware platform, is all that is required to build a fully featured and functioning product. + +This model also provides the benefit of a known-good, full codebase as a basis for a product. + +This behaviour described in this section is the default behaviour of `lib_xua`, to disable this please set ``EXCLUDE_USB_AUDIO_MAIN`` to 1 in the application makefile or ``xua_conf.h``. + + diff --git a/lib_xua/doc/rst/xdoc.conf b/lib_xua/doc/rst/xdoc.conf index 2cef5f56..fa1fe2cd 100644 --- a/lib_xua/doc/rst/xdoc.conf +++ b/lib_xua/doc/rst/xdoc.conf @@ -1,2 +1,2 @@ XMOSNEWSTYLE = 1 -DOXYGEN_DIRS=../../api \ No newline at end of file +DOXYGEN_DIRS=../../api diff --git a/lib_xua/host/xmosdfu/.gitignore b/lib_xua/host/xmosdfu/.gitignore new file mode 100644 index 00000000..2f600ae4 --- /dev/null +++ b/lib_xua/host/xmosdfu/.gitignore @@ -0,0 +1 @@ +xmosdfu diff --git a/lib_xua/host/xmosdfu/xmosdfu.cpp b/lib_xua/host/xmosdfu/xmosdfu.cpp index a0aca676..f573f6b0 100644 --- a/lib_xua/host/xmosdfu/xmosdfu.cpp +++ b/lib_xua/host/xmosdfu/xmosdfu.cpp @@ -307,8 +307,20 @@ int read_dfu_image(char *file) { unsigned int numBytes = 0; numBytes = dfu_upload(0, block_count, 64, block_data); + /* Upload is completed when dfu_upload() returns an empty block */ if (numBytes == 0) { + /* If upload is complete, but no block has been read, + issue a warning about the upgrade image + */ + if (block_count==0) { + printf("... WARNING: Upgrade image size is 0: check if image is present in the flash\n"); + } + break; + } + else if (numBytes < 0) + { + fprintf(stderr,"dfu_upload error (%d)\n", numBytes); break; } fwrite(block_data, 1, block_size, outFile); @@ -338,8 +350,8 @@ static void print_usage(const char *program_name, const char *error_msg) print_device_list(stderr, " "); fprintf(stderr, " And COMMAND is one of:\n"); - fprintf(stderr, " --download : install a new firmware\n"); - fprintf(stderr, " --upload : extract a firmware image\n"); + fprintf(stderr, " --download : write an upgrade image\n"); + fprintf(stderr, " --upload : read the upgrade image\n"); fprintf(stderr, " --revertfactory : revert to the factory image\n"); fprintf(stderr, " --savecustomstate : \n"); fprintf(stderr, " --restorecustomstate : \n"); diff --git a/lib_xua/module_build_info b/lib_xua/module_build_info index fca1e1f9..6095afca 100644 --- a/lib_xua/module_build_info +++ b/lib_xua/module_build_info @@ -13,9 +13,12 @@ MODULE_XCC_FLAGS = $(XCC_FLAGS) -O3 -DREF_CLK_FREQ=100 -fasm-linenum -fcomment-a OPTIONAL_HEADERS += xua_conf.h -VERSION = 0.1.2 +VERSION = 0.2.0 -DEPENDENT_MODULES = lib_logging(>=2.1.0) lib_xud(>=0.1.0) +DEPENDENT_MODULES = lib_logging(>=2.1.0) lib_xud(>=0.1.0) lib_spdif(>=3.0.0) + +#ignore host dir +SOURCE_DIRS = src/* #ignore host dir SOURCE_DIRS = src/* diff --git a/lib_xua/src/core/audiohub/audiohub_adat.h b/lib_xua/src/core/audiohub/audiohub_adat.h new file mode 100644 index 00000000..41cd5a45 --- /dev/null +++ b/lib_xua/src/core/audiohub/audiohub_adat.h @@ -0,0 +1,52 @@ +// Copyright (c) 2018, XMOS Ltd, All rights reserved + +unsigned adatCounter = 0; +unsigned adatSamples[8]; + +#pragma unsafe arrays +static inline void TransferAdatTxSamples(chanend c_adat_out, const unsigned samplesFromHost[], int smux, int handshake) +{ + + /* Do some re-arranging for SMUX.. */ + unsafe + { + unsigned * unsafe samplesFromHostAdat = &samplesFromHost[ADAT_TX_INDEX]; + + /* Note, when smux == 1 this loop just does a straight 1:1 copy */ + //if(smux != 1) + { + int adatSampleIndex = adatCounter; + for(int i = 0; i < (8/smux); i++) + { + adatSamples[adatSampleIndex] = samplesFromHostAdat[i]; + adatSampleIndex += smux; + } + } + } + + adatCounter++; + + if(adatCounter == smux) + { + +#ifdef ADAT_TX_USE_SHARED_BUFF + unsafe + { + /* Wait for ADAT core to be done with buffer */ + /* Note, we are "running ahead" of the ADAT core */ + inuint(c_adat_out); + + /* Send buffer pointer over to ADAT core */ + volatile unsigned * unsafe samplePtr = &adatSamples; + outuint(c_adat_out, (unsigned) samplePtr); + } +#else +#pragma loop unroll + for (int i = 0; i < 8; i++) + { + outuint(c_adat_out, samplesFromHost[ADAT_TX_INDEX + i]); + } +#endif + adatCounter = 0; + } +} diff --git a/lib_xua/src/core/audiohub/audiohub_dsd.h b/lib_xua/src/core/audiohub/audiohub_dsd.h new file mode 100644 index 00000000..bea386bb --- /dev/null +++ b/lib_xua/src/core/audiohub/audiohub_dsd.h @@ -0,0 +1,94 @@ +// Copyright (c) 2018, XMOS Ltd, All rights reserved + +#if (DSD_CHANS_DAC != 0) +extern buffered out port:32 p_dsd_dac[DSD_CHANS_DAC]; +extern buffered out port:32 p_dsd_clk; +#endif + +/* I2S Data I/O*/ +#if (I2S_CHANS_DAC != 0) +extern buffered out port:32 p_i2s_dac[I2S_WIRES_DAC]; +#endif + +#if (I2S_CHANS_ADC != 0) +extern buffered in port:32 p_i2s_adc[I2S_WIRES_ADC]; +#endif + +/* This function performs the DSD native loop and outputs a 32b DSD stream per loop */ +static inline void DoDsdNative(unsigned samplesOut[], unsigned &dsdSample_l, unsigned &dsdSample_r, unsigned divide) +{ + /* 8 bits per chan, 1st 1-bit sample in MSB */ + dsdSample_l = samplesOut[0]; + dsdSample_r = samplesOut[1]; + dsdSample_r = bitrev(byterev(dsdSample_r)); + dsdSample_l = bitrev(byterev(dsdSample_l)); + + asm volatile("out res[%0], %1"::"r"(p_dsd_dac[0]),"r"(dsdSample_l)); + asm volatile("out res[%0], %1"::"r"(p_dsd_dac[1]),"r"(dsdSample_r)); +} + +/* This function performs the DOP loop and collects 16b of DSD per loop + and outputs a 32b word into the port buffer every other cycle. */ +static inline void DoDsdDop(int &everyOther, unsigned samplesOut[], unsigned &dsdSample_l, unsigned &dsdSample_r, unsigned divide) +{ + if(!everyOther) + { + dsdSample_l = ((samplesOut[0] & 0xffff00) << 8); + dsdSample_r = ((samplesOut[1] & 0xffff00) << 8); + everyOther = 1; + } + else + { + everyOther = 0; + dsdSample_l = dsdSample_l | ((samplesOut[0] & 0xffff00) >> 8); + dsdSample_r = dsdSample_r | ((samplesOut[1] & 0xffff00) >> 8); + + asm volatile("out res[%0], %1"::"r"(p_dsd_dac[0]),"r"(bitrev(dsdSample_l))); + asm volatile("out res[%0], %1"::"r"(p_dsd_dac[1]),"r"(bitrev(dsdSample_r))); + } +} + +/* When DSD is enabled and streaming is standard PCM, this function checks for a series of DoP markers in the upper byte. + If found it will exit deliver() with the command to restart in DoP mode. + When in DoP mode, this function will check for a single absence of the DoP marker and exit deliver() with the command + to restart in I2S mode. */ +static inline int DoDsdDopCheck(unsigned &dsdMode, int &dsdCount, unsigned curSamFreq, unsigned samplesOut[], unsigned &dsdMarker) +{ + /* Check for DSD - note we only move into DoP mode if valid DoP Freq */ + /* Currently we only check on channel 0 - we get all 0's on channels without data */ + if((dsdMode == DSD_MODE_OFF) && (curSamFreq > 96000)) + { + if((DSD_MASK(samplesOut[0]) == dsdMarker) && (DSD_MASK(samplesOut[1]) == dsdMarker)) + { + dsdCount++; + dsdMarker ^= DSD_MARKER_XOR; + if(dsdCount == DSD_EN_THRESH) + { + dsdMode = DSD_MODE_DOP; + dsdCount = 0; + dsdMarker = DSD_MARKER_2; + return 0; + } + } + else + { + dsdCount = 0; + dsdMarker = DSD_MARKER_2; + } + } + else if(dsdMode == DSD_MODE_DOP) + { + /* If we are running in DOP mode, check if we need to come out */ + if((DSD_MASK(samplesOut[0]) != DSD_MARKER_1) && (DSD_MASK(samplesOut[1]) != DSD_MARKER_1)) + { + if((DSD_MASK(samplesOut[0]) != DSD_MARKER_2) && (DSD_MASK(samplesOut[1]) != DSD_MARKER_2)) + { + dsdMode = DSD_MODE_OFF; + return 0; + } + } + } + return 1; +} + + diff --git a/lib_xua/src/core/audiohub/audiohub_initport.xc b/lib_xua/src/core/audiohub/audiohub_initport.xc new file mode 100644 index 00000000..fc8d4f9d --- /dev/null +++ b/lib_xua/src/core/audiohub/audiohub_initport.xc @@ -0,0 +1,118 @@ +// Copyright (c) 2018, XMOS Ltd, All rights reserved +#include "xua.h" + +#include "dsd_support.h" + +#if (DSD_CHANS_DAC != 0) +extern buffered out port:32 p_dsd_dac[DSD_CHANS_DAC]; +extern buffered out port:32 p_dsd_clk; +#endif + +extern unsigned dsdMode; + +#if !CODEC_MASTER +void InitPorts_master(unsigned divide, buffered _XUA_CLK_DIR port:32 p_lrclk, buffered _XUA_CLK_DIR port:32 p_bclk, buffered out port:32 (&?p_i2s_dac)[I2S_WIRES_DAC], buffered in port:32 (&?p_i2s_adc)[I2S_WIRES_ADC]) +{ +#if (DSD_CHANS_DAC > 0) + if(dsdMode == DSD_MODE_OFF) + { +#endif + +#if (I2S_CHANS_ADC != 0 || I2S_CHANS_DAC != 0) + + /* Clear I2S port buffers */ + clearbuf(p_lrclk); + +#if (I2S_CHANS_DAC != 0) + for(int i = 0; i < I2S_WIRES_DAC; i++) + { + clearbuf(p_i2s_dac[i]); + } +#endif + +#if (I2S_CHANS_ADC != 0) + for(int i = 0; i < I2S_WIRES_ADC; i++) + { + clearbuf(p_i2s_adc[i]); + } +#endif + +#pragma xta endpoint "divide_1" + unsigned tmp; + p_lrclk <: 0 @ tmp; + tmp += 100; + + /* Since BCLK is free-running, setup outputs/inputs at a known point in the future */ +#if (I2S_CHANS_DAC != 0) +#pragma loop unroll + for(int i = 0; i < I2S_WIRES_DAC; i++) + { + p_i2s_dac[i] @ tmp <: 0; + } +#endif + + p_lrclk @ tmp <: 0x7FFFFFFF; + +#if (I2S_CHANS_ADC != 0) + for(int i = 0; i < I2S_WIRES_ADC; i++) + { + asm("setpt res[%0], %1"::"r"(p_i2s_adc[i]),"r"(tmp-1)); + } +#endif +#endif /* (I2S_CHANS_ADC != 0 || I2S_CHANS_DAC != 0) */ + + +#if (DSD_CHANS_DAC > 0) + } /* if (!dsdMode) */ + else + { + /* p_dsd_clk must start high */ + p_dsd_clk <: 0x80000000; + } +#endif +} + +#else + +void InitPorts_slave(unsigned divide, buffered _XUA_CLK_DIR port:32 p_lrclk, buffered _XUA_CLK_DIR port:32 p_bclk, buffered out port:32 (&?p_i2s_dac)[I2S_WIRES_DAC], buffered in port:32 (&?p_i2s_adc)[I2S_WIRES_ADC]) +{ +#if (I2S_CHANS_ADC != 0 || I2S_CHANS_DAC != 0) + unsigned tmp; + + /* Wait for LRCLK edge (in I2S LRCLK = 0 is left, TDM rising edge is start of frame) */ + p_lrclk when pinseq(0) :> void; + p_lrclk when pinseq(1) :> void; + p_lrclk when pinseq(0) :> void; + p_lrclk when pinseq(1) :> void; +#if I2S_MODE_TDM + p_lrclk when pinseq(0) :> void; + p_lrclk when pinseq(1) :> void @ tmp; +#else + p_lrclk when pinseq(0) :> void @ tmp; +#endif + + tmp += (I2S_CHANS_PER_FRAME * 32) - 32 + 1 ; + /* E.g. 2 * 32 - 32 + 1 = 33 for stereo */ + /* E.g. 8 * 32 - 32 + 1 = 225 for 8 chan TDM */ + +#if (I2S_CHANS_DAC != 0) +#pragma loop unroll + for(int i = 0; i < I2S_WIRES_DAC; i++) + { + p_i2s_dac[i] @ tmp <: 0; + } +#endif + +#if (I2S_CHANS_ADC != 0) +#pragma loop unroll + for(int i = 0; i < I2S_WIRES_ADC; i++) + { + asm("setpt res[%0], %1"::"r"(p_i2s_adc[i]),"r"(tmp-1)); + } +#endif + + asm("setpt res[%0], %1"::"r"(p_lrclk),"r"(tmp-1)); +#endif /* (I2S_CHANS_ADC != 0 || I2S_CHANS_DAC != 0) */ +} +#endif + diff --git a/lib_xua/src/core/audiohub/xua_audiohub.xc b/lib_xua/src/core/audiohub/xua_audiohub.xc index 296c8bad..7f3b1729 100755 --- a/lib_xua/src/core/audiohub/xua_audiohub.xc +++ b/lib_xua/src/core/audiohub/xua_audiohub.xc @@ -20,7 +20,7 @@ #include "audioports.h" #include "mic_array_conf.h" #if (XUA_SPDIF_TX_EN) -#include "SpdifTransmit.h" +#include "spdif.h" #endif #ifdef ADAT_TX #include "adat_tx.h" @@ -29,6 +29,14 @@ #endif #endif +#if (XUA_NUM_PDM_MICS > 0) +#include "xua_pdm_mic.h" +#endif + +#if (AUD_TO_USB_RATIO > 1) +#include "src.h" +#endif + #include "xua_commands.h" #include "xc_ptr.h" @@ -36,36 +44,11 @@ static unsigned samplesOut[MAX(NUM_USB_CHAN_OUT, I2S_CHANS_DAC)]; -#ifndef ADAT_RX -#define ADAT_RX 0 -#endif - -#ifndef SPDIF_RX -#define SPDIF_RX 0 -#endif - /* Two buffers for ADC data to allow for DAC and ADC I2S ports being offset */ -#define IN_CHAN_COUNT (I2S_CHANS_ADC + NUM_PDM_MICS + (8*ADAT_RX) + (2*SPDIF_RX)) +#define IN_CHAN_COUNT (I2S_CHANS_ADC + XUA_NUM_PDM_MICS + (8*ADAT_RX) + (2*SPDIF_RX)) static unsigned samplesIn[2][MAX(NUM_USB_CHAN_IN, IN_CHAN_COUNT)]; -#if defined(ADAT_RX) && (ADAT_RX ==0) -#undef ADAT_RX -#endif - -#if defined(SPDIF_RX) && (SPDIF_RX ==0) -#undef SPDIF_RX -#endif - -#if (AUD_TO_USB_RATIO > 1) -#include "src.h" -#endif - -#if (DSD_CHANS_DAC != 0) -extern buffered out port:32 p_dsd_dac[DSD_CHANS_DAC]; -extern buffered out port:32 p_dsd_clk; -#endif - #ifdef XTA_TIMING_AUDIO #pragma xta command "add exclusion received_command" #pragma xta command "analyse path i2s_output_l i2s_output_r" @@ -79,392 +62,172 @@ extern buffered out port:32 p_dsd_clk; #pragma xta command "set required - 2000 ns" #endif -/* I2S Data I/O*/ -#if (I2S_CHANS_DAC != 0) -extern buffered out port:32 p_i2s_dac[I2S_WIRES_DAC]; -#endif - -#if (I2S_CHANS_ADC != 0) -extern buffered in port:32 p_i2s_adc[I2S_WIRES_ADC]; -#endif - -/* I2S LR/Bit clock I/O */ -#if CODEC_MASTER -extern buffered in port:32 p_lrclk; -extern buffered in port:32 p_bclk; -#else -extern buffered out port:32 p_lrclk; -extern buffered out port:32 p_bclk; -#endif - -unsigned dsdMode = DSD_MODE_OFF; - -/* Master clock input */ -extern unsafe port p_mclk_in; -extern in port p_mclk_in2; - -#if (XUA_SPDIF_TX_EN) -extern buffered out port:32 p_spdif_tx; -#endif - #ifdef ADAT_TX extern buffered out port:32 p_adat_tx; #endif -extern clock clk_audio_mclk; -extern clock clk_audio_bclk; - -#if XUA_SPDIF_TX_EN || defined(ADAT_TX) +#if defined(ADAT_TX) extern clock clk_mst_spd; #endif -//extern void device_reboot(void); - -#define MAX_DIVIDE_48 (MCLK_48/MIN_FREQ_48/64) -#define MAX_DIVIDE_44 (MCLK_44/MIN_FREQ_44/64) -#if (MAX_DIVIDE_44 > MAX_DIVIDE_48) -#define MAX_DIVIDE (MAX_DIVIDE_44) +#if CODEC_MASTER +void InitPorts_slave #else -#define MAX_DIVIDE (MAX_DIVIDE_48) +void InitPorts_master +#endif +(unsigned divide, buffered _XUA_CLK_DIR port:32 p_lrclk, buffered _XUA_CLK_DIR port:32 p_bclk, buffered out port:32 ?p_i2s_dac[I2S_WIRES_DAC], + buffered in port:32 ?p_i2s_adc[I2S_WIRES_ADC]); + + +unsigned dsdMode = DSD_MODE_OFF; + +#if (DSD_CHANS_DAC != 0) && (NUM_USB_CHAN_OUT > 0) +#include "audiohub_dsd.h" #endif #ifdef ADAT_TX -unsigned adatCounter = 0; -unsigned adatSamples[8]; - -#pragma unsafe arrays -static inline void TransferAdatTxSamples(chanend c_adat_out, const unsigned samplesFromHost[], int smux, int handshake) -{ - - /* Do some re-arranging for SMUX.. */ - unsafe - { - unsigned * unsafe samplesFromHostAdat = &samplesFromHost[ADAT_TX_INDEX]; - - /* Note, when smux == 1 this loop just does a straight 1:1 copy */ - //if(smux != 1) - { - int adatSampleIndex = adatCounter; - for(int i = 0; i < (8/smux); i++) - { - adatSamples[adatSampleIndex] = samplesFromHostAdat[i]; - adatSampleIndex += smux; - } - } - } - - adatCounter++; - - if(adatCounter == smux) - { - -#ifdef ADAT_TX_USE_SHARED_BUFF - unsafe - { - /* Wait for ADAT core to be done with buffer */ - /* Note, we are "running ahead" of the ADAT core */ - inuint(c_adat_out); - - /* Send buffer pointer over to ADAT core */ - volatile unsigned * unsafe samplePtr = &adatSamples; - outuint(c_adat_out, (unsigned) samplePtr); - } -#else -#pragma loop unroll - for (int i = 0; i < 8; i++) - { - outuint(c_adat_out, samplesFromHost[ADAT_TX_INDEX + i]); - } -#endif - adatCounter = 0; - } -} +#include "audiohub_adat.h" #endif -#ifndef NO_USB #pragma unsafe arrays static inline unsigned DoSampleTransfer(chanend c_out, const int readBuffNo, const unsigned underflowWord) { - outuint(c_out, underflowWord); - - /* Check for sample freq change (or other command) or new samples from mixer*/ - if(testct(c_out)) + if(XUA_USB_EN) { - unsigned command = inct(c_out); -#ifndef CODEC_MASTER - if(dsdMode == DSD_MODE_OFF) + outuint(c_out, underflowWord); + + /* Check for sample freq change (or other command) or new samples from mixer*/ + if(testct(c_out)) { - // Set clocks low - p_lrclk <: 0; - p_bclk <: 0; + unsigned command = inct(c_out); +#ifndef CODEC_MASTER + if(dsdMode == DSD_MODE_OFF) + { +#if (I2S_CHANS_ADC != 0 || I2S_CHANS_DAC != 0) + /* Set clocks low */ + p_lrclk <: 0; + p_bclk <: 0; +#endif + } + else + { +#if(DSD_CHANS_DAC != 0) + /* DSD Clock might not be shared with lrclk or bclk... */ + p_dsd_clk <: 0; +#endif + } +#endif +#if (DSD_CHANS_DAC > 0) + if(dsdMode == DSD_MODE_DOP) + dsdMode = DSD_MODE_OFF; +#endif +#pragma xta endpoint "received_command" + return command; } else { -#if(DSD_CHANS_DAC != 0) - /* DSD Clock might not be shared with lrclk or bclk... */ - p_dsd_clk <: 0; -#endif - } -#endif -#if (DSD_CHANS_DAC > 0) - if(dsdMode == DSD_MODE_DOP) - dsdMode = DSD_MODE_OFF; -#endif -#pragma xta endpoint "received_command" - return command; - } - else - { #if NUM_USB_CHAN_OUT > 0 #pragma loop unroll - for(int i = 0; i < NUM_USB_CHAN_OUT; i++) - { - int tmp = inuint(c_out); - samplesOut[i] = tmp; - } + for(int i = 0; i < NUM_USB_CHAN_OUT; i++) + { + int tmp = inuint(c_out); + samplesOut[i] = tmp; + } #else - inuint(c_out); + inuint(c_out); #endif - UserBufferManagement(samplesOut, samplesIn[readBuffNo]); + UserBufferManagement(samplesOut, samplesIn[readBuffNo]); #if NUM_USB_CHAN_IN > 0 #pragma loop unroll - for(int i = 0; i < NUM_USB_CHAN_IN; i++) - { - outuint(c_out, samplesIn[readBuffNo][i]); - } -#endif - } - - return 0; -} - -#else /* NO_USB */ -#pragma unsafe arrays -static inline unsigned DoSampleTransfer(chanend ?c_out, const int readBuffNo, const unsigned underflowWord) -{ - UserBufferManagement(samplesOut, samplesIn[readBuffNo]); - return 0; -} -#endif /* NO_USB */ - - -#if (DSD_CHANS_DAC != 0) && (NUM_USB_CHAN_OUT > 0) -/* This function performs the DSD native loop and outputs a 32b DSD stream per loop */ -static inline void DoDsdNative(unsigned samplesOut[], unsigned &dsdSample_l, unsigned &dsdSample_r, unsigned divide) -{ - /* 8 bits per chan, 1st 1-bit sample in MSB */ - dsdSample_l = samplesOut[0]; - dsdSample_r = samplesOut[1]; - dsdSample_r = bitrev(byterev(dsdSample_r)); - dsdSample_l = bitrev(byterev(dsdSample_l)); - - asm volatile("out res[%0], %1"::"r"(p_dsd_dac[0]),"r"(dsdSample_l)); - asm volatile("out res[%0], %1"::"r"(p_dsd_dac[1]),"r"(dsdSample_r)); -} - -/* This function performs the DOP loop and collects 16b of DSD per loop - and outputs a 32b word into the port buffer every other cycle. */ -static inline void DoDsdDop(int &everyOther, unsigned samplesOut[], unsigned &dsdSample_l, unsigned &dsdSample_r, unsigned divide) -{ - if(!everyOther) - { - dsdSample_l = ((samplesOut[0] & 0xffff00) << 8); - dsdSample_r = ((samplesOut[1] & 0xffff00) << 8); - everyOther = 1; - } - else - { - everyOther = 0; - dsdSample_l = dsdSample_l | ((samplesOut[0] & 0xffff00) >> 8); - dsdSample_r = dsdSample_r | ((samplesOut[1] & 0xffff00) >> 8); - - asm volatile("out res[%0], %1"::"r"(p_dsd_dac[0]),"r"(bitrev(dsdSample_l))); - asm volatile("out res[%0], %1"::"r"(p_dsd_dac[1]),"r"(bitrev(dsdSample_r))); - } -} - -/* When DSD is enabled and streaming is standard PCM, this function checks for a series of DoP markers in the upper byte. - If found it will exit deliver() with the command to restart in DoP mode. - When in DoP mode, this function will check for a single absence of the DoP marker and exit deliver() with the command - to restart in I2S mode. */ -static inline int DoDsdDopCheck(unsigned &dsdMode, int &dsdCount, unsigned curSamFreq, unsigned samplesOut[], unsigned &dsdMarker) -{ -#if (DSD_CHANS_DAC != 0) && (NUM_USB_CHAN_OUT > 0) - /* Check for DSD - note we only move into DoP mode if valid DoP Freq */ - /* Currently we only check on channel 0 - we get all 0's on channels without data */ - if((dsdMode == DSD_MODE_OFF) && (curSamFreq > 96000)) - { - if((DSD_MASK(samplesOut[0]) == dsdMarker) && (DSD_MASK(samplesOut[1]) == dsdMarker)) - { - dsdCount++; - dsdMarker ^= DSD_MARKER_XOR; - if(dsdCount == DSD_EN_THRESH) + for(int i = 0; i < NUM_USB_CHAN_IN; i++) { - dsdMode = DSD_MODE_DOP; - dsdCount = 0; - dsdMarker = DSD_MARKER_2; - - // Set clocks low - p_lrclk <: 0; - p_bclk <: 0; - p_dsd_clk <: 0; - return 0; + outuint(c_out, samplesIn[readBuffNo][i]); } +#endif + } + } + else + UserBufferManagement(samplesOut, samplesIn[readBuffNo]); + + return 0; +} + +static inline int HandleSampleClock(int frameCount, buffered _XUA_CLK_DIR port:32 p_lrclk) +{ +#if CODEC_MASTER + unsigned syncError = 0; + unsigned lrval = 0; + p_lrclk :> lrval; + + if(I2S_MODE_TDM) + { + /* Only check for the rising edge of frame sync being in the right place because falling edge timing not specified */ + if (frameCount == 1) + { + lrval &= 0xc0000000; // Mask off last two (MSB) frame clock bits which are the most recently sampled + syncError += (lrval != 0x80000000); // We need MSB = 1 and MSB-1 = 0 to signify rising edge } else { - dsdCount = 0; - dsdMarker = DSD_MARKER_2; + /* We do not check this part of the frame because TDM frame sync falling egde timing + * is not defined. We only care about rising edge which is checked in first half of frame */ } } - else if(dsdMode == DSD_MODE_DOP) - { - /* If we are running in DOP mode, check if we need to come out */ - if((DSD_MASK(samplesOut[0]) != DSD_MARKER_1) && (DSD_MASK(samplesOut[1]) != DSD_MARKER_1)) - { - if((DSD_MASK(samplesOut[0]) != DSD_MARKER_2) && (DSD_MASK(samplesOut[1]) != DSD_MARKER_2)) - { - dsdMode = DSD_MODE_OFF; - // Set clocks low - p_lrclk <: 0; - p_bclk <: 0; - p_dsd_clk <: 0; - return 0; - } - } - } -#endif - return 1; -} -#endif - -#if !CODEC_MASTER -static inline void InitPorts_master(unsigned divide) -{ - unsigned tmp; -#if (DSD_CHANS_DAC > 0) - if(dsdMode == DSD_MODE_OFF) - { -#endif - /* Clear I2S port buffers */ - clearbuf(p_lrclk); - -#if (I2S_CHANS_DAC != 0) - for(int i = 0; i < I2S_WIRES_DAC; i++) - { - clearbuf(p_i2s_dac[i]); - } -#endif - -#if (I2S_CHANS_ADC != 0) - for(int i = 0; i < I2S_WIRES_ADC; i++) - { - clearbuf(p_i2s_adc[i]); - } -#endif - -#pragma xta endpoint "divide_1" - p_lrclk <: 0 @ tmp; - tmp += 100; - - /* Since BCLK is free-running, setup outputs/inputs at a known point in the future */ -#if (I2S_CHANS_DAC != 0) -#pragma loop unroll - for(int i = 0; i < I2S_WIRES_DAC; i++) - { - p_i2s_dac[i] @ tmp <: 0; - } -#endif - - p_lrclk @ tmp <: 0x7FFFFFFF; - -#if (I2S_CHANS_ADC != 0) - for(int i = 0; i < I2S_WIRES_ADC; i++) - { - asm("setpt res[%0], %1"::"r"(p_i2s_adc[i]),"r"(tmp-1)); - } -#endif - -#if (DSD_CHANS_DAC > 0) - } /* if (!dsdMode) */ else { - /* p_dsd_clk must start high */ - p_dsd_clk <: 0x80000000; + if(frameCount == 0) + syncError += (lrval != 0x80000000); + else + syncError += (lrval != 0x7FFFFFFF); } -#endif -} -#endif + + return syncError; -#if CODEC_MASTER -static inline void InitPorts_slave(unsigned divide) -{ - unsigned tmp; - - /* Wait for LRCLK edge (in I2S LRCLK = 0 is left, TDM rising edge is start of frame) */ - p_lrclk when pinseq(0) :> void; - p_lrclk when pinseq(1) :> void; - p_lrclk when pinseq(0) :> void; - p_lrclk when pinseq(1) :> void; -#if I2S_MODE_TDM - p_lrclk when pinseq(0) :> void; - p_lrclk when pinseq(1) :> void @ tmp; #else - p_lrclk when pinseq(0) :> void @ tmp; -#endif - - tmp += (I2S_CHANS_PER_FRAME * 32) - 32 + 1 ; - /* E.g. 2 * 32 - 32 + 1 = 33 for stereo */ - /* E.g. 8 * 32 - 32 + 1 = 225 for 8 chan TDM */ - -#if (I2S_CHANS_DAC != 0) -#pragma loop unroll - for(int i = 0; i < I2S_WIRES_DAC; i++) + if(I2S_MODE_TDM) { - p_i2s_dac[i] @ tmp <: 0; + if(frameCount == (I2S_CHANS_PER_FRAME-1)) + p_lrclk <: 0x80000000; + else + p_lrclk <: 0x00000000; } -#endif - -#if (I2S_CHANS_ADC != 0) -#pragma loop unroll - for(int i = 0; i < I2S_WIRES_ADC; i++) + else { - asm("setpt res[%0], %1"::"r"(p_i2s_adc[i]),"r"(tmp-1)); + if(frameCount == 0) + p_lrclk <: 0x80000000; + else + p_lrclk <: 0x7fffffff; } + + return 0; #endif - asm("setpt res[%0], %1"::"r"(p_lrclk),"r"(tmp-1)); } -#endif - - -#if (CODEC_MASTER == 0) #pragma unsafe arrays -unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out +unsigned static AudioHub_MainLoop(chanend ?c_out, chanend ?c_spd_out #ifdef ADAT_TX , chanend c_adat_out , unsigned adatSmuxMode #endif , unsigned divide, unsigned curSamFreq -#if(defined(SPDIF_RX) || defined(ADAT_RX)) +#if( (SPDIF_RX==1) || (ADAT_RX == 1)) , chanend c_dig_rx #endif -#if (NUM_PDM_MICS > 0) +#if (XUA_NUM_PDM_MICS > 0) , chanend c_pdm_pcm #endif + , buffered _XUA_CLK_DIR port:32 ?p_lrclk, + buffered _XUA_CLK_DIR port:32 ?p_bclk, + buffered out port:32 (&?p_i2s_dac)[I2S_WIRES_DAC], + buffered in port:32 (&?p_i2s_adc)[I2S_WIRES_ADC] ) { /* Since DAC and ADC buffered ports off by one sample we buffer previous ADC frame */ unsigned readBuffNo = 0; unsigned index; -#ifdef RAMP_CHECK - unsigned prev=0; - int started = 0; -#endif - #if (DSD_CHANS_DAC != 0) unsigned dsdMarker = DSD_MARKER_2; /* This alternates between DSD_MARKER_1 and DSD_MARKER_2 */ int dsdCount = 0; @@ -474,7 +237,6 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out #endif unsigned underflowWord = 0; - unsigned frameCount = 0; #ifdef ADAT_TX adatCounter = 0; #endif @@ -491,7 +253,7 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out #endif unsigned audioToUsbRatioCounter = 0; -#if (NUM_PDM_MICS > 0) +#if (XUA_NUM_PDM_MICS > 0) unsigned audioToMicsRatioCounter = 0; #endif @@ -513,18 +275,18 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out #endif /* (AUD_TO_USB_RATIO > 1) */ -#if ((DEBUG_MIC_ARRAY == 1) && (NUM_PDM_MICS > 0)) +#if ((DEBUG_MIC_ARRAY == 1) && (XUA_NUM_PDM_MICS > 0)) /* Get initial samples from PDM->PCM converter to avoid stalling the decimators */ c_pdm_pcm <: 1; master { #pragma loop unroll - for(int i = PDM_MIC_INDEX; i < (NUM_PDM_MICS + PDM_MIC_INDEX); i++) + for(int i = PDM_MIC_INDEX; i < (XUA_NUM_PDM_MICS + PDM_MIC_INDEX); i++) { c_pdm_pcm :> samplesIn[readBuffNo][i]; } } -#endif // ((DEBUG_MIC_ARRAY == 1) && (NUM_PDM_MICS > 0)) +#endif // ((DEBUG_MIC_ARRAY == 1) && (XUA_NUM_PDM_MICS > 0)) UserBufferManagementInit(); @@ -545,11 +307,23 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out return command; } - InitPorts_master(divide); - /* Main Audio I/O loop */ while (1) { + unsigned syncError = 0; + unsigned frameCount = 0; + + if ((I2S_CHANS_DAC > 0 || I2S_CHANS_ADC > 0)) + { +#if CODEC_MASTER + InitPorts_slave(divide, p_lrclk, p_bclk, p_i2s_dac, p_i2s_adc); +#else + InitPorts_master(divide, p_lrclk, p_bclk, p_i2s_dac, p_i2s_adc); +#endif + } + + /* Note we always expect syncError to be 0 when we are master */ + while(!syncError) { #if (DSD_CHANS_DAC != 0) && (NUM_USB_CHAN_OUT > 0) if(dsdMode == DSD_MODE_NATIVE) @@ -607,13 +381,8 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out } #endif - /* LR clock delayed by one clock, This is so MSB is output on the falling edge of BCLK - * after the falling edge on which LRCLK was toggled. (see I2S spec) */ - /* Generate clocks LR Clock low - LEFT */ -#if I2S_MODE_TDM - p_lrclk <: 0x00000000; -#else - p_lrclk <: 0x80000000; +#if (I2S_CHANS_ADC != 0 || I2S_CHANS_DAC != 0) + syncError += HandleSampleClock(frameCount, p_lrclk); #endif #pragma xta endpoint "i2s_output_l" @@ -648,17 +417,17 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out if(frameCount == 0) { -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX == 1) || (ADAT_RX == 1) /* Sync with clockgen */ inuint(c_dig_rx); /* Note, digi-data we just store in samplesIn[readBuffNo] - we only double buffer the I2S input data */ #endif -#ifdef SPDIF_RX +#if (SPDIF_RX == 1) asm("ldw %0, dp[g_digData]" :"=r"(samplesIn[readBuffNo][SPDIF_RX_INDEX + 0])); asm("ldw %0, dp[g_digData+4]":"=r"(samplesIn[readBuffNo][SPDIF_RX_INDEX + 1])); #endif -#ifdef ADAT_RX +#if (ADAT_RX == 1) asm("ldw %0, dp[g_digData+8]" :"=r"(samplesIn[readBuffNo][ADAT_RX_INDEX])); asm("ldw %0, dp[g_digData+12]":"=r"(samplesIn[readBuffNo][ADAT_RX_INDEX + 1])); asm("ldw %0, dp[g_digData+16]":"=r"(samplesIn[readBuffNo][ADAT_RX_INDEX + 2])); @@ -669,7 +438,7 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out asm("ldw %0, dp[g_digData+36]":"=r"(samplesIn[readBuffNo][ADAT_RX_INDEX + 7])); #endif -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX == 1) || (ADAT_RX == 1) /* Request digital data (with prefill) */ outuint(c_dig_rx, 0); #endif @@ -679,7 +448,7 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out outuint(c_spd_out, sample); /* Forward sample to S/PDIF Tx thread */ #endif -#if (NUM_PDM_MICS > 0) +#if (XUA_NUM_PDM_MICS > 0) if ((AUD_TO_MICS_RATIO - 1) == audioToMicsRatioCounter) { /* Get samples from PDM->PCM converter */ @@ -687,7 +456,7 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out master { #pragma loop unroll - for(int i = PDM_MIC_INDEX; i < (NUM_PDM_MICS + PDM_MIC_INDEX); i++) + for(int i = PDM_MIC_INDEX; i < (XUA_NUM_PDM_MICS + PDM_MIC_INDEX); i++) { c_pdm_pcm :> samplesIn[readBuffNo][i]; } @@ -701,6 +470,8 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out #endif } + frameCount++; + #if (I2S_CHANS_ADC != 0) index = 0; /* Channels 0, 2, 4.. on each line */ @@ -711,7 +482,7 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out unsigned sample; asm volatile("in %0, res[%1]" : "=r"(sample) : "r"(p_i2s_adc[index++])); sample = bitrev(sample); - int chanIndex = ((frameCount-1)&(I2S_CHANS_PER_FRAME-1))+i; // channels 1, 3, 5.. on each line. + int chanIndex = ((frameCount-2)&(I2S_CHANS_PER_FRAME-1))+i; // channels 1, 3, 5.. on each line. #if (AUD_TO_USB_RATIO > 1 && !I2S_DOWNSAMPLE_MONO_IN) if ((AUD_TO_USB_RATIO - 1) == audioToUsbRatioCounter) { @@ -737,13 +508,8 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out } #endif -#if I2S_MODE_TDM - if(frameCount == (I2S_CHANS_PER_FRAME-2)) - p_lrclk <: 0x80000000; - else - p_lrclk <: 0x00000000; -#else - p_lrclk <: 0x7FFFFFFF; +#if (I2S_CHANS_ADC != 0 || I2S_CHANS_DAC != 0) + syncError += HandleSampleClock(frameCount, p_lrclk); #endif index = 0; @@ -751,7 +517,7 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out #if (I2S_CHANS_DAC != 0) /* Output "odd" channel to DAC (i.e. right) */ #pragma loop unroll - for(int i = 1; i < I2S_CHANS_DAC; i+=I2S_CHANS_PER_FRAME) + for(int i = 0; i < I2S_CHANS_DAC; i+=I2S_CHANS_PER_FRAME) { #if (AUD_TO_USB_RATIO > 1) if (audioToUsbRatioCounter == 0) @@ -775,12 +541,20 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out #if (DSD_CHANS_DAC != 0) && (NUM_USB_CHAN_OUT > 0) if(DoDsdDopCheck(dsdMode, dsdCount, curSamFreq, samplesOut, dsdMarker) == 0) + { +#if (I2S_CHANS_ADC != 0) || (I2S_CHANS_DAC != 0) + // Set clocks low + p_lrclk <: 0; + p_bclk <: 0; +#endif + p_dsd_clk <: 0; return 0; + } #endif #if I2S_MODE_TDM /* Increase frameCount by 2 since we have output two channels (per data line) */ - frameCount+=2; + frameCount+=1; if(frameCount == I2S_CHANS_PER_FRAME) #endif { @@ -814,395 +588,6 @@ unsigned static deliver_master(chanend ?c_out, chanend ?c_spd_out #pragma xta endpoint "deliver_return" return 0; } -#endif - - -#if (CODEC_MASTER == 1) - -/* I2S delivery thread */ -#pragma unsafe arrays -unsigned static deliver_slave(chanend ?c_out, chanend ?c_spd_out -#ifdef ADAT_TX - , chanend c_adat_out - , unsigned adatSmuxMode -#endif - , unsigned divide, unsigned curSamFreq -#if(defined(SPDIF_RX) || defined(ADAT_RX)) - , chanend c_dig_rx -#endif -#if (NUM_PDM_MICS > 0) - , chanend c_pdm_pcm -#endif -) -{ - /* Since DAC and ADC buffered ports off by one sample we buffer previous ADC frame */ - unsigned readBuffNo = 0; - unsigned index; - -#ifdef RAMP_CHECK - unsigned prev=0; - int started = 0; -#endif - - int firstIteration = 1; - unsigned underflowWord = 0; - unsigned frameCount = 0; -#ifdef ADAT_TX - adatCounter = 0; -#endif - - unsigned audioToUsbRatioCounter = 0; -#if (NUM_PDM_MICS > 0) - unsigned audioToMicsRatioCounter = 0; -#endif - -#if (AUD_TO_USB_RATIO > 1) - union i2sInDs3 - { - long long doubleWordAlignmentEnsured; - int32_t delayLine[I2S_DOWNSAMPLE_CHANS_IN][SRC_FF3V_FIR_NUM_PHASES][SRC_FF3V_FIR_TAPS_PER_PHASE]; - } i2sInDs3; - memset(&i2sInDs3.delayLine, 0, sizeof i2sInDs3.delayLine); - int64_t i2sInDs3Sum[I2S_DOWNSAMPLE_CHANS_IN]; - - union i2sOutUs3 - { - long long doubleWordAlignmentEnsured; - int32_t delayLine[I2S_CHANS_DAC][SRC_FF3V_FIR_TAPS_PER_PHASE]; - } i2sOutUs3; - memset(&i2sOutUs3.delayLine, 0, sizeof i2sOutUs3.delayLine); -#endif /* (AUD_TO_USB_RATIO > 1) */ - - -#if ((DEBUG_MIC_ARRAY == 1) && (NUM_PDM_MICS > 0)) - /* Get initial samples from PDM->PCM converter to avoid stalling the decimators */ - c_pdm_pcm <: 1; - master - { -#pragma loop unroll - for(int i = PDM_MIC_INDEX; i < (NUM_PDM_MICS + PDM_MIC_INDEX); i++) - { - c_pdm_pcm :> samplesIn[readBuffNo][i]; - } - } -#endif // ((DEBUG_MIC_ARRAY == 1) && (NUM_PDM_MICS > 0)) - - UserBufferManagementInit(); - - unsigned command = DoSampleTransfer(c_out, readBuffNo, underflowWord); - - // Reinitialise user state before entering the main loop - UserBufferManagementInit(); - -#ifdef ADAT_TX - unsafe{ - //TransferAdatTxSamples(c_adat_out, samplesOut, adatSmuxMode, 0); - volatile unsigned * unsafe samplePtr = &samplesOut[ADAT_TX_INDEX]; - outuint(c_adat_out, (unsigned) samplePtr); - } -#endif - if(command) - { - return command; - } - - /* Main Audio I/O loop */ - while (1) - { - /* In CODEC master mode, the I/O loop assumes L/RCLK = 32bit clocks. - * Check this every iteration and resync if we get a bclk glitch. - */ - unsigned lrval; - unsigned syncError = 0; - - InitPorts_slave(divide); - - while (!syncError) - { -#if (I2S_CHANS_ADC != 0) -#if (AUD_TO_USB_RATIO > 1) - if (0 == audioToUsbRatioCounter) - { - memset(&i2sInDs3Sum, 0, sizeof i2sInDs3Sum); - } -#endif /* (AUD_TO_USB_RATIO > 1) */ - /* Input previous L sample into L in buffer */ - index = 0; - /* First input (i.e. frameCount == 0) we read last ADC channel of previous frame.. */ - unsigned buffIndex = (frameCount > 1) ? !readBuffNo : readBuffNo; - - - #pragma loop unroll - /* First time around we get channel 7 of TDM8 */ - for(int i = 0; i < I2S_CHANS_ADC; i+=I2S_CHANS_PER_FRAME) - { - // p_i2s_adc[index++] :> sample; - // Manual IN instruction since compiler generates an extra setc per IN (bug #15256) - unsigned sample; - asm volatile("in %0, res[%1]" : "=r"(sample) : "r"(p_i2s_adc[index++])); - - sample = bitrev(sample); - int chanIndex = ((frameCount-2)&(I2S_CHANS_PER_FRAME-1))+i; // channels 0, 2, 4.. on each line. -#if (AUD_TO_USB_RATIO > 1) - if ((AUD_TO_USB_RATIO - 1) == audioToUsbRatioCounter) - { - samplesIn[buffIndex][chanIndex] = - src_ds3_voice_add_final_sample( - i2sInDs3Sum[chanIndex], - i2sInDs3.delayLine[chanIndex][audioToUsbRatioCounter], - src_ff3v_fir_coefs[audioToUsbRatioCounter], - sample); - } - else - { - i2sInDs3Sum[chanIndex] = - src_ds3_voice_add_sample( - i2sInDs3Sum[chanIndex], - i2sInDs3.delayLine[chanIndex][audioToUsbRatioCounter], - src_ff3v_fir_coefs[audioToUsbRatioCounter], - sample); - } -#else - samplesIn[buffIndex][chanIndex] = sample; -#endif /* (AUD_TO_USB_RATIO > 1) */ - } -#endif //(I2S_CHANS_ADC != 0) - - /* LR Clock sync check */ - p_lrclk :> lrval; - - if(I2S_MODE_TDM) - { - /* Only check for the rising edge of frame sync being in the right place because falling edge timing not specified */ - if (frameCount == (I2S_CHANS_PER_FRAME-1)) - { - lrval &= 0xc0000000; // Mask off last two (MSB) frame clock bits which are the most recently sampled - syncError += (lrval != 0x80000000); // We need MSB = 1 and MSB-1 = 0 to signify rising edge - } - } - else - { - syncError += (lrval != 0x80000000); - } - -#pragma xta endpoint "i2s_output_l" - -#if (I2S_CHANS_DAC != 0) && (NUM_USB_CHAN_OUT != 0) - index = 0; -#pragma loop unroll - /* Output "even" channel to DAC (i.e. left) */ - for(int i = 0; i < I2S_CHANS_DAC; i+=I2S_CHANS_PER_FRAME) - { -#if (AUD_TO_USB_RATIO > 1) - if (0 == audioToUsbRatioCounter) - { - samplesOut[frameCount+i] = src_us3_voice_input_sample(i2sOutUs3.delayLine[i], - src_ff3v_fir_coefs[2], - samplesOut[frameCount+i]); - } - else /* audioToUsbRatioCounter == 1 or 2 */ - { - samplesOut[frameCount+i] = src_us3_voice_get_next_sample(i2sOutUs3.delayLine[i], - src_ff3v_fir_coefs[2-audioToUsbRatioCounter]); - } -#endif /* (AUD_TO_USB_RATIO > 1) */ - p_i2s_dac[index++] <: bitrev(samplesOut[frameCount +i]); - } -#endif // (I2S_CHANS_DAC != 0) && (NUM_USB_CHAN_OUT != 0) - -#ifdef ADAT_TX - TransferAdatTxSamples(c_adat_out, samplesOut, adatSmuxMode, 1); -#endif - - if(frameCount == 0) - { - -#if defined(SPDIF_RX) || defined(ADAT_RX) - /* Sync with clockgen */ - inuint(c_dig_rx); - - /* Note, digi-data we just store in samplesIn[readBuffNo] - we only double buffer the I2S input data */ -#endif -#ifdef SPDIF_RX - asm("ldw %0, dp[g_digData]" :"=r"(samplesIn[readBuffNo][SPDIF_RX_INDEX + 0])); - asm("ldw %0, dp[g_digData+4]":"=r"(samplesIn[readBuffNo][SPDIF_RX_INDEX + 1])); -#endif -#ifdef ADAT_RX - asm("ldw %0, dp[g_digData+8]" :"=r"(samplesIn[readBuffNo][ADAT_RX_INDEX])); - asm("ldw %0, dp[g_digData+12]":"=r"(samplesIn[readBuffNo][ADAT_RX_INDEX + 1])); - asm("ldw %0, dp[g_digData+16]":"=r"(samplesIn[readBuffNo][ADAT_RX_INDEX + 2])); - asm("ldw %0, dp[g_digData+20]":"=r"(samplesIn[readBuffNo][ADAT_RX_INDEX + 3])); - asm("ldw %0, dp[g_digData+24]":"=r"(samplesIn[readBuffNo][ADAT_RX_INDEX + 4])); - asm("ldw %0, dp[g_digData+28]":"=r"(samplesIn[readBuffNo][ADAT_RX_INDEX + 5])); - asm("ldw %0, dp[g_digData+32]":"=r"(samplesIn[readBuffNo][ADAT_RX_INDEX + 6])); - asm("ldw %0, dp[g_digData+36]":"=r"(samplesIn[readBuffNo][ADAT_RX_INDEX + 7])); -#endif - -#if defined(SPDIF_RX) || defined(ADAT_RX) - /* Request digital data (with prefill) */ - outuint(c_dig_rx, 0); -#endif -#if ((XUA_SPDIF_TX_EN) && (NUM_USB_CHAN_OUT > 0)) - outuint(c_spd_out, samplesOut[SPDIF_TX_INDEX]); /* Forward sample to S/PDIF Tx thread */ - unsigned sample = samplesOut[SPDIF_TX_INDEX + 1]; - outuint(c_spd_out, sample); /* Forward sample to S/PDIF Tx thread */ -#endif - -#if (NUM_PDM_MICS > 0) - if ((AUD_TO_MICS_RATIO - 1) == audioToMicsRatioCounter) - { - /* Get samples from PDM->PCM converter */ - c_pdm_pcm <: 1; - master - { -#pragma loop unroll - for(int i = PDM_MIC_INDEX; i < (NUM_PDM_MICS + PDM_MIC_INDEX); i++) - { - c_pdm_pcm :> samplesIn[readBuffNo][i]; - } - } - audioToMicsRatioCounter = 0; - } - else - { - ++audioToMicsRatioCounter; - } -#endif - } - -#if (I2S_CHANS_ADC != 0) - index = 0; - /* Channels 0, 2, 4.. on each line */ -#pragma loop unroll - for(int i = 0; i < I2S_CHANS_ADC; i += I2S_CHANS_PER_FRAME) - { - /* Manual IN instruction since compiler generates an extra setc per IN (bug #15256) */ - unsigned sample; - asm volatile("in %0, res[%1]" : "=r"(sample) : "r"(p_i2s_adc[index++])); - sample = bitrev(sample); - int chanIndex = ((frameCount-1)&(I2S_CHANS_PER_FRAME-1))+i; // channels 1, 3, 5.. on each line. -#if (AUD_TO_USB_RATIO > 1 && !I2S_DOWNSAMPLE_MONO_IN) - if ((AUD_TO_USB_RATIO - 1) == audioToUsbRatioCounter) - { - samplesIn[buffIndex][chanIndex] = - src_ds3_voice_add_final_sample( - i2sInDs3Sum[chanIndex], - i2sInDs3.delayLine[chanIndex][audioToUsbRatioCounter], - src_ff3v_fir_coefs[audioToUsbRatioCounter], - sample); - } - else - { - i2sInDs3Sum[chanIndex] = - src_ds3_voice_add_sample( - i2sInDs3Sum[chanIndex], - i2sInDs3.delayLine[chanIndex][audioToUsbRatioCounter], - src_ff3v_fir_coefs[audioToUsbRatioCounter], - sample); - } -#else - samplesIn[buffIndex][chanIndex] = sample; -#endif /* (AUD_TO_USB_RATIO > 1) && !I2S_DOWNSAMPLE_MONO_IN */ - } -#endif //(I2S_CHANS_ADC != 0) - - /* LR Clock sync check */ - p_lrclk :> lrval; - - if(I2S_MODE_TDM) - { - /* Do nothing */ - // We do not check this part of the frame because TDM frame sync falling egde timing - // is not defined. We only care about rising edge which is checked in first half of frame - } - else - { - syncError += (lrval != 0x7fffffff); - } - - index = 0; -#pragma xta endpoint "i2s_output_r" -#if (I2S_CHANS_DAC != 0) && (NUM_USB_CHAN_OUT != 0) - /* Output "odd" channel to DAC (i.e. right) */ -#pragma loop unroll - for(int i = 1; i < I2S_CHANS_DAC; i+=I2S_CHANS_PER_FRAME) - { -#if (AUD_TO_USB_RATIO > 1) - if (audioToUsbRatioCounter == 0) - { - samplesOut[frameCount+i] = src_us3_voice_input_sample(i2sOutUs3.delayLine[i], - src_ff3v_fir_coefs[2], - samplesOut[frameCount+i]); - } - else - { /* audioToUsbRatioCounter is 1 or 2 */ - samplesOut[frameCount+i] = src_us3_voice_get_next_sample(i2sOutUs3.delayLine[i], - src_ff3v_fir_coefs[2-audioToUsbRatioCounter]); - } -#endif /* (AUD_TO_USB_RATIO > 1) */ - p_i2s_dac[index++] <: bitrev(samplesOut[frameCount + i]); - } -#endif // (I2S_CHANS_DAC != 0) && (NUM_USB_CHAN_OUT != 0) - - -#if I2S_MODE_TDM - /* Increase frameCount by 2 since we have output two channels (per data line) */ - frameCount+=2; - if(frameCount == I2S_CHANS_PER_FRAME) -#endif - { - if ((AUD_TO_USB_RATIO - 1) == audioToUsbRatioCounter) - { - /* Do samples transfer */ - /* The below looks a bit odd but forces the compiler to inline twice */ - unsigned command; - if(readBuffNo) - command = DoSampleTransfer(c_out, 1, underflowWord); - else - command = DoSampleTransfer(c_out, 0, underflowWord); - - if(command) - { - return command; - } - - /* Reset frame counter and flip the ADC buffer */ - audioToUsbRatioCounter = 0; - frameCount = 0; - readBuffNo = !readBuffNo; - } - else - { - ++audioToUsbRatioCounter; - } - } - } - } -#pragma xta endpoint "deliver_return" - return 0; -} -#endif //CODEC_MASTER - -#if (XUA_SPDIF_TX_EN) && (SPDIF_TX_TILE != AUDIO_IO_TILE) -void SpdifTxWrapper(chanend c_spdif_tx) -{ - unsigned portId; - //configure_clock_src(clk, p_mclk); - - // TODO could share clock block here.. - // NOTE, Assuming SPDIF tile == USB tile here.. - asm("ldw %0, dp[p_mclk_in2]":"=r"(portId)); - asm("setclk res[%0], %1"::"r"(clk_mst_spd), "r"(portId)); - configure_out_port_no_ready(p_spdif_tx, clk_mst_spd, 0); - set_clock_fall_delay(clk_mst_spd, 7); - start_clock(clk_mst_spd); - - while(1) - { - SpdifTransmit(p_spdif_tx, c_spdif_tx); - } -} -#endif #if XUA_DFU_EN [[distributable]] @@ -1226,7 +611,6 @@ static void dummy_deliver(chanend ?c_out, unsigned &command) { int ct; - while (1) { select @@ -1273,24 +657,26 @@ static void dummy_deliver(chanend ?c_out, unsigned &command) void DFUHandler(server interface i_dfu i, chanend ?c_user_cmd); #endif -void XUA_AudioHub(chanend ?c_mix_out -#if (XUA_SPDIF_TX_EN) && (SPDIF_TX_TILE != AUDIO_IO_TILE) +void XUA_AudioHub(chanend ?c_aud, clock ?clk_audio_mclk, clock ?clk_audio_bclk, + in port p_mclk_in, + buffered _XUA_CLK_DIR port:32 ?p_lrclk, + buffered _XUA_CLK_DIR port:32 ?p_bclk, + buffered out port:32 (&?p_i2s_dac)[I2S_WIRES_DAC], + buffered in port:32 (&?p_i2s_adc)[I2S_WIRES_ADC] +#if (XUA_SPDIF_TX_EN) //&& (SPDIF_TX_TILE != AUDIO_IO_TILE) , chanend c_spdif_out #endif -#if (defined(ADAT_RX) || defined(SPDIF_RX)) +#if ((ADAT_RX == 1) || (SPDIF_RX == 1)) , chanend c_dig_rx #endif #if (XUD_TILE != 0) && (AUDIO_IO_TILE == 0) && (XUA_DFU_EN == 1) , server interface i_dfu ?dfuInterface #endif -#if (NUM_PDM_MICS > 0) +#if (XUA_NUM_PDM_MICS > 0) , chanend c_pdm_in #endif ) { -#if (XUA_SPDIF_TX_EN) && (SPDIF_TX_TILE == AUDIO_IO_TILE) - chan c_spdif_out; -#endif #ifdef ADAT_TX chan c_adat_out; unsigned adatSmuxMode = 0; @@ -1307,10 +693,7 @@ void XUA_AudioHub(chanend ?c_mix_out /* Clock master clock-block from master-clock port */ /* Note, marked unsafe since other cores may be using this mclk port */ - unsafe - { - configure_clock_src(clk_audio_mclk, (port) p_mclk_in); - } + configure_clock_src(clk_audio_mclk, p_mclk_in); start_clock(clk_audio_mclk); @@ -1322,26 +705,17 @@ void XUA_AudioHub(chanend ?c_mix_out EnableBufferedPort(p_dsd_dac[i], 32); } #endif + #ifdef ADAT_TX /* Share SPDIF clk blk */ - unsafe - { - configure_clock_src(clk_mst_spd, (port)p_mclk_in); - } + configure_clock_src(clk_mst_spd, p_mclk_in); configure_out_port_no_ready(p_adat_tx, clk_mst_spd, 0); set_clock_fall_delay(clk_mst_spd, 7); #if (XUA_SPDIF_TX_EN == 0) start_clock(clk_mst_spd); #endif #endif - /* Configure ADAT/SPDIF tx ports */ -#if (XUA_SPDIF_TX_EN) && (SPDIF_TX_TILE == AUDIO_IO_TILE) - unsafe - { - SpdifTransmitPortConfig(p_spdif_tx, clk_mst_spd, (port)p_mclk_in); - } -#endif - + /* Perform required CODEC/ADC/DAC initialisation */ AudioHwInit(); @@ -1475,8 +849,8 @@ void XUA_AudioHub(chanend ?c_mix_out } #endif /* Handshake back */ -#ifndef NO_USB - outct(c_mix_out, XS1_CT_END); +#if (XUA_USB_EN) + outct(c_aud, XS1_CT_END); #endif } } @@ -1485,13 +859,6 @@ void XUA_AudioHub(chanend ?c_mix_out par { -#if (XUA_SPDIF_TX_EN) && (SPDIF_TX_TILE == AUDIO_IO_TILE) - { - set_thread_fast_mode_on(); - SpdifTransmit(p_spdif_tx, c_spdif_out); - } -#endif - #ifdef ADAT_TX { set_thread_fast_mode_on(); @@ -1501,11 +868,12 @@ void XUA_AudioHub(chanend ?c_mix_out { #if (XUA_SPDIF_TX_EN) /* Communicate master clock and sample freq to S/PDIF thread */ + outct(c_spdif_out, XS1_CT_END); outuint(c_spdif_out, curSamFreq); outuint(c_spdif_out, mClk); #endif -#if NUM_PDM_MICS > 0 +#if (XUA_NUM_PDM_MICS > 0) /* Send decimation factor to PDM task(s) */ c_pdm_in <: curSamFreq / AUD_TO_MICS_RATIO; #endif @@ -1523,11 +891,8 @@ void XUA_AudioHub(chanend ?c_mix_out outuint(c_adat_out, adatMultiple); outuint(c_adat_out, adatSmuxMode); #endif -#if CODEC_MASTER - command = deliver_slave(c_mix_out -#else - command = deliver_master(c_mix_out -#endif + + command = AudioHub_MainLoop(c_aud #if (XUA_SPDIF_TX_EN) , c_spdif_out #else @@ -1538,18 +903,18 @@ void XUA_AudioHub(chanend ?c_mix_out , adatSmuxMode #endif , divide, curSamFreq -#if defined (ADAT_RX) || defined (SPDIF_RX) +#if (ADAT_RX == 1) || (SPDIF_RX == 1) , c_dig_rx #endif -#if (NUM_PDM_MICS > 0) +#if (XUA_NUM_PDM_MICS > 0) , c_pdm_in #endif - ); + , p_lrclk, p_bclk, p_i2s_dac, p_i2s_adc); -#ifndef NO_USB +#if (XUA_USB_EN) if(command == SET_SAMPLE_FREQ) { - curSamFreq = inuint(c_mix_out) * AUD_TO_USB_RATIO; + curSamFreq = inuint(c_aud) * AUD_TO_USB_RATIO; } else if(command == SET_STREAM_FORMAT_OUT) { @@ -1557,17 +922,17 @@ void XUA_AudioHub(chanend ?c_mix_out * DOP = 1 * Native = 2 */ - dsdMode = inuint(c_mix_out); - curSamRes_DAC = inuint(c_mix_out); + dsdMode = inuint(c_aud); + curSamRes_DAC = inuint(c_aud); } #if (XUA_DFU_EN == 1) /* Currently no more audio will happen after this point */ if ((curSamFreq / AUD_TO_USB_RATIO) == AUDIO_STOP_FOR_DFU) { - outct(c_mix_out, XS1_CT_END); + outct(c_aud, XS1_CT_END); - outuint(c_mix_out, 0); + outuint(c_aud, 0); while (1) { @@ -1576,30 +941,25 @@ void XUA_AudioHub(chanend ?c_mix_out par { DFUHandler(dfuInterface, null); - dummy_deliver(c_mix_out, command); + dummy_deliver(c_aud, command); } #else - dummy_deliver(c_mix_out, command); + dummy_deliver(c_aud, command); #endif - curSamFreq = inuint(c_mix_out); + curSamFreq = inuint(c_aud); if (curSamFreq == AUDIO_START_FROM_DFU) { - outct(c_mix_out, XS1_CT_END); + outct(c_aud, XS1_CT_END); break; } } } #endif -#endif /* NO_USB */ +#endif /* XUA_USB_EN */ -#if (XUA_SPDIF_TX_EN) - /* Notify S/PDIF task of impending new freq... */ - outct(c_spdif_out, XS1_CT_END); -#endif - -#if NUM_PDM_MICS > 0 +#if XUA_NUM_PDM_MICS > 0 c_pdm_in <: 0; #endif diff --git a/lib_xua/src/core/buffer/decouple/decouple.xc b/lib_xua/src/core/buffer/decouple/decouple.xc index 4e631dfb..e503ab71 100644 --- a/lib_xua/src/core/buffer/decouple/decouple.xc +++ b/lib_xua/src/core/buffer/decouple/decouple.xc @@ -1,7 +1,8 @@ // Copyright (c) 2011-2018, XMOS Ltd, All rights reserved -#ifndef NO_USB -#include #include "xua.h" + +#if XUA_USB_EN +#include #include "xc_ptr.h" #include "interrupt.h" #include "xua_commands.h" @@ -1031,4 +1032,4 @@ void XUA_Buffer_Decouple(chanend c_mix_out #endif /* NUM_USB_CHAN_IN > 0 */ } } -#endif /* NO_USB */ +#endif /* XUA_USB_EN */ diff --git a/lib_xua/src/core/buffer/decouple/decouple_interrupt.c b/lib_xua/src/core/buffer/decouple/decouple_interrupt.c index c6d8ff80..e91351dc 100644 --- a/lib_xua/src/core/buffer/decouple/decouple_interrupt.c +++ b/lib_xua/src/core/buffer/decouple/decouple_interrupt.c @@ -1,5 +1,6 @@ // Copyright (c) 2015-2018, XMOS Ltd, All rights reserved -#ifndef NO_USB +#include "xua.h" +#if XUA_USB_EN #include "interrupt.h" register_interrupt_handler(handle_audio_request, 1, 200) diff --git a/lib_xua/src/core/buffer/decouple/get_adc_counts.c b/lib_xua/src/core/buffer/decouple/get_adc_counts.c index fb11d3ea..96680b43 100644 --- a/lib_xua/src/core/buffer/decouple/get_adc_counts.c +++ b/lib_xua/src/core/buffer/decouple/get_adc_counts.c @@ -1,5 +1,6 @@ // Copyright (c) 2011-2018, XMOS Ltd, All rights reserved -#ifndef NO_USB +#include "xua.h" +#if XUA_USB_EN #include "xud.h" extern XUD_BusSpeed_t g_curUsbSpeed; @@ -50,5 +51,5 @@ void GetADCCounts(unsigned samFreq, int *min, int *mid, int *max) } } -#endif /* NO_USB */ +#endif /* XUA_USB_EN */ diff --git a/lib_xua/src/core/buffer/ep/ep_buffer.xc b/lib_xua/src/core/buffer/ep/ep_buffer.xc index 2c4698c0..e510d37a 100644 --- a/lib_xua/src/core/buffer/ep/ep_buffer.xc +++ b/lib_xua/src/core/buffer/ep/ep_buffer.xc @@ -1,9 +1,9 @@ // Copyright (c) 2011-2018, XMOS Ltd, All rights reserved -#ifndef NO_USB +#include "xua.h" +#if XUA_USB_EN #include #include -#include "xua.h" #ifdef MIDI #include "usb_midi.h" @@ -24,7 +24,6 @@ unsigned char g_hidData[1] = {0}; #endif - void GetADCCounts(unsigned samFreq, int &min, int &mid, int &max); #define BUFFER_SIZE_OUT (1028 >> 2) #define BUFFER_SIZE_IN (1028 >> 2) @@ -114,7 +113,7 @@ void XUA_Buffer( chanend c_iap_ea_native_data, #endif #endif -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) chanend ?c_ep_int, chanend ?c_clk_int, #endif @@ -159,7 +158,7 @@ void XUA_Buffer( c_ea_data, #endif #endif -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) /* Audio Interrupt - only used for interrupts on external clock change */ c_ep_int, c_clk_int, @@ -217,7 +216,7 @@ void XUA_Buffer_Ep(register chanend c_aud_out, chanend c_iap_ea_native_data, #endif #endif -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) chanend ?c_ep_int, chanend ?c_clk_int, #endif @@ -257,7 +256,7 @@ void XUA_Buffer_Ep(register chanend c_aud_out, XUD_ep ep_iap_ea_native_in = XUD_InitEp(c_iap_ea_native_in); #endif #endif -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) XUD_ep ep_int = XUD_InitEp(c_ep_int); #endif @@ -384,7 +383,7 @@ void XUA_Buffer_Ep(register chanend c_aud_out, /* Wait for response from XUD and service relevant EP */ select { -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) /* Clocking thread wants to produce an interrupt... */ case inuint_byref(c_clk_int, u_tmp): chkct(c_clk_int, XS1_CT_END); @@ -1097,4 +1096,4 @@ void XUA_Buffer_Ep(register chanend c_aud_out, } } -#endif /* NO_USB */ +#endif /* XUA_USB_EN */ diff --git a/lib_xua/src/core/clocking/clockgen.xc b/lib_xua/src/core/clocking/clockgen.xc index 7fa08f28..7c5da305 100644 --- a/lib_xua/src/core/clocking/clockgen.xc +++ b/lib_xua/src/core/clocking/clockgen.xc @@ -7,8 +7,8 @@ #include "xua.h" #include "xua_commands.h" -#if defined(SPDIF_RX) -#include "SpdifReceive.h" +#if (SPDIF_RX) +#include "spdif.h" #endif #define LOCAL_CLOCK_INCREMENT 166667 @@ -38,7 +38,7 @@ static int clockInt[NUM_CLOCKS]; /* Interupt flag for static int clockId[NUM_CLOCKS]; -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) static int abs(int x) { if (x < 0) return -x; @@ -73,7 +73,7 @@ static void outInterrupt(chanend c_interruptControl, int value) void VendorClockValidity(int valid); #endif -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) static inline void setClockValidity(chanend c_interruptControl, int clkIndex, int valid, int currentClkMode) { if (clockValid[clkIndex] != valid) @@ -82,13 +82,13 @@ static inline void setClockValidity(chanend c_interruptControl, int clkIndex, in outInterrupt(c_interruptControl, clockId[clkIndex]); #ifdef CLOCK_VALIDITY_CALL -#ifdef ADAT_RX +#if ADAT_RX if (currentClkMode == CLOCK_ADAT && clkIndex == CLOCK_ADAT_INDEX) { VendorClockValidity(valid); } #endif -#ifdef SPDIF_RX +#if SPDIF_RX if (currentClkMode == CLOCK_SPDIF && clkIndex == CLOCK_SPDIF_INDEX) { VendorClockValidity(valid); @@ -215,11 +215,11 @@ void clockGen (streaming chanend ?c_spdif_rx, chanend ?c_adat_rx, out port p, ch unsigned levelTime; #endif -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) timer t_external; #endif -#ifdef SPDIF_RX +#if SPDIF_RX /* S/PDIF buffer state */ int spdifSamples[MAX_SPDIF_SAMPLES]; /* S/PDIF sample buffer */ int spdifWr = 0; /* Write index */ @@ -233,7 +233,7 @@ void clockGen (streaming chanend ?c_spdif_rx, chanend ?c_adat_rx, out port p, ch unsigned spdifLeft = 0; #endif -#ifdef ADAT_RX +#if ADAT_RX /* ADAT buffer state */ int adatSamples[MAX_ADAT_SAMPLES]; int adatWr = 0; @@ -255,7 +255,7 @@ void clockGen (streaming chanend ?c_spdif_rx, chanend ?c_adat_rx, out port p, ch } /* Init clock unit state */ -#ifdef SPDIF_RX +#if SPDIF_RX clockFreq[CLOCK_SPDIF_INDEX] = 0; clockValid[CLOCK_SPDIF_INDEX] = 0; clockInt[CLOCK_SPDIF_INDEX] = 0; @@ -265,13 +265,13 @@ void clockGen (streaming chanend ?c_spdif_rx, chanend ?c_adat_rx, out port p, ch clockId[CLOCK_INTERNAL_INDEX] = ID_CLKSRC_INT; clockValid[CLOCK_INTERNAL_INDEX] = 0; clockInt[CLOCK_INTERNAL_INDEX] = 0; -#ifdef ADAT_RX +#if ADAT_RX clockFreq[CLOCK_ADAT_INDEX] = 0; clockInt[CLOCK_ADAT_INDEX] = 0; clockValid[CLOCK_ADAT_INDEX] = 0; clockId[CLOCK_ADAT_INDEX] = ID_CLKSRC_ADAT; #endif -#ifdef SPDIF_RX +#if SPDIF_RX spdifCounters.receivedSamples = 0; spdifCounters.samples = 0; spdifCounters.savedSamples = 0; @@ -280,7 +280,7 @@ void clockGen (streaming chanend ?c_spdif_rx, chanend ?c_adat_rx, out port p, ch spdifCounters.samplesPerTick = 0; #endif -#ifdef ADAT_RX +#if ADAT_RX adatCounters.receivedSamples = 0; adatCounters.samples = 0; adatCounters.savedSamples = 0; @@ -300,7 +300,7 @@ void clockGen (streaming chanend ?c_spdif_rx, chanend ?c_adat_rx, out port p, ch levelTime+= LEVEL_UPDATE_RATE; #endif -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) /* Fill channel */ outuint(c_dig_rx, 1); #endif @@ -379,12 +379,12 @@ void clockGen (streaming chanend ?c_spdif_rx, chanend ?c_adat_rx, out port p, ch case CLOCK_INTERNAL: VendorClockValidity(1); break; -#ifdef ADAT_RX +#if ADAT_RX case CLOCK_ADAT: VendorClockValidity(clockValid[CLOCK_ADAT_INDEX]); break; #endif -#ifdef SPDIF_RX +#if SPDIF_RX case CLOCK_SPDIF: VendorClockValidity(clockValid[CLOCK_SPDIF_INDEX]); break; @@ -410,7 +410,7 @@ void clockGen (streaming chanend ?c_spdif_rx, chanend ?c_adat_rx, out port p, ch case SET_SMUX: smux = inuint(c_clk_ctl); -#ifdef ADAT_RX +#if ADAT_RX adatRd = 0; /* Reset adat FIFO */ adatWr = 0; adatSamps = 0; @@ -446,14 +446,14 @@ void clockGen (streaming chanend ?c_spdif_rx, chanend ?c_adat_rx, out port p, ch /* If we are in an external clock mode and this fire, then clock invalid */ -#ifdef SPDIF_RX +#if SPDIF_RX // if(clkMode == CLOCK_SPDIF) { /* We must have lost valid S/PDIF stream, reset counters, so we dont produce a double edge */ spdifCounters.receivedSamples = 0; } #endif -#ifdef ADAT_RX +#if ADAT_RX //if(clkMode == CLOCK_ADAT) { adatCounters.receivedSamples = 0; @@ -470,18 +470,18 @@ void clockGen (streaming chanend ?c_spdif_rx, chanend ?c_adat_rx, out port p, ch break; -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) case t_external when timerafter(timeNextClockDetection) :> void: timeNextClockDetection += (LOCAL_CLOCK_INCREMENT); -#ifdef SPDIF_RX +#if SPDIF_RX tmp = spdifCounters.samplesPerTick; /* Returns 1 if valid clock found */ tmp = validSamples(spdifCounters, CLOCK_SPDIF_INDEX); setClockValidity(c_clk_int, CLOCK_SPDIF_INDEX, tmp, clkMode); #endif -#ifdef ADAT_RX +#if ADAT_RX tmp = validSamples(adatCounters, CLOCK_ADAT_INDEX); setClockValidity(c_clk_int, CLOCK_ADAT_INDEX, tmp, clkMode); #endif @@ -490,7 +490,7 @@ void clockGen (streaming chanend ?c_spdif_rx, chanend ?c_adat_rx, out port p, ch #endif -#ifdef SPDIF_RX +#if SPDIF_RX /* Receive sample from S/PDIF RX thread (steaming chan) */ case c_spdif_rx :> tmp: @@ -506,14 +506,14 @@ void clockGen (streaming chanend ?c_spdif_rx, chanend ?c_adat_rx, out port p, ch switch(tmp2) { /* LEFT */ - case FRAME_X: - case FRAME_Z: + case SPDIF_FRAME_X: + case SPDIF_FRAME_Z: spdifLeft = tmp << 4; break; /* RIGHT */ - case FRAME_Y: + case SPDIF_FRAME_Y: /* Only store sample if not in overflow and stream is reasonably valid */ if(!spdifOverflow && clockValid[CLOCK_SPDIF_INDEX]) @@ -577,7 +577,7 @@ void clockGen (streaming chanend ?c_spdif_rx, chanend ?c_adat_rx, out port p, ch } break; #endif -#ifdef ADAT_RX +#if ADAT_RX /* receive sample from ADAT rx thread (streaming channel with CT_END) */ case inuint_byref(c_adat_rx, tmp): /* record time of sample */ @@ -693,10 +693,10 @@ void clockGen (streaming chanend ?c_spdif_rx, chanend ?c_adat_rx, out port p, ch #endif -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) /* Mixer requests data */ case inuint_byref(c_dig_rx, tmp): -#ifdef SPDIF_RX +#if SPDIF_RX if(spdifUnderflow) { /* S/PDIF underflowing, send out zero samples */ @@ -712,8 +712,6 @@ void clockGen (streaming chanend ?c_spdif_rx, chanend ?c_adat_rx, out port p, ch spdifRd += 2; spdifRd &= (MAX_SPDIF_SAMPLES - 1); - - g_digData[0] = tmp; g_digData[1] = tmp2; @@ -736,7 +734,7 @@ void clockGen (streaming chanend ?c_spdif_rx, chanend ?c_adat_rx, out port p, ch } #endif -#ifdef ADAT_RX +#if ADAT_RX if (adatUnderflow) { /* ADAT underflowing, send out zero samples */ diff --git a/lib_xua/src/core/endpoint0/chanstringgen.py b/lib_xua/src/core/endpoint0/chanstringgen.py index f6716bfc..c5343a03 100644 --- a/lib_xua/src/core/endpoint0/chanstringgen.py +++ b/lib_xua/src/core/endpoint0/chanstringgen.py @@ -9,7 +9,7 @@ def genstrings(outputChanCount, chanString, portString, structureString, adc_dac #if ({i} < I2S_CHANS_{adcdac}+1)\n\ \"Analogue {i}\"\n\ #endif\n\ - #if (({i} < SPDIF_{p}_INDEX+2+1) && ({i} > SPDIF_{p}_INDEX)) && defined(SPDIF_{p})\n\ + #if (({i} < SPDIF_{p}_INDEX+2+1) && ({i} > SPDIF_{p}_INDEX)) && (XUA_SPDIF_{p}_EN)\n\ #if ({i} < I2S_CHANS_{adcdac}+1)\n\ \"/\"\n\ #endif\n\ @@ -20,7 +20,7 @@ def genstrings(outputChanCount, chanString, portString, structureString, adc_dac #endif\n\ #endif\n\ #if (({i} < ADAT_{p}_INDEX+8+1) && ({i} > ADAT_{p}_INDEX)) && defined(ADAT_{p})\n\ - #if (({i} < SPDIF_{p}_INDEX+2+1) && ({i} > SPDIF_{p}_INDEX)) && defined(SPDIF_{p}) || ({i} < I2S_CHANS_{adcdac}+1)\n\ + #if (({i} < SPDIF_{p}_INDEX+2+1) && ({i} > SPDIF_{p}_INDEX)) && (XUA_SPDIF_{p}_EN) || ({i} < I2S_CHANS_{adcdac}+1)\n\ \"/\"\n\ #endif\n\ #if({i} - ADAT_TX_INDEX == 1)\n\ diff --git a/lib_xua/src/core/endpoint0/chanstrings.h b/lib_xua/src/core/endpoint0/chanstrings.h index 805af129..ff52c94b 100644 --- a/lib_xua/src/core/endpoint0/chanstrings.h +++ b/lib_xua/src/core/endpoint0/chanstrings.h @@ -11,7 +11,7 @@ #if (1 < I2S_CHANS_DAC+1) "Analogue 1" #endif - #if ((1 < SPDIF_TX_INDEX+2+1) && (1 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((1 < SPDIF_TX_INDEX+2+1) && (1 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (1 < I2S_CHANS_DAC+1) "/" #endif @@ -22,7 +22,7 @@ #endif #endif #if ((1 < ADAT_TX_INDEX+8+1) && (1 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((1 < SPDIF_TX_INDEX+2+1) && (1 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (1 < I2S_CHANS_DAC+1) + #if ((1 < SPDIF_TX_INDEX+2+1) && (1 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (1 < I2S_CHANS_DAC+1) "/" #endif #if(1 - ADAT_TX_INDEX == 1) @@ -51,7 +51,7 @@ #if (2 < I2S_CHANS_DAC+1) "Analogue 2" #endif - #if ((2 < SPDIF_TX_INDEX+2+1) && (2 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((2 < SPDIF_TX_INDEX+2+1) && (2 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (2 < I2S_CHANS_DAC+1) "/" #endif @@ -62,7 +62,7 @@ #endif #endif #if ((2 < ADAT_TX_INDEX+8+1) && (2 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((2 < SPDIF_TX_INDEX+2+1) && (2 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (2 < I2S_CHANS_DAC+1) + #if ((2 < SPDIF_TX_INDEX+2+1) && (2 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (2 < I2S_CHANS_DAC+1) "/" #endif #if(2 - ADAT_TX_INDEX == 1) @@ -91,7 +91,7 @@ #if (3 < I2S_CHANS_DAC+1) "Analogue 3" #endif - #if ((3 < SPDIF_TX_INDEX+2+1) && (3 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((3 < SPDIF_TX_INDEX+2+1) && (3 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (3 < I2S_CHANS_DAC+1) "/" #endif @@ -102,7 +102,7 @@ #endif #endif #if ((3 < ADAT_TX_INDEX+8+1) && (3 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((3 < SPDIF_TX_INDEX+2+1) && (3 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (3 < I2S_CHANS_DAC+1) + #if ((3 < SPDIF_TX_INDEX+2+1) && (3 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (3 < I2S_CHANS_DAC+1) "/" #endif #if(3 - ADAT_TX_INDEX == 1) @@ -131,7 +131,7 @@ #if (4 < I2S_CHANS_DAC+1) "Analogue 4" #endif - #if ((4 < SPDIF_TX_INDEX+2+1) && (4 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((4 < SPDIF_TX_INDEX+2+1) && (4 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (4 < I2S_CHANS_DAC+1) "/" #endif @@ -142,7 +142,7 @@ #endif #endif #if ((4 < ADAT_TX_INDEX+8+1) && (4 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((4 < SPDIF_TX_INDEX+2+1) && (4 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (4 < I2S_CHANS_DAC+1) + #if ((4 < SPDIF_TX_INDEX+2+1) && (4 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (4 < I2S_CHANS_DAC+1) "/" #endif #if(4 - ADAT_TX_INDEX == 1) @@ -171,7 +171,7 @@ #if (5 < I2S_CHANS_DAC+1) "Analogue 5" #endif - #if ((5 < SPDIF_TX_INDEX+2+1) && (5 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((5 < SPDIF_TX_INDEX+2+1) && (5 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (5 < I2S_CHANS_DAC+1) "/" #endif @@ -182,7 +182,7 @@ #endif #endif #if ((5 < ADAT_TX_INDEX+8+1) && (5 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((5 < SPDIF_TX_INDEX+2+1) && (5 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (5 < I2S_CHANS_DAC+1) + #if ((5 < SPDIF_TX_INDEX+2+1) && (5 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (5 < I2S_CHANS_DAC+1) "/" #endif #if(5 - ADAT_TX_INDEX == 1) @@ -211,7 +211,7 @@ #if (6 < I2S_CHANS_DAC+1) "Analogue 6" #endif - #if ((6 < SPDIF_TX_INDEX+2+1) && (6 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((6 < SPDIF_TX_INDEX+2+1) && (6 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (6 < I2S_CHANS_DAC+1) "/" #endif @@ -222,7 +222,7 @@ #endif #endif #if ((6 < ADAT_TX_INDEX+8+1) && (6 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((6 < SPDIF_TX_INDEX+2+1) && (6 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (6 < I2S_CHANS_DAC+1) + #if ((6 < SPDIF_TX_INDEX+2+1) && (6 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (6 < I2S_CHANS_DAC+1) "/" #endif #if(6 - ADAT_TX_INDEX == 1) @@ -251,7 +251,7 @@ #if (7 < I2S_CHANS_DAC+1) "Analogue 7" #endif - #if ((7 < SPDIF_TX_INDEX+2+1) && (7 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((7 < SPDIF_TX_INDEX+2+1) && (7 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (7 < I2S_CHANS_DAC+1) "/" #endif @@ -262,7 +262,7 @@ #endif #endif #if ((7 < ADAT_TX_INDEX+8+1) && (7 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((7 < SPDIF_TX_INDEX+2+1) && (7 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (7 < I2S_CHANS_DAC+1) + #if ((7 < SPDIF_TX_INDEX+2+1) && (7 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (7 < I2S_CHANS_DAC+1) "/" #endif #if(7 - ADAT_TX_INDEX == 1) @@ -291,7 +291,7 @@ #if (8 < I2S_CHANS_DAC+1) "Analogue 8" #endif - #if ((8 < SPDIF_TX_INDEX+2+1) && (8 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((8 < SPDIF_TX_INDEX+2+1) && (8 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (8 < I2S_CHANS_DAC+1) "/" #endif @@ -302,7 +302,7 @@ #endif #endif #if ((8 < ADAT_TX_INDEX+8+1) && (8 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((8 < SPDIF_TX_INDEX+2+1) && (8 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (8 < I2S_CHANS_DAC+1) + #if ((8 < SPDIF_TX_INDEX+2+1) && (8 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (8 < I2S_CHANS_DAC+1) "/" #endif #if(8 - ADAT_TX_INDEX == 1) @@ -331,7 +331,7 @@ #if (9 < I2S_CHANS_DAC+1) "Analogue 9" #endif - #if ((9 < SPDIF_TX_INDEX+2+1) && (9 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((9 < SPDIF_TX_INDEX+2+1) && (9 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (9 < I2S_CHANS_DAC+1) "/" #endif @@ -342,7 +342,7 @@ #endif #endif #if ((9 < ADAT_TX_INDEX+8+1) && (9 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((9 < SPDIF_TX_INDEX+2+1) && (9 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (9 < I2S_CHANS_DAC+1) + #if ((9 < SPDIF_TX_INDEX+2+1) && (9 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (9 < I2S_CHANS_DAC+1) "/" #endif #if(9 - ADAT_TX_INDEX == 1) @@ -371,7 +371,7 @@ #if (10 < I2S_CHANS_DAC+1) "Analogue 10" #endif - #if ((10 < SPDIF_TX_INDEX+2+1) && (10 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((10 < SPDIF_TX_INDEX+2+1) && (10 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (10 < I2S_CHANS_DAC+1) "/" #endif @@ -382,7 +382,7 @@ #endif #endif #if ((10 < ADAT_TX_INDEX+8+1) && (10 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((10 < SPDIF_TX_INDEX+2+1) && (10 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (10 < I2S_CHANS_DAC+1) + #if ((10 < SPDIF_TX_INDEX+2+1) && (10 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (10 < I2S_CHANS_DAC+1) "/" #endif #if(10 - ADAT_TX_INDEX == 1) @@ -411,7 +411,7 @@ #if (11 < I2S_CHANS_DAC+1) "Analogue 11" #endif - #if ((11 < SPDIF_TX_INDEX+2+1) && (11 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((11 < SPDIF_TX_INDEX+2+1) && (11 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (11 < I2S_CHANS_DAC+1) "/" #endif @@ -422,7 +422,7 @@ #endif #endif #if ((11 < ADAT_TX_INDEX+8+1) && (11 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((11 < SPDIF_TX_INDEX+2+1) && (11 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (11 < I2S_CHANS_DAC+1) + #if ((11 < SPDIF_TX_INDEX+2+1) && (11 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (11 < I2S_CHANS_DAC+1) "/" #endif #if(11 - ADAT_TX_INDEX == 1) @@ -451,7 +451,7 @@ #if (12 < I2S_CHANS_DAC+1) "Analogue 12" #endif - #if ((12 < SPDIF_TX_INDEX+2+1) && (12 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((12 < SPDIF_TX_INDEX+2+1) && (12 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (12 < I2S_CHANS_DAC+1) "/" #endif @@ -462,7 +462,7 @@ #endif #endif #if ((12 < ADAT_TX_INDEX+8+1) && (12 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((12 < SPDIF_TX_INDEX+2+1) && (12 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (12 < I2S_CHANS_DAC+1) + #if ((12 < SPDIF_TX_INDEX+2+1) && (12 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (12 < I2S_CHANS_DAC+1) "/" #endif #if(12 - ADAT_TX_INDEX == 1) @@ -491,7 +491,7 @@ #if (13 < I2S_CHANS_DAC+1) "Analogue 13" #endif - #if ((13 < SPDIF_TX_INDEX+2+1) && (13 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((13 < SPDIF_TX_INDEX+2+1) && (13 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (13 < I2S_CHANS_DAC+1) "/" #endif @@ -502,7 +502,7 @@ #endif #endif #if ((13 < ADAT_TX_INDEX+8+1) && (13 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((13 < SPDIF_TX_INDEX+2+1) && (13 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (13 < I2S_CHANS_DAC+1) + #if ((13 < SPDIF_TX_INDEX+2+1) && (13 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (13 < I2S_CHANS_DAC+1) "/" #endif #if(13 - ADAT_TX_INDEX == 1) @@ -531,7 +531,7 @@ #if (14 < I2S_CHANS_DAC+1) "Analogue 14" #endif - #if ((14 < SPDIF_TX_INDEX+2+1) && (14 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((14 < SPDIF_TX_INDEX+2+1) && (14 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (14 < I2S_CHANS_DAC+1) "/" #endif @@ -542,7 +542,7 @@ #endif #endif #if ((14 < ADAT_TX_INDEX+8+1) && (14 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((14 < SPDIF_TX_INDEX+2+1) && (14 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (14 < I2S_CHANS_DAC+1) + #if ((14 < SPDIF_TX_INDEX+2+1) && (14 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (14 < I2S_CHANS_DAC+1) "/" #endif #if(14 - ADAT_TX_INDEX == 1) @@ -571,7 +571,7 @@ #if (15 < I2S_CHANS_DAC+1) "Analogue 15" #endif - #if ((15 < SPDIF_TX_INDEX+2+1) && (15 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((15 < SPDIF_TX_INDEX+2+1) && (15 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (15 < I2S_CHANS_DAC+1) "/" #endif @@ -582,7 +582,7 @@ #endif #endif #if ((15 < ADAT_TX_INDEX+8+1) && (15 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((15 < SPDIF_TX_INDEX+2+1) && (15 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (15 < I2S_CHANS_DAC+1) + #if ((15 < SPDIF_TX_INDEX+2+1) && (15 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (15 < I2S_CHANS_DAC+1) "/" #endif #if(15 - ADAT_TX_INDEX == 1) @@ -611,7 +611,7 @@ #if (16 < I2S_CHANS_DAC+1) "Analogue 16" #endif - #if ((16 < SPDIF_TX_INDEX+2+1) && (16 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((16 < SPDIF_TX_INDEX+2+1) && (16 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (16 < I2S_CHANS_DAC+1) "/" #endif @@ -622,7 +622,7 @@ #endif #endif #if ((16 < ADAT_TX_INDEX+8+1) && (16 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((16 < SPDIF_TX_INDEX+2+1) && (16 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (16 < I2S_CHANS_DAC+1) + #if ((16 < SPDIF_TX_INDEX+2+1) && (16 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (16 < I2S_CHANS_DAC+1) "/" #endif #if(16 - ADAT_TX_INDEX == 1) @@ -651,7 +651,7 @@ #if (17 < I2S_CHANS_DAC+1) "Analogue 17" #endif - #if ((17 < SPDIF_TX_INDEX+2+1) && (17 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((17 < SPDIF_TX_INDEX+2+1) && (17 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (17 < I2S_CHANS_DAC+1) "/" #endif @@ -662,7 +662,7 @@ #endif #endif #if ((17 < ADAT_TX_INDEX+8+1) && (17 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((17 < SPDIF_TX_INDEX+2+1) && (17 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (17 < I2S_CHANS_DAC+1) + #if ((17 < SPDIF_TX_INDEX+2+1) && (17 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (17 < I2S_CHANS_DAC+1) "/" #endif #if(17 - ADAT_TX_INDEX == 1) @@ -691,7 +691,7 @@ #if (18 < I2S_CHANS_DAC+1) "Analogue 18" #endif - #if ((18 < SPDIF_TX_INDEX+2+1) && (18 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((18 < SPDIF_TX_INDEX+2+1) && (18 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (18 < I2S_CHANS_DAC+1) "/" #endif @@ -702,7 +702,7 @@ #endif #endif #if ((18 < ADAT_TX_INDEX+8+1) && (18 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((18 < SPDIF_TX_INDEX+2+1) && (18 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (18 < I2S_CHANS_DAC+1) + #if ((18 < SPDIF_TX_INDEX+2+1) && (18 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (18 < I2S_CHANS_DAC+1) "/" #endif #if(18 - ADAT_TX_INDEX == 1) @@ -731,7 +731,7 @@ #if (19 < I2S_CHANS_DAC+1) "Analogue 19" #endif - #if ((19 < SPDIF_TX_INDEX+2+1) && (19 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((19 < SPDIF_TX_INDEX+2+1) && (19 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (19 < I2S_CHANS_DAC+1) "/" #endif @@ -742,7 +742,7 @@ #endif #endif #if ((19 < ADAT_TX_INDEX+8+1) && (19 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((19 < SPDIF_TX_INDEX+2+1) && (19 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (19 < I2S_CHANS_DAC+1) + #if ((19 < SPDIF_TX_INDEX+2+1) && (19 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (19 < I2S_CHANS_DAC+1) "/" #endif #if(19 - ADAT_TX_INDEX == 1) @@ -771,7 +771,7 @@ #if (20 < I2S_CHANS_DAC+1) "Analogue 20" #endif - #if ((20 < SPDIF_TX_INDEX+2+1) && (20 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((20 < SPDIF_TX_INDEX+2+1) && (20 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (20 < I2S_CHANS_DAC+1) "/" #endif @@ -782,7 +782,7 @@ #endif #endif #if ((20 < ADAT_TX_INDEX+8+1) && (20 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((20 < SPDIF_TX_INDEX+2+1) && (20 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (20 < I2S_CHANS_DAC+1) + #if ((20 < SPDIF_TX_INDEX+2+1) && (20 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (20 < I2S_CHANS_DAC+1) "/" #endif #if(20 - ADAT_TX_INDEX == 1) @@ -811,7 +811,7 @@ #if (21 < I2S_CHANS_DAC+1) "Analogue 21" #endif - #if ((21 < SPDIF_TX_INDEX+2+1) && (21 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((21 < SPDIF_TX_INDEX+2+1) && (21 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (21 < I2S_CHANS_DAC+1) "/" #endif @@ -822,7 +822,7 @@ #endif #endif #if ((21 < ADAT_TX_INDEX+8+1) && (21 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((21 < SPDIF_TX_INDEX+2+1) && (21 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (21 < I2S_CHANS_DAC+1) + #if ((21 < SPDIF_TX_INDEX+2+1) && (21 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (21 < I2S_CHANS_DAC+1) "/" #endif #if(21 - ADAT_TX_INDEX == 1) @@ -851,7 +851,7 @@ #if (22 < I2S_CHANS_DAC+1) "Analogue 22" #endif - #if ((22 < SPDIF_TX_INDEX+2+1) && (22 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((22 < SPDIF_TX_INDEX+2+1) && (22 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (22 < I2S_CHANS_DAC+1) "/" #endif @@ -862,7 +862,7 @@ #endif #endif #if ((22 < ADAT_TX_INDEX+8+1) && (22 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((22 < SPDIF_TX_INDEX+2+1) && (22 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (22 < I2S_CHANS_DAC+1) + #if ((22 < SPDIF_TX_INDEX+2+1) && (22 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (22 < I2S_CHANS_DAC+1) "/" #endif #if(22 - ADAT_TX_INDEX == 1) @@ -891,7 +891,7 @@ #if (23 < I2S_CHANS_DAC+1) "Analogue 23" #endif - #if ((23 < SPDIF_TX_INDEX+2+1) && (23 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((23 < SPDIF_TX_INDEX+2+1) && (23 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (23 < I2S_CHANS_DAC+1) "/" #endif @@ -902,7 +902,7 @@ #endif #endif #if ((23 < ADAT_TX_INDEX+8+1) && (23 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((23 < SPDIF_TX_INDEX+2+1) && (23 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (23 < I2S_CHANS_DAC+1) + #if ((23 < SPDIF_TX_INDEX+2+1) && (23 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (23 < I2S_CHANS_DAC+1) "/" #endif #if(23 - ADAT_TX_INDEX == 1) @@ -931,7 +931,7 @@ #if (24 < I2S_CHANS_DAC+1) "Analogue 24" #endif - #if ((24 < SPDIF_TX_INDEX+2+1) && (24 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((24 < SPDIF_TX_INDEX+2+1) && (24 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (24 < I2S_CHANS_DAC+1) "/" #endif @@ -942,7 +942,7 @@ #endif #endif #if ((24 < ADAT_TX_INDEX+8+1) && (24 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((24 < SPDIF_TX_INDEX+2+1) && (24 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (24 < I2S_CHANS_DAC+1) + #if ((24 < SPDIF_TX_INDEX+2+1) && (24 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (24 < I2S_CHANS_DAC+1) "/" #endif #if(24 - ADAT_TX_INDEX == 1) @@ -971,7 +971,7 @@ #if (25 < I2S_CHANS_DAC+1) "Analogue 25" #endif - #if ((25 < SPDIF_TX_INDEX+2+1) && (25 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((25 < SPDIF_TX_INDEX+2+1) && (25 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (25 < I2S_CHANS_DAC+1) "/" #endif @@ -982,7 +982,7 @@ #endif #endif #if ((25 < ADAT_TX_INDEX+8+1) && (25 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((25 < SPDIF_TX_INDEX+2+1) && (25 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (25 < I2S_CHANS_DAC+1) + #if ((25 < SPDIF_TX_INDEX+2+1) && (25 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (25 < I2S_CHANS_DAC+1) "/" #endif #if(25 - ADAT_TX_INDEX == 1) @@ -1011,7 +1011,7 @@ #if (26 < I2S_CHANS_DAC+1) "Analogue 26" #endif - #if ((26 < SPDIF_TX_INDEX+2+1) && (26 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((26 < SPDIF_TX_INDEX+2+1) && (26 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (26 < I2S_CHANS_DAC+1) "/" #endif @@ -1022,7 +1022,7 @@ #endif #endif #if ((26 < ADAT_TX_INDEX+8+1) && (26 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((26 < SPDIF_TX_INDEX+2+1) && (26 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (26 < I2S_CHANS_DAC+1) + #if ((26 < SPDIF_TX_INDEX+2+1) && (26 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (26 < I2S_CHANS_DAC+1) "/" #endif #if(26 - ADAT_TX_INDEX == 1) @@ -1051,7 +1051,7 @@ #if (27 < I2S_CHANS_DAC+1) "Analogue 27" #endif - #if ((27 < SPDIF_TX_INDEX+2+1) && (27 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((27 < SPDIF_TX_INDEX+2+1) && (27 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (27 < I2S_CHANS_DAC+1) "/" #endif @@ -1062,7 +1062,7 @@ #endif #endif #if ((27 < ADAT_TX_INDEX+8+1) && (27 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((27 < SPDIF_TX_INDEX+2+1) && (27 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (27 < I2S_CHANS_DAC+1) + #if ((27 < SPDIF_TX_INDEX+2+1) && (27 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (27 < I2S_CHANS_DAC+1) "/" #endif #if(27 - ADAT_TX_INDEX == 1) @@ -1091,7 +1091,7 @@ #if (28 < I2S_CHANS_DAC+1) "Analogue 28" #endif - #if ((28 < SPDIF_TX_INDEX+2+1) && (28 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((28 < SPDIF_TX_INDEX+2+1) && (28 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (28 < I2S_CHANS_DAC+1) "/" #endif @@ -1102,7 +1102,7 @@ #endif #endif #if ((28 < ADAT_TX_INDEX+8+1) && (28 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((28 < SPDIF_TX_INDEX+2+1) && (28 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (28 < I2S_CHANS_DAC+1) + #if ((28 < SPDIF_TX_INDEX+2+1) && (28 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (28 < I2S_CHANS_DAC+1) "/" #endif #if(28 - ADAT_TX_INDEX == 1) @@ -1131,7 +1131,7 @@ #if (29 < I2S_CHANS_DAC+1) "Analogue 29" #endif - #if ((29 < SPDIF_TX_INDEX+2+1) && (29 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((29 < SPDIF_TX_INDEX+2+1) && (29 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (29 < I2S_CHANS_DAC+1) "/" #endif @@ -1142,7 +1142,7 @@ #endif #endif #if ((29 < ADAT_TX_INDEX+8+1) && (29 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((29 < SPDIF_TX_INDEX+2+1) && (29 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (29 < I2S_CHANS_DAC+1) + #if ((29 < SPDIF_TX_INDEX+2+1) && (29 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (29 < I2S_CHANS_DAC+1) "/" #endif #if(29 - ADAT_TX_INDEX == 1) @@ -1171,7 +1171,7 @@ #if (30 < I2S_CHANS_DAC+1) "Analogue 30" #endif - #if ((30 < SPDIF_TX_INDEX+2+1) && (30 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((30 < SPDIF_TX_INDEX+2+1) && (30 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (30 < I2S_CHANS_DAC+1) "/" #endif @@ -1182,7 +1182,7 @@ #endif #endif #if ((30 < ADAT_TX_INDEX+8+1) && (30 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((30 < SPDIF_TX_INDEX+2+1) && (30 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (30 < I2S_CHANS_DAC+1) + #if ((30 < SPDIF_TX_INDEX+2+1) && (30 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (30 < I2S_CHANS_DAC+1) "/" #endif #if(30 - ADAT_TX_INDEX == 1) @@ -1211,7 +1211,7 @@ #if (31 < I2S_CHANS_DAC+1) "Analogue 31" #endif - #if ((31 < SPDIF_TX_INDEX+2+1) && (31 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((31 < SPDIF_TX_INDEX+2+1) && (31 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (31 < I2S_CHANS_DAC+1) "/" #endif @@ -1222,7 +1222,7 @@ #endif #endif #if ((31 < ADAT_TX_INDEX+8+1) && (31 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((31 < SPDIF_TX_INDEX+2+1) && (31 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (31 < I2S_CHANS_DAC+1) + #if ((31 < SPDIF_TX_INDEX+2+1) && (31 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (31 < I2S_CHANS_DAC+1) "/" #endif #if(31 - ADAT_TX_INDEX == 1) @@ -1251,7 +1251,7 @@ #if (32 < I2S_CHANS_DAC+1) "Analogue 32" #endif - #if ((32 < SPDIF_TX_INDEX+2+1) && (32 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) + #if ((32 < SPDIF_TX_INDEX+2+1) && (32 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) #if (32 < I2S_CHANS_DAC+1) "/" #endif @@ -1262,7 +1262,7 @@ #endif #endif #if ((32 < ADAT_TX_INDEX+8+1) && (32 > ADAT_TX_INDEX)) && defined(ADAT_TX) - #if ((32 < SPDIF_TX_INDEX+2+1) && (32 > SPDIF_TX_INDEX)) && defined(SPDIF_TX) || (32 < I2S_CHANS_DAC+1) + #if ((32 < SPDIF_TX_INDEX+2+1) && (32 > SPDIF_TX_INDEX)) && (XUA_SPDIF_TX_EN) || (32 < I2S_CHANS_DAC+1) "/" #endif #if(32 - ADAT_TX_INDEX == 1) @@ -1294,7 +1294,7 @@ #if (1 < I2S_CHANS_ADC+1) "Analogue 1" #endif - #if ((1 < SPDIF_RX_INDEX+2+1) && (1 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((1 < SPDIF_RX_INDEX+2+1) && (1 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (1 < I2S_CHANS_ADC+1) "/" #endif @@ -1305,7 +1305,7 @@ #endif #endif #if ((1 < ADAT_RX_INDEX+8+1) && (1 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((1 < SPDIF_RX_INDEX+2+1) && (1 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (1 < I2S_CHANS_ADC+1) + #if ((1 < SPDIF_RX_INDEX+2+1) && (1 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (1 < I2S_CHANS_ADC+1) "/" #endif #if(1 - ADAT_TX_INDEX == 1) @@ -1334,7 +1334,7 @@ #if (2 < I2S_CHANS_ADC+1) "Analogue 2" #endif - #if ((2 < SPDIF_RX_INDEX+2+1) && (2 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((2 < SPDIF_RX_INDEX+2+1) && (2 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (2 < I2S_CHANS_ADC+1) "/" #endif @@ -1345,7 +1345,7 @@ #endif #endif #if ((2 < ADAT_RX_INDEX+8+1) && (2 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((2 < SPDIF_RX_INDEX+2+1) && (2 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (2 < I2S_CHANS_ADC+1) + #if ((2 < SPDIF_RX_INDEX+2+1) && (2 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (2 < I2S_CHANS_ADC+1) "/" #endif #if(2 - ADAT_TX_INDEX == 1) @@ -1374,7 +1374,7 @@ #if (3 < I2S_CHANS_ADC+1) "Analogue 3" #endif - #if ((3 < SPDIF_RX_INDEX+2+1) && (3 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((3 < SPDIF_RX_INDEX+2+1) && (3 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (3 < I2S_CHANS_ADC+1) "/" #endif @@ -1385,7 +1385,7 @@ #endif #endif #if ((3 < ADAT_RX_INDEX+8+1) && (3 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((3 < SPDIF_RX_INDEX+2+1) && (3 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (3 < I2S_CHANS_ADC+1) + #if ((3 < SPDIF_RX_INDEX+2+1) && (3 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (3 < I2S_CHANS_ADC+1) "/" #endif #if(3 - ADAT_TX_INDEX == 1) @@ -1414,7 +1414,7 @@ #if (4 < I2S_CHANS_ADC+1) "Analogue 4" #endif - #if ((4 < SPDIF_RX_INDEX+2+1) && (4 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((4 < SPDIF_RX_INDEX+2+1) && (4 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (4 < I2S_CHANS_ADC+1) "/" #endif @@ -1425,7 +1425,7 @@ #endif #endif #if ((4 < ADAT_RX_INDEX+8+1) && (4 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((4 < SPDIF_RX_INDEX+2+1) && (4 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (4 < I2S_CHANS_ADC+1) + #if ((4 < SPDIF_RX_INDEX+2+1) && (4 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (4 < I2S_CHANS_ADC+1) "/" #endif #if(4 - ADAT_TX_INDEX == 1) @@ -1454,7 +1454,7 @@ #if (5 < I2S_CHANS_ADC+1) "Analogue 5" #endif - #if ((5 < SPDIF_RX_INDEX+2+1) && (5 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((5 < SPDIF_RX_INDEX+2+1) && (5 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (5 < I2S_CHANS_ADC+1) "/" #endif @@ -1465,7 +1465,7 @@ #endif #endif #if ((5 < ADAT_RX_INDEX+8+1) && (5 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((5 < SPDIF_RX_INDEX+2+1) && (5 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (5 < I2S_CHANS_ADC+1) + #if ((5 < SPDIF_RX_INDEX+2+1) && (5 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (5 < I2S_CHANS_ADC+1) "/" #endif #if(5 - ADAT_TX_INDEX == 1) @@ -1494,7 +1494,7 @@ #if (6 < I2S_CHANS_ADC+1) "Analogue 6" #endif - #if ((6 < SPDIF_RX_INDEX+2+1) && (6 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((6 < SPDIF_RX_INDEX+2+1) && (6 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (6 < I2S_CHANS_ADC+1) "/" #endif @@ -1505,7 +1505,7 @@ #endif #endif #if ((6 < ADAT_RX_INDEX+8+1) && (6 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((6 < SPDIF_RX_INDEX+2+1) && (6 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (6 < I2S_CHANS_ADC+1) + #if ((6 < SPDIF_RX_INDEX+2+1) && (6 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (6 < I2S_CHANS_ADC+1) "/" #endif #if(6 - ADAT_TX_INDEX == 1) @@ -1534,7 +1534,7 @@ #if (7 < I2S_CHANS_ADC+1) "Analogue 7" #endif - #if ((7 < SPDIF_RX_INDEX+2+1) && (7 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((7 < SPDIF_RX_INDEX+2+1) && (7 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (7 < I2S_CHANS_ADC+1) "/" #endif @@ -1545,7 +1545,7 @@ #endif #endif #if ((7 < ADAT_RX_INDEX+8+1) && (7 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((7 < SPDIF_RX_INDEX+2+1) && (7 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (7 < I2S_CHANS_ADC+1) + #if ((7 < SPDIF_RX_INDEX+2+1) && (7 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (7 < I2S_CHANS_ADC+1) "/" #endif #if(7 - ADAT_TX_INDEX == 1) @@ -1574,7 +1574,7 @@ #if (8 < I2S_CHANS_ADC+1) "Analogue 8" #endif - #if ((8 < SPDIF_RX_INDEX+2+1) && (8 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((8 < SPDIF_RX_INDEX+2+1) && (8 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (8 < I2S_CHANS_ADC+1) "/" #endif @@ -1585,7 +1585,7 @@ #endif #endif #if ((8 < ADAT_RX_INDEX+8+1) && (8 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((8 < SPDIF_RX_INDEX+2+1) && (8 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (8 < I2S_CHANS_ADC+1) + #if ((8 < SPDIF_RX_INDEX+2+1) && (8 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (8 < I2S_CHANS_ADC+1) "/" #endif #if(8 - ADAT_TX_INDEX == 1) @@ -1614,7 +1614,7 @@ #if (9 < I2S_CHANS_ADC+1) "Analogue 9" #endif - #if ((9 < SPDIF_RX_INDEX+2+1) && (9 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((9 < SPDIF_RX_INDEX+2+1) && (9 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (9 < I2S_CHANS_ADC+1) "/" #endif @@ -1625,7 +1625,7 @@ #endif #endif #if ((9 < ADAT_RX_INDEX+8+1) && (9 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((9 < SPDIF_RX_INDEX+2+1) && (9 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (9 < I2S_CHANS_ADC+1) + #if ((9 < SPDIF_RX_INDEX+2+1) && (9 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (9 < I2S_CHANS_ADC+1) "/" #endif #if(9 - ADAT_TX_INDEX == 1) @@ -1654,7 +1654,7 @@ #if (10 < I2S_CHANS_ADC+1) "Analogue 10" #endif - #if ((10 < SPDIF_RX_INDEX+2+1) && (10 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((10 < SPDIF_RX_INDEX+2+1) && (10 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (10 < I2S_CHANS_ADC+1) "/" #endif @@ -1665,7 +1665,7 @@ #endif #endif #if ((10 < ADAT_RX_INDEX+8+1) && (10 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((10 < SPDIF_RX_INDEX+2+1) && (10 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (10 < I2S_CHANS_ADC+1) + #if ((10 < SPDIF_RX_INDEX+2+1) && (10 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (10 < I2S_CHANS_ADC+1) "/" #endif #if(10 - ADAT_TX_INDEX == 1) @@ -1694,7 +1694,7 @@ #if (11 < I2S_CHANS_ADC+1) "Analogue 11" #endif - #if ((11 < SPDIF_RX_INDEX+2+1) && (11 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((11 < SPDIF_RX_INDEX+2+1) && (11 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (11 < I2S_CHANS_ADC+1) "/" #endif @@ -1705,7 +1705,7 @@ #endif #endif #if ((11 < ADAT_RX_INDEX+8+1) && (11 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((11 < SPDIF_RX_INDEX+2+1) && (11 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (11 < I2S_CHANS_ADC+1) + #if ((11 < SPDIF_RX_INDEX+2+1) && (11 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (11 < I2S_CHANS_ADC+1) "/" #endif #if(11 - ADAT_TX_INDEX == 1) @@ -1734,7 +1734,7 @@ #if (12 < I2S_CHANS_ADC+1) "Analogue 12" #endif - #if ((12 < SPDIF_RX_INDEX+2+1) && (12 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((12 < SPDIF_RX_INDEX+2+1) && (12 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (12 < I2S_CHANS_ADC+1) "/" #endif @@ -1745,7 +1745,7 @@ #endif #endif #if ((12 < ADAT_RX_INDEX+8+1) && (12 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((12 < SPDIF_RX_INDEX+2+1) && (12 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (12 < I2S_CHANS_ADC+1) + #if ((12 < SPDIF_RX_INDEX+2+1) && (12 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (12 < I2S_CHANS_ADC+1) "/" #endif #if(12 - ADAT_TX_INDEX == 1) @@ -1774,7 +1774,7 @@ #if (13 < I2S_CHANS_ADC+1) "Analogue 13" #endif - #if ((13 < SPDIF_RX_INDEX+2+1) && (13 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((13 < SPDIF_RX_INDEX+2+1) && (13 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (13 < I2S_CHANS_ADC+1) "/" #endif @@ -1785,7 +1785,7 @@ #endif #endif #if ((13 < ADAT_RX_INDEX+8+1) && (13 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((13 < SPDIF_RX_INDEX+2+1) && (13 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (13 < I2S_CHANS_ADC+1) + #if ((13 < SPDIF_RX_INDEX+2+1) && (13 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (13 < I2S_CHANS_ADC+1) "/" #endif #if(13 - ADAT_TX_INDEX == 1) @@ -1814,7 +1814,7 @@ #if (14 < I2S_CHANS_ADC+1) "Analogue 14" #endif - #if ((14 < SPDIF_RX_INDEX+2+1) && (14 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((14 < SPDIF_RX_INDEX+2+1) && (14 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (14 < I2S_CHANS_ADC+1) "/" #endif @@ -1825,7 +1825,7 @@ #endif #endif #if ((14 < ADAT_RX_INDEX+8+1) && (14 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((14 < SPDIF_RX_INDEX+2+1) && (14 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (14 < I2S_CHANS_ADC+1) + #if ((14 < SPDIF_RX_INDEX+2+1) && (14 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (14 < I2S_CHANS_ADC+1) "/" #endif #if(14 - ADAT_TX_INDEX == 1) @@ -1854,7 +1854,7 @@ #if (15 < I2S_CHANS_ADC+1) "Analogue 15" #endif - #if ((15 < SPDIF_RX_INDEX+2+1) && (15 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((15 < SPDIF_RX_INDEX+2+1) && (15 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (15 < I2S_CHANS_ADC+1) "/" #endif @@ -1865,7 +1865,7 @@ #endif #endif #if ((15 < ADAT_RX_INDEX+8+1) && (15 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((15 < SPDIF_RX_INDEX+2+1) && (15 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (15 < I2S_CHANS_ADC+1) + #if ((15 < SPDIF_RX_INDEX+2+1) && (15 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (15 < I2S_CHANS_ADC+1) "/" #endif #if(15 - ADAT_TX_INDEX == 1) @@ -1894,7 +1894,7 @@ #if (16 < I2S_CHANS_ADC+1) "Analogue 16" #endif - #if ((16 < SPDIF_RX_INDEX+2+1) && (16 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((16 < SPDIF_RX_INDEX+2+1) && (16 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (16 < I2S_CHANS_ADC+1) "/" #endif @@ -1905,7 +1905,7 @@ #endif #endif #if ((16 < ADAT_RX_INDEX+8+1) && (16 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((16 < SPDIF_RX_INDEX+2+1) && (16 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (16 < I2S_CHANS_ADC+1) + #if ((16 < SPDIF_RX_INDEX+2+1) && (16 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (16 < I2S_CHANS_ADC+1) "/" #endif #if(16 - ADAT_TX_INDEX == 1) @@ -1934,7 +1934,7 @@ #if (17 < I2S_CHANS_ADC+1) "Analogue 17" #endif - #if ((17 < SPDIF_RX_INDEX+2+1) && (17 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((17 < SPDIF_RX_INDEX+2+1) && (17 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (17 < I2S_CHANS_ADC+1) "/" #endif @@ -1945,7 +1945,7 @@ #endif #endif #if ((17 < ADAT_RX_INDEX+8+1) && (17 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((17 < SPDIF_RX_INDEX+2+1) && (17 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (17 < I2S_CHANS_ADC+1) + #if ((17 < SPDIF_RX_INDEX+2+1) && (17 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (17 < I2S_CHANS_ADC+1) "/" #endif #if(17 - ADAT_TX_INDEX == 1) @@ -1974,7 +1974,7 @@ #if (18 < I2S_CHANS_ADC+1) "Analogue 18" #endif - #if ((18 < SPDIF_RX_INDEX+2+1) && (18 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((18 < SPDIF_RX_INDEX+2+1) && (18 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (18 < I2S_CHANS_ADC+1) "/" #endif @@ -1985,7 +1985,7 @@ #endif #endif #if ((18 < ADAT_RX_INDEX+8+1) && (18 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((18 < SPDIF_RX_INDEX+2+1) && (18 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (18 < I2S_CHANS_ADC+1) + #if ((18 < SPDIF_RX_INDEX+2+1) && (18 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (18 < I2S_CHANS_ADC+1) "/" #endif #if(18 - ADAT_TX_INDEX == 1) @@ -2014,7 +2014,7 @@ #if (19 < I2S_CHANS_ADC+1) "Analogue 19" #endif - #if ((19 < SPDIF_RX_INDEX+2+1) && (19 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((19 < SPDIF_RX_INDEX+2+1) && (19 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (19 < I2S_CHANS_ADC+1) "/" #endif @@ -2025,7 +2025,7 @@ #endif #endif #if ((19 < ADAT_RX_INDEX+8+1) && (19 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((19 < SPDIF_RX_INDEX+2+1) && (19 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (19 < I2S_CHANS_ADC+1) + #if ((19 < SPDIF_RX_INDEX+2+1) && (19 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (19 < I2S_CHANS_ADC+1) "/" #endif #if(19 - ADAT_TX_INDEX == 1) @@ -2054,7 +2054,7 @@ #if (20 < I2S_CHANS_ADC+1) "Analogue 20" #endif - #if ((20 < SPDIF_RX_INDEX+2+1) && (20 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((20 < SPDIF_RX_INDEX+2+1) && (20 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (20 < I2S_CHANS_ADC+1) "/" #endif @@ -2065,7 +2065,7 @@ #endif #endif #if ((20 < ADAT_RX_INDEX+8+1) && (20 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((20 < SPDIF_RX_INDEX+2+1) && (20 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (20 < I2S_CHANS_ADC+1) + #if ((20 < SPDIF_RX_INDEX+2+1) && (20 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (20 < I2S_CHANS_ADC+1) "/" #endif #if(20 - ADAT_TX_INDEX == 1) @@ -2094,7 +2094,7 @@ #if (21 < I2S_CHANS_ADC+1) "Analogue 21" #endif - #if ((21 < SPDIF_RX_INDEX+2+1) && (21 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((21 < SPDIF_RX_INDEX+2+1) && (21 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (21 < I2S_CHANS_ADC+1) "/" #endif @@ -2105,7 +2105,7 @@ #endif #endif #if ((21 < ADAT_RX_INDEX+8+1) && (21 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((21 < SPDIF_RX_INDEX+2+1) && (21 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (21 < I2S_CHANS_ADC+1) + #if ((21 < SPDIF_RX_INDEX+2+1) && (21 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (21 < I2S_CHANS_ADC+1) "/" #endif #if(21 - ADAT_TX_INDEX == 1) @@ -2134,7 +2134,7 @@ #if (22 < I2S_CHANS_ADC+1) "Analogue 22" #endif - #if ((22 < SPDIF_RX_INDEX+2+1) && (22 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((22 < SPDIF_RX_INDEX+2+1) && (22 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (22 < I2S_CHANS_ADC+1) "/" #endif @@ -2145,7 +2145,7 @@ #endif #endif #if ((22 < ADAT_RX_INDEX+8+1) && (22 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((22 < SPDIF_RX_INDEX+2+1) && (22 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (22 < I2S_CHANS_ADC+1) + #if ((22 < SPDIF_RX_INDEX+2+1) && (22 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (22 < I2S_CHANS_ADC+1) "/" #endif #if(22 - ADAT_TX_INDEX == 1) @@ -2174,7 +2174,7 @@ #if (23 < I2S_CHANS_ADC+1) "Analogue 23" #endif - #if ((23 < SPDIF_RX_INDEX+2+1) && (23 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((23 < SPDIF_RX_INDEX+2+1) && (23 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (23 < I2S_CHANS_ADC+1) "/" #endif @@ -2185,7 +2185,7 @@ #endif #endif #if ((23 < ADAT_RX_INDEX+8+1) && (23 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((23 < SPDIF_RX_INDEX+2+1) && (23 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (23 < I2S_CHANS_ADC+1) + #if ((23 < SPDIF_RX_INDEX+2+1) && (23 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (23 < I2S_CHANS_ADC+1) "/" #endif #if(23 - ADAT_TX_INDEX == 1) @@ -2214,7 +2214,7 @@ #if (24 < I2S_CHANS_ADC+1) "Analogue 24" #endif - #if ((24 < SPDIF_RX_INDEX+2+1) && (24 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((24 < SPDIF_RX_INDEX+2+1) && (24 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (24 < I2S_CHANS_ADC+1) "/" #endif @@ -2225,7 +2225,7 @@ #endif #endif #if ((24 < ADAT_RX_INDEX+8+1) && (24 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((24 < SPDIF_RX_INDEX+2+1) && (24 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (24 < I2S_CHANS_ADC+1) + #if ((24 < SPDIF_RX_INDEX+2+1) && (24 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (24 < I2S_CHANS_ADC+1) "/" #endif #if(24 - ADAT_TX_INDEX == 1) @@ -2254,7 +2254,7 @@ #if (25 < I2S_CHANS_ADC+1) "Analogue 25" #endif - #if ((25 < SPDIF_RX_INDEX+2+1) && (25 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((25 < SPDIF_RX_INDEX+2+1) && (25 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (25 < I2S_CHANS_ADC+1) "/" #endif @@ -2265,7 +2265,7 @@ #endif #endif #if ((25 < ADAT_RX_INDEX+8+1) && (25 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((25 < SPDIF_RX_INDEX+2+1) && (25 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (25 < I2S_CHANS_ADC+1) + #if ((25 < SPDIF_RX_INDEX+2+1) && (25 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (25 < I2S_CHANS_ADC+1) "/" #endif #if(25 - ADAT_TX_INDEX == 1) @@ -2294,7 +2294,7 @@ #if (26 < I2S_CHANS_ADC+1) "Analogue 26" #endif - #if ((26 < SPDIF_RX_INDEX+2+1) && (26 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((26 < SPDIF_RX_INDEX+2+1) && (26 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (26 < I2S_CHANS_ADC+1) "/" #endif @@ -2305,7 +2305,7 @@ #endif #endif #if ((26 < ADAT_RX_INDEX+8+1) && (26 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((26 < SPDIF_RX_INDEX+2+1) && (26 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (26 < I2S_CHANS_ADC+1) + #if ((26 < SPDIF_RX_INDEX+2+1) && (26 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (26 < I2S_CHANS_ADC+1) "/" #endif #if(26 - ADAT_TX_INDEX == 1) @@ -2334,7 +2334,7 @@ #if (27 < I2S_CHANS_ADC+1) "Analogue 27" #endif - #if ((27 < SPDIF_RX_INDEX+2+1) && (27 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((27 < SPDIF_RX_INDEX+2+1) && (27 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (27 < I2S_CHANS_ADC+1) "/" #endif @@ -2345,7 +2345,7 @@ #endif #endif #if ((27 < ADAT_RX_INDEX+8+1) && (27 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((27 < SPDIF_RX_INDEX+2+1) && (27 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (27 < I2S_CHANS_ADC+1) + #if ((27 < SPDIF_RX_INDEX+2+1) && (27 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (27 < I2S_CHANS_ADC+1) "/" #endif #if(27 - ADAT_TX_INDEX == 1) @@ -2374,7 +2374,7 @@ #if (28 < I2S_CHANS_ADC+1) "Analogue 28" #endif - #if ((28 < SPDIF_RX_INDEX+2+1) && (28 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((28 < SPDIF_RX_INDEX+2+1) && (28 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (28 < I2S_CHANS_ADC+1) "/" #endif @@ -2385,7 +2385,7 @@ #endif #endif #if ((28 < ADAT_RX_INDEX+8+1) && (28 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((28 < SPDIF_RX_INDEX+2+1) && (28 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (28 < I2S_CHANS_ADC+1) + #if ((28 < SPDIF_RX_INDEX+2+1) && (28 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (28 < I2S_CHANS_ADC+1) "/" #endif #if(28 - ADAT_TX_INDEX == 1) @@ -2414,7 +2414,7 @@ #if (29 < I2S_CHANS_ADC+1) "Analogue 29" #endif - #if ((29 < SPDIF_RX_INDEX+2+1) && (29 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((29 < SPDIF_RX_INDEX+2+1) && (29 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (29 < I2S_CHANS_ADC+1) "/" #endif @@ -2425,7 +2425,7 @@ #endif #endif #if ((29 < ADAT_RX_INDEX+8+1) && (29 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((29 < SPDIF_RX_INDEX+2+1) && (29 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (29 < I2S_CHANS_ADC+1) + #if ((29 < SPDIF_RX_INDEX+2+1) && (29 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (29 < I2S_CHANS_ADC+1) "/" #endif #if(29 - ADAT_TX_INDEX == 1) @@ -2454,7 +2454,7 @@ #if (30 < I2S_CHANS_ADC+1) "Analogue 30" #endif - #if ((30 < SPDIF_RX_INDEX+2+1) && (30 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((30 < SPDIF_RX_INDEX+2+1) && (30 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (30 < I2S_CHANS_ADC+1) "/" #endif @@ -2465,7 +2465,7 @@ #endif #endif #if ((30 < ADAT_RX_INDEX+8+1) && (30 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((30 < SPDIF_RX_INDEX+2+1) && (30 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (30 < I2S_CHANS_ADC+1) + #if ((30 < SPDIF_RX_INDEX+2+1) && (30 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (30 < I2S_CHANS_ADC+1) "/" #endif #if(30 - ADAT_TX_INDEX == 1) @@ -2494,7 +2494,7 @@ #if (31 < I2S_CHANS_ADC+1) "Analogue 31" #endif - #if ((31 < SPDIF_RX_INDEX+2+1) && (31 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((31 < SPDIF_RX_INDEX+2+1) && (31 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (31 < I2S_CHANS_ADC+1) "/" #endif @@ -2505,7 +2505,7 @@ #endif #endif #if ((31 < ADAT_RX_INDEX+8+1) && (31 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((31 < SPDIF_RX_INDEX+2+1) && (31 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (31 < I2S_CHANS_ADC+1) + #if ((31 < SPDIF_RX_INDEX+2+1) && (31 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (31 < I2S_CHANS_ADC+1) "/" #endif #if(31 - ADAT_TX_INDEX == 1) @@ -2534,7 +2534,7 @@ #if (32 < I2S_CHANS_ADC+1) "Analogue 32" #endif - #if ((32 < SPDIF_RX_INDEX+2+1) && (32 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) + #if ((32 < SPDIF_RX_INDEX+2+1) && (32 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) #if (32 < I2S_CHANS_ADC+1) "/" #endif @@ -2545,7 +2545,7 @@ #endif #endif #if ((32 < ADAT_RX_INDEX+8+1) && (32 > ADAT_RX_INDEX)) && defined(ADAT_RX) - #if ((32 < SPDIF_RX_INDEX+2+1) && (32 > SPDIF_RX_INDEX)) && defined(SPDIF_RX) || (32 < I2S_CHANS_ADC+1) + #if ((32 < SPDIF_RX_INDEX+2+1) && (32 > SPDIF_RX_INDEX)) && (XUA_SPDIF_RX_EN) || (32 < I2S_CHANS_ADC+1) "/" #endif #if(32 - ADAT_TX_INDEX == 1) diff --git a/lib_xua/src/core/endpoint0/vendorrequests.c b/lib_xua/src/core/endpoint0/vendorrequests.c index 3346ca70..0eae49a1 100644 --- a/lib_xua/src/core/endpoint0/vendorrequests.c +++ b/lib_xua/src/core/endpoint0/vendorrequests.c @@ -1,5 +1,6 @@ // Copyright (c) 2016-2018, XMOS Ltd, All rights reserved -#ifndef NO_USB +#include "xua.h" +#if XUA_USB_EN #include "xud.h" #include "vendorrequests.h" @@ -32,4 +33,4 @@ void VendorRequests_Init(VENDOR_REQUESTS_PARAMS_DEC) } -#endif /* NO_USB */ +#endif /* XUA_USB_EN */ diff --git a/lib_xua/src/core/endpoint0/vendorrequests.h b/lib_xua/src/core/endpoint0/vendorrequests.h index 7a52a71d..396ceef3 100644 --- a/lib_xua/src/core/endpoint0/vendorrequests.h +++ b/lib_xua/src/core/endpoint0/vendorrequests.h @@ -6,7 +6,7 @@ #include "xua.h" #include "xud_device.h" -/* Functions that handle vustomer vendor requests. +/* Functions that handle customer vendor requests. * * THESE NEED IMPLEMENTING FOR A SPECIFIC DESIGN * diff --git a/lib_xua/src/core/endpoint0/xua_endpoint0.c b/lib_xua/src/core/endpoint0/xua_endpoint0.c index 195c027b..443ea44d 100755 --- a/lib_xua/src/core/endpoint0/xua_endpoint0.c +++ b/lib_xua/src/core/endpoint0/xua_endpoint0.c @@ -10,7 +10,7 @@ #include "xua.h" -#ifndef NO_USB +#if XUA_USB_EN #include "xud_device.h" /* Standard descriptor requests */ #include "dfu_types.h" #include "usbaudio20.h" /* Defines from USB Audio 2.0 spec */ @@ -802,4 +802,4 @@ void XUA_Endpoint0(chanend c_ep0_out, chanend c_ep0_in, chanend c_audioControl, } } } -#endif /* NO_USB */ +#endif /* XUA_USB_EN*/ diff --git a/lib_xua/src/core/endpoint0/xua_ep0_descriptors.h b/lib_xua/src/core/endpoint0/xua_ep0_descriptors.h index 2acba0e1..bafa8529 100644 --- a/lib_xua/src/core/endpoint0/xua_ep0_descriptors.h +++ b/lib_xua/src/core/endpoint0/xua_ep0_descriptors.h @@ -54,10 +54,10 @@ typedef struct #if (AUDIO_CLASS == 2) STR_TABLE_ENTRY(clockSelectorStr); /* iClockSel */ STR_TABLE_ENTRY(internalClockSourceStr); /* iClockSource for internal clock */ -#ifdef SPDIF_RX +#if SPDIF_RX STR_TABLE_ENTRY(spdifClockSourceStr); /* iClockSource for external S/PDIF clock */ #endif -#ifdef ADAT_RX +#if ADAT_RX STR_TABLE_ENTRY(adatClockSourceStr); /* iClockSource for external S/PDIF clock */ #endif #endif @@ -327,10 +327,10 @@ StringDescTable_t g_strTable = #if (AUDIO_CLASS == 2) .clockSelectorStr = APPEND_VENDOR_STR(Clock Selector), .internalClockSourceStr = APPEND_VENDOR_STR(Internal Clock), -#ifdef SPDIF_RX +#if SPDIF_RX .spdifClockSourceStr = APPEND_VENDOR_STR(S/PDIF Clock), #endif -#ifdef ADAT_RX +#if ADAT_RX .adatClockSourceStr = APPEND_VENDOR_STR(ADAT Clock), #endif #endif @@ -629,10 +629,10 @@ typedef struct /* Class Specific Audio Control Interface Header Descriptor */ UAC_Descriptor_Interface_AC_t Audio_ClassControlInterface; USB_Descriptor_Audio_ClockSource_t Audio_ClockSource; -#ifdef SPDIF_RX +#if SPDIF_RX USB_Descriptor_Audio_ClockSource_t Audio_ClockSource_SPDIF; #endif -#ifdef ADAT_RX +#if ADAT_RX USB_Descriptor_Audio_ClockSource_t Audio_ClockSource_ADAT; #endif USB_Descriptor_Audio_ClockSelector_t Audio_ClockSelector; @@ -664,7 +664,7 @@ typedef struct // USB_Descriptor_Audio_MixerUnit_t Audio_MixerUnit; unsigned char configDesc_MixerUnit[MIXER_LENGTH]; #endif -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) /* Interrupt EP */ USB_Descriptor_Endpoint_t Audio_Int_Endpoint; #endif @@ -806,7 +806,7 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2= .bDescriptorType = USB_DESCTYPE_INTERFACE, .bInterfaceNumber = INTERFACE_NUMBER_AUDIO_CONTROL, .bAlternateSetting = 0x00, /* Must be 0 */ -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) .bNumEndpoints = 0x01, /* 0 or 1 if optional interrupt endpoint is present */ #else .bNumEndpoints = 0x00, @@ -853,7 +853,7 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2= .iClockSource = offsetof(StringDescTable_t, internalClockSourceStr)/sizeof(char *), }, -#ifdef SPDIF_RX +#if SPDIF_RX /* Clock Source Descriptor (4.7.2.1) */ .Audio_ClockSource_SPDIF = { @@ -877,7 +877,7 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2= }, #endif -#ifdef ADAT_RX +#if ADAT_RX /* Clock Source Descriptor (4.7.2.1) */ .Audio_ClockSource_ADAT = { @@ -911,11 +911,11 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2= .bClockID = ID_CLKSEL, .bNrPins = NUM_CLOCKS, .baCSourceId[0] = ID_CLKSRC_INT, /* baCSourceID */ -#ifdef SPDIF_RX +#if SPDIF_RX ID_CLKSRC_SPDIF, /* baCSourceID */ #endif -#ifdef ADAT_RX +#if ADAT_RX ID_CLKSRC_ADAT, /* baCSourceID */ #endif .bmControl = 0x03, @@ -1367,7 +1367,7 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2= }, #endif -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) /* Standard AS Interrupt Endpoint Descriptor (4.8.2.1): */ .Audio_Int_Endpoint = { diff --git a/lib_xua/src/core/endpoint0/xua_ep0_uacreqs.xc b/lib_xua/src/core/endpoint0/xua_ep0_uacreqs.xc index a70d30c4..db52c8e9 100644 --- a/lib_xua/src/core/endpoint0/xua_ep0_uacreqs.xc +++ b/lib_xua/src/core/endpoint0/xua_ep0_uacreqs.xc @@ -6,7 +6,7 @@ #include "xua.h" -#ifndef NO_USB +#if XUA_USB_EN #include #include "xud_device.h" #include "usbaudio20.h" @@ -340,7 +340,7 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c setG_curSamFreqMultiplier(g_curSamFreq/(newMasterClock/512)); #endif -#ifdef ADAT_RX +#if ADAT_RX /* Configure ADAT SMUX based on sample rate */ outuint(c_clk_ctl, SET_SMUX); if(g_curSamFreq < 88200) diff --git a/lib_xua/src/core/main.xc b/lib_xua/src/core/main.xc index 43e6b35e..8aac601e 100755 --- a/lib_xua/src/core/main.xc +++ b/lib_xua/src/core/main.xc @@ -17,7 +17,7 @@ #include #endif -#ifndef NO_USB +#if XUA_USB_EN #include "xud_device.h" /* XMOS USB Device Layer defines and functions */ #include "xua_endpoint0.h" #endif @@ -36,20 +36,24 @@ #include "mixer.h" #endif -#ifdef SPDIF_RX +#if (SPDIF_RX == 1) #include "SpdifReceive.h" #endif -#ifdef ADAT_RX +#if ADAT_RX #include "adat_rx.h" #endif #include "clocking.h" -#if (NUM_PDM_MICS > 0) +#if (XUA_NUM_PDM_MICS > 0) #include "xua_pdm_mic.h" #endif +#if (XUA_SPDIF_TX_EN) +#include "spdif.h" /* From lib_spdif */ +#endif + #if (XUA_DFU_EN == 1) [[distributable]] void DFUHandler(server interface i_dfu i, chanend ?c_user_cmd); @@ -83,6 +87,8 @@ on tile[AUDIO_IO_TILE] : buffered out port:32 p_i2s_dac[I2S_WIRES_DAC] = #endif #if I2S_WIRES_DAC > 0 }; +#else + #define p_i2s_dac null #endif #if I2S_WIRES_ADC > 0 @@ -112,6 +118,8 @@ on tile[AUDIO_IO_TILE] : buffered in port:32 p_i2s_adc[I2S_WIRES_ADC] = #endif #if I2S_WIRES_ADC > 0 }; +#else + #define p_i2s_adc null #endif @@ -123,17 +131,9 @@ on tile[AUDIO_IO_TILE] : buffered out port:32 p_lrclk = PORT_I2S_LRCLK; on tile[AUDIO_IO_TILE] : buffered out port:32 p_bclk = PORT_I2S_BCLK; #endif -/* Note, declared unsafe as sometimes we want to share this port -e.g. PDM mics and I2S use same master clock IO */ -on tile[AUDIO_IO_TILE] : port p_mclk_in_ = PORT_MCLK_IN; +on tile[AUDIO_IO_TILE] : in port p_mclk_in = PORT_MCLK_IN; -/* TODO p_mclk_in should be delared as an unsafe resource */ -unsafe -{ - unsafe port p_mclk_in; -} - -#ifndef NO_USB +#if XUA_USB_EN on tile[XUD_TILE] : in port p_for_mclk_count = PORT_MCLK_COUNT; #endif @@ -145,15 +145,15 @@ on tile[SPDIF_TX_TILE] : buffered out port:32 p_spdif_tx = PORT_SPDIF_OUT; on stdcore[AUDIO_IO_TILE] : buffered out port:32 p_adat_tx = PORT_ADAT_OUT; #endif -#ifdef ADAT_RX +#if ADAT_RX on stdcore[XUD_TILE] : buffered in port:32 p_adat_rx = PORT_ADAT_IN; #endif -#ifdef SPDIF_RX +#if (SPDIF_RX == 1) on tile[XUD_TILE] : buffered in port:4 p_spdif_rx = PORT_SPDIF_IN; #endif -#if defined (SPDIF_RX) || defined (ADAT_RX) +#if (SPDIF_RX == 1) || (ADAT_RX) /* Reference to external clock multiplier */ on tile[AUDIO_IO_TILE] : out port p_pll_clk = PORT_PLL_REF; #endif @@ -169,7 +169,7 @@ on tile[MIDI_TILE] : buffered in port:1 p_midi_rx = PORT_MIDI_IN; #endif /*** Clock blocks ***/ -#if (NUM_PDM_MICS > 0) +#if (XUA_NUM_PDM_MICS > 0) clock clk_pdm = on tile[PDM_TILE]: XS1_CLKBLK_1; #endif @@ -181,25 +181,37 @@ on tile[MIDI_TILE] : clock clk_midi = CLKBLK_MIDI; on tile[SPDIF_TX_TILE] : clock clk_mst_spd = CLKBLK_SPDIF_TX; #endif -#ifdef SPDIF_RX +#if (SPDIF_RX == 1) on tile[XUD_TILE] : clock clk_spd_rx = CLKBLK_SPDIF_RX; #endif -#if(XUD_SERIES_SUPPORT == XUD_L_SERIES) && defined(ADAT_RX) +#if (XUA_NUM_PDM_MICS > 0) +in port p_pdm_clk = PORT_PDM_CLK; + +in buffered port:32 p_pdm_mics = PORT_PDM_DATA; +#if (PDM_TILE != AUDIO_IO_TILE) +/* If Mics and I2S are not the same tile we need a separate MCLK port */ +in port p_pdm_mclk = PORT_PDM_MCLK; +#endif +#endif + + + +#if(XUD_SERIES_SUPPORT == XUD_L_SERIES) && (ADAT_RX) /* Cannot use default clock (CLKBLK_REF) for ADAT RX since it is tied to the 60MHz USB clock on G/L series parts. */ on tile[XUD_TILE] : clock clk_adat_rx = CLKBLK_ADAT_RX; #endif +on tile[AUDIO_IO_TILE] : clock clk_audio_mclk = CLKBLK_MCLK; /* Master clock */ -on tile[AUDIO_IO_TILE] : clock clk_audio_mclk = CLKBLK_MCLK; /* Master clock */ - -#if(AUDIO_IO_TILE != XUD_TILE) && !defined(NO_USB) -on tile[XUD_TILE] : clock clk_audio_mclk2 = CLKBLK_MCLK; /* Master clock */ -on tile[XUD_TILE] : in port p_mclk_in2 = PORT_MCLK_IN2; +#if(AUDIO_IO_TILE != XUD_TILE) && XUA_USB_EN +/* Separate clock/port for USB feedback calculation */ +on tile[XUD_TILE] : clock clk_audio_mclk_usb = CLKBLK_MCLK; /* Master clock */ +on tile[XUD_TILE] : in port p_mclk_in_usb = PORT_MCLK_IN_USB; #endif -on tile[AUDIO_IO_TILE] : clock clk_audio_bclk = CLKBLK_I2S_BIT; /* Bit clock */ +on tile[AUDIO_IO_TILE] : clock clk_audio_bclk = CLKBLK_I2S_BIT; /* Bit clock */ /* L/G Series needs a port to use for USB reset */ @@ -211,13 +223,6 @@ on tile[XUD_TILE] : out port p_usb_rst = PORT_USB_RESET; #define p_usb_rst null #endif -#if (XUD_SERIES_SUPPORT != XUD_U_SERIES && XUD_SERIES_SUPPORT != XUD_X200_SERIES) -/* L Series also needs a clock block for this port */ -on tile[XUD_TILE] : clock clk = CLKBLK_USB_RST; -#else -#define clk null -#endif - #ifdef IAP /* I2C ports - in a struct for use with module_i2c_shared & module_i2c_simple/module_i2c_single_port */ #ifdef PORT_I2C @@ -227,7 +232,7 @@ on tile [IAP_TILE] : struct r_i2c r_i2c = {PORT_I2C_SCL, PORT_I2C_SDA}; #endif #endif -#ifndef NO_USB +#if XUA_USB_EN /* Endpoint type tables for XUD */ XUD_EpType epTypeTableOut[ENDPOINT_COUNT_OUT] = { XUD_EPTYPE_CTL | XUD_STATUS_ENABLE, XUD_EPTYPE_ISO, /* Audio */ @@ -248,7 +253,7 @@ XUD_EpType epTypeTableIn[ENDPOINT_COUNT_IN] = { XUD_EPTYPE_CTL | XUD_STATUS_ENAB #if (NUM_USB_CHAN_IN == 0) || defined(UAC_FORCE_FEEDBACK_EP) XUD_EPTYPE_ISO, /* Async feedback endpoint */ #endif -#if defined (SPDIF_RX) || defined (ADAT_RX) +#if (SPDIF_RX == 1) || (ADAT_RX) XUD_EPTYPE_BUL, #endif #ifdef MIDI @@ -267,7 +272,7 @@ XUD_EpType epTypeTableIn[ENDPOINT_COUNT_IN] = { XUD_EPTYPE_CTL | XUD_STATUS_ENAB #endif #endif }; -#endif /* NO_USB */ +#endif /* XUA_USB_EN */ void thread_speed() { @@ -288,7 +293,7 @@ void xscope_user_init() } #endif -#ifndef NO_USB +#if XUA_USB_EN /* Core USB Audio functions - must be called on the Tile connected to the USB Phy */ void usb_audio_core(chanend c_mix_out #ifdef MIDI @@ -334,16 +339,14 @@ VENDOR_REQUESTS_PARAMS_DEC_ #ifdef XUD_PRIORITY_HIGH set_core_high_priority_on(); #endif + + /* Run UAC2.0 at high-speed, UAC1.0 at full-speed */ + unsigned usbSpeed = (AUDIO_CLASS == 2) ? XUD_SPEED_HS : XUD_SPEED_FS; + /* USB Interface Core */ -#if (AUDIO_CLASS==2) XUD_Main(c_xud_out, ENDPOINT_COUNT_OUT, c_xud_in, ENDPOINT_COUNT_IN, c_sof, epTypeTableOut, epTypeTableIn, p_usb_rst, - clk, 1, XUD_SPEED_HS, XUD_PWR_CFG); -#else - XUD_Main(c_xud_out, ENDPOINT_COUNT_OUT, c_xud_in, ENDPOINT_COUNT_IN, - c_sof, epTypeTableOut, epTypeTableIn, p_usb_rst, - clk, 1, XUD_SPEED_FS, XUD_PWR_CFG); -#endif + null, 0, usbSpeed, XUD_PWR_CFG); } /* USB Packet buffering Core */ @@ -351,18 +354,12 @@ VENDOR_REQUESTS_PARAMS_DEC_ unsigned x; thread_speed(); - /* TODO p_mclk_in should be delared as an unsafe resource */ - unsafe - { - p_mclk_in = p_mclk_in_; - } - /* Attach mclk count port to mclk clock-block (for feedback) */ //set_port_clock(p_for_mclk_count, clk_audio_mclk); #if(AUDIO_IO_TILE != XUD_TILE) - set_clock_src(clk_audio_mclk2, p_mclk_in2); - set_port_clock(p_for_mclk_count, clk_audio_mclk2); - start_clock(clk_audio_mclk2); + set_clock_src(clk_audio_mclk_usb, p_mclk_in_usb); + set_port_clock(p_for_mclk_count, clk_audio_mclk_usb); + start_clock(clk_audio_mclk_usb); #else /* Clock port from same clock-block as I2S */ /* TODO remove asm() */ @@ -397,7 +394,7 @@ VENDOR_REQUESTS_PARAMS_DEC_ c_ea_data, #endif #endif -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) /* Audio Interrupt - only used for interrupts on external clock change */ c_xud_in[ENDPOINT_NUMBER_IN_INTERRUPT], c_clk_int, @@ -423,7 +420,29 @@ VENDOR_REQUESTS_PARAMS_DEC_ //: } } -#endif /* NO_USB */ +#endif /* XUA_USB_EN */ + + +#if (XUA_SPDIF_TX_EN) && (SPDIF_TX_TILE != AUDIO_IO_TILE) +void SpdifTxWrapper(chanend c_spdif_tx) +{ + unsigned portId; + //configure_clock_src(clk, p_mclk); + + // TODO could share clock block here.. + // NOTE, Assuming SPDIF tile == USB tile here.. + asm("ldw %0, dp[p_mclk_in_usb]":"=r"(portId)); + asm("setclk res[%0], %1"::"r"(clk_mst_spd), "r"(portId)); + configure_out_port_no_ready(p_spdif_tx, clk_mst_spd, 0); + set_clock_fall_delay(clk_mst_spd, 7); + start_clock(clk_mst_spd); + + while(1) + { + spdif_tx(p_spdif_tx, c_spdif_tx); + } +} +#endif void usb_audio_io(chanend ?c_aud_in, chanend ?c_adc, #if (XUA_SPDIF_TX_EN) && (SPDIF_TX_TILE != AUDIO_IO_TILE) @@ -439,7 +458,10 @@ void usb_audio_io(chanend ?c_aud_in, chanend ?c_adc, #if (XUD_TILE != 0) && (AUDIO_IO_TILE == 0) && (XUA_DFU_EN == 1) , server interface i_dfu ?dfuInterface #endif -#if (NUM_PDM_MICS > 0) +#if (XUA_NUM_PDM_MICS > 0) +#if (PDM_TILE == AUDIO_IO_TILE) + , streaming chanend c_ds_output[2] +#endif , chanend c_pdm_pcm #endif ) @@ -448,12 +470,24 @@ void usb_audio_io(chanend ?c_aud_in, chanend ?c_adc, chan c_mix_out; #endif -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) || (ADAT_RX) chan c_dig_rx; #else #define c_dig_rx null #endif +#if (XUA_NUM_PDM_MICS > 0) && (PDM_TILE == AUDIO_IO_TILE) + /* Configure clocks ports - sharing mclk port with I2S */ + xua_pdm_mic_config(p_mclk_in, p_pdm_mclk, p_pdm_clk, p_pdm_mics, clk_pdm); +#endif + +#if (XUA_SPDIF_TX_EN) && (SPDIF_TX_TILE == AUDIO_IO_TILE) + chan c_spdif_tx; + + /* Setup S/PDIF tx port - note this is done before par since sharing clock-block/port */ + spdif_tx_port_config(p_spdif_tx, clk_audio_mclk, p_mclk_in, 7); +#endif + par { #ifdef MIXER @@ -463,6 +497,14 @@ void usb_audio_io(chanend ?c_aud_in, chanend ?c_adc, mixer(c_aud_in, c_mix_out, c_mix_ctl); } #endif + +#if (XUA_SPDIF_TX_EN) && (SPDIF_TX_TILE == AUDIO_IO_TILE) + while(1) + { + spdif_tx(p_spdif_tx, c_spdif_tx); + } +#endif + /* Audio I/O Core (pars additional S/PDIF TX Core) */ { thread_speed(); @@ -471,23 +513,27 @@ void usb_audio_io(chanend ?c_aud_in, chanend ?c_adc, #else #define AUDIO_CHANNEL c_aud_in #endif - XUA_AudioHub(AUDIO_CHANNEL -#if (XUA_SPDIF_TX_EN) && (SPDIF_TX_TILE != AUDIO_IO_TILE) + XUA_AudioHub(AUDIO_CHANNEL, clk_audio_mclk, clk_audio_bclk, p_mclk_in, p_lrclk, p_bclk, p_i2s_dac, p_i2s_adc +#if (XUA_SPDIF_TX_EN) //&& (SPDIF_TX_TILE != AUDIO_IO_TILE) , c_spdif_tx #endif -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (SPDIF_RX) ||(ADAT_RX) , c_dig_rx #endif #if (XUD_TILE != 0) && (AUDIO_IO_TILE == 0) && (XUA_DFU_EN == 1) , dfuInterface #endif -#if (NUM_PDM_MICS > 0) +#if (XUA_NUM_PDM_MICS > 0) , c_pdm_pcm #endif ); } -#if defined(SPDIF_RX) || defined(ADAT_RX) +#if (XUA_NUM_PDM_MICS > 0) && (PDM_TILE == AUDIO_IO_TILE) + xua_pdm_mic(c_ds_output, p_pdm_mics); +#endif + +#if (SPDIF_RX) || (ADAT_RX) { thread_speed(); @@ -511,7 +557,7 @@ void usb_audio_io(chanend ?c_aud_in, chanend ?c_adc, /* Main for USB Audio Applications */ int main() { -#if NO_USB +#if !XUA_USB_EN #define c_mix_out null #else chan c_mix_out; @@ -536,24 +582,24 @@ int main() chan c_mix_ctl; #endif -#ifdef SPDIF_RX +#if SPDIF_RX streaming chan c_spdif_rx; #else #define c_spdif_rx null #endif -#ifdef ADAT_RX +#if ADAT_RX chan c_adat_rx; #else #define c_adat_rx null #endif -#if (XUA_SPDIF_TX_EN) && (SPDIF_TX_TILE != AUDIO_IO_TILE) +#if (XUA_SPDIF_TX_EN) //&& (SPDIF_TX_TILE != AUDIO_IO_TILE) chan c_spdif_tx; #endif -#if (defined (SPDIF_RX) || defined (ADAT_RX)) +#if ((SPDIF_RX) || (ADAT_RX)) chan c_clk_ctl; chan c_clk_int; #else @@ -567,7 +613,7 @@ int main() #define dfuInterface null #endif -#if (NUM_PDM_MICS > 0) +#if (XUA_NUM_PDM_MICS > 0) chan c_pdm_pcm; streaming chan c_ds_output[2]; #ifdef MIC_PROCESSING_USE_INTERFACE @@ -591,7 +637,7 @@ int main() DFUHandler(dfuInterface, null); #endif #endif -#ifndef NO_USB +#if XUA_USB_EN usb_audio_core(c_mix_out #ifdef MIDI , c_midi @@ -609,16 +655,11 @@ int main() VENDOR_REQUESTS_PARAMS_ ); -#endif /* NO_USB */ +#endif /* XUA_USB_EN */ } on tile[AUDIO_IO_TILE]: { - /* TODO p_mclk_in should be delared as an unsafe resource */ - unsafe - { - p_mclk_in = p_mclk_in_; - } usb_audio_io(c_mix_out, c_adc #if (XUA_SPDIF_TX_EN) && (SPDIF_TX_TILE != AUDIO_IO_TILE) , c_spdif_tx @@ -630,7 +671,10 @@ int main() #if (XUD_TILE != 0) && (AUDIO_IO_TILE == 0) && (XUA_DFU_EN == 1) , dfuInterface #endif -#if (NUM_PDM_MICS > 0) +#if (XUA_NUM_PDM_MICS > 0) +#if (PDM_TILE == AUDIO_IO_TILE) + , c_ds_output[2] +#endif , c_pdm_pcm #endif ); @@ -669,7 +713,7 @@ int main() #endif #endif -#ifdef SPDIF_RX +#if SPDIF_RX on tile[XUD_TILE]: { thread_speed(); @@ -677,7 +721,7 @@ int main() } #endif -#ifdef ADAT_RX +#if (ADAT_RX) on stdcore[XUD_TILE] : { set_thread_fast_mode_on(); @@ -696,7 +740,7 @@ int main() #endif -#ifndef NO_USB +#if XUA_USB_EN #if (XUD_TILE != 0 ) && (AUDIO_IO_TILE != 0) && (XUA_DFU_EN == 1) /* Run flash code on its own - hope it gets combined */ //#warning Running DFU flash code on its own @@ -705,23 +749,22 @@ int main() #endif #ifndef PDM_RECORD -#if (NUM_PDM_MICS > 0) - +#if (XUA_NUM_PDM_MICS > 0) +#if (PDM_TILE != AUDIO_IO_TILE) + /* PDM Mics running on a separate to AudioHub */ on stdcore[PDM_TILE]: { - /* TODO p_mclk_in should be delared as an unsafe resource */ - unsafe - { - p_mclk_in = p_mclk_in_; - } - pdm_mic(c_ds_output); + xua_pdm_mic_config(p_pdm_mclk, p_pdm_clk, p_pdm_mics, clk_pdm); + xua_pdm_mic(c_ds_output, p_pdm_mics); } +#endif + #ifdef MIC_PROCESSING_USE_INTERFACE - on stdcore[PDM_TILE].core[0]: pdm_buffer(c_ds_output, c_pdm_pcm, i_mic_process); + on stdcore[PDM_TILE].core[0]: XUA_PdmBuffer(c_ds_output, c_pdm_pcm, i_mic_process); #else - on stdcore[PDM_TILE].core[0]: pdm_buffer(c_ds_output, c_pdm_pcm); + on stdcore[PDM_TILE].core[0]: XUA_PdmBuffer(c_ds_output, c_pdm_pcm); #endif /*MIC_PROCESSING_USE_INTERFACE*/ -#endif /*NUM_PDM_MICS > 0*/ +#endif /*XUA_NUM_PDM_MICS > 0*/ #endif /*PDM_RECORD*/ diff --git a/lib_xua/src/core/mixer/mixer.xc b/lib_xua/src/core/mixer/mixer.xc index 71e305ae..fe9dc766 100644 --- a/lib_xua/src/core/mixer/mixer.xc +++ b/lib_xua/src/core/mixer/mixer.xc @@ -365,9 +365,11 @@ static void mixer1(chanend c_host, chanend c_mix_ctl, chanend c_mixer2) /* Forward on Request for data to decouple thread */ outuint(c_host, request); - + +#if (MAX_MIX_COUNT > 0) /* Sync */ outuint(c_mixer2, 0); +#endif /* Between request to decouple and response ~ 400nS latency for interrupt to fire */ select diff --git a/lib_xua/src/core/pdm_mics/mic_array_conf.h b/lib_xua/src/core/pdm_mics/mic_array_conf.h index 7f61b82d..7f105514 100644 --- a/lib_xua/src/core/pdm_mics/mic_array_conf.h +++ b/lib_xua/src/core/pdm_mics/mic_array_conf.h @@ -9,7 +9,7 @@ #endif #ifndef MIC_ARRAY_NUM_MICS -#define MIC_ARRAY_NUM_MICS (NUM_PDM_MICS) +#define MIC_ARRAY_NUM_MICS (XUA_NUM_PDM_MICS) #endif #endif /* MIC_ARRAY_CONF_H_ */ diff --git a/lib_xua/src/core/pdm_mics/pdm_mic.xc b/lib_xua/src/core/pdm_mics/pdm_mic.xc index 481187c8..2221d1f7 100644 --- a/lib_xua/src/core/pdm_mics/pdm_mic.xc +++ b/lib_xua/src/core/pdm_mics/pdm_mic.xc @@ -2,7 +2,7 @@ #include "xua.h" -#if (NUM_PDM_MICS > 0) +#if (XUA_NUM_PDM_MICS > 0) /* This file includes an example integration of lib_array_mic into USB Audio */ @@ -20,21 +20,7 @@ #define MAX_DECIMATION_FACTOR (96000/(MIN_FREQ/AUD_TO_MICS_RATIO)) -/* Hardware resources */ -/* TODO these should be in main.xc with the rest of the resources */ -in port p_pdm_clk = PORT_PDM_CLK; - -in buffered port:32 p_pdm_mics = PORT_PDM_DATA; -#if (PDM_TILE != AUDIO_IO_TILE) -/* If Mics and I2S are on the same tile we'll share an MCLK port */ -in port p_pdm_mclk = PORT_PDM_MCLK; -#else -extern unsafe port p_mclk_in; -#endif - -/* Delcared in main.xc */ -extern clock clk_pdm; - +/* Build time sized microphone delay line */ #ifndef MIC_BUFFER_DEPTH #define MIC_BUFFER_DEPTH 1 #endif @@ -46,16 +32,16 @@ mic_array_frame_time_domain mic_audio[2]; #ifdef MIC_PROCESSING_USE_INTERFACE [[combinable]] #pragma unsafe arrays -void pdm_buffer(streaming chanend c_ds_output[2], chanend c_audio, client mic_process_if i_mic_process) +void XUA_PdmBuffer(streaming chanend c_ds_output[2], chanend c_audio, client mic_process_if i_mic_process) #else #pragma unsafe arrays [[combinable]] -void pdm_buffer(streaming chanend c_ds_output[2], chanend c_audio) +void XUA_PdmBuffer(streaming chanend c_ds_output[2], chanend c_audio) #endif { unsigned buffer; unsigned samplerate; - int output[MIC_BUFFER_DEPTH][NUM_PDM_MICS]; + int output[MIC_BUFFER_DEPTH][XUA_NUM_PDM_MICS]; #ifdef MIC_PROCESSING_USE_INTERFACE i_mic_process.init(); @@ -63,7 +49,7 @@ void pdm_buffer(streaming chanend c_ds_output[2], chanend c_audio) user_pdm_init(); #endif -#if NUM_PDM_MICS > 4 +#if XUA_NUM_PDM_MICS > 4 unsigned decimatorCount = 2; #else unsigned decimatorCount = 1; @@ -160,7 +146,7 @@ void pdm_buffer(streaming chanend c_ds_output[2], chanend c_audio) { /* We store an additional buffer so we can reply immediately */ #pragma loop unroll - for(int i = 0; i < NUM_PDM_MICS; i++) + for(int i = 0; i < XUA_NUM_PDM_MICS; i++) { c_audio <: output[micBufferRead][i]; } @@ -180,7 +166,7 @@ void pdm_buffer(streaming chanend c_ds_output[2], chanend c_audio) #endif /* Buffer up next mic data */ #pragma loop unroll - for(int i = 0; i < NUM_PDM_MICS; i++) + for(int i = 0; i < XUA_NUM_PDM_MICS; i++) { output[micBufferWrite][i] = current->data[i][0]; } @@ -211,7 +197,7 @@ void pdm_buffer(streaming chanend c_ds_output[2], chanend c_audio) user_pdm_process(current); #endif #pragma loop unroll - for(int i = 0; i < NUM_PDM_MICS; i++) + for(int i = 0; i < XUA_NUM_PDM_MICS; i++) { output[micBufferWrite][i] = current->data[i][0]; } @@ -228,15 +214,8 @@ void pdm_buffer(streaming chanend c_ds_output[2], chanend c_audio) #error MAX_FREQ > 48000 NOT CURRENTLY SUPPORTED #endif -void pdm_mic(streaming chanend c_ds_output[2]) +void xua_pdm_mic_config(in port p_pdm_mclk, in port p_pdm_clk, buffered in port:32 p_pdm_mics, clock clk_pdm) { - streaming chan c_4x_pdm_mic_0; -#if (NUM_PDM_MICS > 4) - streaming chan c_4x_pdm_mic_1; -#else - #define c_4x_pdm_mic_1 null -#endif - /* Mics expect a clock in the 3Mhz range, calculate the divide based on mclk */ /* e.g. For a 48kHz range mclk we expect a 3072000Hz mic clock */ /* e.g. For a 44.1kHz range mclk we expect a 2822400Hz mic clock */ @@ -246,24 +225,27 @@ void pdm_mic(streaming chanend c_ds_output[2]) unsigned micDiv = MCLK_48/3072000; -#if (PDM_TILE != AUDIO_IO_TILE) configure_clock_src_divide(clk_pdm, p_pdm_mclk, micDiv/2); -#else - /* Sharing mclk port with I2S */ - unsafe - { - configure_clock_src_divide(clk_pdm, (port) p_mclk_in, micDiv/2); - } -#endif + configure_port_clock_output(p_pdm_clk, clk_pdm); configure_in_port(p_pdm_mics, clk_pdm); start_clock(clk_pdm); +} +void xua_pdm_mic(streaming chanend c_ds_output[2], buffered in port:32 p_pdm_mics) +{ + streaming chan c_4x_pdm_mic_0; +#if (XUA_NUM_PDM_MICS > 4) + streaming chan c_4x_pdm_mic_1; +#else + #define c_4x_pdm_mic_1 null +#endif + par { mic_array_pdm_rx(p_pdm_mics, c_4x_pdm_mic_0, c_4x_pdm_mic_1); mic_array_decimate_to_pcm_4ch(c_4x_pdm_mic_0, c_ds_output[0], MIC_ARRAY_NO_INTERNAL_CHANS); -#if (NUM_PDM_MICS > 4) +#if (XUA_NUM_PDM_MICS > 4) mic_array_decimate_to_pcm_4ch(c_4x_pdm_mic_1, c_ds_output[1], MIC_ARRAY_NO_INTERNAL_CHANS); #endif } diff --git a/lib_xua/src/core/pdm_mics/pdm_mic_user.c b/lib_xua/src/core/pdm_mics/pdm_mic_user.c index 33409e23..f7a35f78 100644 --- a/lib_xua/src/core/pdm_mics/pdm_mic_user.c +++ b/lib_xua/src/core/pdm_mics/pdm_mic_user.c @@ -2,7 +2,7 @@ #include "xua.h" -#if (NUM_PDM_MICS > 0) && !defined(MIC_PROCESSING_USE_INTERFACE) +#if (XUA_NUM_PDM_MICS > 0) && !defined(MIC_PROCESSING_USE_INTERFACE) #include "mic_array_frame.h" diff --git a/lib_xua/src/core/ports/audioports.xc b/lib_xua/src/core/ports/audioports.xc index 2f26b9af..80d2500a 100644 --- a/lib_xua/src/core/ports/audioports.xc +++ b/lib_xua/src/core/ports/audioports.xc @@ -7,7 +7,7 @@ -extern unsafe port p_mclk_in; +extern in port p_mclk_in; extern clock clk_audio_mclk; extern clock clk_audio_bclk; diff --git a/lib_xua/src/core/uac_hwresources.h b/lib_xua/src/core/uac_hwresources.h index 83eda797..2e465aba 100644 --- a/lib_xua/src/core/uac_hwresources.h +++ b/lib_xua/src/core/uac_hwresources.h @@ -3,7 +3,7 @@ #ifndef _UAC_HWRESOURCES_H_ #define _UAC_HWRESOURCES_H_ -#ifndef NO_USB +#if XUA_USB_EN #include "xud.h" /* XMOS USB Device Layer defines and functions */ #endif diff --git a/lib_xua/src/core/warnings.xc b/lib_xua/src/core/warnings.xc index 452a2165..7e071dbf 100644 --- a/lib_xua/src/core/warnings.xc +++ b/lib_xua/src/core/warnings.xc @@ -6,7 +6,7 @@ Warnings relating to configuration defines located in this XC source file rather #include "xua_conf_full.h" -#ifndef NO_USB +#if XUA_USB_EN #ifndef DEFAULT_FREQ #warning DEFAULT_FREQ not defined. Using MIN_FREQ diff --git a/lib_xua/src/core/xua_commands.h b/lib_xua/src/core/xua_commands.h index ce73b2fc..54a76b9e 100644 --- a/lib_xua/src/core/xua_commands.h +++ b/lib_xua/src/core/xua_commands.h @@ -13,7 +13,7 @@ #define CLOCK_INTERNAL 1 #define CLOCK_SPDIF 2 -#ifdef SPDIF_RX +#if SPDIF_RX #define CLOCK_ADAT 3 #else #define CLOCK_ADAT 2 diff --git a/lib_xua/src/core/xuduser/xuduser.c b/lib_xua/src/core/xuduser/xuduser.c index 4393530d..831acc1f 100644 --- a/lib_xua/src/core/xuduser/xuduser.c +++ b/lib_xua/src/core/xuduser/xuduser.c @@ -1,5 +1,5 @@ // Copyright (c) 2013-2018, XMOS Ltd, All rights reserved -#ifndef NO_USB +#if XUA_USB_EN #include "xua.h" #include "hostactive.h" #include "audiostream.h" @@ -23,4 +23,4 @@ void XUD_UserResume(void) UserHostActive(1); } } -#endif /* NO_USB */ +#endif /* XUA_USB_EN*/ diff --git a/tests/.gitignore b/tests/.gitignore new file mode 100644 index 00000000..f0bcfb69 --- /dev/null +++ b/tests/.gitignore @@ -0,0 +1 @@ +test_results.csv diff --git a/tests/i2s_loopback/LICENSE.txt b/tests/app_test_i2s_loopback/LICENSE.txt similarity index 100% rename from tests/i2s_loopback/LICENSE.txt rename to tests/app_test_i2s_loopback/LICENSE.txt diff --git a/tests/i2s_loopback/Makefile b/tests/app_test_i2s_loopback/Makefile similarity index 100% rename from tests/i2s_loopback/Makefile rename to tests/app_test_i2s_loopback/Makefile diff --git a/tests/i2s_loopback/debug_conf.h b/tests/app_test_i2s_loopback/debug_conf.h similarity index 100% rename from tests/i2s_loopback/debug_conf.h rename to tests/app_test_i2s_loopback/debug_conf.h diff --git a/tests/i2s_loopback/main.xc b/tests/app_test_i2s_loopback/main.xc similarity index 87% rename from tests/i2s_loopback/main.xc rename to tests/app_test_i2s_loopback/main.xc index b3724be8..d6885126 100644 --- a/tests/i2s_loopback/main.xc +++ b/tests/app_test_i2s_loopback/main.xc @@ -77,20 +77,12 @@ buffered out port:32 p_lrclk = PORT_I2S_LRCLK; /* I2S Bit-clock */ buffered out port:32 p_bclk = PORT_I2S_BCLK; /* I2S L/R-clock */ #endif -/* Note, declared unsafe as sometimes we want to share this port -e.g. PDM mics and I2S use same master clock IO */ -port p_mclk_in_ = PORT_MCLK_IN; +in port p_mclk_in = PORT_MCLK_IN; /* Clock-block declarations */ clock clk_audio_bclk = on tile[AUDIO_IO_TILE]: XS1_CLKBLK_1; /* Bit clock */ clock clk_audio_mclk = on tile[AUDIO_IO_TILE]: XS1_CLKBLK_2; /* Master clock */ -unsafe -{ - /* TODO simplify this */ - unsafe port p_mclk_in; /* Audio master clock input */ -} - #ifdef SIMULATION #define INITIAL_SKIP_FRAMES 10 #define TOTAL_TEST_FRAMES 100 @@ -211,38 +203,35 @@ void slave_mode_clk_setup(const unsigned samFreq, const unsigned chans_per_frame #endif #if I2S_MODE_TDM -const int i2s_tdm_mode = 1; +const int i2s_tdm_mode = 8; #else -const int i2s_tdm_mode = 0; +const int i2s_tdm_mode = 2; #endif int main(void) { - chan c_checker; - chan c_out; + chan c_checker; + chan c_out; - par { - on tile[AUDIO_IO_TILE]: + par { - unsafe - { - p_mclk_in = p_mclk_in_; - } - par - { - XUA_AudioHub(c_out); - generator(c_checker, c_out); - checker(c_checker, 0); + on tile[AUDIO_IO_TILE]: + { + par + { + XUA_AudioHub(c_out, clk_audio_mclk, clk_audio_bclk, p_mclk_in, p_lrclk, p_bclk, p_i2s_dac, p_i2s_adc); + generator(c_checker, c_out); + checker(c_checker, 0); #ifdef SIMULATION #if CODEC_MASTER - slave_mode_clk_setup(DEFAULT_FREQ, (i2s_tdm_mode != 0) ? 8 : 2); + slave_mode_clk_setup(DEFAULT_FREQ, i2s_tdm_mode); #else - master_mode_clk_setup(); + master_mode_clk_setup(); #endif #endif - } + } + } } - } - return 0; + return 0; } diff --git a/tests/i2s_loopback/simulation.xc b/tests/app_test_i2s_loopback/simulation.xc similarity index 100% rename from tests/i2s_loopback/simulation.xc rename to tests/app_test_i2s_loopback/simulation.xc diff --git a/tests/i2s_loopback/usb_device.h b/tests/app_test_i2s_loopback/usb_device.h similarity index 100% rename from tests/i2s_loopback/usb_device.h rename to tests/app_test_i2s_loopback/usb_device.h diff --git a/tests/i2s_loopback/usb_device.xc b/tests/app_test_i2s_loopback/usb_device.xc similarity index 100% rename from tests/i2s_loopback/usb_device.xc rename to tests/app_test_i2s_loopback/usb_device.xc diff --git a/tests/i2s_loopback/xk_216_mc/audiohw.xc b/tests/app_test_i2s_loopback/xk_216_mc/audiohw.xc similarity index 100% rename from tests/i2s_loopback/xk_216_mc/audiohw.xc rename to tests/app_test_i2s_loopback/xk_216_mc/audiohw.xc diff --git a/tests/i2s_loopback/xk_216_mc/cs2100.h b/tests/app_test_i2s_loopback/xk_216_mc/cs2100.h similarity index 100% rename from tests/i2s_loopback/xk_216_mc/cs2100.h rename to tests/app_test_i2s_loopback/xk_216_mc/cs2100.h diff --git a/tests/i2s_loopback/xk_216_mc/cs4384.h b/tests/app_test_i2s_loopback/xk_216_mc/cs4384.h similarity index 100% rename from tests/i2s_loopback/xk_216_mc/cs4384.h rename to tests/app_test_i2s_loopback/xk_216_mc/cs4384.h diff --git a/tests/i2s_loopback/xk_216_mc/cs5368.h b/tests/app_test_i2s_loopback/xk_216_mc/cs5368.h similarity index 100% rename from tests/i2s_loopback/xk_216_mc/cs5368.h rename to tests/app_test_i2s_loopback/xk_216_mc/cs5368.h diff --git a/tests/i2s_loopback/xk_216_mc/gpio_access.c b/tests/app_test_i2s_loopback/xk_216_mc/gpio_access.c similarity index 100% rename from tests/i2s_loopback/xk_216_mc/gpio_access.c rename to tests/app_test_i2s_loopback/xk_216_mc/gpio_access.c diff --git a/tests/i2s_loopback/xk_216_mc/gpio_access.h b/tests/app_test_i2s_loopback/xk_216_mc/gpio_access.h similarity index 100% rename from tests/i2s_loopback/xk_216_mc/gpio_access.h rename to tests/app_test_i2s_loopback/xk_216_mc/gpio_access.h diff --git a/tests/i2s_loopback/xk_216_mc/xk-audio-216-mc.xn b/tests/app_test_i2s_loopback/xk_216_mc/xk-audio-216-mc.xn similarity index 100% rename from tests/i2s_loopback/xk_216_mc/xk-audio-216-mc.xn rename to tests/app_test_i2s_loopback/xk_216_mc/xk-audio-216-mc.xn diff --git a/tests/i2s_loopback/xua_conf.h b/tests/app_test_i2s_loopback/xua_conf.h similarity index 100% rename from tests/i2s_loopback/xua_conf.h rename to tests/app_test_i2s_loopback/xua_conf.h diff --git a/tests/test_i2s_loopback.py b/tests/test_i2s_loopback.py index 1aee29c8..06821bef 100644 --- a/tests/test_i2s_loopback.py +++ b/tests/test_i2s_loopback.py @@ -5,7 +5,7 @@ def runtest_one_config(env, format, i2s_role, num_chans_in, num_chans_out, sampl testlevel = 'smoke' resources = xmostest.request_resource('xsim') - binary = 'i2s_loopback/bin/{env}_{format}_{i2s_role}_{num_chans_in}in_{num_chans_out}out_{sample_rate}/i2s_loopback_{env}_{format}_{i2s_role}_{num_chans_in}in_{num_chans_out}out_{sample_rate}.xe'.format(env=env, format=format, i2s_role=i2s_role, num_chans_in=num_chans_in, num_chans_out=num_chans_out, sample_rate=sample_rate) + binary = 'app_test_i2s_loopback/bin/{env}_{format}_{i2s_role}_{num_chans_in}in_{num_chans_out}out_{sample_rate}/app_test_i2s_loopback_{env}_{format}_{i2s_role}_{num_chans_in}in_{num_chans_out}out_{sample_rate}.xe'.format(env=env, format=format, i2s_role=i2s_role, num_chans_in=num_chans_in, num_chans_out=num_chans_out, sample_rate=sample_rate) tester = xmostest.ComparisonTester(open('pass.expect'), 'lib_xua', 'i2s_loopback_sim_tests',