From 61b6a4f7d32ef7de036740c7af65f302452e7e4e Mon Sep 17 00:00:00 2001 From: Jacob Stiffler Date: Fri, 1 Nov 2019 14:55:08 -0400 Subject: [PATCH] mcbsp-lld: add to PDK Development of mcbsp-lld has been relocated here from: * Repo: https://git.ti.com/keystone-rtos/mcbsp-lld * Branch: master * Commit ID: cd201419a8b4e4aefee6b9323d9a84f4ea467d6a Signed-off-by: Jacob Stiffler --- packages/ti/drv/mcbsp/.gitignore | 28 + packages/ti/drv/mcbsp/Settings.xdc.xdt | 51 + packages/ti/drv/mcbsp/build/buildlib.xs | 614 +++ packages/ti/drv/mcbsp/build/makefile.mk | 67 + packages/ti/drv/mcbsp/config.bld | 232 + packages/ti/drv/mcbsp/config_mk.bld | 43 + packages/ti/drv/mcbsp/device/Module.xs | 33 + .../device/c6657/src/device_mcbsp_loopback.c | 180 + .../device/c674x/src/device_mcbsp_loopback.c | 184 + .../device/k2g/src/device_mcbsp_loopback.c | 187 + .../omapl138/src/device_mcbsp_loopback.c | 182 + packages/ti/drv/mcbsp/docs/Doxyfile | 293 ++ packages/ti/drv/mcbsp/docs/MCBSP_LLD_SDS.pdf | 4504 +++++++++++++++++ .../mcbsp/docs/MCBSP_LLD_SoftwareManifest.doc | Bin 0 -> 56320 bytes .../mcbsp/docs/MCBSP_LLD_SoftwareManifest.pdf | Bin 0 -> 89727 bytes packages/ti/drv/mcbsp/docs/McBSP_LLD_SDS.doc | Bin 0 -> 438272 bytes packages/ti/drv/mcbsp/docs/Module.xs | 54 + .../drv/mcbsp/docs/ReleaseNotes_MCBSP_LLD.doc | Bin 0 -> 137216 bytes .../drv/mcbsp/docs/ReleaseNotes_MCBSP_LLD.pdf | Bin 0 -> 285734 bytes packages/ti/drv/mcbsp/docs/Thumbs.db | Bin 0 -> 23552 bytes packages/ti/drv/mcbsp/docs/doxyfile.xdt | 302 ++ .../mcbsp/docs/mpbu mcbsp lld aug 2012 .doc | Bin 0 -> 267776 bytes .../docs/mpbumcbsp_C6657July2012Report.html | 1048 ++++ packages/ti/drv/mcbsp/docs/tifooter.htm | 4 + packages/ti/drv/mcbsp/docs/tiheader.htm | 12 + packages/ti/drv/mcbsp/docs/tilogo.gif | Bin 0 -> 1137 bytes packages/ti/drv/mcbsp/docs/titagline.gif | Bin 0 -> 653 bytes packages/ti/drv/mcbsp/eclipseDocs/sample.xml | 20 + .../drv/mcbsp/eclipseDocs/toc_cdoc_sample.xml | 21 + packages/ti/drv/mcbsp/example/Module.xs | 58 + ...CBSP_evmc6657_C66DigLpbkExampleProject.txt | 7 + .../MCBSPDigLpbk/bios6_edma3_drv_sample.h | 186 + .../example/c6657/MCBSPDigLpbk/config.bld | 82 + .../c6657/MCBSPDigLpbk/mcbspMasterDigLpbk.c | 993 ++++ .../c6657/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg | 80 + .../c6657/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd | 9 + .../MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c | 641 +++ .../c6657/MCBSPDigLpbk/sample_c6657_cfg.c | 701 +++ .../c6657/MCBSPDigLpbk/sample_c6657_int_reg.c | 153 + .../example/c6657/MCBSPDigLpbk/sample_cs.c | 419 ++ .../example/c6657/MCBSPDigLpbk/sample_init.c | 226 + .../MCBSP_DigLpbkC66ExampleProject.txt | 11 + .../MCBSPDigLpbk/bios6_edma3_drv_sample.h | 186 + .../c674x/MCBSPDigLpbk/mcbspMasterDigLpbk.c | 978 ++++ .../c674x/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg | 78 + .../c674x/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd | 9 + .../MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c | 639 +++ .../c674x/MCBSPDigLpbk/sample_c6657_cfg.c | 692 +++ .../c674x/MCBSPDigLpbk/sample_c6657_int_reg.c | 228 + .../example/c674x/MCBSPDigLpbk/sample_cs.c | 420 ++ .../example/c674x/MCBSPDigLpbk/sample_init.c | 223 + .../c674x/MCBSPDigLpbk/sample_omapl138_cfg.c | 1391 +++++ .../MCBSPDigLpbk/sample_omapl138_int_reg.c | 152 + .../ti/drv/mcbsp/example/include/MCBSP_log.h | 77 + .../MCBSP_DigLpbkevmK2Gc66ExampleProject.txt | 8 + .../k2g/MCBSPDigLpbk/bios6_edma3_drv_sample.h | 186 + .../mcbsp/example/k2g/MCBSPDigLpbk/config.bld | 82 + .../k2g/MCBSPDigLpbk/mcbspMasterDigLpbk.c | 979 ++++ .../k2g/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg | 80 + .../k2g/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd | 9 + .../MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c | 641 +++ .../example/k2g/MCBSPDigLpbk/sample_k2g_cfg.c | 1217 +++++ ...gLpbk_lcdkOMAPL138_c674xExampleProject.txt | 11 + .../MCBSPDigLpbk/bios6_edma3_drv_sample.h | 186 + .../MCBSPDigLpbk/mcbspMasterDigLpbk.c | 978 ++++ .../MCBSPDigLpbk/mcbspMasterDigLpbk.cfg | 78 + .../MCBSPDigLpbk/mcbspMasterDigLpbk.cmd | 9 + .../MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c | 639 +++ .../example/omapl138/MCBSPDigLpbk/sample_cs.c | 420 ++ .../omapl138/MCBSPDigLpbk/sample_init.c | 223 + .../MCBSPDigLpbk/sample_omapl138_cfg.c | 1391 +++++ .../MCBSPDigLpbk/sample_omapl138_int_reg.c | 152 + packages/ti/drv/mcbsp/include/Module.xs | 33 + packages/ti/drv/mcbsp/include/mcbsp_pvt.h | 448 ++ packages/ti/drv/mcbsp/install/mcbsplld.mpi | 1839 +++++++ packages/ti/drv/mcbsp/makefile | 46 + packages/ti/drv/mcbsp/mcbsp_component.mk | 129 + packages/ti/drv/mcbsp/mcbsp_drv.h | 1245 +++++ packages/ti/drv/mcbsp/mcbsp_osal.h | 515 ++ packages/ti/drv/mcbsp/mcbsp_types.h | 49 + packages/ti/drv/mcbsp/mcbspver.h | 68 + packages/ti/drv/mcbsp/mcbspver.h.xdt | 100 + packages/ti/drv/mcbsp/package.bld | 122 + packages/ti/drv/mcbsp/package.xdc | 15 + packages/ti/drv/mcbsp/package.xs | 86 + packages/ti/drv/mcbsp/setupenv.bat | 84 + packages/ti/drv/mcbsp/setupenv.sh | 4 + packages/ti/drv/mcbsp/src/Module.xs | 87 + packages/ti/drv/mcbsp/src/mcbsp_drv.c | 2724 ++++++++++ packages/ti/drv/mcbsp/src/mcbsp_edma.c | 1952 +++++++ packages/ti/drv/mcbsp/src/mcbsp_ioctl.c | 630 +++ packages/ti/drv/mcbsp/src/src_files_common.mk | 12 + 92 files changed, 34175 insertions(+) create mode 100644 packages/ti/drv/mcbsp/.gitignore create mode 100644 packages/ti/drv/mcbsp/Settings.xdc.xdt create mode 100755 packages/ti/drv/mcbsp/build/buildlib.xs create mode 100644 packages/ti/drv/mcbsp/build/makefile.mk create mode 100644 packages/ti/drv/mcbsp/config.bld create mode 100644 packages/ti/drv/mcbsp/config_mk.bld create mode 100755 packages/ti/drv/mcbsp/device/Module.xs create mode 100644 packages/ti/drv/mcbsp/device/c6657/src/device_mcbsp_loopback.c create mode 100644 packages/ti/drv/mcbsp/device/c674x/src/device_mcbsp_loopback.c create mode 100644 packages/ti/drv/mcbsp/device/k2g/src/device_mcbsp_loopback.c create mode 100644 packages/ti/drv/mcbsp/device/omapl138/src/device_mcbsp_loopback.c create mode 100644 packages/ti/drv/mcbsp/docs/Doxyfile create mode 100644 packages/ti/drv/mcbsp/docs/MCBSP_LLD_SDS.pdf create mode 100644 packages/ti/drv/mcbsp/docs/MCBSP_LLD_SoftwareManifest.doc create mode 100644 packages/ti/drv/mcbsp/docs/MCBSP_LLD_SoftwareManifest.pdf create mode 100644 packages/ti/drv/mcbsp/docs/McBSP_LLD_SDS.doc create mode 100644 packages/ti/drv/mcbsp/docs/Module.xs create mode 100644 packages/ti/drv/mcbsp/docs/ReleaseNotes_MCBSP_LLD.doc create mode 100644 packages/ti/drv/mcbsp/docs/ReleaseNotes_MCBSP_LLD.pdf create mode 100644 packages/ti/drv/mcbsp/docs/Thumbs.db create mode 100644 packages/ti/drv/mcbsp/docs/doxyfile.xdt create mode 100644 packages/ti/drv/mcbsp/docs/mpbu mcbsp lld aug 2012 .doc create mode 100644 packages/ti/drv/mcbsp/docs/mpbumcbsp_C6657July2012Report.html create mode 100644 packages/ti/drv/mcbsp/docs/tifooter.htm create mode 100644 packages/ti/drv/mcbsp/docs/tiheader.htm create mode 100644 packages/ti/drv/mcbsp/docs/tilogo.gif create mode 100644 packages/ti/drv/mcbsp/docs/titagline.gif create mode 100644 packages/ti/drv/mcbsp/eclipseDocs/sample.xml create mode 100644 packages/ti/drv/mcbsp/eclipseDocs/toc_cdoc_sample.xml create mode 100644 packages/ti/drv/mcbsp/example/Module.xs create mode 100644 packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/MCBSP_evmc6657_C66DigLpbkExampleProject.txt create mode 100644 packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/bios6_edma3_drv_sample.h create mode 100644 packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/config.bld create mode 100644 packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk.c create mode 100644 packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg create mode 100644 packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd create mode 100644 packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c create mode 100644 packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/sample_c6657_cfg.c create mode 100644 packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/sample_c6657_int_reg.c create mode 100644 packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/sample_cs.c create mode 100644 packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/sample_init.c create mode 100644 packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/MCBSP_DigLpbkC66ExampleProject.txt create mode 100644 packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/bios6_edma3_drv_sample.h create mode 100644 packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk.c create mode 100644 packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg create mode 100644 packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd create mode 100644 packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c create mode 100644 packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_c6657_cfg.c create mode 100644 packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_c6657_int_reg.c create mode 100644 packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_cs.c create mode 100644 packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_init.c create mode 100644 packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_omapl138_cfg.c create mode 100644 packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_omapl138_int_reg.c create mode 100644 packages/ti/drv/mcbsp/example/include/MCBSP_log.h create mode 100644 packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/MCBSP_DigLpbkevmK2Gc66ExampleProject.txt create mode 100644 packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/bios6_edma3_drv_sample.h create mode 100644 packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/config.bld create mode 100644 packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk.c create mode 100644 packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg create mode 100644 packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd create mode 100644 packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c create mode 100644 packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/sample_k2g_cfg.c create mode 100644 packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/MCBSP_DigLpbk_lcdkOMAPL138_c674xExampleProject.txt create mode 100644 packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/bios6_edma3_drv_sample.h create mode 100644 packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk.c create mode 100644 packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg create mode 100644 packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd create mode 100644 packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c create mode 100644 packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_cs.c create mode 100644 packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_init.c create mode 100644 packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_omapl138_cfg.c create mode 100644 packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_omapl138_int_reg.c create mode 100644 packages/ti/drv/mcbsp/include/Module.xs create mode 100644 packages/ti/drv/mcbsp/include/mcbsp_pvt.h create mode 100644 packages/ti/drv/mcbsp/install/mcbsplld.mpi create mode 100644 packages/ti/drv/mcbsp/makefile create mode 100644 packages/ti/drv/mcbsp/mcbsp_component.mk create mode 100644 packages/ti/drv/mcbsp/mcbsp_drv.h create mode 100644 packages/ti/drv/mcbsp/mcbsp_osal.h create mode 100644 packages/ti/drv/mcbsp/mcbsp_types.h create mode 100644 packages/ti/drv/mcbsp/mcbspver.h create mode 100644 packages/ti/drv/mcbsp/mcbspver.h.xdt create mode 100644 packages/ti/drv/mcbsp/package.bld create mode 100644 packages/ti/drv/mcbsp/package.xdc create mode 100644 packages/ti/drv/mcbsp/package.xs create mode 100644 packages/ti/drv/mcbsp/setupenv.bat create mode 100644 packages/ti/drv/mcbsp/setupenv.sh create mode 100644 packages/ti/drv/mcbsp/src/Module.xs create mode 100644 packages/ti/drv/mcbsp/src/mcbsp_drv.c create mode 100644 packages/ti/drv/mcbsp/src/mcbsp_edma.c create mode 100644 packages/ti/drv/mcbsp/src/mcbsp_ioctl.c create mode 100644 packages/ti/drv/mcbsp/src/src_files_common.mk diff --git a/packages/ti/drv/mcbsp/.gitignore b/packages/ti/drv/mcbsp/.gitignore new file mode 100644 index 000000000..36f8dd104 --- /dev/null +++ b/packages/ti/drv/mcbsp/.gitignore @@ -0,0 +1,28 @@ +*.sw? +*~ +*.bak +*.orig +.dlls +.executables +.interfaces +.libraries +.xdcenv.mak +Settings.h +Settings.xdc +build/c674?/ +build/c66/ +build/k2?/ +build/c6657/ +docs/Doxyfile +docs/doxygen/ +docs/mcbsplldDocs.chm +lib/ +/makefile +package.mak +package/ +packages/ +analysis/ +test/*/c66/bios/src +example/*/MCBSPDigLpbk/src/ +Debug/ +Release/ diff --git a/packages/ti/drv/mcbsp/Settings.xdc.xdt b/packages/ti/drv/mcbsp/Settings.xdc.xdt new file mode 100644 index 000000000..e422bfbe2 --- /dev/null +++ b/packages/ti/drv/mcbsp/Settings.xdc.xdt @@ -0,0 +1,51 @@ + +%%{ +/*! + * This template implements the Settings.xdc + */ + /* Versioning */ + var ver = this; + for each(i=0;i 1; i--) { + pkgroot+="/.."; + } + + makefile.writeLine("\n# ROOT Directory"); + makefile.writeLine("export ROOTDIR := "+pkgroot); + + makefile.writeLine("\n# INCLUDE Directory"); + makefile.writeLine("export INCDIR := "+getxdcpath+";$(ROOTDIR)"); + + makefile.writeLine("\n# Common Macros used in make"); + makefile.writeLine("\nifndef RM"); + makefile.writeLine("export RM = rm -f"); + makefile.writeLine("endif"); + + makefile.writeLine("\nifndef CP"); + makefile.writeLine("export CP = cp -p"); + makefile.writeLine("endif"); + + makefile.writeLine("\nexport MKDIR = mkdir -p"); + + makefile.writeLine("\nifndef RMDIR"); + makefile.writeLine("export RMDIR = rm -rf"); + makefile.writeLine("endif"); + + makefile.writeLine("\nifndef SED"); + makefile.writeLine("export SED = sed"); + makefile.writeLine("endif"); + + makefile.writeLine("\nifndef MAKE"); + makefile.writeLine("export MAKE = make"); + makefile.writeLine("endif"); + + makefile.writeLine("\n# PHONY Targets"); + makefile.writeLine(".PHONY: all clean cleanall "); + + makefile.writeLine("\n# FORCE Targets"); + makefile.writeLine("FORCE: "); + + makefile.writeLine("\n# all rule"); + makefile.writeLine("all: .executables"); + makefile.writeLine(".executables: .libraries"); + makefile.writeLine(".libraries:"); + + makefile.writeLine("\n# Clean Rule"); + makefile.writeLine("clean:: clean_package"); + makefile.writeLine("# Clean Top Level Object Directory "); + makefile.writeLine("clean_package :\n\t$(RMDIR) $(LIBDIR)/*/"); + makefile.writeLine("\t$(RMDIR) package/cfg"); + } + else + { + try{ + makefile = fileModule.open("makefile", "a"); + } catch (ex) + { + print("makefile cannot be written to. Please check Writing Permissions."); + java.lang.System.exit(1); + } + + } + + return makefile; +} + +function createLibMake(device, makelibname,targetname, objectPath) +{ + var tooldir; + var cmdprefix; + var targetDir; + var stringname=String(targetname).replace("(xdc.bld.ITarget.Module)",""); + + switch(stringname) + { + case String(C66LE): + tooldir="C6X_GEN_INSTALL_PATH"; + cmdprefix=""; + targetDir="c66/release"; + targetname=C66LE; + break; + case String(C66BE): + tooldir="C6X_GEN_INSTALL_PATH"; + cmdprefix=""; + targetDir="c66/release"; + targetname=C66BE; + break; + case String(A15LE): + tooldir="TOOLCHAIN_PATH_A15"; + cmdprefix="CROSS_TOOL_PRFX"; + targetDir="a15/release"; + targetname=A15LE; + break; + case String(A9LE): + tooldir="TOOLCHAIN_PATH_A9"; + cmdprefix="CROSS_TOOL_PRFX"; + targetDir="a9/release"; + targetname=A9LE; + break; + case String(A8LE): + tooldir="TOOLCHAIN_PATH_A8"; + cmdprefix="CROSS_TOOL_PRFX"; + targetDir="a8/release"; + targetname=A8LE; + break; + case String(M4LE): + tooldir="TOOLCHAIN_PATH_M4"; + cmdprefix=""; + targetDir="m4/release"; + targetname=M4LE; + break; + case String(C674LE): + tooldir="C6X_GEN_INSTALL_PATH"; + cmdprefix=""; + targetDir="c674/release"; + targetname=C674LE; + break; + + } + var fileModule = xdc.module('xdc.services.io.File'); + try{ + var dstFile = new java.io.File(makelibname); + dstFile.getParentFile().mkdirs(); + libmakefile = fileModule.open(makelibname, "w"); + /* Add to Archive list */ + } catch (ex) + { + print(makelibname+" cannot be written to. Please check Writing Permissions."); + java.lang.System.exit(1); + } + libmakefile.writeLine("#*******************************************************************************"); + libmakefile.writeLine("#* FILE PURPOSE: Lower level makefile for Creating Component Libraries"); + libmakefile.writeLine("#*******************************************************************************"); + libmakefile.writeLine("#* FILE NAME: "+makelibname); + libmakefile.writeLine("#*"); + libmakefile.writeLine("#* DESCRIPTION: Defines Source Files, Compilers flags and build rules"); + libmakefile.writeLine("#*"); + libmakefile.writeLine("#*"); + libmakefile.writeLine("#*******************************************************************************"); + libmakefile.writeLine("#"); + libmakefile.writeLine(""); + libmakefile.writeLine("#"); + libmakefile.writeLine("# Macro definitions referenced below"); + libmakefile.writeLine("#"); + libmakefile.writeLine("empty ="); + libmakefile.writeLine("space =$(empty) $(empty)"); + + if ((targetname.name == "A15F") || (targetname.name == "A9F") || (targetname.name == "A8F")) + { + + if(stringname.match("gnu.targets")) + { + libmakefile.writeLine("CC = $("+tooldir+")/bin/$("+cmdprefix+")gcc"); + libmakefile.writeLine("AC = $("+tooldir+")/bin/$("+cmdprefix+")as"); + libmakefile.writeLine("ARIN = $("+tooldir+")/bin/$("+cmdprefix+")ar"); + libmakefile.writeLine("LD = $("+tooldir+")/bin/$("+cmdprefix+")gcc"); + } + else + { + print("Error: Non-GNU targets are not currently supported "); + java.lang.System.exit(1); + + } + + libmakefile.writeLine("INCS = -I. -I$(strip $(subst ;, -I,$(subst $(space),\\$(space),$(INCDIR)))) -I$("+tooldir+")/include"); + libmakefile.writeLine("OBJEXT = o"+targetname.suffix); + libmakefile.writeLine("AOBJEXT = s"+targetname.suffix); + libmakefile.writeLine("CFLAGS_INTERNAL = " +targetname.ccOpts.prefix+" "+targetname.cc.opts); + libmakefile.writeLine("ASFLAGS_INTERNAL = " +targetname.asmOpts.prefix+" "+targetname.asm.opts); + libmakefile.writeLine("ARFLAGS_INTERNAL = " +targetname.ar.opts); + libmakefile.writeLine("LNKFLAGS_INTERNAL = " +targetname.lnk.opts); + libmakefile.writeLine("INTERNALDEFS = -MD -MF $@.dep"); + libmakefile.writeLine("INTERNALLINKDEFS = -o $@ -m $@.map"); /* TBD */ + libmakefile.writeLine("OBJDIR = ./obj/obj_" +targetname.suffix +"/" + device.toString() + "/" + targetDir +"/obj" + "/" + objExtDir); + + } + else + { + + if(stringname.match("ti.targets")) + { + + var rtslibtemp = targetname.lnkOpts.suffix.toString().split("/"); + var rtslib; + for(n=0;n> $@.dep; \\"); + makefilename.writeLine(" $(RM) $@.pp "); + } + } + else if(fileExt == "asm") + { + makefilename.writeLine("\t$(AC) $(ASFLAGS_INTERNAL) $("+compileflagstring+") $(INTERNALDEFS) $(INCS) -fa $< "); + } + else if(fileExt == "sa") + { + makefilename.writeLine("\t$(AC) $(ASFLAGS_INTERNAL) $("+compileflagstring+") $(INTERNALDEFS) $(INCS) $< "); + } + + makefilename.writeLine("\n#Create Empty rule for dependency"); + makefilename.writeLine("$("+objectliststring+"):"+makefilename.$private.fd); + makefilename.writeLine(makefilename.$private.fd+":"); + makefilename.writeLine("\n#Include Depedency for "+srcString+" Files"); + makefilename.writeLine("ifneq (clean,$(MAKECMDGOALS))"); + makefilename.writeLine(" -include $("+objectliststring+":%.$(OBJEXT)=%.$(OBJEXT).dep)"); + makefilename.writeLine("endif"); + +} + +/************************************************************************** + * FUNCTION NAME : buildLibrary + ************************************************************************** + * DESCRIPTION : + * Utility function which will build a specific library + **************************************************************************/ +var makefilelocal; +function buildLibrary (socName, isSoc, libOptions, libName, target, libFiles) +{ + var targetDir; + var objExtDir; + + if (target.name == "A15F") + { + targetDir = "a15/release"; + } + else if (target.name == "A9F") + { + targetDir = "a9/release"; + } + else if (target.name == "A8F") + { + targetDir = "a8/release"; + } + else if (target.name == "M4") + { + targetDir = "m4/release"; + } + else if (target.name == "C674") + { + targetDir = "c674"; + } + else + { + targetDir = "c66"; + } + + /* Derive the operating system and soc names */ + if (isSoc == "true") { + var libNameExp = libName+"."+socName; + targetDir = socName+"/"+targetDir; + objExtDir = "soc"; + } + else { + var libNameExp = libName; + objExtDir = "all"; + } + + var lldFullLibraryPath = "./lib/" + targetDir +"/" + libNameExp; + var lldFullBuildPath = "./build/" + targetDir +"/" + libNameExp; + var lldFullLibraryPathMake = "$(LIBDIR)/" + targetDir +"/" + libNameExp; + + /* Create Main make file in the root of package folder */ + makefilelocal = createMake(makefilelocal); + + /* Write the rule to make library in main makefile */ + lib = lldFullBuildPath+".a"+target.suffix; + libMake = lldFullLibraryPathMake+".a"+target.suffix; + var objectPath= "./package/"+lldFullBuildPath; + makefilelocal.writeLine("\n\n# Make rule to create "+libMake+" library"); + makefilelocal.writeLine(".libraries: "+ libMake); + makefilelocal.writeLine(libMake+": FORCE\n\t$(MAKE) -f "+lib+".mk $@"); + + /* Create Library make file in the lib folder */ + var makefilelib= createLibMake(socName, lib+".mk",target,objectPath); + + /* Rule to clean library in main makefile */ + makefilelocal.writeLine("# Rule to clean "+libMake+" library"); + makefilelocal.writeLine("clean ::\n\t$(RM) "+ libMake); + librule="\n\n"+libMake+" :"; + + /* Add files to be compiled */ + /* Separate out the C and assembly files */ + var cfiles= new Array(); + var afiles= new Array(); + var safiles= new Array(); + for each(var srcFile in libFiles) + { + var srcFile=String(srcFile); + var dot = srcFile.lastIndexOf("."); + var extension = srcFile.substr(dot,srcFile.length); + if(extension == ".c") + { + cfiles.push(srcFile); + } + else if(extension == ".sa") + { + safiles.push(srcFile); + } + else if(extension == ".asm") + { + afiles.push(srcFile); + } + else + { + print("ERROR: Unsupported file extension"); + java.lang.System.exit(1); + } + } + if(cfiles.length > 0) + { + makeAddObjects("COMMONSRC",makefilelib,cfiles,libOptions,"c",target, "$(OBJDIR)"); + librule += " $(COMMONSRCCOBJS)"; + } + if(afiles.length > 0) + { + makeAddObjects("COMMONSRC",makefilelib,afiles,libOptions,"asm",target, "$(OBJDIR)"); + librule += " $(COMMONSRCASMOBJS)"; + } + if(safiles.length > 0) + { + makeAddObjects("COMMONSRC",makefilelib,safiles,libOptions,"sa",target, "$(OBJDIR)"); + librule += " $(COMMONSRCSAOBJS)"; + } + + makefilelib.writeLine(librule); + makefilelib.writeLine("\t@echo archiving $? into $@ ..."); + makefilelib.writeLine("\tif [ ! -d $(LIBDIR)/"+targetDir+" ]; then $(MKDIR) $(LIBDIR)/"+targetDir+" ; fi;"); + makefilelib.writeLine("\t$(ARIN) $(ARFLAGS_INTERNAL) $@ $?"); + makefilelib.close(); + + /* Create the Epilogue; which executes after all the builds are completed. + * This is used to generate the benchmark information for the built library. + * Also add the benchmarking information file to the package. */ + + /* Put the temp file in object directory since javascript doesn't have a built in tmpname, + * and don't want --jobs=# with # > 1 to result in collisions */ + var libFullName = lldFullLibraryPath + ".a" + target.suffix; + var tempFile = libFullName + ".xml"; + Pkg.makeEpilogue += ".libraries: " + libFullName + "_size.txt\n"; + Pkg.makeEpilogue += libFullName + "_size.txt: " + libFullName + "\n"; + if ( java.lang.String(target.name).contains('66') ) + { + Pkg.makeEpilogue += "\n\t $(C6X_GEN_INSTALL_PATH)/bin/ofd6x -x " + libFullName + " > " + tempFile; + Pkg.makeEpilogue += "\n\t $(SECTTI) " + tempFile + " > " + libFullName + "_size.txt"; + Pkg.makeEpilogue += "\n\t $(RM) " + tempFile + "\n\n"; + } + else if (target.name == "M4") + { + Pkg.makeEpilogue += "\n\t $(TOOLCHAIN_PATH_M4)/bin/armofd -x " + libFullName + " > " + tempFile; + Pkg.makeEpilogue += "\n\t $(SECTTI) " + tempFile + " > " + libFullName + "_size.txt"; + Pkg.makeEpilogue += "\n\t $(RM) " + tempFile + "\n\n"; + } + else + { + Pkg.makeEpilogue += "\n\t $(TOOLCHAIN_PATH_A15)/bin/$(CROSS_TOOL_PRFX)size " + libFullName + " > " + libFullName + "_size.txt"; + } + Pkg.otherFiles[Pkg.otherFiles.length++] = lldFullLibraryPath + ".a" + target.suffix + "_size.txt"; + Pkg.otherFiles[Pkg.otherFiles.length++] = lldFullBuildPath + ".a" + target.suffix + ".mk"; + Pkg.otherFiles[Pkg.otherFiles.length++] = lldFullLibraryPath + ".a" + target.suffix; + + /* We need to clean after ourselves; extend the 'clean' target to take care of this. */ + Pkg.makeEpilogue += "\nclean::\n"; + Pkg.makeEpilogue += "\t$(RM) " + lldFullBuildPath + ".a" + target.suffix + "_size.txt\n"; + Pkg.makeEpilogue += "\t$(RMDIR) " + "$(LIBDIR)/" + targetDir + "/ \n\n"; + + return lib; +} + diff --git a/packages/ti/drv/mcbsp/build/makefile.mk b/packages/ti/drv/mcbsp/build/makefile.mk new file mode 100644 index 000000000..84c936062 --- /dev/null +++ b/packages/ti/drv/mcbsp/build/makefile.mk @@ -0,0 +1,67 @@ +# +# Copyright (c) 2018, Texas Instruments Incorporated +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the name of Texas Instruments Incorporated nor the names of +# its contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +include $(PDK_INSTALL_PATH)/ti/build/Rules.make +include $(PDK_MCBSP_COMP_PATH)/src/src_files_common.mk + +MODULE_NAME = mcbsp + +ifeq ($(SOC),$(filter $(SOC), k2g c6657 omapl138)) +SRCDIR += device/$(SOC)/src +INCDIR += device +# Common source files across all platforms and cores + SRCS_COMMON += device_mcbsp_loopback.c +endif + +# List all the external components/interfaces, whose interface header files +# need to be included for this component +INCLUDE_EXTERNAL_INTERFACES = pdk edma + + +ifeq ($(SOC),$(filter $(SOC), k2g c6657 omapl138)) +PACKAGE_SRCS_COMMON += device/$(SOC)/src +endif + +CFLAGS_LOCAL_COMMON += $(PDK_CFLAGS) +ifeq ($(CORE),$(filter $(CORE), c66x c674x)) +CFLAGS_LOCAL_COMMON += -DBUILD_DSP +endif + +# Include common make files +ifeq ($(MAKERULEDIR), ) +#Makerule path not defined, define this and assume relative path from ROOTDIR + MAKERULEDIR := $(ROOTDIR)/ti/build/makerules + export MAKERULEDIR +endif +include $(MAKERULEDIR)/common.mk + +# Nothing beyond this point diff --git a/packages/ti/drv/mcbsp/config.bld b/packages/ti/drv/mcbsp/config.bld new file mode 100644 index 000000000..4e07c8072 --- /dev/null +++ b/packages/ti/drv/mcbsp/config.bld @@ -0,0 +1,232 @@ +/****************************************************************************** + * FILE PURPOSE: Build configuration Script for the MCBSP Driver + ****************************************************************************** + * FILE NAME: config.bld + * + * DESCRIPTION: + * This file contains the build configuration script for the MCBSP driver + * and is responsible for configuration of the paths for the various + * tools required to build the driver. + * + * Copyright (C) 2012-2013, Texas Instruments, Inc. + *****************************************************************************/ + +/* Get the Tools Base directory from the Environment Variable. */ +var toolsBaseDir = java.lang.System.getenv("C6X_GEN_INSTALL_PATH"); +var m4ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_M4"); +var a15ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A15"); +var a9ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A9"); +var arm9ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_ARM9"); +var a8ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A8"); + +/* Get the extended debug flags */ +var extDbgFlags = java.lang.System.getenv("EXTDBGFLAGS"); + +/* Get the extended debug flags for A15 */ +var extDbgFlags_a15 = java.lang.System.getenv("EXTDBGFLAGS_A15"); + +/* Get the extended debug flags for A8 */ +var extDbgFlags_a8 = java.lang.System.getenv("EXTDBGFLAGS_A8"); + +/* Get the extended debug flags for A9 */ +var extDbgFlags_a9 = java.lang.System.getenv("EXTDBGFLAGS_A9"); + +/* Get the extended debug flags for ARM9 */ +var extDbgFlags_arm9 = java.lang.System.getenv("EXTDBGFLAGS_ARM9"); +/* Get the extended debug flags for M4 */ +var extDbgFlags_m4 = java.lang.System.getenv("EXTDBGFLAGS_M4"); + +/* Get the base directory for the MCBSP Driver Package */ +var mcbspDriverPath = new java.io.File(".//").getPath(); + +/* Read the part number from the environment variable. */ +var mcbspLLDPartNumber = java.lang.System.getenv("PARTNO"); + +/* Get the base directory for the hyplnk LLD Package */ +var mcbsplldPath = new java.io.File(".//").getPath(); +/* Include Path */ +var mcbsplldIncPath = " -i" + mcbsplldPath; +/* Configure the MCBSP Release Version Information */ +var mcbspDriverReleaseVersion = (""+Pkg.version.replace(/\s/g, "")).split(','); + +/* C66 ELF compiler configuration for Little Endian Mode. */ +var C66LE = xdc.useModule('ti.targets.elf.C66'); +C66LE.rootDir = toolsBaseDir; +C66LE.ccOpts.prefix = "-mo -o3 -q -k -eo.o"; +if(extDbgFlags) + C66LE.ccOpts.prefix = C66LE.ccOpts.prefix + " " + extDbgFlags; + +/* C6740 elf compiler configuration for Little Endian Mode. */ +var C674LE = xdc.useModule('ti.targets.elf.C674'); +C674LE.rootDir = toolsBaseDir; +C674LE.ccOpts.prefix = "-mo -o3 -q -k -eo.o"; +if(extDbgFlags) + C674LE.ccOpts.prefix = C674LE.ccOpts.prefix + " " + extDbgFlags; + +/* C66 ELF compiler configuration for Big Endian Mode. */ +var C66BE = xdc.useModule('ti.targets.elf.C66_big_endian'); +C66BE.rootDir = toolsBaseDir; +C66BE.ccOpts.prefix = "-mo -o3 -q -k -eo.o -DBIGENDIAN"; +if(extDbgFlags) + C66BE.ccOpts.prefix = C66BE.ccOpts.prefix + " " + extDbgFlags; + +/* C674 ELF compiler configuration for Big Endian Mode. */ +var C674BE = xdc.useModule('ti.targets.elf.C674_big_endian'); +C674BE.rootDir = toolsBaseDir; +C674BE.ccOpts.prefix = "-mo -o3 -q -k -eo.o -DBIGENDIAN"; +if(extDbgFlags) + C674BE.ccOpts.prefix = C674BE.ccOpts.prefix + " " + extDbgFlags; + +/* ARMv7 A15 compiler configuration */ +var A15LE = xdc.useModule('gnu.targets.arm.A15F'); +A15LE.rootDir = a15ToolsBaseDir; +A15LE.ccOpts.prefix = "-mno-unaligned-access -c -mtune=cortex-a15 -marm -DDRA7xx -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1"; +if(extDbgFlags_a15) + A15LE.ccOpts.prefix = A15LE.ccOpts.prefix + " " + extDbgFlags_a15; + +/* ARMv7 A9 compiler configuration */ +var A9LE = xdc.useModule('gnu.targets.arm.A9F'); +A9LE.rootDir = a9ToolsBaseDir; +A9LE.ccOpts.prefix = "-mno-unaligned-access -c -mtune=cortex-a9 -marm -DDRA7xx -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1"; +if(extDbgFlags_a9) + A9LE.ccOpts.prefix = A9LE.ccOpts.prefix + " " + extDbgFlags_a9; + +/* ARMv5 ARM9 compiler configuration */ +var ARM9LE = xdc.useModule('ti.targets.arm.elf.Arm9'); +ARM9LE.rootDir = arm9ToolsBaseDir; +ARM9LE.ccOpts.prefix = "-mno-unaligned-access -c -mtune=arm926ej-s -msoft-float -mfloat-abi=soft -march=armv5te -marm -DDRA7xx -Dxdc_target_types__=gnu/targets/arm/std.h -Dxdc_target_name__=Arm9 -gstrict-dwarf -Wall -D__ARMv5 -D_LITTLE_ENDIAN=1"; +if(extDbgFlags_arm9) + ARM9LE.ccOpts.prefix = ARM9LE.ccOpts.prefix + " " + extDbgFlags_arm9; + +/* ARMv7 A8 compiler configuration */ +var A8LE = xdc.useModule('gnu.targets.arm.A8F'); +A8LE.rootDir = a8ToolsBaseDir; +A8LE.ccOpts.prefix = "-mno-unaligned-access -c -mtune=cortex-a8 -marm -DDRA7xx -gstrict-dwarf -Wall -D__ARMv7 -D_LITTLE_ENDIAN=1"; +if(extDbgFlags_a8) + A8LE.ccOpts.prefix = A8LE.ccOpts.prefix + " " + extDbgFlags_a8; + +/* M4 ELF compiler configuration for Little Endian Mode. */ +var M4LE = xdc.useModule('ti.targets.arm.elf.M4'); +M4LE.rootDir = m4ToolsBaseDir; +M4LE.ccOpts.prefix = "-o4 -qq -pdsw255 -DMAKEFILE_BUILD"; +if(extDbgFlags_m4) + M4LE.ccOpts.prefix = M4LE.ccOpts.prefix + " " + extDbgFlags_m4; + +/* device name (k2?) is inserted between first an second element of this + list to construct device file name for each device */ +var deviceConstruct = [ "device/", "/src/device_mcbsp_loopback.c" ]; + +/* Create the SoC List */ +var socs = { + /* device independent libraries */ + all : + { + /* Build this library */ + build: "true", + /* SoC lib disabled as this is device independent lib */ + socDevLib: "false", + /* Library options */ + copts: "", + /* target lists, kept blank now, would be updated based on argument lists */ + targets: [] + }, + k2g : + { + /* this variable would be reinitialized to true, if XDCARGS contains k2g */ + build: "false", + /* SoC lib enabled */ + socDevLib: "true", + /* Library options */ + copts: " -DDEVICE_K2G -DSOC_K2G", + /* target list */ + targets: [ C66LE, C66BE ] + }, + omapl138 : + { + /* this variable would be reinitialized to true, if XDCARGS contains omapl138 */ + build: "false", + /* SoC lib enabled */ + socDevLib: "true", + /* Library options */ + copts: " -DSOC_OMAPL138", + /* target list */ + targets: [ C674LE ] + }, + c6657 : + { + /* this variable would be reinitialized to true, if XDCARGS contains c6657 */ + build: "false", + /* SoC lib enabled */ + socDevLib: "true", + /* Library options */ + copts: " -DSOC_C6657", + /* target list */ + targets: [ C66LE, C66BE ] + }, +}; + +/************************************************************************** + * FUNCTION NAME : merge + ************************************************************************** + * DESCRIPTION : + * The function is used to merge two arrarys + **************************************************************************/ +function merge() { + var args = arguments; + var hash = {}; + var arr = []; + for (var i = 0; i < args.length; i++) { + for (var j = 0; j < args[i].length; j++) { + if (hash[args[i][j]] !== true) { + arr[arr.length] = args[i][j]; + hash[args[i][j]] = true; + } + } + } + return arr; +} + +/* Grab input from XDCARGS */ +var buildArguments = []; + +/* Construct the build arguments */ +for (var tmp=0; arguments[tmp] != undefined; tmp++) +{ + + /* If no arguments are provided, override for building all */ + if ( ( arguments.length == 1) && (arguments[tmp].equals("./config.bld")) ) + buildArguments[buildArguments.length++] = "all"; + else + buildArguments[buildArguments.length++] = arguments[tmp]; +} + +/* Build targets on this build */ +var build_targets = []; +var soc_names = Object.keys(socs); + +for (var i=0; i < buildArguments.length; i++ ) { + /* Build it for all targets */ + if (buildArguments[i] == "all") { + for (var j = 0; j < soc_names.length; j++) { + build_targets = merge (build_targets.slice(0), socs[soc_names[j]].targets.slice(0)); + /* Set build to "true" for that SoC */ + socs[soc_names[j]].build = "true"; + } + } + else { + /* Skip the first argument, which is ./config.bld to get to next SoCs */ + if (i == 0) continue; + /* Set that build to true if it is found in supported build socs */ + for (j = 0; j < soc_names.length; j++) { + if (buildArguments[i] == soc_names[j]) { + socs[buildArguments[i]].build = "true"; + build_targets = merge (build_targets.slice(0), socs[buildArguments[i]].targets.slice(0)); + break; + } + } + } +} + +/* Update the Build target generated list */ +socs["all"].targets = build_targets; +Build.targets = build_targets; diff --git a/packages/ti/drv/mcbsp/config_mk.bld b/packages/ti/drv/mcbsp/config_mk.bld new file mode 100644 index 000000000..9f16994cf --- /dev/null +++ b/packages/ti/drv/mcbsp/config_mk.bld @@ -0,0 +1,43 @@ +/****************************************************************************** + * FILE PURPOSE: Build configuration Script for the MCBSP LLD + ****************************************************************************** + * FILE NAME: config.bld + * + * DESCRIPTION: + * This file contains the build configuration script for the MCBSP LLD + * and is responsible for configuration of the paths for the various + * tools required to build the LLD. + * + * Copyright (C) 2018, Texas Instruments, Inc. + *****************************************************************************/ + +/* Get the Tools Base directory from the Environment Variable. */ +var toolsBaseDir = java.lang.System.getenv("C6X_GEN_INSTALL_PATH"); +var m4ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_M4"); +var a15ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A15"); +var a9ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A9"); +var arm9ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_ARM9"); +var a8ToolsBaseDir = java.lang.System.getenv("TOOLCHAIN_PATH_A8"); + +/* Get the base directory for the McBSP LLD Driver Package */ +var driverPath = new java.io.File(".//").getPath(); + +/* Include Path */ +var lldIncludePath = " -I" + driverPath + "/src" + " -I" + driverPath + " -I" + driverPath + "/include"; + +/* Configure the McBSP Release Version Information */ +/* 3 steps: remove SPACE and TAB, convert to string and split to make array */ +var mcbspDriverReleaseVersion = (""+Pkg.version.replace(/\s/g, "")).split(','); + +/* Do not Print the Compiler Options */ +var pOpts = 0; + +/* List of all devices that needs to be build via XDC + * As the build happens through makefile, there is nothing to build via XDC + * using the below for packaging infrastructure + */ +var socs = []; +var devices = []; +var build_devices = []; +Build.targets = [] + diff --git a/packages/ti/drv/mcbsp/device/Module.xs b/packages/ti/drv/mcbsp/device/Module.xs new file mode 100755 index 000000000..71a646e79 --- /dev/null +++ b/packages/ti/drv/mcbsp/device/Module.xs @@ -0,0 +1,33 @@ +/****************************************************************************** + * FILE PURPOSE: MCBSP LLD device files. + ****************************************************************************** + * FILE NAME: Module.xs + * + * DESCRIPTION: + * This file contains the module specification for MCBSP LLD device files. + * + * Copyright (C) 2012, Texas Instruments, Inc. + *****************************************************************************/ + +/* Load the library utility. */ +var libUtility = xdc.loadCapsule ("../build/buildlib.xs"); + +/************************************************************************** + * FUNCTION NAME : modBuild + ************************************************************************** + * DESCRIPTION : + * The function is used to add all the source files in the device + * directory into the package. + **************************************************************************/ +function modBuild() +{ + /* Add all the .c files to the release package. */ + var configFiles = libUtility.listAllFiles (".c", "device", true); + for (var k = 0 ; k < configFiles.length; k++) + Pkg.otherFiles[Pkg.otherFiles.length++] = configFiles[k]; + + /* Add all the .h files to the release package. */ + var configFiles = libUtility.listAllFiles (".h", "device", true); + for (var k = 0 ; k < configFiles.length; k++) + Pkg.otherFiles[Pkg.otherFiles.length++] = configFiles[k]; +} diff --git a/packages/ti/drv/mcbsp/device/c6657/src/device_mcbsp_loopback.c b/packages/ti/drv/mcbsp/device/c6657/src/device_mcbsp_loopback.c new file mode 100644 index 000000000..334dcaa97 --- /dev/null +++ b/packages/ti/drv/mcbsp/device/c6657/src/device_mcbsp_loopback.c @@ -0,0 +1,180 @@ +/* + * mcbsp_device.c + * + * This file contains MCBSP IP related EVM (platform) specific routines + * implementation. This file contains the board specific code for enabling + * the use of mcbsp driver, and may contain related device pre-driver + * initialization routines. The file is provided as a sample configuration + * and should be modified by customers for their own platforms and + * configurations. + * + * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +/* MCBSP Driver Includes. */ +#include +#include +#include + +/* CSL MCBSP Register Layer */ +#include + +/* CSL Chip Functional Layer */ +#include + + +/*============================================================================*/ +/* IMPORTED VARIABLES */ +/*============================================================================*/ + +extern Mcbsp_HwInfo Mcbsp_deviceInstInfo[CSL_MCBSP_PER_CNT]; +extern Mcbsp_TempBuffer Mcbsp_muteBuf[CSL_MCBSP_PER_CNT]; + +#ifdef MCBSP_LOOPJOB_ENABLE +extern Mcbsp_TempBuffer Mcbsp_loopDstBuf[CSL_MCBSP_PER_CNT]; +extern Mcbsp_TempBuffer Mcbsp_loopSrcBuf[CSL_MCBSP_PER_CNT]; +#endif /* MCBSP_LOOPJOB_ENABLE */ + +/* ========================================================================== */ +/* MODULE FUNCTIONS */ +/* ========================================================================== */ +/** + * \brief Initializes McBSP driver's data structures + * + * This function initializes the McBSP driver's data structures + * including instance objects and channel objects. This is the + * MCBSP Driver Initialization API which needs to be invoked by + * the users to initialize the MCBSP peripheral. This call is + * *mandatory* and should be called before calling any of the + * other driver API's. This can be modified by customers for + * their application and configuration. + * + * \return None + */ +void McbspDevice_init(void) +{ + int32_t devId = 0; + void *key; + + /* Begin Critical Section before accessing shared resources. */ + key = Mcbsp_osalEnterMultipleCoreCriticalSection (); + + /* Invalidate the Cache Contents */ + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_deviceInstInfo, sizeof(Mcbsp_deviceInstInfo)); + + /* initialize the loop job buffers and the mute buffers for all instances */ +#ifdef MCBSP_LOOPJOB_ENABLE + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_loopDstBuf, sizeof(Mcbsp_loopDstBuf)); + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_loopSrcBuf, sizeof(Mcbsp_loopSrcBuf)); + memset((void *)Mcbsp_loopDstBuf,0x0, + sizeof(Mcbsp_TempBuffer) * CSL_MCBSP_PER_CNT); + memset((void *)Mcbsp_loopSrcBuf,0x0, + sizeof(Mcbsp_TempBuffer) * CSL_MCBSP_PER_CNT); +#endif /* MCBSP_LOOPJOB_ENABLE */ + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_muteBuf, sizeof(Mcbsp_muteBuf)); + memset((void *)Mcbsp_muteBuf,0x0, + sizeof(Mcbsp_TempBuffer) * CSL_MCBSP_PER_CNT); + + /* initialize the information for all the device instances */ + for (devId = 0; devId < CSL_MCBSP_PER_CNT; devId++) + { + if (0 == devId) + { + /* instance 0 initialisation */ + Mcbsp_deviceInstInfo[devId].obj.instNum = (uint32_t)devId; + Mcbsp_deviceInstInfo[devId].obj.regs = + (CSL_McbspRegsOvly)CSL_Mcbsp0_CFG_DATA_REGS; + Mcbsp_deviceInstInfo[devId].obj.fifoRegs = + (CSL_BfifoRegsOvly)CSL_Mcbsp0_FIFO_CFG_REGS; + Mcbsp_deviceInstInfo[devId].obj.dataAddress = + (CSL_BdataRegsOvly)CSL_Mcbsp0_FIFO_DATA_REGS; + Mcbsp_deviceInstInfo[devId].obj.edmaTxEventNum = + (uint32_t)CSL_EDMA3CC2_XEVT0_MCBSP_A; + Mcbsp_deviceInstInfo[devId].obj.edmaRxEventNum = + (uint32_t)CSL_EDMA3CC2_REVT0_MCBSP_A; + Mcbsp_deviceInstInfo[devId].obj.cpuTxEventNum = + (uint32_t)CSL_INTC0_XEVT0; + Mcbsp_deviceInstInfo[devId].obj.cpuRxEventNum = + (uint32_t)CSL_INTC0_REVT0; + } + else if (1 == devId) + { + /* instance 1 initialisation */ + Mcbsp_deviceInstInfo[devId].obj.instNum = (uint32_t)devId; + Mcbsp_deviceInstInfo[devId].obj.regs = + (CSL_McbspRegsOvly)CSL_Mcbsp1_CFG_DATA_REGS; + Mcbsp_deviceInstInfo[devId].obj.fifoRegs = + (CSL_BfifoRegsOvly)CSL_Mcbsp1_FIFO_CFG_REGS; + Mcbsp_deviceInstInfo[devId].obj.dataAddress = + (CSL_BdataRegsOvly)CSL_Mcbsp1_FIFO_DATA_REGS; + Mcbsp_deviceInstInfo[devId].obj.edmaTxEventNum = + (uint32_t)CSL_EDMA3CC2_XEVT1_MCBSP_B; + Mcbsp_deviceInstInfo[devId].obj.edmaRxEventNum = + (uint32_t)CSL_EDMA3CC2_REVT1_MCBSP_B; + Mcbsp_deviceInstInfo[devId].obj.cpuTxEventNum = + (uint32_t)CSL_INTC0_XEVT1; + Mcbsp_deviceInstInfo[devId].obj.cpuRxEventNum = + (uint32_t)CSL_INTC0_REVT1; + } + else + { + /* do nothing */ + } +#ifdef MCBSP_LOOPJOB_ENABLE + /* align the buffers to the cache line size */ + Mcbsp_loopSrcBuf[devId].scratchBuffer = (uint32_t *) + (((uint32_t)Mcbsp_loopSrcBuf[devId].scratchBuf + 0x7F) & ~0x7F); + + Mcbsp_loopDstBuf[devId].scratchBuffer = (uint32_t *) + (((uint32_t)Mcbsp_loopDstBuf[devId].scratchBuf + 0x7F) & ~0x7F); + + Mcbsp_osalEndMemAccess ((void *)Mcbsp_loopSrcBuf, sizeof(Mcbsp_loopSrcBuf)); + Mcbsp_osalEndMemAccess ((void *)Mcbsp_loopDstBuf, sizeof(Mcbsp_loopDstBuf)); +#endif /* MCBSP_LOOPJOB_ENABLE */ + Mcbsp_muteBuf[devId].scratchBuffer = (uint32_t *) + (((uint32_t)Mcbsp_muteBuf[devId].scratchBuf + 0x7F) & ~0x7F); + Mcbsp_osalEndMemAccess ((void *)Mcbsp_muteBuf, sizeof(Mcbsp_muteBuf)); + } + + /* Writeback Global Objects */ + Mcbsp_osalEndMemAccess ((void *)Mcbsp_deviceInstInfo, sizeof(Mcbsp_deviceInstInfo)); + + /* End Critical Section */ + Mcbsp_osalExitMultipleCoreCriticalSection (key); + + return; +} + +/* ========================================================================== */ +/* END OF FILE */ +/* ========================================================================== */ diff --git a/packages/ti/drv/mcbsp/device/c674x/src/device_mcbsp_loopback.c b/packages/ti/drv/mcbsp/device/c674x/src/device_mcbsp_loopback.c new file mode 100644 index 000000000..bb047f8ec --- /dev/null +++ b/packages/ti/drv/mcbsp/device/c674x/src/device_mcbsp_loopback.c @@ -0,0 +1,184 @@ +/* + * mcbsp_device.c + * + * This file contains MCBSP IP related EVM (platform) specific routines + * implementation. This file contains the board specific code for enabling + * the use of mcbsp driver, and may contain related device pre-driver + * initialization routines. The file is provided as a sample configuration + * and should be modified by customers for their own platforms and + * configurations. + * + * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +/* MCBSP Driver Includes. */ +#include +#include +#include + +/* CSL MCBSP Register Layer */ +#include + +/* CSL Chip Functional Layer */ +// #include // no functional CSL for Freon + +#include + + +/*============================================================================*/ +/* IMPORTED VARIABLES */ +/*============================================================================*/ + +extern Mcbsp_HwInfo Mcbsp_deviceInstInfo[CSL_MCBSP_PER_CNT]; +extern Mcbsp_TempBuffer Mcbsp_muteBuf[CSL_MCBSP_PER_CNT]; + +#ifdef MCBSP_LOOPJOB_ENABLE +extern Mcbsp_TempBuffer Mcbsp_loopDstBuf[CSL_MCBSP_PER_CNT]; +extern Mcbsp_TempBuffer Mcbsp_loopSrcBuf[CSL_MCBSP_PER_CNT]; +#endif /* MCBSP_LOOPJOB_ENABLE */ + +/* ========================================================================== */ +/* MODULE FUNCTIONS */ +/* ========================================================================== */ +/** + * \brief Initializes McBSP driver's data structures + * + * This function initializes the McBSP driver's data structures + * including instance objects and channel objects. This is the + * MCBSP Driver Initialization API which needs to be invoked by + * the users to initialize the MCBSP peripheral. This call is + * *mandatory* and should be called before calling any of the + * other driver API's. This can be modified by customers for + * their application and configuration. + * + * \return None + */ +void McbspDevice_init(void) +{ + int32_t devId = 0; + void *key; + + /* Begin Critical Section before accessing shared resources. */ + key = Mcbsp_osalEnterMultipleCoreCriticalSection (); + + /* Invalidate the Cache Contents */ + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_deviceInstInfo, sizeof(Mcbsp_deviceInstInfo)); + + /* initialize the loop job buffers and the mute buffers for all instances */ +#ifdef MCBSP_LOOPJOB_ENABLE + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_loopDstBuf, sizeof(Mcbsp_loopDstBuf)); + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_loopSrcBuf, sizeof(Mcbsp_loopSrcBuf)); + memset((void *)Mcbsp_loopDstBuf,0x0, + sizeof(Mcbsp_TempBuffer) * CSL_MCBSP_PER_CNT); + memset((void *)Mcbsp_loopSrcBuf,0x0, + sizeof(Mcbsp_TempBuffer) * CSL_MCBSP_PER_CNT); +#endif /* MCBSP_LOOPJOB_ENABLE */ + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_muteBuf, sizeof(Mcbsp_muteBuf)); + memset((void *)Mcbsp_muteBuf,0x0, + sizeof(Mcbsp_TempBuffer) * CSL_MCBSP_PER_CNT); + + /* initialize the information for all the device instances */ + for (devId = 0; devId < CSL_MCBSP_PER_CNT; devId++) + { + if (0 == devId) + { + /* instance 0 initialisation */ + /* instance 0 initialisation */ + Mcbsp_deviceInstInfo[devId].obj.instNum = (uint32_t)devId; + Mcbsp_deviceInstInfo[devId].obj.regs = + (CSL_McbspRegsOvly)CSL_MCBSP_0_CTRL_REGS; + Mcbsp_deviceInstInfo[devId].obj.fifoRegs = + (CSL_BfifoRegsOvly)CSL_MCBSP_0_FIFO_REGS; + Mcbsp_deviceInstInfo[devId].obj.dataAddress = + (CSL_BdataRegsOvly)CSL_MCBSP_0_DATA_REGS; + Mcbsp_deviceInstInfo[devId].obj.edmaTxEventNum = + (uint32_t)CSL_EDMA3_CHA_MCBSP0_TX; + Mcbsp_deviceInstInfo[devId].obj.edmaRxEventNum = + (uint32_t)CSL_EDMA3_CHA_MCBSP0_RX; + Mcbsp_deviceInstInfo[devId].obj.cpuTxEventNum = + (uint32_t)CSL_INTC_EVENTID_MCBSP0_TXINT ; + Mcbsp_deviceInstInfo[devId].obj.cpuRxEventNum = + (uint32_t)CSL_INTC_EVENTID_MCBSP0_RXINT ; + } + else if (1 == devId) + { + /* instance 1 initialisation */ + Mcbsp_deviceInstInfo[devId].obj.instNum = (uint32_t)devId; + Mcbsp_deviceInstInfo[devId].obj.regs = + (CSL_McbspRegsOvly)CSL_MCBSP_1_CTRL_REGS; + Mcbsp_deviceInstInfo[devId].obj.fifoRegs = + (CSL_BfifoRegsOvly)CSL_MCBSP_1_FIFO_REGS; + Mcbsp_deviceInstInfo[devId].obj.dataAddress = + (CSL_BdataRegsOvly)CSL_MCBSP_1_DATA_REGS; + Mcbsp_deviceInstInfo[devId].obj.edmaTxEventNum = + (uint32_t)CSL_EDMA3_CHA_MCBSP1_TX; + Mcbsp_deviceInstInfo[devId].obj.edmaRxEventNum = + (uint32_t)CSL_EDMA3_CHA_MCBSP1_RX; + Mcbsp_deviceInstInfo[devId].obj.cpuTxEventNum = + (uint32_t)CSL_INTC_EVENTID_MCBSP1_TXINT ; + Mcbsp_deviceInstInfo[devId].obj.cpuRxEventNum = + (uint32_t)CSL_INTC_EVENTID_MCBSP1_RXINT ; + } + else + { + /* do nothing */ + } + +#ifdef MCBSP_LOOPJOB_ENABLE + /* align the buffers to the cache line size */ + Mcbsp_loopSrcBuf[devId].scratchBuffer = (uint32_t *) + (((uint32_t)Mcbsp_loopSrcBuf[devId].scratchBuf + 0x7F) & ~0x7F); + + Mcbsp_loopDstBuf[devId].scratchBuffer = (uint32_t *) + (((uint32_t)Mcbsp_loopDstBuf[devId].scratchBuf + 0x7F) & ~0x7F); + + Mcbsp_osalEndMemAccess ((void *)Mcbsp_loopSrcBuf, sizeof(Mcbsp_loopSrcBuf)); + Mcbsp_osalEndMemAccess ((void *)Mcbsp_loopDstBuf, sizeof(Mcbsp_loopDstBuf)); +#endif /* MCBSP_LOOPJOB_ENABLE */ + Mcbsp_muteBuf[devId].scratchBuffer = (uint32_t *) + (((uint32_t)Mcbsp_muteBuf[devId].scratchBuf + 0x7F) & ~0x7F); + Mcbsp_osalEndMemAccess ((void *)Mcbsp_muteBuf, sizeof(Mcbsp_muteBuf)); + } + + /* Writeback Global Objects */ + Mcbsp_osalEndMemAccess ((void *)Mcbsp_deviceInstInfo, sizeof(Mcbsp_deviceInstInfo)); + + /* End Critical Section */ + Mcbsp_osalExitMultipleCoreCriticalSection (key); + + return; +} + +/* ========================================================================== */ +/* END OF FILE */ +/* ========================================================================== */ diff --git a/packages/ti/drv/mcbsp/device/k2g/src/device_mcbsp_loopback.c b/packages/ti/drv/mcbsp/device/k2g/src/device_mcbsp_loopback.c new file mode 100644 index 000000000..eb37b96a1 --- /dev/null +++ b/packages/ti/drv/mcbsp/device/k2g/src/device_mcbsp_loopback.c @@ -0,0 +1,187 @@ +/* + * mcbsp_device.c + * + * This file contains MCBSP IP related EVM (platform) specific routines + * implementation. This file contains the board specific code for enabling + * the use of mcbsp driver, and may contain related device pre-driver + * initialization routines. The file is provided as a sample configuration + * and should be modified by customers for their own platforms and + * configurations. + * + * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +/* MCBSP Driver Includes. */ +#include +#include +#include + +/* CSL MCBSP Register Layer */ +#include + +#include +/* CSL Chip Functional Layer */ +// #include // no functional CSL for Freon + +//#include + + +/*============================================================================*/ +/* IMPORTED VARIABLES */ +/*============================================================================*/ + +extern Mcbsp_HwInfo Mcbsp_deviceInstInfo[CSL_MCBSP_CNT]; +extern Mcbsp_TempBuffer Mcbsp_muteBuf[CSL_MCBSP_CNT]; + +#ifdef MCBSP_LOOPJOB_ENABLE +extern Mcbsp_TempBuffer Mcbsp_loopDstBuf[CSL_MCBSP_CNT]; +extern Mcbsp_TempBuffer Mcbsp_loopSrcBuf[CSL_MCBSP_CNT]; +#endif /* MCBSP_LOOPJOB_ENABLE */ + +/* ========================================================================== */ +/* MODULE FUNCTIONS */ +/* ========================================================================== */ +/** + * \brief Initializes McBSP driver's data structures + * + * This function initializes the McBSP driver's data structures + * including instance objects and channel objects. This is the + * MCBSP Driver Initialization API which needs to be invoked by + * the users to initialize the MCBSP peripheral. This call is + * *mandatory* and should be called before calling any of the + * other driver API's. This can be modified by customers for + * their application and configuration. + * + * \return None + */ +void McbspDevice_init(void) +{ + int32_t devId = 0; + void *key; + + /* Begin Critical Section before accessing shared resources. */ + key = Mcbsp_osalEnterMultipleCoreCriticalSection (); + + /* Invalidate the Cache Contents */ + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_deviceInstInfo, sizeof(Mcbsp_deviceInstInfo)); + + /* initialize the loop job buffers and the mute buffers for all instances */ +#ifdef MCBSP_LOOPJOB_ENABLE + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_loopDstBuf, sizeof(Mcbsp_loopDstBuf)); + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_loopSrcBuf, sizeof(Mcbsp_loopSrcBuf)); + memset((void *)Mcbsp_loopDstBuf,0x0, + sizeof(Mcbsp_TempBuffer) * CSL_MCBSP_CNT); + memset((void *)Mcbsp_loopSrcBuf,0x0, + sizeof(Mcbsp_TempBuffer) * CSL_MCBSP_CNT); +#endif /* MCBSP_LOOPJOB_ENABLE */ + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_muteBuf, sizeof(Mcbsp_muteBuf)); + memset((void *)Mcbsp_muteBuf,0x0, + sizeof(Mcbsp_TempBuffer) * CSL_MCBSP_CNT); + + /* initialize the information for all the device instances */ + for (devId = 0; devId < CSL_MCBSP_CNT; devId++) + { + if (0 == devId) + { + /* instance 0 initialisation */ + /* instance 0 initialisation */ + Mcbsp_deviceInstInfo[devId].obj.instNum = (uint32_t)devId; + Mcbsp_deviceInstInfo[devId].obj.regs = + (CSL_McbspRegsOvly)CSL_MCBSP_0_CFG_REGS; + Mcbsp_deviceInstInfo[devId].obj.fifoRegs = + (CSL_BfifoRegsOvly)CSL_MCBSP_0_FIFO_CFG_REGS; + Mcbsp_deviceInstInfo[devId].obj.dataAddress = + (CSL_BdataRegsOvly)CSL_MCBSP_0_SLV_REGS; + Mcbsp_deviceInstInfo[devId].obj.edmaTxEventNum = + (uint32_t)CSL_EDMACC_0_McBSP_XEVT; + Mcbsp_deviceInstInfo[devId].obj.edmaRxEventNum = + (uint32_t)CSL_EDMACC_0_McBSP_REVT; + Mcbsp_deviceInstInfo[devId].obj.cpuTxEventNum = + (uint32_t)CSL_CIC_McBSP_XINT ; + Mcbsp_deviceInstInfo[devId].obj.cpuRxEventNum = + (uint32_t)CSL_CIC_McBSP_RINT ; + } +#if 0 + else if (1 == devId) + { + /* instance 1 initialisation */ + Mcbsp_deviceInstInfo[devId].obj.instNum = (uint32_t)devId; + Mcbsp_deviceInstInfo[devId].obj.regs = + (CSL_McbspRegsOvly)CSL_MCBSP_1_CTRL_REGS; + Mcbsp_deviceInstInfo[devId].obj.fifoRegs = + (CSL_BfifoRegsOvly)CSL_MCBSP_1_FIFO_REGS; + Mcbsp_deviceInstInfo[devId].obj.dataAddress = + (CSL_BdataRegsOvly)CSL_MCBSP_1_DATA_REGS; + Mcbsp_deviceInstInfo[devId].obj.edmaTxEventNum = + (uint32_t)CSL_EDMA3_CHA_MCBSP1_TX; + Mcbsp_deviceInstInfo[devId].obj.edmaRxEventNum = + (uint32_t)CSL_EDMA3_CHA_MCBSP1_RX; + Mcbsp_deviceInstInfo[devId].obj.cpuTxEventNum = + (uint32_t)CSL_INTC_EVENTID_MCBSP1_TXINT ; + Mcbsp_deviceInstInfo[devId].obj.cpuRxEventNum = + (uint32_t)CSL_INTC_EVENTID_MCBSP1_RXINT ; + } +#endif + else + { + /* do nothing */ + } + +#ifdef MCBSP_LOOPJOB_ENABLE + /* align the buffers to the cache line size */ + Mcbsp_loopSrcBuf[devId].scratchBuffer = (uint32_t *) + (((uint32_t)Mcbsp_loopSrcBuf[devId].scratchBuf + 0x7F) & ~0x7F); + + Mcbsp_loopDstBuf[devId].scratchBuffer = (uint32_t *) + (((uint32_t)Mcbsp_loopDstBuf[devId].scratchBuf + 0x7F) & ~0x7F); + + Mcbsp_osalEndMemAccess ((void *)Mcbsp_loopSrcBuf, sizeof(Mcbsp_loopSrcBuf)); + Mcbsp_osalEndMemAccess ((void *)Mcbsp_loopDstBuf, sizeof(Mcbsp_loopDstBuf)); +#endif /* MCBSP_LOOPJOB_ENABLE */ + Mcbsp_muteBuf[devId].scratchBuffer = (uint32_t *) + (((uint32_t)Mcbsp_muteBuf[devId].scratchBuf + 0x7F) & ~0x7F); + Mcbsp_osalEndMemAccess ((void *)Mcbsp_muteBuf, sizeof(Mcbsp_muteBuf)); + } + + /* Writeback Global Objects */ + Mcbsp_osalEndMemAccess ((void *)Mcbsp_deviceInstInfo, sizeof(Mcbsp_deviceInstInfo)); + + /* End Critical Section */ + Mcbsp_osalExitMultipleCoreCriticalSection (key); + + return; +} + +/* ========================================================================== */ +/* END OF FILE */ +/* ========================================================================== */ diff --git a/packages/ti/drv/mcbsp/device/omapl138/src/device_mcbsp_loopback.c b/packages/ti/drv/mcbsp/device/omapl138/src/device_mcbsp_loopback.c new file mode 100644 index 000000000..6cc3bceaf --- /dev/null +++ b/packages/ti/drv/mcbsp/device/omapl138/src/device_mcbsp_loopback.c @@ -0,0 +1,182 @@ +/* + * mcbsp_device.c + * + * This file contains MCBSP IP related EVM (platform) specific routines + * implementation. This file contains the board specific code for enabling + * the use of mcbsp driver, and may contain related device pre-driver + * initialization routines. The file is provided as a sample configuration + * and should be modified by customers for their own platforms and + * configurations. + * + * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +/* MCBSP Driver Includes. */ +#include +#include +#include + +/* CSL MCBSP Register Layer */ +#include + +#include + +#include + +/*============================================================================*/ +/* IMPORTED VARIABLES */ +/*============================================================================*/ + +extern Mcbsp_HwInfo Mcbsp_deviceInstInfo[CSL_MCBSP_CNT]; +extern Mcbsp_TempBuffer Mcbsp_muteBuf[CSL_MCBSP_CNT]; + +#ifdef MCBSP_LOOPJOB_ENABLE +extern Mcbsp_TempBuffer Mcbsp_loopDstBuf[CSL_MCBSP_CNT]; +extern Mcbsp_TempBuffer Mcbsp_loopSrcBuf[CSL_MCBSP_CNT]; +#endif /* MCBSP_LOOPJOB_ENABLE */ + +/* ========================================================================== */ +/* MODULE FUNCTIONS */ +/* ========================================================================== */ +/** + * \brief Initializes McBSP driver's data structures + * + * This function initializes the McBSP driver's data structures + * including instance objects and channel objects. This is the + * MCBSP Driver Initialization API which needs to be invoked by + * the users to initialize the MCBSP peripheral. This call is + * *mandatory* and should be called before calling any of the + * other driver API's. This can be modified by customers for + * their application and configuration. + * + * \return None + */ +void McbspDevice_init(void) +{ + int32_t devId = 0; + void *key; + + /* Begin Critical Section before accessing shared resources. */ + key = Mcbsp_osalEnterMultipleCoreCriticalSection (); + + /* Invalidate the Cache Contents */ + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_deviceInstInfo, sizeof(Mcbsp_deviceInstInfo)); + + /* initialize the loop job buffers and the mute buffers for all instances */ +#ifdef MCBSP_LOOPJOB_ENABLE + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_loopDstBuf, sizeof(Mcbsp_loopDstBuf)); + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_loopSrcBuf, sizeof(Mcbsp_loopSrcBuf)); + memset((void *)Mcbsp_loopDstBuf,0x0, + sizeof(Mcbsp_TempBuffer) * CSL_MCBSP_CNT); + memset((void *)Mcbsp_loopSrcBuf,0x0, + sizeof(Mcbsp_TempBuffer) * CSL_MCBSP_CNT); +#endif /* MCBSP_LOOPJOB_ENABLE */ + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_muteBuf, sizeof(Mcbsp_muteBuf)); + memset((void *)Mcbsp_muteBuf,0x0, + sizeof(Mcbsp_TempBuffer) * CSL_MCBSP_CNT); + + /* initialize the information for all the device instances */ + for (devId = 0; devId < CSL_MCBSP_CNT; devId++) + { + if (0 == devId) + { + /* instance 0 initialisation */ + /* instance 0 initialisation */ + Mcbsp_deviceInstInfo[devId].obj.instNum = (uint32_t)devId; + Mcbsp_deviceInstInfo[devId].obj.regs = + (CSL_McbspRegsOvly)CSL_MCBSP_0_CTRL_REGS; + Mcbsp_deviceInstInfo[devId].obj.fifoRegs = + (CSL_BfifoRegsOvly)CSL_MCBSP_0_FIFO_REGS; + Mcbsp_deviceInstInfo[devId].obj.dataAddress = + (CSL_BdataRegsOvly)CSL_MCBSP_0_DATA_REGS; + Mcbsp_deviceInstInfo[devId].obj.edmaTxEventNum = + (uint32_t)CSL_EDMA3_CHA_MCBSP0_TX; + Mcbsp_deviceInstInfo[devId].obj.edmaRxEventNum = + (uint32_t)CSL_EDMA3_CHA_MCBSP0_RX; + Mcbsp_deviceInstInfo[devId].obj.cpuTxEventNum = + (uint32_t)CSL_INTC_EVENTID_MCBSP0_TXINT ; + Mcbsp_deviceInstInfo[devId].obj.cpuRxEventNum = + (uint32_t)CSL_INTC_EVENTID_MCBSP0_RXINT ; + } + else if (1 == devId) + { + /* instance 1 initialisation */ + Mcbsp_deviceInstInfo[devId].obj.instNum = (uint32_t)devId; + Mcbsp_deviceInstInfo[devId].obj.regs = + (CSL_McbspRegsOvly)CSL_MCBSP_1_CTRL_REGS; + Mcbsp_deviceInstInfo[devId].obj.fifoRegs = + (CSL_BfifoRegsOvly)CSL_MCBSP_1_FIFO_REGS; + Mcbsp_deviceInstInfo[devId].obj.dataAddress = + (CSL_BdataRegsOvly)CSL_MCBSP_1_DATA_REGS; + Mcbsp_deviceInstInfo[devId].obj.edmaTxEventNum = + (uint32_t)CSL_EDMA3_CHA_MCBSP1_TX; + Mcbsp_deviceInstInfo[devId].obj.edmaRxEventNum = + (uint32_t)CSL_EDMA3_CHA_MCBSP1_RX; + Mcbsp_deviceInstInfo[devId].obj.cpuTxEventNum = + (uint32_t)CSL_INTC_EVENTID_MCBSP1_TXINT ; + Mcbsp_deviceInstInfo[devId].obj.cpuRxEventNum = + (uint32_t)CSL_INTC_EVENTID_MCBSP1_RXINT ; + } + else + { + /* do nothing */ + } + +#ifdef MCBSP_LOOPJOB_ENABLE + /* align the buffers to the cache line size */ + Mcbsp_loopSrcBuf[devId].scratchBuffer = (uint32_t *) + (((uint32_t)Mcbsp_loopSrcBuf[devId].scratchBuf + 0x7F) & ~0x7F); + + Mcbsp_loopDstBuf[devId].scratchBuffer = (uint32_t *) + (((uint32_t)Mcbsp_loopDstBuf[devId].scratchBuf + 0x7F) & ~0x7F); + + Mcbsp_osalEndMemAccess ((void *)Mcbsp_loopSrcBuf, sizeof(Mcbsp_loopSrcBuf)); + Mcbsp_osalEndMemAccess ((void *)Mcbsp_loopDstBuf, sizeof(Mcbsp_loopDstBuf)); +#endif /* MCBSP_LOOPJOB_ENABLE */ + Mcbsp_muteBuf[devId].scratchBuffer = (uint32_t *) + (((uint32_t)Mcbsp_muteBuf[devId].scratchBuf + 0x7F) & ~0x7F); + Mcbsp_osalEndMemAccess ((void *)Mcbsp_muteBuf, sizeof(Mcbsp_muteBuf)); + } + + /* Writeback Global Objects */ + Mcbsp_osalEndMemAccess ((void *)Mcbsp_deviceInstInfo, sizeof(Mcbsp_deviceInstInfo)); + + /* End Critical Section */ + Mcbsp_osalExitMultipleCoreCriticalSection (key); + + return; +} + +/* ========================================================================== */ +/* END OF FILE */ +/* ========================================================================== */ diff --git a/packages/ti/drv/mcbsp/docs/Doxyfile b/packages/ti/drv/mcbsp/docs/Doxyfile new file mode 100644 index 000000000..e30432f35 --- /dev/null +++ b/packages/ti/drv/mcbsp/docs/Doxyfile @@ -0,0 +1,293 @@ + +# Doxyfile 1.5.6 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = "MCBSP Low Level Driver" +PROJECT_NUMBER = 1.0.0.2 +OUTPUT_DIRECTORY = ./docs/doxygen +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = NO +OPTIMIZE_OUTPUT_VHDL = NO +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +TYPEDEF_HIDES_STRUCT = NO +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +EXTRACT_ANON_NSPACES = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = NO +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.d \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.py \ + *.f90 \ + *.f \ + *.vhd \ + *.vhdl +RECURSIVE = YES +EXCLUDE = YES \ + ./example \ + ./test \ + ./package \ + ./packages +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = cslr_*.h +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = NO +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = ./docs/tiheader.htm +HTML_FOOTER = ./docs/tifooter.htm +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = YES +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_BUNDLE_ID = org.doxygen.Project +HTML_DYNAMIC_SECTIONS = NO +CHM_FILE = ..\..\mcbsplldDocs.chm +HHC_LOCATION = hhc.exe +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NONE +TREEVIEW_WIDTH = 250 +FORMULA_FONTSIZE = 10 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = NO +MSCGEN_PATH = +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +DOT_FONTNAME = FreeSans +DOT_FONTPATH = +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +DOT_GRAPH_MAX_NODES = 50 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = YES +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO + + diff --git a/packages/ti/drv/mcbsp/docs/MCBSP_LLD_SDS.pdf b/packages/ti/drv/mcbsp/docs/MCBSP_LLD_SDS.pdf new file mode 100644 index 000000000..6a38abfe4 --- /dev/null +++ b/packages/ti/drv/mcbsp/docs/MCBSP_LLD_SDS.pdf @@ -0,0 +1,4504 @@ +%PDF-1.4 +%âãÏÓ +1 0 obj +<< +/Title (MCBSP LLD - Software Design Specification \(SDS\)) +/Author (Texas Instruments Inc.) +/Creator (PrimoPDF http://www.primopdf.com) +/ModDate (D:20120830234114-04'00') +/Producer (Nitro PDF PrimoPDF) +/CreationDate (D:20120830154031-04'00') +/PXCViewerInfo (PDF-XChange Viewer;2.5.200.0;Dec 14 2011;19:59:08;D:20120830234114-04'00') +>> +endobj +2 0 obj +<< +/Type /Catalog +/Pages 3 0 R +/Metadata 4 0 R +>> +endobj +3 0 obj +<< +/Kids [5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R +21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R +37 0 R 38 0 R 39 0 R] +/Type /Pages +/Count 35 +/Rotate 0 +>> +endobj +4 0 obj +<< +/Type /Metadata +/Length 3119 +/Subtype /XML +>> +stream + + + + + 2012-08-30T15:40:31-04:00 + 2012-08-30T23:41:14-04:00 + PrimoPDF http://www.primopdf.com + + + Nitro PDF PrimoPDF + + + application/pdf + + + MCBSP LLD - Software Design Specification (SDS) + + + + + Texas Instruments Inc. + + + + + + + + + + + + + + + + + + + + + + + + + + + +endstream +endobj +5 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 40 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 41 0 R +/ProcSet [/PDF /ImageC /ImageI /Text] +/XObject 42 0 R +/ExtGState 43 0 R +/ColorSpace 44 0 R +>> +>> +endobj +6 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 45 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 46 0 R +/ProcSet [/PDF /Text] +/ExtGState 47 0 R +>> +>> +endobj +7 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 48 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 49 0 R +/ProcSet [/PDF /Text] +/ExtGState 50 0 R +>> +>> +endobj +8 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 51 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 52 0 R +/ProcSet [/PDF /Text] +/ExtGState 53 0 R +>> +>> +endobj +9 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 54 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 55 0 R +/ProcSet [/PDF /Text] +/ExtGState 56 0 R +>> +>> +endobj +10 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 57 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 58 0 R +/ProcSet [/PDF /ImageC /Text] +/XObject 59 0 R +/ExtGState 60 0 R +>> +>> +endobj +11 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 61 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 62 0 R +/ProcSet [/PDF /Text] +/ExtGState 63 0 R +>> +>> +endobj +12 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 64 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 65 0 R +/ProcSet [/PDF /ImageB /Text] +/XObject 66 0 R +/ExtGState 67 0 R +>> +>> +endobj +13 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 68 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 69 0 R +/ProcSet [/PDF /Text] +/ExtGState 70 0 R +>> +>> +endobj +14 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 71 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 72 0 R +/ProcSet [/PDF /Text] +/ExtGState 73 0 R +>> +>> +endobj +15 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 74 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 75 0 R +/ProcSet [/PDF /Text] +/ExtGState 76 0 R +>> +>> +endobj +16 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 77 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 78 0 R +/ProcSet [/PDF /Text] +/ExtGState 79 0 R +>> +>> +endobj +17 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 80 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 81 0 R +/ProcSet [/PDF /Text] +/ExtGState 82 0 R +>> +>> +endobj +18 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 83 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 84 0 R +/ProcSet [/PDF /Text] +/ExtGState 85 0 R +>> +>> +endobj +19 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 86 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 87 0 R +/ProcSet [/PDF /Text] +/ExtGState 88 0 R +>> +>> +endobj +20 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 89 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 90 0 R +/ProcSet [/PDF /Text] +/ExtGState 91 0 R +>> +>> +endobj +21 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 92 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 93 0 R +/ProcSet [/PDF /Text] +/ExtGState 94 0 R +>> +>> +endobj +22 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 95 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 96 0 R +/ProcSet [/PDF /Text] +/ExtGState 97 0 R +>> +>> +endobj +23 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 98 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 99 0 R +/ProcSet [/PDF /Text] +/ExtGState 100 0 R +>> +>> +endobj +24 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 101 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 102 0 R +/ProcSet [/PDF /Text] +/ExtGState 103 0 R +>> +>> +endobj +25 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 104 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 105 0 R +/ProcSet [/PDF /Text] +/ExtGState 106 0 R +>> +>> +endobj +26 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 107 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 108 0 R +/ProcSet [/PDF /Text] +/ExtGState 109 0 R +>> +>> +endobj +27 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 110 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 111 0 R +/ProcSet [/PDF /Text] +/ExtGState 112 0 R +>> +>> +endobj +28 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 113 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 114 0 R +/ProcSet [/PDF /Text] +/ExtGState 115 0 R +>> +>> +endobj +29 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 116 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 117 0 R +/ProcSet [/PDF /Text] +/ExtGState 118 0 R +>> +>> +endobj +30 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 119 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 120 0 R +/ProcSet [/PDF /Text] +/ExtGState 121 0 R +>> +>> +endobj +31 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 122 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 123 0 R +/ProcSet [/PDF /Text] +/ExtGState 124 0 R +>> +>> +endobj +32 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 125 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 126 0 R +/ProcSet [/PDF /Text] +/ExtGState 127 0 R +>> +>> +endobj +33 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 128 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 129 0 R +/ProcSet [/PDF /Text] +/ExtGState 130 0 R +>> +>> +endobj +34 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 131 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 132 0 R +/ProcSet [/PDF /Text] +/ExtGState 133 0 R +>> +>> +endobj +35 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 134 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 135 0 R +/ProcSet [/PDF /Text] +/ExtGState 136 0 R +>> +>> +endobj +36 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 137 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 138 0 R +/ProcSet [/PDF /Text] +/ExtGState 139 0 R +>> +>> +endobj +37 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 140 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 141 0 R +/ProcSet [/PDF /Text] +/ExtGState 142 0 R +>> +>> +endobj +38 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 143 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 144 0 R +/ProcSet [/PDF /Text] +/ExtGState 145 0 R +>> +>> +endobj +39 0 obj +<< +/Type /Page +/Parent 3 0 R +/Rotate 0 +/Contents 146 0 R +/MediaBox [0 0 612 792] +/Resources << +/Font 147 0 R +/ProcSet [/PDF /Text] +/ExtGState 148 0 R +>> +>> +endobj +40 0 obj +<< +/Filter [/FlateDecode] +/Length 1739 +>> +stream +xœ¥YIoTG–í±=‹e¼²™åa̐L§÷å%Š%ÈÜ '"‘琿Ÿê~¯_•gj F²>÷«®®å«ê…J72ÿ«àÍûñ·/CóîŸqn^þ؁«wãã(Lþ)¿yß|·€‰±5‹·c)RŠ2•oª ºq*/°x?žnÍŽµòª4ÊÈXl¶Æ6^ÊÆ9ëې(Õ|ÿ7(Û𓠂ÖQ$ßxï„+‘x•M·.9p³3Wøè= zãBŠK>l6Ϯˑ· ïÑ4‘Tò±ËD;¬Àn›ã äBŠ¤Œfºß H?"µ²VÙéë¿px2ÓÂoÂô d[]ÕÑ«,ª“´zzˆ³¨†3%‚õŽ®{Ôë:n0d©“–mÒÀR9ʈØ,~/ž¿šžÎæFx/ï‚§8÷l6²«êüyˆp„1!ŸÏ”~MCrý$.߬JÉMocLÉ÷-T°ð»èòΒ£¥d]&æ +# £‡:M¤nUÑæÀÀŸÏÈ/ •o€…U‰’®ÒÞ@¥CùAmO-¨tëu67Ç@ɐÀ0pÍHe PK +™Àp²›RRt¹ºs¥[g4d¢'pˆúö>Å=y¶Ýk݀թ'±› ¬£›ÀˆÎ( ZÌƍ2K’ ¦e3xè‚V@“c´5*WáÃ씒^%àm÷²âŒ™F瓩κ„žg.¤ 3¥•ˆ^*Ÿy\Ÿ¢m6k©Ág©Þs‚Q/u G©,õi Ó 1í&N"Vï8ëÊ~Ržm¸¾ý́”F&ÓÌ;Bçg?/e½Ò©eWµ_AŒSG¿˜ ?§¶¦w^_n»P+>A¸• X:¥àƒTÐ ºŽ¿jHkáR}•]@eæ}؂sZ×X {”b–æÿ|ì…vÍ¿ãØüÂ?­‘ûõs6t›t-¬Awqu>W´ VÄØ608«rªpá ¤-úT::°Á›Bõú}ááaŽoœZ(‘n ¯\Ֆá>ÂV`ÔQGËÞÇܓûö8_wµU¸‹âs¼ÛZћÛEƒ·ÖHd<@8a}nk³Å»¬Ä!®G¹Á«8dU Y;î°Ó:ÙàËÎ\"<@x‚ð!‰Õ);­[B…kKì#O|Nß?fü ‰Ý#Èië’íûO>C㟲õõô3ŠmÍIh:RÜCv‘Vör£br6¬¨à@K5q…|ÿ­+/т2JÏXj­™Hv +¾£O¸zÛßdò1¿0¿[‘qµüË.wÅÎ;ÙdÅs„_¯Ðp)ôß|LY®¬ûkB2>GxAËpMý‘ æµû]½ûäÛ-5róácäà5Á^!h¹á ØYÛ+ +kÛëW:ۛHñ;Òh…#KzÉE¥»±F“Vo¬ü¶¼á.–]¸ù÷ñö*­½¯ÒåQÛá‹gL±½Ã­.OGJXë|~ÒI()-¸_ß%÷ðݱ}7×*¿ÇÀüäB~C?Aºž–ºzÕЯ¬¡#çA×¾6ö¢ç­6oUÙ°{|‹`*CçÞ./{:„àº×|'U¾¢Sp¾{öσ£ì¨‹NúkîδVÙüfŒktÂÌo¤– "[Š¯}ÚE¨2¢èíŒHÖ¨jDûêÕÏ»_´ymºŒuÃيè­ñ4w+mœwzº<›ÔÁí$“‚ªÿyàœðåµ²4ȇË+æ¯:—õ¨• Ô°¿?bá%>Góð1Y™¬¶‡J¬ Z—$"®]}.ïb/ÆÿáRô +endstream +endobj +41 0 obj +<< +/R8 149 0 R +/R12 150 0 R +/R14 151 0 R +/R16 152 0 R +/R18 153 0 R +/R20 154 0 R +>> +endobj +42 0 obj +<< +/R11 155 0 R +>> +endobj +43 0 obj +<< +/R7 156 0 R +>> +endobj +44 0 obj +<< +/R10 157 0 R +>> +endobj +45 0 obj +<< +/Filter [/FlateDecode] +/Length 1608 +>> +stream +xœ½Y[o5V8MH·UÓs¸­¸îÖø~yEBHˆ—Vç-éS¡•‚Ôðÿ%Æöz=ÞõIBhêóíØ3Ï|3vßµ”0ÞRÿ7 ^_6?¾4íÛ¿›·/Wo›w%Âÿ ¿¾lÚÂDÛÂ2Û7 %ÎYêÂ7ÖÞ) ü³½lλOûÁ1ªÛï¡TiÞ}Ö ¦®&ð1€DYÍm·çgIc9µÝç=çD2©»'uÊP@›~àÄP¡D÷¼çD-Lweµd¦û¢Ñ”$(K‹qPrk#¼“iµ‹¿ì­°Z)Û=ó«I©´˜$sÙ¹š–@Fd+Oã$˘óöÀ&àKj8¾ûº$qÌQ]ñMP¡`µqaîx÷eO‰q°nT«yr™š´zlܹ“‚ußÆ)Ô +$0zIÒƒ¼ú£Þølxá$¼X0VrgvÍ~ÿjûk#¹ Jû0Úþ}+ŒM”Ð㦌r̒«i´ÉŸ‘drµ 5Ùh½C2a`’0íxߛ̭³ Åï!ŠÄƒ~(xš´iÃ8Àž¦“I#-Ña›ÑÄvßùå”à勫`‘£Æ]¯ Õ,¸<ÆgŠuïå!vþEß3G £ +ÃùZ£•½ðó¶yр‹ZM¥lA£le{õGóf/À›y‚»Ö§3Už¹B0˜”oÿl8Ӑe&Æ@„<ϤéœÃ¾”L!ûd06± +ÞvÂZBA訁ãšÀ=ϊRcà`€þ XÒ»8MPÝjGR‹v ÂÅ J|°h‰ƒ%MN–C” ([ê9Täð®4ªª9™F 2Šù}ºøxÔζÊÛæs^ šòˆ'Y%ÄãL®…ÅŒ¦ð›1‹Åfà Ž!²ÕÆ™äӁ3_¿5Û³sÌ`E*žLé|ŒÐe±Ð|W±À Œ ÝAAÒg5‚oë«ý¿c®h çèbÆ8afÊ´G¹È§#Tž¦,Yç,Ù e?ȶ A&˜‡yᏦѺÌ>¿!‰Á,YlçɔXë"©—†ù´/éÊ9БE…&†mNH£ô,ý<²L¿B.̔ԧ•‰ÍÀ»æc¡³ÓBŽ²màPÊ)}ÈÂé¢Ê…™½¸‚"ɀAJ +Ôr¡ cnêbN*ýP°„Cƽ +j¦þ-kïhÏ +TÛ×H:·kxñÜoáÖ­$váæqäg5bL06HEHpnËx+ƒhÜ;­7ãÜx÷ ¤žñ©ÿ<5OþtÁ›rŽ@Ñÿ¹ê+Äqr\Õøˆ‹±ÙØOÍFüže†óD€õþ¿ÎóÍÝýYç•ÉúÀÊ»ª…m½eÿ~WâÎã)חÄ)CR9•Úp°% žYžBÆ?¾#^ë^؂,=²òB,¹‡–AΤJ…ŽJ\oƹ3ðžL«\%cûº ¢ÝbÿTÈÙþ=²Ø!÷ï¡åþ A¯RJ/ö?ÃÜ9xßý8üz€R^: s”bÁZ8   ñ¶FŒ.¤è̏,ì˜-–@:7ÎCKãf³ˆfW ;w× ~J8 ¨ñMç [A9u¬l¨ÑCL®ømg (· HV¦K¬x–EÝÁñ‚‡|Ǚ©OC”¼^Ü\¸Jĕ›Ûìè¦nQpPSéü®7;<Õõã‰é­ÈêÙ077•W1f,âüÊEǗ!Lèh^®IHö7ÖÈë±e3p­0©ª¢J†5 Å–‡*“•Ò?œ0Âá–ïëºjLµ(÷s…OðÑæmœ-¶tÔÞÈn}ݾÕåýáߪMzCÃýéÙìùô¾†Kïގ1¾ò®Qðåõ¦«åÀáŠÀ€qS¾Hà|Ax ”ó‡W½voª[þžLSE†!Õõgà%=ÀëóÎ}¢C>ê¹—'t\ïÏn@>+¤SRýG™”ìˆûU5Õ7‘C$'LŠÄ!×2DÐ1äÛÁñM¶!67øö~p՗ñôF1jCÙ¿©eóÄÄz–®é±adz«ÎTÂøÿBWx!‰T>A1ó'‰Í?Ìcñq +endstream +endobj +46 0 obj +<< +/R8 149 0 R +/R14 151 0 R +/R16 152 0 R +/R29 158 0 R +>> +endobj +47 0 obj +<< +/R7 156 0 R +>> +endobj +48 0 obj +<< +/Filter [/FlateDecode] +/Length 5204 +>> +stream +xœí]Y$7rFÏ)·Y;«Þ¹¥ÖhŽÊ…›ÃûðzïzaÀo+ÌیŸö ÈÀÊÿp3“dVeU2»«»˜ÕÔ3!&“ FEÆÇ ƒÁœSÂø9Å?=ñçOßÿ`Îÿþ§¾øü‡ÿ숟þ~úSKþç RúÏ?žÿþ¼hÏ¡™;¥Ä9KÆÎ ?7‚iÏ?üxúqõ¤¹ DpcŒZÝo¡Ti¾zÚ\0xÍy7þe5·«|KË©]=k84Ǥ^}Ž¥N +5’ʏš N J¬¾j8F ³zÞÖՒ™Õ‹æB­¡“žÊúÆ|…®è$› ÿÞËÐÚ§ÿMŠ‘ «•²«/±5)•¡†bN&|Þ M$LD.¿i_²Œ9äOˆê—(ORÚ÷êk§:œ*Øý/…Li‰ö$ F»z‡Í))@ʟ~ò9*^5ŠnAä­p¦ØêN$SájæˆaT¥¤ÿ}­ÑÊvRøã‡Ó?‚ˆÎ•“üz”çòü§¿žþ­+TtP8m'¸;wÄéh* ¶BQ¢%š +èýÃÿœr¦á33­´Ehhú÷9|… ¸ètÊá0Š»^ÜNX Z¨@ 5ð{…Â4ŠRcà—¡Ø†f£$í•a—}£Œ™~ÿ(K[—iG5H¶L>‰?×Óø-ݍ¥#ù,’’_îykÀ(ö øÆ´c­^‡ +wbÃIݗ±ôÉhãîõ¥‚¢Ð¨M2ù* ¼öö_ ¡ÀŠùê¤Ä•±¾5}}ƒåÉ+'S=@a¬þ˜¦`s¥³µ´„9ã…_­ŒÊR© H@ ¢hE´…±½ú¶UÆ+5ŸÂÏêp, Š20˜†›Þ0#™¥Érٔך íhÂá©åêbyšÐN=8WĝwsŒ¨N%fa"¢®ÀYµ¯~ž‹ºñ•,Ô Õ?®¾‹Pۂ*Ý­!Òba[“Sð zøEÿ)Þ{ނ:Èg;L pì¡ÇeSûü¢ý7æçOºol¹²\6uuk[ey$ʸU¸P΀1JjH «¯rq2¼‘“}폸Z´%¿ÇõB#¤N1> xËzÇÖ{ùá^JIŒ•ehÅb©«V-Jj")»•(Yž‰Z®i¬²<eÜ·*\ +/óá ×ém»ø Õ_gâeòJ`ÆêÓuÛ7cà™x“oÆ 3ºo½<”AÙ°·Î$3„3qh-\6µ4#Ô~u†(]žÃº4YGÍ`yëƒ%Q·D[älU&èVvÛÎÓa¡›g·4f§Ûëþ¸"Í`$ÇP«e`ëqÿNⷃf’Æ&»fÔ¦Õß÷Õí y£úêL>`ö 0ÃÀ­jEœTŠ°J"´bEuåã4·Ìrà”+Úo®oãVtã†ùÃZbՔc˜KzOxŠÏa¦ pw{P“6N +b¥à•SFø°g"àx«þwu«Ôl +?Íb˜É z#¢©ìñ¤¶)Ëâ¨y™Z3’ÃSٲĊ'Á­•Ùní `DLV’X» “Ïf`rh,“cõד˜,üØny€0Հ3k)s«' ãD¾LF4LžÆd/¨”áÂd挟 $=Ÿ4Œ*ÂäÁ•ÙÔÒp¤w÷µÕÅâ¥É²8ªbòA•qˆÎ$ó!,>ÆUoGg9Ccyè«ë<9a¶Ã-êØÊXËBZ°W.m Ð}¢sÀJ)ÇzGԌèç6p4>#xÝ(¥ S|ŠWMz> »ÎÅ(÷©¥¡Co^¹5řץɲ8ª"í-RÆ!®»|\ß×Ý»ÉÐoôw¹»Éñ•¬ÝäP}KüUr`(îûót\íbX•«±Tû¡±«ä͑bð›ò£Úç»%;tûքÑß*Ë[¦Œ¥lþ#·Þåƒíît¢©!¦óÏܕ·CcyNtÒ÷; x±ûì}xî…ŽœÀLÉÞ5t›ó+¸²³¸‚‰J*“ÕÛ)ÿO¨’xÍq¥zju;Ëù7Úÿ¼‘¹gSÌ3—!{ÿµ$špÿX—>5 .“r­’Çÿ^[CˆõpÔW)èØpÝÔ®¹08WLyé`Vøì¸tªx÷bê ±âå9‹K“eqÔq¯ å_åcw>TvK§ü³íØ=c{:6–…Ýiß׈Ýs¸ò؝¼pg +¥ÃéHÆÑ9ÂÙ\ ÆðÕû DÅÏ,˜w>^-u÷@º@³t )îàǒ@€8ž \Ž.ûç`»aôØn¦°]ÓáØêîû-Å£ºû~ÄT Ø~Yž8ˆÀV’ÎóŒèÐVþƞ¯~óyjÑ7ÔÏsœ“Q\·ßYcS¬YîQ*òöëÀFÄÁu†|®Â¶—†Ž@š +rÊÉç\BÁ@”ÑÇßή“Â$S‚Ž_TœŸÂã™q€\[ÂS>~îSÅÁ©‚Þ± ½ãÆ Ûhç% ÛÐìç0'ÂZŒëX]³Ìõ°ÃÖEʘùKükXØ÷ûÏ8ë’¦]«¯Âï_)¤ú\œ†“íY/ãgSÿ‹¥Êàˆ‹U[‹”å=Â×Ïòák+v㗦!aãüº? ¿B'9øÅL= +>íÏ"¦ø¿4ù:"ÄIf|;¢YòŽo-…¬fÎúNЭW 5{hÍX6µþI·AX–0ªfœO—y<,L—,®Œº~њP.9 ÑÙhì2i‰Òóìî, ÌpÄƶËCmõ_Îò7Pa7R·Æ/±Gw2 ©B'™H•0ué=ºvµ² OqÚm©›”foÖ1î¯k“×€Yu³®ÚيY˦26뾙…hè±Ñ(Çó³íá,D ÌجK+9jÒÿlßFÎ×?ß ”œŒž;€1sf-‘´ä-™jo@€Ë؝+‰šPÆ­>Ów³fÚï:™'ž/Ûq2äŸÌ meÌ‹µ'ÏÀùÌ° §cç­cYÖa7!0ø3ò0™;^X2Wì:9h‡÷笰ô²ÆZ…¿uÂÎI¸Úûû W•:ú<ý¹(¾¶ÍPƒK“eqT ď…Ú»2ÑúqDëßÎAë ÌÜé +c“l_ã›nW>D;É[àL™Ú܊Cn¸iAN¶Å‡ó¥Ú€óÃ[j½Ô{oƒUÑW1†Ó?ÿ~{äçZxèÄéèß-[-mƒg,t{4æU¨êŸ-F€Çï戴ûñ 7ÍúöØJ¡ý;b+ÉTåxéxˆâK@ i¥«ß5–0adku¹Lzƒß½ÿïñù“Æ^hÇV¿n.À¿RV{WJmpÄZ)s‚b +. +ö[ï•õ \ÄJÉÐJ±QR›ë:Èrâ—æ-H"¤¨ar•œ­:5²’‡TÑ°ÊßÎ «Œ ™°Ê„í³«ìÙµìCà@+„½X+8léÀ®ƒ,Gg+{…ØJVˆ­äUgO`3b¥&v_+¯ayÃל3|Þ&¦Ç¿‰d¢jŽgMÊ뱒7 êʪë)ÁJÈJVò–‘å«Î(pÿf6p÷`œÛB‡óWnr-Àý6º°áxýgÂ#ùàëÎCpãՒ¥LYa»’E’åÛÞJJ–¯:{‚í€Å¸Í1g×¾pÛ] nãåaM;I¸ót…5<¡°•$ÞQ>/tíi•6SŽr6&×yÔ§ëa7·Ì]$Z¯BÓ%ðB?¡JJ–o}+Y(Y¨êŒ¢õïg£u@à¼`b&}ssƒ‰ge4äŸ-M†ìŽö~+LæP؈þgPUä{¸ŸœSqýÌ‡p4Ûµ`MŒ­1R•œ¯:åù•,Ÿ\”êìÉÑ x<ÝÜñK- c÷x¤3æZ˺;²›¯e_»°¿Œx¼´TÙ¤5é4`i9x€Nò”ýÛE^ò[’Ž¸ +à•<^+\ɒÈãRˆðgáÏEøˆÚYKÉܲK-%ϺS,v’¿”œ2ö +÷n-Ubõ9àV²Íz²¶x7úíN=Ù«œoÝÞñ¯Öõä©á*òÛK&ˆßĄž¨¡—ZEžsaØU”MØ/Ǔ…át‘9Æ(£~U™[Tº÷™íR2üVLÁœ°’՝¨dùä¨Î¨ûIf»Ÿª3`]¹K-0Ãúõ¤Ò˜³@}Å)ÀbVöiA4¨àB?°JVÛ\ÉE‘%©Î(>»Ùø07Ÿ¥ 7u^Ÿ¯'GŒÌJ‘ö^øà÷–»¼ãÉ¡$f¬m‚Ñv?€ÌôÖ÷–4óàŸK%E–di+¹(r©ª3 +è³kEÎta‰ºDîÊq@¿ö›§pÇz/ÀŽw½Ø\7ð]Õ•¼=&¹’'ËWQܞ #bqn󽭒_SvŽŒ“ìÿ~øë˜~ãþ¬ûŒ6”Ç„šæxÞÕ ¯d9dù¶·’…’KUQ0Ÿ}¬ªèœk{9^G”Âùƽ½.ÿÞÞØXÖŽIõÉ[s™ðK¸7àÞÁf ^zBñ±ûqãõ¹ÉM¹oCͬû~•&±M_:¬ýùô”õ=\;l¹dl¨)6¬Á–”Q½ÃùuTÊQ6sïæœâ&iw' ¦è@…î´‹ü.Ï%RK» ·¿X˜Úz±ðÑQõbáMyÄ`tƒÑ1+}Gwš¢2^Þ>v:j¼tÖ]¾¡¼«|–0¯ ¢ +øÛN¸îðÒ×k—ä¦Ç”º3QBªþL”ålי¨öüÔÓx{ïÙð Sr…ï°ª}¨;̸nyþ¬«Pm(%:µ.«ÅRË=¡SÞI©åÊò@ŠÐõ"BקÕ,ìZŠÐÅŸ¸‡~¼tVêÈØIþyߔ±O .'KÆX»x=€¯±«ßW. x¿ÐRF +îŽ÷¹’mƒŠbýÙ©,¿}î±ð~üÿäїkغ†Ã½b¬¡qW¼‰É‚ªv=£­°ŽÌ€Àn´]Ï3TƜ9p‹íq[5Šû¶*Ëë“M˽M,ÅŹÙh2+{Dìdš$ŒÝ š (&’XìJO~ìM‡…¯`! R Úµ °<÷¨t*[·¢Í¬U·MÃÖ~‹a‚፩­§&½§í}ƒåÉ;“] ž…ê¸PÚÛŗ­]tF¬ž4`L5Øz0–=…K¸2`‚¿‹ _O#پĩIÚ|Ž¸h™0¶kj:0ôLâÅ*zõmy¥fS¨žWk¦½´©Xo;ŠÝÒd¹ljEª,o§2æ¨rø 㫈ŒßÌBÆ ØÚRÂ$8³ó«Ñ’Çù!%±±¬’¤úŒ=ä6 ƒ`f0n*ƒ |ôûíT¿Ü>è/“ëûQ-€èÐ4—§ðŽæ: Ä8A—{@qc‘0É bÀG|ceûçïÃ1®ÄN ÚIкÁbÞÀböb—H-- ¡·ATšâvô—&Ëâ¨ÜqYn 9›…Øù°‰ˆ HÓg>Gì¼Î[čå!v¬þp±å ý}§Ï¬¢iÄgÑäyòRÒh‚£=“B“ žÖ§¤J‡ÑžüäVZK—M-Íà÷‘‘Rêâ,æÒdYUÁsaʸ'àÝ@?Ü2äñ×ÕÛÂóþ¾òƒûÚº\H° öü‚!¡Fl´«À¿¾†oäNÿþp#%‰ +endstream +endobj +49 0 obj +<< +/R8 149 0 R +/R16 152 0 R +/R29 158 0 R +/R36 159 0 R +/R38 160 0 R +>> +endobj +50 0 obj +<< +/R7 156 0 R +>> +endobj +51 0 obj +<< +/Filter [/FlateDecode] +/Length 1450 +>> +stream +xœíZYoE–ã؄!°'Ì5ciÛ}Š" ñkßpž‰„d¤˜ÿ/QÝsT·×³›ìÚ»»/¥ššêêêêïëcޖœ Yòøï„WçÅÉ©+ßü[$uyú[+\¼)Þž©øK +*¿:/žÂ‹¾7Ó×g!xÒ3Q:Y:%™öåô¼ø£zXO8SÒ9gª½Z1΍•ÕWõDÀkÄÝ^ù1(™ñVúj'¾¥—ÜWj Õ'QŒã`AŒê‰dŽ+£ªÏkɔ³ÊU[«…«ë‰bÖB#]\tΒAëY8ˆôޓÞÛÙ?D£ðÖ_}½im¬ê-ŒšÄ¹Û» A`”O›—¼!Ɲ€'ItÜ)H|õm=Ñ,ˆÀí0ˆïR¼µŽeÕQ͙ à·iÖÊ.e¦o5êڞ­Dõ}ó +÷Š´Y2Ðè>z¿[$‰:KÁj¼¡©Ù«_N/´TÌØXFÓ?¡pšÜ*绌²m§œ T‰–»½t€‰e— ï¡Õ.F,Ä#˜t!L„fÂ6q|C–>xAê÷©Ä},?R˜Ç > ¨ÛC˜B6ˆ¦l{Ô¿0ö–)ã@{Œsôkak} üÆ>½#•Úd7ý›H‡„bjzhbnCЖÖw;í…è@77BNZðˆm‰Î¨I[ôÒ]]ó)µwP¤.N0ˆ´ÚS‚SG—MI/¸ø'Á#~€Iâ—YTLNº)¨ES qÁŸvÕ{U͂eÒÏêäXhRP¸nÆ®G`Dö0yVÃɱ؄QêR±ÝցHýÚ©aƛàD¥[2SÀP‚q„æ]Ëh&ÚÊҚ+Êjs Ðj7 i)¿Dð¿ÿAÀÿŠOƒóÔ8³ŽNKõn­è}†+†´’ç +‰/Ý#L°—YŠÓç„Ðô—‹Õùu¬ðÍÃÿÛ +57@žÿkäûĶ8þ÷ >ŽÿŠ§­×’ñ_¯þ7j¡ÀF¿? ÙCÌÏlæch€û€/fÑ=žNä€þI/‘Çôp+~#|`Þ땃¿bښ ™[RXsð߄¸D +aqRè‘~œ„e~éœÀÆ9aæ,:¢if­ñá6¿ϟèd¹O´¸Ü?Î>žN…ô)ïjpJ”91¿¼-Á~üJŒ)ìõçß³·1ŽCpàÃÕ°B:ÄÎ +›LkË +ہxgvùqqvé(cœ\¸lo„–Ê.áZìò¿wyv™½´RJþny†¿l¼?%;!#õ@/7æ˜4¹<æJÊxË&û¡ŽÝ‘ס$瑌€­÷7”d¶8tcò¿yçN+$Ÿö9}Ëñem8_˜‹z†%#ðÞÉ´D2z6NFôÐ+w±0òÝÐ> +endobj +53 0 obj +<< +/R7 156 0 R +>> +endobj +54 0 obj +<< +/Filter [/FlateDecode] +/Length 4100 +>> +stream +xœÍ\YodžM‹¤HA¢®Ø -y¬ÃÚ¥ÅQßàFÀI |³òäÄ8€™ÿ¤º{º»º§fw)ÒA’‡´j«¯:¾:z˜_6r1°ðß<øñç£7oíðþ?G‘<¼ýn\¾?úåȍ2ü'ðøǟ‡?\ÀD7À2?±Ñ{Ç|üV VŠQ¹áâç£VŸ­ÏÙ(…µV¯n­åȘ6bõÛõ9‡i†{…xˆ£vF¸ÕGa–²N0·úÝZÀr\™Õq zmp æës1Z&µ\¬Å(­‘vušxâvõùú\ŽÆÀ&ùŒçÅ"ôl²ó!â¼'eµwÿFäp +g´v«»a5¥´‘…Cs¯Ð9÷Êèõ”OÓ$ǹçKÀ/qh™• øՋõ¹=÷Ì´‡x·Ð°Ú´°ðbõlÍFëaÝ´­YdºìhÓͽ’|õUšÂœD “”4lº_WÿdíGøيFHx±xX%¼ÓX4·Ö¿øë‘rÔ&˜ÑÅ?Àp’l¥uy-Ít)«=&Vν2zPFœY@ÎÁ®ùŒÎ8c8Áy>Â9W#7éáÈÂyǑý"Kܯ懌Qó®‘Û06°;Y3@äÊ*7š8„˘ѭ^…å´’ åw—ñDž)¯Öz´ÂÈ“®ùêã:Ä·^s?ZÎ4Fý:k´›¤ð§‹£ï@DƒöJ °£ÔpùÏ£Ÿ&¢f q;N?øћ +VT¬Ðl4*@ì~ñ¯#Á ¸™MFHhò|!ô¨¤Î6å|p‹½(n/+Ô`…žYÐW!~ @3fíê1ø¨QH?]øÍ[¸hœ)„fªÑ8;š„fIœ`Ö„Í-3 ËàMA©*Øå'ˆãVÀ%E°Ö<:(¿[X!m¿¤Æ²QÌqôþVëÖõq7¦ø¤˜ó)¢^,‰m"KˆÎTÁ²¢_<½à +Ìú[ŒÄt¼B´û³mƒû_é`ûõBÛŒÄØ1‘¯â(tVÎàóIW|©ŠÔøHdzK´E2m¡n™Éþ‚à┸†B£[ÄÓé `D-€.»Gº.õñB\;™Çµe˜ÃŸÕ@¶À^|¸Y¼|)BžPñéj¢™Õæà“u…ƒÏÃâ)٨‰/kHš4ê¥,²7®ÈÎTOPÊm +éø¦íôê9r ¼ÄÊ|F&MÈ¿#VAþ¦ÎýW3¾è¿d¶´GNC ÷ÖÂÃñ|Î9”âs$¹ÌwH«XÃó#sx@Y3ž†VF¼Õ€±>¡–=%ížLò¿ ˆ”2û;Kθ•×*æf…åig[`‹ âll£X=˜Ø1Ú°Þ¹™ZQº2¤½)ŒÛfˆŽqL.…%±ÀŒnE¡[OaQZSÓêøÒ„f“ó'ÅÑΏ¼¹v­Iÿ=*“&¡j¥L-D˜@Ñ·É0䡈HGϧså¥}¾­½Ž/{åvϟ0O¿9éA¢Ä »ˆ]ޑŽACý Ùw¯š*5•º*€?íJuѳÛv÷'çw£ÐÅù—2˜…ä mÞX(‚?V ªn^Œ¿Ç!¿Ÿ/o éfÕ;ri°9s×ޏ*åχtæ~;&æ¥å%Ý0ªæ‡ã`bVKÎò’Üãä¿Yñò*Y¿v[rþZ‡bKIûõY-аaA™rŒ0w¬þTý÷%A£øè6ʦÌ߄®ÁÞÆE·îŒJ6õ]69Oã;8Ø (bBEeÜd]Ê¢çKÈå¤Ëž¿ä´dâð„À´©,Ùͪ²Í0Dâ×ÿ7øˆFW˘ÐYé’ Á|Sæ tg’°c8G@‰Á¤ZœÔÂ}±µ„Ü÷P×´â î`gÚÛà—‘a¯óÇFCʯKñ)(E„I qàUêX± +"œ`6¸|d¹`º ” ޥ֕…q$r+ ñJ ð…¾–×#ךZ±ÈÀüu·aN¤BhAq­pÏmó ¼µÓa¥2崜 6‘…a7z ²Ëæ +AIFÔʁˆñr W¥0ñ$&c^ÆL¹PCgjb †Qˆèw°>›;u\@a +¿pÁT +ÉÏ:-K}¾æ‚äÒNÀ×8”Þ¥DÚAÔbnªóUÔBÚIԎ߬¤…S¤!aÈ¢ÎÆú•Ç¥µ™¯ƒA”µPºá=«Q¤Œso±ž–Å¢w*€‘…Ah3ì°³ ¥È2äBVïÉf{åÊݨÁØ:)&âÎ{|›˜òYp"lOèŠû 8cmxHس8À÷ëPŽ—XH–óAÄ ¥_NQt¢lšh©åŠþ(ÑÿU¶IÑó%ã ¤`¼*‹}Ɨ²P¡ˆëGâ‚UÑ`ôõÑC¡à-Ì8½?~ÚF4@Iо/¥¥½Jeišçj֌•õâYßÔY§óh¹â^ÈÑ.œì ÞÂ姤7u/4üÍ´~z÷:ÊéRC½ó•Œ6]Jé’§KwúFiÈ5é®7Jɮ˦vYl´ÖN,‘U ¯Fðú&©Úõ…mÁ$âç&¡:áxÖf“£“øf”S¨J* הT(T¾ÕT¾ŒúŠ•îx@Ӄ iÐñ:Z:KGLwÄ´IG¼Œ(?Èã_ D¶¶ä13"%P@‰ýêáƒ:·€hÅ!ðG„R–y8,Õ¸ØP˜çuÏr›äÈç(ä"0£‡ò©™ªÝRZ›ºshÉ/É®ÔÖ ]ˆRè@ªc©þž×’¡ZﻯýK•È¢ù}¥Ù:ü¦ +‰‡tÇðÐÒ} C)žKK)vqvÕ‡íUÿق nysø5[؆'„›¸ÓO{D¨û#Ùc  ßã”p]¤•…gIOÉ"¼fÞ'§Y¬þ ù›·P•&\ÕA0¬P!„y‡^|©TÀâLdû~!p>,·Ûlvá&E3 + ð*U¨Hß¹¥2üê¡á¦äÛ*¦_¹Îjb›ï±Sjá[쌔;[®€‘2ÃΖ/bg$õØÙòEìL öØÙ(ܾÃ-Ï¸xw­@é¯Õ­5ÑxwÕ@™_µ››‰¼¿ ÍîßMÎDÞ %n=J7;Ñl‚´="pC†ùŠƒ4²<ä_¹D¦÷u…Ê×Õ +ïáJÇèöE›‰”ñ—ÕÂë"©Gi”B´»¨Ã“Gëa?Ÿ×Ÿñ–€#SñS´Ëjú4ßô>Jºð¬×/¤ó¡îH‰ z©íëd€¥IÖp¶é“á…Çu ±¹úÁñ¶O$üf§~rü,jþ Á½mßœ¤ï¬ãè[‰èdþ¹øuN!×χ묫}I ¼¥©—Ý¡oï —ÂûÁå“'8ː¶R¯Ðµ!/=3±ðø!\ùÒùÁ²aÐAøêNfÀ¸T´§Ô´¿ä ©äÑÃ5d_^a h\8¯&éìpe®™L·Ö¸z=®•žè!Rßðµn¯}¯¾vÔ{ƒ¾Ë˜Ç ~—Èò¸_ŸßÐï„ä8–’`15ƒ¦öEqÌc¢`lǖDH R›©*<þ´Œ)n-©"nÑÓ܎¸f«M¦(=èÜðò†t +’ÖPÀ‡‡Æð$Q R²ò¦25€ó‰¼ º( + ï­AæŽCbýE áYó~å¹]µU™îÖßëðVeý¼<×g¬4KjžÂÂ4D ÷+õQx€%ŒÄÃt‚`‡äZèOêñ¢ÛGxÿ~ÁQáÓ õM-O‹춆*¼ìÌ2Rz³lز§KÂ,»õ`­êr¼^GLs;âump¢”›¾\ÛO¯˜iAEŸMðEŒfɵŠ&Î!/«¡TCzJZÏsüÔL.ÞÅT0æ6Ƙ2|Q5Z-é«m¦ˆ¨wBÕ$¸ð3Ýs%:ÝGJ¯û†-é>æºïÖ÷ÞÎtßãܞxº¡c8Ó}…ŸWYÍñY[CbÑêþ€Ä ¤$¤:„=Ÿ6AK˜„¬ rîw«ê¼x|,yU_í)ʉ¦ßØ肷v‘(]´lÑ."ifýz°ƒSfn1Ííˆ7`¬üÚgÕ,>ih’%TÅoj ¡ç1k´‹ +H—.i_»0kŒÐÏ@Á‚F†ì¡¯ËGµ) +¨ç È_0&®ÕLíN±Ní‘Ò«½aKj¤¹Ú»õ`YÁLí1Ííˆ×W;8þcêy(È.šÐÀq·¨ö/© p;äÎÂ0¾ j  —DXseTé–ÝÍ!Œï’Ñ£7ã|g$‘ÒI֌$æFÒ­;h¥æFÒÓ܎xFbùTèýÞ?³iÌpBIkJ¢ uHh\®‹J_’*=$á?þû™aì†A½æwE¢>ƒ¥Íáæ‘(ŒÑÁökØB' ³aÚêï•WGtÞÜÛ¶–]‰–(½m7lɶinÛÝz°ƒŒÙqgÛ1Ííˆ7`ÛZŽbʅÏRáªtSr ê×PŽ3h¨-üKf-iû‹]°·YeÓ÷5Ö.‡u9õn …Hp¤³¢#¥WtÖHsEwëÁ"¦Â¢;bšÛo@ÑR‡ÿc’¨h$öœø¦bۇ§`¹ –YÁم :ڐöà*èéqTåÓ:¤=í»Xîðð9S«õHéµÞ°%­Ò\ëÝz°‹‰n§õŽ˜ævÄÐ:·3•×äæuŽ`©Ó3´º’ò‘^°Wҕ.í¦5ï¡×=)›×"…#hÑ×d¸ ` ô‚ºêi¹7™ӝÁDJo0 [2˜@šL·ž|̐[{éhqfG»¾µxðþ)~Q•†Ÿ5q> úÕ)×>öïg=‹ø+ÒuU0‰*t¦ƒ ¤†“òÍýNÝKÕê1:56LQ‹2Sb·–¬ó3v´8±£]_‡Ž•œÍ¡^úó‡ê|M£¤à£jæcŸ¾‡Ê¢£!kr{H©÷öï5ŠfŸUÔê¤U¨HÄèa¨_ ‚j§ÕL’ŒZt®¼œ€X×5]#¡3Ȇ)d Ì ²[ ’ ÙtQIô<]ç/ºt M´¾(³CuS'š:§|ô_.É¡² +endstream +endobj +55 0 obj +<< +/R8 149 0 R +/R14 151 0 R +/R16 152 0 R +/R20 154 0 R +/R29 158 0 R +/R50 161 0 R +>> +endobj +56 0 obj +<< +/R7 156 0 R +>> +endobj +57 0 obj +<< +/Filter [/FlateDecode] +/Length 2459 +>> +stream +xœ­Z[o·†­èH>2t³7•­lâ8ÙUtÞ/oEÑ"@їz«û”4 +8ÿtHîr†»ÜHve¿s†ÃáÌ7ÎêmǙÿ§Åo¶ßþàº_~ß&r÷ÃwãâÝ/Û·[ÏTü—týã›î¯7°Ñw ææç-g!xÒo¢s²sJ2í»›7Ûõvœ)éœ3ýþ çÆÊþÓa'`›ƒå^!>"3ÞJß?ˆ»´ó’ûþσqBÛþ(Rƒq8óù°“ÌqeT:H¦œU®¿È¼V ×?vŠY ‡L*p1 K £8äÎJ¤}/Š´×¿rÔÂ[c|¥im¬*FMôÜ+"ˆ¨åeÞä…Q¸ü’–Ž;†ï¿vš¸­•x•Ž0 m,ƒì¿8säæc­œLfÊ©‘6Þ;áa˄ª<§ß‘¹Å78X¹ÆÇI™lÆ×»Ö>Öñ²ï3òäސõ!RPHœ 8xëø6™Îx‚'êQÔâ#r0Ùv:( _Šˆ«d‹•0UÆÆêX̏Oî•Ùž±ÀéñÁžsB§(/ìšð+ÇÔh鏓5@Wx<Œ, ª‹þ“4 Rqñl€|1§.…5ŠƒŠ'ð÷ÓLóJW¬àKé Ƨ÷Û]Dd“̇”gd@ƒ:ª!ãÄ Â|…2‘$s œž¯í5'’tÓÀ+>ˆ€œ;ÝÿGi‹ `2â +e6h—dDIoLæZ-TkoUW}Wl­Æ¹ŸÖ¡éb^IÇWO +Ã]‡a)âòi‘@4Rõ$²‹–I£„XŠ3Ë*i„BMC¨³…«ê±*ŽZ¯Úk2ee¦/0‹!,wI¸Ép¶5ç}QV+6ßÐô³˜—ËÔ°.oüªqw<ª=f>_¹o5Àüµ­Ã™êî—0zÊ ¡>õ‡4<€'çÒ0OÀ²¾ËVññ B/J*©ÆÁ—Ël±ƒ™â’Û äriÃÄݲ¡Î5¥‘p0Æ©ŒIvœœ#ïáwQ0Þe¿u+*—ìj|@ —ƒ‡DÂIló¯hM¸ŽY\R^QkXiGùZ9͉BÇ»› &rxëKL¹Ն¦vr¹v8a®$ٕØ[»&2Hòµv5­¬$±÷ÒMx±Œ€”Ö¾‘¸}EãžÔnúنTwlNÅ?mbôӖ"Vp®Býðbv]x(»Z5›•™_6’FlXÿÚ¡—v╪ÃI‰'˵rµÝøÑp¥ã¸Èý“ étVâÿ–â¶Y)3Gíࢇ äüõZ{[ÅüÕóŽåö:A¡¹RJ?8—=dC.Û^¸Ó‡ß‘ÿ¿ßºk—Ï»,å(ãÝZ«Xì¯0ÀŸÎë~º ²‘ø¿\Éه4@VCƒ¤……½ë Ñ~V,;„2›"0ý-…±ô÷՚ÿªYÒoí(óˆiÃûâè´þ1:~¯Kr~ÊŇfzËI?7üs{s•Þ”Sö):àAÕ¦¹8,òú½â– d8BÏ>'Y1>%¡Fï 3·”ù ºãd½Oðqøl&Ž¹$e%ð÷SÜOX‰ó׬€—³Œ&€›~Go;xòûô¾•N‹ÎrÑy£òßø×ýí·ÈôÔcT`~âr|ÌOÿ2eÙ)í‚ƥτ?¥y{ý…*s Ÿw_ o{\ vRVtÄBóÙ·ôéIê›d\Ç?ÔxHã¯àó#> +endobj +59 0 obj +<< +/R57 162 0 R +>> +endobj +60 0 obj +<< +/R7 156 0 R +>> +endobj +61 0 obj +<< +/Filter [/FlateDecode] +/Length 4243 +>> +stream +xœÕ\ݏÅ6þ`mۄ1œF†ƒÝSn˜þ„"$ ÷òäÄXè ç?UýY=Ó³3»wVdŽb¦ººº»êWÕÕ=ûk7ôŒwþ›ˆg/7_þhºŸÿ»ñ»¿Ä«Ÿ7¿nl/ðÿ€ÒÏ^v¾€†¶1Ï7CÇ:Ã;#x/mwñróí‡»ó¡Ü£¶·v¢¥ùö£Ý9ƒfțùá;ð°WVs»} [Icù`·ØqǤÞÞçN™8óãÝ9ïÍ ”Ø>Üñ^-ÌöIàՒ™íÇ»sÑk $–„y†(:Y­„o÷I–öÓÈcÔÂj¥ìöJ“Ri‘9s’èy3‹ J-OB#˘C}`ðƓf0&~ûÙî\öŽ¹A×Jœú.H‹‚¹ãÛ§»¡7ä†n5OS¦r¯ø,ŽÜIÁ¶Ÿ‡&ƒ„!Β‚Noéoï\¯ ¯&‰ +óÊJSsk÷ϋï6’‹^i4£‹á„¹Ʀ”ÐqPF9ú°pÞÌÔãòšp¦ ²zM:Z§AGÔà<©pÎdÏtÐãªÌ­³ŒØï]b‰·‹ùã!OS¯ž›Ú05°ûieà!“FÚ^{£{»ýÅ))`–zå5rƒz»S½á¦<ØgŠmo’NþO»s½aƒ¢¤__k´²qþr±ùaSÔ)'y=ÊNv¯þ½yª¡z¸ŒÜu®wº@…á+ÔÐk‰P½_ü²áLƒ›™`áMjϹê¥PÉF` ŒõFqÓO·ւ*°B7X¯üð-„5 Æl{ðXF.\ð>$XotQ´Æ¿m.Îjd{DVµX ®Ÿz;È­B¥œ“šFôÆZùö + I×ê +dŽh+Üì77 +I$|Y|¾àSÑ넨0B”š±9¢ÈYÁŽ +»>É@óM $A†¢ Dð§€ZA¢oåíÇ;X´Þ +–ÍÝ8Ӂ㛎Yå:µÖ²Ûv#˜…ñuÚ*“‰ê¨†tJªí×ÓààÇy—Ð&3®ª)ú>"¼•§e†;B¢Â£¥)C+r4 ¢ØΞ “ä¯~‘@ßl¿•±ÿiD4aZ}xì/qd:#(ìá-‚ßÚq5ø@Á¥é™ãU HHûªhîNˆìwÚf¿ÓšÀÿz >úI†ŽjFfR•âg÷Yá8k¥¥Ù§$þ-ÀF#y30 %S—’5»ð  ÎålKm%Eg5ÂUó„f±4O5,¬ ¼#‰Ü¬,5>Œ©$ËÉƱs +£q#Á(r ›Ñ¼}k…‘ƒ-_ù–„ÿ¬Žh MøÅ‘)Ù’<ãÅ­I›™‘?Þ¯Õi“Ë Ýj)Wi?'ÄM'Ìè±gÅ¥É"WP@Úqý(0â7$@\¸_O⹏i8=M¯ÝéKÇ· ãLg­ö§ /-û Òb .¡ÏuØxS£Ýቌ—ÀŠ+»[ì™YN·7•Øàü‹ržœ¿аƒ“ÉôŒv^dœ«‚yä}mÁ<Êo½.ù Ê`¬´w×æ&š“k•ÇYÃFÞ ZÜoJ+ußV]×Ó$h<,ˆA¹Û9@Iù¶ ×Ùº¹ _DJ<†F`L€øÔ<+˜TŒGq4HVûr€Ä2XnFóšX“žŠxï_‰Ô'›@ŽéÌô8%õP¼zf;CNl¦ÃÜk—)Ë[[0oD¸$¢¹×wÇD&FïNP´Žu¹Í§&¬è¹f &ˆ U1¼ÎcñáBÜ!yº7¦i‘…Í &«¤tyLðŸ)T u5ÙHM\ø.¡IAŠ?J£YجúÕœ­Òü¸d‡¦ùyL2úrP˳ºÎ’Û7ùٌÛOk¿ããÌq}¼Õ g’UzŽ"5žçÍaÐB9¢ôÕ>X­6,Y‚ëcÀËá™Ä¶'Ñhf.¹ssû0ë`Þã¥ê5w£jŸp¦Ò2ä`‚N¦ÉÔðœY<³÷­W;å™:´(•®Ø^sY*w½¶0U–åÂÔÕܪQ (–³&@e慕™¤=ã^iÆÆùù`„°<. æâñ:׶WN”¨C˜æ™ØҁZŽ”ÍìõdÆÓτ"ÊC®;%;n5®P2ˆõ¥,Š†˜f1ª<¤ÛO\ž:§üºl?‹s“°ót|5ßjîªÁ4pMK°™ù¸"¬™ñ²Fñž.8UÝoY=â8Ÿ•Î§¶T†Îôrªµt1fýšv%w&S+ñ©\æœ*¸¸é¹ÑÉŏ˜vˆlÁÜkŽd3PY¤µÃ-™‘³Ú÷&‡çÍ¢<íët‚i>ôVÐ=¨1äç›]×)p®ê5ö’û¼d)™"9àþÂÌñ>ÛÊ"[±—Dö)~}{oqª 19lJe™L¿——xÕÖª V_ª[uHBì?TŒd?È\1j»Ílh|2]ä:~Ň°s™3q¢ûl7ÿf½°ãŽf)kæ9$Ò+A0˜K‰', umâ­8ÉýÀûÍüšš4qÅ[c‹ÞsûtZ´PfüüÓ Âmÿª Ð tÿS;ß'ÍøŽ®9[ñÁ±¹VA©­ä‹wA&¹ÐZ#ُå“b"&¶´U<˜4ÜøêãĚjEÓYÂY¯îϧ<¯ÕkÚéÿë*Ðä!·\p®^H·šÍmFVáÖlJtn^^:òm–|âÂQ hÙÞy¯H¹'ÑzÔlu´>ì@¥ØéºÌ7ͦ‰/O/5:ŸAºƒ’ÿ¹íãÂ-v";sé ½jè‡ÊƒÍ+oøFIy&Un_™˜«XµFL‹Ö¹Qs–H3}ÌxöáàásÝéb„ûø-D]0ØÕK³|?^õú©À =kšà#kë ©œ>×Gùá.ºâ¥âód;°Ïèe°Ÿ÷K +òQ”»ÕŽÂpH],Îùp¡$A0C 7e +²c.zí¬ÅINyÀ½â£wªM~rÑߗcšvLõŒÁDÞi +(ï–ö„•hpct+ŸéÞù[÷0G_l¤•½–º;ó÷«ËwÓqê„ÆK +XM1âaî>ûӎ…û#ä<=›E_´yñæ]ºwɋՑf_R&µ $Nþ º=È”·Kg·²b´‹;…—w«‹ï™™H{‡¨†Þ``¶0.$_;w=iÊoP3ï‚GdN7©'H³Â\Ð÷Š‡Ö¬‚E½Øç ÌÀ +Kçü²ãÒ]åë ]ãÍû„·+ÂZ%¯Ã¿ŸÈ½ìùԦΡ‘yÿ\8'›Í=_\ä‘C¥#n××âéÎÀ¦‚i›?žÐ@³ðLj+<ÁíÐkx%…wÜøñÄl)-ƒHšß¬¤=^Œ Պ8 ªtf¿Þ.½MÏÙáJ·® ì)ÄÍÜt]Î4hû#Hi%Zm»šË秥ÙVä]¬Ã €fö>ÆU2nÍgvÙՍÓ&Ëa—«r³é&c”7¶Æ‡çÎä‚Õ1(7`Óú—À¦½‹|2cÕ3F»ªl°×¿­NéWò$™ÒõÖé¾ë`õw®)ºvšT +`¡€ud⺼ih_¿ž©ªã҇-€Š“ƒD‘O–Ñ÷1¥Ž[ˆ¶U!hé~G\wŠ ÅŸ/Ù¸ N%EiC•í¶kFû¥*ýôd©®¼W«9³Ç_Þ£,×[_Xaõs>xXÅÿÀ»õÈ'qÃæÇtëîf>rhýsæ8‚²\árw3Ϻ2´/cÑ|qå bîü-…x›hÄŽÊW_ã 6šWµÄö¹Û4¹ÝYY.§Íº¹k¹pÁb¦þ¶ŽÌ†Ö^eÆî£{*3qŽ†5æyäâ‹x6 z;˜„G;ëkÿ +ó°\«4=ª.¹øñL3#Ü_r›ª‡ïéÅÑòtæþxF¿ç Úí¾ß°î;Ø‹Ž)&:9pØÅJËpüwØÝÈ:$,ò„xõó†Zt\sÕ½š©@3g€oN”°Ý³M ™µÝe¢åЅV`±]…Ô3ˆBÖúsZ9Tn¥’,àU©ËDCÏ¡jd!õlóül£{ ~Û°Áü—7n/pQù‘£™ß.ÁŸ¼ãBù~0$ÿDÓ½5° ý +-‰1뼯ào‘0Ž±Cˆ Ÿ§÷C„ŽÉÿ}hNqµ%?Ͳ`QL¸N)ýr(hæÀ…6‰R0¸@s0u¿H[°·8Ù(ËSÏ6b`,З@;hÁ´ ­…²€ißÇe¤±gßÊkãeyÊ[ԛ¦òÁÔ¬s©«×’ÛÞÚië5Òä´!¦1±²îÿpÕëñ·-Wø–¢DŽ}Q¶Þ¾!ýÒÉXX^6ài7$Šs4¤9üƒÆâi¦š¼)0_´Ô:Á ÓJ$¸a†‘ÃxÁVžâA.Ò¾ËDcÏØ*hƒ²Š}¿i*_‹}3¡!Wï¤ð?§Wþ0Þs-dËö8M+ç2֒!Ò4n¥a ‘VI@/Ñï%þܕv"Q‚!Z Í! !ZxBç[ù5ð²â*ɁٴJr°q•$,´ +Ê^¤}—‰v˜QظJ^V1¬7Måk1,© dz»²+Í +?ö®ÓÒM[ø_¥­•ÈJÎëÿ¹ q@R`4Ï9šu Y‘Ι’.9Z CŽi̶|+ŸyYÁP+9šà"fq°Ž­"ås´@‡-ÒÐsh…ÚY9Í|ÓT¾®´R¶˜VÞA[Ьñ«’5^1«äÜø4Þá|+ã2VøtZ‚¯èüyüx1ˆ¼€7 Ò'ü崗1é¶1YÇ°e"Íó wA.G. ™±žKcÒoš¹ ×¹ Ò²‘\ …—‚›ãƒª5.З‘@ +´BÚødKM+xXM»$}[Çl +˜‘~­Ñ…EýÂ&&öž{kÁ_*L¸ù2Ð 8ÑÏ!îŽ <ƒMÇ + ¶y< 9­ <ª¢™“q-XEG›~\˜"@ Ä¨€=$k·,>GýB À1—@ÿãZ§9t˜°Ë1íç2´M4¨g#ÐaMb_žýDš§—Ñ«R‹4¯Ñn\ž?¤™•>ёƒªè87L¢·xd ¤£)B³Äãé<LX•æÏ·N)þðdž¿6ÿµ¢"´ +endstream +endobj +62 0 obj +<< +/R8 149 0 R +/R16 152 0 R +/R29 158 0 R +/R50 161 0 R +>> +endobj +63 0 obj +<< +/R7 156 0 R +>> +endobj +64 0 obj +<< +/Filter [/FlateDecode] +/Length 5550 +>> +stream +xœÕ]ŕ–]–/ËdØ/º³Ó==Ó3'ˆüD¤@¡LUW¢‰(¬ ƤÊS)~IÕUNM.wXbr9´êîÌr–?îGtïà’ã/çA²ÜIE¡’»¸!T8hì\÷üê73¯¿?Èåô{ûûæuO÷{Ÿ÷£_–I¨aÉ“Æý]¥Ž;¹ñàc¥°Û¸sQÜØø`éђgÚòŸ°¶ïï2æ­z†`³òK%Ëô}ÏòÃ߈Á©Ámj2ÏXÙUº»mB¹Ý2mÊ9wÚ˶iYŽKÛ&–Û‰xŒ‹fCÚ9LtšŽçR¯m|ŠqZ^ÛgËT°#Ìm.{}‡[‚)·S“[¶c·µ”©is×æm­­Ëo»ºÜn›®+I¦`‘„YHsƒÔ<‰ð¹I)·{Ýržë8^ÛHɍ1ǵS +‡ø ̳!e&¡f99zÈ#ėó/!~ ›Üâ¶Xø¶ëÊíÌô‰o¹ÙIL ‡p·˜1õiÛ5eËä¾à ëÒdɜtTÙ¿¹ÏlÒ6=zÄòl@¯’#mR܇”}SüÌif‘ ³p²Œúž—¦±¼jåm%FmÓq¥­|@N´¶6÷’ۍ_Š;>ìT” ikŒúP& äybÔdŽžïŠ9Ê´'Sh'Ì$n4¡rÊÔó=ä·Hb“? < 75¤†2 lD²3¢“0Î<Ó ›âe\Ók›!Ù9Ì«|ÏÆpF¾ÅD»­ì˜œzbÉ#9 Ä!mƒU.þ=å2ñMN,6Ãýõ¸ëxñ*ܲ²tGI,‘áøŒbDf0cãK_Š;+ÓY'¨oø¦ï*¨àTa…c™.“P!F_ùp‰W¨„ ê’@“Sׯ¼Ï¡¾Nš<Ãcl:=¾³•MËò¹Çlšè!cÇ¢Ñ@•Ç¥œ¯ãÁ±Áìš°2 w¦jª‘ÍTÀ2ªL}“ˆ_qN†ẽç‹#ÚäTGÃkFY(RÈlRú»‚Ôá¡XQ‡›„“DVátÕCÈŽÂ7 +°­è;àïK€42Ê6M¸¨ð=ñ¹«i€=&C³s™µ€/‹¸ž¡ihޘB?²Õ!jÀcÔ±B+l´Jå•ÞNJ[ªÀ~3ªì“5ø ¸tàõ€C€þi< Æœ.Jk; ñW”ó£ž@pO²Äv6OSÔ[À0/JÂt²¡”"ÈK©—æ) /°+v²¸À!qk¤ü.7m?U~ ü¸ ŽMª6‡lºNJ58.fl'cg$éñ,•¤G&7þóöÒʙY¾º«6bl6L#J´ŠÀ“÷݋À#)€mÁcÀºæŠv>¤ž‰š°¼ÚÈÇàÐÀ7ÄH¡Íˆ¯ u¾¡Õê"Ñ-Ìò…3£Â)…„YÍ ¥Ÿ»Â«óéWÏ7`–¾xu] Qƒ­/t3¦+jUʺ¶àèЪ»ÓmŸçn<« -8v~Ìõ]–n€gyRb$ +ÛY+µ‰ñŽB›xš;0{w7cßZAÐCuÁ îBÍ^›¦Ó:µÉp4Zò–#$­¸cBæ.ÒÚæ± bÂìiÁ‚äYèWmÚsfP+ÿjáƒ:,Qr)FαkŠ%L"&µ‰_ÕáÖ èzQè¿ß†…„ú7ªµ¬sÊ_WÔR—Ö\´2õŒ!À¶B˜™Jò€ҀF¼É4ªFñÒY¨áÎä ³©!xIJÅ|!äãžie/lXG*…_©¬lˆY‡OìÊÄX ³l4'¨Õáx…@a±6”›‚ÿšÕÏ:œ—:å?Ä +f›­*bÅ%¤ÄÙ×á—h¦:` Ô’©küê E1ÀMœlñ)¸Ï‘d“dB M¢M‡ÐP¡€Bˆ'Péð´m#Š#@³pÿ®¢êÕgµ˜Ï(…„† 7‡± ΰ²åûVƒáÀ@šH·ÅâÌ;—RgWqá†.xF¸#gÃ7…ü&‚š÷«ê¶ób²aH"3lãìtSBaKƒ`—9™WVÔ Àäˆò"¢ÝƒP€´€43Œ0f¢Á îG(T¨f5]řÁ,“.3®óµqÕš~lHè=`ÞH]q“z¬Ò±iÛՕ»öcÆZòÀÈ.d=­ÅŒÜÏ$KP Ÿ/à¶íьӐ7îÕm þpàè܀ӗ UßÛ&<ôQoÔZÊl˜…O°ÅÜ/(^`‹Õ¹/%ŗÍÇ2ð K,šø$“²À +•¬½d‡çK‹ñPT¸lyQEP1÷¤yš@d Ù~|J ÍëŽÆiƉ£}r˜ƒìSÖ€¼0üã +5-šÆ'MP¤.Á= \CÔQtÜ`ŒK‰u9Kæ5|×·±ÈèI ù›Þ`S¥Ëàh45ù›B^®‚;T1-â…V,Ÿ‰z™¢ „0€G¸Ï€û@ó5ú®Å—ú +¤JU;Àáa”Îċ°™ƒoI‰ëz¾ +$—*9Èxl¡¡Ðx%¸©­rÔšÐÆ%ž…«ªRÐ J-þ <Œ€sԅHº­zR Q +ƒÕWÿ¢À÷¸ó¡ªûaèÆT5 +ê²n@a΅…†æNш%–(ȱë¥=¢©‹Àƒ +~Ð8Fc5Êk>Á5…ÁÄï©s³jÐ̐àPqãå&DcÛ±¼Þ€Cò(Z%1 ·P^,e§ÚIªÆ{A l.®X²ZÅ|Ñ£jRù"†ÅxÑÑф뚶åó”4)‘¼¹¾Ò"a.¸ÌeE¢§ªç ‹iÓ±ZƵõIm},±b­,;ÔëÕ®QsJµúÜJà)¬j-àN’¹£¡?š²a¨Æ¤T=ñ«âï¡ÕJr»¦ a‹Æ6TȄVòŸ.²ÝFĈx¦ðC…QËô¼‹£ŠG¶¹4f ÉÄK)<“\Ò%.“ü?§‚¨`±±lz¡ ø˜@ƤXD¹Bæ^õbñ0–¼à†úŽ k8¨*葫BL®ª<˜â¹Ã1h³6!—'Šžð©/‘ƒx!î²úPHcñ~în1)”“ãô1e‘·“Q ˜{áØ·à_fHŠðB_!Ÿ›O‚Söü?+&« ¹Ô‰<Š\ùë +•Ë´CG¨­æ¨ &0›@*ÀS™WÕFx֎×JêÒ˺êÞ¤Œ„»Ð¥ÎlªžQ뀴†Êw…™pÈP—Ĺ™ß:ܕÂÁ­“$%qãâÇ@šs“:—Jë?«D¿žãT<¡ +€MÛuVsa~„ÆÂ/UjÜÙxÓsUbÅ25‡¬¡“Ú +ÓXLÉ¡Pã•5$Aªíñ‡-TYØeO©5ÓQ?'éIâÕ究א>‡z? ÒÃӕ:m×$ÊÑt$̪0Óbà23S·™m7ºG-o3‘]`„†Ñ/·DØè„Á¼é±0ϑþ,-fúG‹DEîx6k›ÒÚbõFÄ­b"ÄÊߨ¶¡‡nñÛð˜¿Qñ¶xBš©¹Oä¾.­ËøEߨ`w¡ÿ†^Z®®ÀÉוsў£TŽ=ð;jÕrD8 â^7{TÌëèk¿j8-™ Îë\Ò鋾N¾(Éù ÛæÆzã{¦-øǶ­)kÛÂMâ ©8)À¹Œ‡êUYŒ. Öô ŸòÀÎUmf›$w® +ïS.é¯a¤f*G֏Â|«Ò<ÿ¥ÅT5cså02âb@#DÜÜ×2‹^ŠÓø6À´¡%šâŪÇ~-¨7?–ªT¦¨9Û 1ÄvÅ£éÍì>ŀìÇÌ5®ó ‡Ôt…rZ¹–¦™$õÀ/+ueÂkEÄ\z +îϨ|ÆZP3ç&šÏóLF¡@c¥kîlÒ¯h@ã¼>Sëƒ+`‡ÔW© -ꢤ§4E¿Á©A¿5þ@=n:~E¡–Z%U±‰¤ös՛Èåñ7õ+^þ¨S-wuë—Oµk>®áÊ¿ür÷Eë­¸B?šQCUw¸áÙ ¼pS÷-–K󱗁çV±R0uvN\3Öe™žeqòߍ–d¦A‰çÔö„ÓèY᧺f–ÄrZÄ3¾Z"†àc<¬¡\¾hØ^AŠå$u‰oPê{ñ§‰±`}viS<,æ/x2×1ˆ#b@G0ˆæÿ–…÷µä°„Ôñ}ƒˆ¨3–FÂÑ,S¸‚W8,%†ÏEÀ)B{ðöhvPfÁwuÅ ÉûËÑ v2hv4b[Vü.‚£zG´E=ßW/}4͐_h1ÚÅ]O~X‘Z–Iãï+^/ˆ¸Üoù)BaÆU„ó>%òó€é7ÝÄû9ɢڂ‹*±÷„ÇïÇÔûÅ»çºr©l£+n»>1ÖśÇm7l‡4Qm±IëJb[i®ÒæYɳQÄ3¦c­㮋víÿ~krbâ1!ŽÍÅóD6h5hø”X‚‰Ë„{$¤š·¸Ô±x©ñ协±Ôñ9IXê¸Õd¥ŽyËç¤Ô±ànR²V•:v̟¿Pü¹|Ö¬Ž%‚S©cþúuw=ò˜|覛J‹Ó¿ýÆ)AáŸO´¼÷rË}›¿nmùÚ Onùڌmö†¯´¬ºöƒOçkÚÕ{¦ïã÷º&þqÐÿò–+w¿Ü»½xî¦e¯î>Ò{æäÖ>wgpnéÁGvuµ¿ñî;;Ž?ô_ÿêكG–ì ~úÓSÿõ?w½õ½Ï”ßè9¹³»¿åÞaöæ»~ØxçKãwß;lÓÉ'Ç?ÿƒçîþÑìÉC]o﹓[‚Ÿ7œ›ÚùþŒ×Ž_y~΂£«»×ö¬ýx|ðáܶtÅmc{ÏôLéûüٞ7/Ì^ßùæ?#öN÷ÑZßôÏþn÷݇»çÇÝk÷ü’íúÜkÇ;ßì ž°ø™1Ï=;ç /¼òÖ_íÖ}ì‡mëýQGS‹5ïšk¯hTºe±%™ú+ü÷°í~—eÛ‰u¿ӈð0U,èuŠb#âÖ^MpíÏØu±Å(Ç,?´Ø±Ø‚0´Ø–W‡Å%ûùÆ¢Á.ÿãß½°Æ¹®å½ ö¦–9ÍÖæýÃ>;샵¯¼tô«³øÇ¿ñ}ÏÝÒÕºl[ë\¾cq°øàÓ}=¿è{ç옷µ÷n]{pÛó¿ +ž;·48µ»óÔîAÐÇÛÝr¦gWcp:èÿ ó­¹“Þèé½04X»ì£µ'öüö!wçÞ}‹ùþÒþaOnú›;úšzÖ8¿¼n×þÛ;FL=¢eõCÍϾ³zÃ7ïhøñáá[Ž¾ÂˆìªX(î*ˆYOóüBq7\(FêY(î¦ 5â[ŕ’ÿœßºJþçgםo™õîÔ×`·oýÆ©7lYÖ<ËXÝÐ]{àþ!ÖÖfkÞ¢/LèøçES:é|÷ì„[7Û¹ñ+ë>û×w}ôfÏÞ·OÞ·máÆà₠¤ îH _iÁëò%«-øÖ÷7?ðóÁW7oß4÷Ж¦¹öɗ&Ì=÷ĆCÁ¢œämþxÆé®ÙÓOþ¤)8÷ÔÁàt÷߯ï½ðIgßéîãÁ'Á™žî ˜rÕ¹§:–§wöËo[±ãPÿ˜!»ƒOÿ|â鯝7þôt°mÜÑMÁšÏ´ööo¸qÁ±×/Ì9±{UðáÉ·{?9²äÜ&ãæ 3øáðSþ­÷ìáàܦîÃÁ‘UO|öÆ%¯þüWzçރ´zÛwÎÎ|á/_}øÅíǶÙ·}úî -[‡Xƒ®hɹ„¶FaTµ£ ‰(2ˆiˆ!n‡‘„íÒ|;¢q¤¿?öG> +endobj +66 0 obj +<< +/R71 164 0 R +/R72 165 0 R +/R73 166 0 R +/R74 167 0 R +/R75 168 0 R +>> +endobj +67 0 obj +<< +/R7 156 0 R +>> +endobj +68 0 obj +<< +/Filter [/FlateDecode] +/Length 4574 +>> +stream +xœÕ]o·’lٕ [²¤Ž*ûbÇñ[m–\rI¢/A›´@їz‹û”6 +¤@ÒÿtH.w†»ÃݽÓ)N“Š7~ì|ϐþiUWB®jÿj|÷ãÉçߘÕÿ= Ý«oþÚ5~þáä§[5þ¿ÐAÛßý¸úÓ5 ´+@sýýI]9gk~+#W¦‘•²«ëO¾]ÿvsUW4ÆèõÝMSÕµnåúÙæJÀ0Í£¾ó7ÐYiÛJ»>𣔱²¶ë7Ð Õ®O}¯Ó¦üxs%+S7ºYŸmd՘¶1ë‹Û*aÖ¿Û\5UÛÂ$i µHÈ@‡&Y¼ˆ0î²Çöî?¤Û¯Â¶ZÛõCM)Ý6=„N‘uõ(È"p•Ïã +„óëMÀ/¡ijÓÀÁ¯?Ý\©Ê W·ù"^‡)4`ëK'×/7ueàÓ¶2™îgõ}ÝΝjÄú³8¤¶ èNIäLjýÎÆUð³‘Ù!Qda±J:«éÑÜÝüãúo'J6•n=]ÿ'žmclšA7m·)£íDÈ£¾õ&é€¬…YÓ­ka~Wi WBU¢ë¸ç—,­³‚Ðï}B‰ÇH~„xHoš5@S¦ö }èÊ([µ¡ ›i+»~ãÑiÕÀ)¿û9¬ÈÕ +Ú덮Œ´p䑤Ðb}ˆMzøï6á*#jM›áûZÓj۝ÂW×'_ŸÀ­´Sr3ª•Zýü¯“ï»N]górBº•«\‹¢ÂH”º®ZåEÌ~ýï)Z`3‰ vyA“ÆK©+ÕèD#°Q!* »8 +Çík +5P¡« |¯¾óÀ‹]×Ƭÿ¼ŸQ6®Ûð”$«EeÚ±$;'_©â`#uÝa”¥=;EÞÿµŒl´ ûÑUÌæ7¤@f9ØÎU ’R Ï'ð݁©€¸ Q àÙ{`"ë`[÷ý€Z)dŒÒÁßm BYIét}¢rpžî܍¥z±è‰Ì¼щgÔû¬UŒ ×‰o?*£TÍñ+P& “R ÀèÀ¬¦;§© ฬŽ¯1 Ä;ålâµ8ÁNò–ilJ‘.öhR Jæ̶¤²–ÎFPæ=DÆ®ì’iÅLŒt>vÔ[ф®HsÈaþev£½:ß^8,8p4}Dœ]²å,}DX¬;.Êb$ýC3>„ó8+ò5c颊#r_WÂò°L@U¡øj52n‰Þ‹°n-Èç%™Ad|bѨ,ÁQȑ*l—ˆsÎÔJ}y˜·C8á1z%EŸÑa‡a¹ZY<«?«‚ý8̀öÓmâ0Æàñôöšq=3qÓ­e;wráä27Y‚éÈJÏx)SðÚ5 ڃß鏱•ïÉñ¤é[˜8«>0þ`£ôˆò^?Œ­c …àrÏ3Oy";!lâ*zô*žëê6“ãÜ|´s $‘ñ›‹ã Rt¦jA‚æ:ÎÎnëTJ›´¾ö¨fOù½NÑ£´‡ç¾‡4ÆD…¤§@vË|:gš±‘:3’FÁ4˜`gÙ<§ì, oY “æÍ&uF…ڝ¢% Zžf yh÷€—Û-¸Sœœ={à³²ÓaïòáoěĆ煅ϙ³¥¼n÷­Ì e«s!‡;Q¶dÚ ÌjVLïj[7=*C:€ãªk3‚nìì[[‚è;ÿ¹dSÒwY¡²çTaÙ0L3ßï`x]—¥.:ÈÅÈ<ÃæP—t)“ãQ8&ÄäÛ"è +í@ÉxDÚ 4aì`L–ÚÝÉç‹0D8þهU2C6Zœ¶RºÆdßYŒÖVlB™ cí–ŠÛ%çɌ%“ðOtìh2Æ0ò#Ÿ=*ÌbfüJ¹íP¸¹Ê rêsXº2’=;±ÎvÆ^Óù¯±÷ò6½gÈÉOY[í™C:¶Å’ÍÔ ©tŽç™‘ÐÚ0ãD:ÉHç”àú ›·QՕؔt^ Þ7™M҇ïÖñۇ§G4‹í.™¹_Ex›`pͶ]p͖—]‰º‘¤Cx^£“¾FlZ:xDŒ² /ìĬOÈQ’Þ‘5øý«ð҄PÙ¥ í#¬Ã7B0þbVh­Pþä+Sø•yá1\Ž+F¥•ƒú ïÜÑãŠZàÁþÁ¶à²TJS<¯9Ù[8WR³ÈgçJ}òÀ\1?òw9;¢CeØM=r#¬M„ÆejzU!Òµ‰è“#>÷bI®gAYÊ?>;EÌ®qÙ¥Æ{3üSS—ŸÏ]\*¸ì¼P?1\ï>ªnf¤j­ð ¢GþÊû@5sæн3X®ÙýÚrʱz[`œc]x-o¦·!G>ಠW%·‘Û˄5ÂðJ²1¡–ß+È6÷³Xæ4&w—†j$ä‹ÍŠîh=[[ו>Ë •hU¦&%í}*ü+t¼2i8 rÑD£Kú®‹C–¼`ÒO<[?2ólς(õ}Ôìe¼t«Ã9‹Eí3Á ~ihÏ݆]à/aïüÈÃ+²ûtG¸Û3²Í:¼ÚÖý¹‹{0¦µüõ4if ü ¨É'¥òë,ôöÒw@‚-p 'Ã÷à« ÒÌc_E7z;y+ì.I|Ö; º/P¿ÁÓCLKÕSmÄ:"Z]š…¿Þtï j±’RÕ+|‘éѱ§q®NJ+=€cº2!üßB¶lйà•Åzâ•E©te»YïxÃM­¢RKí3l~ŒÍ+lV©))ìö>M_ÿpŠÍ±y›Ï±ù96Óz|û6Ï°y€Í›O°yÅð›‚"Ã÷.ý‡¨á´Õ +Ή|‡¼ïâÊFT–¼tÙO+¬ksŠöèØ3"¯Žé +È@®ÈkØy“}‰¶’d_{üô• zö’óژ§V'Ã(œÑ2ë­Þ¤ O~Ê>'YûCêKº¤‡†It¸š 6}x.µ6+â›°½—±)¢¡Ú·+lžcScSbSaó6[l²½Ï6-l½ví R¨­ÿ<¤F`>C +Ê.±ó˜BðùYó/Xފ봫 +žzÕÉß]Œ¥eZÞBQDr4ÇD­¾Û?ø‘|‚ˆÌýŠz²[ ¤›%¡àƒ0É¢OÄ Ò>ÍDvžoҘœŠ±þ«ÿ‡|Óäõ–eq`W¶Q44xÆV +ÑZê9Î +“Yцü‹È¥'08ñ±¶ö¥P39¥lke–1cîü³ßciô2ìbô‡‹]åùVW¯ Õ,¿TnÈǀö›ÚÇ?OЅ[¢1ËX#þóåW,“Ò«e1"„פw‹—qéÜÍj\r hôkÜ Ssˑ!Ìbï8¤ßyîMæ­ø"(½ â?Ɂm¤Ñ|¦t¯œ(¸8ƒKäÙ~áJBÙۂ¦i¬Ô¸p)¯”,"ýÁjÒÖXŠ'ÌÞ¹ï߀uF/Œ©¹ÆæaŠA‡£ˆG5îñˆ,˜ ÃpÇ ï†Á4뺲äÛxò°{Ø$¶‡;À^‰ÍSl~ˆM>Rö ›Øà‰x²° û~Ãn&|ò:tŒH!ƒ÷DD>æÚ †v}}ò?k•{ +endstream +endobj +69 0 obj +<< +/R8 149 0 R +/R16 152 0 R +/R20 154 0 R +/R29 158 0 R +/R50 161 0 R +/R82 169 0 R +>> +endobj +70 0 obj +<< +/R7 156 0 R +>> +endobj +71 0 obj +<< +/Filter [/FlateDecode] +/Length 3434 +>> +stream +xœå[[¯Ç–MgA˜‹“ؘËûÀ.Ɏû~‘bÅJb!9ÉCœ#åÁ䉐u°yÈßOUõ­f§çì1(¶d•{ª««kª¾úºgÏóAŒR ÿ-£g«/¿óÓ¯hxøîA^[¥‰¬¥Y„o`†zýÛܙ4F^YA-º¤oэM5 É\DʅþÌ°¢Mj†˜æVI¼ªÐQ)à½2rØÆT£Mý?þ=²ÍLc;LΘ¨ÎüIÀƒ½þ)x<`¯Ÿ§ï_Íb¸S bȵϷÔú* +PáC”¥<|¿ñêÐ÷£mæƒnÙwNÂLã*³‹ôH†Ít+vV†?MH»ö$[òn+cÆb/v‹;¿^Ü}ÒÝF9`EÍS˜«p‘£,cEåÖ´0ô]8à†›*«v(ü|9: 蘜1 :Aö¡}’r"Ôe2lߓ³Ó¬õïö.Ö:ӘÇ`·ý-ô V˜/¨Ì /:iÌʼË;Ú¬µ/UÀ ÚæIOl„0 lÞHë]&nŒM6ÅwΑé~/bóÐ`Ý×,gþ@Սå, 1vbï¤ÉìôÎ@#¿h‰DDèÈ[Š°Co ½ ¨âõÐIýÙ¡}¡‘vïtÞ¦¼»DþüD`£F«•ÆÈkŸÎ½¬—» –YÖ„?ÜϓBž Kíj˜§Y<…T v"éÓö›™€VÁ‹S9$ÜiÉÇßs÷´se¿ 6o~BD‘Ï»Ù! ít··{™îç d#samNrršq—뙜žˆ„èâ hP?ˆr‹µMo³Ï$8!H)c”âéw¿w:¸µ€ìzyBû•òR8Àà‹.˜8o"4ï[º$sÔ|rȂQ†×ñR}óJn4ä sB™Q¥†¦¯@0_Š°Æý]Èë9Ü`ŽÍ7Šår`Áiìãöðþ¦÷]²/4ú~éëõü>°åë'åþ.•ññu×ý ³2žcԐ|·k ö!€WQ ´'oÑˆeØÍð@OùÃ-&óK‰Ê*ò[çÂ` F°®ÌAæOµ<Ž(ü"´}›Ÿ+wA¡ß¯w»ç©à‡5ÓôfñƒµvO“œYdå<,áºÄâu!“4O¤kÇ„Ø8Zïþ¿ „¥S÷Ð𷟽½tÆ.wObWàfá˜qevϏ;_!Ӆ#»b —«jd0/ÂôèRRJ(+ŒL€çNÿ–q~HÚ§pȔ©’l?T³ÃJïP±ð5cá;úÂ'úӉö‚í ¦0™¸ÄÎ ˜½ÒÛîjû þʜfNw¯ç§£FÕ>Ÿ§YÁ…ÿ%H`¼òÁ©ƒ#úyæó’>‡ak%Xríó0}’u£²ÃVaøËJ ¬´œTtq1ٕøIóo+1㝠ž /žJk9ïÍðl¥4~áFYIxj¼ðYrðàÑ*É 'Mƒš4%xîñ“.fM’ò|’É*iú:ßÓüÇ÷WRÐn~x«üzŠQ|‰Ÿ©î'bôkD?ýLèá ¨*è11¬I}Ã[ÉXµÙºQ(UWŸãEtýÁÂñ¯Vzܖ B(3I–7Y[$)a‹$ëòQ–½§q–öf¡-’­´¶Y>9†$kSf%)]’i£"ÃÊ4‹¼![$¥×ÿŽ¹|J™!þàÂ3Š0K €‹Ô2úõ/fTt"BÀ›Ž +oÚàG¤¬>ý>©Ì)špàû˜0?">~B—³ÚH·¾³‚“1<ÍGè‡\nÉЍ´¦§-èÖ¼ƒržX†Uå:/¼LVbÒo³´R‘‡üx%;^l€[žeY©9²FÙ%Y¢lIV±ƒjÕWŠTl SmÖqSôŸÂÿaö)í’2e"j‰<~´z¼\ŒòN¦*“IN5„ Ÿ$u­2©Z•eÒ,A‰¶PÂ*s:ÉX9"k¤ÚÂYIB[¹Êh\eù?"{“l¡”€ásù”€A†QœEŸõ=8‰E †ÕN*'\®Aã%Z »VàXkÀ\Òï‡:ÅÞjí£º`_“+K&T¨i¨p©SŒr‚I÷˜b5õ^yːêáº)p™yxí +§Ô\ÎۀŸ™š€Ãà îP^³Ðq‹Ì sJq}­¹zƒX7Ôa@Âh¡]‹0A˜_“„Ðpñð˜ýo`]Ø^Pü1í¸ƒÕÜjC¨-ãuÀY ÖX¨ØúmÒe¢ Îá•Æˆû6xC2P¼çP Š¼•ä£,C)QGE$?]ý}øñÕ3Ši О°$ú)ÝùJw3Sç&ì³[„Y&Y¡, +ºÖq@ݪ¯BaIi_F`cAà6nŠ>!°KR&/T*yBà<~ö@Ñ1•μM2•‚C^‘”(pÄV8SØ×Ò,¥ÎÈJgàÉøV‚O2áÍJÚÊpFkL¦YèM²…R¦fï–˧…ÀôwZÆñ4ØýF8“óAä-;=\ 6Oš5Îè®3lgx£,~ð +SLf ³îÐ_ø Gés€i&ò×ÜRca»P:Èd»5#˜ÑÖ2{œœ)²Ñ۝Mõyz]‘m®Í.aNƒ‰%eV!ÃŒ+hc„A`ë8oÕGNÌ+°°¶‚°°®‚p7E?ƒ0XŠ„©ê3Óø~VÈÍ£¢H“D8ŠÉ!àùŸI×(z‹· åXàaÐI„µ£Ìc™›‘X £-…3#a ÀëÛã çóœ$ÔÁÝÅ£$úô.Q!‰©çŸÎ ‰1à’^[v2;cþ¶òe˜p{ã4ÐÙh ™º ܐ3uC æ µ½Ö†ð6ªîfBeªíTBðVË©RF[O} ›R ×R©ãPBUË í>¶WÙʲʶè䓤ŒÎ”“¤ŒÒ”“$Ÿ„ÇX“æ!)À«”©åK,ù$ùXïk$¼·B +¤Â­Ð, C²…’p’d$>k¤“ÎÊØʤ€ÖȤ€VN³Ð›d+ÊrÃøŽ¹|Jq£ÔÒËIðöù6¿©\J“×ÍÇæf?ƽõo°Á{½(ž> +endobj +73 0 obj +<< +/R7 156 0 R +>> +endobj +74 0 obj +<< +/Filter [/FlateDecode] +/Length 4823 +>> +stream +xœí]éG—½>6»+{wmƱÅqüޒLß3 åėD+ñð) GŠùÿ%ª{Žªž®ž™w¬7@‚v¿žž>ª~ý«£g,ªRÈ¢òÿí ß¼>úø+W|÷ï£P]|õEWxóÝяGu©üB-óºøýúëêë˪TÒ9gVwת¬*cåêÉúRÀcŠCå;PYšÚÊzuË?¥]-«zõ˵„«c_ÛWA Òø|})KW)£V§kY*g•[=mÛZ-Üê½õ¥*­…—ôC¨DßYhÐõ/Y<ˆðܳ¡·¯ Õ~µ5¦^=ð½im¬ZÑh2΃¡ 2åóö¡ZˆÆ&¿„¢«œ‚…_}°¾Ôe#šÊƃx^a ·®cÙÈÕûëªt ôÛ¾ÖÊ~ÉÌðV_×ͼÑJ¬>l©jEt«dà¥÷°÷;름ŸŒ‰v«eSº4w×»úӑ–ª4֋ÑÕßApÚµU®îß`”í&åLC+±åÁP:ǟIË~êÞڏ±n,ŒÑà²¥Х°í8îû!˺©‘ßC"‰÷PüˆðÚþ­¡5•a*`'ýÎ@¥ÐN×¥ E˜Œ-ëÕ+ßÑ +Vùë7aDM¥¡¼Z›ÒÉ–¼•)ŒXÝÆ"]ü¯×kєNT†ÃþÖΚº[…Ï®Ž¾<‚%*L£eoԅ.ÞüãèÛ®ÒTQåÉs÷ð9<”Ò×史{‘8÷ER‹ÕûûgA­„Š?ÓHÓèœbŽŠ0Lr®á¹ó9iLOxl‘ϾöîZkUÖºÎÕUa,@°Bf)–ñœGFƒÙZ”¶Å Š»ÏGՍÑÑùGŽPòy¤5½êÒ~Ï#udÖ"ÓøáZ6¥i*9;d ø3í›f÷”¼©FÔ:Ó7Ò zð}ԊÜzS!9¥‹¨‡ ¿l¸ÌÒT?À‘ 2#"þ@àžý¤šðWR‹¼ø‚ý½Ó7e(…æ»Z¤o yôE›mNWbŒjc‘nš°¿Eú¾±âl {/ÈxÚ³¾Û˜?{nñÊÿKû\]ä៧wt˜¤E°4„M¤ßdql›%{TÒ>šH'¼„ –…«{–uŠ­£^®|%«Ç¸á[RÖ㇑¡ä98Z«jjaÀ”4ªR@}«‘Z[¿Âªº¬ëªØsäyº¢Cë̇éÆ{è˜Á×s¶åܾ²ÇKÛá![› ©¶NÂEÆXjf åF$÷{æìèôB€GŠüÏO=·]癅¥mÈ+#cñ9)·lRÚ +0ÍõJ‚–i8^«¦Ž×ŠX¡Ä6MWÓ¯Ñr÷g ˜=%€}8[tûÎç,KÅR +1PI¢ðpœvV U z"bòÝ°‚±})º™#e„`ÇęrÓÔ5ÝI²û ®œBà¤…€¹Tæ&z9%ûN4ÀOxpWFÔªªÙw•  ÿ§'q÷pºª‚ÓG+Ea‰Ã¢Ð‘ŸƒwƒmM—ú^2T&i–‡òx}ʎ~|¬Hºö ®>Å­âÓ Ò'¥nŒVvÀ7 QÒÀÏREô—pôYO/…¦¬ÓŒšã *¢R0::{¼P­©ê‘að€ó6 ïvf~!:3_iÎÌ÷¢ÃSÖä#¿wX)±öae®ÖÍ@>9ØôÛí`“î"Þ¾ñQ‰à_É0Š„»E{ɁÃ<·ÙŒ¸â2=%êM–P”ˆµ“1ŠÀ “ £ú'1”1ˆ€Ý½ˆ ¢_ÂJö„¡Ò‘¶<[KÙó켁EŒ±gR$ò6öÓ¼5Šµã¾s<;æK:l¶>TÂ{ïv´ÑyB5ï ô~ó ¡P“ ³®m½H$GÖFŒ‰‹Sª–ƒñ¯Ds3Ä¥®j Æ;—p$íD\¼9Č޴á“4rŒ:g= °äAæ˜GD&¨kžGÎ.J¼÷€"Ÿ§ÝgÊ鿱ž¦›à;&oãQèt!¢˜49ÖdÉZç¢ñüt£è#™5¹HpÅï"ÃBÚMƒáC;9r#S*€‹%L²ÚE¥žÛP}Aª•Õfº"¼gŸ ƒwklm¿ìÕöà<9ìq@xOÊsA~8Ó$m )9S……҂)5B„Š¥uÀŸNd(þ,'z}ê¥Ý ÎL9è°Ú®yùÿ`”ð§<«do©Òdõô‚×ȬŽóÏN°%vCk‰Òð3#ÅI+!æØ›4¡ûáñåCYŠË¡Û¥`F­ì8MŸò2Î^±yôÀä"lJûêD ˆÎ1ßÇW‚ƒMUª)´óŽ:mÔ®!hŸJcp;ç£Ö¶õòaÜVU¡ ˜Û0ƒ]‡Ðˆ²ª£Qpnß8y-3b¸V¶4"Cl&¸l#b†eÛvÉ3Rœ¤“±CÁÍ Sömòt PÚ6VGQ*îHÏx'Øô ƒ}’˜ä1¬Ì#àYgÞAµí!Ñ&Ãýú]R|Ø*%™­‰Ôg€™ªO òNL[ÁQ.mg)Pƒž h>ÀZP1'5H¿7aR¢£çJÈÔ¢0ë%oÓ¨éÐöåâü|-L)Lû>Âiz;’Áþ ¿¦9_½òœâò[¼Â~É+>Ä"}îl؄ô÷ëWÜ¯ûŠ·-V O‘Åûyï%)¿B9Åâ¶ãóµªÊZÃS¤ã‰„½éó)~ý nòÊDò§ +xþ‡ÞœÈX½`Q1jÂ#Ñô±;‚Kt°¥ç#g3Fg„‚™è ƒZʼázÀõœí‘µLG“^2!ÎÏ#!|á¬óhÜÂ^SZAò.Øt© NÇÂÛ$g} Ae¬o±}Ðk"á¸Á p~"iÈÐÒø?o¾;2ƪS ºRmËY< ÕÇX»Áe†L +0ìOYéN‹!n‰)À%žIj›ÍÓë4Ifó_\—T™´°Â´Óƒ&óÖÔ]=lê>ç­@ëxÞl2ò)Ê3&Þ> Çù Ÿé90›lŒ-…QÚüx¤”´…®]¼†²ëÊß·å°ß·mºò?þRü°}¼ºi|ê7ÎrÑÃX¾!TŒÓ˜ÏÔ¸¶u¨ ɦq»°·¡*ìmW«AõF ™*ÿÖ0]MeBˆ¤2<;®\¹_±‹ão$ÀH…ˆþc/ ó­ÔßÅâ],>Ç¢Ââ,z¼éË°ø‹'X|ÔÃq::a€d uÉ$gɐA1L^‚9®…êayé\E-ú¹ŠZ÷sõµw°ØÏ՗`ñ O°øh 0†“ç Ûa¬ÆÇçÐ&v@ Ù!>“ËFÁ»{168»6r(Üxë™ñ‘â9@ß ¬ôÞGQÕ¥¬\ð>šî6õ¤ßN˜`Aµ0Á ­ºñ|OŒrˆi¸ˆR¿ \kKت\ŒüúÐÀú«_Á€O§šæ°Émƶzpégê™..P’I1Ê,x}r„¢SŸZkÅT4gùR‚ÕÖXI>Ò~ôqÏx˜½P©$öBt!§]i8Rs¯Rš&3¬ºkbh³ªªn;`Õ»ûl폎\] ©yÄg‡Ú” m¹žK¾Ý:X´³Òóé6¹ •ŒËhVºxgõF³^ i^Ip¢»§êd0;‰á/>´Û8%œ\v¸ ÉÏ,R²—äð`L½ï–bø« -"m9±$‰í“!Ç@>ÒÖË=«k´V¹É²2‚þþzÒnj¼0Éþ¡`/R?ýŠÔ6¢gûÂ-¡"(¬ñžƒÁ­Mιٴ9xÒUq|ùÁØÓŸæXÇ^£˜ñgeÎ÷G xB~8OY&êE=–§…ïmæ_dx!{l$Psº>oPQÅÈÞfé“åü €ößÞ06] +Ÿ*‡c£ì o§G‰X{ˀ +hæë;ÃãÖ×㡋ôb`ûՃàOquìÅ 5‰'n×yè *ñâŒ;„š*4ñ_R ý*ÛgG•[»l\ã}5>ú[ë\6Ïx?Íu{rš2Üþs¥Ëg×¼5WÎ3Þb»>›NT~7ÿÛ=<,~²øqb*{Áqñç³ç÷GÚ‚Nd’,eê³ù³Ä'$ei•Îø„ž¥9›¯©eC™Åâ,Ô%y„1êâ´0]+“Í3;^ºès9•˜ÿA¦Ã9ÑޚU¢öÌÛÌx>ÎfGfÓ]ŽgGô¼³1¡Â eÚís +KírÞ՛q es7îÔ"Õ¶ÖRSç¦wMNÜâR"9Çç€kÏòÈ !—ºË Ålô{ù,¢·Í8Þ÷s ü|HCrp°L®Z¸¨Ó¬õÎÍM¬î):Z…OmQ:êkR:µk騯Jéè¨CUHkü[AßØ߸2<;®ÜžŽZŸ*è•ÔɝèèYVyŽÅS¶éá€}l ±1• !°Ô֕æ'@LÏ°öå—çXÙêªß¹Bþè@êˆ?ntg‰ç“Üålr¬¾ähå<¤ïÃÛyMÊ\lñd-Jéu£ŸŽÙÓuhl9G[—§¿ÉbÓÅLDeó¸þ؜"W•³_ráŸÌMêm'•¹mÈ\.‹oÜ0~èùLÇ],žígxâ Ü‘ß ºð<:¥ŒíG¿-€†Ë^" ¤g¾²¥S’I¸ÏºŒNø“WÖemÌ–ú#oH-ò™«á£KAoP=fRQ2—⬉‰ÓR6ûàÏnI,û¿ü8¾ˆ·ú9Ïp€ù;nx«ŒKæös"ÅK>M1K‘\ZßTµãØaËqÌ<‚øF‚ ¾ |¸¢}7ÅüGÜUìcÞɐɏ§ÒŽ>‡%î‚éìûðI "‹™ûÇÛKÃcv§—fhtÑ).¦Ìé +ìû +O¿=ö×:ÔL)íãŸq}î=i+à9ÿѦn@T°ÓË(~F÷:rŸd]zedhmm ’Ù}s& dÏY Krqš½Ù2Ã+‡ ‚ ˆ\'&ÒÉNÖææ„r37(Ÿ_±üS“„‰cû„]”Ì1gÈü± +™µ0¢ïÏúb\¦âž¥aÛïB]WB}sêõ¼Æl­×Óö¾âm9‘؏Qîdù¼ gdøŸòçÒnÙ'Óþ «ä¹>¸ Ë8_¨³}ZƩˊfS³ëŠ_Tä㽔E¶ýÑÃM Ÿ±‚']˱‘•"#£¦߉ð„´VÅá‰P“„'âv!<ª’ðĸCèK;t¢¶¤Ã¤6<Ôî¡€þvPðÉ.^#˜êk QüDrgø¼—~9FÕo/F±k6ÉFñƒkcZ×âGÛ0Ô½ßÌr. ‘1,Ò¿ˆÿÃ](ó¹oTÏf§, Üoýþ ?·%â#œß².f\ïå}ì¤n ÇbœN©òí')¬_>K7£±Ú¤`4úÒ×S€£tÄBMÂâv)„ª„)Œ;„“'2Œ+ÛgG•;҄ŒÝX@âP~È>G:&¶„0ì…%H„oš%ôËá«bñ],’h I¶%„a†%h¿‹éÁ|úkƁHݑ~Ê¢KïÞÎՖ٫ÐãØYj*°!–Ÿ¤F£Ë¦> +endobj +76 0 obj +<< +/R7 156 0 R +>> +endobj +77 0 obj +<< +/Filter [/FlateDecode] +/Length 3639 +>> +stream +xœí\ÝoÜƇ-ËVφkËnÚԕÊÚUs'@4÷{÷¡@6Iô%€>$}JšElÀîÿtvÉå ÉÙ#ï$I0Æ{ËÙ¯™ß|ìoª¦²jâßL|õjõòsW}ûßUj®>ÿ¸#Þ~»z³òµŠR¥¿zU}p ú +Ø\~³jê|Òo¢r²rJÖÚW—¯V_¬³¹hj%sf}¸QuÓ+×ïn.<æ€<荵ñVúõ­ø”v^6~ýۍvBÛõýØŒk é|¼¹µk”QëGY+g•[?kûZ-Üúw› U[ ƒä)4"3K:0ÈâI¤çNzn_¾&ÍqÞã×#7­U}#‚&ó<èYIà,Oۇ¼!ο$Ò5NÁƯÿ¸¹Ðu¡±ÃIœ¥! pëË ×Ï7Míðm‡µ2o™éGmÝʃVbý§ö‘Æ+Ò¡Û%ƒÞEîw6¡†Ÿle–&«eð†nÍá柗Ÿ®´Tµ±QŒ.¿Ái÷V9ŸG0Êv‹r&ÐFìyÐSÇø3é™7È{5ÏÑ sŒ3¸ÈS¸º¶Ç½8eéƒD~ˆ$ÞEñ#ÂCZó¨©7•a*`òÉ@£ÐNûÚ&ck¿~/²3ZÁ.ù6Í(4èõÆÔNzØòV¤0b}Iºù_n6"ÔN4†’é|½³Æw»ðáåê³lQe‚–Œ¨+]½ý×ꛮÑ4ƒÆyœ¡ +u°N"V˜¦¶:BŒ~ùŸ•Ô̵BÐ6E ÉÏKij­L–X¨µ„U¤íÊ{BRçÕ7ފ`šÆ¹õ ;pŒR…nÁ0Ƈ²P[_Ù Òè͞Æżä;H"yŠ¤cûF¹È´G’ŒñɗìG "™×’Qì+• øë?& +zwýÎ:¸2X呐  †4•Ðô'C{æt·jؒQG¦)êŒ…ÿ /é£ÆöÙQãXÞ +zNt¸|ƒ XÆO~½ŸAïÿô†G~ŸË˜§Üõ`ž4MuoVZ ØÎ#@×Ѷ‘‘N}Zúß«T¯÷Ž  +àJ¸˜öN_šËgðäfcËfýZ˜MS˜1„p¾§˜:jlŸ5)¶Rƒ\ S#y`ê[Öe<â;¿fÙ y<àl›"NOdF€ôWFú(3°yMK×Ñ…H§>-½Tf +›'¼K©ß½Ðì+Š"øèÕ[c{;W2ßÊÚC&+£¡*CÅ҃^äƒ^瓈­÷ÌéGHñ_#MØ y<àܬP°zÜã‘s»9Œpx£æÏڟÓëãÂTæ‡'ä³Yü?`[qsŠÛ@æ7µ€ ÈÏÈ{QŒ)‚˜uII À:’<™$¦H"Œ˜‚¢³¹Ê.îg/Åþö’N÷Žæ; ìú‚0£ŒÉxçœ …‡ÍŠ"ïÕàïgLõEnpÛÏ©Ž&ŸÇĤWŸ[!ë)8…tãr©;'úìÞ¼ÔçÙÒTÝ5K}Æ`€Îrÿ$“ö‰&ëUй *µ~ùýr#C-š^JSôú£Õ7{¿ü¼ÌÎùºQZ“³Í™@Ñw§¸it—'<ÌyÂöG^€nD–dj×Óö™ÐHzFlh‚š}΋A¶;àƒ¹ý@¥³_sWD8à-G’’ ‡ðqlIÔC».„w'Æh o’§ò 1º"Yó[@ +B 3ÔcO÷Å2Iʟì Yí1 êFÊÙ¶„•±v7ŖiÜ4è×ÆM±i7ªJÿÄ$m³aÜkØâږÉDÆܺFúpš]jšÌnüt×HŸfšæcSŠß Ž„óènªî¬­™ùšç!Ûz [ow8׃˜²à¸ù€8ÕËÊýþ~ð÷Q;m (c¾\»‡¢†ý1Ÿu‚ä¹\Á&wyŒ]HïŠt&ã‘Q¨íè'I8#Éýü°6¢iÏar‘·åBXÐÇb/]¡á•\2˜¢Qà4P{IîáèÕÛ)¡§]Ò²ñ6“Ë +ºåYA¦QOL”†y²Ñ6~mŠÆÇmØ5Ú¥’wø4ÂC$ßŨñ’OøøÑÛÚXC¢aÎ+\à8~ï·+{4»±3~k0{ìýCƒ¹Qr“c]~„%Q$Þُîä“áÕ¦Vˆ‹ì¥«Q}Ÿ‘ç1‚ÀL(Úm­›Zz1ˆ”€ úe‰R½œ +:‰ + +]›„ë=Iy•§;2-\‰=øh¡„æ ðäñ)æ#vHÍMð2d/QkÊ  ³Eˆ#“’”q”"3êÆH”2͘ ëj×ç˜à¥'ï ù‘-ÅòÔMDiEa\Õ›‚F*FÑöT§b±ÊÜõI!0án{F= ¨‘.Æ;F.K`©ÈŸ_=!.L9%Pð={, âñ¡uêpê}€CÁyàkÏIhߓ¾õEšAqjíru=þ>4¯ ²§š'êàìŠ÷ÙùiÝGìÍ·’1d–\@œ†¤ŠÈ£Üɳ tŸdkت¤';yIgL¢aFîfÔå9ÅVerQèÞmÏ +qˆÂ±N'2ȯ´ËBÛnÅ«7¸±#Ež¥xvî¥*ŹYYr[Ú½-ýˆèñ36Nä5ëin·ü´‚àšÃZîm.r‘1J›âAÒáë×à+ï›ñ) X„&nÒ\*r61º·÷kº;C·\þ§%ií½.óõ‹»bРT§ÍþX8.ûS¨¥Â±ç/erø]±p²§1»×|ðÀB܌£p‚嫧tMðà ®…0mK`¥Ûb ++…|-IÒ¢è¢8O'[öµ'åWì'“nl³Wl¶hл óË4pæüÙv51ΫMÿ´÷§DÚ +šËic!I””—ÌÁÚæBë`´Yâ״΁ˆÕC{åg2ÿ¤âúb +ïGñ~…x ؈½<š7¡6Î^—Mgßë&JÈÛëR½ÆN{ûÅÌËRm5Ïö<Ö|èN‡#P†ì¸}H”ãèºM)Þm¬Je:_]ž/+ÔÁÑhΣ±ÿñúˆe1BV源@dbšq>C?ÈN fhOؤè®@ȸµº:bñÌþô3£ú0é*7`\v¤´É-;° +nP°à,ObWcC©Ì7Âݤ¨‡ñk"/°¶¡G X–pRò4øñ Z72*{1#MØ͝¿áLç]õN8Ý •†sŽ¶ÂùØO/´âsv{¾äÊ×2Ìàv+Ó9Ë®±p +á)û­í°JùW×(¾»|—gkmDÑ´Ñ͘|ϦqÈû"òJÁTî}³·9ÇÝn¿°;²¸b1Ð0,¤bÆ¿;ÂF…óîî ¢;ÜN·ñ0l•—Û¤Õ7µv ­ú'¶;& ØAnŒ,‰Ñ|Ĥ“wGKØJ°x«óŠŸfÚ"7z]Q•ØÈõÙ@§2†¦O“§x[BËp\NeJ÷ +w¹‰Íz,ø¦Aììôb0éæš¿ëû¾ jÁiUFô³ìÇÀ¸ +à|¦ ’FW5dCŒCýYò–ùþX0ºÝ‰vñ{ƒùH¶ìýðÁÈ¡ŠVýÛ°`ìòñqPq6<–>ñœw{£¢} Ò»þû„eÆ¥Š§`ê@vAb=Ó}$ßa žN‘¬‘Ôìg +ŽØÖ§”ï’×P>顀© §^ˆ†Ã ]Ž©-nsL\´)âJœsnûEK¾úw´ÀïgL 3ëyÌ»«xyr¥ë©È*¾_B¾9Éëðyéò2ùooNñyW'™¨:íÏxÑe¸iðÓ:BªP¹_Ui_™¥o ò_+Q1¤+ j×}@fÞÇ_ÙËØ#‘tÕO_Œ`~Ö˗›dx¹ß1چÝßûhǛˆØø9ÄcQ¾öa Ê«¦ÉÈA¤‚`D¼˜%'Æh=ÂÿßËßßùϒU$ +endstream +endobj +78 0 obj +<< +/R8 149 0 R +/R14 151 0 R +/R16 152 0 R +/R20 154 0 R +/R29 158 0 R +/R50 161 0 R +/R69 163 0 R +/R94 170 0 R +>> +endobj +79 0 obj +<< +/R7 156 0 R +>> +endobj +80 0 obj +<< +/Filter [/FlateDecode] +/Length 2572 +>> +stream +xœåZ[oÇ †£Jqցk«H/±lsë9Bµžá܁(Z¤‚æ!ŽÞ¬>©U„@*÷¡¿‡3;s¤ÕÅÍI£ |â!9\É!gÏw£š4Š+8¹ž¿ã7ÿ2y|ñy¯¾¾âdø'z|r1þñ‚q„š£ÓAM)E•ògz 4C“ãÑÅðrõËõ¡š …Üjwm&¥œ§Õ¯Ö‡bpg&¾â䢧¸ºÇR6DRqõþš N[¿zÀÔä‚GǼ¿>¤)(ãÌêњ&¼ «'Âë­«§ëC3yEª JWe™¡hÀ"w6"Ë=›µÿ£#³Ñ;WY›µÎ›™Ãéd;;wfÍÊD(jØ<>É0¨`àøÕÇëC;%”ß4⓼„ƒ¶¢˜­>\«)$è•e=U—¹yU¦•'OÖèÕ§"¢¢éŠ—ÝkÚ²N>´á¤^Y6ÖRŠ®wÍîú¯G_ –Ìä<‡ÑÑß8â[b]Á_*¸ÔçΌöÛÇguPŒXµÚ“‡lÁa5áPÛI{±ãm6™bŠº‹ßû]$îµð낧£ÖU3wÃ}€½[wDmƒ“Ï㧸ú «sÖÀËǯ²EIYàÕÚM"\.q@ÚéÕ[ öÎ?^¯uš‚V®‡ycð./|v4|5ÀE£K–F¬hG;¾úûpZˆNmo¯”Æ4%ßJE V+œš¼åRÕ¾H{¤Y š*O„b]<¨Öá)v²»“‰Qè…Iì×L¼Ç%À)ÂêÈl#™´ú¹@ílyö늚£€±1\:gkŸ¿@”ÿ¡QqŠ¡&GbÞSäƒO÷¸åö~—SË݇snýtF{%>¬Í0‹=ŸSv¯ÛÞû-Q›²Ç-;M§¡­ñðòjY×G-¿Öl|Ô¨f8g½ó{×?P^b§Eqgd§à°Áe†ý.÷Zèú‰Üø¯!Ž_zübŠ·ÔèÑøH£å·_cƒ£EÔûñ*ÀéG +ç¢Õã0Á:y f„Ð>{Fáô +‘gt2ëÌø| ŽÀٔ¥2]cáäUEžÑÉpz0h•ŸìÛ­gìÝ×i#®©ä'#ÝÄLjqÔn§57¨1 À¾‹Ú®,‡Íò!rӚåôÏMÓb,—ÌëmºZZÁÚî~ßZÖ_7;»[‚Žánq7m)î>mƒkçÁ–ÙÙ¨±*JAÃü`±þ_ «|{vc«>ð±ø ›òùüù-Þ\bì®išÌïšL#6™Åº¹xž¹¦½[hQý•lƒHžþÊ b© "–Ú <"n:~3O‘™Ç´AxD=Uþ2ˆXjƒHn/Ë b© "·ÞX9 ›ÎrëìbÁÚáE¢‚B4ùú‡1œ‘¯# +G‘²”FÑeó&“(í°B¯œ±Ñø“¥±®|U”dó‚ye‘bkD£zcõF™¼µn?¥Éc¡Ð_eÚí5ýñ£v-®wïSº¥þ·éx}»aTðºou¿Ï§.7TUházÃaW ±¯ìÿý›ºCÍ7ØÆo˜ÑmÛç‚îô;~5ï̲—ÚIÛ©mNnçt÷hWW½tA†o‡99/SLrÙh9é’TJŸÀ$ØvtÓñÑSxð¿®²ÀTu6zªüg\qõȯŸÄ +/éÎ\Tèw¨¾Ø®AJn`×(ç +;—²Œ JƒpØ'òŒø¥ +W6#VGO‚)Y+R‚D—`^A8yU‘g$UöGjÚÖ.X-MX(Ô÷±/»*³œˆ‹Áú`¡#^ž„Ú(Ó¥Âmgõ·•ÓëÚ¹9kڅ¤\Wÿ0’Nqõq1Î÷‘¡Õñ…móMC¹HçÄF§C‚Ï[ÆQ°«—íítå1Ú~b,ü15:p“ÍúMw_°fl«ù¿ÐcÇ/…ÀDøu–ªV­U^Áúí…À+rБß53F%1ÜTPE!ßJ2¦¤ùŠà_g)Šè³®ŒNk*õ¸Ò­ J¤±.æÎkœWÌ.2Õ²¬+£\ Þ4“·U8 Ú0” ã⯼S^®?HixÞòê?­ 7Üíȑ;_ÈK­µ/¯nˆ¿„v¼ÆñN>ð—Ó*¤>¡s‚æý»¬­ó5YmMDàœ|I°¬F⇎ž¿Wž9Ñçµ"wQW`ª64º«1wÆZù›:&ÏUüm¥º¼ e®ÊS†,“Ï—o㥫` ïçî¸t®£ÛÆoè©]‹-o¡§a]yÎdjÔ>ÈÊ6ðÑ(ÒTèlßWÿôà1 +endstream +endobj +81 0 obj +<< +/R8 149 0 R +/R14 151 0 R +/R16 152 0 R +/R29 158 0 R +>> +endobj +82 0 obj +<< +/R7 156 0 R +>> +endobj +83 0 obj +<< +/Filter [/FlateDecode] +/Length 4026 +>> +stream +xœÝ]Qo·†­Ê–O†c¹Fjוz°«öN€Ö$—\’Œ6©› /1ô÷)ip¸ÿ(É]îÌ.‡ËÝÓIub¿{\’KÎ|óÍpHý´fkæÿÇÂwV¯ßéõÿ]…Çëwo»ÂÇW?­LUûá.÷aý—+÷¢Y»f®~X±ÊZÃlø¯µXëZTÒ¬¯>¬¾Ý<Û^²ªZkµ9ÜÖcª›çÛKî^Ó®xÐ?|àVÊ4Âlîø·¤6‚™Ío·Â5Çe³9öO­ÒÌÕ@•Ÿl/E¥Y­êÍã­¨jÝÔzó¢­ÛH®7¿Û^ÖUÓ¸N⏍… +] ®“Ùƒïö­½ÿzìGa¥Ìæ‘oMJÕÔ} Å­Dã<è›@ƒ€Qžµ/ݏû÷K(j¦k7ñ›?l/ee¹eÍpç¡ åZëVl^nY¥­k·í¶qÊTß«Ö}¹•5ßü±}…™UèfI¹NïAë¿ÚÚÊý¬Å`’pca°RX£ðÔnÿyõõJŠºR£«ïà´s[k{PuÓ}”V?„š}é üŒjÆ 2ÆõÇhlãÆèGp‡pÉeśv÷ý…±†#ù=B’xÄ z{ µ± c{WÆ=äRKS5¡è>¦©ÌæO¾9%k7Ëï?†Y&]y³U•ÆMy+‚+¾¹ E<ùï·[n+͙ÂÅ°¾F7Êt³ðåÕꛕ›¢µ²R¬]r-×ÿµú¡{¨Øàa'„]ÛÊ6ZV(V5ÒC…ëýêß+Á§fº‚ö‘šø¾LŒŠ2â>”óJ¸¯8Ómkcœ*'…–i·^ýÃ;cZo~ãtÇ-£¨m,r%»oýÎ}]՘[[Ñ¢ÚºSºÆx(‹ ýˆ|zOïvpÙuR7n¨¦—ù{ kç Ö'P<"‹÷¡øٖWZ6ªûö€&¨Õãwî“í?€·~[zDô©;#p?咛°Xþ{îäþ´×#Ð(¬ ÐOÐkte¯ó҆Éï!§Ã)ùæÏC_à&ñÕ`*kFJGžCƒS}ƒ8œOb#ˆ³ÐÖÀOqmï#ô¡÷i_6¨*žd +¡û’ÚËaoƒ Y{ŒŽŠ€'õ‹:À5ŽÉτÒ=\üq¨åÁŠã:§“6¾µEÏäùšŒ #/Ü5T|‘‘Jr=É¡ÝË|qÎtƒ•=AF,îqjZCù°¯q†øÎV(Ln\xlrÏ{½˜NP— X$¬ª9ÎŒ@F½_æ¡VPÛ'ÎT9$5û"“xP©ÆÁág[a+Î8&n +Øî8]ü¡Bà ©˜æ›¯œa™{ dôöA‡Ê÷ތv“S[µŠ˜÷Yژ‚ûÖhü¹HÀj £™o¢t‘ÑWX¦‚îgÆsÓ°³Œ‡2F‡va1: f•áüshÂ*ÆY톲yƒ]Â,¿»FþwÚÃÜYѱ>Á× •=BH@i<Ír˜±Ë8{¡•VIE1?ƒ¤éك‘ʁdz5"Bà ‚Ú8§®À ø‘ÚUiUFŸŸÓä—E´#çW@ª:hš&i„Æ1ƒ í»ÑY«¢úéF÷Âc˜A$âqÀ(Ñ®1F‰è0{¿÷#¸ðÃl뺜¿¬/bH‘flø‘ŠÐºuJম¨Ñ\»y`ÖUªEÄ!ïÎÐ ±w— ‰^cҋ*Û։0Sè-1zxz¼@´”!GZÐë-Ï þi JU 3#˜ØƒÍŸñë~ì8úg˜`´Ü5MRáãàÚÀ| ͧ€ä€:Áæý,]sÂ;¢‡¦|SY&°]…ŸÁ¿øb@`œ¾€q ï‘k‚è-ÏÐUØÄ.ÈM‚)¨Ì°tÚïÊDj‡n U£ör”ˆœRÚc™þŽCLã‚- ~ ¾‡< ¼Å®ë!…Ýbhi­"ÒÚ ò)Ôy5F ž`Ʋ&µ90q*\Y®»(‡Ó-¯ày äCł»XˆÄ"wqa”jon;‚d´úÈI×sã÷³"¨+qÌÿŸ¡©t¾~'âÎDÍê>ÚñÔŒ)n‚LÄâçP<„âY,—.>=‚âC(>âc²já€|Í)´Íp¯€3S ¦GÁÞ°~°k™“S +€æDöµuÃëâ~/èӀoгÀ’?P<¥ÈÒ春šèµ­N¥”s^.GRÊa;†âçP<„âO xŇPü¿HiãíNäü¡L•ü6ÁdH l»Ì²Ñ­Yãe­‹;ßJéMšñâ2]Ù¦! è>áõ §X˜Ê8û›ù +¡×8Õ¸þÒ8Çî0à¡ŠV½ï&Hé©¡ø~e Å +Š¨ ÅçPlÈ×PÝS(Þ%{Th'njäOˆª©åxKÌa‚³µN¡†ª² Ò.“ã°‚¢€¢‚âs(6Äkróž>ƒ§¨‹S(ÞÍh¤û)@耫–è?<@Q‚Ãi YñùHû&)ô"ÅG•ÁiäËPoe²vÅ•ÚaÃ/Eb¬)º5 þaŸÝTŒ×C 5a¾9+ ?Ÿ!û +Á6/D°àücuuñ-EŠù »Òƒ]3sFA»Ût0³±™U’,äEk‘v˹cJ=wEIoTñ3ùéi»ÁѺÂ5É©ðb™WЮ’GSŸŽFòeȗâ>šZD®I€ ÂrNÄHn‚y+TÈ,ÎN€˜tKˆ£€8è0á1‰Hù±äC…Wèi‹ +OsjždÀrÍkIojFÀTyšqNÆ"‘Â_dðN®}K|ÁAf4XN¼8K_œ"è$ €ª,ð!'¿‹Ön5y ·¹m:}RÍå",X¬â팽~uÓú式!ÑW>òË *»Ä£D|1àƒÄ£ dø#ÉÝQ#òéS<šÜ¨ìWdŒžÞg¤S܁. ª)nƒ„­ L‡1‡‘’f£ FHxÇ6~®„ܹßKj`6JyNT@ô’ëxh­«6½ïR-áó¦¡ÒU‡F[ tìÜÆÔiç©;J.eHö§?¾_ͣʩÏ*xåz®¯:jMò¬Ð‘/>&+ÌÁZ»ÉÐQгsR}锁ÅÉIîÄP?A®Š¾+ҟT-Æ[óeÙËô·,)f:X.r™7SãÉ}ôákH#ˆ3ßc¤óÒaºøàBŸç¯*U;qïŽ5Æc 1ÐS)V÷ñüzœ5‰xâHҍ¹ìÎNÙ©+碍EÓx#–éMó’ÉÓ2…ðáV<#Om%oO@8™#Içq% +5cÿçB»eÚó^&¬!Þ!å-͛ÃŽ…Z4ue™ t̘k 5ÎÁ" Á ûà‹r,I"í—,’kŠý-ãI‘µè¨ÆT–’ÀpäïÆ2‹QӇðWrŸÛz UŠ>”1j¯mSqÕG¿é¨*n™r©¤.[w¢³–™ÐÀ䱓_Ð|£h,±ƒØ™íbâØ ¸&‰Íݹ9BëèÄfÚ÷ÏmVRl UD(ç`PÅRv÷†„¯AšÅlˆkç¯gGEGWÒìß© BÑ8[WS!Túµ±žyÏgÕG±DÒ]̩эYö„E×µ*–šÛâ1´iÔºpȤ§`¦)Š!¥£f_Ãly%´ß0ŠbÍÄm3äÂaÔ1ä6ìGG<$mÍ%øü,1 ø zó¯!´l§#AÛy;ÙXedBçFÈêBouZ¶‘šZ_¯g4ˆæÀé*jãFãZ%ÎßôÙM{PÈô}gA8Z~Š¢_.«yvO&¨¥s<ÝüF!*˜ãC/{3!Üwօ+ѽ' ¤R{Ïãwj QÞÎ~zJz¡œÞŸ*øÃÁpüL˜Óü;nH +Ú}“zý­”²ªœ³®jS5VìKJá.¢Éغ>c‚± &Û­]òÆJ¶3þÔµŸ99§‚KK""ƒH‰×”Äß*´s¼¸töŒBÒZC™þÅ£i7ŒxÅL¿gZY€¯t<ÒFÏkߐ\‡Öñ·™ÀˁR’PûA¤¶/Ò³´Æn¶¯¸ÝMG¦Ð‘V‚7™CÇ[Q¢Êd§}*¼cÞ®-}uÆ _ÙÓöÒZFِDFïì`9´:yš¶ÛHò_ÆÖo A(“qä —m[f˪”{Q ‰ÌHm*grRâ<Ö­nûƒ—£'mŝX~ŠF]†®¨BEä|½õwŒ9Æ&qäÄÜ´3¢•¥#„ÒۑÂ8 þc™éÎ"5(B~NDÙ +lsãY,G[¢ÍÏ^¡--½_X¤‘{¡3gÀ6Oãc´&äSòL5²H±ÄÈvš±‚üœö8b£à2¼ßÌõ%¡ò2Ϗì„ÒV"Àu@%¾Òët»*;íksS±ZîmGx¯€~'Ïw=M»”K%7 Ý_LR­Ñ"Ëе|³Þò͇4QïºùGёq#=M)]ÚEÊ:M‰:~>š•¹TÎڑû*H}³Y„ç÷‚Ñﶉ³ki0ñ8 4º˜¶ŒÈ=ánAǧ퓼xTÌ\á„LΜÐ÷êçOè¨nþí;gÂýÐ8½RŽk¡šÌ! BD4“E–‰/Q·™Ð7± <ƒÔ±B|ˆ¶5£»wŽWîp¿(Å#=ퟁøÙ ‡^IPì´¿VMÉŽÉ(0*ÒÇúÑ<ì,ʝ‡ß·mƒ÷¨Å)VÊùd´+ܛá©8ŸH¿iköÑ¥ë0&|½N™°“Ú?/¤³#Ó/lÑÏ»/z‡ó6KMªjæÖé)†B2¢ŒæOÜ Ñ*S™ºW~ÔrÆÔ֓Q·yqÖ9M‰¹{p÷Áðdï<Ýn×¢;Yԗâ"µµ™¹"‘ÚœYè-ÝÐMË´DÐdÝ{}íÉOZ¥v³Uzg¿ïç¢ç{½åuÎ ±4ýad®qfVzÖðŸ„ïgÖdïU 3y»ƒZíJß +˜¹æE£Ë)À< [Ç@†2 çRñbš8¨PÒ¯E÷ýQ],L‹÷J8‰87 x)Œÿ;,ø’½Öo uæ›ÕÿO{ +endstream +endobj +84 0 obj +<< +/R8 149 0 R +/R14 151 0 R +/R20 154 0 R +/R29 158 0 R +/R50 161 0 R +/R69 163 0 R +>> +endobj +85 0 obj +<< +/R7 156 0 R +>> +endobj +86 0 obj +<< +/Filter [/FlateDecode] +/Length 2679 +>> +stream +xœÝZ[\G–ãìÆ>¶ìØ!⋹žY1Ç}¿< YH€…‡„}Ã<œ(ÚEŠyàïóU_kfÏîÌÆc°°_jëTWWwõuu÷ü4ŠYªQÐÿ*¼<ž}çÇïÿ5$õøݟŠðúûá§!̚þ%—_ž¿?EÃ0ÂÍé«AÌ1Ó79z5z­fÆÓóá¯Ó¯Vk1kå½·ÓÑJÏBX§¦_¯ÖÍ<ěMyÊÙ§ÂtƒZ”Ó'+wÒ¸éi£õÌøáj­f/´ÕӇ+5kﴟe[g¤Ÿ¯ÖzvÔ„¬Î’Añ€Nö"µ{Ò¼½ø'SSÁY¦{äÍët³°2çÍæ‚Ñ£|š)#ŃAàK½ð?}¾Z›9Ê(Üf_¤.,¼Ç*ªéӕ˜}„ßÜ­SuÊlë•teäÑh9}™›ˆ ™A™%‹N»÷÷WqÆg¯6&‰;KÁƒåSs´úÛé׃Qz¶Ž`túw'Ï­ö¡ö`µ+ƒò6re·¼Ù¤‡ý3³¬z­1†è#E°®!¬¥™¥Ëq|@!«ƒdø½ÅxÜáÇÀôµ×dÍ1Ìv·® ”Òxf—D ÆÍaúŠÜY£1Ë/^§ˆ¢0§•½ +˜òŒ%­œÞë"Ÿü«•Œ³—Âr1­oðΆ2 8¾0E£Fèьf|ýáUQZ±¡ÜÍ*ŽqŽ®S…W+¬˜!ª@ï§?J:¤™Ï È*"šÚ^)I°#¨”³Â(n¦éŽ: Ð…Qx¬WSÞ +°Bx?ý¹ƒeT:NgQZSÆ~©Yf|Agôõ¼EdóµÖäÉ:~¶*‡÷ùà¢ðôÜ~ÈRcî¹{¯¥üý&|hÅz»g-g¹É{=SïµL½ß$ÂMóp§yèÇ +̗aÃ]|ÔõLìî~ۉ{î“ n3¿wWë8+àÛn´»Õ#zÐnDħöÞò¸Õ +kh´'i`w³²ã¿‡0þyã׃ÒF ”o€O€@ÿ ¬ؼ `»T¨µ^‰ñœPZd ¾­³„”_EF§ÙҀrr{’^*¨"kác¶,RjŸeòš-©§ÞÿËáÕÉ ȄïT\?Ð,^§¾¸„6(QÎÅ9˜\e|p€Ó­”Tp€C‚ñÞÔ¢UH ƒâŸÝ]½¶àŒA‰ÙÒj” A¢¾“„I^68Ð`Á"ŒN†ôF« ÿRìþ…÷²âs€žP~Üŧí˜íÃnpÔµ…$¥âî€NQʧÀ“‰ÛߣF±ÌQj-P¨xnÊ:ý0±¶˵W`LM¹|´+>æà6•X^Cb«¨,`–ðy^p¯¥ÏHv‘ÈI6$‡,K¦—ÌÞd?IFN_ô„,M’c××~πqeu$O% +=Z•=™@z˜ž ¯v³ 6Xlëð!ÖÑì-%2µ‡¬%ö™¢ßÊøkµ=XVz1+š7›j'ê'Ì1”±U~°½io⑭<ûþǎíGKí{ŸËxb¹qc…<# a{ðˆþ›áô„jÐfÛdؽӔw–ú?ÙJŽ4”åŒ]àÍÅXïSÆH#,‹:ÎÚz=®KøT}PÙéfPn$äх𣞾¡¢ ®ÃŠ2b#PƒÌh¢ÝfÅEƒÃ€M‚ü `ŽªK•“&ÕuÓguFP›™Ö%™7®•GÛE%N¢Æ U‹ÊºC¸G{%*õ&w*3·[îƒGæþm ûRF.ƒ“‰ªŠÃ'‹@ݙjŸõR¼»°µ mÂz?>Ðj¢ú«[Š=ÏUZ™/V ‡IÃgåýö¹/áò:_Îc—#æ+ò$qš4yöP199=ïÙyÑj§\à)ÛÛJ×iYȋ4úsX¶“hÇÆòöÛÛtËG…B^k6ˆåòä26~K¥aIé„Ô Wk¥1Û`;Ló LIž‚ÐP~Ù«K×^K÷F9Î(Ô-,Âd¾iŠ¼ Ö¼Fùq¼kOº}ç°HóPèFÊiåe™-„–×9쏣íÙO–o8û;–‘ñÆÉþãàˆetó|±Pڅæ·#™.Žu›ïvFØwèœ×áٍ½:± p³Œ¡âäáb+B/÷®ÓyI gé$…Fhu=G)ed:‰hYõî-®Ñöp§˜0㘤‘5a¯C̋XP9_®øët]R}÷v_Ó5V <TÛçܶ¤?>šˆCæCô͎wË@µˆß‹ÕM« <»œL¬ƒŸuh0F£x8HCÇa±}h0FU+ªÁ 1ÌøCÕN¨‡:4ä (ƒá©t±b¡­zûÎäš仳Uh«ðPÿâ +-o‹u ûþdq?al|ëê^—€…Â2·#–Mý/ž v½°…lœ/>ê½öKÚßu\ÿ¦»bW·Ìà×¢èPU{ñŠí»6ï•ýÿ0Ë\Rí_„QÒjÐóN]I–ÑùQ*pq–¤éùd°×'K!ü˜Û“”žT–QÄl™¥Ü>Ëä5[RO½ÿ Ï"ïL\‡+]=OJ£Ë“êžp½¼Z½F]ºÏ%÷ôŒ7›µÌ!ŠÚëóÐf)› è §< g] ·‡È¢>t½`ö"û© +„‡³ò ‚i +Mïª}y<@±§rå"¿<$==ä☮òÏóãƒöÑ×G ȶʐûÕÓf/ë“@•c*0¢Æ×õ¾ÚS¬¨Âu®Î˜ö6õ€™ ½-±*™ok¬RôX¥hóÑeÃlLn[m”S-åt}|iúÚW‰OÁ“´->:N¤øŠ¾Ä'ò¢Ä§¤kc…jß]o û†‡rÉ6ÊðCŠ©ãlúÚW‹OÉ j|`QãC±Ï_*ˆÏ‹¬£¨¾¤%>b“àëzu½íö$“ŸjCÛZmëD‹¯ék¿%VâÈr¬…»R¬EO±J*²‰Åòû’…#­À,Wù‡ 9,]ý[©˜O4ç{9°pݾñFØBD!æ ¥&…¨p’<`ˆ*ÎNÛÑxIOb)Æôk'‚’‹úP +­>ÊQVëÇI>#9ì²ëÃ]’K¦$›’A “5³Ñ¬mò/Ùc`‘É*ɦ÷UôŽÙg€­¬Y–¼–,ÓÑ˞eWW Újl‰ˆ*=ïo +¿fÓ4ÚÒmMûÉâÁ6Íý+·g^ôéGK{d[¿obrˆô;°ºýbÞ½±Û/ƒfèð‹*ª ¼æÒªœg9Õ; [©vÊ(À¦9c;L“El6¨˜ZÛ¬¢Û§±ø©²d}ÉC’Ýß4{ȪÆÓõ¡Úÿ@=PoVÓZÅvVô*qâ«výD ,%æ.Ég$Çzý”äÒ:ٔXeT\öulÛ˜‹>ÍE±OsTüTY7IW$­/ÅbHqÚÚ²K>süE¶Í&"kÛ¢—Ì>3¿ŒÒç¹8zU|VôÒêMæWÞ¦MÍ¿ æמ˜_Uã0úµŽò¦2¿8`ˆX¿9€ù5Šðãnæÿvø¬D¤+ +endstream +endobj +87 0 obj +<< +/R8 149 0 R +/R14 151 0 R +/R16 152 0 R +/R29 158 0 R +>> +endobj +88 0 obj +<< +/R7 156 0 R +>> +endobj +89 0 obj +<< +/Filter [/FlateDecode] +/Length 4900 +>> +stream +xœí][o·F,Kv$Ñd'M"[9²k÷¥gµ¼,—|(¹AQ Þê>¥M€)÷ÿî…3ÜîMG¶Ó6y¡W<$w8ó͕Ü_Vy&ä*÷ÿ·~>¼ú¾\ýôïÃêñêûošÆëŸ9´™òÿUhû‡ŸWº†Ú sýãaž9gsWýM¬J¹*•Ì´]]ÿ|ø×õǛmž)Y–e±Þߨ,Ï #ןl¶~VBs/<|f…5Ò®ßó¿Ò¥•¹]º‘0œÐf}䟺¢Ì¡é|ºÙʬÌU¡ÖÇ™©Ò¨r}V÷5Z”ë'›­ÊŒIÚ%ä¢¬êЌ“L^Dõ»§a´Wÿ"ý*¬) +»~èGÓº0*ô(„Ód{a²\åyý#+„ó끗€¿TÍ2/~ýÛÍVgN¸ÜċxQMQÀhÍÀÒÉõ³Mž•Æ­§5²%YfõϚ7wZ‰õËú'¹U¤CC¥&=ÀÑïn\.eD$:XµX--(iö7»þöPK•ƳÑõ߁qjÚªÒ¶3Ê4/UŽ>Ğ{¡uŠ&=[Y ³¶k´ÎÀý +¶í¶BgÂÔë¸ç—,­³‚ðï}‰È~„yÈÓvÖª7åaÊ`ڝ‡B—Úf¦j¢̮ç‡+´*¿z]­ÈåÚëM‘•ÒÉk>¢ë;ؤĵٗ•"/h³Ú_[šÂ6Tøêúð»C ѪpZ®`F½Ò«×ÿ8ü±yXäÑÃqœnå2g*J‰XQä™Ñ*`öëJa@Ìʚ êGhÚßK `b‹–GàE…È$¼Å^En§¬.,€ ]^Â~…‡ïy(ò¼,׿فm”Ê­uÝ…nÞýê{x»ªå°·²FµU#tÆz(k7úáØÓ;Í$B7“(Kµ„çï®°ù9…¯€—Xœœ <ÞlmV8øGÍÃõS2Âä#à!v]!&#ÏáóèŸmDVjSxñh{_Ànˆ<¯f®_¾UÛöå·ÂVÛë)Ðò¹g××(y Ÿ;¥ÞUä ÍV”´¶-fV"†@{€/~Ÿ¬¡»¾"‘çFS²Å)­iiépd–sv–H¿È"¯i"[®œÏèΆ!ûÞð;¼#l~„Í}lžcÓïJÛþ ÷;}ŒÍ»Ø<Ææ 6÷°yŠMØ“œ‰·Uä$²l߀QŒöõ÷µ„Š •ÖÓÐâ•2Ú*ڇè°ÊXЦ”°A_ ^jì:ÈHÆævÐy®V¢uïaSaól^`sŸ'®V ’%î#†`Ç éÈK±úüq󛘠8f¤Cƒ>f¨ï5î é¼´3íÜXV ~.ðg²QJ•064¼0YYéfÃþýYË ʄ½ˆž†iDsW|”°‰ ×a» +P +­ª¾@@AXˆz<äzà ¾àa;°ö.…£çdͱÚ´´yµ„º·Œð_ J#²‘’ƒ„0¦ŒÄLP˜Æù²´–¦Êá´ÒBRƒ™QŠVŽNúîgïQ­ïZÄwPÑ5|¬ôˆÜ½òigºE,%÷ÆÀŽx†oý½`ì~~Ygü‰mB'€ŽìW1Ï~}NÆ ãQ·²Ý=oÈc?Ú½Cڍ§>³Ÿ†z|TBˆà7JÃj©¥á…ˆÈ¸‡¹G° ¯UJxCU­"—Ù6¯°Y`S±vÃE£Œl¬ŒJ—©ˆ+£êe¢8O—UAtwP’€ÁJE‚%gq*Žv‰?»¤:Ÿ•¼„n_Lƒ¥ª¨G͹÷#&Àˆ–ÀÂ#öµ±Á5ô‚ #'ÓÑÛ‘ú`#Á*ÎÅr#ãœô8æb÷Ù!¨y¬Ž$@‰L†ê…D®\ +êûU`‚+ “£Ï‚Ò¬ê|–&ÞUÁUµö‚€[_¨”ÓÑÄti{ÌtÏŽ¹®½7ûéٚÿm& +Ýò?Ž4GÕuQ¦¯0”ÈŒÌuǑô®Å6‰C¸Ísâä­YGåm;’HÓG?嶕1Di$°jA·e欈ý„ˆ+ïgÐàÃ%†‡]ߗNҗcoÄ&âÎ"H…ˆF%׊×;%2&𕏀>œ«h²Ôb\šÄ«®ðésòîmJѸñÑ)‹¢ÊxYMSœ!#Xd…þm ûÍ_Mk1ÁD,³\[ðO? ˆþ9Âç1ªÇUâ]‰¼„w ú<Ò+¨ß•²¸¸ ÏEA‹4½ƒ[!7žzßbšŸt½À®Ÿ6©=_ Þߔ°Á”?@Ã\9‚È„sü‘Wþ¼‰+È¥X8S\tâSÓø Eø†³h“E}ÀL¸ãü„ã}âåi—šô…Ï7*½©3Èß¹¬Êàɝ¥cå:ÚïQ7¹ì½·£Fñø°0ñ.Îú[¥…NXŠ|¸„¾p?îæ{\òž0M‰ÌüÅpÜ©KĜ7ä(:ù¥. +øåJפ´ö¿a6Kg{é›Nèª6"üŠ¬ácj—cüd Ѓ…AÄÚÔ1NQOŒ—0^ß06²Qiò0$CÁáÁüÿ¯ ‹tŠ@댴«Y¥0"Å˜oÓ£ÂC£2‡¡AÄ8-L¦*ó1=c&öu DíÎÿ£Ò›B¥OhÐ=LA&&XEê€Å^ª?ÂÅm±yYǞ>¾¸ëÃÀð}úÔ)œ5ù<*ßiAb˜>0õ0}J—°]Ÿl\fœ‚(ÍKüý]œ,oWc֟EPÂ|-Ž+e|9OË1”󓨵DžÐ8½¨àÁ:ÛK̑Q$!Æ ÿ{©y7Š%èf_ ½$©Œ£€r Ÿ¯É[ž±XÓ¯ +Ÿ”q'Å͋©JdÃb‰H]¯> 2?ùú€^œN•qô+Ïpæúxæ}é ìÐߊª/gµ·[áS ý­èDÜ NˆÃ7F»r™-B!dÊ™•ÚŸà<ÌÊès!I½4$I,DÁM$Î|¦|V9E5£(s!©½@Ùï”{xÎ +~»qTðSe= €A"ý\ïÊÛ ÓKó3ë|8?QŒŽ^o¿ªÁ©uJïý r»?œÜïöHè -õ8~Þm +[j p7JaëÿÉ6ZYÏ04Iª].Ù&“m‰êaØ3µn÷§SŒ‰2ã_Á>#m^cS¾ç4.¡¿b’±uÝðBQîY)þg7³Rª3_CVJ¯^ñæîô›ÕdÙxÔÏÓ¯ÜܦÃ8¡Áö­7Ü;âPv¬:ðuèÈ?MšH=|= J +•Xƒ«¿Ð¦ydgRÆ !-[·7¼ýåqýª^ϐ_U§£¼Wý Kië\®èykõ蓨kοèFcãL7±ñÏÇK¨à™ Âïß;1·Ž÷Mv¤ä¡hNr%î1ÿ#˜)f0üêlÈq'v\Þ;e +)€;‰¹Î…ÿ¾Lÿî úÎñ.,À¸V•L—†V(gèI_"(¼8sõ¤ãúè—Åê}§Y.ÝK‚6Ëu(âzŠ¼û~4F²Ûý»Ú(å۝L¨,3밄l®…=æ2öéáŸ2>Ì@^ï&UroÔݞ‡$s¼m¢LGJîg0󋈺'´~LòÚüvÁ`uÊDÀì§É€¹RÇf“Ä!¸)¥t¨º%õ„$_sÕ·×ιӉ3f„¡¨279oC9U+ºÙ‘Ðå8bÙº¼NË(¹*ؘ bÜü©“å \Üs´f•wYÆN¹Øœ^^Z|™â`¥GaZ­WšJìpy§$¶Þ•*2: {ð§lÏäÁ®¾J%´ïR§æ€ÒêúχחÓê}™“È`RÕ 1Í:VgäÈq{ß$ßÅæ16O°¹‡ÍSl†“bêØPÃã‚MJÇݬGð“Ì2óñuá±m0¯Ð)‰\b‚w5ITÎÑËR ‘Yá³Ô.“Ó“Ô–ÏQMÇrîúÄq‘“…d‘S_ò´ó16=×~W´NP  ‹ ÁâÔveÍ2Äha¯xbd¥HË´É|§ÈäŒ*Õ“aîDÐn$a£¢4vê YŸi™¨OLIðü$c‰ãZ|Žsèr^¸˜?`s œ"Ž‘q¬Nb—J;™2iiHÅqXË2Öâ¼´‘.—¬é—,h$–â¬2©”…9nƒÎWéJ4L›)€†·£gÝ%t›̶Z¨ .bǞ} +¤ø*†c"o Ü×2'4R•nCmbW÷ö(9t­ö[Ê+ê䝣¬T ãƗE/NÃPØu…åm”`ôr©'éìqÁ‘úXAÁ­ ìþí5bEæÜ"X˜cù¿æŠ?bòöd•Ï Õû²ËøØ|{{0@µ0æÄ(v¾ ¹œži¦.âQb7¬5ÿFÉ[ˆÈ̪lcOÖ|aÉàí +S á0JèÛ»ð-*¼¿ªßã€ÓðCgՉ×PÝÆòéÍÕsüè£?$ÎiRhœsΖµù•òAÃÈ°««í¤Åøæ›j‚ñC/)g`‰QٍšîàõÂOð¸}ê\Aâh-ѺÝjªPŸ°äeWÿ,ÿŠE»'TÑp%ö#Vc|“,QJ Ù@“÷³æÙfS¹\ƒ?teu^®^‘UR˜bÁu”ºu ´±³Ù„åv÷‘‹:ڄpuP§½FږEºX"il.úœƒÔ)Ërüü÷)”žE>/¤” dzÒÛ5`Ù¤ÿŽ³.ØõWsÐɄͷ1†´ œKN_¬‹¢MfîÞ-ŽMû®ãÊ9þ¡šQJ(¾¬—ÄBÕð7tÞº$å>îÛ^I-\¨pØɱX}¿+­Û•Û]ÝbÂsc'D7ž@Zþ¡œ~}ì¶ÞœØ!½•ÏÁ½µúôÁï(ÂÜ<ßÜg¿meÿ®Ÿ Ó^ƒ¡ÞIЎ|Œ\…— +ÛÕðT1Š« áKKgéæY®i•ݛ±ð­áÊ Ux°uÑ}»t †-÷i°â?ä07“´ Z<øÑ> +endobj +91 0 obj +<< +/R7 156 0 R +>> +endobj +92 0 obj +<< +/Filter [/FlateDecode] +/Length 3409 +>> +stream +xœí\[\Å–½¬±gö fÍQÀ0³Ê¶û~IɊ’ ¡¼€ö-Î H‘ˆ„óÿ¥TuŸÓ]}™Ùų6ˆ-Yåoª«úR_UwŸ3óãęÇ¿‹ðí«g߸éûÿ¬"<}óå,¼ü~õãÊ3…"@åo˜þx ýfο[q‚ç!~&&''§$Ó~:ÿaõ·õ£ÍgJ:çÌúp£çÆÊõ‡›3͈¼ 3ÞJ¿¾­´ó’ûõG 愶ë#Dƒq4ˆòý͙dŽ+£Ö÷6’)g•[?NºV ·þxs¦˜µàd鋱¨0['—îDlw’­½ø7±Þã×ï¢5­UYÈ I?² ҉ÒË'©‘"``ðIw +&~ýÙæL³ ·u'žF¬Í†eëßl8sì&·V.Sf²WÄæ‘­ÄúóԄ{EæY2àôV±þÖ&0øØÉj’¨±ØY-ƒ7tj7?ÿj¥¥bÆbÿ'Í­r~ñ`”åL `Ñ<ÈÒýò1Ñ\&È{ðºôÑ }Äœ-]8š ›úñ6vYúà‰ßÛ$o•ð#ÁCÐÅkÔ¦1LìeeÚiÏla0–ùõhÎh³üâeìQàäõÆ0'=LyŠ)ŒXß,"ü›Ì n¨××;kü< >_}½‚)šLÐrzÒÓË®¾›AÃ+ðâv‘vœô¬Ô•¢JlEҘ®³è’O²D’s©<¡)?™·¬ +Ê`¸h¢ÔJû´hÓ¥+ËGêä´:ÿc/ˆ3Òõ­}+¥ítؐ˜»»‘ :¹v)‘H—ã~uêI;®ËÜbbŽ‘+궾$èùhõ²!UM)¹E·›ÏXÙNKÅëækgUïe˜è–BJ«dÍJÃcÉ\V–Ll­¡xH Ï\íH¨ž–ìHêäI.¯eOx¨9ª¨q’¾$‡ã9ó0M»×´f\»¦³‰ÁR à ?ÚÏÍH°3ѝ3¥t¹Ä «ûóðÍ"f z(¾÷‰²Þ~J¶ Äî;PV$Òe=cû~=¢žŒ¹Yo±ö¨…õ[YMzs1½fEÒjŠNBåïOÃÙAƒ Â.cçj6º¯#‹FÓrk-¤>y…p” ñO‡ ‰¹a6˜W“fBácBÛR+6?&ò|ž¢jˆ[¹ñ( É,T.g+RԉH‘ú]-@lc—¡àœq%–}«±áAŠø~‹ø¤ˆÇE|»ˆÈüE¾WÄ۝²ðéйÈÇE<(â}¢ürc±ãÁ֛6! +U·IËô\öø1ÈMÊãÝퟛˆ-R c¼hë$¬ò–ìԝͻc1±G¼\†í‹îÓ ùKÄJ…Ô¦>_EN&,¡?;, ßÊeÂÕ{ãÚ_m2‡1 LªèxÞÁ°xÚÞ«tgٓW(ÙQ.îwº,Š9ÇÏQêµ^­p.Ä|ó×Õùi}çD3Ç!IÀÁÌC¿ kúRõœ¬=½“N¦ÍZÌn=RÐæDŒ¼¿âÚqAE4¶n4²ò–{«-š>SÓ؞éE¶IÑÖoꛦŠšš97]uHGYi 2_/Ð~ĈábN)2tߑ{w™Ì‘•÷È­ÙƞÉUÑ«p˜üÏËïWƸI;k'a¸š”²éæÊɤ=^˜hÕÄúÿ„d ìè²E(8M¢˜M×-7 ëȍ€e€E$œÂ¬ð^™­³EtóÆsËX%·& ÖKQÆ*÷ÐZON™««tñ6Þ¬¿Ìh] ÒÞ£ÃÂѾ†ay=çóÙ‡ôŠœrÿYéáݬJ†w”ãv÷è|àsàZCoæȅƒíU’!Ä,‰Ü +¡êƒ2–ß’}Á–Õ¬ð£LïãjÓ7¬ÖÞÀÁåTnsˆKð<ƒ@ÑèEŽD9²€°£hõpþ“AœÿՐëÅ„½‹K§ÉºaW:ý¶`4؂—¸©æ»nª`n^V‰%L;£ã-à"¾_ÄÃ">)"+â³"š"'Ñ +ƒ™~?)"+"^Å”1 ð {‹Û$Ä tBÑÎâ'1äëqr‡l¨òÞ|Òû ÛJ#°BZƒ•‰÷qñÞz¬7šAjCîàã2§´]n酤·÷ù6m¾fMb“|þ—rÉÿxÔ¾ø$žÈçOJûâê½âêޕØþ[ áUÅÇb€ô°(¼yÍâNž´0Ò,]%ý;)6Èn‘và(ÏÀ§å1ȍ:7@l4™ "]&¨õ–jÙg‚FoÎăLÐ:D›€¼…½ñۂÑI&ƒ ¸/í>K»ö´7EÔ5ׅ°½1¶cÜY¥9íÀœ…„•ÿçøµà¸6¦á8"=Ç+½Äq„:Ž×z‘ãÑ`ÇñÆ1 ÂȞã-4`2؀{rŽ®ŒûëÃqYēa3;lFrÀ£ù²Ïå»K_ÉYFoìrÖÂ)ö’ñôþóôÄ}ûlA ãƞ΄±ΰ~˜dÂ¥“ $ +Øô+šd¾@¶-M8>¦ó~)æ"²Ÿ”FÅÙÚþÎá¶#¥€u©I‰HOÊJ/‘¡Ž”µ^$e4ؑ²q $¯MGÊD'- ¶à¾¤Ô‚IýK"å‹M%_–¡ç°¸“ýE &”ÌTãöÛÀY™i));}aÊõA¨IpЗ¿òBȋš¼éÈ[ëEòF¨%o£‡äM[ò¶Ž1Ê÷ämÁ褓Áܗ¼\³kÄ]²%~8¤1ÝU¿¾³òòꚧqXX2ÜîG’¡ÉÓ! _~ÂÖy×&¶1uá&v¸!߃Ƹ‰&c­6á5£Ò £é]é%F#Ô1ºÖ‹ŒŽ;F7Ž‘JôŒnÁ褓ÁܓÑÊ:f®ÑõW–ò˜Ð[ncwqÏyõü.g¿! Ó?ÞÇTzµ“é ©¹¡:cOÉ·³§-¤%B•»Ø?¡¹Ùâõòék˜4®ŽÓÛϽJJ×p‘žÓ•^â4B§k½Èéh°ãtãXM2½9]sºÑI Fƒ-¸/§gîÝmÝß +ö£WLvØ ü…Ñ¢ûóÿpXÿgnÉ®hC½“µë¼fmD:ÖÖz‘µjYÛè!k“Á–µ­c@ §=k[0:iÀd°÷d­ Šùkt[õág¿/â³!ÃÇÇå=¸ltüjˆœ®ü&Žx4Þ<)_Lò^´% ”nM¥šÿ¼ÔüfO°#û\4Sãa•a¿UŸºžÐÌp†/·é+Bóp"=çMï’]]¦+S±#çY¡šœ‡HŸó*½”óêr^­s^4Øå¼Æ1 Jð>çµ`tҀÉ`î›óŒ›¯¨¯GΣ ‰¤,7D¯æ¡ýkÛª w¯ù©}iMÅ£ékM ÃÇ7üs0L1ÃVݗk.G?¶¿õ1`ÍlÅmÃlDzfWz‰ÙuÌ®õ"³£ÁŽÙc@8W=³[0:iÀd°÷e¶äìA®˜Ø[Ë{¯É7Äæ×òTþWÇaB¨9‘ŽÃµ^äp„Z7zÈád°åpë x°‡;0:iÀd°÷ä°ðŠ©kt7X=h[ïÏâ_]y~šŸá©3¼´e†rR(Ä<¹d¶¡yá-"=™+½Df„:2×z‘ÌÑ`GæÆ1 Ê÷/¼u`tҀÉ`îKfmó;Û¿D2¿ù’üߔû%wûqYàoÔF¤çp¥—8ŒPÇáZ/r8ì8Ü8„ûꍴ„9ßj¹æeŸˆôn¬Í kߊP7Š¶q]ûZPrÝ ­i=ƒ´õÚã×¢‚_Þ¸qÉ?›3,È-JXà—’âpL™Ì~“ÂæÞ­óoÑlyMG²Ä¯ +(ªúñ£íçÒÏì@À=¼TÀ¹üRήx^½Éxr§»nP§i¸¿Í¹pöχÍ. 7ÉåÏn^^Y¸Í?wa¸Åúõê¿Æ•B +endstream +endobj +93 0 obj +<< +/R8 149 0 R +/R14 151 0 R +/R16 152 0 R +/R20 154 0 R +/R29 158 0 R +/R50 161 0 R +>> +endobj +94 0 obj +<< +/R7 156 0 R +>> +endobj +95 0 obj +<< +/Filter [/FlateDecode] +/Length 3287 +>> +stream +xœíœÝo·Àa+òÇÙp"¡I*’/vÜÜ ÕšßmS­ÓE^è-îSÒ(àqÿ Còvg–œÕ|–zj¿Œæ†C.—óÛ!oç~™‹Nª¹Hÿ{á‡×³gßùùÏÿ™eõü»¿­„7?Ï~™…N§YAå^Ïÿ| Ãܜÿ4]ŒAÄü™œ{5÷Zu&ÌÏ_Ͼ_<\ž‰N+ï½]ì/u'„ujñéòLB3âÞ ¼ ÊΧÂâFje|P",~³TàN·¸—´ÑzÄøpy¦:/´Õ‹–ªÓÞi¿8*¶ÎH¿øly¦;砓~BöβÁÊt²ñ r»ãÁÛ«uEpֆŃäÍëô`ae4dœ{ƒ 2åIi¤Œi3JwÖ¥etþ#,œ2·Ú‡¾«ÝꢼT‰–{ƒtˆË~‚B€^û1†è`ŒigýΤé¤+㸝†¬B ’¬ß;d%ÞÂåGÑö½fkº†é»ßßPJãMè\áb\_&wÖh˜åWoòˆ¢0 /–¶ó*À”—u ¤•‹›(Òɵ\ÊØy),óý ÞÙ°š…¯ÏgßÎ`Šæ65‡ÍÜÌßüsöÓJiÅH¹ž*Îc¢Â+d…3 Ðûù¿fJ:3_AQ%Ðô하ۯ¸P);W±—§;ê`ZX…Qx¸_ƒòFB€Âûů!và6*±ˆÒšÕµÃ`ÅÐٙÑ0õB͝Q\pîR%GÆ[“ ҋŸ ¸â ŠŠÏP´(ÑI›®ª¡Ø¡w}ێ°Þþˆ¢BÑ¢ø)ÛÅc˄ɠ;Xãs !2š ã|?AIüÅ}OPìP¼‰âW(FV{€b +³^¾‹¢Z:!€™1 WÁí¶JÍÓÓÇb€÷¶P¼ß‹±¬¢ýŠý‚ÁÅéS7VÎ <ïŠkUˆ(ÊèúewoX¡O— ƒ°WÀ x*—˜¸€é£Òv¶_Õ.è~UK¼šÔë°ðñ‹i &J7ê”8@¯Çèà?§—B,^ý¢ƒÏ–ÒÃl$j‘F'(’!>Á¥ J‹ BxŽb4¾h¤ƒR '+;PÙ¢ +JJ¸¨Ú.D±rè ³•Ö~+CF•G紅¿µÐt(µ2÷[)‹ÃJ¹aÅ„uÖu”lì½£<¨9²Ì¢îž£ø%àα®¿¾Êx¬ â`v:±Gûìî£í¦Xs¦ƒäÏî.Ö²%vI|î¡%’ˆm~7¥ì^C~ÿa2”r +¼žc®ÉeØVÍiYá+iZ|ì +¾’ªÁ×Ø.ã+;lðUu ­B˪Z™;©”Åa¥Ü–U•ªÝA±%¸ h¡xz†¢_ ¾ÈíµÐ‡ÜAñ)Ë!B™´éåÏQü`|ˆc>ñ½…Ò£&NÁ¤´²Ï¸HÅzâáu¸¦U³åIßã”kýÓ9%Æ5ÀtÞR€%M °‘]XR5Ûe€e‡ ÀªŽA#²¯ +`µ2wR)‹ÃJ¹%ÀlPv»C°K%[š%¿k$Í KIÒ,-T­t'õ;`ÖúÔÈðÐŒ7ßÑ© R€Íӑ͊a_@¨HÐ¥¤aÅîž6çGºK‚.êx¥{²²$8¢Íˆ·=üÈVù’4 #„ô#’¦eÄÈ®0"©FŒí2#²Ã†UÇ𩗦aD£LÔÊì°VnËc;»CYÎÿrCvIŒÈ M§®nßµ›'.ׅŽkÝ÷\+? êĘYÓðcl—ù‘U5?*»Äâ°æGÝ1hŒð-?jeî¤R‡•r[~ˆÐ¹°;üX{¨BvFÏYoXoD$œxÁ4æê¶N$ ÙCñ@ƒl’ kq‡jéÖ $ëãhëô+vhï¢ FCÔ»¼‹JǾè±Äï]8€¥Öւݼ~çu‹ÝN‘“t?‘b%ÙuVj9Â!ä_àa•¾«Trdü‚5&Ú#æ D¾Ñ"³1}räÑC“¦eèÈ®04©†Ží2C³Ã†¡UÇð‡¢eh­ÌTÊâ°RnÉPã}z bgJR)’‚°Z‚Ó?°¹ÝÚḏã‰ÔqÁ”ÏT-túfv~ú=‡(Þdg˱¶£¨Q|Ď®¬r%áo) Ö"Q|ĈQ’¤l2Yztœ’³-`$4pםìlžÒ‘<ѧ +œŠÙ¿K¦N„„7àíA‰—'Nžðô¦Øü«Ô§”!F–¸dôÇlB{‹§çj*cs.nLüWIÓâjdWp•T ®ÆvWÙaƒ«ªc=×>=/+\5ÊÔI­Ìk嶸2"/ò]ÁU`³¿g¬‡+¤×óC:ˆ)\mG£Q3õ])`¥àX}í8Ò>Ä1Ž²¦ÁÑØ.ã(«jUv GÅa£ºcИ„³Gµ2wR)‹ÃJ¹%Žt ùý¸]ÁÑeöŒdwø1ËrÈ}uÛGBÛ¬xÂú=d;&gß7FÉA§É Ï»mèÒ}ÆmâÖÄùµdE±úêì +A¶éV®¨ÉöX®\úu§ô–áô+¡ªbMÒ´¬ÙÖ$UÚ±]fMvØ°¦ê4Òǖ5µ2wR)‹ÃJ¹-kœÌËqWXClÏ¢ä!یßà­?zOoz[¸5[ǽ4>™ÉºdŸ§‡\À¾Mò§EÅ`Áó ¾{`C"ô`L¬ú[qöûñÂ5*½­4iÚٕMª&@Çv9@³Ã&@«Žõ<½ïÝh£LÔÊì°Vn Ê Õ» üÛ|䤄løíÆ» [§qK±[1Û:Ò§Ëoêëw6(٘^s ±EȧƒÔÓzž„Uuð«àª÷³¦ þ±]þ¬ªƒ¿²KÁ_ÖÁ_w ëFo¯t²±ªÞ0̚vÀ•·^Y¿v˜UÍUԍWÊú]ÄÒusiUë^IZ3ª-ÊÒTì_„.…%°:U @ËÔH‰–üÐbRqöáRÅΆHë™HíÏñÐëÜN±Ð‹:(&›¨Sà +²‘õ„遼515|Œe^|æ­¨™iI¾H±V³QãUE“òCA“t¦-hʅm7Q¤MÇC=ÚºK)9ºq3–,¨o,Ÿ;šp}\Ž}¬í¤ò}EéÆMöHìIyµØãêï¨àgwHXÁ7…H/ù`´N¬Ëë­O'®…¬š'«{kLžd.®bñLiÀz:ÍR¢ wI³²±Õ«Ò¯ý¾ô«|(a­=j엍«[(žá®)¶¼x-“ ¬'B—ԝAïÁI»*²kRRØÔ®æè:¤?ÜGEïcf”ãj@²RÛ ¬‹@ӘM´&—m¶y§ìºÇÅ¥{ɹxYÉÐ mÌ»ZV+åbOæ) $¹Ó/Ç7L +Ñ9O^NK>ÞdUE°´¹¤1͹æfÜ@fY?Œ FނŒj}Ðþ‹!`˜újéÃ`§Ð–ûó‚rd0„DuT5<ÁsŠ;²ÀNØ5^E]ß ;÷¡‹Þ2¸Ÿ "z“1¤e¼º"ƒxÊOÎ%±½ÌÅ¡²/íŠíS96–h‘ +ì͋´³LºÙ`Qø¥²"Wr÷÷‰Vr“¬m}Š÷Ž‘~­ëÓ%¦ÒD¼: }ò¤™ø„]y&^hŠÔ§`¿f_ZnGlL%i—zj֑vlÓQŒÉgfèñðrýGwbl“áfuÒõËhÓ´€}D])ÐJ4bÿÖè™ +‡‡ð!¿Øóãl³M̯„б¡Þê7IØ]Ýû½+Ì|˧ëã·MÎSðQkÌ-F?ZÁÿ¦É[ÇäF{Æ ªSN÷ÁÐf:z9µ{œè…$JDÄ0˜š¼‰íÞ&󷛥ÖÝÚM%ßóú-QÓ±M­ï*)¬íÂjLl:Œi’qYy‰ 4;ÁÁejÒiЍw74Œòû3Åå7iSóe‰åogÿ(|Õ +endstream +endobj +96 0 obj +<< +/R8 149 0 R +/R14 151 0 R +/R20 154 0 R +/R29 158 0 R +/R69 163 0 R +>> +endobj +97 0 obj +<< +/R7 156 0 R +>> +endobj +98 0 obj +<< +/Filter [/FlateDecode] +/Length 3329 +>> +stream +xœÕ[Ýo$GWÎØI&''6œ;FIv-vÒßð‚Ÿ<ä°ÄáÉärŠìHw<ðïSUÝ=]³Óã]g. ýhWWUW×gÏދ^ Rõÿ[Àõm÷éSßõû§ÌàåW݋. ÿC _ßö¿½‚¡6WÏ:1ÄD¤¿ÉÞ«Þk5˜Ð_ÝvÿX½¿ÞˆA+ï½]¯õ „ujõÁz#a›x4.¾ ‹ƒ N…Õ¸Ëø DXýt­€4nõ®FëP0âóõF ^h«Wï­Õ ½Ó~u‘h‘~õáz£ç@HQAÈŒ2²·´ïÑÈí‹oØ2jœµauŠÜŒ±NVFÃô<Y0%ª–Ó¦ eD}àð‚^x †_}²Þ˜!Ê(ÜT‰'$·ÌXEµúh-oëT1™¥âZ>y4Z®~ž¶ˆ A¶’¡'•ûÖq€?{51gFʃå¦9^ÿóê³Î(=X‡ntõ/pœd[íC‘`µË‡ò6òÅJy4¢óúgFY H-:†è@GÔ`STØH3H—ôxUV!Éü÷-æ‰'Õý˜ó°Õ"•¨¹s{Xn¥ñ& Ž Æ aõ dg+ñ’4ŠÂ^­íàU“'?PÒÊՃ +¹ñ¿X¯e¼–Cºßà Ù +¿¿ê>ïÀD½Fõ Ñô¦ùe÷,/Z1Yܝ'Tìã]M^Õ\aÅà ¦ +~õu§¤ƒ0óÉ Ò&š²_)H&ÁƒJ9(8Å™;êÀ -xaîk\|S€ÂûÕO và•Ž«_'(­Ég_JjVꎬ¨‘ú6#þa•ñθòHúËË{0Vk0¾Ñ>2„Îْ¼©s®b¢¹Œ‡ëM:;ìK7þ—MéxýªM Ö>‹qKL ÀÓæ*£}YK“Yk.Æ\tR ð¤ä¬Â·šðÍ +ß]ËÁg³O’#¼_¹¶(ÙÚÛuÓÏʟO"}N¥Õ7å$¬˜ÝRUÁ<=Ó[MtS¹²hݺ)#ž0Y0þÜù¶lÊ÷µT½lÓ.Èh۠՛-„7¼u_퍎G4¹jeµ>åŠyëSþ²¦Í˅Ʀ恺uæ5¥<^è€ÎçŒgqwg,Y!rB;•´2Ӕ[#¢YÊÛèmfÌÑUqtÌ;s5‘Û“q¨SA¥l碏™“p‡áÓÖn÷zÜt–-Þj²¨¤“ˆ>Í©Ðc嬴“;匙¼ÇMy-…®²´zNK-'IüR +ÝI?®ð¸ÂÇ~Páà +QéÆò{ÍÕ³ +*I§ È|s'éæÆ«ßÈú÷zî¾%ÌMÛòýé^ F>l׍;½O|¤QšÆ°5Ñ(Å=§‘†Qàüßnä»&ú”Òî•X'}ñ¨]«Ný®É‰XœÌ›¥à=©öj;¸ñµ’f:úiºWEúüÀEms± ç®že©¤6Gó޺㭂Éì»ï)xÍmèiÓsC +«Åéjy)®C;ï°ß»s"]øpÖ¦G;"}>an祆ÏlQ·W›ù¦/i—ó/_^Sþ•Œš}s+Æç£àBim%ØF‹éüIãbëö=šŸ6ñü}†ªíî +[ß©Ú/oww[ñ½&‚l!›m=¯šhå•†Ékwö-TZ«%T&Ú¾&¬žö­§ÚùGy3>_/¶eœûRßÊ!gó«B^íVtîi[aחïö[ú¯@Æ)“Üw9„ŒnÑ.:æj_C,X¸y‰­’qÑnjÆ۲ÙõWÑ Yæ¨A:Q@ʋy¾¡ºÚò™Úë´ÓÇy+S´ít–éÁM²}¬w0b÷ÿéBÿ×NöŸuA¹^©({˜#C¯üÏË/»¿uP>LÆ÷sðò«N)cáôý-x¥· K e2r0Ë_w [ü;QZŸö#ºÆïE>¯:«eBiÂÈ5Q¢¤*ÿº{v ¥šNóõwJ¯çhÅC ¥ŒÃ_38oñ'ô#)–Yyˆ>Üú@œ2òHaÿÅèÓÙn+°ƒ²¿Éë*Ƅ=␰eë†Ñëħ¬[å&;潁­ÇBÿþŸQÈ)’$͒óúM÷l‡'Jf£}pã؏–Ò¡¾:$éÆ Ò$c8í2`óžxºî´‚û!|XÖ +}we¼1ʸ)$Ó.҆xJÞú=Sù•8²Œ–9?õ£#ëê±Íš•”ÇÍ|¿³C¸××ôíá´VíR©/æ…-u»†»Ö×ùæcïŽì?iJÇ`ޙªÁ¼ÒèmVˬaJ(BÿH¡ ɤ¬ƒƒÞwË«ÉtV0U¹œèꇫ…f|±»Œ³RÀ~¡ó,ÒÍ’.†Á}^Š0‡6p\k2.v÷„ šî1Õ¡ý«‰üÁKV%í LÜðï.þËý&´Úߗ¥§ÓÚɔ9EÂRb‹$-eNÄØß,tŸv ,úÄKP©†)Ë'L™S% eS§]©H´ˆQÆMÁ³,îBm/D9Ù¿T~5± £D1~ßõ.3±(?èžüĺn ivço îóÝêàˆ¯?Î •Ê™*¨ÉÞ¥”™°*é°,ÍU]w•^ÆRé1œhÕv°eë®ÐSCe€“W©¡ÊIœ*Z×ÔP‘N”ÆsóÞ ÇônĨ`Q»ºn½ËÑ[çY™H͟’u½È›?m¤Lºæ Éͬ«=š?Ú}¸§v\“°ô ´.º PÛ}ÄFÛ>Qj/R»NÛ}ènÓª‡¨!ʄÒþŒ#2AJ”Tå_çºùQçÕıòÀÐ÷E™Íͯ<íOÑKvý4€-rÆí>(ùªøµrexAA÷™ýð8°ÔuÍèuI­ÉßE0£¿‹`ËPS×c¡Ï~­¼ðe¨¡ É~Më»ýZc¯ƒÀÒ¶OXK¸4íA~FÖar'l ž"c EÚe ì/D×D•Lø°‰ ƒE󮌌#ZŸeÜ ’Ó.Ô&ñBD¾ÿ}Sù•Ä‡ÐF_#¨‡jÆÇn¼;>þÔø>ôŠšÕ*„ÓL˜³ÏEcßH‘öÚ0‚vëvÚ'|“±ÕZ ¤Iøy÷÷þ›ƒí¬²‘Y—9ÿÑöâ{{sâš>VB2­ÇƒÒQÇãÝvF¨PŽšp>*;öaG5Ú῏Úîóÿ|7è=²©0899v=*ƒ©›ŽŽÊMpృ´+ÇNïÖY&AìÈÕ¬Nmniµë`|Âq¦‘l] '‰‚a¯.ô0fÆ4Պ‡ˆé… Øú²n+=Ézœ|@ ¡hJ¹%¨¼Ž©?éŠYì6aäX^*ŽˆÇvª–¦ÀJ–Û«”U>q¬²”(ç¯Xúd¯”y“Mt£}Mô£ÝÇuWè© JV+ƒ²–Á`A|¨ÒŽ‰€>–ðMƏde¤Ix7[øgdÚÚA‚Ñ íÂ<’‚Œþ=‘ƒ +.Wjíþ¡8Í£fXÝ°ìd- '͸Ƈké åb:N"âtR8ê4±…G|“±¥¦?Ñ$|°>JBfÁøÔCȝ G£ÁHjwfP(VŸ¬­uƒ´jb¾ª"ª‹e¾¨‹8«ËT?\] I‘i;1ßçÝñH_Á +endstream +endobj +99 0 obj +<< +/R8 149 0 R +/R14 151 0 R +/R16 152 0 R +/R20 154 0 R +/R29 158 0 R +/R50 161 0 R +/R69 163 0 R +>> +endobj +100 0 obj +<< +/R7 156 0 R +>> +endobj +101 0 obj +<< +/Filter [/FlateDecode] +/Length 3049 +>> +stream +xœí[[o\·F,¯d¯ Û²Ƕ"ykÇöYKó~y(ô‚6A_bè-îSÚ(`Qÿ?Ð!yș³‡G»º8½&/4w8’ß|3Cý¼àLȏÿ—Ææoß¹ÅOÿ˜§îÅ»?ö³Ÿæ?Ï=Sñ¿ÔAÛ?|Xüöú¨9ýqÎYž‡ô›X8¹pJ2í§æßwO–+ΔtΙn¶TŒsce÷t¹0ÌAs§vކNf¼•¾û,ŽÒÎKî»gK ꄶÝ~ì Æq –+ÉWFu÷—’)g•ë³¬ÕÂu_.WŠY “¸(ʒ@¯&Ùڈ4î¨j{ÿ‘tG+¼5Æww£6­UUˆ ‰;U1­<΃¼!Ú‹€_RÓq§`㻯–+͂܍x•¦0 ­W,ƒì^,9sôæi­,[fꬱ¯_yÐJt¯óîèwÉÀ¤»¨ýæ20øÙÉÁ&QeÉX-ƒ7tkfË¿œ~;×R1c#ŒNÿ +ÀÉ{«œ/3eûE9h'JîÔÖü™H– òf-6ú`ÁÆhÁª˜°š ›í؋&K¼ ø½E¸‹ð#à!½eÖ$M1Lv§œ t +í´g65a1–ùîMTg´‚]~–, +\C»[椇-Ï8Âˆî6éæ¿_.E`NpC›é|½³Æ÷»ð‡ÓùwsØ¢… Z.`F½Ð‹³¿Íì; tnæ ‹Tá$r…áÌêH0ûéßçRXp3—A»"єñR™xS0 ‚IXÅNÚî ¼@aàΫv~)Àpî\÷ø£T¡ûMn +£ûµ¿}§ßbµÀŽ Ɖ©oß ÝËfࢷzV¬Î? +88®*®ï ? FNÐù)*'—B~ Â }â— ƄˆÎÁÓ ÄÆ3l,m·?äÅK£c/•ÝiÆ÷ý¦¶ Ÿ#mb)iµÚ« cÇ#;"rÛ°˜€ù`¿&2:¡tÚM|Â/Ú¸„èí—Àü—ž3iÌÊtÆÖ¢gëcvWxín³—cw+ž•öö²ÕÎý +šçKÁœ¶œ¯d{H^û„çê aóɘº!p üŠ‘^a2™å ZKƽÆfµœüü`ýgç$ýýW1 A®¬º·'k Eïõ¤ï6ª³ßm¬Ïõy²ÇªœÅ +¢r[q$GÔU +çÆôã 3©>o JÑü• ªƒ: Æ°ÝÁ6Üû>á}¢œ’44¢ÄÀÙ¨:2Ëqs–ET?’ÅS„ŽÙUEó£¢ ‡v›±9Ãæqn +Ø®#lÆ],m…Í›m‰»Ø|ŠÍ;Ø|¸´6'ØáÉ ÓU̦ôCè±QB ic#ÆKdÆ£F¼¤ùÈ6d8>”¨å¤eLÓÂvô§VŒÑWAvaŒ>ºtµÍæ‘rŠX‰öŒkÎᮽ$SÐ龚JŸY­“*fWR7x™R Óûú«õrzTÂU¯'UøEkŸãf*ò¼Q#“Mšt`^°¡´žî›&»tÂÒJ¿‰ ƒEŽ@ÇáҚ•xËÄN& +!ué´%BH*żv…4&}vÛ\>¹ß'ò˜A]ü1çsNÂÎ~Mþ. +i:ò¨µES„1>Ç5ò vâõÉ¥+Ÿ+’•¦¡RŽˆ¡ÒóÁÌ>!’cҞÉ«ârÀ5=Rè=K9¯¥^†]š]œu^¤¾Ù ÊsiZÑ&¸)*ŽGæ”òҔÝ®~Šù_”Ë?‹d³µ»0pXìÖ×uAKö=†ºßO€–éº&—£Lÿkt•Á¢'¢ö¥;%_.–Ö’Šm`}îì9kCøû¹ñäI#Öø¦d=VŽoJÖà³1ßØäGAI¦È*¼Q5{ºaß2C| + ܕt:î×uÖCñ,·áü;ŸÉ|óÒø"HŸÍë¹öCÕù-ßsS ¡s’‰Kh)Ðø,„g\]|…H˜c®v‡þo{çy¥›øjVÑ:±VWͬ·®àÿTG^ûÅæ7¤@Îì +ÃÇ%zÙî™W×Æÿƒ%Û'b«2£[6Í\9–ï§.ÃÈ-ڌ^†5oÀÖ®¡¿iƲmðm–ÒfHÏè£Á4¹ÿ¤0¦*Ö»$âœ-¯›iï/p7ՎýíñSµÇæzb”3œw]Ÿ `qŠ}uì£J¢ãH·ŠÏ֐„Ë³BõÍ$¿”üy~z2õVò9}Y9 Ù àó¢æè͹?GǪY!Šî£>'P»‰P– +qä]!'ñùå ¿âÄÑn½FÒûÙöïA»¸­GŒ‹>éÁÀÙ¦äцȂ_×}§6}Äö£åÊ3àã7«ˆ®ƒ¦qk/7éێ֢ãÇ,åŸëê;NBÓïuÏgêÔjï °T‹ 4ÅՊÆó3쏧)Àÿ„äg˜æz%‘V¸¡'1õ\HÑéØë IW³EÀ 6¨ +‹WnðñEW0çåԇ*‚û…VŽ9›¿j{ zŒ¾‰ÇiYHä¿F1Lqaº/a‚„f$èK&¥ç*ûLÌ>ûçO®­–Uƒ j`ƒeÐN(Ò9ÞM,€ñ<‘ÙÆ6;Éx¢ˆüþ¦è·íñ73 :ðeY?RÊۚS£2æ*"ÃÛDVU=.¼ +Mýd .$C!ièïåYnŒµTû q¢'ÑW…‚¤‰ÚÜ>“l³0ªà'¦ã $"<߄•¥â{Ke Ycn¿Í+Ñ¿V¥•Z®c›=€;/Ε/²Kp“u4½SÀ2¬4*â¡Òký, ê‚øîEýBdèpæ­^—â×G÷#ëAR!bN½ž§OWkçAStVEë AÂ¥¨Ö@bkª‘>|ÓÎèôY`iîä¦)ú—æ ›»Ø$²{ؼ…ÍÛ،«,í}Üç;Dâ,¶Túv¦tßÃæ}l4{`³× mÄYí}”›.½T=l~ŽÍÇ¥⇁¥÷ ö¶ŽÛ’<ç%wBÚ¸h‚fBƋ)Ò$xÀƒ'§ › OÉÜ((A’©d™7‡T¯@A~ƒØÍFĶ—€öf%»‰µ1gñNAd;ÄߛؾäïÆ%m‚q•¸'NM\ƒþYˆ+¾†ÄÞQ‹’ø³ÄÀC†Ÿ×f"6‘ Fz Ón#$ʁÆdW˜i¼Æ€i/01€&€œŽ]E€0ÚB:T4'AɒH˜ ×‰g=¤ƒ¶¾7SŠ¢«²I$D²Çð7ˆ£EÆ^b~;PîàœímI‹àc~ï„%ªª@³gM]doñàǓåRäƒÚï_  ý¥[i-`lûp˜ +k+ԀýHóƃ%¤Êpî!}G×wRò™ßõÒãÄ´HáXÿ÷,W/›naïu–M1×âf\5I­JÕäµøåª&Éy +–®š($|ª¢©W­5S¯s‹`ÑKnAtSRàÌ¥@©@ÆOULå÷©ŠÉxðé¤?WLñ¯>ÔöS>uŠÀE*¦4F‰ÉŠ©èü"±Rt£6TãÖœ?²<4ó“Iygÿ_$ý§IOÿåERbÉÒû_^$¥?~ûnþOÖjíÙ +endstream +endobj +102 0 obj +<< +/R8 149 0 R +/R14 151 0 R +/R16 152 0 R +/R20 154 0 R +/R29 158 0 R +/R50 161 0 R +/R69 163 0 R +/R82 169 0 R +/R141 171 0 R +>> +endobj +103 0 obj +<< +/R7 156 0 R +>> +endobj +104 0 obj +<< +/Filter [/FlateDecode] +/Length 2195 +>> +stream +xœí[o\EOMÒ¤lQiK¡ô¾4”žCÙÓ¹_^x@úôIˆª¼ÑŠDøÿöÜìÝ3›li €H^,Ç·±=öœýe)&©–ÿ+ðÝ«Åó~ù㯋„^¾øoN\ü²“Æ¿„àðw¯–_žÀÆ°6'?,Äc1­É¥WK¯ÕdÂòäÕâÛá£q%&­¼÷v¸<êIëÔpg\IØæÜoÈw9ÙàT.á.ãƒa¸;*`'®"6Z/€‚ßWjòB[=\Õ¤½Ó~¸—i‘~¸?®ôä©*Y™%‚„ì¬DÚ÷ q{ù3C£ÁY†kÈÍët£°2¦ç~cÁ” -æMAʈú€°’@/¼ÇŸŒ+3E…[WâIa[a¬¢bòøf±NU—Ù&qÅòh´>Í[DЌ xɂÐCâ~0Æ –½Zsg–”5*Ë]syüßÉW £ôd†ÑÉÿ!p²oµU‚Õ®åmäH¢ÜoÐMZf”ÕA!€ÔªcˆtD VU…•4“tY#TY…$‹ß+,)üXð0l•š¨y ó{·ž ¥ñ&L.`Œ›ÂðÙY£ÁË/O“FQ€‡ÑN^pyŽ%­öäÎ9Ž2N^ +ËÁt¾Á;Šþs²øf.ZÚhÔ$š¥Yž~¿ø¡ ­XCž_'T\Æ):*^Q­°brKH?ùi¡¤ƒ4ó92 + Mݯ“`kŒ€¡RN +¬ØOîŽ:ˆB Q…‡ójÈKX¬Þ·!wà•ŽÃ”Ö۟¿ëª°•à0ÆYÈç,ñYB2zŒZðrÆz8¼âYŸ‚;ƒ31˜áF:†ˆgv+‚×P>îÑúu%„¢ä ئ ´v`iV/¨¦xJCýýzqòÙ·˜MâN'•>i' ) Q‘"$$÷T<|CC¬Ñ2D¹‚Òâ•ÞoË· à@‘¶Á3JZV žŠÆKÍ·€hé@zw?#e:Ý ^ »W,‘¶%׶=EaÎå8AGXÕ@9ÉeòéZ,0€mûÍ HÔÁ¦]È ‹Ì®6& 'å¡Ä­bRS`æB —#} H'¢VMàá iSÁQ“RAh(„8*hˆ$_óæ + +ÆAa¼˜3ɨ0P¦£„ãºåOÛú° špBÆèýf5S¿œZ€´cVï“̾[ 2†A+;I!MÄ®@­£dZÝíòb<§ƒŸ à Œis4j µÜ™t1Tÿ­°ãA–#²Ú4Wˆ}J2 SVc–ÌjŒ² £&qº¾œÔ·­J0p +ÆÍQà B™€SkH^|.׊"Ï­«Ô¢ ;³70žŸAÍ'Ë-ØÒû¹”.¹÷[–ÖÄløêuøA{©‹½FØ=Â>Æ•üt@Íϊ5šùŠÌøCôJ8 ˆ#<`?¤–ðm,œ#öª„½Ïà£ÊÙ÷üºq¿I&Üߢ4Â.nZKA³«4G¨Hˆž—pv"¬Ø”T€tc¤9AýzÝg•™É¤üY+FU|Iªè9ûœSi½ŸµDÚ3é¬+"—’yÉyÒ+NT‡XuaÕóŒ’R³¼J*nÐ v+ÊÙÚ±"CËg•ñÌ(•fg§ U-ͼv_Åv2 +HMl ÿSМ–à†žÎÙví+Åä2­ÉAÌÝû(s½r¡[¯VUÝU©\¨ó{Ô±j…–ÔV¦Ûê0ä.i«a´‰ª™4’Ê™IMd.g÷0µ·¯ßüï"6:ˆý¼îÀ{2ìG]‚Coø »í +ïˆ¾©ðÕ % ÅiVØŒø°gcü(ƒ8M‹Œó¹%†IË3Øv¯Är¼pÄv,Éwy‘G¹ þ^s1S;ævn-ú`nîüë6‰â!»àuÉG~ÒÅ>!ðÓMïþíý÷”(nx­ë´;3}r‹À ¼öOvÚqW7¸$|¦[Ñ)× ¼ÓÏq+÷%Lû=g¾U·Uð3~¢óöØ¥w˜\œú³÷­4 ¨ Ù=ôƳõï돻þ_õùà0N‡fôl ~Î'ýÚÅåÑÓÛ=£MšµO¡]¬]õYëM&íÙì³².ûy“¸ÎgÞ ‡øÚ½pj¬fzìë2áX{ÎúVöFiÖ.R[v·×«²A}ódvl<+åÖn3u¦ÞO—­3}»}gQ†÷Þ¼|ác²`ƅÉŒöbÇä÷èñÿˆhop¤PÅÔ1/«à§°}^ÖÛæe@‚Ö:¾­¹É?O?¦ÊæK,Ëx¬alSQÅ[.¿­‡þ¤Ê¦ÒÞ$7^ï +«ó«G#½¸ñ¼ëT¶‹]FulŽ8·”Úô:ÓûJL^·m|oë»8¢¾ÁÔÞxtÕ½Ñ}²Ì¬Òê¾6ÌYl“ê•ßgÎìÔöÊɺªx”*,“XÖ¬U½­y_P¤´¯ò¹o½^¶¿DåŸÍ/óv‚Lašöõ8¥€)l¹ðv;1ì º×ð˜8I«$eÿÔ[tÛ4ÄÃj¬äƶgþñyvïã‰4Ùò8–[hÌ}K¿®#λÏ3‡ߑþ¼w¤ã™82>«¯Gº +Aì#ÿoJsË|֕q椏"ß¾jŸ¸"Méݏ7Ò·¼½óÿØÿJ{·5^ÿðí`â j— ­Ñ¾ÎtÞ6mÏ;ë»ÍçX]^¯õΒ䶽­³]Äjãs!ýÇù&‰YÝUz‡6´’äË9½®Û©˜ÑÝ{š”î¿øìð­)ÐÿÞO˜×MŒr 麁VMb́äôÍ_[`[̾éÛy¯¿Šlt½Å_­í¥±ì€r‹Å.{½$‹Ýݾy®·§$5ÕÝ¡uó—é—[ß,~]>Ê@ +endstream +endobj +105 0 obj +<< +/R8 149 0 R +/R29 158 0 R +/R50 161 0 R +/R82 169 0 R +/R141 171 0 R +>> +endobj +106 0 obj +<< +/R7 156 0 R +>> +endobj +107 0 obj +<< +/Filter [/FlateDecode] +/Length 2531 +>> +stream +xœíÛnÇ Ö]G†mÙnìX•u`§Ö®“³šûå5@Q èK ½ÅyJ›l ÊÿáÌÎ,¹gytä‹d»ôBp9$‡×ŽôÛ\tRÍEú­ÀÏofg¯üü×ßg=õ\ü:ûm:~2‚Â?¿™ Ã؜ÿ2]ŒAÄüMνš{­:æçof?6Û…è´òÞÛf»ÕÖ©æëv!a™ps@î²³Á©ÐÜJ«ŒJ„æI«€4®9HØh½ +B|¿]¨Î mus¯UöNû樧uFúæ¯íBw΁ª‚•Y&(@ȕ•ÈëŽn¯ßtÒ"8kCs'q3Æ:=PX Ñss`A”@-Ÿö‹‚”1雀/ôÂk0|óM»0]”Q¸±Ë",p+ŒUTͳVt>ß^¬SÕdvšpeçÑhټ藈  A±’¡;È}«|öjd$Ê,+kT –šf»ýéüŸ3£tg] +£óCàô¶Õ>T V»²)o#E"åæÝÇτ²(Zu сŽIƒEUa!M']¯ÇnRY…$‰ß=‰;~$x¶JÍÔ4†i€Ý®ž¤4ބÎe6ãºÐœ&vÖh°ò달Q঵WLÞǁ’V6Rã¿n[;/…¥`öoðΆb…¿ŸÏ~˜‰æ65‰fnæÿ™ýRVŒë넊óØE‡¥Â+¬VtΤRÒÏÿ;SÒAšù>zT*4u½RPL‚­1•²S°‹Ílî¨C€(´…Qxð׀¼•J€Âûæä¸QéØ|߃Қ²÷³W°»*la˜6ã,äs/1G˜“Ú@\HrÃÜPBx墢 ä*ˆ9E$8o ÝNn +˜Éc½ô é2t`äóÍÎ_þØ,r VBíԝvÂøæ +Q<„„„Ò‚2ÃFV”g¨L+åy^ª‡ ©&׈ý ‹½Åb ‡ Ä>k!¹e;ma}Z^ÐGqßIöqBÉÐÈva;#<`¿ÁÂsB¾j'w‘Û&áÓQóA˜<ìKåŽQY¾–sÌR KæN‡N˜Þ¢_Ú²É&ÖÙ=Rç@µ†Hƒf$!7L:C„ÚŽî3Ô§[>Nf‘ZCH·d=@Çi18¨Ùu¬¨Ð36zMùùëô#ªàwÔäIê\PŽ."ª üú]¨Âɘe}Xß3UN6†ÏD;(xXQ*ۜ¡U4^&¦YdXÿp9;S¤$:óü ˆë{›[G%&%â{I&y$…²²ƒP+QžÝ<Ú5F#Õðó)ò!îºú†v9B”‰„%u”5ð9²uNyÄåÈÖ ÈÉ$ÜQ÷QØ1fEˆÀ$÷ùêŒEªÉ…½…zE²<³©™«N©he_F"t’Ô¾SQ¾/ñéã£Ë‡vc•",ŠÚÑÓ&1xˆjsÉ.‘SVë¡ÔƒÞØ!¡|mãVÒ +ŽŽ^çÆTúÎf.tQçÛЙ†nD‘;,éî@ºÝ:Èfpÿ¤y%½æ@xîãÒHÒ\{‚tԲŠG©IoM +¡¡¢ÝNØè Ä6ûïN¦º<€»…à.K°ƒà#Ùe{î#˜ü_áƒ%% ÅE¯°…¶ôÝDžqžªYÀþ"4tž!xÂ#(<êUƒÐôU‚XbN[QÕh™£ùû¯ ¹K‘ËàûZ,Õ Æb€lɯ$~íK{Ÿ¥=0êÜCðkVB3Ã.d‡,ÅóI˜xgþ “O&×âú¯q=- pç~=Íçæ|[Á—4p™ÓŠË÷¦¾ÿìái¥œ0Œõiû¦“*DCÁ æMO+`)87vÒªÉÉÎ~.F?>šûÝ¢, ;–“É{Ü¿WÊømâ.@õaodGi¨èµqyTT¾³ç·+šÁÂÁÔËKÌP>žr¼_ ”ñؤ€wtp÷v¡¹›,×G%!p„ò–N^†Êf„’¿† +x!;ô]'({tVRìcŠ ©àr«ö;šxÔ1È"¼ 7(;¶ Äòˆù1NWå>,Yög„ö€Žd†es2&Ĕä€à¤J:Lf·—±¨†Z¨8 ißÓ üp‹Œ±î¢•ÈÌènæQ ·6Hfµbµ¤/¼½bvHŸ/*’“a‘G„äkÿÔ±ÈS5i ›„Öun®*¼|0En?¨ºÊ¼KÅX¦¶ï:ïŠP[­!H2$Â+.<à(Éw\Do냠uŠ¦“yÑ+ææ/"sñCÇñÅ¿°Pt`£Ënþ㠍mSÇ Ss‡ŸHq, %™å!+^ûcÿOMÙJz…”Ìó)Yy âl,m¤£'¤äS‚DbÏ#-óc>%ioèiB.¿?淝õ ñòhr §O=內WæšÞxØéSÇNÀöYڏøòÛx:]—Þx$NÉsÏ>‚ŸäÝfÁÖ6 +Á'Ü; oÆO&#^;«ÉvÁƒ‘#™Ù2y$ïv/¹Áð ?þŒ<4Ð篵6ýò*föJíl“ ߌ׾c­K@s Öý¢ûÜÈþ¤Ï‘Xƒ>Á†]·Ï®#XûÙ&©C¬Gð”-ä\zÂêóEø›øÂ#xÊFÁ›¼¦é'pðdK.9ՐžyÆòºËÒ gçøaöÎ2¯â +endstream +endobj +108 0 obj +<< +/R8 149 0 R +/R14 151 0 R +/R29 158 0 R +/R50 161 0 R +/R82 169 0 R +/R141 171 0 R +/R153 172 0 R +>> +endobj +109 0 obj +<< +/R7 156 0 R +>> +endobj +110 0 obj +<< +/Filter [/FlateDecode] +/Length 2768 +>> +stream +xœí\Ýo·G|’lŸƒÄµS;¶lëÖñžÝ£ù5üèc¢@їz‹û”6 +¸@Üÿèpw¹3{7§½“Y1d¿ ¸äp–ó›ß É=ý²ÐÊ؅.ÿ«ðãûùÛïãâçÿÍÛæÅ÷ë…?Ï™'åÊ¿¶Ë?¾_ü妪9ýi®UÎIçö™YD»ˆÎ*Ÿ§ïç?4_/WZ9c„æpé”Ölód¹28,¢8ïb£‚lj>+£|LV§æéÒ¢:ãCs¯´fˆ{°Î–+«¢vàšûK«\ .6Ç]ßàMlž-WN…€“T´©ÊÚ½œdg#ÚqÏmïþ˚‹)¤æ‹¢Í{nè&{fçlPÁŒ +_tƒ’1¹Øƒ/OZ1êèpá›?.W^e“uñ²P[¯ØfÛ|³Ô*fÔÛMl]2f-mý›gïLóm7D'Ç:ô«8éi?Xf…£-WÖëmNÀ—æpùÏӿϽu +BÑé¿8ÝÚº˜ê àBÿR2o¤ž³Az@YϺ@)á¬ÕƔÚX,XUVÆ+:;n“mÊÉ0üÞaH<"ø1ð°Ö:kۛc˜ìóêl4>ú¤B+âË•šWEx‡«üîCkQÖåf *ڄKÞáÀ0Í-ùâ¿[.MVÑhàbëߤ~þz:ÿnŽK´€ìígô ¿øðïùO}#èQã4OؼÈ*¢Šh‰+@«à Uàì§ÿ™[0Ìb‚®©Mo-’I‚Š|Qc”Å·˜µË]JˆB@fÑ_Cãg…@ë›ßcì ­ËÍ£N4àûwû½ñf˜må5® ¾M_(³âÁኂ7‚ pñO$žˆ¢‡]Oчxâ=I<)®DÚð€‘‚­9 ûVôü9‰oE]OH¼Kâ_W1£5 ˆÄŒ>ÿÇüôõ~^¿Câ] Tù^÷6 ßásÖãÃðf‰ZDMâ‘(ÎDd½0×ËïYt&ƒÀ ëkٜáÂÏ]…¨¦Bë·á¹{ÔªHt$2×2 +gN< ñPÔp}©–ùЉ­iÄÅU<"ñ€ÄCQم}|“M÷2‚e‰Svü}ÑÅZŽcOâìÆÝׅŠ?–»™=7ž¿:ÏOrùÅ ü±8ÃÀ­N4¸íáƒ?'ÞL9ž•TÇ$Š}gâW³ë‚Kˆó[BÈßÄùÕùXNèòž÷&¡ÿæÝ-'ôw¢îf9XvìMÿä³ø$®YÿJô;aŽµ$>½>ÁýQiyåXìðl*úYD‰Ên¨ü#¸˜ÞÉHìî1»Çø³Ø•Gñ±‹â©Äýn)º{çcӐ­tl +.îpH=ga´ðš;©¿‡G·~Ai_ob~W.7“öP˜R+“R0e)´JÁçTîևÖ]ßî¶t­Có…pÕÊíÝbe¢‚þ¦ïÖéh´ Â< ñ1‰Ï—Ak¥sì&´z˜Ï[¥“1k÷œvx‚26Ú£BêÌùÃÒhåC²A婐ƒQÙ:mʵ¦WΝÊýI=êf]¶]½/wÓ^YmC‚Q> ¼ã‰_/W ŒÓ9”h¯NØøÃ"„À4=Y:å GWn§k#=îíô8ú+šH2© É*k“n/ëÑzí’+0´è#@|wWá>"Ë÷Zkz¸j6`ßÛÒ­®Ñ çʋ•Åõ.’««XYõ²½.W/³í^OØl×o·™×¹2÷zÿâÖ%î—nÝcûÑF•h ™/ÙjÓÂ>À3аVÉ/—æà§)R¹Ó…ˆ u­lÆRÔM@®°j2` !XW>õš­M&fíKɅà×ÞNÁQ:@æË|L–Rãv¥Ý‹*²t˜Þ!˜²ä{KdÚª“ÁkÐHðz³´È)®—‰9Ö74#pÉËÆ|Å07£·½Ý~çI[N% §©\:҂L%0I%¶€Œë#^eI!ö’Cïp˵ÊFdO]Ù +2wˆÁ<.Ìú-¾(ر ÕùT?¶ÙÑúd°áæ;0 +‚o?°ª*WõkÊ_,šžSÍ!R€¸$ ŝ NÅhú  DÐëÖÒò8*£+jxTž¬•HmMÇ*«m¡º-K¸P¾_‚­Y"Z|ålxWf0› A1½WtÑã—g§þIn MŒ%®_>áÎBq È/q"W“¤optÐÙْ"ç1D˪ý69cSó È@4þq[«:gã ºfÑ}/7èήt2TJ¹€¡ _ÄIò5|P¤²X3Ëhivã3±Öré/ŸÙ$qÛÀòX,«¯1kûM”L6"Dî2"ÄMNÀR‚Ý^ª§â pu§áºÂ½ ƪ¿xý3h¢$À椸b•#£Ù§£<]UÉ%¡•yxEI ’ê/6fKܯ¼GPƒ“u>”Þt¬~4¼Hb¡¶¹I*Ÿ0oV4¥uTÑð|V¾^51P>Û ÍsT"i’ŸYn&•Òþîå+dtØDLÜDfͤ6¦’MÄR9[fóTeMS1­o ·çÉ(ÌK, 2‘A‹Y͑ÛR1åœ(b‹Ãƒ³*Ø$#“•uñ¬SŒŠ‰s7wGâÕW$ʟ°ìËÁ¼d§„ùé0‚-ÆÆwƒ:,`’32ÉÉ̶˥׺soÎ/қߗç>g³¥«¤^¶y"ÎåÝÁ^ÙÊ:t¯K¢yÝòZ¬swÛC×ÕmñŽ”R$Y¦ßtD!a¾R£=E¯|à`yùÎ:)+¥ûÎ'e¼L¤çu3?JÔHÃeë&ön$±a4$ó\ôH[Úú±Áânt‚NFÄ2ˆ†“J)­týp_r êð° Õ¶â¯sKùYˆ\þ†¤Àp½G z<"ÈömüæOºÃßA|+)ö=¾$ÚeÐf­#º¤RḫÏÙʊ»>±@™Ìçl‚sHãeîKE9ü¤8fúyÈÓÞMÚ¦Ñ~Ž O”¦^ZÜtoì¿ ÜYÔðð\yÜÆd_Òf£V1XaØíaKµÆ4²¿ªÙ?¦ÞNû@½b®?ÅÉÄ|¡“Ò³#¶þ`ï}"n\ß\]Èg0Ùm=3žKD*¥µ©Ý&SyÞ ­ã­ ­úϤuø8HÏ|é‹©)u|÷C[¯¢E«04k¥”ò°SØ!H«ª3‚´Syý‚4SÊ p—ß?ío‡ øZé·Wþªq'bXΏ"œÙÎE:}EWRߖáÎz1®ëìÎ>Pä™Ñ.Ë} šäØyÈá(§¶iJú֝%(ù×f¬õ2~x¶oZbáÑG¾é–“É7S×ҘÙ:…®]fï~ùpöA9®ö³[6Ú ‹Ì8ñœâòôē²}ŽŸ.óx¬Û>9¥C¬IIrÝíӟ 箒¿&²„‹˜wˁ*EÊ1EJ?Ȑãç¾){ÝXì5Y J4Ì1 #¯&# Y#*̬[Kês9IËg`â™úÖÊms‚µjsÓÂm'g”Nšƒ›Àrí4à ªö¡˜aЯÇ1i<Ñ­áä7™áVðp_{Ô[lr¹BÔl³v;!ø£h•€½C øŠ.'Ö) å˜øöcℜJ«ö+Fm|¶"—™7§‰r7Ú¿RòÝüÿ2Äl" +endstream +endobj +111 0 obj +<< +/R8 149 0 R +/R20 154 0 R +/R29 158 0 R +/R82 169 0 R +/R141 171 0 R +/R153 172 0 R +/R160 173 0 R +>> +endobj +112 0 obj +<< +/R7 156 0 R +>> +endobj +113 0 obj +<< +/Filter [/FlateDecode] +/Length 3679 +>> +stream +xœí\ݏ]µ»›ÝÍABR؅Ü ÷‚®ãïÒ§JU¥Š¢}#}¢©H¤ÿ¿Ôñ9¶gÎ9söÜýŠR +<`|Æã±=ó›ñxîþº’Bé•ÌÿÖÆ?Ÿ¼xV?ýç¤ë^½ü[i¼þéäד(Lþ§ë í~^ýåÆ°9ÿñDŠ”¢LÝ7µ +zŒ6®Î>ù~ý‡ÍV +£Cn}gc„”ÎëõG›­‚ašû­ó.t +½Žëwò(¢–qýñF;eýú^îM.H  Ä7[-‚4άïo´0Á›°>íi½Ua}¶Ùá=LREª2ë +˜dg!ºqŸ4n¯~!ÝYŠè‹ë÷27k7Â©d‰œû¥ü´•JYX|éšA¿þ|³µ"©$ýPˆ/º)p+ŒuÒëÏ6R„|ûi½®[æÚ¬¹¯¬«Ñù?Aqú½5!ÖœñeQÁ%ډ”û­õ?ʺA1¬UƘ<Ș%ØV¶Ê +å{9Ž²È:¦¨ˆþM–¼Út”Êi:R2¸I‡_ïHò’G2ñy~ÁƒìîF.s áë^)‹#3µtŸT#ÃÇ¡gáÄLôAË? <¸±Gۖé·Z·]ÌGO6*«&~֜,7Î쮸yLŠÒ†õ—™¥ÑÖÑ1Ï9Å!;”ó˜ÊF!Ó`ˆ€.’Þx¦^ס?Üo»áë Ø¡‡›ï<Ä­-]*v6„ëîÆ®[ÀGâlÊúJw‚-}/W”8ët­Déo*÷réK’&RÝçB>À…"%¹…£Îûœ2`å`ËF ]lù8/^©:0rèe…Ò1YÚÜsŽÞ¦˜KŸ:Z—s®I]¡Í/“Òê§!”ºêØ7yLå³+1ވàS  Ûøoȅ3}m˝Rۂ £Î9S¡a™…%¼ˆçv)ÕcÐ&Wå’!Àуjçgáq?Kï’å/š“ðE)J‰Œ:·—·ÌNÔ8å…U¢¬7à½çUtû3èó2M÷£no”&—•Õ}¼²"!ë4XÔ/þ3£cK·Ì‹Ð-Gp½ÌRÕ?¦N !ˆ+õç[Píɓ›óP³ù“=k™À8ɔL®ð™”c?ò˜ +@Ujddc2%2BýÆ!ÄÛpy8îŠÂCãÎv²àÁ';8Ê®b“ WPã©åe£Œú¢¤ÚPuãš©±B|†dõÖNX{‘Ï@—Pü@ç(ˆ{¸—«|ƒ±¾«Ý,ß ©bô*p>E x1>%û’mW1M¬ês ÇX +ïËÂz¿À½Wfàíö¨ Røà X÷ûy@¯!j¾« Õ©&;Í) î¦Î|Œi™»Ø¤¹Š{£MÉf¼n¹’%rlæãmî³éOù„‰šfIœœ«k×Ñd—ŸËÚWݑªä3Š´JßÙÞã¥Þ=ì}†ÕÖùþÙJçO µÌچݴ}„$ϱ”|›± ~›Ø+ G7^D¯H`óA)U¯õ}Õó*ˆºµw¶ô»4 aÀj'Ak†ÕüԑÀråáö€CwB9©Â2™hI‹8F¬ZæT Ádb"0ØèD#èÆB_÷Ü&“^ÔsÞ °‰dÉ_cQ9'}¡…Îx—‚úÞ çì´î„½LN}D¹PF4[’pQñö̕· š.tq Ú†í¶¼ì11]žNš]™h"ÿ´ ¯î|ËÓ qž1IØÁDp·ö"ä¹çÁüÃ$ìd>…”ÌpµÛ7é¨8½ÿN$™^41[Ö:âskÅé@*ç,DGÜåžÜ .Æ÷—&jÚàê0}XåW}/Ü<öÑÈã#}“.3Íÿ ÿ>²„Ò‹’µ%ûsÊ6É°Þ‚U3lùS%Erˆˆ{yÆAÁ¸”¾?f˅ÒAÄWגFçsŽW:>ïÉߣØ{ÚéjŠÿ¬ü±“ 3¹‘&—* ¦<‡Ey&ð³„ÑÊÛJ!¤Wy’°*~ÚùÄgJ4aÁÙwºþ…ªIH/ymÐÅèRü-Ü|4úۙ¤eÉË>|C+¤7'f%dëE˜¤>øÙLÉúaÁ>{lÔ-nD°&8ê`ñû.U3eW9ûÃË[¨•$ÀùSK»0<e7æ²]u†Ün¡¼ÈUò#h•ü.çªê¦³ +‚7¥ÅçÁ¹´6íœßb¾ÏyûJ:qfYæœYõÂõ<´ôëÖÒKV¨¹«ÀuÀFМ·œ}ȟÝÞÏ*Çç¶ÂE}KƒœáRՑ'H1 ûc`~“RXo&`JD&ø ˜y%ìU§5+¾(‚½Ìî`Lu¶f™ö˜™a‰Œ™ÄJvþV\Ç°çpcµÁ/ù›ó}±N€/™ã­ëóŒpÁé¨Ú‹µʆQ‚2gÁˆ4s•$Dë^¼ÔÓtà7’nYÏG}ÊúPK†ró16ï`óSl>Àæ16ßÅæClÞg ‡}vDD^J!Sšd’*z5¸|ô0¼$ º8(ràëVr£ +— „0ÙìEXpØg–rGKß¿`AI—ïá•éŽ"¯p£[bÉ×Ìޓ»ïsV2ºü””û“¹…Ë^a"]ÿBH¸ràrÊ¢«AoEPƒ»oaObًàü’Ì|AR›ô}è4N;swgËbélµüä G…ûåûòsÎÓdC×Üïys͓|p6Õþxý¤ƒ»F0W„j²å;ñàÈ ·ŒÆh!ùÍÅðdѲæJ^ÛojHŠ­R`K…–& ×s2×e•®ûJŠnà¡M~¤‘›ñåŽü5òÌ÷6éûâ/l÷}¶÷ûªøpðZÙë^XÒ=3ïҕ6 ýå¡wð]š¼Øîã 4ûØL:YÒöŠ ƒ¼¾&µ‡Ï*ÍR”"M˜¼+çü l˛ïèwºgVX +Ïÿ$†ô’¿oq4x&¾øwägwYZÂ옥e^¥›è;¼Jç¿b&Ù&Á.Ë"e"·>¡‘™O+A}BS€íÁ}…Ûß͝G´sÜí ÙGbPü/1ˆñ}SÿÖ#êh†7×̛x;ÍT›‘{Ÿbs=ê¯ÆGvÙCÙYaçË(ž±VCŽøkÖ -ùõ,9XÉöî³ËxÇr{6y»Übó”¥%½f÷§Ò¾;ù/‰ñôi +endstream +endobj +114 0 obj +<< +/R8 149 0 R +/R14 151 0 R +/R20 154 0 R +/R29 158 0 R +/R50 161 0 R +/R82 169 0 R +/R141 171 0 R +/R153 172 0 R +>> +endobj +115 0 obj +<< +/R7 156 0 R +>> +endobj +116 0 obj +<< +/Filter [/FlateDecode] +/Length 1829 +>> +stream +xœí\[oGäBb é%…4‰ mمx²3;׶ôB[Uªúò[Ó'Z*Q úÿ¥Î®w}>ÃIÖ&kÇ!K^>gÎ\¾s›ËòªŸ ©úYñWƒg/{GO]ÿŽ²¸ÿô× +¼~Ñ{Õó"/þ•ˆŸ½ì?Ɔ¾Å Ÿ÷2‚ÏBù›ì;Õw¹Ú÷‡/{$Ÿ¦ƒLäÊ9g’µ4Yf¬Jn§›¹Wƅ›±Po•O®­´ó*óɝTEqRÛäzQŒËb ¨¼”pYnòd+U"w6wÉÕÒ%Ÿ¥ƒ\X;©‡ÉZXY¡’;™ze»½±´ã¡¸…·Æøäf!Mkcóq #ƒ†q®ŒEÀ h”û£F^ÊPŒ'N"þRB—¹<.|òE:Ð"ȐÙÉA|Yva¢´J° +*¹›f…(wÔ­Uõ’™q¯EY5ó s™|5j’ù*T«db§ë$}5 "þìÔÄ"¡°r°ZopiÖÒ?‡¿õ´Ê…±… ÿŠŠ3ZÛÜùº“ÛjRÎ,¤š+c´M?CÍz¼½ÖcôÁÆ1#ÔCH-¤ãZ1d僗 ¿ ‰ë¤~ 'ÈïB@]ASÖ&”±†ãÞZˆ§Ùí“ Çuà§XW\.”÷w;”5èýîSé>ÁC‚W/ñ¡Võ‰UŸ0ݽ7bC\ïѳï<$Ç +«Ô[ÇæÂØ?ËYáDéy±Ù%’Ó Î¸ÀRIpªÀ7äZ¬4þ¨ð̇ +-˜l£q\!(Âõ×[a þ½­Ró#y6“…Ð lB˜æÛ$–ϨtÓB®±uWØ.Ù.øޖÕx' +œ+|J5f0,ভcð-ˆŽöÂà<ùä ¢)ìo;ÞæÍۛk@¬AXå/a:ªebpŽç +nB:‚E¿U‡³ºymoQ)å #kÓtGÛà<5ƒ?è®N8Іvð<Å„d8O©ï2ìS~äہžÀ³ÁÂ¥}±0! =[x˜"Xèy݋„Å[phN‰€¸{¬‰ó»Ôß>Åû‡ë³Íº—‡‹Òþ´ÿ€K¼¿f«¢ÉŸ]Iê)>!øÍe{šØ*ïp ÄgeÀ½´™üŸñIêä{Å÷™øYÄ]jÖ)ÉO#ø÷o'՝堓¿  £H.ŸÔ ØáÀ`ó +êwˆÍ˜·.qšÜxv?åùҜµ\¶óŒF½)–ÉF7Õ¦Nðæ0… 0º +ÖÀûíÓ.„úPð2§UÀbãÕ,ÿE$”þÄ +MuùC´%©—Y1à(´?Piüèg–ûB·Ý-œ¼Á7F||ƒR8bƒ˜Ê¯ @;ósׇ‰÷»_ƒðï= l«ã6ï—[ Ȃ¬>l„l˜ß¡<¼ +ÍE¾T†>A,ä%7æ²;\² ò"àÈû}`0`¦®È®ÀÜfù¾Ë³ÂÛ[·ë= ÝHá[:ÓUÙÛ²{ððÈÏOû¨¢»$|§´6ŽYÏLñ…ÿXÿ"&ë÷§ÜÞî„'ÙÇ)Q¼Apê€^j8sÈÉ AÈ°×YÁœÂ>? +Ið²8þ¨žôþŸNj +endstream +endobj +117 0 obj +<< +/R8 149 0 R +/R29 158 0 R +/R141 171 0 R +>> +endobj +118 0 obj +<< +/R7 156 0 R +>> +endobj +119 0 obj +<< +/Filter [/FlateDecode] +/Length 2895 +>> +stream +xœí\Ýo·‡õåød¸¶•Ö²­‹[G{Mâ÷G€¼( +}‰¡7»Oi € Äýÿw—;³ºYí®t'7m­‚KÉáï7œòüóR +¥—2ÿ•Â÷ïoÂòÇ-êêå›?·…?.~^Daò¿º‚–¿¿üã%tŒKsùÃBŠ”¢Lõ7µ zŒ6./ß/ÞV¿^­¥0:„àªÃ•R:¯«ß¬Ö +º(îw• R¸èu¬îå^6D-cõl¥Aœ²¾:εÉ -H㧫µAgªÇ+-Lð&T§M[oU¨ž¯ÖFxƒ”)HU„Õ Z 0ÈäIÔý^tÒÞý“TçYDï\¬eiÖ:oºN%Kæ¹ß‰ “ÀY¾l:E¥Rž,¾ÔÅ ƒÅW¿[­­H*IߟÄëzÒZÁ:éêÕJŠ@n3¬×Ee®5×µ+O֨ꫦ‹Œ†4hµä`Ð#”~°J>ÝSVOÖêUÍáêo—YXm„óF—à4º5!–œñí¢‚K´[îw¥§ø™´, +ŠF-sŒÉÃó Öe +ke…òÍ<îç)똢"øý„ ñáGÀCj˨ukŠa +°‡eg RÙ`£ðuãE¬Î³8g hù݇zFIZ(W+'‚Ž òZ9Uía‘*ÿÝj¥’J:Z¬÷7ïb«…?].¾[€Š–.Y½„íÒ.?ücñC[éd¯rÜNè´L"y4A£­pRx›MŒ~ùÓB+4 šªlhJ­Á˜DW0 UJhXÅ~­îdb:@a’ö««¼—M€“2„ê3àl£6©²MQ9Û®ýâr¦mm%èVã}6c>ÉʍҺ#%,È÷ ½M1s»«}Ú´m0À < ¿ʪn(«–Öò‚pº0ælƒ³ª:kŠ^¹¼æRÜ_y˜ L¡‘§%êÉ +iA¯}5êZ¨`8ác3ÚqÆn’ ]X×ڃqv1« æœ÷¤t”KRûzZ¥ágy© ¤Ʊ“Ò̼Æ¥`€¸ðÙû¨iwù"ïTŠö„ÊÛ넁ý¡#í£( Ž'”‘Àeô7(7; Q©ÄÏd"Ÿâ蜠(#l¤ ɒÈäÏ8I§¸N +ͳWN«ê·+8--,¤Z×Çi4Jׇ‹›à´®–]M~¤s€~S«DZk«¯ÁlZïᦠ¡3°Þ9QùÐûžQ¥cN œ“‚¼öp,Ügð ÔñðÙ.×ÀXÛt~€xvb‰Å#,®±xʶ=BgEͪ!`Ij×4xÞáƒ|æ!ÿËÆéßY¡5I}–"§JEñ¨Ñ+‚š!§ÃTi/t¶»Ó=„é>‚ìk,ú1ðmwSÂ}Ô +o/Yt!ŒY ¡Ì›àŒŸÇ HÓf{9>œ#v¾Ê½¶Î‘>'ܐóA Wöåʆ^`1±8(òéÁ[¤³‡hƒÀžÏã¤-.SƒQ×ÉE7ŽX–ᬚö8ޑN(Ÿpý¦X­×CyIÔåÀ÷Ö}fô¶K;𸵛°] †®,°hþçö‹ÌÍñªÈ Ä­8îLÊ®¦e¶ÎDp¸Ãu[ç-ì:ݹ}Ü9bC_°ööÆVxævÿG[ÚWPçe2¢ØTé!f«A¯…×Í4ÄžÙ£§?9J ˜¹ ؝Ï9×JޞàwֈrÒ±K=ó ¢vƒb¾ÁÏœ1]álí€% RŠÿuer,èëXdÝ~[«6™>=A< ߑâûaFrò°jÁ7r`>âA; ‘r!¡ÑâO®ïh­Tš¡¤b÷}ÜñæšÚ<›’ +}p–¦ˆŠ×ìqÊeWIw‹«ýE}ËbLϔS´d 2å4 K2êu}X K¬¦ûD*’†<Ä®Á¦Öó½j«’š6âH“µ7{¿íŸp=’´í:–´ÓNÁ’­ ìf:»£Íðì±E1—gDudKI‘C,‡’¤óÇy·y1‡vŒ“Éö!•ÄÊNfÚm@sÊn-‰z¿ – 8^añ‹Çl`= =!wÔE͆éÚ¨¹° tn›Øœ?„"3®q§ƒì‚éfãóPgƒ¼‰ê Öü±ôô¿ +àþvi¡›ŽäðÇ°}_ÑI'œHY«Õó¥Ûî3ì÷@àÜ +%Ti8!¢h[îœ$›a@Úî•IC*f¡;àùgÀdßú¯‹Ëß¿-±n +qÔ{Ú GõM0ðç©Ý)>‚û3Ös¼4õ^n¤ $ÞéFAևr¨æâçX<ÄâK, +,^`ÑaÑ`ñWXü²}O’6¶Â{¡tp˜a¿éda§c&eÿE‰<#îjh¬F¢¹C™$O|Æb¿æšk™üS”^~um©“u®ü9›{ë™Â"j(ûR¾oÏ%BYlq£ë5˜ý+ &ØõҔ›§§Š¤hÚpàÔž^N©ôr:ss‰Í>@çm¤ï·oÓ/X –†¼°-]Á¬•Q°Ÿ£N7¡ÿ*’ˆ„ci@R!ü-+{ùBLÉ|–u‘$#yô°~¬¯Oícý&DŽC"ãKuÞ.ñzè'-Ûï¬#9vo²Ï°+©ÌÁ}È´êe…kZ…GTÇ«+IMæx]—ÛÎ1'IÌ.ÔÈÏÔû* +َØX"±TáCqB«ÙïËîåõ zpìÙ(ì&†¸tí»eö/)î$Ûs ¢mé6o£X[Âk€K«•ñF„ 6q©mûK(˜ÃåOòׯ–ŵÊ@ý„u—z¯ä9OÿéÝ sÄkç5ÆgX®{°5´y¤û-sî|âddxîB ùu†‰½wÜ&(Y,³X؛€øìöéÆ@øh`—/6аØ10¹Ýšµ6 Ë œAù»"ú!³{{ qô£¶Ò`‚çXšü¥ýsgDÀÈsþ¸âõÂ/±çU^û}ÖU8£+º›Ïh˜Àâ3߉óîcÓùN¯´{Ü9Dî–b‰7ðH…°Ÿü„%°%!,áùَ¹k½É¾ ï¾ïŒ»ÌWÒ¤›3L=¶MÉu.›!Ó&¤ñ§iE~«c ýñ×Ú¤²sòùõõ¶7`譧ɃªÔ3ÖW=ï®kCè.1؛®þ^ä^ýõæv˜î`nWçåPð¼ãŸCð?aÆDŽß`rü0“žßdJeÁ¹æ÷Æõÿ¦ñÝâßß>@ +endstream +endobj +120 0 obj +<< +/R8 149 0 R +/R20 154 0 R +/R29 158 0 R +/R82 169 0 R +/R141 171 0 R +/R153 172 0 R +/R160 173 0 R +>> +endobj +121 0 obj +<< +/R7 156 0 R +>> +endobj +122 0 obj +<< +/Filter [/FlateDecode] +/Length 3109 +>> +stream +xœÍ\ëo·‡­‡íSàøY'R\]º¾ks ߏ¶ù’¢PôK}‹û)m°¸ÿ?Ðár¹3{;{»w’X€AqÉápø›‡¤~^J¡ôRæŸZøáÝâËïÂò§ÿ-šêåwß´…?-~^Daò¿¦‚–x·üú +:Æ%¹úq!EJQ¦æ›Z½ F —Wï߯>Yo¤0:„àV'k#¤t^¯>]ot P<ê*@¥pÑ븺“{ÙµŒ«óµrÊúÕY®M.HhA?Yo´Ò8³z´ÖÂoÂꢴõV…ÕgëÞà •©*±¦AK™ÍDÓïeGíí{R¹ˆÞ¹¸z˜©Yë¼éZ8•,áó¨#A˜@.[:E¥Ræ&_šbÁ€àW¿_o¬H*Ißgâu3„j-aôêÕZŠ€nÖë*2׍šëڙ'kÔꥋŒ†4h¥ä`ÐS¤~¼N>Ý%Ö0kuŠŽŠædý¯«,¬6Âù £«pŠlMˆug|;©à­Ä–G]é ~&-«€b„Q+1yà1s°©,l”Ê>îe–uLQüÞ'H`°] Y#´· ¬€Dç|Ö2(Ií³iéÆ'”>ë%#a'ŽÐ9"C²Ü“‰’â$@Ú" Ð×Éeè S`˜’Ò ÔMšÌÿ)7•=„FzaSò°ÂH X3* íᓠUUFÅ괐=ö[¦³A¿·6 š·u¬7Ùígš…èDÁ…¦ÌW‰â„‰˜ñ3¡Ó“]ýÎKHëôõÚGÓéTOÃ;­Ãbˬ^ ‚Ÿ¡F±šü9%/ØÚ/°ø‹Çl‘mƒÅ,~Ív›gAŠ/)&„@| ¸§£:d ¾Ÿá"r„ˆ~q°ÁUÄ.؎tÞÇú(B¥O” @æIŠ§sñ¦BśE¼]âú]¢&|”k“‡ÒŸ{ß9r}ÍÎÇ0MãÀ0`éuÏÄ@¤/S$AœF[Gôf»¥‹R_{©1c;ªo¯ºï=gù·yñlJý²ÀÚ¶ùjCÅ9ˆ?F¿¶[™!vÁ câ°ËóÎãé«ÇÁ>Ï°1ð,—C“)v§íá—ԏ×A?É6L™x¿ÀÉõõüx»“eãäEÊ±qÈò¾œY`3Ç¢À°rZ­þ;#ëMœ2;YoÁî¼bÍÊ) ëÝáv‡Õ&{òò¼'vÁE~#¶ð¥ 3láÍø£Øù#=û@¯Xd\¢š¶ r&üŠP´,iпýÎ×\tŽ6‚˜a²2óãÛ@“[çÕè͂ð0•šñ¤a§ˆ0²Î‰]\‚‰dÛü;6ðlíK6®>byxÈ"÷‹µ—9´ yÖ9 ³ûçâêßW*y~Ï8{zwjÛ@ظ; Ü þ/²MÑ'ÆÆ äû6lîED.Šèýøöµ~n%3JØ÷HE° ðÑKµgù;#¦Ÿ›áˆíßX/B²ž· ¬ÜÙîSH%‰g8£Õò¬Jô[é÷0%F“ð«Æ­k:¶¬õûHV¢®â]¸ÆoÑ·“¶š_uÖD^rkòÆf„Òþ»ÿ=¢"5éϞ±~ð@íç­ß˜É#¦)[$‰Ó"†wï¿‹£ jâxÂLPØp{‡ o1jƒ£6ÝÇÁ7L˜/r¼Rw¿{|"‹sNÏϧ†ê% Kƒ É¾ÐØn_È.áP€™Ô®}a¦ØšVj ö7cG÷1˜Ê¬ñxÁ*îÝ)}ÿk^ÄTÛ¶A/Z&¶¡§ÚÉ ímàc +‘)…V&(¹hpý°Äλè¦6Nì›ÈŸx>э¤HHÀí²Y7Bú “¦S;ȳÄìܸٓÞ,N/¹ÄÓDÞkò…ÉtÌÝ÷$ {RúØ¢´*yPÿÇ­ú+!µD›1_ëL BûÐÛ°>@µ{ÁjŠ`uí”U}Rú7ŸŸ­<¸0¿@ÞWèèn̐qØT$ï˜Iíµ3v&Y!­ÂK'bJ$<ÎËg}5wo…²º·›%ðs,LÐ"kÔIƒcRf_å›Iš>xóÂÆÓ=3»‰ùâl…R/Ë'>¢³ª{@«õ0ëǶã³ÚšâÌ!ñµ¸ÿnŽ¨&¹ ñkÁùÐ f w€²Q÷ÈM„¡‰gÃS~s}SáÉ>ç^7tÖ1²s:_H/Ùò9aÍý>®ìh3O÷ßgéh¥¡ëIÁ\þ }w p^fîY>¼ˆ3S¿xš¼aERײQ“yÄ֒¶#W҈m»Ïö;c­ãþ0c/±ÖíFoœºžAeCá=òaÅ:â=ì&ÓÍ䵁†ª"7ºC›¼_ɧKv€™ó·–Ì´Zå‹v£iöòùz©Ì±4:K¿í Ù=ú(-÷¸»U»ì•ú´€ã|±aFês8·^æ³Ïp^ËgåÌhðoe„è7Á £Êu3[/öm›u±/¿š`yóÀzÊ»ôk¾Ã0¼S§us»˜dßX2⺁®sa•‹Oø4¿¨½º gˆ›0 KgÁMxP¯Óû™¦RÕ X^²Í¶Bé˜,-ޅ©GoSÌïEš¶A)¥æuÂû¦“Ò¯2 n]¹¿ä^0TsKÅx#‚OÕ±aN¦•_”'íƒ$…tÎuÙÅîÔ%ïnßkrÚ-|X˜VîÚ¶n]?ÄJÙa,‘I!yB©,}P–ôƆØyò¾+‡¦ù§ª³S¼Q›+›3¦~…Ã*,®±°ê„µ»°ŠPlñהÀò,?É +Æúæ¡MûýŠ*F¯ÂAXÎÞ4ÏÛ¢ŠEþ>›FŽb;±¢o?ä÷E^™ž–‘âC(úà (ÌÇY ^Fpptò÷êŒTÇ{/Óiõ/#ßÇðŒDj4 ;Û:oC¾íaxŒù¥ *6°{°ó´Ùɱ—…*Â2¶/ ›K\I%ŸshÝc«çlíC¬½Û £Äxzìr¾o×¹myð%˃6Ո¥>λ×Ғ¾AUyÆw+c1ßV Ö»ö%RÓý|OGZú¤–tû¼áªyôEÚ"YæµÛ’¼¾#iìØN'dÀ ãkÓíÅØTAmtê^Ǹ¤ö]š®öU67*™¬¤Óò–´¼\(õ§Y¼Ô*;’ ¨” ²µŒEbtâÝ=Rû¬<¯ÓÐ TˆÎo=`S‡¨,—“Ããð4ƒ¸´¸‚J+&•­é½&^áxÛrnµD=Û®¤hŠ‘A‘¿#¥s> +endobj +124 0 obj +<< +/R7 156 0 R +>> +endobj +125 0 obj +<< +/Filter [/FlateDecode] +/Length 3338 +>> +stream +xœÝَÇ ÒžÚdI«#ÒZÙ±Å3¶§]÷Û#äÅƾEyrbÀÊÿ!«ºšìiîìÌ탈ê*‹7Y5?ÏT§ÍLá_¾ÿéè‹ïâìÇÿ•áÙwîw?ý|”:‹ÿʇ¿ÿiöÇsX˜f€æü‡#ÕåœT.ßô,šY´¦sivþÓÑßæ¿Z,UgMŒÑÏ÷¶SÊ3±XjXÜïÁ`çS0i~W¹˜ŒJó— è´ ócÍ>*˜Á&?^,M•õvþpa:ƒóÓ:78ç.–¶ 6i$(ݐ• =Ødc"ʺW¶·ÿfÃHE +Þ§ùÄæœv˜áuvŒÎ#‚¨üu]”´ÎH¾0ªhñóß,–®Ë:«0&âMÙ¶±Éfþz¡º˜oÝ6˜Æ2?ìŠcýɳ³zþÛºD%Ë&ô\ò°é>aß]ä>G3bGVˆu&'ÏY³·øûù_Žœ±¨FçÿÅ©¼µ1µ¼ ý¡¢Ï|fî ÐcúÌf6¥»6S@#R°l$,µët¨t É&夙þ2MÜ'õcÊÃFÛ®e6×a®`÷›d`P»èR +‡ ]š‚è¼³Àå·ï +EY9€ç ßE“€åUŒöz~—@Îü·‹…Î]ÔÊs°È7ÅàSυ?}{,šùìÌ vt37{÷Ï£úA¯Fƒ—û “g¹Ë\E4ä+¼ê‚CW»ŸÿëÈèf«Ô!t4m½1àL’o:Õº3pŠÂîlS-ô …YE×0x]€W*ÆùS°£±yž+¨½ëÏ{™a³¥SÀ8Lð`û®nùûÅÐ ‚8è—h§‡5@¾§ø×£óO‹êX`¾wZƒö<$ð¨: >ÆÓ䔀îûlÆ;„sÀC~LÃ;~&nrFà]q™L榠 q 0óÑWžx—À?åPÀÿü~øŸÑWㄪq¿zpð¿ϯÌþxVOáo§€£^G&ۊâs‘c t·À±Û¯! ÆÓ}M;vâº{â:6êoG„7`M¯/ÒÁÆ8b%nýõû"³&".¹_Ô¶n@0Ç4Úh L¢äö Ü%pOÄp[rùŠÀc;-KQ§>—¥( ȶ$ m,‹AÛDz@ÍÿHTüN}5BÜÀO9Wû„Æ[ʸB§\ ¨0±LÊù2„*òhªª Üq9a]3Œ>®skþ‹ û +õOs&Ÿr²îØyÓ²ÿMDÍIê¦&~ Pv!UŒŸAéà M‚ !G: ‰´Ò¥öÈG€^‘þ?řŠ¾’RkßYUu’ŒèSQ D•L@¹j;í –¼¾ÓVA]ñ*ës´P@Së®&h¾ˆfBN…QÖÆó'D€ˆ +5ÈtÆ$eç'€ ’uW*ˆFÀ‡Ãàñ¨¯0  ¾"²ƒÁ8B[ +(FB©þÔ3ÞÈZ5”(ýÜ É5( ç!íÕ³CÎÎ*DÇÄp8P}LJ 1±U£ ¨¦H<?õPWÊɆs©{­®ôƒ¡iúôŠŒüŠÉ.jËTóÕ!e(j7W¬Ž¨ÙIq`‚)öR—²Iíôw¤ä ÔühÜښ`°g°D8ùâÂ]…6{Åä}IR,×çÞÉi¯fŽmðÒ¤“˶—‰7Pk÷±ŒmE«îã™`K‹Ü‡Z +gÃ>?@–$0–<ÿïL@?Su7ôKòÇ/=p 2¿U!ÀYƒí¹+ö€6©mœ¾#x¹¥µ¾C/¡†í‹Éi6C¹ö†Ã&®¯™@özª8c?x0øž ÒôóIÉ/õ§„‰y֍é¸Ü/¶™ä½Ä""žf2ƒe tà N'øàoÕÞ.±œ“Ò$ +)E¾}±'§ŒŠÀN8;ìéÖ[ DþU69Àª§8˜´u¸kñ‡ý¡—Æ€?­'†ÌŠh m=ÃvãÇóÖY'X¢“Ò)0~&lÕeàaõwIÒ%ç/\›—à3’ŠµEÔ/:ΕméóÁ*8nߎ6¥Á–³‘­:.và ë}GÖñ`PZôÑòpÐOúLc—ÀÕ̪¢|\"‚.³=OU|B:M›s’J¹Ë X ®f(&6‘!}FL®M½G¡÷9²/+Ðf cÍ; €ú²eO3Ûqµ­¢©t¬¾ÇÛTeÊ87aǕsóÁàO†Ìð”¼5ã“ í:h[–cÁà¤)ìPÆ»/¦ï¼0pb4Hâ:V[øk‘ˆTY97u´È§Þ•dG j‰èãÔz¨øJӗ¨, +]D³î Rao2¤£äˆ4‹=“„k’F6L”z²=_Lyxx9J¯=Ö7i”ʳàh$RØ* +_l‘*®¹¨¨X‹óD:é’ Z”C"ÃÙÇY¼$šVR8:ª¤x  µ™¬u’w\RÇ¡µn‘w˜)q`¼£5\I¶ÍE¯Ÿ˜æ°8UÌ$’Ic %ۈUŒ ŒfҞ#n[1¬_Ú^%)c:ÂòH2ÍbTsÅ-՛ &NðëžGٚ”´ûŒéwÔwÉQ;Ù;ß|ÿÙ¤‚ÏŽh‡,`*QtÄ̉û§sÄÌ^”½è4Œ¤Û´D¦úL_E?C{oaèzadµQ ¹y€8Z8:¬áh¤&dpP\)ŽI)ä¦èR”þ)Ï…ÎöÆkL0™÷\Öpg)òØ~Yå&­Ù‘$yvA°ûz+©[ÌüSÝfáVìoB*–DÈNZ÷ñiÓÉ8 –g-~Lʎƒ¬û¹7´<÷Kq•m­k&ÝO.ÍÐ ÷•_â*Ø +|¯ž!7Ÿ4,€ÿ#^¿WíÜ’%å½·Í>ƒÝ}ðÉËY5—x“àdèS}BzCÍ+¦L´ž¹( +ÂëR­q¸&D®”À.7ÑœÈü‹Ecg*/Æ+¹»{•xöz(?x ò1YêõÜc™ˆz½U¦Ë:‡túº­šj_øþ@´/`6ÐÁ¾üðˆB¶/2ŸÞfŠQ1S:ÆwUѺP^ËôßÙEÄUìínYÞ¨%›šÊåâÔ鋮HêÁª ƒ+†Ò=h;ò |`ˆÁ‚à>@6@œ6š_œðôéÑ͉ôîüØ̤€q©<¼;,õšW>×ÖEQ\º6PxùŒµ5MyW^1A¥^^+µáŽ@K`"ðŒÀ}w Üã‚RPM¦^ý‰ª/^yýãUÿu©ˆ!†âªcÿ‘fŽ:qmHý…ÑBúﻫu~'L/y˜1Jª­k3BJ˜ätB®MFae¸ñš8N]F†¶†á }6Ȇ˜­îîe3‡=Y¨Ù­!"¤.ê4 Û܃nqeI)¼ÔѸê \®‚[ˆfJ)*Êê^ȝŠÌÊeaÏò¡ÓÑΊzFÆ)ËùÏ$ë#›¨ÁÚÛb64™§*¢q®zo^69¼ë\ÛÔýˍ~*Ñ'ù+ ½¢ +½}ß@=ÛT±%6:ŽŠUúèb¹áßÂOÔ»jH +ÌðRZÜRìàŒŒ_ౌ}ûJë¢M\qˆó<%#󜱗µˆB±u»zÿ^ù$Ü¿÷„ !Tî†\B#÷ežp…m«Ö[ÇÏ̝•b $òÄ2@´ìÍ«ý[ŒP¸\ªêÄ7 "ERÌ» «/†Zh}C„¾*±˸)-[©W.ýÞËÕ<Æ2Þ1m[NòÈqЫnk٘ýKÛãydû,>„¨œ]].Ԅ+y¦`£ÒžŸ¬î¹&ˆó½31ÚÔ®S}Õ#Õ¡X~ޡʚ՜;T‹å2ܧu(-Òâ[>íJ­Ö§ÔýPzé²sYs|—÷ɥNj¬ڍZ©Âå穈캏0mæ×®ý+þ®½·f¯·?"MèÄQöCˆczkÊ6£Š¿~˜ñG§Wy+ÌØȞéî‹5¾ì½ŠHýß{†Ÿñ⻍²÷ÙLdì©ö7ÈØÓûk?ëf¿ña7NLj̾¾zÏ¢¸MY=™LÙûm&¶×¢\ş¿üNœÊñN £aWer®­ۘë3¿ü?3×÷¦¯Åݘïg?.`?#¸I7p¿îøƒ¼ŽÝt?$°Aù’Áõ¿ÜA¦|}5`̾àgRIžÁö›È£ü4öÛ£ÿ[¦´÷ +endstream +endobj +126 0 obj +<< +/R8 149 0 R +/R14 151 0 R +/R29 158 0 R +/R50 161 0 R +/R82 169 0 R +/R141 171 0 R +/R153 172 0 R +/R160 173 0 R +/R187 174 0 R +>> +endobj +127 0 obj +<< +/R7 156 0 R +>> +endobj +128 0 obj +<< +/Filter [/FlateDecode] +/Length 3138 +>> +stream +xœíkÇQ܋cAä !gs\Xã`fmúýˆMbå¡HQ¾Ý·ONl)‘Lþ¿”ê™é©šÝšÙۃ€| ÔS]Ý]ï®êåç¹JÏeþ[€ÞÌ^¼ +óŸþ;«‡ç¯þÒošý<‹Âä?õ…x3ÿÃLŒs sñãLŠ”¢Lõ75zŒ6Î/ÞÌþ^}¾XJatÁU‡ #¤t^W_,– +¦÷»Á0(\ô:V×ò,¢–±º¿Ð@NY_ÝÌ£É ùÎb©EÆ™êd¡… ބê¬ÁõV…êÁbi„÷°HقT…XÐR€E&o¢žwÞQ{ý2œw½s±º©Yë¼é0œJ–ìs¿#A6»üu3)*•ò~à𥃠_ýf±´"©$}ë%Pk 뤫G )BºÍ²^–¹nÕ<֞®ç-똢"ú{L4ñՏ(-«ÖØT‡©‚Ý*’AeƒÂ× ƋX=Éäœ5Àå×oë%i®NåhåTµ‡ eþëÅB%”t¬åƒw±åŸ/fßπEs—¬žÃŠvnçoÿ5û±t²78î'tš'‘<ºŠ ÑW8)¼Í®V¿ø÷L+f%h†²£)óµg]Ñ8¨RBÃ)ökv'#h¡-L2€¼ºÁkÙ8)C¨îí€µIÕ7 ¨œmÏþ╲ª[mi%ðNãÍ.³èƒŽ:«Ð+GÁg>DðÁ=¿e)|@ õár`ÊÒ)£{ž#(ôìèKÁ"H–xŠ _¯¥ +:•@z›]<ÝN~§¬ÐŽc¥C$y†à]O§ õ“,/%K‡£ÁCﰒ ÂÎጐ¸„¬ôÀ1¼`Y8Ã7[±€0n ÑsVò,¸ @ðë¼ Â9‚’U£]¥Õ37bcgìè ²bá –ÛÙƞ³,# ý?Î{1²!wG˜Nmˆb$ ;%2&&{ÀJ~gi^~5f"d4²C4±XâÁÍ;ç·Þ@¸O>;‰¬,¡ù°äFdALö%‚KÖ{Áž6Kx¸°ÜjÈ:އòr#FöÁ%kzÄ#¶§p֕Ss>ñ$Hpú(tÞã4#+" +b,Äƶ±GBL°«}Ê1¯&ÇÜÆ_ž°£[…ÊcvÞMÖâ‡àŸünD^/PòÇN6ÞúoÑʈ{u’XHTæKA°£ç½Mð)•m[åpk*^H[nǟåÒQ”Öå@%…ŠÑ«œ†J½M1W.»Ñ; nSáÊNJ_Ýf +)NX%­™/U®­£ä#Ÿ^“ÚÈY»"g,CËi£îv¢`Z{؉ð±Ûˆ2Ik«/F—B.IZ¡ó>§ÞG큞6)]E `ªy³TNÙØqA½—A£¬WÕ/K/Rp1õ(/%µWdQD|PÒÖÆ|Ʋî³[G£li«;¯–Â6ç=EÆ%áï@ì'ôLèø-‹K c÷;Ù4‰Î›*³Sºe0m2›P\DH$r ²Gò¬Â°ÂCèqN Õ×y'F[Gç<ᨓA²ý×U‡@Àu>ď@u±Ë7i®Æ|€ª³›p”"ÍýÿåQéVG¼D/¬7ýj}O‰´3ÀÛD•È Q “{Fäuàå¶Â¼›»kM ˆ0žœw3 "Òd?¿$¯sR#b%[ºÛé!ºÇù‘‡\„Ù(ÙÝ9æ+„Ò}Vm¹“L?ó#ó2MX‹}q.²ƒ=8Ù.áQsYe´Â©®ÉȒj R¤J䵏†÷Æ;¬£Ê½ÊMÒ¾RèÇR¿=Ö:ö·5ƒß綥±2Igﻫ¤wS~T„“¼%é]²µ­kØ|”¦É-m€ð@f‘¢†iY¨N6(Ãñˆ4™x·4O|6¬H„ºËæD[˸ahˆLà=rV²1糃8•xµ÷§#jI(·æÁªåg3=&¿@~˜¨*®Äy¸ÎY÷­wJŒW5ÎΑRi¦_g³‰k¨Î;ÔùÀ^»î°{ÎÇì]Òxô[äŠöÕBÁVóuÁò×Ón"ÌÏK'”‘Éó@ƒL¡DԗFq\¥ &ªôÍ|Š$ç=•FÔ}οá>øô2O×`&¤6\[yµdUØtlØ-E̓*ù 7z¤¬Ì=ÄrÛÏïšùw»äDœ„Ü>ëìãŒíO¿"í¡ùŒv<®¢Ã8ŐnՏ‡tPa×Ĉ}“#~‹8‹ÏæV'gÛ枇ÆÅ3gsnŸ&« ÉZŽX¸v_MRÓÀê+‰¬OÓÌkùôAëÐ+o‘4u¿çèÜ&!ö)O÷w„üaL*=Ÿ^à)¢ŽéR/¤€ €CW2¶IÖgQû›né·Ì¶0£(|¶Ðù6!Èu?KéȜcOlӂF ‹©¥4`ä¥êތ)e©ÉqŸ°ÇzíSÿhD£%ú«è\O±–6Ðf$C\)$°âä‹õåbèe<­^p^âiò¥,$µ“\aüòfëÇ(9Í´O‚ì9 +ö” †g¬ÉnÓ¸‹,1Á®6MÊ­!¹Þül ÞµÑÖߟ!{ân5,ÉDK¶ 'ìèVY×1;ï&ëxÞ­Æð¹,— ¿âÄÏîcÇ9_y°îV-Û9_*­…7Ye|××>΄”jSÒL¿‘A¥c²$}õî™~Tÿz#Õ?õ`úêTà^t7áoò,XÊg=7ÒTŸŠ’wàߐºÑ„Û_W Á(àïL©Žÿ +VwÞE·žÄªš%Kï!e´jý>†m3Uÿ²(Û}èÏÁ»;_–&¨­:¦@I¡lIa½Ÿ'õ²Óšh?| •p +ê/`«.Ðv¼yÛÍyވ٥4Ô½íPwmßúÖ±iJ”p¢W”í¸ä¯RÍOµŒ§buѓ)woSÝcú‰jQJBSE›ëLÕ8ªmë_}5§ à7[®t§UÊ¿ôš¬Ù“t$+ã&ÅÈß7Ukb‚›2¹|™­ÁGUW –VFžf´óÓ¢Z›Úãk%Íh¡Å4ÙDÆì mÕ£î˜ã÷|:AeK«gkËà´A2¸¿.MòàµyŽ­;[Ì¡›rù¾¬EAScy¢Ðñ<{„È$¾uЗyÁý® Ɔ㨏¬"**ZÆãU§›?£§oÏéeÜط˓ˆH¹®ñ*Îԑ$G_g4©fôÃGùÎFšukv­#]¡Nö<'jÔ¾½n¶2‡O›z•8‹²w:昢¨Äฤ{cÄìësÏ:ú=Û«MÃåLŠ dÒî/Yøõ¡ôaê,‚ºc¯™PâØ ’ih²Øÿ +a…û•®¿Èú‹:½ !ßÃäI\ŒY/Èe“ZÍåkú$²]*œ‹ïš?±¤¼­S´¾×þaw^çÜ^™`ÉÎØôv-Çä÷™0ƒxBnê ¬8¨'ì,š~¯·b²qŒmw å‡Û·Cv6fK\|¨½‰ÏÛjGdÀ‚YáSC9#]{m˜VûÚRù¡t¹4"&ë:ÕÍ??oT·~ §e¦íýüÛ«ºµIʉiöº:Ä«)1rïí§SAÖÙ1ÙMo׆#þÀ½¼Ð¯]f¾õÚI.³õd5÷h]zý9 tzx¢­ÄŽÔ`§½ Lˆ4.Bæ f/Íÿìмn9­ëÆŠ:½Ò†+½Dë»×Fj/¬ëžÀòc‘—ïuüËôѶ(—‰°Ÿ {§4åÖ¸3¡'ÖÎÁÐJ.Šk÷Ýn=è‡áÌZ‹axM%;Ç]1âø5—¯z¼Õùëi¤O½Üul·¿weç;u(Øç\¼¸²×Šã:p :ÚôÚÎō±ÅùË-Òä;2ci;Ÿh°%ØÕ +9¬ú¿‚ù~ö?ÒQ¯v +endstream +endobj +129 0 obj +<< +/R8 149 0 R +/R14 151 0 R +/R29 158 0 R +/R82 169 0 R +/R141 171 0 R +/R153 172 0 R +/R160 173 0 R +>> +endobj +130 0 obj +<< +/R7 156 0 R +>> +endobj +131 0 obj +<< +/Filter [/FlateDecode] +/Length 3138 +>> +stream +xœí[ëÇ÷¾=„mĹYÀäfQ¶é÷#‰Å²勭ûfòɉ-E’/ÿ¿”ê™î©šš›[Ì¡$ +÷ROwuuÕ¯ýØ_–R(½”ù¯?¼]¼ú.,ú×¢m^~÷M!.Zü²ˆÂäm¥x»üêÆ%°¹øq!EJQ¦ö›Z½ F —oß7¿Y­¥0:„àšý•R:¯›ÏVkл}ã14 +½ŽÍ­<ʆ¨el®4°SÖ7'¹5¹ ¡é|wµÖ"HãLóñJ ¼ ÍY××[šG«µÞÃ$U©*³¶Cá“\[ˆvÜãžÛ›ŸIs–"zçbs's³ÖyÓ÷p*Y"çnςR~Þ ŠJ¥,,¾´dÁ€â›/Vk+’JÒ…xÑNá€[a¬“nž­¤ øvÓz]UæúYs[Yy²F5¿í†ÈhH‡¢%“ ÷½Uð9聒(³VX«StT5û«¿]üeaµÎg]ü€ÓéքXgpƗE—h#öÜí©»ø™ô¬ +Šf­2ÆäAÆ,ÁºŠ°VV(ßÉq˜EÖ1EEð{Dx€ð#à!­uÖ¶7Å0ØíjhT6Ø(|KÂb¼ˆÍyfç¬-¿¹l%JÒݬœ:‚Ê;håT³ƒ$Uþ›ÕJ%”t”líƒw±háõÅâÛ¨hé’ÕK˜Ñ.íòò‹K£“ƒÆù8¡Ó2‰ä1T±ÂIám0ûÅ?Zyp³Ð kʁ¦Ž×‚It#°P¥„†Uì¶êN&F@¡&À^}ã­œ”!4÷ÁwÀŒÚ¤æO©œ-k‡¹t?ÙÚJP ,Æ;ð}ÛMy”u+¶±Q+ã>u#•íGÂÿ!«¨[Å~YrŽœÛ‡ºŒÖɵJY÷ÀÉa´‹¡±­ÍÁál»P' Hڬۀ­¬ìagˆ³N(£­ÍX±îR°€B@ŠT­såPOÁàÚGSƶ1^8¥š'È +!õy>Z)ÈB‡ßÏߍò€äÏÀKŒKÁà÷2ÆÚÜ2ŠÚîÚ«æ´ÿL +؆‘”v´=DN8Ñ㬳#™"…²uúpÞS>d¢]n¢²` ‚Œ,ý~oSµYzäô Ú¼L¦š ¨€ç˜‘Q¥€-é +„Œ>ÉæL6(C‰ôD<\Cü5‘® 5 !Àz1\}//'¢}~Z~ՊqA½mÃq»ú ëný§=ôˆNˤ‘e³x>CûfpÅ"ï.W"!wÅñ(ꏌé`Üö$L '¢ktÒ ˜W‡ ¾AtN–GHô½CΡx¨àR ò/2ºK sc¤‚Xf Ø[kGc¤P±taE„xÙFãLv QBdSÌ Í¹*™”+2(›‚ë6~ßRA¾V”A?HW^9LBI1ŠáN;]\¼ü¾$NH†Þ±1MJ EЁ:ù\Þ)Ê^QE=½$PIxe2Ðú¥òêCÈ2eY ®j¥Z¯ ªÂêÕk@YÅçJÆ%ÄmWåˆ¹ +ªc$sÁRé¶^ÄäR®Q°Ëe[ê@¨ŠÍsl–Hž±­É'H ¹‡ä>’få!Ë‹Ëâ€Øêa±åI÷ÞÚ é!KwÐ\–jÙç\ÐWh÷ÙÖ;s­;Øú,cG%Óºs­Ç×dïӁ¯k?ÈvôR«\C@Ú¶2äêô8ÁBò)aòœÖâØ|›Îós¿µø7=§Aꑗl”e%Îw€Í(ùt•!å~vø;›¦TŠ%ð‡Ùï¤b%ÈÎû®Zhœª9R›ŽPéÝ¸ö±Öië(‚x7©š^ £ŸqåFϊ$L>ßqcH¾e³46ÎqçJœ‡+uFÉh3áFÉhZG:‚²¥ª +;+Š‡¹ˆ0‰Èì§\OV:T]MUºŸ +±1x7ë0Ø Ø$Ðev`VyZÿ\íu’B¬ŸÔSßu¤\ýlÔ@ò˜íK˜±}3pÈtÑKË~'#!ò}ƒéH €H>AòÉ=$÷‘4èd¶³Ú!•ýl=S¯ò%ª¼ûº6>ŸR:7]¿z¾Ó÷zÿ䆊‡ä–´ì°ÿÒ ¹Fðˆ~I¬"›µÐ;‚xŸJt©äùÏ5æ`œ~Àª—D5Þ®G¬1wÜ}"1É6ük$«Y&Ä~ 3kÒún–zÅò"ÚýC\Ǽ³á‹X‚x uDý_³‘Œ8 +±¥›1՛èÉk­Ì¸ZÀ™À(e:j‘\AìMŠ¸}–ÃKj æDrg¢ý žó“ò””ºäìúîæEÀàðžV­P?+i ¤çЖ¯9=T‰ÜØ%W@ָ ¨Ö[ætÛ1>~È{„ùㇺ±Øf/^ÇÜäá½ÿÁ}Òx<<}»Ç¹±‡EdÓ÷EÖWp:ªw8nÏÙÛٞ•Fhܬ{Ój)ÊìqÃgqâQ³u–d½¸Ñ Í끐q³'+¤¨(LT)(1’S©¢˜@þä¨Ñ3sM9qI^?“1¬HìÕ6Ë}âܪöœ;«ú*ß<*ˆ±dÌ5­jWrfEmÃqEÇ:Ûpöø?k\û£r퟾гnÆL´Ý12:À :Ÿ1Î1th³ïÙêøˆu&þ`aû(;Y@42Pe¯ÑùÃÚí¡6:¾&‡–ÿÝùÃsOf‚î,æÄUð#§R¹äáñ÷ŠeF0õz[x=_)X@v-¢9b7´Á+UÜ-•d9±æ:åÒôÂ—)€þœ_¸P0ë%Ö°ÀÔðÁ0:%T +[š‡äc¶¾xÀ†ÏÉ_³¥Æën[ԗ$¦¹#ÿ \÷æ*JÓ>p´)©AñHR,‡ÛÔðÞøö±GÝ*ð3©tL–’d«2õÎÀ&”ÓÝäAñ)Õ7«;£×žëÚaݽFÊ¢ýá}=#uÎԒ€½éž|†!aNMɝ`t#¿Ñsþ¸NÄ¿f埬‘aìë<òýú–ÌÊ ^GvìíTÛÿ•[a›tòÍÂ`þ`Íd´®÷Å*õ÷œï[ +Óí¸”A7~o®¸‘ÓeÉÊÑMÍï2Éý/Yþ¼¥ÆwÅY¡Ì]ñö¯‹†»£à»qY̍Ù圄};Ç}S÷a0Ï(˜ ãùû÷Å8ÚçàƒSU×?T(ğ䄌*Ñ;sÔØU{Ø¡§-$#ÀÌõ?ۓpš}̹ðøÄôKäa´k§•nÒßúׇ1ÿ0‡y;´uíZ9bT÷ê¡ ¦NÃnݏßà菅e–åTJ+c¦2Zù|>]%4ù¢^‰Èʱ#û¤†E=ûff|̓¿oñK€é£ÌÙÇ=ÃbÃÏïs/•MôíË՛½mùjŒá³G»üa ¯ÍßPÌkµb²ÇZ[䍮†ñÂKúuEaw+|T«Acbc¡£Í‡¿þúÆàP~f€s9S”–ý%ÌąÎý‰‚–“¿P€XËχõà—•ü”ý‘ÀçH +$-’w‘> +endobj +133 0 obj +<< +/R7 156 0 R +>> +endobj +134 0 obj +<< +/Filter [/FlateDecode] +/Length 2850 +>> +stream +xœí[Y¹ Æž£mx}ÄözO¯ïTÙé²îã!yHò²Æ¼­ó´Ù] € ¬óÿPU’Èêf»{<‡ÇÀμ°YEò#)•¤úm*:©¦"ýâ§÷“7oýô×ÿMzöôí?2ññ×Éo“Ðéô×3(ýÓûé_Ï c˜‚˜³_&¢‹1ˆØ?“S¯¦^«Î„éÙûɏͷíLtZyïms«ÕÖ©æi;“Ð͹U™ûÀìlp*4©—ñA‰Ð´ +ÄIãšÛ‰­Ђ4~ÐÎT煶º¹×ªN{§}s8´uFú樝éÎ9¤¨ dÖ7È`µ•èûWiï>vÒ"8kCs7I3Æ:][X Ñs«Š J –φNAʘô#àIOzá58¾ùc;3]”Q¸±/û!,H˂UTÍóVt>‚ÜaX§ŠËl5ñ²åÑhÙ|?tA“ÙKÝAéÛmìà±W#'Qa½²FÅ`©knµÿ>ûçÄ(ÝY—Âèì?8ƒoµe«]6ÊÛH™Ør«Rð1iYŒZt сŽIƒYQa&M'Ý ÇnRY…$‰ß=‰;~$x·ŒÚ·¦1LìNA˜Òx:ד`ŒëBsšÄY£ÁËï>öEa€nZÛyÀåC(ie³‰$uþ»¶•±óRXJöøïlÈ^øûÙä‡ ¸hj£QSÑLÍôãϓ_2ӊsuPq»è°Tx…µÂŠÎ™T*`ô³ÿN”tf~‚• +M鯓`KŒ€¡Rv +¬ØêÝu…¢0 +xUæF*Vï›G;£Ò±ùË@Jk²íoނu˪šlÕPÕ¦9é\H¥¬ýˆåÞ]Õv¹Ï[È µ+jZÏH Àø;€œtBÉÐÈvf;#‹í?º~üøÅo³â‰~ŸÔʘåJÉø4xN¨(ÈQÐÉø$ØN1–!™E¡¥$sÉsÂÅþ|„ãH˜*Œúz­ÌÏۜ”1ML%)¹Âr0þÜ}!N’x>ex¥’, “|´K’Ž4`+f5/uˆ o¤£éG`úŒ”û“–'ØäqÒ ž¬IWB¹òÎÑIˆDçnO¸9¸štz³­ŠÆKMúc'2Ng²«S—¤´„™û_øq +½ ¾Îôg¯~LK+xݱ*¤I +ŠVN¥ŒY¢ƒ•i–аΰQB¬3XÈ*äí¦¥™4ií‹Ìa¾±ÊK_;{y±!¬:ÀŠQ«¤_Ræ0 3ޚ”Õw7:@hkxîdM…$Üm$w‘¼ä!’’OÜgÛa{lÛd1n¤znñ±šñ¹b Ó«t΀{’É$wÜFò’zÐfq:p"–Ѐ€¯ÞŸ¢÷‡§‰¹K™óäçº&eïšïk¼4‡å«Ä¥‘ɍ—B 0Ž- õm$·|€ä$‘|5ê€íoÈ=a3Œ¤ësÁ$5›‚–Õý +a+¤G²CrÉç,n$EÿÖ×ÖÁ%‚Eæ•[¬÷ˆË’AÃÔv× U¤Š¶kÍ«ß¡ºl¨âUeÕ%”À7lÝ;Fr†äû¬j_,¿¬’Gl^í#yŠ¤fÛÞ4×Ós K¸¤-™Ð ÛöˆUøzÑ$SY*òï +/؂iضù›a@.Y“/¼Zí)B$!7YÕnBB’t"¯pÇ܋ˆä‰’»<Ä7Ì?!—Ì¥$Ÿ²Iøšåv£™,5¬WfqD¢Éû6Iȧ,D¯Y.)ÐäíDÁ Cö”M½Cv ’ÇüfÍ KS‚&É=ì›Ç$9 °7,’eÉ'# „_ÁŠt”8I²AB҉@x°˜Õ‹•ˆä=6±Ä…œþE+I2gñëÂ]•BïZDhÉëX9òK‚Ù|&ÓÙ yEÈ[ád;^†Îõ;õ{íiÞ´O&?í¯Ú¸`è;Ù«ß©ÌþvŠÑQ*Œ”]¿Ïíº§ëÖºéLÆ~û=d,lOÎÙÏï¼>`+Ëñ¢¥ä†”¾S:\v. ƒ¿nبGg|ç:@/‡l¤¶ÄÇìq6D +àè±QƒOW%³Gh(é%¶\:g½$•Ö;ñTAÐSòáÌ*ÝõÙeÂuÖGŒ‚xUàCÄxÌþÏܺ|¼:HӐ¤>e¢ˆÂ˜ÕG¨Å—p‚Ê8öÓ°¯>fD’@F™ìóB=w¸-󑶾F¨®꙲ªòR˳¨Õ·€rÃ5®ä–\Òb5d«êœ•üúB §cpržØ;8¤K\¦^S8‚9N{£Bºø)-„¦Örõ;F­ïÖñÉóûhà½j?¶nB ýI¯;ÕAÛxM€(°“æ^j¯-íF'ý6Fw +ŠÙõNÁ³z”ˆ œ® TïQåmÐ"TÐA&5”ø„´ùFÂô瑯õ&¦Êôú´¢¨ÞÃ<¤óí^'ËÒ{³VŒ5+Æ6[1Ž¯rrø”ÔVît|^_r¥èk©îÚÁzÔK&½•ë¼2ãÛÁ#$•¨½\ Ï]ú/äL0TË¥—ÃÊó5ªwizáò]]aù6¾“Δò}R/ +cqJ•QuÎö__,)Óùyú²ÁH=*8ØðY5TX¬-„¹¼²ç*ûp£w¾² ?\D/Ý+{êG<«ÏŠ£ì/–3Fóe|4Yd'×É¢X•Þ˜Ö*ã7ªŸçœl>j¶ízù}áW͙KÑ-{׬Ϲœe‰ùBÌ ´´Nä¦ìÕÉK6Ï«TÇùK²äùènxÕJáFv•L,½1Z z£—¿—´y¡£¢Üߓ 0HÔøw7tîBhîR󑃫?£ý/9²¨ácö%ó³j:·›A®›²7ëÏÿàêÎf×Iûþál]çc”ÝAas˜tš¿ª»̦Ñ÷ Zà]%îqm´÷í¶Þ‹¹Yzê9WÍÉûýlU`¬ùÓ¥ÉÇÅÔ?ÿ'$¥¶çJ«0ȌJ×ð +—(òå ý  ˆ%Š×šÏ%eatà[L{•fñ"ž‹£Ï™ç>=#­{eã?ßu;_ϺC +XûYµtb.Ï/¼î`Zú¡Inzʦ/–ûèë>·,à^U—í^WéK¿ÈÉÏ×øLµÍbú=ýrŽ|PG{ο†+˜{F¶õkë;a]Y{Œ=m'‚ã÷"Ëca󫫅E;£Uê?·vÉCâ»ûÍ#~ÂÅn’0¿<è?Fþaò6 ìó +endstream +endobj +135 0 obj +<< +/R8 149 0 R +/R29 158 0 R +/R50 161 0 R +/R82 169 0 R +/R141 171 0 R +/R160 173 0 R +/R187 174 0 R +>> +endobj +136 0 obj +<< +/R7 156 0 R +>> +endobj +137 0 obj +<< +/Filter [/FlateDecode] +/Length 2662 +>> +stream +xœÕ[YodžxkI0¶|()k,G挀mõ}$֋ @ |“üäÄȀåÿ¤j®ªÝ­åî’KZ‘X裺îþº{ö·J+c+ÿâ§÷“WoRõË¹zóžøðËä·IVÿµ œþé}õýLÌ°¹úy¢U)Y—¶ÏTÉVÉYåsuõ~ò¶þs3ÕÊٔR¨÷§´ÑÖgÍÔÀ´äîØøUÈÑæúÎò)[ë'vÆÇú[KHF°Áš©UI»àêO«\Š.ÕçÝØèMª/š©S1Â"ƒÚ ÌÚ=Xdm!ÚyOGnï~eÍ(EŽ!äú¹y¢GS<“swdÁ„ )¿ê&ec +ÊJ@OK&¾þK3õª˜¢ã¬/Ú%pëÛbëçV©ßnÙh“…qUlë5/ޙúÛnŠÎŽ è­`Ñâ¾×ÝÉΉ3k…õ¶äÀM³ßüxõω·N…ˆatõoœÎ¶.åa…àb¯T +…7ÒÈݑzDÝlä` œaÕAÆ\"ȈL¦Æ+;9Qd›K6,~X$Pø±àa­ÃªíhÃ<ÀNÏ@£ñÉg[”‰*חÈ.xV~÷¡•¨htÝ•l“wq`M0õ‘ÜøïšÆ•Œœlý›S ¹·Â߯&?LÀDU(ÞV°¢¯|õá?“ŸûÆ gW× [ª¢J¤R‘,Պ UôX*`õ«ÿN¬‰f© ‚® Í0ßZ(&9 1Š£,h±Ûš»¸œ! +DaÑ ü56>À´N©þrÜh]©¿ïH|¯û«7ƛqµ©+j—­¢‡ÀÎݚûÈɧà úÉh–›<"ò‘;Dîyدší¸¨1IY!Uì—|Þxu‚¤ùœe‹OÆÁâÚFƒ«D¨¥!·ºyå L` éUŒ µG3øR ?§¡h;Д¯?ƒ¡àQŸy?Í¿ºÏ \(Ɂ½ÇÆsâù%‰1ÛÈ8íR£(>5î#BÄìéKÎà.¦$îlä3IcÌ΢]W|4¤S°¶®º’¹œÌ6²q%A‰byAÓíèö™`1î;Ç+Š5CAó˜Èc1׋ªÇ(Ov&±d` P ™5Äø#»1§Ënc­8 jOPÀ\Îú¸å(êØ|& +”>Á]$¿,J,F˅` ÆHæÉ8±XX•µ¿CŽ/äשèm-¶n\d>A{éE¿þ+ÎÕÆËìÁ"YV˜†ÊU†D,3l(€Æ ŒÓ%òeÉrœ1Y¤0–\+‡&ËTiºXºØôK’ŽÄù´¿bx}¦×RñY8E¡,ŒÑ‹VÂÑa´Fl;G('@Ôä:¸i¢!€Q<'w „dØP3ÎvlÀb‚ˆ¥´ðæ׊¨2Áv‹ÜÖ X)8ØéÁEõt0ыö7ä âÄ Š¹èTŠeÈÁq"üMi:Æû Œ³Ò!7ÀŽ/A…€i&Ò©†‚ 7è ½+R¹"í¶‡ý}tƒ‡ë?A· 6y6¹â»Nx_f˜öQÁXllK%͌m÷~À=Ñ3ØÐy梺 z;2Õ·0 +pÆôö(cdu)Õ Ö/î2ÝH½%LEM˜(¯Úd±"̧!RØüeEs n]Ò.$ +ŶCÖ¿ M3žd +Wµ7JΖÏb +Ò¬ •O R›0‹¤' ۓÖ`§©éóTÌé,i(UºRÜPª¦2Õù lû]í»;H–>¯ uÇ28jÅ0äBԙ«ÀZy±Ô^È*\€ÍY º´œö Y7‰­ÄHæôh…¬n¹--˟є]V,J9EèœÆ­„ˆ2œ[8qÀA¢@ ÇÙ1’ÞÊ+9'ÅSÐLö ‹²L'›’z4é$§ÄŠÌ —Iˆº.±Ìã ï^(9î 9QÓâ•áXaâb½Ç f™õœƒÈàRœµµ\…ö7Ø·å˜Ù¶î"kÛ¬ôfÉЦŒ y;_|Ӝ5¥Ät˜•–3wím¯@û ¼¿Úr¸>ây†âñ +<9ۋ;H“s4i)ôDZWëSáÐڂúM®^¾Å£0Þ:àÜ©ñ&a¡ˆvüåªö +v¼`ç\›9œ0òȘàГ/ƒ9 XæQn„ÃA33ê`µøRbt®|¶ÊöO%ï§tСtWUù%‘ûD~E¤"ÒùˆÈ#±õóE¾pÞ®Aà òÔE°M.íy/õwâUÿæ±bŽ÷Ü_ˆ­§b+ã°C­Ï1Lq*ã«Æ”½ u «k?@ûGm î°iy õz®¸¤•BÓvéöüZ?dž±å:Xs! çn³[º¤rïÏÅc"ÔÕû‚¸? f;ÙgÒHÖO“$°¹B qÇ$>3gÍaƒŠÏ|]E>bi’¯óêZPm¶HŠ°gáx¾ žK…“º­´/nrAØíB°B +CJÂUa¾%à[¡9>IAá±Ys5/%9ØN³MrØv{¾ÑŒ…:'¶'õVëA#3€Hwµû®™'ۂ ÄhñusŠtÀÿL–J( -ì{4µâU§ñøðFu‚MPڇIPŽ„Ë[ƒsæœnm/ž`k‰`•ÝUÏA{üÒvÅ%¿.y^§ØXԘ-7#z?âèF¦VߑøŽÿº#=˜wJä.‘çD>¦sÓ µ²%ƱÕ9عŒv®ÈÎ]/6òÆyò¦FÀX–ðJôÏ¢i|}ÓÇÁõH´Ý&䑊ȧ¢ÿ.ˆ< ò!‘GD>#rGŒ€—ó^ÝÔo,Ð÷‰”Ÿa-‘Ozgz!Ä61ôVÉͼV†(ÃV=㵙LjUóÔ¿/úÏy&²e¹ºMÿm!ïN©•½Œ‰­wœ›æËæ!V7ï5—î¬~-Õ_gÉûΦ-×À¯E¿1kq5–›çâjƒWæÐý¹{ëùv¯~{א·Žˆ\Û/!8§®t ûZ€•1¶í=^À¨È÷%·; +.çP¹É*`ì¬ýŽ/fÏ4Ãâccûé›wp€h_KŒj¶„ªá0o´GÐ_Zxç¥=²ƒ¾OE}/ˆdà€™zûßh=ÀcR²Vz¿B/²{õë?I`w°â wñ5ÕõÇJ&: |"-ΘMÛoDÀ7Ñ!3ÏÕ+>¦’¿¬Àc£WȵBiïùË5{Ž»1ÿþXªH~áÖtÅç;Ç«z&VgršcµåÖÉPΖ>úù¢–ÝfH÷8Z¼ñâ»0îlõ͝õœµ ”¸ŽÙOè~]vÍ¿HmáŽê¶©{£!?¦Ü]7¶º»¬„D,{•˜ÿçâjmN³;B +3æ¶:¹q1òÑáâ$IƋD‘ßÀV|­ºÞgŠ>ÇèyÈnO1£Ù'7ˆã•Å쏍Í{+|w‘ž”\öË'£]{O9üœ¡ý-Å“ÿ1Úæ­ +endstream +endobj +138 0 obj +<< +/R8 149 0 R +/R14 151 0 R +/R20 154 0 R +/R29 158 0 R +/R50 161 0 R +/R82 169 0 R +/R141 171 0 R +/R153 172 0 R +/R187 174 0 R +>> +endobj +139 0 obj +<< +/R7 156 0 R +>> +endobj +140 0 obj +<< +/Filter [/FlateDecode] +/Length 4500 +>> +stream +xœí\ëo·‡#KV¤À–åGÒª–Ïv“ܹ¹ÍòM¢mÚI\ýÒÀßâ~J@¨ûÿ%¹Kΐ;¼½“”6Mmð˜GŸó›‡ûÏEß1¾èÃßD|ÿúèóoÍâïÿ:ŠÅ‹o_ŒÄÛ¿ýóÈv"ü‰˜þþõâÙKßÐ.<›—;ê;çlïâolaøÂÞI»xùúè»åG«uß nŒQËý•èú^i¾üÙjÍ|3ãɽ\ø¾/ì”ÕÜ.¯…VÒXÞÛåÏWܳcR/C©S¦÷5PåÓ՚w¦J,OV¼F ³<êjÉÌò«µè´ö¤!ô,1‹F¾“­Û=ÈÜ^½AÅaV+e—77)•¹†bN¢qîeh0Êó¡‘e̅ñøIø_"iz#üÂ/¹ZËÎ1×ërÇ.”ç62æŽ/¯úÎ8ÏwèVó´d*÷Êƙ;)Øò“¡Ioª0®’ò÷ë+×ùŸ / 3‹ƒ•ÜY…—fõç—8’\tJ‡côò/þà k+ŒM=(¡ÇIåp!ÔÜËÔ)üŒj¦²Ö÷šÆhöc #X§!¬™ì˜Æq# ™[g:¿‡è$ÀñC‡•¦^cm|†ñû íŒ/dÒHÛéHúÉèÎ.? ì”~•_½#r½ôôr¥:í_òáp¦Øò= ñâ¿Z­˜ë ë&ãþZ£•Wáë—G:òK´PNò…ïQ.äâí_þ6ª¾(œÇ î®s ÂpÀ +ÕwZ¨ð½¿üÇgڋ™ÁP€&µç܃‰UéŒø‰2Öq?‹½¸ÜNXëO¡ò§ÐõÆïW.¼ @õ½1KéeÇo#ny ™’ãÜ?ÿÖÏ®…j½ß[> Úb:m”¥F¥~d†Ë®·AÔòzˆÀð Aï#úÎÓíŒ7@àê¾ðq Dö *ßÆؘ +Q«óùAÜN!Ï,Œ•ˆïp2ï…ç;,gÒÌÆüãÑ˧ßåÃìÏd]éÏ_~ xŨ÷Ú¡P¿…þ°(ã÷í @)¹C„?¦Pñ‚Ÿ¥$6à”~@Au©/STá69”T×/å9ª@jƒ½I+ßÝ<4¨U3Ü«<4—§€Õ$–ßͺ õ¤V…‚ªôփñ—õrJ$± ´ PïVp §†+ßIÈA«ïóÉ8b?HÓ5ö¨áçÍr—K0‡z{)ÔèWTø€b5'VÂP<Ú',k°À-;âõD{z°B³Æ¼)-ÿ ªz†ã~Ö¢èhÐ +õ5ö©G‚çv¡{OrñµW}T¾iÛ±òã°Ò›ÒóWÛe@ú9,ªJš‰“âj ‘ú8W¥pä Òà¨+lôÒòz(@!q€n‰3Š‘MK‚Ú:Äv˜Ùÿ­%‘‹TCüšb+|g‹=¶ÕqÃs’É ©ÞVò<Áš8H#-,´Ñ. ·af7&D›ÊxpˆÅ‡È:}˜û@̞6Zâ9æjÌ„ððQ7ˆsœ ÷Æé¬vA=L?±ÉÊ ÚO‹øRVá—ñ`p™Ê N(„Ûó…!àõ"ë…ÏT5™z +rZlÌã¸2²€á±—Í%´îHêÏH¬($&LôÑh6"÷F0Ë, °Ò³™ÞlÎÖBé&‡ºô«v‚ç«ð§êCSY¸‹ +Ù²7[8>±O©l%¤ÁöfuvŃM˜À8ì?†hÛ§!Z—t‹W(¾¯¨Z†Yý.ºÉª÷^Û³•îûà2#‡yBt×ètúO¡Å ßòÈ»%Ë<ŒJ }-^->Ō2yŽ*¿úƒÆè½Ó*£‹žO >恘hðÚ4çÀïñ@2;DoG2­‘®zᶳJ±jB‹;@¾ä!wK–3kZ¤5 +ô)f”ÉsTù Ð4F_®Ñ½­Ö(ðûj‹…a?­â'±0÷·^˜¯ æ]¶N¤ïIxžkÞwÖBHœÙpƒ7FS[æ +`Èf]ðæëgBñF37bí5¹dc† IcS|ÝdÿUÒ±¾7·[+î<(5îÊ&Ìº³†Ç3k‰!ø,ÆKøÉA”zËO¤wÆJ!šaÒ¬j¶ŒÒEY;T³¶%3x1º3,cPÓ¦¹dd4ïWË ™ú«U ¦'©Ô3úÌ5Æ!K!ÂÀ—O<í7€Œ _Ø4…•,6c”ªžeóÁ‚á_‡L ðqŽ*à È°ëØT9£CpcÜFFBåyÚ%²IX}!2Î A­5^˜Ü=}Èo°5Ék@¾ KŸyä Ò ¹IZ@^Õ=rH¤0¾ÀšTÔ[ o‘úì>Öa”E£¼ä#²Â>h­µç”E`Ü2•X'„ÙF§úïŠI…K¸6ÖËRºøÖé£_(Úd7m ÏÒçü+RFDìK>@!Ð@l‹ ˆHþHÍvÐp xµv¾t”’ÑÿTAËÙë‰ÆÖá¤h÷˽r²(š¥:%üÇe¿:LŒwÊ{Vé¼pãc ï‰`y·Ü#ý”$±–dC²ô.9ˆ³x¤7C¸‚$öՊúCR¦Q»,¼™|A–r I8BHpcï TØöˆ$il»‚y¢ñ|Røá( +m:×gßEC·‡L?R‘>Ïï§ÞB–bªó+<öŽËÿo!¸ ÷qƒ\àGäZ#¥ŒÇmR?c‘Bš¸Ðq3b‚ŽÄÆ]¨Ûm—-½É3îãV¡ÞÑ}ôÎ{£YÓÍÛò:ªæ7¹öͦ6}¬K©’Í6}uA¿u|~7›¾ÊÍÁÃØ)ºGù!”aÌ{¯MvúñøŽ2IÓ®¦!ë ¤-²g-ÕKÄqòDŸ“œ¿À¥È>]§u ¶†âÅbˆùh‚6~s¦ÐT{È +—ˆqRù¼Œ|fHðP"ye+§¤–L·®æ[œŽÇå Ð~uã÷= Ì/ûÍqš[¸)øАNªBcº¨ëgCÖ 0š*»ÊÐ °"qgrMõòFlˆ)1Ï0Ÿ" +ÖBùñ[^ˆ:Ë»XX2n‘ícäùŸìfÐòÒێ÷¦J…7ZYMdi+í7|‚–Ÿ0 ¸öæ»*³4,¾z:¹¢ª3Ƥ Éø8í”›Ï;Ç~&ٌ ŸÁl< Òg¥c‘ »åªíò"s›S“½æ2 +‹4­¨¸‘†ŠÇT<å:íòõ™¶që+íÿ’ÈÈÅt +*ú£Löï~Úqmz­ë8w½ +#D)I‰Ý2QÐt†v‚E]š"¸kx¹qœSd%b¨Ù\#E{…äƆ|Ú11èWÁ£TCÍ-$#Ùþý Lö–Æ›’Î’W ôÏ)Q ÓºñL ¤Î÷B‚Œ;˜1×Ø̙t|›lGxn3ŸÚöŸq.h}µ²Aú`„8íoY³KƒG‘®£$x&­ÔVX®94Ütm4¤Òí•öë6ãÁ¹{›“t^4–Œ\ub–ñ¾fæ9‘ÝŠ-,nýϼ¼ãyFZX7HK霴ªÑ„‹›¤Ër‡6¥ÞŒ·ç$·/ Ž3½‡©Ã-—w^‘CŠEÔîú ½×è±!çô>Ý jˆBOÏË»‘|5âTg´¢ï7ê,Q!Xg…\¬½hôîI¢‡Û'‰~¸òĜ.’âË©¡(óáXÆ.›M* îƒê¦1{­ü@«C’í *­4ýŠòKO2À ßO'¬AÐ7&¾ŽÆÑlcâkž˜øêωd$_¶)ñux™ön@v3­D’ÖãÕéýÕ$=þB÷Wó™¬ Ka‹Àâ|zí`$('*õLç¿hDMH›b·D_Àü(¥²a~ÏfOžê[ušg€Ç]³Q:¿õÂÙÓ Ó*dӁÛ6f>x6ÍW¾È»ÍÎǙµ·6?ÚþåͦŒà Oo†Ó-’úKÒ==ÐÍ÷8­ôX˜ÝÕ^(9å +øÅôœ“Ïn¼„C¨2ªÔÂO@!=à–Žávôæ¥S‘ΰü$8~æ !Ì;ÙÞV¶koÕn9+;½.@üÀ[¡“ÖP†$ù¿v›~ <1ªÄ›«Á–†ÍBߓJ®‚”Ò‘ÒÆ·cñŽY£©Ûú©ÒV\z·#;¿gÝþ^åýñ9Ž Ep4‡َé-m /•cˆ]dð—åêÌÛAä*Ô&§ÑÚ†É!,Wi²eºï“½ +«U§º"\ùpÀ„üªÀx0–N +0}…6yü‹0£!cóï5|:DÚr‚~˜”üø¡ªÙÕ¹Pößæõš¼ÅB2ø™ÿÜN¯ÃxßxÊ$ug­Ó…³û;Mz÷š ø=žÄá†Tãw¯™€ßInñÆ©šÛÿôrmÿÆ)?Kùlë”/¹f®ÓC¾î³ñ¶º‘Á½‹ôÝû)Iß&„ª¤ï}r¿gOÖ½Æɒ¢ã–›³ "‘£er «¦ùSYÄ]ž ’W …úËÉ$:Gè”§½ºÎ–•·»º^Ú(˜Ù$܃ þuÞ¹,~Oj4Ö´7583…­ñíú_-$«â B‹ë}_\-B¢ÑÀâ=ß{[¸ZøÃu80ŒBÀiôÝ>_1oèã(ΊÅgqÞVñc1xºò›áÁ’DÔ­ÌÿæÊ›à•Uþﵟ‘jìL\xuá9ª˜êºßvޞ¸ëøÁH£µ? Ò-ò‡!‰Ó%ºÏeþHʪZ<¥±ˆ1o­¥\M*ú¢TÑ/v*õÞ·«*Eqt½þÿÜj<–ªpè·*V…ó_ÂÌ[Ô—t¦S~4AžÆïKâ°æoó1½×pŸ®ÅäH«QÐ{(¿—.¤æŒÉaß5>i;“0EšóàÐß]lù-©<<¢Ú¤­cNj¥Âªž ]Ìÿ.H™d­/“Š!AQ¹áÂôu„ÏU©cL%‘a‰>]8«¤ +w¹¹ÆÛ@;-\صTú!×IrÈÈρ|HVxdäŒ,ÇÚpj¬<ògD;×höÈs o&2$äÏËÒ§jl%l(ª ØŠ¦ØPT°!Vœ`CÙ±Š´.TaÞ…ŽëÂØI]օ—Ãã¶×…úëHávÄfŠ^Ñ|VÜF¼CŒ +1ŒŽßfø)"FKòg-Ä]0nù餋ð•øÇ@žy³x—ÂDÒ®ƒÙçÏy¡qœ’uJŽùÓ¢1ÐrÖĤP…`ê'ú6YãI'¥µ¦ÄÉXRãdY-âd,šàdY1âäP±Æɪã0­T°xÇW…C'UáÀ°*¼,NJþùQर'‡ %ï]ãn¾éYåÃü§`uøä=àãßˑõ mÊ*åÊ\Ã+¸Aßj¥éì;¤ýQ"í=uD5Œž¡d‚žEµ=CÑ=‹ŠzƊô,;C ŸrBþâX6­U8”L\1K…“Y„¢é,ªÖ©p2µØz2µªu*D­‰¢?ý| +endstream +endobj +141 0 obj +<< +/R8 149 0 R +/R14 151 0 R +/R16 152 0 R +/R18 153 0 R +/R20 154 0 R +/R29 158 0 R +/R50 161 0 R +/R69 163 0 R +/R141 171 0 R +>> +endobj +142 0 obj +<< +/R7 156 0 R +>> +endobj +143 0 obj +<< +/Filter [/FlateDecode] +/Length 3538 +>> +stream +xœí\YodžDKb–‚D]>ˆZÉ×.“÷} àX–e~±Á·8ONl €Xùÿ@ªg¦§ªgªw–”ÇȒ/Þ>jª«¾:ºf~^ŠFª¥Hÿ¹ñÃËÅgßùåOÿ^´ÝËï^ôW?-~^„F§¿¶ƒ¶x¹üâ&†%,sþãB41ÛßäÒ«¥×ª1ayþrñ×Õûëh´òÞÛÕµµn„°N­>Xo$LóÐ<: N…Õ•4Ëø DXýv­`9iÜê(õFëŒ ƒï®7ªñB[½:^«F{§ýê¤ëŒô«ß­7ºq6É$™kô+À&;ÑÎ{8¬öý¿Hw¢"8kÃêVZÍëô0ÂÊhÃ„¤ò´›¤Œ‰xø¥mzá50~õÑzcš(£p%·[XX­_XEµz²°n·­S™evØ5õõO–«Oº)"h2 ç’…M¯ãêï¬c?{U0‰.ÖkT –²æÚúoçY¥ë’ÿ§ã­ö!ï`µëÊÛH;qäÁк‹?“‘™A!À®™ÆИ(Ød6Ò4ÒutÜH$«ƒ$ò{H$ñ:ŠқwmGS¦v3Ÿ tJãMh\ۄ‡qMX}š–³F—¿ÕR…öjm¯°¼“%­\]Å&eþ÷뵌—ÂÒf{¾Á;z.KÄ 6[Þ µ§ÓŽ»¦ 2÷¦&`ÄоÍClÞgç‘Õ®`óíuB€s頀¹Ád5z}ÖjlÞÆæc¶y“eg~ìÔ¾ÁŽ¸ÏòþYKèù„ðs…m‡ÍˆÍ›ïcÓ²½dìg쀫s»=hi€½dWø›_wM°çS­Û ÚÙ¬ÅÿµÚõ · &2ENö1{p·X]»ƒÍ^s_aûÚ¼6rÒóunš7x´?Ùã)da¦>V2Ï[K.Ô•iŒo<61ÄÞ!ƒùõ0 xŒÓúÊt,g±¾";œ°»›PF×½> [€ƒÔã{88ìÅãOqòÂ)$d@§ÿ´âÔpaÁ•µ²¢œA£• ìe>÷/XÉ#¦æ„•Ò¬Ö›KÖ,ݜSSvì!;–Â:ÑÁûìj阕Ÿ±+?­˜ÌMæcòh¬*˜™`å}ր8ºÂxÌȏW‡<¶ùñF֕€bÿ¤¢óˆsïSvë·%äÌéyyÇìàgô͔8´CLò!Ñ ª% ʵšDâçB}pæ!ºv†ó¦ø1âÉÊtïè*dñRëáùEôÁh½ú¡ƒßCòŒ‡,­µ|AZÆRÄ_y\ý÷6Â꜉ê¦õ8µiÏѕZ•áQÐ<D±)&6£sB!álzM?¶Õe [ƒž*•\–E¡fäX‡ehb‘ƒ£ûÞ»±ƒ÷^u,2)h +/!¹‰M#k™×­Ä…+‘ÇŽâ¼ÿÄz%s'R).ɱ³+2É~…!ù÷‡ÛMù)±ÿSVLJ?Ò% ìÈKs 6ùLiA©ì *Mª!&PYþŒ9¥C`ƒ4{AÑ£.ä±»\jä±SmÜf=È萇õhQ äýNG§àA ñ!g¦URìٖ‚TsŽŸ õyî™ÚÞBꢠjø=–‰ÜÎ-‡HŽ+d“š¤É”®% ¨Êë=.¡¬»¹‘ ².@:¡½Ã–¶ š¬Uúú„Oµg«[Œn ’f0’¦®ƒ‰#ò{)yl´'OAƒ"Å i÷<’ÑNyDd¸×+.3G¾DåšôRU8•2Ÿé•c7SŠ€¶Á2jH¸v°Ðª„h9òMr³?-.ûC[áՕü™*Ëú„ҐmMe„~0¶$PÊá0ï*öåŒ #gü=>U~Á;0žz l‰®¿2‚uÊÂ~ÈY&„ÄuOدÆ#š`­ÜÂ#hò“ߗ|îK>ý%ŸoªŒ³G桹­Œ³¥}_ƹ£*íË8÷eœû2Îÿ‘2N³/ãdìË8§²²/ãܗqîË8÷eœû2Î}羌s_ƹ/ãܗqîË8™2ΩO¸/ãܗqî[½2ÎQl½{'ÖnÁ­ï4ðùևÁ}€%k\ÿ#ÑJ0(€r)©ç…MßÅ+â­o)Nm­bN)°ª7ȼÇÈ£nš–}g? Ÿ(AkӐ “våyy?)"ã/•(yÅ|~iþ–Š ö_™i¿{Óe&2Ó«Ø,2tõ¯ÌLSjÓ + £Ô´ll%O‰Z¹œªz‚—NN«®ZœÚeãb› ¡ó… cÒú¤G“§;|‘ÌäRÞ¤åZ ¡?$>bŽ® $ÎX>ºiÐaðŒ©Œ}„N›¾87Qa„.¨È6Jðd?•¡F†þ©L‡$JBµ×åóǙR§©ˆÒV±gªŒóƒô7˦¯‹ÙífyZ¹;RäJ 2%[U•Ë~,_c¾œÉž´*N|“¡Ì-ÎëiÅmž~0®Œ§‰×{6v3¦~å\m¶¸—w w©Ý¯Ò„¤I]ä@ÁÌ _㯃Up»]í”%s6åw<ãÒóÕÙ»„Ÿ¸ÚEŠ¶Çyä'ó'{Ñ´/uCٴ¿ֆ…ÇÝIRÄ£(¬ $åÈ|1~ò_­›»îšyáƒ}£ ¦í=­\VHæCj¦ 81§cd:‘ÕGEÇsÒZ`±Û$j̓xÝ· L-³¡$5j¼cX¹åàl&nškŽîØiï\F°§>@ZŒ¾N­´KåÒ»¸´»~‡šO˜Z¡–Á´EÉ/+v€~1œ¦ý’x´Ž±ˆÁ1¥ -¹ß.þ Ÿ3 +endstream +endobj +144 0 obj +<< +/R8 149 0 R +/R14 151 0 R +/R16 152 0 R +/R18 153 0 R +/R20 154 0 R +/R29 158 0 R +/R50 161 0 R +/R69 163 0 R +>> +endobj +145 0 obj +<< +/R7 156 0 R +>> +endobj +146 0 obj +<< +/Filter [/FlateDecode] +/Length 4409 +>> +stream +xœí]ûo·†l-K‚ãgÆ¶|µ£øΉÖËגláÂh]äe ˆáߒþ”6 +¤@Üÿ(¹¯ù¸;¼½;IŽÓ*‚Å#¹äÌ7O2¿ÌËBÈyÿíˆ~ÞöÚÎúÏ~Ý<ýEK¼ýiÿ—}W¨øO݀ô?Ïÿü&üÐÍÃ0o~Ü/ ï]é뿉¹•s«d¡ÝüÍÏûß->Zž”…’ÖZ³˜-UQ–¦’‹ß-ODø™ äå¾ñZh,Œ«¤[ìÄ_iëdé/eNèjq[½±eèo-OdaKeÔâÆRÊVÊ.î5}+-ìâþòDU&é–PŠn°ºC;B˜díEÔ¿{Џöý¿¡9®ÂUƸÅõ8šÖ¦R}#¼†u^EÐ*š9!|\Oøˆð—š´¥UaãŸ,Otá…/«tÇõ&ŒÖ,½\¦*ÜâIÎhvùû·õŠ|©½XšÂJ¶¼á)ŒX\"7ÿûåRøÂŠÒ YŸ¯³•qí.üõÍþ·ûa‹æÆk93깞¿ýçþm£)“Æiœ~î _TXIXaÊ¢Ò*Âìoþµ/EÄÌ6LÐ4E é~/eg: *D!ÃW\®·Û+çšÀ…¾´á¼úƝ¦,­]è ;á¥ò‹» )Œn¿ýÙëðu9T+ÃÙÊÕÊVè*¡¬;èj +³Reàšcb ⏫Ô÷=œX>úAÃ"oö¿»D÷®ÀHÃ*fÐ ¿ÜLYv]Œ ó4›Ô!8,ˆWûož~—Áiäqꛓ„?Œr­7ʈýïAO $p%¤¾ ÿæ`Úl2u'X^¹¸º/,î)`I+bUÀ"“Obµ^Å»Î=À;B林Šfl]Yz'<Öú+ú®¤TrøŸ®22“Ô²ðN§¨ï*‡[5þ¶¡’º5ü"fn´àS&sÀ°óºà\ Ô%"s;C[›°Ç.ƒºîø¦”“½rUÁjê÷¨ÖŠñù=àЙO‰¥º³”¦¬ufw€¨3Ÿ’D×#I¡Ã¼àä•Ì?j@˜MY‡“æ#ôxœ‘|4W§Eÿ˜‡ø§1~DVœ1Š S8ãØìíìEíUwìZ‹ÜnŒ¾)òñÓQFxò¹Î[§•ÂæG ZÊ¥éµ;1ïf¥Öu%®kŒš•N¹‘XäqǵÏ^ Ýê0¤Õt&E˜³µ8š?I¹ª[õ"Z¥§âµB$ߥV´ŽX5§bç½!ža´Ö灻’•âŠ€óÉ[ù`)}!J±ÃP‰4BsF› -GiéT¹Ýb{ö_ý‰–Ÿƒo‰Ÿy¥™=ÇcN * :£O^{•®©ÇÎ ûó>èà[ÛèృDŠ,œV%èèø£Ä8ÉèKÖÖ¤3"yéôÖ›u¡JpBXp˜ÊœÃ$´UÁ©¹Lµ¿&·_ÊÙyï˜ñM¦iRʗ]«R1èÈ4ÕÃiïÃæamÔmж†?¸òóŒ14^ž ó29¤#€ÝŒõEքõõۋIÑ (p%0Ê«7¼µvt3ŠÜ8›CÜG7Gé&3üb®ÒӉIrý k™BFËHtvc}‰BšÓÙ„ñfì"aë~ÅØÓ1 |(ð,réTip<•òWXj÷!€òïŸË´‘%˜éÁ# úˑT€„Ž@ã9[0ÞøV‰öºVÈ»Eào¼v Ff“! ¿¨z‡‰‘1ëÄ8ýöAÛlÖ&c¿fûlkr..Ì‡ß #L[ÇË.k³½_ãÓ€°Ð˜ŠM5D +íIò @Ÿ©l`Ua.© ž-ÈåŒQë053m¼E òÊ1ÉæqœʅvÛgÞ·U­<œðjŸWIëi½Xј•ÒĒ¢Þ§ïÌgۛύ­¨‹Y‚‹;ñtK#ºJ¤HêÁíZgDYy•í{‹Èx¬}ÈË­1]¥Æ´« +SEë[½7kèö\ÚqˆƒMú¨F¥uáD£¡c‰`k,B@Iù¿C±é™˜ËkuÚHh€µA$¨|ë›fvK7Ç»J2#¿çÂw«Lõó*D8?cþâ![ ¥¤:-dì‹ O¤óE¥Ô<‡Á¬Ž¯)Ück +¯Ñ @!áfåƒ÷¡Ç%¶ü‡>H¬ÔŽ õv¬B¨†¿º.j/j/jß×ÚÁiCž}?@÷°,ƒjó“Úû£o ¸‘ƒÍ” R¹Fې^]ØêCjäKAúXk{: r6¶ñ¯‰-½¦•^"­®œ–zñ—:0å¥@è ÆqÚTlSDZñìǯ­Šoüëø7ɄÄ&ì‘RÛ߂°ËºÞ‚Ãßl‘^ƀ‚m$èf¡ñ1̇s¯.µŽðÕ ÕÉ@&]µ\Ò¤Þ´Þpb +çl†rÖíÉêõ\f,V­áH„žŸ½ëøî+*r9|™c 1îS»;¯¢‰ûä|«o—¢ÖÎrÿ µ+’Ð܊K¾Î*i‡£!Ë0nPƹžFßMdw“˜þ—K­UáôdNPIÐs®*Ó^%ûnÛZµ‚-߃¾P‡Gµ~+êºH‡_•6T^ WüÕÖ¶éék£71ä§"ÜÓ)rPu­wé]R*·LÈ4l¢*Æ«ÄîsU!+»Fb…qæ—uýð6¹;œÆ_{°“¾e‚ª +§.z@»$Q•²ô1Ý M“PÛšâ.ØMŸ‘eu@.ݼ“ue¾,‚f–ÓA­“ VùŒÔAt{ê.Œõ1Å$>Æ@?WBv=9®Çõ ‡ÇÃéøën¦­‰]2~4ÇuÎ|x+1ŸAïÏGa×°÷ Y»¹o¼Ý XG“v©òâZXª +c{&JŠÒš±´KÃÝÙäss§”ÌóUæÜáEÿ°—Ü+¬{·›ké‚¡ˆ^°š¢]mÌ\z¡æÒ9;7ÜIæ€Y”n®” fiƒÊÝÚ¢wðäJ2»$›—WØ|$²ýø‚€Ãx‡,ÞtKt¾›9C\ ž'¿nš'ÄYZ¤±%rýätÌ¥õ&îkµþádjm”‹ç‚ǃ7íN´7‹iÐ<Ù“L†1çž_´h;Kju¼>Í`çâõÐ9‰å{L}ÕJr8½Æž6ñÃ2@k_sú+DÊFWÓ%I&Ä_ä$…¿Cz¾%˜hx oP¹µú2n¾<…¬›¶I()@[ñ0JT&gU •‰ýÂÝӹߩ§TփšŽ3m> +U[‰F~Ayû(7$O¡P°wC#ó7ë¸iébºUIUK ”s¾ÇÍ.\CÆwˆ’ÍV§ê(œbºø&Éw¢¼/¤S ŒsÂÉ5Œò®Å|öàb(<@eÖÌÜú%ÿ‹²òi¶ AMîgñTmÑQfҒçWŽ´Km•Tå»rÏáÍ&µ(cÏ¿ýÃ1˜NÌ­¬'Péh\/Ë`°c%ÐÜ£Á+i؇½é}\¥-Ù òoìfwsƒï Œôb¡3u¡¸§‹€\‹iZT5¸U˜öcšêÁ¢ =¸T8h;՝ÉøiVö(ýuƒ•F‹®Ò>’PRÿ{"w¡þþ-[¿sêK¼{ úÂía¼p“½T|ÈþîÒ½Û`rÍ„›¹pÿugFø#£ç<Þí… ½b'ž^0¨Ê#"/³v ´qó‚ŠºÒ @3æW0/¿×°÷‰|ÄîÙGD> òሌêþ‘;D~Dä"²¤Àzï·L¯÷¦—™m§ÌJûÌõÔ¢žQbÐbš–1ä$ý˜¦v0?‚œ´íOHJ]µ¯,úw]ÒÇÎôóEné"·´*·³Á¾:«ÜÀۜÛCv°Í³L~¸ösÌ2½÷( 9äeé‹äÐErè"9ôœÖû³KÉRõ)û‹äÐÉ!cc}¢HTNœM¢H‹˜!¢£j#sÂCYŒŸ ìJ˜b!ú™=³1iQò +#wÿq£€^æÆ%Y«`<ÞËLŽ#S¬Ÿµx™ìÑÙÄ,'M–±ù‹ÝYƒ/”ÌDü·/ÝäMbþÑæZö:¯ÇŒ+CٚŸ‰êڌ•Î\a| °MW}²o>ž{AíŠWÿânWæ|^ýËåô­jÛí2…ÓWª3Ó­•¹‘ÂÆgƂåÑÇ!–ö˜ÈoˆÔ£`Û ˜/ÛA ç¡žøByGC$ Ó<œ?廵ÅÖKlßçì*f¸ +pÃNDéÿ¥WzŸQx´‹~FB“7Ø$¼Zr‡Lb,†˜±[ClV…Ó}ŒŸù„~ʶÞߨu §Wú ¬µmx2s«~җ͙øƒéø©¯É¼ïÔËm[»Ü™ŒÔN¯­Öù«îJnôB[®d„zœî%¼’žÉ¨îŽoîź^”,mòù¡zªê n’H?îH¹ôIŠc¶Ã-Vv!QҁÞ0ÃɍCV¼am—ؾÏÙUÌF«ˆù àö-‹êLÿ€ÅôC~´ÌÀ xoKå&‘¯Xòs"·F7&2~ÉWÂÊOÿ\ìl(ÕÁ›!fo¨`.¶}Ϫԫ^?Ëw® ÉÌ\è;¿ÔZ‘Ònu+kº?õÃkëÝ%„ W`I®xµd\cŸúCç[p·†U¥£ŠÛ? ’»‡L¿Nô[êÁ`¿–¯ô?^ç¯Þã·sZّ~\å›åõI|c¡LJ­,Šœ‰wñ·w·x$ î1õH?NjLfŒÇˆÍœÈÌC^Å¤| +‡|V“> +endobj +148 0 obj +<< +/R7 156 0 R +>> +endobj +149 0 obj +<< +/Type /Font +/Widths [250 556 444 500 444 278 667 500 389 500 500 722 667 500 500 333 +500 278 333 333 500 500 500 611 500 333 500 778 444 500 333 278 +278 722 250 556 333 722 889 667 611 278 500 722 722 500 722 944 +611 722 722 500 556 722 722 722 500 611 500 722 722 500 500 500 +500 500 278 500 444 500 250 444 444 389 333 444 778 180 278] +/Subtype /TrueType +/BaseFont /NJCWTD+TimesNewRoman +/Encoding 175 0 R +/LastChar 79 +/FirstChar 1 +/FontDescriptor 176 0 R +>> +endobj +150 0 obj +<< +/Type /Font +/Widths [333] +/Subtype /TrueType +/BaseFont /KPSHBO+ArialBlack +/Encoding 177 0 R +/LastChar 1 +/FirstChar 1 +/FontDescriptor 178 0 R +>> +endobj +151 0 obj +<< +/Type /Font +/Widths [556 556 556 556 278 722 556 556 278 556 333 500 667 556 222 500 +556 556 778 833 722 278 833 722 556 556 667 667 278 556 222 500 +556 278 667 556 556 556 722 500 667 611 778 722 667 667 278 500 +556 333 722] +/Subtype /TrueType +/BaseFont /RABYKY+Arial +/Encoding 179 0 R +/LastChar 51 +/FirstChar 1 +/FontDescriptor 180 0 R +>> +endobj +152 0 obj +<< +/Type /Font +/Widths [944 722 667 556 611 250 667 722 500 333 333 722 500 444 444 389 +278 500 556 556 444 333 333 667 722 667 778 611 722 500 250 500 +722 500 389 500 722 1000 500 778 500 722 556 278 556 556 333 778 +556 833 500 556 500 444 556 500 500 500 570 570 333] +/Subtype /TrueType +/BaseFont /AOQJYH+TimesNewRoman,Bold +/Encoding 181 0 R +/LastChar 61 +/FirstChar 1 +/FontDescriptor 182 0 R +>> +endobj +153 0 obj +<< +/Type /Font +/Widths [600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600] +/Subtype /TrueType +/BaseFont /BIABFC+CourierNew,Bold +/Encoding 183 0 R +/LastChar 22 +/FirstChar 1 +/FontDescriptor 184 0 R +>> +endobj +154 0 obj +<< +/Type /Font +/Widths [600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600] +/Subtype /TrueType +/BaseFont /XYOGBW+CourierNew +/Encoding 185 0 R +/LastChar 76 +/FirstChar 1 +/FontDescriptor 186 0 R +>> +endobj +155 0 obj +<< +/Width 209 +/Filter [/FlateDecode] +/Height 69 +/Length 2944 +/Subtype /Image +/ColorSpace 157 0 R +/BitsPerComponent 8 +>> +stream +xœíši»ªº€)“Œ2É ¨ˆà òÿÿÝmR(àtξÛu=û<7ւ +%/MÓ$…±ˆ\$ùÛº|D.Šúm]>"Ðìÿ@ÿH¹ÒtÝø¶N¿%w@¦eÛóoëô[29&=uáHû¶R¿#ç„,à(ü¶R¿#ˆ(Òɜþ·eSUU=ø3ç’0‘ÄÉ2•ˆ»X,œÌMýÕ·ÕûuóØêzæ¹llÿàµv TþNQÊJçÁÃ8›Æ@K’Ñ¿{#éæ·Õûuɉþ͈Ó7Xëo«÷ëÂ͍:¶µ®Ð£slª› 6fÁ·ÕûuéR8ñ÷ôhCb4Ó¿¬Ý!Ïþ +'i- Ä ò [o◵û›âßé€v8Ø̛u­µûg,®b-ÜË.ßld Æ%56aØû¹:–ÖÀ*Äú"ÅH´ìˆŠ§Jý—“í¨±Œ.|rO“c$âö‰rVÐæºÒ'?úý=±+Ô owXGßÄIò„("ý«ÈÇæ)Pp³³¹Ÿ$~ôÇ$IZk¿ÿ§8öľ穏qXnýH]tÓéÍv¬eÒ7´&×ýÐ^ÂeõJÊ æ•ßÑ;¼ځÃЪõZ«:YÅdÕÏx ­c¼G¦¿O¦Qi¦VäƒáüüÎêf̬Z­&¤ûÇà@Zde\,W%‰Å ‡7—ôØÊVì»X™;ò²zÌ +¯ÈZ?ýPµ˜Y¢ƒ}%N¦Pùos ù81΋ºìT—Sè-’pŽU5> írãý0üM'šÓÉã»®Û¡UŒæ×éñˆU ¶½-+õ‚^:Í÷0*1j^?('Ø}W½­žÁ]»º9~Èì&‹§ üµ|èq¶ÿы€àp‡³$Ðç8Ý`…k\ÚD×´[ÒÝaÀú&4Ëî,!BºÍe_|ˆ½7Á’Âö†#Ä¥3ˆ}ä?«ÿŒ€ 1ëÛ°NmG›ê„h4‰úb¹H3+œ¥x@vÒw|]ƟªÀMï ë3pãêV7þ¬; ÅôWi ƒž/©þ¼Ã“ H0ÞlÄ4˜¼QÇË"ztÊpA‘-°ˆÎ¯j8µ×W›ÏGèÚ»Cx9µ·<îièq6À¾-f˜?:iþéðÊdV@¤f·/IâÙ=Á”Ê^gBw@e(ÑÛÚÛ¹ûÙ`"Ÿ@ÔuÔ· +|DÏØùB{欤¹F-neémñaé›'Ý5JIok†Â„õYÈø:*{à±ÍbwlP=îtœËOå'׉ ·Þí}ÝõÈN‡d÷¸…Rlã²`V*ü®Æý¡ÒŸyéfWï.½RT*Òq{œ^Ðp¯¹«Ño¨ÐØÙ¥éóÇÕKò#û# ëÛKŸ:…àÌ#‰yýžPÚ [… +®zVgʆfú‹±~ªögœçöÞ®Ÿ»m^ _ÛB]ڃ °ÆñÑ~ÈcYKnSïñQ QñþÊ÷ë¡ÆTV0%ë ,—zg ’º s nF8ɏ‹Ìóòìý…/ÄMŒÑÜ6$+ÈkˆºSêb” +Ü vۚûŽžýÞÀCÔ>üž½¿î‘@”M…³è¬É‰¦N_~áƖд‹Er$€ûO?·½&•ÌÜ÷ï/C_}„)Ã;ovÎl6s[A1cÓî-6‡«vZZ I?»r¡â¬:-ó|n}j +2“ûÉoÌA½«—."^nÐÃir1qðRXÄVƒu:ê=[Ž½ÏLÿÖô7nKÿͳþ¶ˆnↁ¡¸°m[ygÕaé•ìu¢ïˉh6xðÎCö\k§ìÅ©]“’gKWñèƒ<§ýÌ×+Ò_¥?‰t5ó³…"›Ÿ|®}ÊÛxàÏ"øì_¤B;û£?G˜Ê_ɦ¹RðÉ|ò÷Å0ujõ¸¯È’yÛ¶S[ùôdŽUéìœC–Ώ1“v,çMx‰ÔÅǬeÞÕàZèæª_ ëd”ÈpÑE%×˸?‘Ä960-cøuž˜ùä¡-†€›6*f³l黕tïP³hª‚‚÷í å˜-±ÊïH¢p6:ÛÎZ9–0©Þ^˜NºÈl}=ÃUzŒb `mÈuRš-«8Ǖ-Bçû×ó»Ju ñüŽŸ>T?“Ãõ¯/ŽQU`´ [¤ÇÖ¥=œiÂl;‡VÂæt8(Â)ހFû,ÊXRCZø7Oga;ï2:¡àžëA¸›†Uhvv8,°Ö,Ù‘ •º + }(6—‡ƒCÃCJ~JtnÓbTr{Âì²ßz¤C¤âvXm©tò¬ÔvŸIŠ+éºé@IÿoROÄ梚)ˆ­²ô°Œ8Ç,!XBÏuŸ&aQ¥Â9€¯ƒ¨¾bñ(òÂÀ…m[¥Hvrút=±3“ÚR± `]wÁÙ=à‰Pˆ LÓ+—ûV^€ø˃ƒ8¼k––AĶmÙ2ÀDaχniö¨¤sL6̘¶˜Ïš´ÃՍ +GÝRîÂûèë0úƒ?{bU[D{©‹~4618‘«Íƒ%¦ï€jV݋»ªæ¡p;2 ¹Á g»Ð„Øé6qHuïÆ@5û̂FÁPõ%'Ջ¨{>‚š$Õþ pB6·; 6a¿ëÐÂßo9êzT—îõy¼4jZÌUë™ÞÍٞã¾<$C,ñ„9–ÇwÁ+ oχ¨êÛH§±œº‡®Ãù‰ö›@,¡ZyÎå Ó(1p¾Ö‡ÊG ™»Ì›õH@VäFè†àƒ€@V¶…!¢ö6Âm>²AöMt1Ø6Ž·ÑžiV¯ÕÖ¶J_S êâ‘h9¿¡%™ÃBÑôåµ ·›+Æ/€zÑ ‘BgüuÔIÁb¶“½SŸ“ µ}?Hw@¤B{oö ›ÁñÄïu«ç@ÝÏþüÈÑ|0¤=ñk¡Äo¼ eJe©8=P@âKÊ¾"²8Ôí»Üôˆ5aøÜ´êËfÍPŒºw +*\IÈ+ ÷‹l¯d +Ô9¯ËľÌ›zjŠËnÃô.}"rTw@GÙNùõ%–ø…™ñH'3¯úDŒg@¼Cê6ŸÅ|HÄ<õîSìG ¢±Ø+$ɕ;y¬¼Âoƒè2DL0Ѿ¾_G@„u»•^Å£'@±”r­Vpû]ðóˆ¾åõÌë„ÏC‡ïë?ҁØӉaŽÕÍÔê x*bÆ%/ÌÜP9.‚ÏFh#,¹k+GooÖr FDõôW­Ã0*ÜBÕßá VÀ¾µIµB‹”mxw@d Á7eÅÅa’V(•š-dêL +>þ˜1Ò*¬P­d‘N£æ®0%äFÈguÁŽõŒ¨E{<ž±læoÎî®ÃÝWáVÏ>1 ´þÝ<çNW_gB ¡J ÔvbäPÀ3E\¾Øç ¼lJõE‰¸Fè#»q§ï̏Ǻiî¶,L¶‡6¯ä6eØO¸° ½æ嶺lñAFˆéî!Ç&†Ñ ïÊáÕ4G-Hùâµu .\͛n¯»­o$³OW– -…±(“64ÜÎåYvÇ*e ý6ÜRÞoÁ$Ê Dɉµ8fpDÞ©uq gW*+íF¶:8ôzgÃe´ +œ,ÜθinëÔ·o–Å®,KÇ:ËléUŠ.ó¿ZÌ  úÌåî4çŸwð7"Õa£,pÁŽá­[wYœvž2³–0rÅì7 xP …bk”J•6#GÄ ~%w÷=}o}Ž¯‡¡Ô¿œ@cO€fìB럹®V#¡ Ø¡6,•³²¸¿pP|­Kê³JÈ'Í1| +endstream +endobj +156 0 obj +<< +/OPM 1 +/Type /ExtGState +>> +endobj +157 0 obj +[/Indexed /DeviceGray 255 (ÿ¬¼ñ\)Î5æÔùÜL‚8\\›ö1Ädü”msSíîɳ\tD-"ê=Ž;‹|¤ˆ)] +endobj +158 0 obj +<< +/Type /Font +/Widths [250 722 389 278 444 444 333 500 389 278 500 444 611 500 500 250 +500 667 500 278 500 500 278 722 611 722 611 500 500 500 722 500 +500 611 500 500 444 500 333 500 833 667 500 444 278] +/Subtype /TrueType +/BaseFont /RCISND+TimesNewRoman,Italic +/Encoding 187 0 R +/LastChar 45 +/FirstChar 1 +/FontDescriptor 188 0 R +>> +endobj +159 0 obj +<< +/Type /Font +/Widths [226] +/Subtype /TrueType +/BaseFont /KPSHBO+Calibri +/Encoding 189 0 R +/LastChar 1 +/FirstChar 1 +/ToUnicode 190 0 R +/FontDescriptor 191 0 R +>> +endobj +160 0 obj +<< +/Type /Font +/Widths [500 250 500 500 500 500 500] +/Subtype /TrueType +/BaseFont /HSAEUE+TimesNewRoman,BoldItalic +/Encoding 192 0 R +/LastChar 7 +/FirstChar 1 +/FontDescriptor 193 0 R +>> +endobj +161 0 obj +<< +/Type /Font +/Widths [556 278 667 556 611 611 556 556 722 333 389 611 556 556 722 278 +333 722 556 889 556 778 556 778 278 722 556 611 722 611 611 556 +611 833 722 722 667 278 278 500 611 667 556 333 611 333 278 556 +556 611 667 667 722 778 722 278 556 333] +/Subtype /TrueType +/BaseFont /KFOANT+Arial,Bold +/Encoding 194 0 R +/LastChar 58 +/FirstChar 1 +/FontDescriptor 195 0 R +>> +endobj +162 0 obj +<< +/Width 1126 +/Filter [/FlateDecode] +/Height 792 +/Length 101208 +/Subtype /Image +/ColorSpace /DeviceRGB +/DecodeParms [<< +/Colors 3 +/Columns 1126 +/Predictor 15 +>>] +/BitsPerComponent 8 +>> +stream +xœìw\ÇûÇÄÞP±Dc‹Æ¶Ä +*ņ P‰ + ņb,+±P±bìX{‹]±aWV ¿On¾ìo½Æ×8ž÷÷ºÛ›Û2ó¼ofgõþý÷_Ž ‚ ‚ ‚†)AAA„,H™‚ ‚ ‚ dBÊDAA!R&‚ ‚ ‚ ™2AAAȄ”‰ ‚ ‚ B&¤L:ÈÐaî]»¦éRA +1ÑÓsàÀš.A!R&Mïå+W4] +‚ B!¦O›öûï¿kºA„LH™tR&‚ ˆ|)A„–CʤƒðÊÔ¢yóž½ziº8A„üüü¾~ýʑ2Ah=¤L:¯L¿ýöÛìY³4]‚ B +¿üúë?ÿüÑ2Ah=¤L:)A„öCÊD‘_ eÒAH™‚ ´R&‚ ˆü)“BÊD¡ý2AäH™tR&‚ 퇔‰ "¿@ʤƒ2Ah?¤LAùR&„”‰ Bû!e"‚È/2é ¤LAÚ)AD~”I!e"‚Ð~H™‚ ò ¤L:)¡%dff²¦P¡B²ÖêéééëëËÏ'##Cøéñ-©)‘aBBBbbb‘"EªW¯^ªT)9ù(²i‚P¤LAùR&„”‰Ð&O™²sçN¼‰9v¬jÕªÂU¨y¬­­ã=²µµõóõ•ŸÏ?^¸ÄÈȨ‡µµ›››¡¡!¿ðСCKþü3>>ž}„5õìÙsÂøñH̖ 8ðŠèÒà)Z´hýúõ‡jݽ{n%AäR&‚ ˆü)“BÊDh ¼2yyy :T¸êÎÝ»}úôÁ•éÒ¥K...œÈµ¾}ûvûöíØØضmÚ³'8’ýT»¶ƒƒC­Zµ>~üxòäÉ푑Mš4‰700àDÊô÷ߏ1‚e›™™ùOJʡÇ߽{çïïo#*A¨ R&‚ ˆü)“BÊDh L™5jT¸pámÂU‹/>pðàÓ§OT¦7n\ý¾ƒhúôé0"dÛ´iS|tvv¾tùò±£G…ýNKþüsõêÕ‹÷èу)Ӄ.^¸ ÌçYBÖV­ZõÀ_åñ÷DŽ e"‚È/2é ¤L„–À”ÉÓÓsÑ¢E±y¨v,­¬úôî½*0P¨L>|ˆˆˆ¸s÷®¾¾~ëV­úôéS´hQN†2!gä¿fõêN:ác¿~ýÞ½­osJHHðõõµµ³³²´äd(ppt¼xñâÛ·eÝ"Eª€”‰ "¿@ʤƒ2ZS¦£GŽ@„có®^½úۀû££­{ôà•)>>꒚š +ÊHO?Ó¬Y³-›7H**.qãNž<‰Ì˗/%óçÏÙ´ÉÞÞ~Ôȑb÷MñHU&dÕ¥kפ¤$I•"•BÊD‘_ eÒAH™-)Ó­›7áBÛ·mcËç͟ñâÅÈíÛ5nÌ+|æÑ£GHS£F |ŒÞ¿üøñsçÎí߯” éÙ½Oÿ»—éÖ­wïßûúú²î#×rvvfgþ?þغuëV­ZY˜›—)S†/¤2Á” Zp­9³g«kÇĐ2AäH™tR&BKà•ië֭ФcGV«V îÔ¡cÇaC‡2„W¦'OžtéÚuØ°a^“&±ïfff†…‡·lÑ¢AƒlƼʕ+³UÈ!11±páÂýúö:u*›Ú}åè±cˆ‹‹{÷î'šõÇèÑlÄ›1¿Ù ù°€µN:[6of½U¡6H™‚ ò ¤L:)¡%ðʁ&A‡ Eð§!CŽÇÄTªT‰W¦“§NÁm–þùg·nÝ$󑘗ššºbåÊàà`WW×ñãƉ¥Gµöøñãã'NlÙ²%!!aÚÔ©ƒæDʄ|°E–¬P¡Beʔi×®ĬH‘"*Û !R&‚ ˆü)“BÊDh ¼2ANÿý˗/Û·móž1ãს¡¡¼2=zÔmôè•+Wòí„Hþ_ïØ©“žžÞ©“'¡d'NœhÞ¼ùO?ý$L“œœÜÝÚºtéÒàdOÿ@”‰ "¿@ʤƒ2Z‚P™BÃÂf͚uøСþööcǎu4H¨Lÿýwß~ýX7ÿõuAAÕü±[·nR• Xuó\\Üõëב­‹³ó„ ÄÒ rpHHH8yâGÊDh¤L„–€*ôÕ«Wš.!N•~016Öt)ˆÿAʤƒ2Z‚P™Þ¿ßÞÔÔÌÌìôéÓgNŸ._¾¼P™Pu27¯T©RxXã»/^¼°´²6tèĉ¥*Sttôø  TKÿüóÛ·oÖ=z¼~ýzÆ ¿´lɧA0pР®]»,^̑2Z)¡%Œ7n?=˜NûèÙ³çâE‹4] +â2é ¤L„– T&|2tèÙ³gMMM×q¢‘uÂóØs–°Ö¾ÿÏ_¾¬X±âŸ”xQ… + L.\€n±lÿÍÌ|óæÍÝ{÷ʖ- Åbƒñ._¾<ØÉ îÔºukcãB÷ï݋9~ÜÐÐpgTT•*U8R&BË e"´R&턔I« eÒAH™-aéÒ¥G… 1e‚ÿ¬Y³f”›[wÑP&ø’¥¥¥»»;KøðáuAA×®]300èØ¡Ãĉk×®åÓ¦M»q㟭ž¾¾aÙ²Í[´8`?xüøñºuëŽ;–””„åʕ³¶¶éêZ©R%–`’—׳§OÃÂÂÔµBªV¦ƒ-V¬¢‘Ñ¿ N45Ê¿ÿfff²ÿ½üû=¢¿$¾û(‘&SlÉÿrý÷ÿ3—•³h¡pëâÉDó^rßE,M¦ØNðV°uéiøŸöý·ø%¬lœŒ4‚ý"%Íÿò—øÖ×oß¼&MjÖ¬™Ò¯!eÒNH™´ +R&„”‰È×@¥ôô Eú¹Î!S?ù8Ah'ªV&c¼+VL¢+KOO¸ ;¾O„/KùNVšÿe.ú$žŒ%á·.-”Ì¿Oƾ,+pëâÉ8î¿*E¬0ߧÏ\ð»ÿ—¹ä·„ûæû­óÉÎÅÅ}HNZ·NéÇW‰ðÊdfjº|ùrM§ ã6ztll,Gʤe2é ¤LAڏª•©Yóæh¦Lž¬ôœ ÅÙ²eËé3gVjº òà•©cǎk׬Ñtq +:#FŒ8uú4Gʤe2é ¤LAÚ)SA€”‰È)¤LÚ )“BÊD¡ý2H™ˆœBʤ2é ¤LAÚ)SA€”‰È)G™ÜmÔ¨"EŠ`a||ü”©Sß¿¯åÝM¤L:)A„öCÊT e’ÃãǏŸ"<ք7}×mX¿>éÇB… +ácff&<ÍÅÙÙÍÍ K”ö s…î)ß¹4bøðQYK’hyw)“BÊD¡ý2H™äÀ”i–Oݟ†Çddd<þ|íºuOž<ÙÕ A.K™ÆŒÓ¦M±¯×­SÇÐÐPª2M™2¥I“&béÔ¯_ªT)¼ñó÷nݺõHWW–í½{÷ü,ˆÅ%ƒòèéé©ã÷Ë@ǔINç’$ÚÜÝDʤƒ2Ah?¤LR&90eÚÑ´iS~!S ÇOœ8‘ËR¦?ÿü³{·nR3‘ªL0¢vmÛJMþüùßîܹóŸK–ðË333'Nš´oß¾+Vt¶²RæïÌ!:£L +v.I¢ÝM¤L:)A„öCÊT e’ƒTeJHH°´²r1ÂÓӓS2M÷öÞ¾}ûþèè:uꈭzýúu'só–-[nÙ¼Y9¿0Wè†2å¨sI-ìn"eÒAH™‚ ´R¦‚)“$•)55uöœ9û÷ïßµsgݺu9e+ñ¶íÚ!kÖ® ðš4iØ°aÊø}¹$)ë\Òã8??¿F©g£šên"eÒAH™ÝæΝ;›6o>÷ú͛’%K¶iÓfÐÀlÔ{þe÷ž=áá˗/¯P¡‚¦ËB¨ R¦‚)“$•éãǏ{÷îéãƒø{Gd¤žžžÒ•)33s”›ÛñãǑ~ø°al^ZZÚÖÐÐŋ7iÒ$tëÖ¢E‹ªæ+D¾P&5w.I¢þî&R&„”‰Ða¶lÝ:wî\òe;™›W¯^=ùÇ={÷&%%M›:uðàÁš.]îaÿnž8~¼J•*š. ¡&H™ +¤Lr`Ê/Ò××ÇGD¤ð¼©\¹òÚµkԯϩà¹LàÓ§O“¼¼‰î•jÖ´)6ýúõÔÔÔV­Z-_¶LlÞõ£ýÊÄ:—gΘÑPйT¢xq•þ뗑‘ñâåKþcfFFȦM¡¡¡ƏWuw)“BÊDè*ǎåæ†VmåŠü½¹ð¥ÎηoßÞÙ°aC͖0א2@H™ +¤LrˆenÀ€;ÁaP·o×oØÂ7n l}z÷nРÔLž?¾eëV333æH/^Þ¹s§P™þÚ¿ÿ'Á´ Ý­­Ë”)žššêííÍ⌲eËÖ«W¯dɒǏ*“P·vìØ1uÚ4¦L-Z¶455]¶t)Ÿ-òAÔBÊT  eÊ|璇‡Çàß/T¨¿êõë×Þ3füý÷ßZØÝDÊDäR&Y2J†”‰ÐI233;™›>tH-·oߚ[X@Z¢vì`cÞΟ;'¼/¼¿½=‚ª“'N0eò?ßÎΎ­ÊV™¶nÝúK˖lmFFF›¶m›š˜!8 óš4©W¯^FFFzzzl`(_™:vêT­ZµÐ­[ùR/S„”IqÄ:—$hmw)‘SH™dAÊD(R&BWY³fMÀ’%n£F¹gÝ\ĉB¥I“&íÙ»M ˜ˆˆˆ3g®]»¶c‡,Á«W¯ (ÖÖÖKr¡LìÎ%¶öâ¥K,ÀµîÑãóçÏǎåKâ9qâÞ½{ÃBCÑ`ÈW¦éÓ§Gí܉ò³¥»¸ºž¤L R&EÓ¹$‰v7‘29…”I¤L„’!e"t•oß¾ >üüùóæææƒ={ö,,<<66KW­ÒÓÓûðáC¯Þ½Q³Í™=»uëÖ÷îݛ5{öÝ»w£vìhРA.”©páÂ3gÎìÞ­ÛíÛ·§LŠîð¡C%K–üc̘cǎv03KKK Ù´iÙ²eÈaÃúõíÛ·—¯L=êѳ§‰‰É,8Ҧ͛W¬XÁьy R¦lɶsImën"e"r +)“,H™%CÊDè0“Å;w°%¥K—¶··÷pwçgŸ{P‰] F>3gBc¸¬ç2åH™lll>Œíb-¤kÑ…?ÿü3Þ?~üØÙÅåéÓ§… +ÊÈÈhÖ¬ÙHWב£F7ÎÕÕU¾2á#2G,øæͼÿñÇ--, ]¤L +R&9à_´x1®E:—$ўî¦¢LæÉÉÉÊ.W¾§^½záaa9ý)“,H™%CÊDè<ß¾}ƒÛ ….Y²$ Dêã,ããã_¾|Y¶lن òñVzz:ä§xñâ¼_á#„§L™2’ ˜2®ZÕ²e˛·n•)]ºQ£F‰ø233oÞ¼™’’R­ZµZµja Šd``€R}ýúõÓ§Oxƒ,±ä’ÏŸ?ߺu ¿¥yóæøˆµÐ?aþ„nCÊ$‹\t.I¢%ÝM:¯L>|ýæÍСCUS´üMýzõöìٓÓo‘2ɂ”‰P2¤L¡xe²°°ÐtY„”I’äÈáÃgãâ8R&eCÊD(R&‚P +wïÞ]¿~ý!C5j¤é²:)Ò;—$ÑTwSÁQ¦_~ùeë–-*)_~ÃÁ‚ 6p¤Lʆ”‰P2¤LAÚ)CEK’h¤»‰”©Bʤ¢üI™%£ReÊÌÌds|éFFFJÏöóçÏ>|Pz¶¡D‰ü¼Ja"?ß¡Y +*¤Š«à˗/IIIJÏV#+VÌÐÐP9“2©¡sI5w7‘2@H™T”?)¡dTªLÖmÚ(7OMѨQ£QQJÏöèÑ£n£G+=[€0ÁœÒ³]¸paÐúõJϖȵk×> +•”KìÙ³:3ƒV¿¾}ç͛§Šœ ¸2©­sIuv7‘2@H™T”?)¡dH™„”)[H™tR¦l!eR:é\’D=ÝM¤LR&åOÊD(R&!eÊR&‡”)[H™”Îœ¹s!%K–,÷ýˆÇº?ÿìç뫺>Ÿ .Lðô,œõ`4€èùóçx³{÷îõë«b£¤LR&åOÊD(µ)Óøñã›5mªÜüÕÀ–­[:Ä©E™ÐL–(QBé›P53fÎ|üø1§zeªV­Ú|Õ£„|âìÝ»—S‹2-[ºTE÷©”yóçß½{—#eR¯^½zòä‰ärø̒€€_ýUE۝4i’~¡B¶66’«³‹”©Bʤ¢üI™%£6eBŊêU¹ù«ùóç‡lÚÄ©E™.^¸Pºti¥oBÕôí×ïï¿ÿæT¯L?ÿüó>QàN¨™%þ¹zõjN-ÊtêäÉJ•*)}ªÆñ÷ß/\¸À‘2©‘Nææ ,P2yMžüã?Žùãå/R¦)“Šò'eÒ§N233Ót)”)“|H™²…”Iç!eÊR&õCʤ)Ô£L/]š¦‚Eý YÜ¾]NR&åOʤ1ê7hÀ‰¦QÎÝ×ÓÓÓ«V­zðÀ¥J 2ɇ”)[H™tR¦l!eR?¤LšB ÊôðáÓ§Nùùù屨Ú@Ù²eϟ;'')“Šò'eÒ½z÷¾wï^ŸÞ½súÝýû÷#æ322Š9vLeË ¤Lò!eÊR&‡”)[H™Ô)“¦Pƒ2álüôéSË©%2ɂ”IgéooߺU«ˆmÛ L.9±¦Ð°°E‹¡ÚݶmÛ_*ˆ6ò)“|H™²…”Iç!eÊR&õCʤ)Ô©Lå  ˜·òæ´È÷îÝkØ°a§NØ’ÌŒŒ5k×⍝]åʕù”[·nMIIA2$fKã½ÿÞ´}{c|¼víZll,GÊ$R&ʄF½fC†Uܚ˜/­[·îcZ‚oR&åæ¯H™²…”Iç!eÊR&¥“‘‘W9ӑ2i +u*“Ï̙Õ¨L“&MÚ½gOÿ~ýæΝ˖|ýú•)жˆˆ¦‚Y­:w~öìÙ¼¹sûõëǖô±±¹sçδ©SŒ!!!ó}}9R&ِ2é,L™¬»w¿yó¦‚ÖÄûRË-N:¥)eòõõEûŠª_êÚ¼+ꅆ ¶jÕJr)⠁«W¯.¹Š” ¤¦¦"(÷pw—úóI™4ŽR”iq@€­ 0ÉU¤LŠPД ÍÚÙ9sçÊz)“¦ eâH™”)“ÎÂ+Þ+bMB_âDîiJ™:vêôîÝ»±cÆ üEŠ[›wešîí½}ûö=z !/_¾¼p)ÃÊÊêÅ˗£Gv1Bì2q"ejùË/eʔñññÁ%¦§§'\Kʤq”¢L={õzøð!ªM·Q£Š+&\¥¸2ÙÿöÛû÷ïùE +®\¥J»ví„sóØõ훜œ,ü"®;###+KË-Z”-ìÒµ+ëÊàÁªJ+b9b¦Â… +þëòµ2!(\³fͪÀÀÕ«3—3Ï5¬ùÐ××wYÊ?ÿœ9s¦£££÷ôéŠÿºü«L3}|P Õ±T©RP em"wðÍe™2ePwìÐA˜€”I¥xyyÝ» V}‰^>R&Ž”Iþ ƒƒ‚ºwï>ÃÛ[ìÿt)“ZY³vígÁœ*ˆ·ÐþµmÛ¶J•*Âd8é…KþûDZbÅff›ùä#¦Lœlk’ô%N ”‰½‡ÕàôÅ%͟¾ÊR&ö;¶ÎO?ùùû³¡¤L ¦L콁B´éÓ§q¤L"xeâD§¨žžž««ëHWWÖ#Gʤq”¨Lì=®„¿3gÎd5pŽ” ޝ;ù%™™™¡¡¡sæÎE}»uëVÖE‰j– ¿ûùóg§!C®^½º?:ŠÅ‰” æ&óál8hÐýû÷ÇĈ5%rȧÊäéé¹wß>Éå؍kV¯Öl-l>8Ñ9Ó©cGŸŠ+²%¤L*á枽{Q!ÿîèèîî.ìå#eâH™‘0Ún\¹ÎaM666bCHH™Ô +êSÔª’ËG»¹3†?6-Z¶üòå ÎZö¿â“EÿÖ֊lKR™8iÖ$՗8­Q&N$–8ƒ§N™‚ë\___¹Ê'ö¼Ã Aß¾}˅2‹Ûû}dŒ‹/Þ¨aÃnݺ +Œý௿^¼xíV«V­Oïޖ––|7×ÁƒOœ<ù]Vúú%K”0iÚÞ"9LQ¥+':h‡¼¼¼üö[LLLŽ” þÿ,!A¸GÓÐÐд}{„ü9?kÖ¬/‚¿ Š.Œ¶¿W¯^ÂÿPM‹^*\.mnnnll¬ø¯S®21Š-Z®\9ßùóÛµkGʤq”®Lœè*Àéê9a‚ƒƒÃù r­LŒñ&DGGó1Te낂P?¯\¹ÒÊҒ“¡Lœè¶«µk×n + iݺµ‚¿.?*Ó±cÇF¹¹ÉZ‹kðê•+RÇe©1eâXÍ©¯?yʔßìíQ0R&•Â”‰ýZªT©9sæ°«†#eAʔ-¨l×oؐ™™É‰¢ Ä~~~5jÔà2©Ô§Õ«W ãD"„3ûöíÛhÝ/^¼k;v,Ke2nÒ§/ÿE„ÚgϞëîŽj7æØ1EþڗªLÜ÷Ö$˗8mR&ÆÝAuêàôåã£\eb-R¤Dɒ“¡Y7+®L[CCgϞë +Õ4[‚KuSZZ¤(22²|¹rœè ººº¢¦øá‡7j„àêµkïß¿·°°X±|9›g‰…>¸fø{'ð­ÇC¡6lZ¼xqù…Q…21pjÕªÕ·o__Q­Ê)¦Lö¿ývãƍ¢+3>þ7 ðñña qÎc9û›àßÌLèÓǏ¡%†„°4;uJJJb·sY%`çཇ»»âµŒ*”‰´077ªX‘ž¤LšBÊÄÀU€¨ÔÑÁaöœ9lIî”éä©S¨„GŒðôôäd+‹wDF6i҄“­L#GŠ‰‰9tð p€¨|ò£2I="B¼½½qhò¾¡Ü!©L Öx-ð÷wqu%eR¼21à«­[µBӌV˜”‰#eR¡2qYCHƎ3lØ0v§()“ZA}ŠÀzû¶m…¬mlm_½zu<&¦B… +œ4eb°x:88¸]Û¶ÙnK–2qYÖÔê×_ÏÆÅIõ%N LoDäàGæg—ÄÄDÉåz"p1#nÆÇ.;Ã@r‘àêÕGŽ‘º +!ozz:{ŸSeÚ°~½ð®Áoß¾-[¾NjËwíڅ&MØ£š5{vDD*»þ¢ZŒâè}ûêÖ­Ëg—@²¨¨(DWˆ±ä†W¦Ÿj×^¸p¡"å—ØÛ·o%—³b󗕂ʄjú¬èi<8£p”QYÃ]MDD8ç¡U¡[·²ØDkØðáeʔA ˆã‰”©|ùòbøäɓ¡Ã†áò9|èšFE~¯LÖÖÖÇ Sä+b it”¢¨™"8R&ÍÁ+SÕªU—/[–»L<ƍé+¹œUD|³š;eÂõ…UݺuC̉š†Ê•+ÏÏR—Ìÿý'%ÕThXX˖-¨±KÊÔ¬iÓiYždÉ> Då`nnž£°•W&K ´Ðâ-¥ ékFÿ•±J<™(0úøñ#Þ; Ü¥kWɜ³ÉAb®t~·K•¬)GÅfE•¾*‡?<íãG&À’°s¦xñâ8åÜ\žGH™ö|_ߢ6f!ïÍ[·8À‘2‘2ÉEL™E‹­R¥Ê¢… MLLH™ÔŠTeâDÓt̘9s–Ï€8ÙÊÄnM Ù¸±´¿²Ä£L\VhŽÍÍÊú›_ ^™‚7ndÁ‡ÚHNNVäÀ)RDrJ"E@+.v«˜Tò¨Lœ¨¯É¤iSÈ ˜)ÏÅÅòiRRRÚ´mË:š8Ê“’Ú¶mÛ©S§5Ù ^™ +*”ëP*ù¡ #×Êç7ÎËËk˜h€“˜21pQàÒ8yâž'U™NQ??¿%K–È:ÛÅà•)קÎO±!‚R!eÒ¼2éëëús—‰‚WAuTòœÔ1ÛŊ³µ±ÁeÂ҆2I©dɒ˜ÆŽ‹7ٖ–‡W&\%ÙUðý¨}á ~=ÅV‰%ƒ²šµ„ðBS07ñU— Ñõ-»=87ú>]Nsàÿ{øð¡œâ±ðÝMöØÂÕS)2}‡,eb}]ºtacH>¦§§óA”÷Ÿ””¤pz-[ºTÁxH–2 ï_’3ó¸V)Ó2S¨N&Èš^¥ßËÄî#0`À°¡C-³&ðÍ£2¡nòóó;rô(_"Æêݧ*_ccãvíÚµiݺY³fb½’Ê„s-Ï¬YpfE¬@EʄC€ÊÂÓÓ³JåÊŒÃæN™pnŸ¿p}JJʱ£GÙD|8çÑس>Oüäϟ?Ÿ9s&hýz¯I“†e“T&´ 'NžôòòB{<&†||T¤Llœ“çϟWõôæ/^¼Ú«À&JQÅFsÁöÈÈéÓ§ãálTçvU¤L… ÆUà>vl½zõFdՙ¹S¦Ó§O1ÂmÔ(wwwNâ^¦ŒŒŒ‘#G"“ ±{™pþ£¿t钟¯¯­­mŽ~]~T¦aÇ£Z“ÙZeÑL¶HU&œ3ˆÑçΙƒWœþ8p --MÍ•dÛöíW¯^•ºJOïÑ`ýúõDz 8QQQ/]âH™(K™P¼ß¾ÿY³8x¡¯¤8°±S§NÃVR/“š¥L0x߇€ð±xñâhQþ?ž8qÖ4iâDÄôŠô/1¤*“ä|²¬IK”‰Mg‡+|ü¸ql<›ÒgÌcÖAVuêÔÉÝ$ãL™ØÌ~œ(âGÄóíÛ7,qtp@ÆOâôúõë¥Ë–íÛ·ï˗/œè:„e¹ººþÒ²%KÀ”‰ $`Y!ä³Båêâ’ma”®LìØÚØLðô,_®\N'‡2]»vŸµ¿¿¯UªT™3gN‡¬gÝàœ—ltMLLªÿø#ûezõêŸ. +¶/ð÷75Š tebs©!’FÃ+T 3æA™àKÚ?êOg”‰ ÌèÑ£ +”—IÆS¦NE(Ö¼ysNÚô‰II={öLNNÞ±cGƒ¬çÌHNÿ€+åD-±wÏÅç~àò§2=zô¨›ìÁ·¨RN?ž÷­ä1eb½‘ÞÞÞhÙÙÈ=]U&-AêÀ<ö7ÂÐÛ·os40O˔)_ Ì3(T¨CǎÞÓ§W­Z•îeR+²”éúõëýEý',€˜÷0>ÞA4 ÐæM›„)¸-Ie’5?žTkÒeBeפqcØH½zõøµJT&4ieʔñññ±´°`MZ^” áTõêÕq±Ý»wïøñãÆÆÆ+e W@våʕ /ž>}úŠè·,X° OïÞ\–2ÙÛۗ/_>3#ãêµkçϟ755] à-ÊU&á_¤lU.”éîÝ»C† Á{αcǞÎ@´å: Lìém0|~.û<*N]͛Ñä<—éàÁƒcÝÝÑDDD°¿9¥Î˜9múô¶mÚ‹Ý{#‡ü¨L`ïÞ½ž'J.GEtøСr¢¹I5ß|°šÍ8; ç8%eR)bÊÄ*çnݺM™<Í"͘Gʔ-bʄšu;vlÛ¬°”I­ÈR¦e˖­\µjŊì±î’÷2±ºf͚hz¼a]L™äÌ'ÎI³&Í*BaCCÙ3ftéÒE,PŠ2!È@«6zôèaC‡ +GsåE™„óXÕcnn¾bùr^ Xï“ÐbV¦ŒÌÌ3§Oãú˜‡¯°g«¡BDĦH<¤,ezõò%êMï3ø¿H¹P&áÀ<4*#œ/^¼È["Cê½Lì´ç±y8XŽŽ°Õ°Jŝ²” :ñ_$=w®É÷O…Òeš=gÎÖ­[ýýülll8Q÷fÏ^½ ¥¨| v}ûŽ?g)úVÁßߟŸ‡‡xî¼y/^¼`qx¸»³á‘±±±C‡ ó??Ý鎈p†··KŒzcê´iì/Ê•+ãÏ¿Ê!ÄIÒ»woáU#e‚g²Sý?Õÿòåƍ·nÝÂÎ åçx”ªLH?ÊÍ-&&fê”)NNNœ eB²ß†ÿà¸ð"[ò©2q¢1¸èØÓ8Q7xÛ¶m¡"l¾Y šÈ-üdÉ Ljó »zt´‘‘„çÊÕ«QQQˆËq¥C™ L„PÿxNœˆ þà2ž>}jÝ£š\&•*V|þâÅäɓ!öGÁZ¦L%J”pwwï(ê † ÁÇ üheq »vëÖ°aC\˜Ð38ۊ•+Q˜|ªLlѼ¹›››X7—e²°´ޙ‰H®zõêÌÌ°ç…]"h‰ª][r–T>¢'ÐïÞµ«J•*M›53mß~¥h¯ +Úõëß½{÷îòŠõ´ä_eb¼zõêö;ŊmÖ¬Y¶O«Sh>°W½§O—õ@aR&•Â” —{ð:šKÖ7ˑ2‰ eÊö5Úôž=zà’ü†”I­°i‘Ø´x(ÙçOŸnܸ1Ǫ•+-³žT-U™¥u·¶F ¹};{¬¡|xeRėBkÒ 2ÁgøIu%É»2ÉÉ_YÊIJBè‰×];w²…ݺwGð„ºjÕª|2œ¢...gãâ.œ?†_êŒyÏP³ öÿkÿþlÅ@)Ê$gå]™@ôþýãǏ711  c­šTeÂn2dHß¾}™gJ1oCp°¿¿¿••ÕÊ+üuyW&6>M2’f¨G™ø^ !†††çââØ{xÂèN:áÂG Ç·”L™ºvíºléR–2!!ÁÒÊ +A¼×¤IgΜÁèããÙ`kÙÁ‚ž™™™1e>ƒ˜= aSHÂD??¿à9Âß~æîáqàÀ|ªLr®ŕIkÉïʤ…ddd >G „”I¥Lœ4 á;ÎgOOO±!š¤L)“ T>yêÔ\‰‘#<¤LjEêÃ7ªU«†E8š¬ç29ztôèÑ 6„5É©—L™°9}‰Á[Sà 4¥LòÉ»2ÉA‰Ê¢££ÇO˜€:+,4bpüøqב#]ÁH‘²D‰Ï_¼€3ìÙ»wäȑã<<8ٓŒ£zB%¥ˆ(E™ä e…‰]qâÄ >–Â9œ0a[›™‘ñøñcèÂÖ]»v±Ûߥ*ì§ú­[·V,_Þ¹sgE~BޕI>êQ&üðñãƉ-/R¤H=øAAA -Ò××ïÞ½;Z&6´Œ)>¢¹âSv·¶.V¬˜pß"Ø}úôéã'Op6=vlu` ¹¹9S&áwÙù€¦ƒ™™­Ý÷˜ *]»w{yyåSe’)“"4eÊR&•ÖÔĤqルH™8R&x–P­jU9·F“2©•˜˜ác%ßÔ¨QºØ=*ˆBpÊJLQæ—/_Ðe;úqd½zõ¾(îK fM³·oސ2)ò-YÊÄzNž:åííí(šÀÑ?BXþ¹FœhÒ<6«s`Yʄø¸_ÿþ·oßÎV ò…2çϟ÷èÙgþþèè~øAêŒyµj՚2yr§NØGYÏe 222úkÿ~EžÞ«ʤȌyØ¥¦ff?~ܺu+?+#S&áààèøæ͛Çá¤Ý¼y3ÚNöØPlv—P™„'!광£F1e²´²Â¡Ü²y3Ÿm\\œÓ!¤LZ)“ú!eÒ¤L)“2 eÒYºt횐0`À€%nB͖›·níÛ·oîÞ¹£‚¢å -T&('ºd¼Ž Ÿý˗/¹Âu%Gç¿}ûöŋØ6$§0Ú¦L÷ï߇äKJúèÑ£””و8oܸ!œÙ Ârá¿ ·n݂aò{RȽ{÷Ð\Õ¨QC‘)³ +Ž2ÁäÃÂÃ+T¨€&0jÇv«$S&˜yÇø”½DÓìÙ½;,,ÌgÖ,Ú`x{ÕªU9òǘ1ì™`ÿS¦¬‰j¸ï• ™èëëïÞµ‹Ï–­%eÒBH™Ô)“¦ eâH™”)“Îâëçá)#û¦ ùܽ{×ØØxÑ…Ê-UÞÑBeÒ*´M™´¢L'NœpquuqqiÓºõ°áÃÑ(¢i䲔ÉyÄOOO–ÎßÞÔÔÑÑÑ{úôÁNN×®]Ã‘å§ ZµjÕÒeËV®\iei)_™f̜q66–ÿÀÏß?88˜”I !eR?¤Lš‚”‰#eR¤LD>ƒ”I>¤LÙ¢ʄW©ç?t¥qãÆïß¿ïÕ»·¡¡á®;‹)žE¶>(ÈÔԔ)SñâÅۊäåuúôéè}û ãƏ߿Ԏ얀³qq£GNKK èam-_™~üø§ÏŸ‘-N{÷îáT”5!»Š eÊR&žGññAAAG)T¨¯Ÿ_•Uû¤Lš‚”‰#eR¤LD>CmÊT±bE-yBbŽHLLLMMåÔ¢L?V«¦Ÿõ¬À|Ä˗/ÙĕùW™ò˜'l8uu*SµjÕ +åëàÕ«W̺ ²2=~üx}PÐáC‡ø%:uò[°@E›#eÒ¤L)“2 e"òjS¦üŽ”)¿Cʤ鲨 +u*S~§`*bGÈÒÁĶmÛ.ÉzijÒ!eÒ¤L)“2 e"ò¤L +Bʔ-S™>|8nüø1cÆð÷#é¤LŠSДéùóçÁë×ïß¿_øTR&DÊ„x׺{÷¼•7,YÓ¥Kþ¸§§§ÛÚÙáÍ¢E‹ 4|Jg—W¯^;–¯ùǺ»?zôÈÅÙ¹W¯^øùYđ2Ɇ”‰Èg¨T™På­[·N¹yjŠŠ+ªâ¿®‡ññÑ¢gvéM›6UÅíjZ®LU+Ó³gÏvîÜ©ôl5B£Æ­,-U‘³¶)Ó˗/ƒ7l@õ•‘‘Á/Ô××·îÑãÅóç—/_æH™tu*“@Ê$ R&"Ÿ¡Re"ˆ¼CʤqT­L„"h2½~ýzcpðžÝ»…²¤§§×­{÷aÇW¯^Ý{útvG)“NBʔ#H™dAÊDä3H™-‡”Iã2iÚ Loß¾ Ù¸q×ΝéééÂå]»uƒ,Õ¬Y“}$eÒmH™r)“,H™ˆ|)¡å2iR&m@³ÊôþÝ»M!!QQQlzL++«á#FÔþé'áBR&ÝF ÊtçîݥݗÑ×ׯ_¿¾œ¤L*ʟ”‰P2¤L„–CʤqH™´M)Sbbâ–Í›wDF~ùòE¸ÜÜÜ|¸³sݺu%¿BʤۨA™ +¤L*ʟ”‰P2¤L„–#K™Ø ]úúúÂÄX¢§§Ç/A­…”búÁ,[ˆïâ‹Â ÙwÌPՅÉQ†ŠFl¡Ô¬Y»–#eÒ(êW¦> ¨Ý!&KtœëÉþ㜔I·!eR.¤L*ʟ”‰P2¤L„–#K™fúø”.UÊÓÓS˜ØÂÒÒÏ×·U«Vü’‡ññ6667®_&Ûráüù•+W +1¢Kçθø%¨ñ4lsìXÕªUù…'Nžô÷÷ß-üs Lž>>š.EA„”Iã¨Z™nݺµ`áB¥g«:tè0lèPUä¬:ešåãó×þýl+¾Ÿy?w2é6¤Lʅ”I‘ÄÉÉÉ™™å˕ËÌÌÄ)tçö톍ÙÙڊ=EP)¡dTªL>|hݦróԍ5Ú¥éRDH™4Žª•)öìÙ¡ªÑ õÓ¯oßyóæ©"gÕ)Ó´©S9‚7íÚ·X²$ï:ôæ͛xSµjUsK˼g(I¿~ýDʤH™” )S¶)q¾Mž4<===&&æúß¾~­V­Zûöí±] Ÿ-¤Lò“}ýú)kÖ¬9ËÇa€©©i#£-›7ÿuàÀ¬Y³¢÷í«[·®Ô/’2JFmÊÔ¦uëÊß?Á3_pãúõøG8R&ÍAʤqÔ©L]»v>o7¿pêÔ)„_\þT&÷±cÏÅÅáM×nÝf}?u^yºú•éÞ½{½z÷–ºÊØØxu` ‘‘Þß¹{·OŸ>ÒËìá1räÈ/_¾˜4mÚ¥K—å˖aáùóçR•i¢§'¬CjúwïÞuèر~ýú(j‰%„«6oÞ|hÝ£ÇömÛ਽ûôIJJB3æûΝ;}llÖ­[×ÁÌLêI™4®´¢E‹jºʇ”I>¤L'ïʔ™™‰Ö¬Y“ššÊ/lРâ­zõê)­ º )S¶äkeâo=8h»‡GÞ3$eÒm´G™À°áÃϜ9séâÅR¥J)]™¶lÙ2gî܀€€ÖÖb«222ºtíŠðý\\\á…ü!R!e’Ÿ êѯÿW¯^áz¼zõªÛ¨Qîîî84+W­*T¨ªšâŋKý")“ÆìäT¿~ý*•+çîëŸ>®T±¢½½½rK•wH™äCʤqò¨L¨µ|fÍ +·´°prrjØ°áçϟcbb|ýüÐÎEïۗt5Cʔ-ùZ™ìûõ{úô)Þ8 2ÊÍ-ï’2é6Ú£L—/_ƥ׸qãíÛ¶qYó”¨LŽŽˆÑ!Eð1ɵ‹-Zµc + à‘ +)S¶)áKh²q˜ššâà+VlÜøñ/_¾ôñña#ô¤Bʤ1XsÕ´iÓ*9ŸÃàëׯgϞ-Y²d¬Ä”/‡”I>¤L'ÊtèС1cÇ¢-Y´p¡p$ïڍ@ʔ-ùZ™lûôAð7Î..ÃeĎ9‚”I·Ñ”2ýT»öÏYã222Þ¼ysýúõ2eÊl fÒ” KØmH<}ûöuqvæd(S9Cò††ÂôNNNlî KËÌÌÌã11RKÅú Ð²ôêÕ+G;A R¦\|W‘‘_¤L£¿½={`ËæÍ9²¦÷ïß; R¶L™÷‰‰ªˆ6ò)“|H™4N•ÉÁÑñòåËgNŸkDq-ûûû£>åû~Ñ|†GDܼy³H‘":urtp¨œÕ«<ÁÓ³WϞ8ŸÑF¦¦¥ád˜ìåeP¸ðʕ+Ϝ9ƒú7{{´Êœèÿ‘‰“&áýíÛ·÷íۇv½Y³fîîLRRR¼gÌ8`À®Ý»¯]½jff6uêT,?}úthhèÃøø’%Kö°¶ÆÅÈÿ©‰òݾs¾× AƒÁ¿ÿÞ¼ys¶êÚµkë7l¸{÷n¡B…P$§Áƒs·“åCʔ-ùZ™¬»wO|ÿoFÿñ‡¬ Är)“n£)eªP¡êdTÝ«àKFFF®..¶¶¶¥K—fɘ2ÕªU …ðë–HÆÉP&$ÆW„é{öèÑ­[7¼éбcaƒ£GJ-UXX˜Ï¬Y ,è#c6?!e’Ÿ GüãǏ²Ö+VLÖÓlI™4”iˆ“Óé3gÐ.*nM̗êÔ©cgkëçç÷WvÑFfffzz:"6eY!²U&„€¹.OQ¦¼ì""[ò¢L84-Z¶416†ÈO6kÖ¬zõêõ©ÑöíÛqLÃBCkÖ¬‰µÆ&&?V«ö!9McjjêöÈHã&MðS»V­#GŽÄ?zÜ®mÛϟ?7mÖì‡~Àµ @‚7l(\¤ÈŽÈH˜À»wïڛš¢B@ÍPýǪSg¿?Œhá¢E­ZµêÔ±ãó/vìØñsݺ›7o.^¼øãǏ( T]»vEõ•€¬°]ĶvvMš4±²²ÊHOG‘CìÚµ«Žòž£ˆ2åå*(ʄý–5æ^T§LVì6¿qãÇÿ&cºÞAʤÛh|`j×µk×¢^²¶¶FÊßJ¤ôy½ûôA•+ën¥Å(Â<ž„¤Lò“%%%µiÛVÖZ4Ó²r eÒP&4êݺv6}º‚ÖÄûNâ³gÏ"ø–¯Lׯ_Ÿ5{6®|E©e—‡eJIIY²dI©R¥&L˜»Ìu^™žŸ†}qà€¸rëׯ/\¥td)~ìê5kÖ­[‡Šk¿¿”ÉÔÌ Þ(¹üÑ£ÿøã有IIPPÄF{÷ìaÖÊØìïï?cÆ ‡Aƒð±‰±1.^þ™*hÝðs¾}û†è'`ñbKKËýYÊtûö푣F½zõŠ“ûo¨"¨H™ðÃÛ¶nÍÞϘ9Q`Þó$eÒm´D™Ð +c!ªVþÊRº2=zôWα ë×#®:zô¨ÛèѶ¶¶~¾¾ +þ +Y2åîë[¶lA ö×þý²82Iáõë×ì2Nk§ØmaˆÝÑؔ.]Úðû›ü8‘®@ *W®,T ¯LœÈ(ä[“˜/q¢gÃKU&´Ð[CC'Þ*Tͼf•éÚµkS§MC¬‰½ŠDýÊt÷î]T|uëԑœ…»ñP×.]؟:ØiqçΡÖCÕY¼xñ–-[¶o×NX¯Eïߟžž.Ìá¿?’+V416Vp‘¤2á*€ÜΙ;÷Ó§O¨Ú.X°€”IuäE™X‡~×®]—ÉÛ ½+V®Œ9v¬jÕªüBaïÙ½Be²¶¶ö÷ó®b#gKZ´l‰­ðÊä3sæÀ¬'ÇhäçÖ͛(”i´›ÛرcÙªéÞÞÛ·o/W®œp46.„òçϝÃ58ÊÍí´¨9,ghhfffccÓ®];\˜8ý\\]qòcU… +°ÊÎÖ¶uVì«\$• WÁáÇ}fÍJMMeWÁ,õ(ªwÈ$+êÌ;wî,]¶ìÒ¥KlæY– {løˆ­ZµÚÌv,›YËÊÊ +-43+(S›Ö­a¿|æØÛ'NžôôôDerìèQ±Ç°ÈGR™P)yxxœÍ*ÓØ1c|E7\á×±c­ez÷î]Ï^½Pì +aetâÄ Äˆƒ͘1ݺuK__¿L™2Ý`G?Õ®Èßʉ@6M0Œ‡Öôç’%¨²³-Œ˜2!>CŒ ©ã)“ªÉ‹2á4îÖ½{JJÊéS§$ïýséÒ·oÞxyy…„„H*Óúõë,\¸ÿþ:?ýeêÕ«ßqĔéÈáÃÕ«WgKĔ þ0@pO‹nߺ…“Ê_5•3[‚ô…¾¯ +.lÓ§{óæ͘ãÇccc¯^½š‘‘1f̘?Ff¿îƍDZêìÙk׮ᒙ4qâðáÃs´‹AL™pà"9ì=¸ û.§† ® dÙâ†Y9rÄÏß¡õlûšxeBýØÔÄdGT2FB¤Lª&3æ­\µjÙ²e’Ï"„™[uî\®\¹£GŽàÂ?aÚ?4¥|¿ˆ;{irªL¼Ø3úØØàÄÆØÀ<¡2±1~Û""š6mʧ‡a£8u>|øüÅ þÑæoÞ¼qpt„!œ9}úþýû¯_¿æGØ¿zõ +µ*l%§»([xeB|`ff&yhP™ÀŽ;¦N›æíííèàÀ– 5íׯßÃøø‘‘‹°KQlÁŒ‚*R¦Ž:\»~UŸdíT&h¼uV+ùçÒ¥rn³VR&ÝFýʄÈ*44—@ÛïoPäW¡)‡9$%%á2oùË/ídœÆˆ¸ëÔ­Ëb¹„„ĊíÚ·o™Ý…ù,!§ô•«W7¢Úoß®~»¬‰Úr +)“üdhkÐt +— Be¸~ƨ¨(9Óo2Iʄxúll¬p!DÈÖΗÇñ˜˜2eÊp¢]>>aáሧÍÍͳ݊¤2qÖ$˗82!¢Z»nÝQ-#æKœF• Ž!öŸ(§9e³gÏÞ:eʔ!NNˆ~‘§Ê„ÐáÎÓ§O£v숊Š +Þ¸1`ñb~Ä*JŽ(¶Q£FˆB„ÿô<{öìÖ­[hDÙ *²”iÙ²e+W­ +Z·Î,ëÿ{Y°qSràZýᇤ>œP +oß¾EÉåV™8‘„8»¸ “Úµk#î}Ú¸q£ØBT§ˆ·;tè §2$e’‚,ezþü¹…¥¥X#ÊnD=~ýúuìJ„D +N K™8Q[ë9qâ¡C‡Ú·o¿rÅ +©÷D1eŠŽŽ^»v-"¤ ’ÉôõõÑØäèQ¹ydÞüù|°"++«¾vv¹Ë<íãGOOOö>3æݹs§_ÿþÕªU{üø±½½ýœÙ³…kY7‚`v×;BaÉpDª2álùmÀ€ÔÔÔÓ§N ol“ +ßË$ D«81š FUÊ%jçÎC¢ð+×ÊĉfQÛ¾};¤GWhóæÍ{÷ê%_¹r%44ôæ­[“V­Z>¼B… +lՔ©SñûþýÙÇ'O¢$“'OæL÷ö616ÆYʔÉið`(н{Q›wìÐM;ÓÙã¼íÒµ«X·äéÓ§·mß ÂéÔ¦M›!NNü]|÷ïßß²uë•Ë—Ó32jÖ¬9hà@Þóoß¾KàÚµk¨Lpþ;::JŽZQ +|/“,PìAƒµÎ®ÏV¸ÒÿÌ +¬s§L¬CÛÒÂB8-ÈÖÖ6áùs¼GÃÌÒf@™Ê–-‹½v---  +dÒĉ8ˆÙ>T^GNj/ÊOÑÍKÝĬÉÌÔŸë|Äø”ôWt4{¿y˖ŸëÕË{ž¤Lº )“r!eRQþ¤LR¥L(­IÓ¦ 4ؾm›p9”…fÏîÝü_ŒÙ"G™þçäôñÓ'¬9ô„÷2%&&Ι;÷àÁƒ’Ö¤ÁyØ4Ê/¼‘‰ÓèÀ<5„k¡Ð‹=ú±é¢Å‹ÃÃÃY™H!ú>±ùÄX(Sá…첏ìä7nàÜ@[+k–!¼2U(_þCr²Ø- ÌS=y˜§f˜2 ¢ðÊÇHMM•zhv`»í[øÇ + +éîáj6 `Ö¬Yl:á=«bó m¿ŒJfó¦Müü1ŠÃÌC8¤¦Ñ΁y7oÞžµó#¶oWÊíì¤Lº )“r!eRü+¨ØOŸ>ýüùsTæíÛ·—?m)“d)'zX +?±ö•Á0DÛ»å#K™øû—PwÏôñ‘5ó¸äŒygãâ¦Lžœ˜”ôåË~¡•É¦O”äð‘#Â;¬4«L(É`'§K—.áýʕ+­¤=)þyæ̙³¢QIϞ=Ò.]º, `”‰…Ú8u?~üxÿþ}”óˆ PpbPáŒy¾¾¾^^^ñññÂ{9H™T )“ÆΘ·rÅ +„’ÂI#9-P¦5k×B„cw·††Îž=›ˆÓXwwÄÖ!7ò£8$ïeŠ‰‰9jN³‘‘9íhΘ÷cõê˖-“ð¬Êtõʕ‘®®ìýÎÝ»³ IH™tR&åBÊ$+AJJʪU«®\½ŠFáÑ£Ï£&?~ü8[‹PyÝÚµìF_©2IA–2¡E761»,ÙÓÇ,,,Nž<‰½3**Û¡Y ©Ê$6߃œ™Ç¥N2Ž®^½víZìXÖã¤ñç2!v™2eJR–ÈiV™–.]º*0pìرÁ¢‡«ìÙ½[¾çܹ{öƒâC +±yX5ÊÍ­zõꃃ¼AKl’qâˆmÛüüüp¼Xï)“ª!eÒ8b“Œ£¾ŠÚ¹sîܹßDpšV¦wïÞÙÚ١ʊ9vŒÕç·oßF&"<œ ½ž2ujTTÔøqã\³ô@êŒy,Ùȑ#Çyxäè'ˆM2þ!9ÙÅÅåÚµkÂ4Ú©LçΝs3†½Þ¿¿‚hž k4•-‹=½4XÊãǏk¤c*[ˆ<Ž² +ƒs´9Á_s”‰ˆ¢`“#‡'$$¬]·zßà  bôð+W®À/¿×£•åååÿÕӛ4iÒ!__¿w™Î;¡®®.4ÖÂoéðNeËb‡h®nnW¯^­««kÙ²%Äô¨LâƒYÊ-À“'O ¬—ä‰â†w*[ûõ0¸:.^¼­\ÐzHF™ÔZ·†úüóáÿAÍÍÍ=~âě7oÈqä¡0·°(**‚ –½ƒHœ9ktäÃ|• š,Cöø°­ŽŽŽè_w*[ 9%eíÚµäszÒ©LÐ7­_»–XNJI!ç­j¨L² *µ 2ñ]{áÂü€ß,€VÔqÙ²´´433³];wˆ9âïݽ+¨ÕBe⃠eZ³v-„ÚĈûµµµ`P>$ºLèæíìíïÝ»ÇûZ0_¸”IÈxâ|­Iˆ2±ØOgÆÅŹ¹»WTT\LH W™ + + +699=xð€e'153“““$ƾ[·~}||<Ôê¡YY¿açߌ 0‚ÀÂdÆ öXüʇzÅʕIII"NúÉW™RSSá}üøñСC¨LâƒYÊ$“ðU&‚;wî@d -0¯’Q¦ââb®Ä:899¾8´Ð×zzxXZZrfËÉə=gÁp!·nÝZмLÐk@ß1xðàS‘‘¢LÇW™X짋¡;8wîKZ•)%9yËæÍÄò[·š0ô/¨L² *µ 2ñ]ëéåÎúˆh”®^½ºÔÑq·‰‰ ‘áÒåË«W¯Ž‰Ž4Î'*x• âæcÐÇO˜0!Àߟ `Ϟ=G[»ví¢… ‰l°•‰©)—7j*[!¾DÀkM•‰Ãg÷nP‚^ßþ2*)‹|@Oÿ©¤d¡à‰±…Ó4e‚£7Á‚ôôôà  r"ˆàǂhéLTØKMM‘±ñû÷ïÁ|,ØS¯°Ø?¨»‡\W'Nœ †ã;bHŽ¡‘(t… ä т¢L,öSXpš :´ #[ "‚ÊD;B”‰Å~|ÄÚÃiÓ¦5­|ѕ))9¹†ãåOeee¸„ûöíKÜ|f±ÿ7n(«¨Lž4‰w͌Œ h½A‡`+ˆùÚ·kÇ;3´{É°—ššÑ£Gkhhˆø)Á‹//Yñ½*Ó¥‹]·o'–Ó33›3 : *“lƒÊD-¨L|×:oÝzåʕ»wîïß¿o3{6„ô'N$R‰ò§(T&>€2=yò„¸35„®î͛7v6Ìßß_]]õmlñ‘úúǏ';W >>~Ýúõ\¯ó…T¦ïú—5‰¢Lð(é´DDˆ25¿>MS¦€€€ýðÞ݂ƒ qÉO={ÆÆƶlÙ2ïÙ3GGÇ·oß*))iiiA=a~ÜU+W.Y²„ØDмLĜ]• ÿv•‰@Â?ُ*íW&‚æ\¢+“Ô"\™ Sàì}‹˜”)îܹ^^,ö<'·RS))•I¶‘¤2A·NÌËÇtZ·n-h(NT&¾k“““322ˆ>„8üÈáÃãǏ'Rˆ{P™ǎ;þzõŠüÓ¹sçQ#GÂa%ú§ÚÚÚm..¾owqá?`Ï޽ϟ?wpp>¥ ¡Lúzz¢ø§5åç狨Læ»ÊÔš L`¼ (yÙÙÙñN™Ítáë×ãƍ!2'%'§§§C$¿u·nÝfš™ATGæ‡f¨C‡äm\øi`/5ÕÕæææÂǁE™±‚ÊD;¢(SsøA”©™ˆI™ÎDEaV+UÕ«×®QR&*“l#Ie‚àíôéÓM«§T1nìXÞǀ P™ø®Eeb0ðSYYZ†„†ŠèK¤5-^¼88(•‰Úò%*í 2Ñ*Ówa®2AØê{ð ,hhh\ºr…’2Q™dÉ(Ó_ý{öì‘F–/µ 2ñò]eŠ¿paíš5ÄÇwïÞ?qÂÚÚºOïÞDÊóüü3gΠ2I#³ÌÍKKKuuuE÷%šbcc[µju?;[|5l¨LÂAe¢T&ÚAeú.ÌU¦à  "êÕÒҊ£èúBe’m$£L·oß^ÐÔ÷¨¥T&^¾«Lg¢£¿[*“42múôW¯^µhÑ¢ ۂ5Ó=ËË£º^Í•I8¨L´ƒÊD;¨L߅¹Êt8 àÄñã°Ðµ[7QQ@e’m$¯L¡!!íÚµ+..¶wp€ÇƒƒÉ—,***¬¬­aᐯ/9©ÀªÕ«óóó̟oaaAHÌÞæêêúß#Uçæ:tãÆ *?„+ü‚EEEß-dðàÁmÚ´á» +•‰6 + +++›ü~3:eeeA/ÿÑ*“pP™h•‰vP™¾ s•éàáá°Ð»wﰈJÊDe’m$¯Li©© Lïß¿‡ÅŸœ’.Šìs îܹ~ýú‰–––rs¹¦Ñ:¢¸£Gþb`Ш:7‡µëÖ]¸p…ÊÄáÊÔ|P™ŠAe*í 2Ñ*Ówa®2íöñ‰>s†Ånâ‚Oœ ¤LR™:wé2iÊJÊä%4$Ä××W¬Ê¤¢¢Â;dréÒ¥üü|XèÑ£GcgcKNN~òä •‰T&1•Ê„PŒÄ”ÉÌԔs,;¦pýƍœœ*}Ê¤©©iG]¤ˆˆNjZáP¦…¿ÿ®ªªJù.Ä͙èè·oß²¨L^žžçãâ`aˆ®î‘£G))“T& MÍAƒSR&/×®_÷÷ó«2ÉÉÉ5Ô׋©|ærïÞ½·ïÞ±ØᅪÔ×oÔ¶÷sr^¿~ÍBeâ•ILå£2!#1eb:¨LtA*B;P&¦Ã8eÚ¾mÛå˗aAOOïà¡C””‰æÉ6ø`žèH‰2}ýúµU«V-YÜ 2! •IDP™è•Iz@eú.ŒS&§M›®]½ + cǎݽw/%e¢2É6¨L¢C»2ÕÔԄ……]¾|9**ªÑµ3ÍW¦—mÔÔÍ®‰Ê„PŒX•é˗/&|ÐYjéÛ·ï1ŠžZAő#G""#é®òݺu e¿ÚG-÷²²Ö®]Ky±´`ll š8J“2­]³&•oikkosqJÅ_|Q™dT&Ñ¡W™nܼ¹ÝÅåCQQ§Nˆ¿ŒHMV&ðÀ”«W###333qqDrˆU™AJ“2‘zC0fìØe˖ýÔ«%e¢2É$¨L¢C—2ýõ×_®®®wîÞ­««ƒ;w– ez÷îÝ騨3gΔ””ÀÇ¡C‡îöñ!O.P™ŠAeB‘~ĤLϞ=ûcÕªÒÒR2ENNÎØØxÑâÅ›:X*“lƒÊ$:’W¦òòòC~~!!!p!¾Äb¾2Õ××ÃùyãÆ 0‘öíÛϚ9ÓÜܜœ‰‹/¨LÅ 2!‚H?bR&{2Јðpˆ_«ªªÈDeeeë_µwpPSSkl¨L² *“èHR™ŒÇŽ³ÃÛ»š gæ*SII œ0§OŸ~ûö­¢¢¢ÁÕ«W÷íÛgdhøÝòQ™ŠAeB‘~ħL%Ÿ>;w®žcXmð%‡yó,­¬TTTD/ +•I¶AeI*\­`J555¼y˜¨L? +JLL¬««ëß¿¿…¹ùŒ3 !:l*B¨L‚ ҏ¸•‰àõë×þþ\ѕ––Öâ%K¦MŸ®   J!¨L² *“èHR™„W®v§N-Yܔ”– R&ggç˜ØX ‹ßlmuttˆÄ¯_¿¢2!´Ê„ "ýHF™rssý|}ï³»’Þ½{;._$'''|sT&Ù•It¤D™àèíݳ§±%‹›?Ö¬ñ;tH2íÝ·¯®®nÀ€3ŒMLL:tè€Ê„Ð *‚ ˆô#Ie »‡8š‚‚ÎôaǯX±¢ÿÏ? Ù•I¶AeI*ÓèÑ£ ?~üÈõ"‹™æ¥¥¥çã㣣£óóóåååá|344Ü°a*B¨L‚ ҏ„•‰ ¾¾þÒŋGŽ)þø‘3}ÒäÉK–.íÚµ+ß­P™dT&ёðˆyÞ;vœ8qâÀÁƒ®“Ã屫Lð]rsscbbâ/\(//‡”ñãÇÿ¾`ÁðáÃÁ£„lˆÊ„P *‚ ˆôC‹2TUU‰Š:yâ¯(((Ì27Ÿ¿`¦¦&W~T&Ù•Ith™—éíÛ·Û\\233kkk‰<ŒV&hˆ’’’ÀÒ32Xì/ejj:Þ¼¶mÛò͏ʄP *‚ ˆôC£2|þü¬ ܉ŒÃ€–-[ÚþöÛì9sZµjE&¢2É6¨L¢C×T¶@JJŠóÖ­ååå555²¡L$oÞ¼9{ölLl,œ‘‚J@eB(• ADú¡]™>|øQòńÎDMMMˆnÍfÎTTTd¡2É:¨L¢C£2±ØãËùúú?q”éjJJS¾€8i²2444dddôìÙS[[›oT&„bP™A¤)Q&‚üü|ÿC‡ÒÓÓ9»vë¶ÔÑq„ Û¶nEe’aP™D‡^e"xþüyxD„ëöí-YÜW¦¿ÿþ~¯ï'†²²2ßU¨LÅ 2!‚H?R¥LY÷îòõ}úô)gâ€êëëóòòX¨L2 +*“èHƒ2I-•ÉÙÙùLtôw ÁóɁʄ "ýH¡2±ØƒYAüàïÿöí[Þµ¨L2 *“è 2 AejÑ¢Åĉ»uë&¨k+«.]ºð]…Ê„P *‚ ˆô#ÊDP[[ kà±cÿý7g:*“L‚Ê$:¨LB®L/^¼€SåâŋEEEƒ4ž1ÃÈÐPKKKôòQ™ŠAeB‘~¤Y™***"ÂÃ!®ªª"R&Lœ¸ÃÛ[L»Ce¢ T&ÑAe‚(Ã?444dgg'$$\º|¹¬¬LOOo†±ñÔ©S544¾[>*B1¨L‚ ҏô+AɧOAAA¿***B,8rÔ(1핉.P™D•I1¯®®.###áâÅÄÄDøǎ î4iÒ$UUUA› 2!ƒÊ„ "ý0E™ªªªjjjÚ´i#¾] 2Ñ*“è 2 ¡iƒŒCÃróÖ­K—.%%%ÁǨ¨¨~::|s¢2!ƒÊ„ "ý0K™$*] 2‰*“š¦Lýõ×å˗/]¾œ——§¤¤}æ ù»sÊ„P *‚ ˆôƒÊÄ*]H^™à„oÙ²eEyyxD|œ3{vk55bUMM͉'`Á´ŠH<{ölqqñH}ýÁC†‚–ÔÕÕvíÚµQun)))/_¾d¡2ñ£QÊÄiJ + + +cF622š4i’[Ù¨LÅ 2!‚H?¨L\ 2хä•I@eâEeâ4%99¹‘#G‚)M™<‡@h• ADúAe╉.P™š*/• 4éðáÃĤØp™ƒ)M›:•¼‘( +¨LÅ 2!‚H?¨L\ 2хd”)+;ÛÙÙ¹9õ”*àûº»¹ñ]…ÊÄw-qªh¨«Ož<¹cǎ‚ +±²²ÒÖÖæ» +• ¡T&A镉 T&ºŒ2ý8 2ñ]Kž*Â99tèP¾«P™ŠAeB‘~P™¸@e¢ T&jAe⻶´¬ìkEÅw éСƒŠŠ +ßU¨LÅ 2!‚H?¨L\ 2Ñ*µ 2‰©|T&„bP™A¤T&.P™è•‰ZP™„gƒvïæ͛¹W~ýª ¨¨Ý©Ó¨Q£~þùg999á¢2!ƒÊ„ "ý 2qÊD¨LԂÊ$(H‡@@PPPÏz Øá奣£#¤|T&„bP™˜´§=¢»‚PƒÍ¯¿öîÝ[”œ¨L\ 2Ñ*µ 2 Ê°gϞ£ÇŽuéÒeÎìكÖÐШ««+,,L¹z5!!AQQñô©SB¬ • ¡T&f½ø¹sç讂 Ô'ĝ¢äDe╉.P™¨•‰ïÚüüü&&£F:äëÛºuk®µ÷ïßw˜7OwȐ“'O +*• ¡T&fÊ„ ²*S“Ae¢ T&jAeâ»6((h—Oüùó}ûöå›ÁÕÕ5òÔ©{wïò +*B1¨L̂T¦V­Zõìٓîê Òhêêêž={F,£25T&º@e¢T&¾kÝÜÜbϞ½Ÿ-h˜‡øøøuëןýùçŸùf@eB(•‰YÊ4jäÈ'NÐ]AÍßÿ­?r$±ŒÊÔdP™è•‰ZP™ø®uvvNJNÎÌÈ´yrJʲeËp*[Dr 21 T&a:¨L”€ÊD¨LԂÊÄw-œ*)W¯f¤§ ÚüêÕ«KQ™ɁÊÄ,P™„é 2Q*] 2Q *ßµ¨LˆÔÊÄ,P™„é 2Q*]ТLà9¬Z¹²mÛ¶dâµk×ÀÀ4 €!¼½½»uëfkkK¤deg'$$ð-ö7[[ò­à´hÑbñâÅÄÇ[·n]»~ïV‹-ÒÒÒâLùðáCTTTFffeee‡Fe>kgU…€ÊÄw-œ*çââ m^\\üèÑ#T&Dr 21 T&a:¨L”€ÊD´(SddävW×Ã&L íííÁR455Soߖ——'Ÿ?nbjºdɒ?V¯&RNŸ>½ÍÅEYYYQQ‘«Ø#‡ëééË¿ŒߦM›øoÒrøðá}û÷«¨¨(((pmuúÔ)r7Œùùùûûƒª >\C]½¨¨èQn®ººúnŸqãÆ}÷«¡2ñ]Kž*ÂAeB$*³@eB¦ƒÊD ¨LtA‹2ýõ×_Ó¦O_´páÚµk‰”ŠŠ +=}}—ïÞ½=pà@"=<"ÂÍÍ-,4”<7eò÷ó›4i’]ðU¦Èˆ!s­>»w¸lÛ' ‘x/+ âõ’’¨ÆàÁƒ…5T&¾kAAE)DŽ ßU¨LÅ 21 T&a:¨L”€ÊD´(ğ&N쬭A¤¯²„‡‡ÛÚÚ®\±ÂÑё¬Þõ7îdf*)))âS&¸$GÝOGj¥¬¬Ì¹ +ÏxƌþýûŸ‰ŠÓ 2‰©|T&„bP™˜*‚0T&J@e¢ º†ؼe EvV!'®®®É))7oÜøÕÆF^^þTd$‹mVcǍ*B1¨LÌ• ‘<åååtׂTUU[·nMm™¨L”€ÊD4*Ӎ›7A–ââ⬭­þþûŠ+ˆô¨3g¶nÝ +z3{ΜC¾¾S¦LáÜJ|ʔ””´|Å +AÞýjcóðáÃ[7o¶oß^È~Q™ÄT>*B1¨LÌ• ‘<ÿ¼}ø0ݵ ‡Õ«VQÞã¢2Q*]ШLÄ\LæææQQQ§OÒÕÕ%Òß¿烙©iü… w23ÕÔÔ8·Ÿ2ÕÖÖϘQZZ +»èõÓOœ«ÎÅÅmܸÑÌÌl×Ν¿*“˜ÊGeB(•‰Y 2!’•‰Ú2Q™(•‰.hT&`®­mnn®²²rFz:çD†FFoß¾ðóϑìÑÆ9ëT¶yyysæÎUVRZ´xñ¬™3ÕÕÕ_½zÚ»wM áß•ILå£2!ƒÊÄ,P™ɃÊDm™¨L”€ÊDô*“Ÿ¿ÿÁƒ§OŸ~àßÃÙyyy Y±bÅòe˸6«2±ØÖäììü(7—3ÑÈÐÛµk÷Ýo„Ê$¦òQ™ŠAeb¨Lˆä!•IKKkç÷2‘ Ö¬YSZZÊBe’bP™è‚^e‚ óùóçÿaÙ^TTôçŸöíÛWSS“k“ÿ·JGGø ŸììlEEÅÁƒß¾}[XX8`À®Çüøáñ‹/îÞ»WQQ¡Õ±£¾¾>´–"~#T&1•Ê„P *³@eB$©L={ö¼Ì•dÇß¿ÏBe’bP™è‚^e’=P™ÄT>*B1¨LÌ• ‘<¨LÔŽÊD ¨LtÊD-¨Lb*• ¡T&fÊ„HT&j Ge¢T&º@e¢T&1•Ê„P *³@eB$*µ…£2Q*] 2Q *“˜ÊGeB(•‰Y 2!’•‰ÚÂQ™(•‰.P™¨•ILå£2!ƒÊÄ,P™ɃÊDmá¨L”€ÊD¨LԂÊ$¦òQ™ŠAeb¨LˆäAeâ͐ž‘1ê›ö4T&Q€xCNNNHT&º@e¢T&1•Ê„P *³@eB$O”©   "22;;»²²RUUu¤¾þܹsµµµ‰µååånnnœùåäåÛµk}çÄ äåå9WåççÇÄÆBQÿ÷勆¦æ/VÖÖäü*ÅÅÅ>>>\{WiÑ‚]c##®™[DGˆ2½}ûÖÍÝýúõëÏòòšV8*“(?®Öºµ……×ù@‚ÊD¨LԂÊ$¦òQ™ŠAeb¨Lˆäi¬2ݺukÑâŊŠŠÃ‡ Ól×îÃû÷÷srN?qd(++9j”ŠŠJÛ¶m‰M ±¾¾~̘1GVRR"Ò<زeK=== (*=#£}ûöÇŽõïß2üõ×_Ó¦O‡”Ν;›@?õéÓ'¨À±cÇFՄ¯ÌW™ªªªŽýØT•I¬ìÝ·ïȑ#ÜéíÝ»woÞ ¨LtÊD-¨Lb*• ¡T&fÊ„HžF)S]]Ýä)SäåÃÃÃ;uêD$æççÛ̞­®®›ƒÊdff¶kçNrÃòòr§Í›ÝÝܬ­­!%"2ÒÕÕuò¤IÞÞÞjjjD¶´ôtGGGíNàBé"”iÁ‚Ö¯'‹‚®êöíÛK!佘 è6…¸” +LNNÞîê +ÒR]]MäAe+ L`¼° ''7Þ¼å˗·hт3*] 2Q *“˜ÊGeB(•‰Y 2!’§QÊT\\zT[[˙•I¬€2Ö××Ã2¸q›6mvxy7ŽÌ€ÊD¨LԂÊ$¦òQ™ŠAeb¨Lˆäi”2UUUýWO¯G'OžÔäp•ÊÊJøŸAÊD¸Ä¤‰ýýý“’’–¯X±æ?/^̵‹ÿcC<‰'D™ qËyðàî;­[·nìW&•IWW÷Ñ£G°@Ä2‰Ne"PTTœ0~¼‹‹K‡X¨LôA‰2©ªªöÓÑKý˜Fá›7?~d¡2Q *B1¨LÌ• ‘<}— „çÀÁƒ *ãƎÕ×××ÓӃ~‹sô3AÊtäèѽ{÷:999ØÛïÙ»÷èÑ£§"#‡*d_|•©´¬,<,쐟qêÑ_˜C™äååøæ‰eG~M ¼¼ÜÎޞX†r¸hƒío¿}ýúàË5m× "<"Ú:.SURRR—߸q£ÍÄI“P™heBxAe¢T&„bP™˜*"y«LÐS@D“÷í>Lǎ­,-çϟOÜð!”©W¯^Ä È_[[››››““Ó¹sç³±±êêêÛ\\NŸ>}éâEèó„ì‹P&ð1EEE"‚lBrƏ¿ÓÛŠjÂW†êA%…ç!Ç®h,ð}¿|ùB,·jՊëB8Ÿ?&Z´h¡¢¢Ò´]3ˆªªªšš¾Q‡²²2œŠ%%%û÷íCe’<¨Lb•‰ZP™ŠAeb¨Lˆäiò¼LEEE™™wïÜINI€àÔ©S „2A"'hCgmí_Ə··³#Æ"÷òò:r>.NGèÓ;„2 :t̘1à"ŸJJà]ø¯d@eb¨Lˆäiò ãÌE¸25T&Q¨©©QVV’•‰.P™¤ +T&A 2Ñ(Ó¼yó¾VTxxzŠnM„/­\±~6//¯ï*Sqq±ŠŠJ›6m¨¨òÿ#øøq+KK555¾kQ™˜*"yP™¨-•‰P™è•Iª@e*mÊddh-¢5‘¾dooëÖ-áÊT[[â{èPLtt¯^½(¬9ô+`z.Û·CåyèGeb¨LˆäAe¢¶pT&J@e¢ T&©•I¨L´A*,‹bMœ¾…+SjjªóÖ­%%%555 .P«LpR~üøQIIiȐ!^žžÝ»wç\‹ÊÄ,P™ɃÊDmá¨L”€ÊD¨LR*“ dM™ + + +ÀþüóO9yù!ƒÃåÇù¢gJJJUU•±±1ßm“’’êêë §OçL¬¯¯OHH¨­­ÕÓÓ«««ËÎÎîÖ­o“š–žþþÝ»)S¦ˆþ§2±¾gM\¾Ä¬L…oÞ¸¹¹¥¥¥Amᣂ‚BüùóâP&¢p99¹Å‹/Y¼˜|F•‰Y 2!’•‰ÚÂQ™(•‰.P™¤ +T&AȎ2}ýúu›‹K||<,kkkWWW—––ª©©íرcÊäÉDs ‹>¤¥¦ò-ÁÈØ„êjJ +™¾m”9kÖ,OX;sÖ,(álllïÞ½ÉlYÙÙ¶¶¶FFF»}|Dy–K™X‚­‰×—Xü”©²²òȑ#ÇYìñ£ˆD±*ŠŠŠ††Æ/¯Ñ£G³P™˜*"yP™¨-•‰P™è•Iª@e„Œ(SmmíÂE‹ÒÓÓá›Øýö›¦¦&‹m¬YSTTÓOG‡ÕHe"}i¶Í¶mÛäåå!ñá£G666}úô9EÜW13›9³e˖±11­[·½Î¼ÊÄâgM|}‰õoe‚ؘ˜¸ÝÕµ¢¢‚œHž@ÊD ¨ 0qâD8P+W®Deb¨LˆäAe¢¶pT&J@e¢ T&©•I2¢L‘‘‘ ‹/^óÇœé†FF#õõOž<ÉjŒ2‘¾ä`o¿iÓ&Î{GÐÓCOLtÙ@ÕîܹÕ¿ÿFՙ¯2±þmM‚|‰Å¡L?†ïþôéSðFÞ½€2EDDôìÑ£QuŽñŒÅÅżéJJJp :tèðöí[*C@eB$©LÐ@‰2“’ PXXØÐÐÀBe’bP™è•Iª@e„Œ(¸P~~~Fz:猄gϞíڭۈáÃY"+éKK–,îëY;Xkgoï޽А¬¬¬ýlÛ¶mîœ9­³ eb}³&ømöîÝËחXߔiϞ=–VVP¥Æî] 21T&DòÊô‚Ê$µ 2Ñ*“TÊ$YP¦ÊÊÊaǏ9òxp°ðœ¢(SRb"áKpP oã›óÝ»w&¦¦mÚ´)**šÝ¼e £ »L§OêÙ³gc«'„醆|ï2)³ÑÐÐ(,,d¡21T&Dò 2Q[&*% 2Ñ*“TÊ$YP¦×¯_O™:ÕÜÜ|‡——ðœßU¦ŠŠ +h.‰1$@föîÝ+ȅbbb@TZµjuãúõ¦M+D™ˆçñ í¸zõª 1ô8ßejhhˆõðô¬««ã'ɼË{ÿ³µ]±bÅ… ñ]&Ê„Hž´´´»wïÒ] z5j”žžµe¢2Q*] 2I¨L‚ez÷î݄‰)Q¦—/_ÂÂVg第,¸€ÝÝÝ­­¬xsBµ—::^»v –·»¸Ìž=» Õ¤L„/­Z¹ÒÎÎNÈÈã¼#敖–º{x\¹r…ó9= (“¢¢âGŒpqq!îeáˆyÌ• A˜*% 2Ñ*“TÊ$YP¦òòòá#F;z”wmCC1ØK4e‚(býϟ?›˜šB?ݧO®œ'NžÜ±cǒ%Kâââ@TÎÆÆ6ÁIø*§/)‚¬IмL›œœ VÄÐybU&bxq77·_ ȵ¨LÌ• A˜*% 2Ñ*“TÊ$YP&Àú×_Ÿ?ž‘žÞ¢E ®U¬YóêÕ«à  uuõï*See嵫W‰àö `M-[¶$³=|ô¬`ÈàÁ!!!÷î݃<:::Ñgΐs¹Š¯2ñú_k¤L@MMÍá#ÿð?6âã)W¦’’EEE¨*t´\_•‰Y 2!ÓAe¢T&º@e’*P™!#ÊéêêºvíÚE r¦¿,(€Ÿ¼_¿~±11rrrÊvç®]ÁÁÁVVVîîDʗ/_f͚õ÷çÏçãâºté)»||‚‚‚æ98lÚ´©QuæR&A¾DÀkMB”‰àÏ?ÿtÚ¼ùþýû¨U¦)S§êêênÜ°¡}ûö¼kQ™˜*‚0T&J@e¢ T&©•I2¢LÕÕÕsæÎ}üøñºµkmmm[´h%?|øpÝúõ¯_¿>9tèPûÁ¼wïÞ]ºx‘kóÖ­[+))ñ*SMM¥•Õ³gÏöîÝklde®Z½úʕ+ûöí#Uò€üäååŽ;Vô:s*“p_"ದï*‹ýÎÕùøøÿŽѹsgÑ+ö]àvëÖMÐZT&fÊ„ L•‰P™è•Iª@e„Œ(ðáÇe˗çæ檩©!@Ov¤¢¢âîînfjJäe­âÝ6êôé!C†ð*ŸŸ?ËÜ\YYùÜÙ³·SS]]]-,,¼<=9ó¼xñò´iÓ&þüyMMM+L*“(¾DÀiM¢(- 21 T&a:¨L”€ÊD¨LR*“ dG™XìIfSÓÒ232Þ½¯¤¨8DWwÊäÉ;v$3ĝ?_òéï†pZ@¶ØØغº:kkk®µ7oÝz‘Ÿß«wïšêj0Þ sA`@®tuuEÿ©eêÒ¹³ˆ¾D@ZSmm-*Ò|P™„é 2Q*] 2I¨L‚)eb L'N ݗk²;7%%• i&¨LÂtP™(•‰.P™¤ +T&A 2цñŒ¯_¿¶µµ562jì¶111‘‘°ð,/O Uk¨LÌ• A˜*% 2Ñ*“TÊ$T&Ú°™=ûÙ³g*šœ¤ìï¿çæR[«æƒÊÄ,P™„é 2Q*] 2I¨L‚@eB(•‰Y 2!ÓAe¢T&º@e’*P™Ê„P *³@eB¦ƒÊD ¨LtÊ$U 2 • ¡T&fÊ„Hž˜˜˜ø è®=X˜››˜˜P[&*% 2Ñ*“TÊ$T&„bP™˜*"yöíßøðaºkA«W­¢¼ÇEe¢T&º@e’*P™Ê„P *³@eB$*µe¢2Q*] 2I¨L‚@eB(•‰Y 2!’‡T&UUÕɓ&Ñ]Ip%1±ªªŠ…Ê$Å 2Ñ*“T!ýÊTφ7}â¤IŸ2­[¿¾G÷î‹-â]¥ÜÔá¯E•IAeb¨Lˆä!•©gϞ—¥o>nqáøû÷ïY¨LR *] 2IÒ¯LNNN±gÏò¦÷éÓçÈáÃ]ºtÓ~£ÎœÙºu+ßU™êêêbÚ/*“ ‚ÊÄ,P™ɃÊDmá¨L”€ÊD¨LR…ô+Snn®³³sÅׯ[6o8p ™®¬¬Ü¦Mñí·¡¡¡´´”üXWWbmm½aýzñíšõƒ+Suuµ¸/- 21 T&Dò 2Q[8*% 2Ñ*“T!ýÊÄbëJPp°ŸŸßܹsW­\Ù¢E W ïÙ3'''ˆä½½½$=þÐÊdoo¯££Ó©S§¦m^YUÕ±C+++jkÕ|P™˜*"yP™¨-•‰P™è•Iª`„2äç烷”WTìðò:t¨dvZ[[{ôر#GŽØÛÙ-_¾\b7?~he"º«Áƒ7Ášjjj222TUUÓRSÅQ·æ€ÊÄ,P™ɃÊDmá¨L”€ÊD¨LRƒ”‰%ñÛM’¿¹DòC+“•µ5ôs°Ò(k*--µ³·oÛ¦MIi©F¨LÌ• ‘<¨LÔŽÊ$ +ZAÈ¡¤¤$(*] 2IÌR& Ün¢ëæɏ®Löö·SSïÝ»'º5¾Ô«W¯Y3gîܹóÒ÷¢††è'¨ý0+;{ØСrrr|×¢21 T&Dò 2ñf¨©©irCÊ$ +p”fϙ½’ )Be¢ T&©‚‰ÊÄóí&o.‘üèÊ4oÞ¼éÓ¦mqvњH_Úí㓑‘áåå%\™>zݘlBaÍ'MžÜµkWww÷®ÿùïZT&fÊ„Hžæ+Ó˂‚?r¦(*(¨ªªöéӇïm—ïÞ½û׫W + + +Cuu‡ "//O®}úôéߟ?sæWRTTSSëÝ»7äoBõx®L×®]óÚ±#)1±i…£2‰q”àw722Ú²y³¦¦&WT&º@e’*ªL”ßn¢ýæ *Ó<#CƆQ¬‰Ó— &¸uë–e*))Ù¹kׅ êëë/&$P«Lã >}úœ= æÏçúË(*³@eB$Oó•ÉÙÙùLt4ozëÖ­×­] ­™RSS» …žLìÑ£ÇÞ={ @|œ7~ZZoiíÛ·ßîâ2eʔ&Ԑ AÊô×_¹lß~çÎèžåå5­pT&Q t ŠŠŠ›œ,--9Í•‰.P™¤ +F+‹ãvӜ9s ½mÎí¦¼gÏ6mڝ7—H¨W&(z çϟÃr¿~ýºwïιýʪªÿtéÂ÷¡²âââªêjÞ;'Dºªªª¦†¨È×ÊJεŠ + +ÐI«©©5¶ª¤2±ØÏ ·&._‚AÊçJxxøÞ½{ë DPPPˆ?žre"þ¾ ¶ !…÷ŽzzzäZT&fÊ„Hª”)2"¢mÛ¶DJm]ÝãÜ\(Zì3gÎÝ[}}ýê?þHLL´´°+ÐÑÑ©ªªJNNKX9áÂ---[™ ù=Ç17"ô‘¥A+šx劶¶v3¿2¯2UTTòó;yò$QOø•I¬p%{ +—Þ½zíðöC¤ 2Ñ*“TÁte"xñâØÎÿ•—ïðò6lXc7ÿÿo.ÙÛ/_¶Læ¢X™ _ܽgÏ«W¯È”ŸþÙÓÃþ'>.[¶,9%%÷Ñ#¾On,øý÷´´´§Ožp&BþU«VA·zòĉ®]»’6 g7l=z´èµåT&–Pkâõ%–eÊÈȀHâcqquu5‘"Ve"w1mÚ4ètÛµkÇBeb¨Lˆä¡J™ÒÓÓ5548Ó¡ ÿ±µµÝêì £££¡]%?’¤gd888l’ý '‡k/° Ø´íóçÏoB%9áT¦%K–\¸pÁÝÃül«Y¨Lb†K™Ðf99¹¹s珢ªªŠÊD¨LR…l(‹} !øøñC‡5öv“TÝ\"¡R™""#]]]utt~_°@WWŽÔ;w|vﮯ¯?wöl=XW&—ºté¾Dü•‘¸°ýüü”‰<5µµ<8ï¥‹Eÿc$—2±X__bñ(Ó»wï ¾yãFû¯•$P&Ö·çà ³¶²‚A 2!’G|Êô×_M›>}æ̙;½½áã,só—/_¦¥¦¶nݚ3t=¾¾¾}ûö>}:K°2¶ÌÑqåʕM¨$'¤2͝3'çÁƒüü|菹ò 2‰^e"PVV_rwsóôòBe¢ª”)//ïQn.uõb*XÂ)ÝäÍeF™u»‰óæ\ªÔŽÖL(S¦gϞ™Íœ9pÀ€ððpÎÛg=²´²"cÁF)áKÝ»w?qüxǎ‰DâÂ~ôð!×qŒuÚ¼yùò墷†¼ÊÄâ±&A¾ÄâP¦êêêc,¶RsíE2ÊDǤ×O?ýÝl±P™*"yĤLС@Ô +]£¹¹yEEÅð#Ǝ(¼4¾ÊÍéê?þHJJ:yâÄH~¡v£ •IŽ 4õ¼yP™ÄŠ e"€~0m###1U•IT)»{öì¡®^LåÚÕ«;wnòæ2¦L,‘o7IçÍ%ʔió–-111g¢¢̵jç®]ʯ\±äAte"|©wïÞǃƒ9ÇÕ¤LOž<™en>wΜmÛ¶‰Xg¾ÊÄâ°&߃×­_ÏחXߔiïÞ½àT_¾|²£Ý»+SúfAA¯›ñ‚ÊÄP™ÉC•2™™™t%ÐÏ=|ð àÏ?õõõƒ&úùóç&¦¦sfÏvqq^(SFF†••ñJ«ª¬¼—•õîÝ;Ÿ]»Í© :#G*++žG§oߦ^ßÐðâÅ b¹K—.­Eûsþ‹„¹uìØQC]½i»fœG‰â'Þêì QSå~'''®y9wתU«òòr*C@eB$Uʤ¥¥¥  Mqß{ôèÑ6¿þ:iÒ$EöƒÓÐAϘð¶­[…—FŒ˜GÐwÃÂÔ©Sµ¶†F¸ù¾ü2~ü‡XìÐ\PÇàïß´Â+¾~]·n± ÝÜÀo# +gÍÚµ•ìь¬­­'Œß´]3룀 œ-pAß }îýûñÁ<ÉÓ|e"žÈ%? +™°XV °þÛ{¨L‚à{»IÊo.‘P£Lp 8R_ŸzH¢(“¯¯/ø”9ÛÆfûöí\yˆ ´»KþçO›ÕÕYÙÙééé  ýõ2!ÊôÏóxvv_++äåCCCù +ç»L%%%îIII4>˜Ù£Gww8çð]&Ê„HÊÌ{YP°téÒ²²²#‡“>,**2øåQz}®órrr–::B›v<8ø§Ÿ~jBõx!ÌÓÖÖ.ùô©†cÄs|0O¬þŒñÕ«Û¶m‹Ã?еÊuúô!C¨¬¸{÷®í·«•I8äí&Yïܽ+å7—H¨Q¦ÚÚځƒ3&8(HxÎï*ÓíÛ·¡Ç… ©©©¾N:•3ßó d2c†¥¥e£Þ·¤LäûKÐv»lß.häqÞóÒÒӝœœ hà‚IÊ'ˆ¢Ó¦M3g΄GÌc¨LˆäÇ»Lþù§¹…4AÐâáô/S¦N­¬¬¼uó&çô;®®®¥ee^žžÐnó¾Ë”•mkk ïù¸¸&Ì!Á ©L«V­ê¬­íæî=רLb…K™ —8p »›[Ÿ>}ˆT&º@ej>¨L‚¸Ýtúôi)¿¹DBكyCtuûöí{&*Jx6Q”iôèÑþ~~Б˜˜š£íý‡c¦&âÂ~øàxtxà-›œœ:vìxäðáÿðLè$¾ÊDúœ¦ oBFç;È8ÈR@@ÀÑcÇXß&ú«2Aáð¿Ýo¿-_¾œ +•‰Y 2!’GLÃ?œ:uÊeûöQ£F&ž¦ó=ôМBßϹyaaátCCØ;4“ïðÄã֖žžžMù’ÿ†k^&ßwx{ÇÇÇ×sŒqŠÊ$VÈ£Ahðv—É“'s>u‰ÊD¨LÍ•© ó›3å1Nʔ N”œœœŒôt®‘d˜˜˜ÇOž,^´HKKë»Ê”šš +½&1æ^Rr2˜\xáaad~Þw™Ò32À| ¹âÝ»x•‰Ë—ˆDAÖ$h*[{x¹§OŸÖÔԈO™ †Ðµ@¯C àN‚ÊÄ,P™É#&e‚Öò7;;h-wîÜ9Ó̌Ŏ’gΚõùóç]»vMž4‰ˆß¾}»|Ŋ'OžCáñU¦êêjSÓW¯^…œ<©¯¯ßœïËâ7•-p/+kãƍÅßfÒCe+ÄQ‚žËÑÑñ÷ xç¦De¢ T¦æƒÊ$óP¦L§OŸÞæâ²uëVۏuÎ`dl\TTtûÖ­¶mÛ6v^&¢W^´páÚµk‰¾Ã?ìòñ + +²¶¶vws½Î\ÊÄחøZ“eb±ŸH8ØÝ㢢âbBµÊ4aâÄÿ54¸º¹ýb`À»•‰Y 2!’G|ó2½,(033SUU½tñ"1ØéÓ§O-^üñãGh»wïúvî´aÆyÄV‚æeÊÈÈ°wpèÑ£Çù¸¸fÎþÎW™XìN +ºßC‡êëëQ™Ä +%7w÷ ë×  •‰.P™š*“ÌC™2UUU™˜š~øðÁÏÏÏ`Ü8"±¶¶ÚǨ¨(²‹j¬2o˜ÍœYXX8vìX–e"öþúõëð°°#FˆXgNeâK¼Ö$\™ÊÊÊ|||à{õ¢è f‚„„„)S¦zO•‰Y 2!’§ùÊ?'gíš5¼ož‹‹{øðá/¤9”——Câ;w €Æøðá3ŒûrŒèþ¦°pÓ¦M¼;:yòä«×¯MMLtuu›POAÊD½Œ«›[ û™ê&€ÊD ¨LtÊÔ|P™dʔ‰Å¬£¤¤¤¥_¿~555ׯ_ÿøñㄠ8@Ä÷„2õéӇkÐØM7Ž3†W™€Ø̞­®®~>.®C‡‚OKOÿù©gϸ¸8ÇÜ •é»¾DÀeM¢(dJÉT&fÊ„Hžæ+ã®L¬æ5Ô¨L”€ÊD¨LÍ•Iæ¡R™Xì›*aááéii¯^¿–——ÿù矍ŒŒLfÌ ÇJò÷÷Ïyð€wÃE‹>üÀOóòp­ »yëÖȑ#çϛwôØ1¿C‡xïSí?pàɓ'sç̱»"”i¤¾¾(¾DÀiMùùù"*“„Aeb¨LˆäAe¢¶pT&J@e¢ T¦æƒÊ$óP¬LÌ”ÉÊÊ*$$DD_" ­ 4/8(• i&¨LˆäAe¢¶pT&J@e¢ T¦æƒÊ$óüÐÊ4Ëܼ´´TWWWt_" ¬)66¶U«V÷³³ÅWæÊÄ,P™ɃÊDmá¨L”€ÊD¨LÍ•Iæù¡• .ïׯ_·hÑ¢ ۂ5UUU±š1(­ø@eb¨LˆäAe¢¶pT&J@e¢ T¦æƒÊ$óüÐÊTXXXYYÙä÷}áÐ)++s͉$  21 P¦šššÜÜܒÒRµÖ­‡Ê9tuu5D“êêêÍ!®Ó/_¾hhhˆ8² UÀNa×;v”äð-’•‰ÚÂQ™(•‰.P™š*“ÌóC+“¬‚ÊÄ,­Lååå<EÜtZ¶l9wΜիW´Ü¸ysÑ¢EG?~|“÷’°fíÚðððÇSRmñòò:"hRFƒÊDmá¨L”€ÊD¨LÍ•IæAe’AP™˜s• |iþ‚<°¶¶622ꤥUZVxõêUS*“´B*“ºº:9Ÿ¬ls,0ÎX*“ƒÊD¨LÍ•IæAe’AP™˜s•ÉeûöS§N¹nßnccC&644¬ß°á… ǎ37•I:!•é•IjAe¢ T¦æƒÊ$ó 2É ¨L̂¡Ê1☱cþùgè¹^õyYP°oß>kkk^e‚'))éâŋ?~ìرã̙3 ÈyÛ`íå+Wâϟ‡Âµ;wžif6nÜ82=}úôLttŸÞ½áTç­XYY¬½{çNyyy+UU==½¹sæ´nÝVedd$§¤¬]³&""âú +òòP¾­­-ùžÕ—/_Ž>xðÉÜÜ<'''•Iæ@e’ZP™è•©ù 2É<¨L2*³`¨2ݸqcÑâÅk×®]´p¡°lÊT__¿~ÃðŸ#Fèr?''++ ÌÄËÓ¤ Ú¢Í[¶ÄÆƂä 4(;ÎâûîîîÖVVœÊ”÷왽½=è։ãÇÛµkǵ;ð% KËϟ?«ªª>{ö,55u̘1ÁAA°öÄɓÞÞÞ yuµµÌþüQn.hÛNooX[ZZú«Í‡ —GŠÑµ“Ie + £»ôðû‚”û *% 2Ñ*SóAe’yP™dT&fÁPe +Þ¹k—¿Ÿß¤I“„dãT¦«W¯.ut\æè¸råJb-q¯ÃÏÏoò¤I·nÝú}áBÇ¥KW­Z«À¯æϟÿäéÓÔÛ·“’’ej£¦fgg§Ý¹3(††ïî<èçï=pà@"6㺓™Ù¶m[P¦;vNŸ¾gÏ…††‡yóîÝ»w?;[EEe÷îÝÇÉ{Y/_¾4·°¨ªª’IeB¨•‰P™è•©ù 2É<¨L2*³`¨2úìÞ}ôèÑ_ „dãT¦•«V]»v ì¥e˖ÄڊŠ +4Aºìß¿aÆø 232Ú´iC¬}ñâÅǏGŒA(œÌ XÐÿá»»ÒÒÒׯ_ëêê¡};ºš’Ò¥KB™`óÑ£GùùùúúÞ¼qCKKë—ñã;tè}æ YÚêÕ«/]¾ŒÊ„|T&J@e¢ T¦æƒÊ$ó 2É ¨L̂¡ÊtêÔ)—íÛ÷îÝkld$$§2±–;řÁÂÒ²ªª*á…9s疔”\¹|™·âÁ<…úúúŸzö„Ã%d–§¢¢¢Ë—/ççç¿.,,(((..†Ä”äd•eº|éRϞ=‰ÌGŽÙ»oߍë×Û·o?`à@®K&((h—*ò]P™(•‰.P™š*“ÌóC+ÓþÆÿòK“ƒ!8t-Z´èÝ»7µµj>¨L̂¡Ê”›› ¶ckk»Õٙk\6l9r¤……§2M74lÛ¶íéS§83[ZYUWWǟ?ÿ«Í—ÏŸ/ñ›#ˆP&===óY³699-X°`Ãúõ|k•ž‘±téR¨ÀP]ÝÞ}úèèè¼ÈÏSâT¦Ä+WºwïNä?rô(X(S»ví4göl²´O//T&ä» 2Q*] 25T&™ç‡V¦~ýûÃ×WUUmB<–——kjjÞ¾uKuk¨L̂¡Ê—€¡‘DŠÉIIÄxt$IÉÉ˗/·²²òpwçT¦… ™™‘žN^q555zúúƒ + )JLL¼w÷n‹-ˆµ999pd@>|øÏ»Laa#FŒX±reRRÒ©ÈHòé;NÌfÎ,úðá… íÛ·'R|||ƒ‚ ’]»v¢L:u5zôO?ýÎ1(‚››[xD*ò]P™(•‰.P™š*“ÌóC+“•µõ³gÏƎ³ÿ~eeeÑ7¬¯¯‡–.Ø*)1Q|5l¨L̂¡ÊÄúvógÜر`ä HóæÏÿòåËåK—´´´8•éLt´³³³—§§……‘9**j붘;gÎå˗W­^í½cǬY³ˆµ›œœ úž´´4rļââb#cãvíڝ;{–”+’‘#Gjwî|66–øXQQabjúöíÛ+—/÷èÑC¸2ÁªÐгgÏöÓÑa±ƒ`ã3>}ú„Ê„|T&J@e¢ T¦æƒÊ$óüèÊÁÙéÓ§»tî,º5¾ô87wÙòå~‡ñ}ŽHÜ@›·l‰‰‰±µµÕ×ÓûX\ +ł2>uJWWW¸2•––šÍœYSScgg§ÖºuDddYY„¨LÈwAe¢T&º@ej>¨L2Ϗ®Lóæ̓8ÕaÞ<­‰ô¥¼¼,àš  Þ½.((8ä痒’RUU5ÙÏð,Z¸pƒOŸ>Ù;8€Û„œ<©¦¦Fn_g““Óýû÷>LN½"Neb µ&^_b P&(Äg÷nˆ€ˆc+Ve ªJJJ›7o¶07—““c¡21 T&a:¨L”€ÊDÒ¬L @'yzF{ˆ)^x• B/¿C‡¸ò«¨¨üôÓO°ðþý{ˆý¾|ù²bÅ +ˆš ¶„híò•+žžžŸ? +ÒÓÓkZUQ™dz”‰˜ Ävß&Y½jU×®]ÁLÍÌ@–LMMuttjkkïdf¦\½Ú¯_?¸‰7bbb6oÙbbb²ÛLJÜ<,,ÌÝÃcÓ¦Mó¾[ .eb °&¾¾ÄâQ¦ºº:PAð%È_SSCf·2@mûöíë½cGŸ>}P™˜*‚0T&J@e¢ iV¦>¤¥¦ +ÊÀ«LÊJJB^2wtt¼výzÈɓ\§YQQ‘‘±1’”˜Ø´'ôP™d:• NY}}}¾vîÚL rE&>|xßþý[mmmYìJ«V¯¾rå +œOpVAÊÃGÀƍàïOÜo¯2±x¬I/±þ­L÷îÝÛâìüîÝ;NY"Œ2òòòð­ííí³³²r<`¡21T&DòäåååççÓ] zÐÑÑ!Æ¡T&J@e¢‹D™>þØÊù`^ZZÚ&'§¿Ëʪé{0èÙÊ+RRRîçä°P™*"yP™¨-•‰¥LÕÕÕċÍpð¡#–——7442É; •I0Ò¬Lϟ?Ÿ0agb«V­vz{˼ÊTZZ:vìXÎüÚ·'neRQVViÑb³““™™ç8¨LÌBʕi˖-rsyÓÕÕÕCšôô‚ø€Kzý°Ðе¬¢¢2f̘ 4êæó*µ…£2Q‚ˆÊ´déR%%%߃ayá…wïÝ»“™ ½ó±ÀÀðððë×® Ú•I?ˆ2¿ÙÙåääDŸ9£Ãž”ä˗/³ÌÍáBÛþx§ P™diT&P+KK°®UDpùèáCB]ÎDG;;;Û444,øý÷´´´]»v™™šŠR .eâëK|­I2€ÚÁڋ/B±¨U¦_Ə‡£doo¿|Ù2¢™à•‰YH¹2A=Á¸?¨µi³wÏZª$âo„?õì Ý»wï®\¹RVVvèС)“'Ó];镉ÚÂQ™(ADeúÕÆFOOoíš5ÕÕÕÿÕÓ9r$åŸ:u +Nì̌ A¢2 âÇQ¦—/_Ú̞ Êíææ6aüxûýW7·ÜÜܝÞÞ3gÎlZUQ™diT&¨¸þ‹/ÂÃÂ8¯:è“ÌfÎlÕªñäýóçÏ-­¬ºvíM<ÎWTTdjfV[[wœÊ$ėȽsY“pe"¸sçÎÖ­[ýýý©U¦;v€õèуïZT&f!ýÊÝÉö€"ÒLyyù˜±cx<8˜ü»Æ§OŸf˜˜@ïx5%…ïà1?,¨LÔŽÊD ¢ßeRUU…Pòæ­[ .trrr°·‡tggçÜǏϝ=+hCT&Aü8ÊÄbÏá ß÷͛7ZZZÿéÒ¥ìï¿ + + ¶„ËТÉUEe’y¤Q™XlãŸ3w.hÌôiÓôôôTTT^ÆÄď5êëׯàK¯_¿_â¼»š˜˜¸båJ]]]Эï¾É@*Ów}‰€ËšDQ&ûEU(¿e˖³Q*³`´2UWWgdfþÜ¿?t9¹¹¹ëïԁ«Àò±¸XA^¾_¿~£F"þ˜WQQq/+kÈàÁ`8É))õuu£Gîß¿?4D·oß~š—××ĉ¡÷âÜErrò›·o555§M*è‘ ¢Ã^æè¸råJÎôý@‡ +1VVv6L½~ú‰\ûñãGØ)Ôö’÷ì٘ѣ߾}›rõêÿ uã, +znX5ïÞ­Û¸qã„Ï å 2Q[8*%ˆ¨LÄì:V––éééE?BxÚÐÐ=8\þÐÚ•IR«L§OŸ†&wÁ‚‚2\¹råy~þâE‹ˆ¿”Á9 ¯ `;w®ðb‰nΟâOŸÔÔԆ Ñ&t1Í©**“ÌC2l´†#Ùݒ»‡Ôºuëx/Œ­Û¶ÅÇÇ;::.Z¸Px5e‚ L_"à´¦ÌÌLQ”Iò 21 F+SQQ‘Á/¿XXXÀõuuuOŸúOϖ-[vìر¬¬¬¤¤dØСpÕC—FÎuæ tT/Âîíí V“‘‘¦—˜Nß¾ÑÑÑDÿ—ž‘ñÇêÕ_þïÿ ²‡x2»»»ó}òdlì¸qšþþþ\©ÔÖÖBU{tïI&BKûJ½}\hÆ Ðh?ƒNòsÆÖ¡¡¡;¼½UTT´µµ_¿~ ë‰ãÇâ°/fÊDmá¨L¢PSS +šADT&¤½{÷FDFB‹±iãF+Ÿ>}:sÖ?@—ÇwRT&AH­21T&™‡eƒJËÊjkjÔ54 ¢¶pP&{û«×®‰èK¤5YZZúøø 2!ÍDú•éþýû>ÿUEŽÅšÎî eRTTtws0`„DS§M›8q"4ô õõõÞ;wÂõuäðáñãÇÊéGŽïûñãGSS¸¦Œ Aœ Öñõõõó÷?zôè/ì1N¦öêÕËßÏ.OÐggçĤ¤¸sçúôéÃ[Uа­[·ÂBïÞ½õõõõþû_ø_ƒ£Ý€š?~<9)‰xpjküòË®;ãΟe‚p +ê ›ƒæ͛?ÿå˗wï܁°ì^VÖܹs §O÷ððhݺõ˂°¾~ýûƒ5‰÷è‹ É+„¹ðC+((´¥t^oÑ®L•••ÇŽãºE):¨L¢Giâ¤IëÖ­³ùõWÎ!‹Hš<•-\ËpÍjkk φÊ$T¦æƒÊ$óH»2‰P&õþ.+ݗk‚pªcǎ)ÉÉâ«aÓ@ebÒ¯LwîÜáJ„ ç1{=B™@üý‰U………çããAz~›¨úá£GVVV®Û·ÛØØÊdaaáåéI¬]µzõå˗o\¿NLcýâÅ ã3ˆ244ÔÃÓ36&dŒÈ Ö¤§¯¿`þüµk×ò­mnnnðñã·nÝúòå ‹=ÄÿÔ)S Dƒ8‰õm„ÙU+W:²ÝIIIq\¶ Ž9yB™À¸È×Ä`ñçÏ÷íÛwýúõ /f¤§“FGGÿùçŸP ¾‘ŸôÓLe*..¶wpõ 9y’s^èPà|Ç>vô(ù²å³gÏ`_©iiŸ?†Ý»w733[øûïäÝØ$33“³|8ÁàPÃï2oÞ¼öíÛ7õ[þ AÊu¾|å +4•¥eeÏòòšV8*“(GIII©wïÞ»vî„+‹+C“•IDP™ÊÔ|P™džZ™&O™߈#„ÜÇôý÷ÙZÒä.V| 21 éW&8Õ¡ äL”““ëß¿?ë›29.]ºjÕ*Î }>yüøuaáëW¯Ò32òòò\\\æ̞M(ÓÆ æϟOäÜ°qcbbbûŒe± .Ì-›7ÛÙفؤ\½ºhÑ"ÎÙ«ÃÂÂzõêu&*JHëëë!L¿s÷îŋ.Ž°KKËòŠÿ½3¨)íø©”’Æ6u¬¡k5£UhU&eZD…„6’R²f+KÙÉZ¦R–J‹dM¶!ƒBJ†Wڛßwîó:¿3ws«[Ý{}?p;ç9Ï}î¹ç<Ï÷sϳTœ?wòt]²äîÝ»—.^í!ÊD_›¬ýûûïC‡6}ºŒŒLô™3Í=›BCóŸ2EGG¯ôñaYׁ¬I Çg0G,]¶LAAR:´²ª +L533süøñû÷í##NçϟñÃ—K¨©­½yó&0ÄÖgcbšPE³ÃQ™?~ ž\pÿ>Y0•©E¡ÎÜqpÂE²xñbú@_>•iÓ¦M1\æx˜0a™Ü´s(„4_™àû]²t)´èЮðS+kkMMÍð°0b¹ ®f3göë×N5´Üºwï^ùóæ1˜Ê^}/?Ÿ%ÿ5kÖÀ÷²n©©i3?/ƒM™>~üÅ1†7jhh iP™ZúY¤¤¤äåå×khh-ü/e{•6…|}ðm‚cCÍ°ÀÙäœÛ¨LÜ@ej>¨LbÏ7­Lâ +*“h!Ê´léRggg²…8‰­­££#(ƒIÏúõW???k++¢Lô‘‡2AD~ùòå¼ë×ùyÈàpâĉô´´=zзC” q˜ƒƒƒ—§'ƒù|L ämàÀ¾~~’“ûöíËøš2™˜šVWUÑ.B|ðüŋŸÆŽ¥Oî'Bd,DÀFÆÆñqqpL˜bóûÙ³]ºt! –.]z>)élLŒŠŠ +ýÀššš©cÕÔ6lØÀà¢LÀµk×llmœœÜ–-kZ éPÊ´ÄÕõ»ï¾ Y¿¾¶¶JBOƒÊÔ¢°(¡C‡ZZZþ~~ð¥4§cTææëÖ­›2e +·4¨LÜ@ej>¨Lb*“‚Ê$Zˆ™2yzzÆÅÇ_ÏÍ¥†ýìÙ»w˖-¾«V͙3§QÊD¦¦b·361133#þC'99ÙuÉCCà ë×ÓÇó  +¢ÜXæævûöí|®¨ fÏã­LD0¨y#Ì©öÀЮfd( +zZšÖAPÓ?äääØÚÙMš4 ¾î .D;6zôh²«¡¡aÜøñ`°‰ ìBÓCõ·ä¦L‡ +^·ŽŒ‚kr )(e“Qa‘%*S‹ÂQ™IIÉöíÛ¯ôöÞµ{wsÆ2mÞ²%;+ë ÷´¨LÜ@ej>¨Lb*“‚Ê$Zˆ™2EDFnÚ´iÑ…Pé×ÖÖÆÇÇCóùóg777'GÇF)Ó§OŸŒŒ?|øNž<¹äíۀ€€‡ÆDGƒÆ°”ª2GGÇôŒŒ!C†Ì43û^Y¹ºªêjff\\$¢–²½zõªÃ¼y U«W¯žeaA6òV¦—/_‚ª/AÉûô铖žþO?C++ð@ÁéVE€3æÁ× _:¼ :ÚŠŠŠ´utLLLև„ðΔ)3+ t‹ü _eeUUÞõëm—.]À¸¸-ÆÕ(àB…Ë•wš+V4-óªÊÊ­Û¶‘×|®]Z]] /tutÔ¸/¹!6ÐÏ;dé¶à  &ww‡Kúà¡C9ÙÙÜ 2q•©ù 2‰=¨Lb*“h!fÊv´ÌÍíʕ+äOð ð +—1cƄ‡‡7J™ÈŸp ƒ‘½½zõòóõÕÒÒâX˜ŠŠŠ={÷Bkýþ¯¿È–Ž;»-[F_£°¾¾~Š–Öû÷ï³23©ÙÞx+üyëÖ­5÷ïßg0»™ƒ5 dZ‚6A€ÊD:^ úäŒ/“Z͞ 'Šw LÔWL´¾žÞ’%K¨™÷šÉ¤É“ß½{Ç; \{M˼®¶öJZy —Ÿ³üÁmBϧ`Š1ô³ÄN;&k֘››76gˆd nq˜7¯{÷î,sÕÐAeâ†0(ܞééé÷ + +ঀzI[KK€7ÅßLš6Áéù¤$YYYÍ/#îL;‚¢²L܊Ê$ö 2‰!¨L¢…+Ôdf3v`$`Bßþ† ˆ +´yQ™°§gɟc†oß¾}ýúµœœÜ€è³çqšÛgϞ¹IJJöéÓŽb/³ž¾>´èô©Þ˜@˜NåϾ„œ?~üØ·o_íG!(eúô铩™œmx¡¤¤†IY(\?ÿò ÿO™ìßÏ`®8 +}üĉٖ–>>>Ô³ÁæCuÌ#ÓµÁeƞ;æµ(Ü:æIIIuêÔÉ××w#ÀGǼ ààS´93áƄ»ž|¡;wîÔåLÜh[e‚opoD|w555ݺuƒ;´¬¬ ¾Pggç%®®Í_ÈáeQ‘ŸŸ_pPÐWWî∮ž4dû÷í£¶À…E ݲ…ž •IìAeCP™D !W&ñãʕ+NÎÎG7n\[—¥Íˆ2Aóáîᑘ˜¸{×®—/_B KŸsBŠ '‚µþÎi>è˗/C$4qâĎ;²eÚ±cÇΰ°éÓ§C¸ðUIæJ™lmmïÞ½[pï^ sbq:¨L- +»2ýo–ùy󜜜dddøœþá÷ØX–…¼à"QPPY3f Q™¸Ñ¶Ê´cç?hkiyyy‘§Ê%%%+}|®^½J_+¯Éì?p`ýúõW._ˆ2A½§®¡ááîÎ2“'*“؃Ê$† 2‰¨L­Æ‘#GΝ;w7?ôèÑ L‚ŠÅE(é»hmeåçç×ÐÐ0oþüÌÌÌ 6‘^˗ÇÆÆÂ9ÿqÀú`SïÊ˯åäHII±+äö›M^^Þºà`33³¦~ÊAŸdÜÙÙ9..n͚55ÿž4•©EaQ&ð%uuußU«ÈJÓ \ʶíhCezòäÉ CCpÝÇÑ»3À9múô²²²«ôΰ׎;r¬ÀaWuu5™P„ÚÈM™ +HIχÔ,=®Y”éáÇÆ&&ééÝ»w§'Ce{P™ÄT&Ñ•©ÕHKOIðòòê*â=ëšIó•éñãÇ3ÍÍûöí{æôiiæêv%%%FÆƵµµ±¿ÿN!@šáÇ:x +z ÑÙ¶}û®]»\\\HðÊqƼçϟC 9Ÿ?wŽÏ¡A¼a_Ê"ø¸øxª“*S‹B%I{ôè±60p¿:5A™*++á2ƒobt鯭²ˆÊč6T¦õ6ìß¿ÿÀþý“&Mbٕ••þÛ¥¤¤̙{öìݛ›› ¯‡ lkkkffF„Ç×ϯ®®NSS344ª¸ÀŒ }}}á’ؼeË©S§àÚ‡™~ø˜‘ÐÈ#Ž;F"!n“ŒïÙ³gKhè4ƒšõi™°+!ïƍ˗¿~óB(T¦…œ%wwKKKö’_U&õãǏW|þ¬«££««{ÿþý ¾yóvuéÒÅÏ×wúôé< +€Êč6T&++«{_]/%5ÕÅÅeøðá ²:8yòÒ¥KÔ½ì¼`Á­[·@žœzõêuþüùäädGGGw77¸Á9r>)ÉËÓsȐ!õYΞýâŋ††}}ýÒ·owîܸv-4Áp6üý74Äyyyëׯ716f°)“­­êȑ,%De{¾ieœKVV¶i‡×ÖÖ*++7s²©–•I´@eBZŸf*„1114X[Y±ìòó÷_¸p!5á8xÈDE¤¹éÖ­›‘‘‘Ë¢EÔ*À`Y¹À¿G§0˜u,7………a;w²ÿÝX¸)ƒÙgß¾}»vï¾{çNÓ2Geâ‡>€ý.Y²„Ûì)¼•)##©öË4ø£cbàÌ[0— +ˆŽŽ†“™Ïc†wT&n´¡2Ma΀ +ŽÁ;™Ù̙þú+..ŽÄlÿ¬*á䔓““•%''ÊtùòåcGŽeNÖ___¯­£Óµkטèh[Ç<¨UÀ¯~?{vØ°a æŒAš?ÿ FÔ±cDã¡B°˜5«¼¼<íÊ º2UTTŒ?~_d䶉LP™ÄžoZ™fþñÇÆFF=ö|R4±JJJp¶Dٚ*“hÊ„´>œdœO>}úôöí[IIIeeåæOÕx(áeQQï/ƒj *“@à­L&¦¦¥¥¥áaaC‡YZÍlÝ &>|8ãËPñŋsË•‰m¨L:ºº -¼C©çϟëéë;ΟOŸ×›,_NÖ:eÊÍÍÍ»~ª[llmKJJ’“’œ”©¸¸8#=¤ÌÊζ··ð÷‡Ø‰Êœ<?5f̺2]ºtÉÍÝ=÷Ú5ögb¨LbÏ7­L³fAÕ|êÔ)g'§y´¿ÊñãÇ7nÚäâârúÔ©ómñ” ¾5#×Q™D T&¤õi}ejs¾ªLÍ•I ðP¦?þ4n=hžj`P[[{15•J¡í!CvîØÁ-T&n´¡2™››?yúl‡½£fCCQ ¼¼<ë9sX&ƒyüø±¡‘ÑòåËçÚۃ2=xð íËz€€½=ÜïܔésEE\\IIå;tð ýÁ™Xuû¶múúúteQSR²+<œýƒ 2‰=ߺ2ÙÛÛ÷þáû¹sù·&âK{÷î­üü988ø«Ê”–ž>tȐ=z¢Èÿc™››½ªª*ǽ¨L¢*Òú 2 6sT&ÀC™à»ƒ½ô)§mmm?UTDŸ9C¥126îѽ{DD·üQ™¸Ñ†ÊDê¢Ã‡?že„[‘‘‘AAARRRà9«,--©½wóó-,,üýý­fÏezøð!ýQoeª¬¬Œe6»@bb¢›»;\6ôÅjÉ#,r/ӕI[Ggîܹì’¨LߨLöÓ òóóù´&ʗƪ©eddðV¦çϟ¬^••u.1‘Gïê& ùóÏ%%%ææ^^^òòò,{Q™D T&¤õAelæ¨L‡2½zõjŠ–½÷Ô\‡?ž9}šJclbÒí»ï Èæ–?*7ÚP™ + ¦M›¨L‚Í•I  2µm»”íºuë:zàåéIºäÀ­ê––æ¶l™““lq]²äÒ¥Köï'—Gqq1˜OGIÉäää:ðV¦#GŽ¬ +‚Keäȑ 6eb0;>ñâxTüùàÁ+këaC‡FEE1h3æD>räBr2ÇOÊ$ö´¶2Ah˜“Ãq„þd"”OŸ>:uêò•+ååå`ƒ ‚Ð_¶¤wDdä“'OèÇJvèÐY^~Òĉêêêü/OIW&Æ׬‰Å—\” Îç¹sçÖ‚5‘5ÑÚ·o×ÊD^Ã)®¢%ðe±HT&ÑB•éÖ­[IIIwîޅ¥S§N£F²072dH[—‹3¥¥¥Ýºu#¯áބ›‘c·Šo +T&ÁfŽÊ$¾ªLV³gSçvë¶mÐήôö¦ÒÂõŒÊÔÚV™êêê|ýübbb$%%ÉœÂÂBø×ÖÆfùòådQZ¨Æmíìž>}:~üxht®^½Ú¹s簝;Ç0ƒCÞÊtíÚ5[[È.-.ve‚·ƒÌß½{7yÒ¤ú††¬¬,eeeˆ÷Èܔ29:9ÁõÁ*ÇOÊ$ö´¶2­^½:êøqEEEöq~ ññ]ºt)ÿt¿¸¸xèСýûõ«øüùƍ‹.tuu%)íììÀ»FŽA[]SÕÐÐ`hh.ŸÖÄ¢L îÖÄîK NÊôðÑ#__ßP³ 2Z^™È[À¿ó.\(--Ê$Zˆ–2AÛ¶Ê×÷ìÙ³ÐhAÓ%//ÿ¾¼îG¸æ—{y͝;·­ ÈJ\\Üú 2™Í0ÉÖ­[Û¶Tm*“`3Ge_U¦¯æ ¡®ŽÊÔÚV™;'üñøqÃß0@OWwРAô555)©©zA°7xÐ ² ¶CK4kÖ,*qRR„Ž3gÎd0ËN½x1ïúõîÝ»;88$&&ÖÖՑ5—( 1œë¹¹í;t9r¤©‰‰ŒŒ ÙuæÌÐ3==½•>>ææch¿àÓAe{ÚF™.]¼Ï-Áñ'Âô¾TŽŸ>}³q:£¢¢Â`*Óí;wn3­€\ ZÁÛ·o³L{Âvebp²&Ž¾Äø·2A{¹%4î+8Ÿp3ӓµ‚2¤¤¤ ~…"í +Ge!DK™àµ´´ôô𐓓#KKK]]]áª;qüøèÑ£Û¶„,@#7魛7ɟ=’••ý¡©sI‹ ”2õîÝ;êر¶.Nk0ÓܜT›¨LB e‚H .>þ«9ôêÙsʔ)Üö¢2qC”IÔAe{„N™ÌÍÍÿúð!5%…¾‘{¦¨¨¨¢¢Â²VDHwïޅªªª”›¤¿.¼ûíÛ·ûôéC Ã-**zþüyCCÃ÷ÊÊú÷'Ń7ZxéÒ%¨Rddd Ÿ²²28œ>i +øÞÇá®5j}© ØrÕ©S'Øû¶´´÷?ôïß_ §Q ”é•Ihá½.SóAeâ*SóAe{„N™œœ333>Lÿ­TÚˆrH4nÊïáéÉï nÊÄøbM&LÈÊÊâèKŒ/Ê +:ÇM` €€ŒŸ"ñÉüÁQÏX@e DH™6lܸoß¾cǎq¼# Á:thçΝ̎{#þD„ "–––po’¹VVV]•”äå£cbH4lØ°ýûöuíڕÁ\‹cë¶mGŽ!æªckk»ÄՕ8´Êcƌ¹uëÖ³gÏ BÈÊÌ1sss»I«ƌ >   0ë×_ïܹC6Bµ w̃Ûv•¯oJJ +)HÝ¢… mllHú#GÚÚØPÃ/ ¦Nݼy3©…DT&Áæ‰Ê$P™Ú +T¦æƒÊ$ö´2±¬SÔ«W/òûîÝ»wg[YLœ8qÂøñãƍ1bË*ËìÊé¯çåy{{—••]HNæóJå¡LÄFó͞=;Àߟcªc^UUUxxxä¾}ì½ò­Ø1€xTMM Úàû÷ï3P™DR¦_--A×é+¬sƒÌPúáäèÎsâÄ Ð-/OOS™àóñY¹RIIéô™3Û·o·³µõfŽäÞ±ó.X¦otèСaaîîîŽóç3˜ÊT\\ 5ƒ™©)Ä©sæ̱²¶~òäɶmÛÔƌ©®®Þ¿ø®].‹-^¼ø͛7ÁëÖ¥¥¥ÅÅÆv–—直HW&È?ïÆ ˆVMLLÞ¿¿ióæÄÄÄà  Òý” ngxGGÇv[6o†þ>}z‹Ÿè–•I°y¢2 T¦¶•©ù 2‰=m£LìÛÁsúöíK^?|øšóôôt¢oééêB GõŠ!Ó?PL·z£ÅÇQe"ýñ €[¿~=·9ôX¦xúô)TǏ="åQ´Ž2III)**®øå—_púÑB„” .<Ðrh ¨-O ᚧþl/!¡¯¯·¤ŽŽÎwݺ8~œê¿·ÒÇ')))';î\P¦7ofef‚/1˜·0„JÊß÷òduõÑ£Gï¡ô‹-Ê¿wïÊåË`PÐ*¿~ý:;+‹L°YUUå³j•šššÕ—©‡!7ÕÿüGOO´4,c™(e˚>cT,@“]uuu3 á&0‡L€2A•’š’B>Bii©º†Ô+–/o©óۊ¼xñ¢¨¸¸­KÑ6ô=˜ •I  2µ¨LÍ•IìieòððP¤ l¦NJ®À`ŽdÈË˃KðJZ7 Ç£¢†Î`*Sîõëd\X—¯\övvîî’ü†›2ÑÇ/Ý»wÏÎޞ£5±Ï˜'3:&&híÚÚº:jÒ¼–V&øÈÒ¹.^lkkK4•I´!eš¢¥öՌ jËވˆÍ›7S˜÷îÓ§O§MŸîd@»¹233OŸ>M–xe*{÷Ž¾º…©™Ü)gNŸ•‚½fffšššÔޔ””ÄÄÄØØØ¡C†@«,//úÔ)–²Añ’I~~þ¾ýûuuu·1%qS¦ˆÈÈM›6Q“Ê6nܹoií@™ ¦N…-dW}}½ÊðásæÌñ]µªùg3P™*S[ÊÔ|P™Ä¡ËÔÀ„>ù?³C¦¦.vu…jôÈáà ¶Žy555 .„ËËßߟú¥™8*û|ܬ‰ÛR¶åååkƒ‚’’’ Æb´¤2)IHH@TºbùrjÙ*“¨!BÊäèäæs-'‡ú®ö²²2ò:`õjÐP¦¼¼<ë9sà.fö³54TKK ¤è¿Ÿ>Á}AmŸin×3(Sêŋ‹-’””dïûwàÀµ1c UîÕ«×Á¨í`Y낃óïÝc0 Òäݸ¡­­Í[™¶„†îÙ³'#=½{÷îTVd‘ø„øøAƒ2‘]P 6 • á*“@@ej+P™š*“Ø#\ʁ4~¾¾³Ù̶C|Ãà4– š+C##ÝNž<©Ê\ݙؕ‰Ûüx­‰›2®]»µ3”`t‰ W¦ÒÒRˆêÖ²WL¨L¢…)ӁƒCBBüüü8. B• Ê÷ (Њ+ìíì8æÊôϔÁœ” ”l®ƒCȺu¦¦¦…Vš¢û÷“?ß¼y[zöì¹dɒÇCÅž6jôhMMÍíÛ¶1¸+ÓîÝ»C·n…{“,÷N E*(P&cãµkג]¨LP™ŸÊôñãÇÊÊJöíP‡HIIuêԉ[T&n 25T&±G¸”éÝ»w?ÿòKß¾}£Ïœ‘––¦¶C娧¯ß½{wØÎà2c™a|ðàÁ1ÑÑ|vÏcQ&ó‰38Yoeb0íÞóq±±‚U&kkë™3gš˜˜p…Ê$Zˆ2Ax§««Ûð÷߇:d}Wuuõ¯––OŸ>eª­­U×Ð9vô(•àèÑ£ T¾¾¾ 7<”©¢¢bÂĉšaaaÔ^¸‰òïÝ Z»VAAE™¢££AŠBCC©ùŋºzzPΝ;vÀŸ>>>‰çÎQÕ¥Lwîܙõë¯^žždT†&¦¦%%%ééP‡ 2!üƒÊ$øT&²:·½`MpûíÍ2Ë•‰;B¨LP傄\ºt "CɎ¡A1œ1ƒÞ¡†ÁšÁÿpŒF%n¨Lbp)°3,lǎC† ™çà·\ûöí?~°+<œLíÀm’ñennçΝs[¶ÌÉɉŸÂЕ‰·/X¬é«ÊD€zD^A¡«¢"?Eâ1–Yé 2‰"¤L f«0oþ|иÌàÞQTTüTQ‘žžõúõë‰'’.së7lØ¿ÿ¢… çϟ/##“••å²xñ AƒŽGEçóP&xí½reLLÌr//kkkˆ~RRRàֆ“·'¤aQ&òTÊjöl1ÈùÕ«Wnîî·nÝé‚z¬ ~ôèâŋÍ)oP™ÄžÖV&ˆcÊˡ Âã! ƒ3Ám)ëëë»uë6iÒ$z?½ÂÂBˆoÈìy,¼|ùš.žØŸÈ³C”éÃ_ñéKʚàS 2!ÍG䔉PRRrëÖ­ò÷ïe¤¥¬¢¢BÍ'Nñæ͛ÌÌLP¸YÈCc²ýéÓ§pkÃQTÊ?þø§+‚{9çÚµúººáL¨_‹=zJ3`À*%XÓÝ»wï?xn6nÜ8h¨à}ߖ–ýRÏl„fìر?Ð枆í]©Ù¨ÿIyïžR×®Ü~îA¾eP™ŸÊdgg5€ŸŸËöennp£†††Âk]]Ë_e™´ •‰¦L¶¶¶?ÎÉΦoÌÈȘ7þWׅ 2¸(S]]ÝǏᅼ¼<}"±Æ*Tøïÿú þSPPàsùrT&±§µ•I¨e2x0TüûXӈáÃ!jDeBš‰ˆ*‚ ¨LOe‚À´_ß¾Ô` +‹Û1ááá æãhcc–5‹Q™¸!lÊD&J:žþUuuõ7ú÷ïß«W/ˆÁòòòjkk•””À¯œ?|ø°~Ƥ¤¤ŠŠ +H,''geeµléR ö•iãƍGŽ=z䈪ª*µ1''Ç~î\Ÿ9ÖÖ=255  ›2e +ý@T&n›2‘J;wžif6a„±cÇÂkz‚ÌÌÌ°°0ø¢ƒ‚‚~0`РAööö·nßö^±BEE¥âóç={ö€to€u¤¥¥mÛ¾ýÕ«WþþþƒVþþûÿŒv´ÜˋäV^^>qҤŋƒD=-,„CôõôÀ:´osêÔ)¥  â]fT&±ç›V¦àà`¸ßäåå›vøÇ¡¾ÞB[ÇSH@e-P™DÔAe|*Ӈfš›C<†©¨4Ô×çççC«7pàÀÓ§Nݼys‘‹‹¢¢â¹ÄD2 †•‰¦L ò¨gãÆ¢¢"súx!ƒÙ––Ôª€ôŽyïÞ½³ž3<ÙÉёì%dgkëííÍøwǼªª*Êtêôi__߸ØØ!ÌYa!H^µjÕøñ㍌Œx•Iìù¦•I\Ae-P™DÔAeü/e !òÞ½{cccÿpÂ`(++OŸ>Âeˆ§²³³œœ¨!‹¨LÜBeêëë îßÏÎÊɽ~½ººº{÷îQQQdˆ)·éjjj@§oݺµÂÛÛjölFc” ôÛÜÂ.ó™3ÕÕՇ öÕ.yT&±•I Ae-P™DÔAeü+¡¡¡áóçÏXËË˳O?Ã*7„S™èTTT=ztKh(µ€‹2=þ<,<~âÇ4ÔÕ###¹åÊÄ ¡R¦ÒÒR˜QÿùÏÑ£Gé|C¼jbjúñãGS™222®1•éСCÁëÖÁµAMøñìÙ³©–––«¿(Ó£G.1•©¦¦f¤ª*µ ¸yóæl++¢LW™xyy‘þxð¦.‹§¦¦æß½Ë{u¡R¦/^¸.YBýÙ®];i)©~ýûOÕק×NðÁ× GGÇi,™œ={öÐáÃRRR'ÿ}»Õ××ÛÙÛCÝwë Aƒ¸•!;'gýúõwÜž>uª Ÿ‹ž>}ª¤¤Ô¥Kæ‰Ê$† 2‰¨LHëƒÊ$Ø$ÄÄĄÁœÙÜÚÚúMIIFz:ïΟB¥LüñÇ CCeeåþýû3¾ta½ÿ>è"¸¢¿ŸÂôŒŒùóç3¸üÖ`9{ö­[·¤¥¥ïܾMߞ–žŠ%++kbl̾<EJJ +œØöìٓeW‡ö´dtåʕE..Ԫǂ•I Ae-P™Ö‡R&%%%ˆ–Úº8­Áƍ?|øÀ@ebx(Ä£+}|Ž> á×ÃGêjkGŒÑØüQ™¸!lÊ¢âé啜œÌ`v¶”””$w +Qàš5äÑÓÑ£G×®…׳,, üÆ&& U¿üò $ÎÍÍ1|xá³g½øáСCxϞ=[BC!R··³é"ÇÊËË÷ëׯ°°pâĉyyysæÌe©°±µU€ LAAáɓ'ååå[·nÕÑÖæ]f!T¦yžžžÔÆ÷ïßÃMtéÒ%O²Ê3Q¦”•_¿yòI&S\\¬¥­ JYYYÉ¢LàŸ&LHJJ“wâX¢Lk×®µ07oÂGhG ¼œŒÊ„|T&Ñ• i}(eêß¿’ð­ÇÝ@8þúõk*“ÃC™.\¸‰>þ÷¿MXᕉ¦L„Ǐ_¼x±´¬¬¾¾þ»ï¾›ª¯OïÖÐА˜˜£2|¸®ŽNùû÷ñqqOž>•““ÓÔԜ0~|εkÅEEfffuuuñññ/^¼5zôϚšp8H(¸ÙÏLââãþøãðáÃ̞{—/_¾qãFUuõ÷½zñã?¯L æÓÚ©p>Au@ ‰2͟7/"22híZsšÛÀ°Íÿ¨ª^Í̤+¤†¦&„—:::ööö`°³fÍâX†¯*|ϟ?WSSëÔ©µd îî‰_ªÓ¢¢"ø.àkƒ?~<õ ïÁƒµuu#GŒÈÎɹ_Pйsgmmm¸H̱pǎ‹:~>Ñà!CTGŽ„/‹Š®fd|ª¨øNI ¾î®]»6ᬢ2‰!¨L¢Å·¦LP÷?qj±1cÆpKmaNNNvvö«×¯e¤¥7NkÊ–¥ ›Cmm­¤¤d„ê;õâE¨š{7~ýk¡•I°™£2 Êt7?ßÂÂñI“&edd@5¢¯¯Ïž¬oŸ><ÖÏAeâ†p*“h!ʬ +:räÈÑ#GàF#Ê´iãÆ°ðð”•é}óLLMÇýôÓë7oÒÓÓéÊtðСuë֝„F\UuŠ––¢¢â٘Ž]¿ªL×®]³±µ¥«4Íàccǎݹc„`>Š]ºÈ+(€\©¨¨ìÙ½»{÷îÒuɒ7oÞÈÊÊB&òòòïß¿—––>rø0”*(8” ´Zy«"""N>íïﯠ ¥…£ÀŸ·oÛƲÎ5?|ÓÊT\\¬¬¬ÜÖ¥<¨L¢Å·¦L>|7~<ĬKiƒSé¼|ùrÉÒ¥PB|óéÓ'¸U•””¶mÝÊÿìÃ<€*øöíÛ¸ Kå éà µö/¿üÒü’´!¨L‚Í•I ðP&ˆUÖ¯_äèQwxä€Ó?4 T¦æ#*Êã½r%ØÈ, ¢Lð………»÷ì¡úæÁŸÓ¦Á÷¹o]™à6426±9îhÒÖmÛvíÚÅíë&Êd>s&´ø,»†ù"]]]å~8Ìì<É`ŽArrv&Óxì?pnyO;;»:ܹsg¾££Ê°a$LeJNNÖÓÓ[,''—wㆍÍäɓ#öîeü»c^uuõ„‰µ´´Ö‡„@>åïß[[YÕÕק\¸ÐسúM+¸lEEÅx¶ï’O ©ëÝ»7Y(T 2‰¨LtJKKgýú+¤Y ¯¯Of(ÊÎÉYºté?Ý0È/LÍaŠ–T»aaaM8•ItAe~¾º.SMMMUUUÈúõpނ֮eOо}{n#+¨LÜAej>¢¢LIIIK–.õY¹ƒR¦¡C‡NŸ1ƒzà³cçNKRSRÀLèÊDÖùuwwwdNñâÅ ]==SSӐuëØË@”‰cñ–¸º.\¸^ì Û±cǕ˗{õêÅ`^‡×rsÓÓÒÀmÀÙà^>sú4uÔþýû×oØpéâEeee¢Lôólem]RRr15•ñoe"!‡¡¡!„ë¤wÉ£GêêêTTTøY̍Î7­L¤ÕÑÑ?n\c}õê|% ãW32Z¢lÍ•I´!e‚ZæãǏPi(((@Æž ººByyyöÉX!ց]p`EEeZµjÕé3gÀgXÆÚ¦¥¥9:9ѧ…e0âCm(##Ã-H‚÷‚ îSúLµ• Š‰!%U‡Âø°rrrÒÒÒÿ_ T&‘•Iøás)Û«W¯Âí©¥¥ÕØüQ™¸ÊÔ|DE™âââ<½¼üý!V¤” ÞÒ÷ìÑ#22šxÐ===·eË»ºÒ•‰Ìïé{ôèA¶¬òõ…x8#=}:o¢LPß²Ob ‰™K“I&ˆƒAe8iòä9sæ,÷ò"+e >\“9ðŒðüÏ?á*%“‚2åäää^»Fí…>5™€žeú‡E..©©©ð¦“&MÒÔÐøù—_¾º01G¾ie²˜5 ¾3¸ÊwïÚÕ¨gMwïÞµŸ;wú´ipìyá‹6P™D ‘P¦OŸ>­ß°áܹsðþE™eau1Q]=½_g͂¨ñÈÑ£ (°×ÞÞÞeÑ"¢Ÿ?^ræ̙†††ï¾ûjá•>>•  µ±cûõëDz ŽOH3ztïÞ½Iy 自¬ÞféÒ¥d.Z¨¾Í-,Vz{C“ U\·nݼ<=ŒŒ*++µutÊËËÁ÷Àë¶lÞ uè\‡å˗oܸ±´´ÔØÈhÆ eee6n¼pᤗ””$-ÇÌÁK¨L¢ *S›S]] ‘PŸ>}¸%àS™P À½ÌÃHKKSÁ;¨LÜ@ej>¢¢L›7oÞqèàÁ &Е)<<|gXXVf&ԓ&¦¦Ð +<˜®LиOVW'1 +V¬°·³cÙÈçŒyvvv¥ee ññÑÑÑ>«V%&$ 8\N={öd¿çϛ§«« ʔ——¥¥¶;9;?~ü˜£2Ahqêô鄄„;wî@,À\{{777|ÊÔ@™ °ƒ¯s4>­‰ø’‹‹ËÀ ne:pð \‚rrr÷¢2‰"¡LÎ \½zuÅò媪ª ûöïOKK£ªÂ1jj :à·oߦV„Š ê\SÔ54®çæîعrà¨Lä¡ÿܹs—{yñ( TyÖÖÖwîÞurt„·€ºuÛ¶m}øpêÔ© xYT¤££Ó¹sç‰'šƒ°mݶ < +¨WϞ)©©« lr˜7o¬šp3ÍÍƌ‡ j```jfööí[(0D´÷ +àp))©è3gÀ÷P™D—¯*Saaယ–9*?ÀY‚JÀÙÙÙqþ|Ž«‚ò©LpS¯ðö&3P³€c™š*Só e‚Ö¾¦wïÞegeA»FW&ò ­] /®¤¥Ã0˜ó‰SÊïáé¹|ùrzÚÚZhCAl a1>•‰dûûïÁëÖÁ­Mz╗—Oœ4iΜ9¾«Vq<ªQÊÄ`ŽÂ‚âA}›síÚ®]» + + +ŽGEñ˜ƒŠ#¨LöÓ À>ù´&ʗÀ§322ÚJ™ ] + À`êTvKFe-„_™ –™5k¸„««+Ù—ßè1c¨nrD™®fd>là'S´´lmlV®\ùèÑ##cc’–-]JŽ:~|õêÕ•)õâÅE‹qü½ŠNnnîo66^žž`hd h’¾¾¾™™ÙÚÀ@¢L vÐl“»ãÒ¥K . Y·ÎÔԔñïŽy÷î݃êäêÀþý$1|ðlݺÕàKóãæM+++Ò÷ú›U&pK83ù÷îUWWƒajjhL:•Šz¡y;zô(==œL)iéÞ½{CËþã\Q`°7oÞ|[Z +™ 8ÐÈÈèGš®<þ<66–%CiH£®®Î1Úþ*<”éÓ§OÛwì8vìXÁ½{MșÊÄä,Áק¤¤m.50ŸÊÏÖmÛà$ûé'–©/¿WVÖÕÑáv *7P™šð+ü›7oŽˆŒœ?ož‡‡ã˺LD™ÌYò¾SRzöçŸ 9Ðj3þ­Lvvv[‚¥°Té+}|¢££80iâDúv>•‰<¼šª¯&:Úßßßjöl²ÝÜÂڝ” ¨¾ñ{öì9~âÄ®ððaÆñV¦cQQkÖ¬¦ ¸;wî@1|V®¤ú’€ÞÊó *Ó?ʯù±&º/ÁŸm¨Lššoß¾…¦bÔ¨QÁAA,ýP™D áW&:µµµwÞ¾}ÛÓˋô Ê7TdT²¡Ã†™››ƒÀ@í¼iÓ¦˜èh²ÞðîÝ»I“'sT&"$˽¼æΝˣ daøÌ«WÉ" [[Ûæ^»F”iÑ…”àA5jhdäççgmeÅà¤Ltûrtr‚ŠøZNŠA%©«§'++ûûïߦ2Á§†z¯¦¦f@ÿþr;¿|ñâý_õíÛ÷è‘#d6Ž§……Ó¦M“’’úÿå5þþû¿Ÿ>ÕÕÕ)vérèС!Ì>“„óIIð]|üø‚מ={B{yÿþý††hÝ¡'âzõêU‡yóddd¨Æ¾8’)++ŠâÑùŠ• 27#¿nBi=|ØØl ¨Lü@?K:tÐÑÖöõõ¥ßÅ|*¦ðeÁeÐØ~5¨LÜ@ej>B¨L£Gž}:ûzhäWE}}ýí۶ѷeš2eÊpö‚žQkuøùûŸmÇcSRSëëêXŠÕ×׃–@k Õ(ù +¡Ì W32>|ø %- _†¶¶64®-*]™_³&_b21˜­üëìììäèHýòŠÊ$Zˆ„2AuBRüêTZZJW&m-­7R量{A™`cä¾}9Ùي´Ñ–jcÇB€È®Lp—‘»rÅòåìe€J€\äP‰C%sóÆ úÞU¾¾§OŸ.¸wïõ›7 Lt ‚FbÚôéœÍ±¶fpR&úÏ`ð'¼Ë`ª¹Ðe¤§ƒÊ.¡£« .ѯ_?S3ââã¡A‚¶*LÆe¢~¹$TVVFÇÄBðtòÄ ݦ¥¥9/X0`À€ µka;ÙXRRMæ•+W6lØ`Ì\T‡(ýGóY\K»ví2˜:uëÖ­ýÈìÊTPPà³j\ð“4¨L- +ý,!µoß~¹—4UdT$ŸÊd=gNÿ~ýÖrš17¨LÜ@ej>B¨Lô-.<lb©p‘E™¨>§O" (eÚ±cÇΰ°½{÷þL›!ÁTƒ—/_^¹|™.!þþ“'Oæï\þ?‚T&hY¡…‹cvìÙ³guUÕû¿þêܹsHHÕñÑlæÌ7oÞÐ?$kªªª.]¼Hm_òööŽ‹311  +‚Z@‹ ® m-aÕÕÕÀA :VM­QfQ&wkb÷%†p(AJJª«¢âºÒÏ•I´~e*ÿê2¨áÒRQQ8p Ô8 EÆÆÆëCBLe‚{â]êJ™¶oß®•vå +Ô dÔ9£F†[]™êêêÔ54à¾>—˜Èòû1ePìÚõØÑ£nîîPC%NŸÏÝÃ#))é^~~Qq1TúôGU_U&¨[fΜIÿji µmjJ +ýÝთ½{—ráÂ7¨Ld€Ò\{{úvҨ÷ --ÍQ™vvvÙ997òòäääjkkuõôª*+ããã¡Ò¦'ƒšâ­®]»Æ1ûãqT&ó2 ñ!ÃÆ~dº2Á· ¡9´,ƒÿÑAT¦…E™½ŠCMu ŸÊ´ÿÀ³@L Çy;y€ÊÄ T¦æ#TÊ}3hOáfa*K’µgB¶ÔÔÔHHHPwTÚPëÂMJ^HJJr|´ ™iàXne`žr†üéÅ g"~Ñ·o_"K,ã¶þÝèÔ©9 +vA•––BK1 ½œü#0e‚ó2oþ|0'''[RÄÛ·o/ssƒàL‘LfÕ(e¢| B0Bò 7lܸoß>hóæ̙>'%+;£vÐp›#ìÊÄàdM}‰!LÊD€ëO[[ÛÏ×wñâŨL"„ð+Ó©S§|ýüè!ô„à”‰,ËC™.\¸°ØÕuËæÍÓ§O'»>zr›d<$$äÀÁƒìŒÉ3z æ¡Ã‡GEE©}» õ˜æÏ?ËÉÊÂýH~'ã­LÆ gv#dW&Rj™3š‡8*„}‘‘ß 2={ölªԓ›6m¢·gÐüTWWC° y(“­íµk׈2‘™â]-ZÌé§ÇôŒŒÎrr£F‚&™‡2tAäwýzc?2¥LðÝåää@KL=\¢@ejQ8*;|éÐ`]ºtiÓƍüLÿ×UîÝÍÍÍá>¥Çpde©Þ>ì 2q•©ù•2!-À”éĉþL¸»¹Ñ·“¦CÌÅ}ùW&ʗlllVz{Su"´—`J1ÑÑô9²6(ªZÃ?ˆä Gebüۚ¸ùƒ¦LPføßæ3}Æ peö풒’Ðö|÷ÝwÅÅÅ T&Aø•‰Ìˆ@)\ðžž)))ÔctÊQ)´£ÒRRGURR‚?]/†Ð™›2½ÿæÝ»w^^^ H;v„C’’’ zéС÷III‰¶ŽŽŠŠJdD„¼¼<ľá»víرƒÄ_U&¨CNž87KAA‹2‰‚³yófiiéÚÚÚÕk֜>}:<,L[[ûT&`Á…Ë<NT檪ª¤<Ge‚:<66Ö{åÊI“&Ø¿Ÿñer[úÀ6npT&¸8°%4Ô|æÌ   Æ~dJ™Àñ lÓ\ÏÍml¶„?j™u`kh(Ÿ]>ÀÞɌ½îîP]7í­EúYbG²C‡ºúzwww¸xçC‡á¸ gÌk¨LÍ•Iì˜2 ýñÇ9ÙÙìkJÆÄÄôéÓgìر ¾•‰ò%ˆNܖ-£ÿ†d``ð¹²ò\b"ýÊËËoܸ1bÄê‡a~à¦LŒ/Öäåé¹iófŽ¾Ä )™½‡ÿ÷m5P™DáW¦ŠŠ +c“¢¢"MMM™¼¼¼?þø¦¤¤K—.'™ eb0’…‹{Œ3æñãÇ={ôxøè4 • xòäÉbW×ÂÂÂN:uíÚ$ + +ÍώíÛá'iÎ'%yzzJJJŽ=úå˗/^¼024„{´ê«ÊD‚8LiÀ€,ʐ§XŠ]ºÀ§€¿}û–š™àÛT&8ÿaááǏÿüù3ƒùÓ̸qãfϞ _:©œ‰2ˆ*uíJ©oh(++ƒ §KYY™Áì}žœœœ‘žNõwa€/šþ^®1¢L Ç +_†ÂB0]ZZZYY©¦¦úʾlâW™0q"\K= +iH/iié-›7“Å xUÔwA Àã*7P™š*“Ø#e‚f b¦ &ŸyÀ2¥\¸@|‰>11ÅÁC‡ 0ûuÖ¬qãÇ« ÖØÞÌ<” غgÏ+++??Ž (eªaÒ´24©Ÿ2ud¢¨¨A$•ID~eb0{Ô$$$|ø‘:È„ã$ÁÙ³g!zÖÒ҂V-55Êɲ Oqq1dN´pú´iԄo¯_¿†_]]½9Í¡0Єu™ r¾yëÖ? ®çæÞbvý511 Y·¬‰(ÓÀÿy|ô÷ߥeeYYY <kÖ@øKõ_²tiRR}`™/žþ.±¿ÿ>tèP¢LªªªP<³ú›7{÷î oÊÔØyÒü'WTTœ:u*õؓ¨LÜ@ej>¨Lb`”‰¬\)e‚êÁl? I;Ÿ”Äm ,ð¥k×®e3ï|ÈläTUU¡mnþôŒ/¾´xñb;[ÛÓg΀q´&áQ¦:¨©©øû“_ÊqÆ<Ñ• i}øW¦ ààK—.¥\¸À2ÅÐÝü| 777'GGŽc™öìÝ»e˝;v@6+;ª\kkk?__ö7 +߶};7eb|Ábccã³re>2}Æ<¯½W®,((`é €ÊÔ¢Ðϒ¤¤$„ÎÎÎpÙP«oñ©Lpà¦M›"÷íƒ×=zô€« â +sbð°0?ž¢2q•©ù 2‰=‚Q¦OŸ>©ËíNƒ· ~øáG™VXZZBÝjhdôáÇè3gHwn€°AC A§­ÍÊÆ4¥•‰îKd 7ke’’’RTT„3FYÊ$Z 2!­ÿÊDº(C kÄ\1‰âòåËÎ êšÛô–³gC +âDÖâkhh061yöìÙÁ¨N›ëÖ­;xèeª¨¨€2Ó'Kä–u™ aŠ‹‹[Ü¡×ej¨³V£5eŠËðc>•)++ ši0v—E‹H'ÏòòòcQQ;wî¤V¬æ*7P™š*“Ø#°é@?ÈôÔÏEîp/틌ìÒ¥ËW•©²²’,DdçäØÙÙ 8¬‰d›——v´téR–öÚf¨j•””~?{¶QefQ&v_"p´¦¶U¦wïÞA«ãºx±­­-}fz*“¨Ê„´>ü+T5Ó¡f®ªZ¸`‰‰I·nݪªª®¤¥AíÍGrR’œœ·IÆ=zdjf¦  oAºçÁ[[¨ç¡n·07‡¨¢®®îƍÇOœ¸pá¤e‚0šÛ$ãdû€ K½÷Uؗ²e0ƒøu!!ñññ¤“*S‹BÎ\rkٝ™Á·2-ss{ùâÅéÓ§YºáAÜ_øìY,³:å*7P™š*“Ø#0eŠ:~|õêÕÐ^²LZXX8}ƌ!C†œ‰Ú­±Kن¬_àÀY³f®YÃ`ö]þÕÒræ̙Áÿža]¨j{ÿðÃñãÇù/3‹2qó%»5µ¡2éèêB}´bùr–å ¨L¢*Òú4j,Ó­[·à*}þü9}#„ž[6o&u™6oÙ²wï^ú´àOž<ñó÷M¢'kß¾=äàáîNpS&ÀÃÓ *j—E‹õ‘9*!ïÆ ¨N_¡2µ(Ÿ>}JHH°°°àÖwŽOe‚0`ÜO?¹»»³l?yòäÖmÛ²³²¸ˆÊÄ Á*yvK͜1Oá­LÍ•I ð©LgϞ]áí ­›……™•"™ôôt—Å‹œœx<~Deâ*“`AeK©L 昢«™™999¯_½ê )9jÔ(=]]jÕBBò²2ö {ôèqæÌȁ}ô´ôô??¨L‚Í•I ð¿.SUUU\\\ÌÙ³OŸ>mhhèÓ§ÏT}}++«Î;ó8 +•‰ÍW&ðØ7%%‚.—¨Ò«gOz?äƂÊ$œ|ÓÊ4}ƌ/^X[[ΘÑØcϜ9Ŝj¢ÉÅ[T&Ñ• i}P™›9*“@hÔR¶M•‰ÍW&D€ 2 'ß´2ýji ÂÓ±I É>|h×®ÝÃ[ªæƒÊ$Z 2!­*“`3Geü(ÓÇkjjTUU©-ÉÉɅ……666²²²¼óGeâ*“PÊ$œ|ÓÊ$® 2‰¨LHëƒÊ$ØÌQ™oejhhزeKä¾}†3flܸ‘Úîºd XS÷îÝ·lÞÌ[·P™¸Ê$T 2 '¨Lb*“hÊ„´>¨L‚Í•I ðV¦={÷‚2M?ÞÅŅž¦¢¢"::zÛöíð:.6VYY™[þ¨LÜ@e*P™„T&1•I´@eBZJ™¤¥¥ÕÔÔÚº8­Annnmm-•Iˆá¡L555'M6l؁ýû%%%ÙܼyÓÊÚzžƒûzʨLÜ@e*P™„T&1•I´@eBZJ™¾AP™„Êtýúõ9¿ýväðáqãÆq;ÜÎÎîmié¹ÄDn P™¸Ê$T 2 '¨Lb*“hÊ„´>¨L‚Í•I ðP¦ääd×%KR.\èÓ§·Ã7lÜ}-'‡[T&n 2 ¨L *“‚Ê$Z 2!­Ïù¤¤K/¶u)Úý©Su´µ›'*“@à¡LÙ99vvv'Oœ5j·Ã}ýü222®\¾Ì-*7P™„ +T&á•I Ae-P™DÔAe<”©¢¢â§qãæÎuwwçxlee¥–¶öøqã¶nÝÊ-T&n 2 ¨L *“‚Ê$Z 2!ˆ¨ƒÊ$xϘçååa}xx¸¦†Ë®ššŸ¸øøíÛ¶éëësË•‰¨LB*“p‚Ê$† 2‰¨L"ê 2 ÞÊTZZ:ÛÊêå˗S§êêêöïß_RRNà›7cbb + ×‡„´k׎[þ¨LÜ@e*P™„T&1•I´@eBQ•I ðV&àíÛ·>>>é,Ûååå8;ÛÛÛóð%*wP™„ +T&á•I Ae-P™DÔAe_U&“'OòòòžÖ××wîÜyäȑš;vüjþ¨LÜ@e*P™„T&1•I´@eBQ•I ð©LMæW¦”ÔT uuiiiö]¨LB…(SAAŒŒÌ€ÚªÂ*“‚Ê$Z 2!ˆ¨ƒÊ$P™Zë9sž?Ì>*“P!$Êçííí8þ‚ ¤¤¤ÚªÂ*“‚Ê$Z 2!ˆ¨ƒÊ$P™Z”_--o߾ݡCMMÍÿ=zP»P™„ +áQ&‰víºt  +Ò`3í&°zõêÄsçè[Ú·o/''7vìXp³þýû“žžžiéés016^±b…‘±quuõùsçàzfIpãæMps¦Dûö,9¨©©5mÞ²eïÞ½ìLW­Zuú̙˗.Å'$‘på?~üØ`êÔÎòòd‹±‘xZ£ +Ê$† 2‰¨L"ê 2 T¦…R&Bǎál¬ QUUEe*„P™_LÛL{Μöl&Ã'$๞›+ÿE]‘‘›6mZ¶t©³³3ã‹2ÝËχ7å˜ÏóçÏõôõ 7mÜHß^UU5iòä1£GGFFÒ·‡„„8xðü¹sÍš…Ê$† 2‰¨L"ê 2 T¦…E™ˆ€%$$ÌLMÿúð!%%…Ê$§2À´{ÿðCÈúõª#G6!OnÊôôéÓiÓ§›ÏœÄàC™€ßllîÞ½›•™)++KmLHHp÷ð`_Ò• á *“hÊ„ ¢*“@@ejQؕ‰ApCCC]]•I8feb|1í™ffžžž,æóU¸)l„]K—,Y°`ƒ?e‚âyyyAaddDmt˜7¯   =-eÕT&„3¨L¢*Òú@k”––ÖÖ¥ht´µùTþAeb¬LÛ¶oONN&+풸ëÑח Œ¾‘ý_yýÕdœ²¢^ÀÅF¼ˆ¨LÂ¥Lrrr={öäx%08}ż“±'fpJ@ý[]]]QQÁ£œ²²²1ÑÑýúõãÿ£‘€',,¬S§Nä½á]nß¹søða©ŽãââºwïÎø¢L®®®í%$Xr°¶¶îܹ3ƒÙo²ºú˜Ñ£#""È®’’’ŸùÅÞÞ~¹—ËQ¨LgP™D T&¤õ ݺu÷îÝm]Š¶ú!S€ 2 1V¦#G®ZµªG÷îĚȿŒ/¯™0è»Xüóï—4|&£ÿK^ø¬Zõøñcö²IHH444×¨LÂ¥Lp/Ìsp`ðñEóy%üï_þ’¥§§GDF‚™°—PRR²W¯^~~~êêúhTÀқ®®®‹‹Ë_|†(Ç._ºôý÷ߓ׫W¯>qòäՌ %%%ƗQçΝû‘Í‹P™Π2‰¨LHëƒÊ$ØräìÙ³™W¯ÊÈÈ°'CeB8ƒÊ$Z 2!­*“`3Ge¨L- +Q¦öíÛOùåj@•IÈe‚ëDBBBQQ‚IÌšÃQ™Þ¿o0mT†±¿ÿ>pà@Fc”éãǏ“Õ՝92U_c2T&„3¨L¢*Òú 2 6sT&€ÊÔ¢Ìùí·ÒÒÒÀ5kƍDz •I¨eòóósqq±µ±a™³»Ép›d<..ÎÓËkôèÑQǎ¤e211a.¥ /¿bÅ +úOÏ´´4p§˜èèáÇs|_T&„3¨L¢*Òú 2 6sT&€ÊÔ¢äååAHJF¤°€Ê$T‰2=-,”ïܹ[·nÌsmPйs璓’ÈDá #.‹ߺuËgåÊéÓ§¯ðöNOOç˜C÷îÝ?{–¾%77wé²eàBGáö¾;vì8~âÄñ¨¨¾}û6¹ð¨Lb*“hÊ„´>¨L‚Í•I  2µ¨LB…(Â*“‚Ê$Z 2!­*“`3Ge¨Lm*“PÊ$œ 2‰!¨L¢*Òú 2±'€ÖZ 2ñCEEō›7554¸%@ej+P™„ +T&á•I Ae-P™Ö§ùÊT^^N_âdCFFFQQ‘£u444<þã?Ÿ=kß¡ƒêȑ=zô ï-++cY`^RRRVV¶ÉKp„·2=|ø0((è÷®ð¼Aeâr–tttüý9@ej+P™„ +T&á•I Ae-P™Ö§ùÊDVÒ`٨إ‹………««+53,41'Ož ûö-•lâĉAk×*++“?çϟŸž‘Áþªªª+V¬P3¦ Åc‡›2A¿e˖S§OCQ=|Ø´ÌQ™øœ%ÉÀœá›ýuÖ,–é°P™Ú +T&¡•I8AeCP™D T&¤õ”2y{{Ë0—„¦¤¢¢â|RR~~¾Ïʕdㆍ÷ïß?nܸßæÌ6lXUUÕŋwìÜÙµkׄøxS™®ffî +§2¯©©¹qãÆÑcÇ:uꔜ”‰›ÿ‘Ù•©¾¾LiÆ uuuðŽ°•©E¡Ÿ¥Ž;8p}HÈàÁƒ©¨Lm*“PÊ$œ 2‰!¨L¢*ÒúJ™X–×#šahXRRr-'lçòåËÎ èèèìؾþ<ÌjéÒ¥Tʔ“s/?Ÿå-:¼nX™­mS>ä¿aQ¦›7o®ZµêeQ‘%*S‹B?K\íÚµ³··‡‘fŠ7*S[Ê$T 2 '¨Lb*“hÊ„´>-¤LÀ +oï³gϦ¦¦öþá‡9¿ývãƍô´4–+ÐîÀe?tèйöö îʔ››û›£££»›[JÈ¥LóçÍ+**º’R__ϒ•©EaQ&‚”””‚¼|HHÈäɓQ™Ú +T&¡•I8AeCP™D T&¤õi9e‚úçÎÝ»×rr £¦¦:rdTTטּ)ӚÀÀcǎíؾ]OO¯ %dR¦öíÛKHHÔÖÖ²§AejQ8*¡CûöÚÚÚ·ï܁•©õAe*P™„T&1•I´@eBZA)ÓՌ ¢L oÞ¼‰‰‰Ù¡««»sǎgϞM50°°°XÈ;+P&ˆÜÝÝɟÐ*UUVæ^ÿ55µCR“I4‡I“'¿{÷Žwmí¦e–öe­úQ£F}§¤ÄÏQWÒÒêêêàÅàÁƒûôîÝ´·!èg‰PY¸Š–,Y²ÀÙ¹… +€ÊÄ T&¡•I8AeCP™D T&¤õi¡ó€!ƒGFFvïÞýiaá´iÓf[ZðΊãŒy£G644œifFF¹4͟.))áf¥·wÓ2¯¬ª + %¯g͚5ðÇù9jó–-ÕÕÕðBOWwìرM{k‚~–XèСü ßõ¶­[ÕÕÕ[¨¨LÜ@e*P™„T&1•I´@eBZA)“ãüùRL¥‘h×NVVvܸqC‡%K3•––ªkhðÓäƒ2eegçß½Ë`>ˆH½xÑÇÇgÀ€»wíõjBÙ8BuÌëܹsMM q°c^‹Â­cøÒäɓ}}}á$àX¦6•I¨@eNP™ÄT&Ñ• i}Zn,ECCXŠ„„ÄåK—Ø׷ݳwïÇ.\¢Å>– ¬iÑ¢Eƒ>sú´””TŠÇ¥L17üý÷ž={ ùc™•©EaW&ør»wë¶&0pÒĉ œ1¯í@e*P™„T&1•I´@eBZŸVP&`ãƍ‘ûöEDDhjhз—¿¯££#''wåòep*ŽÓ?øùûŸ­½{÷î©Ó§óóóevJ»zõê‹ýý\Öü§«W¯Ž-þ¥Ö­kWéUL2•z­øøxɬKÂÃÃÏ'$4hЀ~ܹkWpp0ý+344”¹’ ʄdâ$(ž$™è÷üùÊÞE ¿¯6"$“ +C2±ñûï¿Ož2¥aƒjêêÌùuÌÿïÿ_˜ÿ\úßE“Þ½>\j2ڀ9D2©I2Õ©SçKæ5Süd2ÿ+ý_¦WþùßÛüÇZæ‚d›k_¾|ù믿–º“ݺu[Ô¤I“Ͻƒô ÓÚƆ^rt¡nݺǎ•žsœI¦Ë—.•<1–H>LuïÞ=+kkooo'GGúÑÒÒR[G'2"¢äÍ!™ LH&~A2âI’© +B2©,$·oߞ8iRÒŋŸ{Œ'æIÐahQQ‘ɤTöÄ< ±XLM5mêTggçÏýâ&ꎩS§ž9{v×®]> \ºtøðá’éòDì>ËÄ°-þn¥Ã‡ýöÛoÔ`v£F•Ü ÉeB2ñ ’ ÉÄí˜H&N ™Øà6™èxWCCãËÿû¿»¿þ*B2©UN&æËÁƒϟ7¯Q£FvϞ=˂‚\]\¼¼¼(Ô]ÝÜ.\¸ =‘ûdÚ¿¿ÿâÅq±±‘QQ‰çÏëêê–Ü ÉeB2ñ ’ ÉÄí˜H&N ™Øà*™˜œìFš5k֒%K0cžêPÙd¢ÀnÑ¢E`@@§N*6frr²ýwßïgޞJKK³°´ÌÏÏ?vô¨¾¾¾ès’‰~šôéãææFÉôMÿþ¥n†d‚2!™øÉŠWXXXeù¸£²_-"ÉÄ $œ$“X,nÛ¶-•’±‘‘ßˤbT0™(o(`æϟokcSáߟôëÎÚÆæíÛ·GiÙ²¥dùéøøiÓ¦uìØ1lß>ze2Édcc£)õmˌ5kΟ7OzÉܹs>w.3332"‚F(õv‘LP&$¿ ™øÉÄ $•L&:ð­Q£†¯ôtgH&•¢:ÉäããSPP@—Ǎ;}úôJN,þ¿73cc)rlmmeV-^¼8..Ž^ØÎNN .<{æL©#Ô­W/6&Fzɵk×(·Zþßÿí/kú¾ 7îÛ»7,<¼Õ—_Vfÿ‘L„dâ$ß!™8db£ÂÉäààpëöíI'º¹¹ikkK¯B2©ÕI&ʛž={úûù)÷+ÅT’I€Lü‚dà;$'LlT8™öíÛgjjZê”ÐH&•¢"Étåʕœœ–¿Íª$“!™øÉÀwH&N ™Ø¨p2•ɤRT$™@’I€Lü‚dà;$'Ll ™ɤšL„dâ$ß!™8dbÉ$xH&Մd $¿ ™øÉÄ $H&ÁC2©&$“!™øÉÀwH&N ™Ø@2 ’I5!™ÉÄ/H&¾C2qÉÄ’IðLª É$@H&~A2ð’‰H&6L‚‡dRMH&B2ñ ’ €ïLœ@2±d<$“jB2 ’‰_èOi~~¾²÷¸1×ËËÅŅ͖H&H&6L‚‡dRMH&B2ñ‹‘±±²w83ÆÁÁ×ח͖H&H&6L‚‡dRMH&B2ñ ’ @HL†dbÉ$xH&Մd $¿ ™„ÄÝÝ}ÎìÙl¶D2É@2±d<$“jB2 ’‰_0ýßaúN ™Ø@2 ’I5!™ÉÄ/H&¾C2qÉÄ’IðLª É$@H&~A2ð’‰H&6L‚‡dRMH&B2ñ ’ €ïLœ@2±d<$“jB2 ’‰_L|‡dâ’‰ $“à!™T’I€Lü‚dà;$'Ll ™ɤšL„dâ$ß!™8dbÉ$xH&Մd $¿ ™øÉÄ $H&ÁC2©&$“!™øÉÀwH&N ™Ø@2 ’I5!™ÉÄ/H&¾C2qÉĆ\“ÉØØØÝ͍Ñ¡fϙÃ\@2©$“!™øÉÀwH&N ™Øk2JA2©$“!™øÉÀwH&N ™Ø@2UkÖ¬iòŝ:uRöŽÀ?L„dâ$(^VVVNNŽ²÷B9ªW¯®««Ëí˜H&N ™Ø@2UZZZÉ·o+{/à_L„dâ$(ޚµk7oÞ¬ì½P™3'OžÌí˜H&N ™ØG2àhPՈÅbeïü ’I€Lü‚dÅC2q;&’‰H&6ä‘LðŸL„dâ$(’‰Û1‘Lœ@2±dP +$“!™øÉŠ'I¦F- +Röî(Âì9s222DH&†dbÉ H&B2ñ ’ O’Lt w¢j|ì›Ç_½z%B2©0$H&¥@2 ’‰_L xH&nG2qÉÄ’ @)L„dâ$(’‰ÛÁ‘Lœ@2±dP +$“!™øÉŠ‡dâvp$'Ll ™”É$@H&~A2â!™¸ÉÄ $H&¥@2 ’‰_L xH&nG2qÉÄ’ @)L„dâ$(’©ä—/_îÑ£GÅG2qÉÄ’ @)L„dâ$(^%“iíºu” ê×÷ôô”YUTTä¿xqnn®¥……‰‰‰dyffæÁƒ“’’^¾z¥££óu·n¶¶¶†††’ V|ÿýÛ·o¥‡‹ÅuëÖðÍ7;wþÜ=,©œdzùòe@`àÙ³gïß»W±Á‘LlУ´xÉïùó6lXêH&6LJd $¿ ™@ñ*™L–––÷<  gâãéTzÕÕ«WÇýKgÀ•+W¦Ï˜AGÌ;v¤[Ìúë¯Ä òóóéÔ¨Q£˜mÌÌÍ_¿~-QÙÙُ?¦ “&MšåáQÁ»úI©ÉDi·mûöÐÐPúSXXXˆd’+æQªV­š———ÃwßihhÈl€dbÉ H&B2ñ ’ ¯òÉô:-Ž€çzy¹¸¸H¯òó÷?vìXNNŽ$>|h7ztÝ:u6mÚdddÄlFõâêæöäɓÇ1 )™è`:&:Zz´””ç ž?N;Ù²eˊÞÝÿ‘I&úÛwæìY?¿÷ýEáÄlƒd’+É£¤¥¥Õ\_ùòå:tÞÉÄ’ @)L„dâ$(^哉þ«­£STXxðàAÉòüüü¾}ûšôé-ɀI“'ÿôÓO‡lß¾½ô wïÞµ9ÒÊÒrŊ¢2’‰„…‡/Y²$88ØÚÊêóïèÿ'Lƒöõó»yó&í°ô6H&¹’~”ÔÔÔÔÕÕGååéY³fMf!’‰ $€R ™ÉÄ/H&PÛ¶m£¬ªÄ=.å«l¯\¹BÿúÞ¾}‹ïeR ™d¢§[[[›î;e6óä"™Ø@2(’I€Lü‚dÅã0™Þed˜˜˜ˆÅbÓÖ®]KKd’)//oÜøñ7oÞ¤…ÎNN5z–vðàÁ;w¶lÙòØÑ£tÜ,*#™ŠŠŠƌùå—_V­\YÉ9åJ&³oTt¡¡¡EŐLr%y”˜÷éÅ@O5¶d$H&¥@2 ’‰_L x&qquMLLÜ°aƒ¹™™¨D2‘ŒŒŒÅ‹ǝ8!=HŸ>}‚–-kØ°!ócYßËôàÁk›ZµjÅÅÆÖ©SçswU¢Ôdb<}úÔ{Á‚ëׯ#™äŠy”444z÷îíç뫯¯/³’‰ $€R ™ÉÄ/H&P¼J&e ý×ÐАù1555íÍc##f¦ììì쇏5ùâ‹úõëK_+==ýÚµkï22´«UëÑ£‡ÌǓîÝ¿¯®¦&SÚ£G>dgÓÁn]ù$“¨xþëØØØáÇWlp$ô(Ù÷Ï¢E&&&¥n€dbÉ H&B2ñ ’ ¯’ÉÄGå'S%!™Ø(,,,**‹Åem€dbÉ H&B2ñ ’ ÉÄíàH&N ™Ø@2(’I€Lü‚dÅC2q;8’‰H&6LJd $¿ ™@ñLÜŽdâ’‰ $€R ™ÉÄ/H&P<$·ƒ#™8dbÉ H&B2ñ ’ ÉÄíàH&N ™Ø@2(’I€Lü‚dÅC2q;8’‰H&6LJd $¿ ™@ñ$ɤ©©YòEééÓ§EEE"$“ +C2±dP +$“!™øÉŠ'I¦*ɤ²Ll ™”É$@H&~A2â!™¸ÉÄ $H&¥@2 ’‰_L x.\¸|劲÷B9Lz÷îÑ£·c"™8dbÉ H&B2ñ ’ €ïLœ@2±dP +$“!™øÉÀwH&N ™Ø@2(’I€Lü‚dà;$'Ll ™”É$@H&~A2ð’‰H&6LJd $¿ ™øÉÄ $H&¥@2 ’‰_L|‡dâ’‰ $€R ™ÉÄ/H&¾C2qÉÄ’ @)L„dâ$ß!™8dbÉ H&B2ñ ’ €ïLœ@2±dP +$“!™øÉÀwH&N ™Ø@2(’I€Lü‚dà;$'Ll ™”É$@H&~A2ð’‰H&6LJd $¿ ™@ñŽ9£ì½Pkë#Fp;&’‰H&6LJd $¿ ™@ñÖ¬]»yófeï…rx̜9yòdnÇD2qÉÄ’ @)L„dâž&Ó»ŒŒÂ‚±X¬§§WríÛ·o‹ŠŠjÔ¨¡££Sþ8………ïÞ½«^½º®®.ûUÒòóó逕Ím)RNNNVV=8ô){_JdâvL$'Ll ™”É$@H&~ái2 1âáÇuôô555¥WQ/™ôéC¿[|}}Ç88”?ΫW¯è8iΜ9înnôãëׯOœ8áèèH—_¾|9ÀÔÔÓÓÓÍÕµœîß¿oieµØßßÞÞ¾Òw‹3‘QQ>>>GiÓ¦²÷¥’d¢0`€²wGâãã?~ü(B2©0$H&¥@2 ’‰_xLta×Ν½{÷–^µ/,, €.T ™lGŽ¤ƒø½?ü *N¯yóæ5jè!匀dªI2Ñ1܉¸8eïŽ"Ðˌ^l"$“ +C2±dP +$“!™ø…¿ÉD¿=RSS‡°d‰ô*‡Ì÷ï)¨*L?µk×f’‰%$S ™¸ÉÄ $H&¥@2 ’‰_ø›Lb±ØÐÐ0áÜ9és󘢣ҵëÖ1Éôáúܷoß~}û2Ûdddl + hjÚ³gOédZ¾|9=b-­!C†X[YÑÁ͆ лW/æŠ×®]Ûà@ZZšžžÞàAƒ¨ÖÔÔԘdòóókP¿þá#Gè挍ŒÜÜÜ4hÀ\+77÷øñãçèviŸÛ·o?v̘FѪ§OŸî suq¡‘9’—Ÿß©S'''§ºuêÐÚGˆˆ˜4qbâ… ?þøcA~~—.]h-E32ýþ¼páÝ(íRãƍGŽÙ³GÚ%’Iõ ™T’‰ $€R ™ÉÄ/¼N¦Yî'JŸ›·cǎ»v­_¿ÞÁÁI¦w½zõš6uêôéәmž§¤˜™™Í›;w„ ÒÉ4kÖ, +-±øëîÝ›|ñ…ôg™víÞMMÕºuë>&&ÿø#!!ÁÙÙyþ¼yL25i҄b‰úŠþ{úôéfM›ÆÅÅiiiÒ­\½vmðàÁ6|•šzâĉ¦M›ÆÆÄhkk_¹reÜøñ;w~ñâE=ÒÓӓ’’Úµk©¡¡‘pþ<¥­MMMýº[·×ii—/_¦÷‡‡SÑ/π€€°ðp:£ £ã˜ëׯOš4‰’Iõ ™T’‰ $€R ™ÉÄ/¼N¦Èˆ“>}¨F‹?¼$*þ0R—.]F þ­½ýç&“èß'æIOÿ’’b>h©©iÈúõêêê´ÖÏß?""âô©SÙÙÙt-ª ƒQQuëÖ¥U[·m[µjÕömÛúöí{:>~Ú´iÔ6£íì˜[gÖþ°g5“LF††ááá5jÔ µK—îÝ»÷ð¡CNL2QÑþT¯^Ö.òñ‰ŠŠ¢ÜjÕªUbb¢‹««ôýZ¹rå¶íۙLB2©$“êC2±dP +$“!™ø…×ÉDI°páÂ3gÎ0çæ=yòdð!ÐÜ&¥ Zǎ™ARSSýõ×nݺÑt­©S¦Ì˜1ƒYuóæMºõåAA666tHúûï¿·mÛV[[›Y7kÖ¬ 6˜›™1ÉäåééúiR>º/S¦Nݲyó7ß|Ã$“Ï¢EcǎeÖÆÄÄ̞3‡ž&z²,\}))‰©)B·EÁîîîsfÏF2©$“êC2±dP +$“!™ø…ïÉtá… ..̹y7m:tèЙøø[·nq›L~þþ¸“œ\òkŽ˜󤧚 ”²±µ ´5Š~ÌÊÊ:}úôÝ_}öìÙÓ§O©ëhᆐsss&™Ö¬Y3lèPæºç¨y6‡†0€I¦ÐM›LMM™µ§Nš>cÆ®]»z÷êE7úèÑ#CCC靡›¦Ãe:hF2©šÿL¦¼¼<--­Š Ždb£°°°¨¨¨œo*C2±dP +$“!™ø…ïÉTPPЧo_J €%Khá@SSêæ}éd’~ˆÒÅ|РÏJ¦E‹E<øëÝ»2{RrÆ<éd¢<£ƒÑÔÔÔ:j¨«.]*LëÖ®òis&“¤“‰yljYKé5mút&™èÎfffÒ?7™ýi®¯oaa!˜dÊÍÍ¥–Y¨­­Ý¤I“úõë—Üžþ¦Üðàæ/¿|øð¡aÆ}úô©S<—ƒ +á·ß~+붺t颩©IùñàÁéåjjjt‹-Z´¨U«›{Wªò“éܹs˖-;yòdÅG2±AÒØqãè¯=Ñ¥n€dbÉ H&B2ñ ߓITü±¢“'NPHXÛØ;vÌØÈH:™222zöê5qâÄÙ³f1×½sçÎÈQ£>+™BCC×®[ݺukf×¯_oظq¤­­ŽŽN9Éä½`ÁáÇ£"#¿úê+f-sr]Èúõƒ ªL2¹Oœxýúu:p‘¼5QTTD7MÇdzzz‚I&æ *u½bW®\)NW>¾¾±’%êêê®..Lë^¿qáìyç¯_»V£FóçÏ»¿dÐPÇ_¶tiÅÞ *+™ž>}êïïéòezúîß»W‘EH&v˜G‰žGKKËùóæI·4ÉÄ’ @)L„dâ$Óå˗Ç;:vë֍ꈪFMMM:™òòò:vêD‘Ô!ÌuƒW¬Ø¹sg©ÉD©CÄ̧¡¤“éáÇt‹t~dÙ¹kWppð¡ƒi7ÊI&ç ®^½zó—_˜iÐé°ØÝÝý|bâÚµk‡R™d:tèЂ… ¥Od>%EeH}(°d¢V™ß%ú”L¶¶¶’3!¥õêՋž&&™¦Lžvô¨¾¾¾d3JG'§ëׯÇÅÆÒm1É4{öì‰îîeÝ"“LÌ$½üãǏ¦ª««'ž?_»,LÔ]±±±Krrrèy”lƒd’+éGITN†††Ëƒ‚ ˜%H&6LJd $¿ð4™,\¨¡¡°d óãŽ;š7oN?>|ø.S˜ (*>TZ»víéøx:°¦z™1}º¯ŸŸÍÐ!CÞ¾}KУG>|8mùÛo¿Qá¼yóÆÕÕÕ´8¥$«(Ì(xDD<þ¼aƒÖÖÖT\”mô#Ք£££d’†'OžøùùÑZ:r-**Úºu둣GiÌF1bü¸q³ç̡ș8qâ½{÷‚‚‚¦NÚ½{wæºt8²jÕ*Î;3—g͚թS'fíµë×CÖ¯Ÿ;wn»víDÅoS„…‡ÓӗššZ§Nª¬©S¦0§;wnçΝK–,iÑ¢…"Ÿ–*ŸLdÖìÙgϜiÚ´)3Óàäɓ)Hd6£.½víšUñDð•I&biiùìùó›Å¿ß>—$™ÆŽsëömzêéÕ(³ ’I®d’IT|²¥ššš“£ãôéÓuttLl ™”É$@H&~ái2¯U>™ž§¤PµêÕ®}úôi:ðýþûï·ïØ!ý™±RU&™®^½:vÜ8fBBVwòß$ɤVŒZºä6H&¹*™LŒjÕªÕ¬Y30 `ñ’%H¦ÿ„dP +$“!™øÉŠ÷¹Éd``ðu·n̒‚·éé‰.nÜ°9kqÚôéÔNIIIuK|¦_“L 6,9ÛÞðaØoÇb’©[·n†ŸÎ×Ê/(xùòåŋéÀzßÞ½FFF¸Ë½zõz—‘Qþ6ÆÆÆYTüèï¿ÿÎ\¦ƒræk‘ÿӃ˜rkÔ¨Qɹ„GúQ*ISSSCCcEp°ä,YÎ!™ ÂL„dâ$(Þç&“ŽŽN­ZµèïEVVVvv¶žžžÝ¨QßÚÛë7kÆl6}ƌS§N1Ÿk*g4&™Z¶lɜÀ)m ©)ói4&™¨ŽªW¯N·˜‘‘‘ŸŸOGº£íþ§nݺ»Ëý¿ù&55UTü.SYø6lØP±Á³?|˜;osyòäÉÌy›ÿÉËË+''‡.ЃÙÿÓçåLúQ*IKK‹šÊÛÛ{ܧoŽæ’ * É$@H&~A2âUøÄ<ª—M$4ÔÚÚzi` 3!Y¸páÁC‡N$€R ™ÉÄ/H&P¼J~–‰ ¤ &̛;—YräȑùÞÞô ‡~íȌðèÑ#ï œœœ† Z±Ï2Q§9::Òuƒ–-³µµ­Ø]–$Ó̙3¿hÜxI@@AAL8!™äªd2©©©Q, 2Ä{þü `ú6LJd $¿ ™@ñ*™L>|°°´|ñâÅþðð.]ºˆŠß êÓ·oóæÍFEÉ|Õì"Ÿ¨¨(滃+<ýÃó” :¼Ž‰iܸqî²Ì÷2edd, +Š‰‰),,”lƒd’«’“Œë7k¶téÒΝ;3KLl ™”É$@H&~A2âU~ƼÄÄDW×V­Z=r„i¤­Û¶­ZµjȐ!T;ÌdEEEáû÷ÐAðÞ~PSS«ÌŒy»÷ì + +hjºqãFéï?e©äWيŠgᣀéééÌ·3!™äJú«l554æΛ7ÚÎNCCC²’‰ $€R ™ÉÄ/H&P’I®˜GI]]ÝÖÆÆÓÓ³ä$H&6LJd $¿Td¢cÓ7n¼}ûVSSóË/¿4ø4…4OŸ>ÕÕÕ-93u…={ö¬VíÚåOŠ-Tì“)33síÚµ_wï>lèP™UôTnØ°AKKkΜ9’“ñ®^½Ÿ|çN^nn£ÆÍ:t¨¶¶6³–ó]»v•u[#GŽlß¾ýÇÆÞíÓ´æ÷îߏ8p AƒÔ<ŸûFSYÉÄ ؒ%KvìØñYcJ ™Ø GÉ}âD?_ß²fD2±dP +$“!™ø¥Š$SdTÔêU«2þüS²ä«¯¾¢×g›6mØ\8¬,-—.]Z™}HMMŠŠš>}º¨øÓ8]ºvusuõôô¬Ì˜<Å>™£üd¿KVóýH&6˜/¡RWW/k$H&¥@2 ’‰_ªB2%]ºäääÔ¡C‡I“&´nýñãNjII!!!:::±11µk×þÏ8I&GGnjŒŒü‘.çææΝ7o ©©¥¥eeÆä)$·ƒ#™8dbÉ H&B2ñKUH¦iÓ§ÿüóϗ’’jÔ¨!Yxøðaï æzy¹¸¸üçœ$ÓxGÇ??%S‡dâvp$'Ll ™”É$@H&~© +ÉäæævíúuJ&éýgee…„„˜ôéÓ¯o_fɓ'OÂÂùqC]Cƒ:í¿ý¶^½zÌ*™dúý÷ßÃÂ’ï܋Ŧ¦¦£íìôôô$#ߺu‹Égϟëèèôë×oü¸qÚÚÚK—-‹ÍÍÍ577§¡:wîì¿xqÿ~ý† Â\ëâŋ‡~üø±®®.-´±¶¦ ¢âó,ãàðâŋððð÷ýe``0qâÄV_~©€‡NNLÜŽdâ’‰ $€R ™ÉÄ/U!™öíÛصkשS¦té҅J¦ä6W®\qus«_¿þ°¡Csóòè1©^½zdDD£FDÿN¦sçÎM™:µiÓ¦6YýuôØ1ºÖ˜‰Ž?îéåõåÿýßà!CÒÓÓ>ܽ{÷];wR2ÅÅÅQ2™™™YYY}Õ¡ƒôg™(Þ6lÜئM›¦¦Ïž=‹‰544Ü·wo5^¿~ݯZ•––Fy–ûñcl\\͚5©4¤;_LÜŽdâ’‰ $€R ™ÉÄ/U!™ + ö8@—555;~õU÷=(xŒŒ˜ èÑ@33mmmj$æ佔”K++ʛÁÁ"©dÊÏÏïÛ·oÓfÍÂöícæa{ô葵¯OvvvŸ¾}©v~س‡™Ã-|ÿþŋoݺµ¿~Ò'æIOÿðâŠӁiÖ¬^Í|6ý\B‚;qs›3g“L 4 +2Uéãë»òûï-,,”ó€V’‰ÛÁ‘Lœ@2±dP +$“!™ø¥*$ãÑãÇqqqIII·nÝ¢ò¡%ƒ ¢#$*ŸÛÉÉÔ<~~~R_Å3ßÛûÔ©S—’’(~$ÉtñâEç dreê´i4f¹s´ýLéµQ7nÜh×®]:uÊJ¦ÐÐеëÖ=rDzú>[یŒŒŸÎžMKK£d²··_ìïÿÏyôhØðáóçÏwvr’û£&H&nG2qÉÄ’ @)L„d◪“L¹¹¹—._ÞµsgÒ¥KßÙÛûûû3ïÛ4hРzõê’ÍÞ½{G”gâãé(G’L;wî ^±¢Q£F’¯ú!ééé”@—/]:|äHpppLttëÖ­KÞnYÉäååw'9YzŽi?ÿܾu‹Ž†)™¤³Ÿ>}:hð`a$S=½ ,¦ß€-[¶dee‰L* ÉÄ’ @)L„dâÁ'ӛ7oÂÃÃMLLd¾™´  ÀÆÖöå˗ׯ]£8¡D¡£F: ‘¹º­M­Zµ$É´}ûöïW®tuqiа¡Ì–ߎFkccbZµjUrOÊJ&j¦¸2’‰R¹Q2͞5kâĉ̪gϞ™$Œdª‚L* ÉÄ’ @)L„dâÁ'óI¡áǯ^µJf•›»ûõë×o\¿Îœn·ØßßÞÞ^²öÁƒEEE’d:yò䌙3i(P²åo¿ý¦¦®ndhxêÔ)Z»~ݺÁƒ3«òòòæΝ;tèPZRV21s?ȼ75ÊÎîɓ'×®^e>˄d $“ÊB2±dP +$“!™øEðÉD(‡(Š|||¾³·§þa^¸p’ið AkÖ¬)((0éÓ§~ýú‘’©½GXXhii>uJ]]]’L999={õ¢Ž +Û·™²üíÛ·C‡ ûâ‹/Ž=šMk{ôè±eóff"‡¸'<<<˜ˆrrv~õêÕÉ'DÿN&j3 KK»Q£˜7š®ß¸áààÀü d2mݶmïÞ½ÊÞ åpuqqttävL$'Ll ™”É$@H&~© +ÉôòåËoííÓÒÒ6lعsg±XüÇܽ{—:ç`T•m=ÇÓ³E‹¶66ššQQQ)))Û¶n511ý{’qæƒO­[·¶²²ú»¨è@Dě7o~س§K—.¢OSäuíÚuРAoÒÒ~Ø»·S§N{v廬bê¾}úŒ5ªo߾ғŒ/]¶ì‡~èի׀o¾yž’rðàÁÚµk:xöMÉÜB2qÉÄ’ @)L„d◪L¢â/®¥Ô9}útڛ7õêÕTö^(‡¡¡¡·c"™8dbÉ H&B2ñ ’ oÍÚµ›7oVö^(‡Ç̙“'OævL$'Ll ™”É$@H&~A2â!™¸ÉÄ $H&¥@2 ’‰_L xH&nÇD2qÉÄ’ @)L„dâ$(ž$™Z¶l}ü¸²wGÌÌÍSSSEH&†dbÉ H&B2ñ ’ O’Lt w".NÙ»£t8þêÕ+’I…!™Ø@2(’I€Lü‚dÅC2q;8’‰H&6LJd $¿ ™@ñLÜŽdâ’‰ $€R ™ÉÄ/H&P<$·ƒ#™8dbÉ H&B2ñ ’ ÉÄíàH&N ™Ø@2(’I€Lü‚dÅC2q;8’‰¼¼¼÷ïßׯ_¿¬ Ll ™”É$@H&~A2âÉ;™rss?dgëV¯^­Z5ί˜ò“éãǏÛwì˜6ujÅG2±AÒ@3³¹^^vvvêêê%7@2±dP +$“!™øÉŠ÷YÉtèС›6YXXÌòð^ž’’âæînld´jÕ*渨¨èرc‘‘tTWXX¨©©Ù£G77·^ŸrâíÛ·v£G—uC­[·~ž’âèè(³ŠÒ‹v­­­‡ ª¦¦V»\V2ÑÁÓ§Oû/^LûvÿÞ½ +Œ,B2±ÃcƼyó&8;Ë\‹ù+üïT™dÊÏÏ·°´¤è`±³JH’©~ýúïß¿—‰%’I®JM&"‹555x{o + E2ý'$€R ™ÉÄ/H&P¼Š%SVV–••UʋºººGiÞ¼¹dÕÚuëBCCÃöíëÖ­[9#0ÉÔ©S'‹#dV5mÚtÀ€¢OÉdia1nüxfUaAAzzúˆˆÄÄDw7·9sæ°¿§ýú÷ýúuùÛ,\° #“œW¯^Í\¦_¼­[µbs­•«Våææ҅Aƒ}]îã& ҏRI”ßt@`mm-§@2@…!™ÉÄ/H&P¼ +O2îãëihhxèàAÉ[Ldùòå»vï>|èP»víʹ:“L¥®êß¿ÿÖ-[DŸ’©ä 6?~ügg™ÿXêmbòöíÛò·155­ÀÈ¢âwÀΟ?Ï\îøÕWõÊþê!i tÁÐÀ ™¾~ÅnšG¤¥’´Äb:ñóõµ³³“Ó ™ ÂL„dâ$(^Œé矦c5:èLIIquqñ’:q.dÃÿ„……uëÚµœ˜d²°°Xàí-³J,׬YSô)™†2úÛoEÿM³iÓ¦?33׬^ݳ´ÓºX’œ˜§¦¦¦®®.™òAN̓«²NÌ£ö®^½:=«V¯Æ‰yÿ É H&B2ñ ’ ¯ɔššjem]CW÷СCNÎοýö›ôœã?þø£×ܹ¥Î^TTNµÓºuëŠ}–)##c”ÝëׯwíÜYáãiI2?þÖ­[´ÿ%?΄d’«’ÉÄÌ|8ÁÙyòäÉTM˜þ $€R ™ÉÄ/H&P¼ÏM¦‚‚‚ñŽŽ¿üòËþððN:=zôÈÚÆFOOïÇcÇêÔ©#*þ˜S¯Þ½;´o&óU³‰‰‰.®®L&UxúŠœoíí6lͼõ¹¤'Ÿ4iý£  ÌÏϗ'$“\É$õRïÞ½}}|ô?”ˆdbÉ H&B2ñ ’ ïs“‰™Ýa–‡Å³d_XX@@€™™Ù†¦‘¨@öíÛ'3i^ff¦Ã˜1OŸ>eŽ+3c^ðŠ;wîtøî;??¿ +Üå’_e›‘‘±,((&&ßˤ’G©Zµj 4XлW/é Ll ™”É$@H&~A2â}V2]¼xÑyÂ:Ý³{·dêúÛá>qbBBBÀ’%£G¦%?~¤:º{÷nŸ>},--kÕ¬yïÞ½ˆÈH +IG1ÉÔºuëÞ½{—¼¡oú÷711)+™²³³GXX¼xñbxx—.]>÷.—L&ÆÕ«Wéßàëׯ + +LrÅæ挊úâ‹/¤W¥§§ÛŽ™—›ÉL8ž••ûæÍf›íÛ»ººù4%“™¹yY·5cútÚøéÓ§––NNN³g͒ÙàüùóS§M3008°¿X,þ¬»\V2‘¼¼¼íÛ·oÞ²åö­[Ÿ5¦’‰ÌÌÌU«W{xxÔ->™³$$H&¥@2 ’‰_L xždœ ú³Bq’­§§WŸÝtÛ +PN21ž={&ýMSŸÉÄ $H&¥@2 ’‰_L xrM&ÕôŸÉTH&N ™Ø@2(’I€Lü‚dÅC2q;8’‰H&6LJd $¿ ™@ñLÜŽdâ’‰ $€R ™ÉÄ/H&P<$·ƒ#™8dbÉ H&B2ñ ’ ÉÄíàH&N ™Ø@2(’I€Lü‚dÅC2q;8’‰H&6LJd $¿ ™@ñ$ɤ¯¯`ÿ~eïŽ"ØØÚ¦¥¥‰L* ÉÄ’ @)L„dâ$(ž$™ª $“ÊB2±dP +$“!™øÉŠ‡dâvL$'Ll ™”É$@H&~A2â!™¸ÉôYB6lØ¿5d–«««¯[»ÖÈÈHN·ºyó¾}ûtuu¥eff&ž?_­Z59Ý®ÉÀH&B2ñ ’ ïéÓ§)))ÊÞ åhÞ¼¹¾¾>·c"™>Ëñèè%K–´hÑÂÉѱN:’åõêÕ366–ßíæçç_¹rEzÉ/7oîÙ³‡^Û¶m«+µ'œC2ð’I€Lü‚dà;$Óç¢G,péҟ~úi··­­­šššâw`éÒ¥gµH&¾C2 ’‰_L|‡dª˜ø3g|}}ÛµkШQ#…Ýîº]?¿6ÆƁ7VÀ-"™øÉ$@H&~A2ð’©Âüv“‚ß\’@2ð’I€Lü‚dà;$S%)æí&Å¿¹$dà;$“!™øÉÀwH¦Ê“ëÛMÊzsIÉÀwH&B2ñ ’ €ïL\‘ÇÛMJ|sIÉÀwH&B2ñ ’ €ïLâðí&¥¿¹$dà;$“!™øÉÀwH&Îş9ãçç׶mÛ +¿Ýļ¹Ô¶M›€€e½¹$dà;$“!™øÉÀwH&y¨ð{Dªóæ’’ €ïL„dâ$ß!™äçŸ7‹X¿Ý¤Ro.I ™øÉ$@H&~A2ð’I®X¾k¤‚o.I ™øÉ$@H&~‘$“‘¡¡‡‡‡²w>ۇ<½¼˜ËH&9)ÿí&Õ|sIÉÀwH&B2ñ‹$™@LòSêûHªüæ’’ €ïL„dâ$€ ™äMúí¦;wî¨ò›KH&¾C2 ’‰_LB‚dR来‹II?~Tå7—$L|‡d $¿äää({/€ÚÚÚb±˜Í–H¦JJMMÕÐÐhР²wä¿!™øÉ$@H&Շdª:L|‡d $€êC2UH&¾C2 ’ @õ!™ª$ß!™É úLU’ €ïL„dP}H¦ªÉÀwH&B2¨>$SՁdà;$“!™T’©ê@2ð’I€LªÉTu ™øÉ$@H&Շdª:L|‡d $€êC2UH&¾C2 ’ @õ!™ª$ß!™É úLU’ €ïL„dP}H¦ªÉÀwH&B2¨>$SՁdà;$“!™T’©ê@2ð’I€LªÉTu ™øÉ$@H&Շdª:L|‡d $€êC2UH&¾C2 ’ @õ!™ª$ß!™É úLU’ €ïL„dP}H¦ªÉÀwH&B2¨>$SՁdà;$“!™TŸü’éƍ?ýüóÔ)S´µµ9* ÉÀwH&B2¨>ù%ӕ+WƍߨQ£ààà^={r82T ’ €ïL„dP}rM&W7·ÜÜ\ ¡C‡ÒøuêÔáp|ø\H&¾C2 ’ ääÞ½{ÌQ¾„¦¦f­Úµÿ¯eKuuuÉÂgϞ½~ýº}ûö:::ôã­[· + + »t¦&}Ý´´´§OŸ׬Y“¶ÉËË+ëv[·n-¼ƒ~¹&“›»ûǏé²X,ÖÒÒò÷ó³°°yüAaL|‡d $ÈÉxGÇ˗/—\Þ¸qc?__SSSæÇå˗ïÚ½;.6öË/¿¤M|ñâEpp°µ••ôµ"##}|}úuíÚÿ›oRSS˺ÝÍ¡¡ àô®(Ÿb’‰AáÔ±cÇåAAúúúÞ°„dà;$“!™@N(™nݺ)Y’››{õÚµõë×ÓåS'O6lØPTF2Õ¬Y3&:ºQ£F’ëJ'•Xî§w™¶lÙríÚµõ뵋ߤ"íÚ¶­W¯žÂî¦b(2™DÅïÒ=fÎtvvf.ƒÂ ™øÉ$@H&J¦;wîܸ~]fùþýûý/ööövrt•–LYYY™™™ýû÷ß²y³äô0éd’mÖìÙ±±±×¯]«Q£†Bî–r(8™Õ´´š4mºbŊ¯:tàð¡|H&¾C2 ’ 䤬dJ8ÞÍÍmúôéÓ¦N•–L7662 + _dccÃ\KÁÉ´ÈÇçäɓXIïß¿g.hkkkiiq8rAAAvvvYk)Yk×®Ù¼ysoʁdà;$“!™@NJM¦ÂÂÂ3gÆÇÇïýá‡îÝ»‹ÊH¦m[·ZZZþ™™ܞ§àdJII‘TŠ*3v,6®..Ççpä;wNC]]ziÔȑ³gÏÖÓÓãð¡|H&¾C2 ’ 䄒éÚµkߎÍüHA²sr¨mR^¼°°°ø~Å +椻R“)<,ìòåË4B¿~ý¶nÙB[âÄ>É,!™ÉrRj2åääŒ1"åŋððð®]ºˆX$Svv¶¥•ÕóçÏé2’‰ódzÿþ=ç——J:™²²²è•Ð AƒÌÌLz‘hjjvìؑvCTüt_¸paÚô遁¾ù¦~ýúÌÕ + +nÞº•“ÝªU«&MšH†¥‡%??_OOïúõë4BûöíiIAaaíZµ®¿*Ú¶mK÷‘¶‘ E222ŠŠŠ˜¯<¦} ËuêÔ¹wÿþ›´4zùHÿaïÞõë×GFD4oÞ¼Nñ‰‚yyyÉwî|øð¡~½zÆƃOåqÉÀwH&B2€œ”õ½L‰‰‰.®®Hǎ¥#õÿL&ѧ·DH&9$“ÂH'ӆ÷îÝ;sæÌU«VQ>ђ:zz6lèÖ­óMÇÌU(Q.%%х˜ØØàààׯ_3ËÍÌ̂–-«U«]öñõ½u󦁡att4ý¸eófz=<~ü¸ñ_œ>}š–ìÚµ‹^6ç$;ãäìüêÕ«“'NÐå©Ó¦½}û¶q£Fq'NèèèP˙››/ +¢W”¯Ÿ_DDs•Þ½{ïÚ¹“rnŽ§'3— ¡Ž +Y¿žÛy‘L|‡d $ÈÉî={^½|éíí]rՎ;ž?nccÓ±cǓ'O&%%M›6y`íºut(<ÁÙYæ*aáá¿?xàìì,óa›ƒR˜Ñ­T«VM~÷E鄗LHÔÆK–,iclLGöž^^M›6>~œîæÏ?ÿL?úúúöë×O¿Y³¤K—œœœššÒ³LW9¿hѢΝ;ïؾ]TœLGŽ¡åS§L¡¦¢WˆOl\\³fÍ&MšD¯@WWWY³ÊO¦øøx##£uk×Ò«ëÇãÇé†F þý÷ßSJíÝ·/44tÏîÝÔ0uëÖí׿¿¡ÁŠ+êÕ«÷믿RèëëG~Ê*N ™øÉ$@H&Õ'¼d + Y½j•äky,\xèС۷nQúÊ|–iʔ)7nÜ8wŠ÷ìÙ³,(ˆ‚§e˖”L‘‘‘”4={ödÖΝ;÷؏?F8ЩS'f EÑ&SlLL«V­˜µ~þþ©‹¤?ËDÕÛÄÄÍÕÕÓӓْêîÏÌL+KK'dG2ð’I€LªOÉôÓÙ³’O%­\¹rÛöíÌ –ÒÉTPPЩsgcccéÙɟüñǺõë.X0~üx&™˜ÖbÖR2ýxüøädMMMfÉ&Óï¿ÿ~êäIÉÚÓññÓ¦M Y¿~РAÒÉTTT4ÊÎîîݻݺu£ûBÚ´iÃù·W!™øÉ$@H&Õ'Èdº˜(™’aÕêÕ[·n-™Lt¯é¾«««—œ bʔ)ÝÝ)™:ôëÝ»’å”LÔ<¿Ü¸!YRJ299½JM•$Óû÷ï÷þðƒd-³Á˗[[[Ë̘÷úõë bcc?|ø@?6kÖl–‡Çˆ#8| L|‡d $€êd2]¼p™³NTv2åååuøê+›åAA¥KÉtøðá»wîH–P2ş9#=ïEÑ͛7©Ð$Kƌ›žž.I¦—/_9|X²öôéÓÓ¦O_¿nÝàÁƒKd¼   999ñ…ýû÷¿}ûVú¤¾ÊC2ð’I€Lª¯ +&s^­r3æñãÇ çÎIÞh:—°oïÞ)S¦tîܙM2͚5ëìO?Ñ ú1??¿o¿~µkז$ә3g.^¼X·xqâïïy>!¡~ýúÿ$ÓéÓúúú÷îÝ[¹rå¤I“ºuëÆlyòäÉ3gJv•H&¾C2 ’ @õU©dºœlggçäèH˜¾üòˣǎ͛7oĈ ,¨[·îÇÝ'NÌËˋ‰©U«›dÚ¸iÓúõë===]&LÈÊÊZñý÷QQQ-[¶”žþaÀ€˖.­S§N܉^^^–––A˖ÑÚÈÈHº‰€%Kz÷î­««;ÐÌÌÀÀ`CHHƒ rrr,\x‚ÄÅÉLäXH&¾C2 ’ @õU©dúøñãà!CRSSiù­›7«U«¶)4tóæÍEEE5kÖÌÈȨ_¿>%óUÈl’éÏ?ÿ7~üƒ455 + +¾þúëæ͛_¿~]’LW®\¡‚úí·ßªW¯ž™™Iù¼|yíÚµií“'O,­¬rss)ÞâbccbcçϟOƒÐÚ>¨©©-ðö¶··çðB2ð’I€LªOɔœœLÁCe"*žD!--ÍØØX,3k)Þ¼yÓ¶m[æÜ9º³W¯^ÕÐÔìÕ³'s>Þû÷ïh¹¾¾~÷îÝ%'饤¤Pµoß^rCÏSRÞgf¶k×NúÖ)r.&%½|ñ¢E˖={ô ›£ŒŒDÅÉtëÖ­Ÿú‰ÆOû¶u«V]ŠcL‚öövrríZµèvéGj*J¬ôôtº;&&&u>ÎÇ$ß!™É úL*‹I¦Äó畽#ÿ@2ð’I€LªÉ$?H&à’I€LªÉ$?«V¯~øðaè¦MÊޑ ™øÉ$@H&Շdª:L|‡d $€êC2UH&¾C2 ’ @õ!™ª$ß!™É úLU’ €ïL„dP}H&it4¢¦¦¦ì½$ß!™É úä—L +ˏÌÌÌwïÞU¸òòò8pâĉÛÉÉùùù͚5373sww¯[·.³­Ú¶}»ôUÄb±~³ffffƒ bîc܉Û·o÷óõýꫯdÿÎÁ¡g^^^Û=!™øÉ$@H&Õ'¿dòôô´³³ëÑ£‡c–ôòåKۑ#ç͝kccS«ÿùçŸNÎοýö[×®]{õìI-tÿÁƒØØ؆ †‡‡SÑ6áû÷/^¼ØÈÈ蟈úûo +¡{÷ïøðÁÙÉiþüù´l_XX@@À®;{÷î-=~nnîW;RY…¬_ÏÁ½­$ß!™É úä—Lƒ~úôé°aÃhäzõêq8²4ªk›åAAH&:ö7~üÕ«WW¯Z5|øpÉòŸþyê´iQ{vïVSSc’iËæÍß|ódzоµ·ôèQüéÓúúúH&P$“!™@~ÒÒÒ,­¬èpöÇcÇ4h Y^PPàäìü믿9|¸E‹2»´*))iíÚµC‡ ‘-éÒ%''§ eËlmm/]¾\Öíz{{;9:Êín)¼“I,kjjΟ?´ºº:‡ã“7oޜ9sÆÏßßÅÅ¥_ß¾={öd–¿~ýš²çCvv«V­ú˜˜hhh”zõs îîîcƌñõñ‘YåéåE/•Èˆˆ¦M›–šL¢Oï,­Z¹rĈH&P$“!™@®NÇÇO›6­_¿~[·l‘|ffÕêÕ[·n•¼i ›LNNTGuôôbbb¤ß÷N¦ÈÈÈgϞ1˯^»vóæM›úŸ6þfÀ€n]»*ònʛ¼“‰¹¬¥¥õå—_/_nllÌáMÐóè5wnaa!؎ŽÎë×épbåʕÛwìÐÕÕ¥§˜žÊfM›nÜ´ÉØȨä՗,YNuݶm[™U”:´ÏÌ몬dÚ½gOPPSàH&P$“!™@Þ||}©p|||ƎC?ž;wÎ}âÄÑ£G,YÂlP2™._¹RTTD‡°ë×­“„–t2I¿fíÚ͛7=r¤M›6 +½c +¤˜d"T5ô€ÓŸ†Y5jÔàêVdN̋:xpÑ¢Ecƌñòô¤ˆ¢µtdOǧOÒÖ֖¹î·ööwïÞ½}ëVùo•šLééécƎ}ñâEâùózzzH&P$“!™@Þ²³³mlm_¾|IUS½zu:tnØ°aTd¤äà¸d2=|ôè›þýéÀzõêÕÇ c6Sd2íÚ½ûÚµk\Vy?ÿüsAA]022Ò××çpä .äääÈ,ÔÒÒ¢gŠþ(H暫$™dýí·oÞ¼‰?}Zr2^LlììÙ³KžIFXXÐƗ/]*ÿ&˜WQ‡öíëÕ¯/*þÔû÷“éqó˜9sòäÉ"Lÿ +d $(À;wè(¹]»v”It{èСV_~)Y[j2ˆ‹>bÄǏc¢£ë+2™Î%$<~ü˜«Ñ*o͚5tXOÌÍ̺vëÆáÈ[¶lÉÈÈ(u•X,îÚµk`` 3%]eH'Z§Îíìì$üõ×_ݾþú;{{™ëÒ+çþýû·nÞ,ÿ&˜WÑ_|!ysL»ZµvíÛ27711a–0É´sÇɽÌ:vê„dN ™ÉŠ±uÛ¶U«Vхàà`k++éU¥&Sâù󉉉.®®fffBBÔÔÔpbžHþ'æIÓPW/úûïI“&͜1£’ï5I'ZÏ^½\\\æJ} `·i3jäÈ¥K—Ê\wÖìÙ±±±gϜiÚ´©ÌªW¯^=xð€ºŽ2©¬Ï2IcNÜ:`Àéåþùgž=­¬¬VWænrÉÀwH&B2€b0ýC¶nÝÚ¿_?éUe%]^äãÅLw†d)0™ÄbqçΝýýý¥ß¬0édÊËËëÔ¹ó!CV'4ƒâç›Ǐ_°`ÌuO:5}Æ /OO×â׏´uëÖm + ]ùý÷l’‰™Œdá‚ãǏ—^~éÒ%G''ggçùóæUö®V’ €ïL„dxó捕µu5Þ½{GÇâtDȜkÇ('™²²²FXXdggÇDGÓB$“’©Zµjzzz‹ýýééàäƒLäÞ½{ôX¶téȑ#éGŠŸÛÉÉgϜ‘œDÇÌk·!$ÄÜÜ\溔XC†ýóÏ?£"#[µj%YþÇØØÚÒ ‰^´Ïl’éýû÷½z÷600 ¡èu(YÎÌP²cûö>}úpr+ÉÀwH&B2€¼º¸¸\¾r%<,ìé³góæ͓™s¼œdÏO0ÁÅe ©éØq㜝‘LòK&ªzR¦O›FO––‡·òìÙ3óAƒèùµ±¶>>péRÊ!*MM͒W§¾rpp ]rrt¤kiŠÅIII»wïÎÉÉÙ¶m[ï^½DeO2.#xŊ;wÒKeì˜1 6Ìx÷îÔ©SgΞíÕ³'-çü;©*ÉÀwH&B2€¼…††®]·næŒS¦L¡¿#³f͊;qBúпüd}z`äȑ‡B2É#™¨”¨(f¼çÏoØ°!‡ã3èy§î½X|ì~>!n‚^+W®LIIa6 ›öY´HúûŽe$''/¾^üN̒Ž;Ο7¯K—.̏,“©¨¨hã¦M”[YYYÌ +E+KKooo'U¯ $ß!™ÉruõêÕqãÇÓqíÞ~`f”þóÏ?-,-322$SՁdà;$“!™T’©ê@2ð’I€LªÉTu ™àÿµwçq1îÿÿÇ'¤B";ád-kÈÒª(%T´äh9²GÖê}$²¶}Ïv¥(ûVَ->²´èT|ÊÑæû{ýz\Ÿ9SÓIÃqÍÕóþ‡ÛtÍ5ï¹f˜«÷Ã\s È;$“!™øÉT} ™ä’I€Lü‡dª>LòÉ$@H&þC2UH&y‡d $ÿ!™ª$€¼C2 ’ €ÿLÕ’ @Þ!™ÉÀH¦êÉ ïL„dà?$SõdwH&B2ð’©ú@2È;$“!™øÉT} ™ä’I€Lü‡dª>LòÉ$@H&þC2UH&y‡d $ÿ!™ª$€¼C2 ’ €ÿLÕ’ @Þ!™ÉÀH¦êÉ ïL„dà?$SõdwH&B2ð’©ú@2È;$“!™øÉT} ™ä’I€Lü‡dª>LòÉ$@H&þC2UH&y‡d $ÿ!™ª$€¼C2 ’ €ÿLÕ’ @Þ!™ÉÀH¦êÉ ïL„dà?$SõdwH&B2ð’©ú@2È;$“!™@vOŸ>ݺm›ø‘HIY¹¦æСC5jÄ&''ï /w„ + +K—.=vìØÕk×Ü\];tèPvuë×çææZ -mK4Zµš:uª …§LÕ’©°°^’'OÊÌ̬Y³fÛ6mlGŽ462RPP}Û¤Y²d‰–––££ã×» &???`Ù2SSSs33‡ÊÊÊjܸ1]xýúõú°°‘¶¶}ûöýÛò +É$@H&Ý͛7ÆkÚ´)›7ú}‘žžž““S§NhuîL /\¸0yÊZ¢¬¬,1MÈ.%$P/¹gg‰ÒÒÒLLMíììú÷ïÈ–””¼}ûVII©nݺlI×.]¶ý5ބÉT}ð$™¨—Æ;;'&&jhhhkkÓåÜÜ\kë+V|½j꣫K³zÕª¯4>‡öNôô¦M:cÆ YÆYâïÿæ͛u¡¡t9))‰ªÒßßßÑÁá m&È%$“!™@v,™¼¼¼Ü\]¹…?~~üxØðá?þøãüyó¾Î#ã $SõÁ“dÚ½{÷²å˽½½]œY QDÑËùøñã”C† ‘}óÊõ%E`JJJãƍ›5k&Ë8MLºwï¾~Ý:ºüçŸ>yò¤E˖ê ~¡Í¹„d $È®ÜdbFÙÙ%''ß¿wf]›LdãƍÁ!!;¶o700àÒoË¡C)¢bcbÄÿ{ûë%Óýû÷322¸{ÿï±þ÷ Qì7ãÿ•wù/ Ëá/¿[¥Œà»pá‡貍á§gæÿʬYÁ³‘å>4±Ñª<Â?üD}ÉÊ­Š­¼‘v¿;vìˆ9vì›'Ӝ¹scbbÜ¿/þŸéééTövvïÞ½+**RWWIæææҟ 4ÈÉÉQTT¬W¯ÞÓ§O_¿~Ý´iÓ:H¼7E£=}öŒVëѽ{íÚµÙB.™RŸ Ü££•=z”••EÏFǎÙÁÆlۑ#µ´´—/WUU¥•éi¡ÅßH§ˆJKK£¡h5î þüÏþ£¦¦F—ïܽK?jki5Dh ’I€L ;iÉD¿5,,-ižqëæÍJ&M}hNfmm½rÅ +ná;w¾=ÚÛÛÛÕÅE|寗L«W¯Žÿßϟ&:âs¾r/K]A|ôJÆ]¦¹oII ]  _Ó&Mþ2õüüÑ$¶§ê£U8‚Ô»þgGûËòÏ­ÜDŸñUm´^::¶¶¶5jÔÉL–dZ¾|ù®Ý»CCB,,,ėÓ˹~ýúT8ëÖ­[v$2²K—.ìªüü|};;»E š™›ëééýçÝ»'O²kõ ظq#U ]¦>YìçÅ&–Ô‹/¶±¶•&Sï^½hyÂ¥K솃 +fM¥¥­íêêMíD½GÑòӂ/^d+S›Íòô5j”¨ô=^½¦O›võÚµ[·n±i¶C϶øyK–,Ù·Ù'áÞo¿QÑ]¹zu¡¯ïËW¯ØBºíø~ðññyÿþ}ï>}¸•wlßN]$~`u­öàÁ¶Eã¿üütuuéòõë×?žv†;wízþü9-¡;¢]Ü8'§*üeß ™É²+7™²³³·lÙB‚1£Gûùù‰>˜7uÊ+++‰hªÁ%Â}âDðÊåËlvEhvA #q¸ ̨€,ÉôêÕ+šý¿{÷®OïÞ?ýúõÓÑÑQRRâVøýåK333Wšè³%QÑÑ´ˆ8|¸[·n”L¯_¿8p  ÑöíÛ©IèuJ¯VZsÁ‚‡#"èG + +jž«W¯ÆÆÄhjjR2ååå 6ŒR‡n¹, €JLTšLµjÕ¢Š322úXR2räH;{{Ú,^´ˆö*ééé+VP>­_¿ÞǙ%S͚5œœ(EJJJ–Òndû¶m†††âÉDöìlö(¨\ãâã)ÙC£632¤]»v+W¬ÐÐРb\àë{åʕƒôìÙóÙ³gT>:u¢¦jÞ¼9Å—LÙ99–––´£ïÛ·ïýû÷.ZôòåËȈ%];wîÜA¦¦4¬—·7ݜ"ûD(È/$“!™@v,™h*£¨¨È–Ñš4Ќž%S¹#ÐôÈÃÃ]>sæÌtµkÖдITúÒ††F††AAA·B2T@Æ3æQŸ:uŠ½–éÕM 4yÒ¤îÝ»³Æ;;§¦¦rŸyòäaVV´šªªêÙ3gØñu>|è©£ÃMQ(™ZµlI»ö.\bbâè1c¼æÏwsscCÑî‚îºuëÖû÷ícÉÔ¥K—#‘‘ìZ¶Çðœ9sʔ)ÒNÿ@cÒ㢦Z¿n=.JõaaS&OîÑ£[íî–/[ÆÞËÿ,“øéÂÃ×ì çΞ÷âÅ ª/Vb,™¨ý—,a×9rÄÛLJå\Õþ¾€?L„dÙ±9„Þ€4¹¡ßi¯_ÇÄÆ6oÞ|CX˜¶¶6·K&{;;}±Ï)1;tèÔ©»Ló3ãi²eófúñÄɓžžž;wìÐ×ח¸’  _ä{™(Znß¾}ýƍ„„„{÷îђ6 4Hôém%öÉCö1§ysçN˜0®¢n¡=À^±/004ÔéÙ3,,ŒýŸHHp°¥¥eÙ»£d¢W:;C{ v¤.%Óðáù“C¬Y³fËÖ­çΞå>¡D|}}>|óÆ Š.J¦qãÆ-ôõeWeçäèééM2eæ̙å&ÓóçÏi:Ô¼E‹}{÷rçá•cœ“›ûû‹´íǎŸ8Á}'-™( ““’®\¹"~Œ¥µ ÕãÉ'X2­ ´µµeWÅÅÇOœ8‘{nA®!™É²+{`Þ¥K—Ü'NìСCøž= 4` +óY&fåªU»víº” ®®N㤦¦žýôÿÊâL%™hÊWRRJ¹uû¶»»{½zõâ.^TPPøóÏ?)„ÌĮ̀g(]Ö®]×´iSQi2µmÛv»ØÿŒ{tïNÉååíM{†~ýú•½_J&“5«WsKzõîmnnÎ%û0»ÊÏÏïÀÁƒÿ¾{WüˆÁ 7Җԯ_Ÿ’ÉÍÍÍkþ|vUnnnÿ¤%ͅ(:ĝFž‡C‡mÚ¼ùUég™TUU;wîL{¼¿M&;{û‚‚‚˜cÇÄõdrJ +íÙX2Y Ê®¢"àîŽd$“!™@vå~–ióæÍkƒ‚† Â>Ú^ùdJ}òÄÊÊjá…C†è1}z¹_P‹d¨@•“)33sÐàÁãƍóöò’¸Šj‡šçNb"û¨¡¯¯oLl,݅½ƒCË-¶nÝÊV£dú®mÛmå%{ßX¢ (H7nLåSö$ãÉDӕ•~6’®X±sç΄øxÖi ë(î]&ñýCÉD¥äì⒜œ¼ß¾®]»r£!ÁÝÝ=`éR{{{¶¤¤¤dˆ…ÍWϞ9CÃV2™èqQ>}š6Ïlð`ñ§‚lýÆõëõë×gK~þùçE‹Ó6ÐþMTšLݺu [¿^ô×d +Û°!444::š}‘·¨ôdƒôÀiŸ‚d6$“!™@vÒN2žœœqwÝ´iSʺŠK©›·nÑúüñÇO>>ÎÎδ„ +­f͚´͚6ýý÷ß¹d¢Ë´wjß¾}pPPÛ¶mÓÓÓ½}|èQÿ|𠎎’IؐL„dÙUðU¶«W¯Þºm;1TgÌ#§Šzÿþ½¡‘Q~~~Ùÿ÷å ™* ãé¨=BBBÞ¾}Ë-QTTœ0a ñnÞ²…BEbQq2Q®x̘qãƍ† ~øð¡°°pÁ‚9"±¯²ånXA2‰J¿(vº‡Gjjj£F(™Š‹‹ts›5kma哉Ù¼ì3°eóæN:urzýúu;M͂ÂBaö¬Y+VP\±“Ý- /=ËÅòeË(ùÄ¿—)>!öŠÙÙÙMš4¡?UTTèõK7}ú^&$“P!™É²£ÙMYZ´h!þ‰†æC))) + + +Ý»w÷îݳgϤ ¢©©ÉúÂPQ2uíÚUâ3èš=|ø¦#-[¶”ùAð’ ª@ö3æQÌ\ûõ×ôôô¢¢¢ ¨©©I¬söܹiÓ¦±7O¸…IIIµ•”Ú·kÇ-¹ÿ~:uèeÎ-ùÜ»§¢¬lll̽ÃLËh?жmÛÿ=Šß~k ¦Ö¦Mº|÷î]õFZ‹OTúNÕףǏ먨èééqñ–””Ü»wO|ÿ@AE›Ñ¬Y3Z‡уØeºSñ7—8l§Dû™ËW®Ð“@Iπªª*ívh}---QéÁŠtï”R´‹£§èÑ£GÜá'Â)##ƒ®hl\¯^=¶œí3éA5üô]s´{|úôéwß}Wö¹ƒd $ÿ!™  +¾ÈIÆÿõÒ³çÏÙ×1}Õ;H&B2ð’ ªà«&Saaá²eËÞ¼ysöܹ+VØÚØ|{GH&B2ð’ ªàk¿ËdfnNÉôøqsæÌÁ[L$“!™øÉUðϘL„dà?$T’ à›@2 ’ €ÿLPH&€oÉ$@H&þC2A ™¾ $“!™øÉU€dø&L„dà?$T’ à›@2 ’ €ÿLPH&€oÉ$@H&þC2AȒL7oÝJzð Ü«š7onnn.Û¦ý¢¢"EEÅò†‘‘‘ùùù܏µjÕ¢‡©«««ªª*¾Zxx8ý©©©ihh(1ݜ¡ C† iÖ¬™øU¿þúëÇûöë§Õ¹s¶ ä’I€Lü‡d‚*%™V¬\¹cǎr¯êß¿ÿžÝ»eÛ´Š\»v-(8øçƒ?÷†.\ؽgÏ®;«p§&¦¦iii )œfϚåææÆ}Qog--ú³e˖çϝ“øöÞ£GÎ›?Ÿ.„ïÙÓ¯_?n9Mž‡XX¼xñÂØØxë–-UØ6;H&B2ð’ ª@ödÚÞ¶m[‰«6lø%6°|sæν|ùòµ«W?÷†?N˜ðúÕ«'NTáN)™T”•w—¦ Mw‹ŠŠRRR6lÜxïÞ½™3fL:•­Fɤ¬¬üáÇC‡õèÞ]|zªããã?~ü(‘L7oÞt7nРAçϟ?{ölk *lÈ$“!™øÉU {2mß¾}•7€æoß¾­Q£FýúõË]¡°°0//¯^½zµk×æ–›Lô│¸X­~ýš5kJ»»r“©¤¤„¶AII©nݺl*%“ªªê±£GÅÒ¶ÙØÚfff^8¾qãÆ¢Òd¢øIHH —¡Wé{JLnn®¡¡¾ž^|B‚D2yûøœlØO H¤K—.GJ¿JRxLPÿÀó\Ýܲ²²(„† Þºuë͛6ÑÂcǎ͝7Ïɒ>ººë·ÖШ]»öÿO¦ž=ÃÖ¯ç–WL¢Ò³ÞÝ¿ŸÒn$11±cǎÑQQeßnO&??¿Þ¾uKüDyKüý÷íÛ'±‘–L{öì X¶,`éR{{{‘X2}øðAO_ôèÑ㜜 ¼7<¼oß¾âÉTTT4ÐĤN:Ÿ\¢ž¤×ò¥„ºª‚'ä’I€L ;úíà9kÖɓ'W¯Z5bĶ0<<|i@€———›«+ýȒ‰rhÄðáeG iYAA‘±q#uõãǏK||‚ý§uPP¡Á›7oØ—¯^𶶶ÝÝْÚJJBýÎ$TÁ?L111T8«V®œ7~hHˆ……-|ö왅¥å?þ8Þ.®ìM”L¯^½:YšLl§±iãFSSSn…á#FdggÓàe? Un2½{÷nä¨Qt“‹.¨©©‰Ä’‰mçíÛ·ÆŽÝN+Ô¨QC<™ÎŸ??eêTggñ17oÙ²víZG‡Šþ@ž!™É_Dnn®µM^^Í9ZµjEsµ1cÇҔ…ÍNX2-\¸pœ““´A(±(´"#"$Niåì윜’’/þ v&+Wo)‡ÉâÇÅÅÅtm|Å2K*^ùs!™  +dO¦;v”ý*[Ò²eKöï™^)††ŠŠŠ4E…Ú;8½ì#¢d¢*Û¾m›¨ôÿ€ + + +îÝ¿¿mÛ¶‡ÒìˆæHl5ñdb§¦hÔ¨‘µµµ·——èÓùñX2M›6íü… ôœ°/tâdddІikkӎN–}ð’I€Lð¥°Ï|÷íÛwýºu#Gúøñcԑ#ÜgÇ+“LÔE666Ä>/áâììãã#¾òWM¦ÙsæФí‹+¡ò%VXXÈ~¬Uª2ÙVϟV’vw_v@Éa+±r¥Öᆭô€ÿ½Iå׬`åª øw!]©a¥¬SÁÊ9¹¹TM—DŸ%“´kû÷¿¹:ZìçwðàA*y_±ƒfŸ={æâꚖ–Ö»W/ +˜7oRZìÞµKSSSôwÉυ£ stt¤1'MšŸÐ¥K—FêêϞ?ùòåRv˜œ„ÐÐа 膓&Nôðð [Q Ñ¢««K[’ššjbbBÛSö¶”L´ŽÄºuëΛ;—fJÜñd¢W¥ž¾~^^^ÄáÃݺu‰%S»víŒ4Ð×gçٓ0qÒ¤¸¸8ñs”ƒÀ ™É_ût5͊ž?¾oïÞÞ½{sWU&™̈́ÒÒÓããâ¸*lܸ18$¤ì9¦¾j2åçç±ßzÿýÍÇ.KùSüB«U<`+;88Ð&Ñš>²#+° +÷^Î:Üh•X¹â5+¹ZÅV°Úß +ñ$óÑx~*ï=(™,w5KKK­ÎEŸïΝ;ÉÉÉÒ®¥Ü+ô÷—//_ºDÁÓªU+ñu + + +Μ9C±ôñãǞ=zXXXp_zMýþ£‰‰ŒŒlÞ¢…¾žž¨ô“KÇbbèÞ­kWsssúñâŋׯ_§—@“&M¬­­Yw•E¯Ù#QQ¯^½ÒíӇ ž“sôèÑǏ×­SÇØØX___Ú;´Úû÷﹩»Z·nM]'ÑW‡m¿ûŽ;ã9m؛¬,{;;6lê“'7®_755¥Ç~åÊ--­²÷•’’’˜˜Ø­”´gä’I€Lðڎ™ššêææƾ±„Ã’IEE…ûL‡²‡J€]¦Éb?¿Û·ˆJ'––êêꐸÕWM&¾ÁyòÉ$@H&ø‚’’’‹ŠŠZµjÅý§²èS2õéÝ»c§N·262¾ìI‘LÀCH&B2ÀA¿ æ͟ìرu¡¡fffÜÝ/_¾¼jåJkkk¶Bå“éæ­[NNNk׬¡qô ¬¬¬ü—,)»’ xÉ$@H&ø""""~Z°ÀÑёåMFF†µMQQQtt4û®¤Ê'ý®je¥©©I¹åéé)í¼RH&à!$“!™@v?egתeK +'î+íϜ93ÝÃCGGgßÞ½µjÕbÉ4Þ<îNÄ)++Ó:܏[·m Ñ××OOK£è*÷$WH&à!$“!™@Fþù§½ƒÃóçÏýò‹¶¶¶øU ,81}Ú4–LÒÙ²eË@ccîÇ7oÞ 41)))© LÀCH&B2€Œ> +endobj +164 0 obj +<< +/Width 384 +/Decode [1 0] +/Filter [/CCITTFaxDecode] +/Height 141 +/Length 458 +/Subtype /Image +/ImageMask true +/DecodeParms [<< +/K -1 +/Columns 384 +>>] +/BitsPerComponent 1 +>> +stream +& hÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿò¶@½ÿÿÿÿÿÿþC$='AÇ/²øƒÙÈ$È= Y‹²2È=„ †‰Ñåٝ®< ~a¡pƒð˜A„95ZÓÓðš«?L ÓÂÅÅúhk§èøÚatûY¡¹¡¿GÉÏ£äýGÉÏç†÷¨A¸A¿„A®I¸AÐAÐMÿOOé=?¤ßÓ¤ÚN“í¥MÓW¿ÓúWOOMÿÿûïÿûÿì/êêý(WúߥkjéÚ[ïø·ý?ïO_Çÿüœ_ÿõÿíþοÿñÿ•ÿÿ±ÿú_ÿÿþÿÿÿ³WÿäˆÿÿÿÿÿòÝÿÿüØ/Þ¯¿ðÿký®¿Úéi{dȯûÕûÓ{i}ÿ Âÿÿÿ½k¯ßÿkkÚÚÚö¶•¥í¤ÚûiZí¤Ú¶—ðÂà ðÂà (<0°Òᅆ†ަЩ´+ئ?b¦ÐíŠcµÚÚöšö¶¦tPÖõ°¶†ƒ^[ @á„Ø]¨††!‚ 3a–†8aa…øŽ#ˆ¶¢8ï_×Úûkï_iûkñä[ȖÃKÚðûÿ¾×µã†ˆˆƒ` +endstream +endobj +165 0 obj +<< +/Width 496 +/Decode [1 0] +/Filter [/CCITTFaxDecode] +/Height 114 +/Length 512 +/Subtype /Image +/ImageMask true +/DecodeParms [<< +/K -1 +/Columns 496 +>>] +/BitsPerComponent 1 +>> +stream +& j ŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈЁ\çpAӂAð†ÒræCF{ “ ÄÈf' Ő{ ˜CDÈ%þƒ> ~aƒü ~žœ4øa;Âa8a?ô|nјßi®šwêŸú78‚~p;žô|œðÜàwüðߣié7†è7á´hÚ| Ú ¼7èÚh&ÿú}Òü:OúN“áÿÒý+î›û¦ÿ«¦ûÿ¦ýoßuýö·ï°·õoa}>•ýi zP’þ´‡ÿßÿßÿÿÖþ¿ÿÒoÿô›ÿü|WùP/ùP?ü¨?O¥é{ÿ·ÿÿþ’ÿ¤ßÿé7úßê JpÍÿÿÿÿÓþ þl­üØ/ÿ[›ÿÿ@!ÿÓÿÿÓÿ­ü •ûi~ÙvÒûý´¯§ü §ÿÖýÿëÿöa¿µ§ïµÿ§µõ¿œÑ87¿¶—í¤Ú_¶•ôÿ¶wì0’Mð°Â_e¾“l0•–ÿ÷¼-þ?بþ?ã[ßm/Ò ~ÐkJa?ÃS ôþ@þ¿ØI7†˜_¾“l-ÿùÁ~CþB" Âñ ! ! -omÿHDt„G§úý]Û]zÒë¨ã´ºmuÂáiÛ\-úXK { (¦J8¢«Š!›~ÅSU×NÕ5 + ð‚aB‚à¹5€„!€€ +endstream +endobj +166 0 obj +<< +/Width 440 +/Decode [1 0] +/Filter [/CCITTFaxDecode] +/Height 141 +/Length 504 +/Subtype /Image +/ImageMask true +/DecodeParms [<< +/K -1 +/Columns 440 +>>] +/BitsPerComponent 1 +>> +stream +& hÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü†@̆@)f8xM>ý! ™ ƒoÓ·ÿÂnò„2¦;á ‚!£hâd4~Gd-cˆYK!– ‰BWÙ2 xL ý „„PøA­„ÓOè&ôè'è:PŸ£ãhÌoÕ4=5OÐí?AÐO8´§†ç£ä৆ùÀnxužô› ßÒ ´~zA7è ú ¿§KõIÒ}&ôŸéæÓIý+¦ý*nŸ¯¦ÿué¿Ýöáÿa~õì/Jëô’ŸÒ¿m!ýÿÒÿ þÞ¿ýÿä0ù8º¿ñô¥Cø/*³¯ÞT)/Kü%þÆ¿ëé„ø=7ø%è/ô üƒQø%Ä9°_ü6 ü†·-͂ÿ Ù§õÑàÑÿOþᶓ[i^@»þÚW„ý¯ÿ„õoýçö¶¿µÿ®×Ñ8lá¶Òm{]´¯m}´¯@½Øa&]°"†²ß†I¶JË{…÷||qìrj©{†™Ñv°ÔÂ{]†¦ò_°ƒ ÚØ[ᤝ…¿Î !Œü0ƒD fÁp„0°Á††Úÿâ#ˆâ#õ¯ÿ¶½z_ÚM¯¯í­þöL0—@þÿb˜®°þÓ]oá„Âà±ða"# +endstream +endobj +167 0 obj +<< +/Width 456 +/Decode [1 0] +/Filter [/CCITTFaxDecode] +/Height 138 +/Length 484 +/Subtype /Image +/ImageMask true +/DecodeParms [<< +/K -1 +/Columns 456 +>>] +/BitsPerComponent 1 +>> +stream +& j/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿò —ÿÿÿÿòœ6làh36„œpã—Ä6L DÈhòìƒAF„3p‡¤áöÒÂa0ƒí| áý„ýºÓ4Âiï^ú§î±i¦˜_ý9Àïùá¾p2ÚSChù4|œðÜñŽ×ÑòxoÑ´ÐMûiB Â: ´w¯„þ“ûÕ:M¤ÚN“ÿ¤Þÿ鿵¦éë¦éÛKë¿«{ ÛKü?°¿ü?¿­!öê­lU!Wÿ¿ÿì{Ӆëm/ ý&ÿ¯òãò ŸÿåAö¿ÁeCíx.ßÿïþÿð—úMþ¿áÿáÿÿ§þ~ÎRœ _ës`¿ïþ +lÿÁð_ôÿʀç¾Õ>¯Pôxßí¥zO¤õM¤ßk}­ÿÕßôB¿ÿÎôB¿ý=¯«zÚðím^°ßÃûý´®p3ÚM¥jÚM­®ý¯Ùo¤Û %e¾•Ã +a&J_ïl%ñÿ}76…1QÆÆõ¿”†¦Õ½¦š 3¢Úþ×ï¤Û }'ØA„Ó5½~׈aˆaab"A„ akø0ZB#ˆˆÿŽ¾õÿ_k¥á}ë_ éqD3nU†@4㏯ڮü. ö¡p +endstream +endobj +168 0 obj +<< +/Width 480 +/Decode [1 0] +/Filter [/CCITTFaxDecode] +/Height 141 +/Length 555 +/Subtype /Image +/ImageMask true +/DecodeParms [<< +/K -1 +/Columns 480 +>>] +/BitsPerComponent 1 +>> +stream +& j _ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü (Οä /7Ûþò„3&øA‚@¾Q†²ü!Ž.È/BVC̃ñ; “ –Aì†ÀdJ¼†ÉK ítA… B .„Ø@ü ÓzÂiփ aú”'èÌmÿi®†šéþ‡iú6‚{X›6“‚ç‡GÉÁhù?œç‡Yῧ ÛÔ Ü õ ƒÂ ×?è ú ¿I´¿¦ÒoéÒI¿éæÓIý&é¶Ò§¯÷«ú÷^›úuÿÃÿ¾ÿÿï^Âõºþ¬WïJ­ÿ~ÚCôþÚ[…öü~ŸöõÿÿÈ9þN/ÿþN.¯ÿkÁ}ÿû:ýåAâ›Kð—±ÿÿ±¯þ¿„ƒÿÿƒÓà“8zä‘ÿþA¨ÿ¿à¼†gÿÖå¹°_ù hõz<8íOÿ„­t«²ûdýêüwý´¯Â þˆWðŸ ÿÿ êßþ=Zðÿïû[_ëµýƒc[J׶մ½´­v×ÛJýøa[ (6[à C + °ÂÃK†I¶JËy5M(OQQñ±±^ÅM¡ì¥k6“\Âm5ímmv˜OúzØM{†ƒ^[ $ì-û\†2× `› `› °„0°Á††õÿˆâ#ˆâ#Úêõÿº]Zÿì4›W¯þÖÿÿØa&J?ÈKö)ŠkðÂkÝÿa0šÄ0B"0 +endstream +endobj +169 0 obj +<< +/Type /Font +/Widths [575 274 623 633 427 596 352 636 454 843 698 686 684 603 557 771 +592 684 521 633 394 616 695 973 607 623 274 521 601 459 633 732 +459 632 421 525 623 344 623 352 454 636 787 455 748 454 592 623 +364 592 454 818 269 364 989 818 684 685 636 636 592 635 751 636 +693 775 454] +/Subtype /TrueType +/BaseFont /WRTXTL+Verdana +/Encoding 198 0 R +/LastChar 67 +/FirstChar 1 +/FontDescriptor 199 0 R +>> +endobj +170 0 obj +<< +/Type /Font +/Widths [891] +/Subtype /TrueType +/BaseFont /KPSHBO+Wingdings +/Encoding 200 0 R +/LastChar 1 +/FirstChar 1 +/FontDescriptor 201 0 R +>> +endobj +171 0 obj +<< +/Type /Font +/Widths [600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 +600 600 600 600 600] +/Subtype /TrueType +/BaseFont /EIZJKK+CourierNew,Italic +/Encoding 202 0 R +/LastChar 69 +/FirstChar 1 +/FontDescriptor 203 0 R +>> +endobj +172 0 obj +<< +/Type /Font +/Widths [722 556 333 278 611 333 611 722 889 556 389 556 667 278 722 278 +611 611] +/Subtype /TrueType +/BaseFont /DUCRGK+Arial,BoldItalic +/Encoding 204 0 R +/LastChar 18 +/FirstChar 1 +/FontDescriptor 205 0 R +>> +endobj +173 0 obj +<< +/Type /Font +/Widths [352 364 787 633 274 591 632 766 843 683 973 607 623 596 274 521 +633 623 427 394 352 633 698 686 684 603 601 990 623 521 616] +/Subtype /TrueType +/BaseFont /WINDHK+Verdana,Italic +/Encoding 206 0 R +/LastChar 31 +/FirstChar 1 +/FontDescriptor 207 0 R +>> +endobj +174 0 obj +<< +/Type /Font +/Widths [830 664 422 668 712 342 456 342 1058 686 699 342 593 948 724 762 +710 733 683 776 361 847 402 712 650] +/Subtype /TrueType +/BaseFont /MFZMRR+Verdana,BoldItalic +/Encoding 208 0 R +/LastChar 25 +/FirstChar 1 +/FontDescriptor 209 0 R +>> +endobj +175 0 obj +<< +/Type /Encoding +/Differences [1 /space /P /a /g /e /i /R /v /s /o /n /A /C /p /y +/r /h /t /parenleft /parenright /two /zero /one /T /x /I /u /m /c /d /hyphen +/colon /slash /w /period /S /f /D /M /B /L /l /endash /N /Q /four /H +/W /E /O /V /three /F /K /Y /U /five /Z /six /G /X /eight /seven +/b /underscore /nine /j /k /z /q /comma /quotedblleft /quotedblright 75 /quoteright /question /ampersand /quotesingle /semicolon] +/BaseEncoding /WinAnsiEncoding +>> +endobj +176 0 obj +<< +/Type /FontDescriptor +/Flags 6 +/StemV 108 +/Ascent 694 +/Descent -215 +/XHeight 460 +/FontBBox [-76 -215 936 694] +/FontName /NJCWTD+TimesNewRoman +/CapHeight 677 +/FontFile2 210 0 R +/ItalicAngle 0 +/MissingWidth 777 +>> +endobj +177 0 obj +<< +/Type /Encoding +/Differences [1 /space] +/BaseEncoding /WinAnsiEncoding +>> +endobj +178 0 obj +<< +/Type /FontDescriptor +/Flags 65540 +/StemV 75 +/Ascent 625 +/Descent 0 +/FontBBox [0 0 500 625] +/FontName /KPSHBO+ArialBlack +/CapHeight 625 +/FontFile2 211 0 R +/ItalicAngle 0 +/MissingWidth 750 +>> +endobj +179 0 obj +<< +/Type /Encoding +/Differences [1 /two /zero /four /five /space /C /e /n /t /u /r /y /B /o /l +/v /a /d /G /m /w /comma /M /D /eight /seven /A /P /I /p /i +/c /g /f /S /L /h /b /U /s /E /F /O /R /X /K 48 +/x 50 /hyphen /N] +/BaseEncoding /WinAnsiEncoding +>> +endobj +180 0 obj +<< +/Type /FontDescriptor +/Flags 6 +/StemV 149 +/Ascent 728 +/Descent -210 +/XHeight 530 +/FontBBox [0 -210 768 728] +/FontName /RABYKY+Arial +/CapHeight 728 +/FontFile2 212 0 R +/ItalicAngle 0 +/MissingWidth 750 +>> +endobj +181 0 obj +<< +/Type /Encoding +/Differences [1 /M /C /B /S /P /space /L /D /o /f /t /w /a /r /e +/s /i /g /n /p /c /parenleft /parenright /T /A /E /O /F /N /one /period +/two /R /three /I /four /V /W /five /G /six /U /b /l /d /u /colon +/H /k /m /v /h /y /z /q /underscore /x /seven /less /greater /hyphen] +/BaseEncoding /WinAnsiEncoding +>> +endobj +182 0 obj +<< +/Type /FontDescriptor +/Flags 6 +/StemV 162 +/Ascent 677 +/Descent -215 +/XHeight 470 +/FontBBox [-8 -215 991 677] +/FontName /AOQJYH+TimesNewRoman,Bold +/CapHeight 677 +/FontFile2 213 0 R +/ItalicAngle 0 +/MissingWidth 777 +>> +endobj +183 0 obj +<< +/Type /Encoding +/Differences [1 /D /o /c /u /m /e /n /t /space /L /i /s /C /r /b +/h /d /S /l /one /two /N] +/BaseEncoding /WinAnsiEncoding +>> +endobj +184 0 obj +<< +/Type /FontDescriptor +/Flags 131076 +/StemV 93 +/Ascent 647 +/Descent -16 +/XHeight 457 +/FontBBox [-16 -16 625 647] +/FontName /BIABFC+CourierNew,Bold +/CapHeight 606 +/FontFile2 214 0 R +/ItalicAngle 0 +/MissingWidth 600 +>> +endobj +185 0 obj +<< +/Type /Encoding +/Differences [1 /space /T /h /i /s /w /o /r /k /l /c /e /n /d /u +/t /C /a /v /m /A /b /hyphen /N /D /three /period /zero /U /p /L +/y /f /comma /colon /slash /g /one /seven /S /F /nine /four /five /two /underscore /I +/parenleft /parenright /M /B /P /O /E /G /X /R /H /V /K /x /asterisk /Y +/J /bracketleft /less /greater /ellipsis /bracketright /z /equal /semicolon /quotesingle /numbersign /backslash /six] +/BaseEncoding /WinAnsiEncoding +>> +endobj +186 0 obj +<< +/Type /FontDescriptor +/Flags 6 +/StemV 150 +/Ascent 678 +/Descent -273 +/XHeight 437 +/FontBBox [0 -273 600 678] +/FontName /XYOGBW+CourierNew +/CapHeight 584 +/FontFile2 215 0 R +/ItalicAngle 0 +/MissingWidth 600 +>> +endobj +187 0 obj +<< +/Type /Encoding +/Differences [1 /space /D /r /i /v /e /I /n /s /t /a /c /B /d /g +/period /nine /C /h /l /o /one /slash /O /F /m /P /three /four /six /U +/b /seven /E /u /S /x /two /hyphen /zero /M /N /p /y /f] +/BaseEncoding /WinAnsiEncoding +>> +endobj +188 0 obj +<< +/Type /FontDescriptor +/Flags 6 +/StemV 99 +/Ascent 694 +/Descent -215 +/XHeight 441 +/FontBBox [-173 -215 924 694] +/FontName /RCISND+TimesNewRoman,Italic +/CapHeight 677 +/FontFile2 216 0 R +/ItalicAngle 0 +/MissingWidth 777 +>> +endobj +189 0 obj +<< +/Type /Encoding +/Differences [1 /g3] +/BaseEncoding /WinAnsiEncoding +>> +endobj +190 0 obj +<< +/Filter [/FlateDecode] +/Length 160 +>> +stream +xœ]O1ƒ0 Üó +ÿ µb¡ C+ÔöÁqPœ(„¡¿/ СÃY:ߝ|–]ëÙ%Côø¢Ö±‰´ø5"ÁH“cQÕ`¦ƒ•‰³Bvwޟ@°Èîü¡g’Ïúr-«j¡7´5O$¥ÚÆÚV›?éŒötVíU«â?•Í%Λ€kŒÄ©4-MrÇô{&øS°A|(éS +endstream +endobj +191 0 obj +<< +/Type /FontDescriptor +/Flags 4 +/StemV 72 +/Ascent 631 +/Descent 0 +/FontBBox [0 0 485 631] +/FontName /KPSHBO+Calibri +/CapHeight 631 +/FontFile2 217 0 R +/ItalicAngle 0 +/MissingWidth 506 +>> +endobj +192 0 obj +<< +/Type /Encoding +/Differences [1 /five /period /three /one /two /four /six] +/BaseEncoding /WinAnsiEncoding +>> +endobj +193 0 obj +<< +/Type /FontDescriptor +/Flags 65540 +/StemV 95 +/Ascent 681 +/Descent -14 +/FontBBox [-12 -14 638 681] +/FontName /HSAEUE+TimesNewRoman,BoldItalic +/CapHeight 681 +/FontFile2 218 0 R +/ItalicAngle 0 +/MissingWidth 777 +>> +endobj +194 0 obj +<< +/Type /Encoding +/Differences [1 /one /space /S /c /o /p /e /two /R /f /r /n /s /three /D +/i /t /A /y /m /four /O /v /w /period /H /a /d /K /F /u +/five /g /M /C /B /P /I /l /z /h /E /x /parenleft /b /parenright 48 +/six /underscore /T /X /V /N /Q /U /j /k /hyphen] +/BaseEncoding /WinAnsiEncoding +>> +endobj +195 0 obj +<< +/Type /FontDescriptor +/Flags 6 +/StemV 137 +/Ascent 728 +/Descent -210 +/XHeight 530 +/FontBBox [-45 -210 824 728] +/FontName /KFOANT+Arial,Bold +/CapHeight 728 +/FontFile2 219 0 R +/ItalicAngle 0 +/MissingWidth 750 +>> +endobj +196 0 obj +<< +/Type /Encoding +/Differences [1 /bullet] +/BaseEncoding /WinAnsiEncoding +>> +endobj +197 0 obj +<< +/Type /FontDescriptor +/Flags 65540 +/StemV 82 +/Ascent 625 +/Descent 0 +/FontBBox [50 0 550 625] +/FontName /KPSHBO+Symbol +/CapHeight 625 +/FontFile2 220 0 R +/ItalicAngle 0 +/MissingWidth 600 +>> +endobj +198 0 obj +<< +/Type /Encoding +/Differences [1 /F /i /g /u /r /e /space /three /colon /M /C /B /S /P /L +/D /v /A /c /h /t /T /R /m /o /d /l /s /a /quotedblleft /n +/U /quotedblright /E /I /z /p /j /b /f /parenleft /underscore /O /J /N /parenright /y +/q /period /k /slash /w /quoteright /comma /W /equal /V /X /one /two /x /braceleft /H +/zero /K /G /hyphen] +/BaseEncoding /WinAnsiEncoding +>> +endobj +199 0 obj +<< +/Type /FontDescriptor +/Flags 6 +/StemV 116 +/Ascent 764 +/Descent -206 +/XHeight 560 +/FontBBox [-29 -206 943 764] +/FontName /WRTXTL+Verdana +/CapHeight 742 +/FontFile2 221 0 R +/ItalicAngle 0 +/MissingWidth 1000 +>> +endobj +200 0 obj +<< +/Type /Encoding +/Differences [1 /xrhombus] +/BaseEncoding /WinAnsiEncoding +>> +endobj +201 0 obj +<< +/Type /FontDescriptor +/Flags 4 +/StemV 121 +/Ascent 722 +/Descent 0 +/FontBBox [62 0 807 722] +/FontName /KPSHBO+Wingdings +/CapHeight 722 +/FontFile2 222 0 R +/ItalicAngle 0 +/MissingWidth 500 +>> +endobj +202 0 obj +<< +/Type /Encoding +/Differences [1 /numbersign /d /e /f /i /n /space /M /c /b /s /p /underscore /T /X +/E /V /N /Q /U /parenleft /one /u /parenright /R /two /t /y /m /O /o +/braceleft /P /L /D /equal /zero /comma /I /A /braceright /semicolon /v /B /S /r /F +/a /j /three /g /l /h /H /w /C /x /J /six /asterisk /k /bracketleft /K +/bracketright /G /z /W /four /q] +/BaseEncoding /WinAnsiEncoding +>> +endobj +203 0 obj +<< +/Type /FontDescriptor +/Flags 6 +/StemV 137 +/Ascent 657 +/Descent -273 +/XHeight 437 +/FontBBox [-66 -273 709 657] +/FontName /EIZJKK+CourierNew,Italic +/CapHeight 584 +/FontFile2 223 0 R +/ItalicAngle 0 +/MissingWidth 600 +>> +endobj +204 0 obj +<< +/Type /Encoding +/Differences [1 /D /e /f /i /n /t /o /C /m /s /r /a /S /space /A +/l /F /d] +/BaseEncoding /WinAnsiEncoding +>> +endobj +205 0 obj +<< +/Type /FontDescriptor +/Flags 131076 +/StemV 130 +/Ascent 728 +/Descent -12 +/XHeight 530 +/FontBBox [-10 -12 868 728] +/FontName /DUCRGK+Arial,BoldItalic +/CapHeight 728 +/FontFile2 224 0 R +/ItalicAngle 0 +/MissingWidth 750 +>> +endobj +206 0 obj +<< +/Type /Encoding +/Differences [1 /space /period /O /n /l /y /E /D /M /A /m /o /d /e /i +/s /u /p /r /t /f /h /C /B /S /P /a /W /b /c /T] +/BaseEncoding /WinAnsiEncoding +>> +endobj +207 0 obj +<< +/Type /FontDescriptor +/Flags 4 +/StemV 156 +/Ascent 764 +/Descent -201 +/XHeight 560 +/FontBBox [-41 -201 1043 764] +/FontName /WINDHK+Verdana,Italic +/CapHeight 742 +/FontFile2 225 0 R +/ItalicAngle 0 +/MissingWidth 1000 +>> +endobj +208 0 obj +<< +/Type /Encoding +/Differences [1 /D /e /f /a /u /l /t /space /m /o /d /i /s /M /C +/B /S /P /E /A /period /N /colon /n /F] +/BaseEncoding /WinAnsiEncoding +>> +endobj +209 0 obj +<< +/Type /FontDescriptor +/Flags 131140 +/StemV 151 +/Ascent 764 +/Descent -17 +/XHeight 565 +/FontBBox [-44 -17 1008 764] +/FontName /MFZMRR+Verdana,BoldItalic +/CapHeight 741 +/FontFile2 226 0 R +/ItalicAngle -13 +/MissingWidth 1000 +>> +endobj +210 0 obj +<< +/Filter [/FlateDecode] +/Length 36412 +/Length1 57944 +>> +stream +xœ¬¼ |TÕÙ8|ιwöíÎL2{fæΞL’™d’@Â@n a ˜([BM“°ËbY›¸A7Ä bĂe’h}ÕÖª߶V­-Ñ¢uKK-µUÉÌÿ9w†­oßÿ÷}¿ß—ËyÎzÏ=÷ٟsπ0BHƒzƒfEJ‘ø÷ÇûÌ]¸ª½3SÿpBø½…ëÖ¸SÑ?ž£ É>XÒ¹tÕȃäI„¤%KWnX’ï\ÐË·/ú}åŠçúØ Ë ÁðWôi¿‚ºoÙª5ë³Ïƒ:“³²ca{¦þÒgÙ~ºª}}gNô„t4ºol_µ8;ž®‹ïìX½&Sÿ˜wg÷âÎÊO¡ñQHu’»’Ì@.Hæ~dG(ý¤³>KMO_¬@ÞÔòô0c„»ŸÉ&„üh7ڇ|è.A/£Sh::€jP#ºMAo£#H‹6à7‹¼¨D~ìBMFf,A¡÷Ñõ¨}‚†QÕ£?bÌS‡:‘ U¦?X¶¥Ã(%š„~ŠNà•xŠ@y*)ÄaxòÎô)dF¡ô[é÷ öúûÒh*”>EzD=èd@ËÑ/Ó(Ñôތ?G×;ø/’÷`mõh-Ú|õ`ï)tÇ%¸„˜‰°eFùhôíDûáùCè4®ÇÍø~‰Ù/‰¦ªÓ9éÜôŸÓiT€š`…ûÐKðŒó8 +cà Œ‡YÃ:Ù5’Òћá ¡GÑiô¬ã€÷ á¸>"?"=éyéƒéO`-räBcѵh>ê@ëÐMèÇ@՗Ñ+èoø{¢€‘o³¯J6JÎ¥ïÜÐDX{Œžsï* ¢$\ïÂ[ê±Þb,¾_‡—âx7Nâ÷ñûDJxÒE¾`Ì̇l…D’®‚™LÈ Ïõ¢yhPàG€í{á}¢WÑë8p¼Ñ»pÿ7d©…ë ò6ù#s;³“½ ¹#5œú2õ}ºɀ˦Ö¢ŸþŠM°†|¼¯Æ‚•ï"Ï2Z†c¼L9SÃÌfš™mÌýÌ/˜_±Ýì!öÉ4I»ä¬=ucêt}ú6ÀFRXW¢24øg pÓ +X_'\Ýh3ºõ¡»_îEýè¼÷Iô:ú-úú +(€0k¾ž¾ +¸îv|7\áÃø%ü*~„¿¡ñÀ"¤šL"“ÉRr;\÷“Óä]òã`2=L/\{™cÌû,bY6-)…kªd‡ä)鲐lªlüÍ #££Í£L¡”-õƒÔîÔK©?§ç¦7Àúý¨ÃJ·Â*Ü×O€¡×ЛèwâZ¿ÆK€ã-Ø ÜPT«ÆSð4¸fâkáš×<<®v¼/ƒ«÷â[ð­ø6|~@¼öÀ»íÇOãcp=‡OÀõ[|Š¿À_`bÂ7ûIDH%¼é$2…4ëàZJ:àê$ÝdPè)2DŽ“w#ãgŠ˜v¦‹yˆù)ó2óæ[–°…l„³sÙ¥ì­ìÛì;ì{ì÷—¤N²L²Wò²Ô.-“Α.—î‘‘~&½ “Êe d›e¿‘¥å~ÐV?‡÷>Š®ü‹HßÆ«%9ìzräÂÂtJ¶â9€1)™Í¬dîfþ[²ŸcÜøÜÇÜÀ¬H?ÁL&ÿb:ð\r{—¤ŠY‚îDi|ˆ|DΓ?³¹x6ù‡Ø{ðs¤ƒ™D¤ô!’_³¹ì­ÐÑäw¨ŠlÁ§È«Ì­Ì­éŸ¡*É^|F²—¼ƒÜì01¢3 Õ[ɃpÓ¯È djbË$ߣïOKÖ¾'m¸€ù »}ÂxÉßñ9¼´Æ[x:ë#?$•øhÜQìD#¸ u␀ŸÇÀI„ñAæ)<ƒ¨Z ¢ÁcÀ½Åðø7Œ5Ó5âÉōä™Ã¼ =͔c Zâ¿ÑFÌà(ðÎÅ¿º$à~VÚä׸YЃ ïϧ^ [òždðÙãL!ºEQ yUl|Wº•¢ÀƒÛP”ìA›Ó½xèý™ ? Jâå(‚U -Í°¶°&â]Ø +Oýèÿ_‚Ö¯ÇA7a7HÖ)biϝlh¦6п;àZ„Z ö(ºWzTòkԀͱîÔ^àòÑÁæü žoCqXß|ô8[«vƒfî‚;MME\w 70A[`Í@ÎÙ© yw§—ÃÞ6jØÄ×Ñ éÑ$ Ýué[Ó;Pkúñôõh)š•>úw]zU ­’f2WfË@ǾŽ_{ô{¼ôöTôè#?¶ /àú)¬‚äyÔÇþtguúÎôoQ.àÃZVô,Z…þx›ÊœB±Ô5d =™é u]›~*íÂJ´,½4ï h¿Lº§9%ûww°KH֛L8­×Kö!$Lœ3[¨ž0>>®ªr옊ò²XiI4R\T.È~Ÿ×û]Î<‡Ýfµ˜M9FƒžÓi5j•R!—I%,C0*¬óNns'm 6à:µˆÖ½íÐÐ~EC[ M“¯“p·‰ÃÜW`ä’)dF +—FbÎGñ¢Bw×x«ÖëNâù×6Aù®Zo³;1"–gŠå]bYež‡Üu–eµîns×%&¯[ÖW×V Ó ¨”“¼“+‹ +рRE”foç6OÀb˜ëª’k`Q ›·¶.aõÖÒ$]û¢DãµMuµvžo.*LàI ½ È;1¡ ‹CÐ$ñ1 餄L|Œûú6h‡{ ðTߝI-h «yµ_ߔ`ڛé3ôaxnm¼ñ¬år&7LjÚze¯é«³Üà¦Õ¾¾­îDÿµMWöò67à âŸÜÖ7|' °~–žEnonJàÛánúô2o·Ø[G[ږ» +ïDï²¾åm@[_]·´Ù„ãéad«s÷Ínòò‰j»·¹½Ö1ƒú®Û0dÜÖ«{Š +8}­Z]¶ Ö\YX|©O,‰Ãi©þºKxÅtEÞiÀ ÷B7¬¤É ï4–‚ÅcQß±0 þš1ܕXô¸!¡˜ÔÖÇUA;GïOHüœ×Ý÷ô÷Ž|uuK{¶Eêçþh‘rÉ%Fƒþ‹åD8œ((  "›…5NëåE…ë’$áíäܐúP#ල¹*ÈçyJÞI-€J¢÷Ú¦LݍØ‘ 7'Hí9u±'wíé½Øséö6/ðñ³ˆÆ¹ yàÒ?g2Ö-«J`Óÿ¥{q¦¿~–·þÚùM¶,nëg_UËô½Ô—-áL <ÁúSÓ¼Àz×Ío¢ ðOâŸì­»¡m*ˆ¬1aœÔÄØIs¦DìŒ8ðïõ—f¦•&5‹õKEþ_””ɁÅ잜àÚ¦f`³’çÿ_ޔLŸ£w‰Ùå۲ +_]wUýªå©ûX0 õ³ç÷õ)¯ê› ʪ¯o²×=¹¯­¯=™î]àusÞ¾ãLÓÔ×Y×v‘üÉô‰öÄä;›á%–á*`m‚&xñ¶k¼mÖü¦ã—¹·Ín$˜Lj›Ø<àƒ¾¦ãí b+¡­´‘VÜ´6¤bÈÅñöãB½b/+6ˆõ…IŒÄ6ùÅ6Œ&I¦»ØF Í´ bý£šbÒì¦+y@¬æ"Ñ)€¨•OÕ¡yú~Íwg8±åª¿Wi‹f.ú¬êcà{ÄA|6¢[?Ä#DŽ£ÙÌWCL«º&—9‹Ú˜ÏÑ>æt‹8há T ©ÊiH’ô)棡ººR! y¸XÌCù¥ÇiÇ ÍQú3æ#r¨Ñ—„?gžƒpÅùÑlÏÑ!­¾Õ¬fî|œxÒ0¤sXÔÁ<…z í„t‹t]"h sˆ9ëÜ÷ëF u@Ú ‰þÚWPÈd–ƒ‡àbî„=òÌ}bþ$ä6È íG1Cæû²õG §ýgÛ‚º ò=ÙüAh·C¾[Œü]ÌÙú:f­xߚlÞϬtº¸'ô»!E!1PºJ÷êÁÃ])>iòRÈWer@זAÞ+ÒhːÙZÚ(ݨߘۘۂXèÚ|qÌæ̘"f3ŒÙ c6Ø̀•(³ž·†rÜÀûjÀ;mO<é´Ø~À]úi¹ ð˜«ÚÎ, ¹€É–U +¥ÕσCaÚ%Cּҝ—k +%eDȵÙ\GÇ.{)Ô´uñ-/“è5Zf!Ú‰ €>Hej!±ÌÂA_Äu‚¹­’#Aëê!=LÛ#a£µØp’)Er,i`ŠPä»ZãxL›¢SÑ«`8…[UŠF…¤bÝ ãb"L5ÓÀ´2’dúÔ ¬*™0EZÛ¥êW%T§T§U’„ô”ô´tXzN*qK£RAÚ(m“vJ{¥»¤ýRÅ.é.iSuªzU §r«¢*AÕ¨’¸d¸¿ævf•r€¤NH» ±€ãVhw3?„Ô +ÔhTüÚ@5Òi(C.šÆé`œZuЪƒVö4BjƒÔ™í•^ê¹xŽö@ +B¯Zµ€Ûa€çh Òt¨i ¦šF&`…@7¤FHŒØ6 ¸àžh¶¿ ’Tì?'Ž¹Ø'Ð{É¡=x*'òq>ޕ…xuM©à`0Z½­þÖPë~¶ÃÛáïuìg¼ þ†PÃ~¶Ú[í¯Uïg#ވ?Šìg]^—ßrígwÎ82ã䌷g°­3:fôÌ`Æé†ÃÑR1÷øi~tÐj+£«GŽÀë´Üé $¹F UCê€Ä’#]äh}ZŸA Z!IàŽg¨zèÊöÑö}b-Ñ~rU?/~x°*ÖP3Tn+¤}˜û0ôGgJGÄöÀa±½!;¾_lw¼x +n¾¨ææƒøÍå?µBê„$Ao3óÀ8Ì£3tAê„tË̇k3<×ar˜)4%¹.d2!2èå\ GÔÀ|P„{D¸]„Õ"ô Úéšo¦k^œ®¹cº&‚ Pƒï!/¨j4ÏÖhj4ù5˜ÍŒx¤!¹"”Rˆ¿á5",rxÍ·¼æï¼æo¼æ1^ÓÅkÆóô>È®†äˆPE!DéNa@P¹4¯¹4ó\š1.MïÅðt4Q„NÚ)Ä_?««Õ!ÅóøkT 3áÁx¾ ̺˜áô`¼²Ô`| +d£ƒñ½}7¿Ïõþ‹& 3è;ëªÉÅçñ4–ÖÿžÍÿ†§A¼èÂç _ +ùÇ~ȟŒßLÇ?÷? õ#œŽ"ašïÃÓÄöDz÷=:X¸žúÈ`áxêèP|ꃃ…g¡õ¾ÁÂíÝ;X¸²ƒ~ºÀåƒñW/E>BÇ.D~BW2#ûÄ©0óJȧdn®,¤wÕÒ$ñ¤Ao dAºÊ°5Šs zŗÌC^q +òŠ‹¶#¿˜k±N\¼yÄ\>è½f‘>ë?ëúgüyúâèX7¸×õ§àýæBõcϏ”v\ßtLˆïóüÕìnÂk௮V|æZÈá­®Y»šþ!xÀjH™Ç…׆'5ÕxÐBðv1xæEÈÉ )i$ ú/€¿†ô'H‡Ä¢[Þé HC´…)bŠê,7ÔÒ'6‡©Ò±0¥CÑòÒ±IÈۗdòYó3yÝ5™<^Sj|°:¦¬ÑãÑ €¿„ô¤/ }I”2¥âäk3\Û¼­cX>‚Ê +V‡×à00E÷šÕá0¢‰28P††ñÕ|ðêµP ‰­«émki~ñvÐH›€aCu™!Ξ9@ðóäEðUeää ’°Iòâ³ RÊhá(FV¹Trú bp>Ràø‡È澉Æ¯áÎÇgŽÆQ5”¹ J¢¼ž×û`‹.¸™S ú¹ÙSð¬úôG’ï%+P ¦áf!€ê‡ë W¥Z…]å6iínktJA‡|ÞXÇčv)[Šë©ûšc*£¹P¨5”å ±`´~Rp¬ÍіßVºx|géšñ¸ÕjMØ(PZ“ïPkHTšÄ3ÏG΄ †-,.ŠFd8æ(†'kŠ’=ˆì»Ÿd®}vìd/£H’AÅMyÛdâT%€¥$Ž¡º€ôgàµLÀ?GV”O^{ÎQíª7›mš$¾U0Z]¸¹­—??n ÃÕé"à öÚx«µÃÚcÝiÝg=b=i}ÛzÆúW«Òj*ôÖ!~ö|07לo™9r¾…þëæF¯©[\ûéLîüý÷ ”â•áFªG΋¹Á\‰!mÕ‡·p¯`½¡þ‰‰{½$Š[€¸]-¸¥» ó¹R)‘™L±ÒŠ1f©Ôë EX^V1&pLE¬Ô”›#•™ÌåeÁ@Ð_yÀë‘æ昌: +p7›‹Ÿœ7+qcóSêÚrüþ'W]÷ô¢Í?ïÚÿòOÏEÅQÜ®^¾‘ÎÕlEß­$êWŸyŒ"BMqqMÍË",Žt^&}–LŠ2è:A$o¸–V!“LPÐ&‡X6è p¶KÈq3Q¦édú™aFÊ<Ÿ!o°IÜ1pFäîó¡ñêøV‰¨J¢aŒ½˜LHå6â/%w7Wò˜ MOÆ<'Y†8äC'Ûån]%’\ši4¶$Ö … „mþÀp€ èi³¶u ´õƒµúO`' 6KM¬–®ofŽdÙlÒaöy}‘Ì`"•ùö<»ÓÎH_°XÍV"åYýä’Úà-”Lj(ù°{¶Ë¸ÜȪ :vˆ© àfc™*0³IŸCÃÁÀÎ,ªº +=Õe" ‘éw®™ßöèæG¶ýzÁË7¯z¥®²«b³8ê«Ì¯ª-ŸZFö~†®«Ù÷jêÈW©c|òÒ?SŸ <ÐÞ}W~öÈê(?~VêQ Ñ90‘RÀ˜ =(ä–6K¿eØÂ"‹`!ëЈhkŒø°¸yÀ>Ò²Ê^ ð¿߀LЂðׄŽ:¢ X¢« ƒNàÂði‚A«Õ úò¨®G·KׯcuVó âÃg³È Çgr#gEKP×S©Dÿ¹€ÿ‹Z¥«ÅèésL&s._>”SÐ÷?‡§óÆøõ)Ò6Ö¤”ùmþ‰ìÏÿ~k÷X'ñûI^ÉFòáýn§‹òa!¼ã!xG'^&Ü"³¨*ÍÇø2‹ÀJÎi2åËâ²i²§eRÁýv¾üæù–ò5ú5†GUiÒVÖ¾.yÝü Ëûæ÷-ÃîoÙo͹F³V‰=×j²šó,2…YeQå•Y§X·›wºe+!f›Um•j+‘H-fª…,˜Õe‚B!䨫{X‘db‚š“ØvZ15¤Äz‚‰âîÂDíLâ» ’~Ü`l5v{Œ¬1‰e‚‘~³°!·àîu3mî~7q[ŸÇ߂œi° 䴒ÒCv’“ämr†ü•È‰Õuß}™ŸÏÆ3Ý2Ċ£‚52ÚÒ¯íÒÏíTà“Š·µt5‡ÏR&Rì0á2CžÝb½Ë +ýÍÚøVN²å-ˆ$îênŠQw-Œ¾¡ŒÅ•y+²&H*#2¾´¢b s¨õÂ0nÇî½7.Úð[ß~dÿ¢Ó|;/X9o² KRßûñD¼ç雬í:þÚov-]ú㣩sc¹êõÎ)Ÿ ô,Å3Ž#ezxP]© ®S\]Y£¨SNVÕ{Ø·8?l¾PÖVövÙpÙ?•2T†k=ލÅ?ñ÷(~½øŒ÷Œÿ÷Å_x>÷«§Éó“øΡPˆCIrvètG“LÙQF™°)‰÷Í‘²¼$ž4ÄiòCÏãe()ȟU#Ѐìi”J¨±:‰wA{QoÙUÔ_DŠ ýh«¬Þ=I>”Bî/;UFÊ@ïMxN0ž4£5FÎg—$Rg¤¥ë<gÁÕé®i1€¡uPEqÄPêX©‡÷ò>ÞϳR‰_(A¹Dآةƒ¯ +.ÀJE±4º»4yTÛpñ¬{]p3ü‰2֍ºÀY¨uÐÉ$‹Ï)3Õ>¢Âç¥rH)+[V5pÛó&žØÒÛyoêËí #¼Õ¦_oö,yÐks…w_ãnØ7õæ¶G–±Ó·?°¼aþý{KŽmJÜ|°6˜W(—TKU{W6ÔÍ Õ8•?¼­aiϪÃÝ ­ÇºJ¤A¿B& DüuAÇ:\ Æ¹2P¸˜QH¤˜U«4ˆUkX©ZRå 2yŽL&—3¬Lª–#—kžÇ‚߯ÂûKr©T.aÕjöy< äEŽ—*…BÇà}̆0IüOÁ‚«EñÒá6ÐWÃ:F'dXfÕ^!C]q‘Bq (~ÊÑ¡º2…?v´;®¯Ô‹³µ8Ìf]YN­¥®nœëÕ{õ|9ŽA†™ãÇö¾LÖÞ¸?åÃçïN=Œ—ô2·\¸“<>ÚJõ×à÷ ’ˆÇNaғ,64;opöHz¤=yw²wåÉÊI9?‡™ãžÇ¯p¬“lpl%}¶>ÇÌAE¿wØ«C^¬ãôc®É,ÏËËPTéÝ<˜\ÖÍÛìFfa%кoÈíæ'@“X£8Å#ò1ÏCyO@v<åh¯¬Ÿò1þð± Þ6/ñ‚€|{Œ#ý<æé$‚Â-pýᬞøü¹ˆ±³- æ¹Š‘µÏ^òüE†­OµÌVyqXèB´’Q4‚¦w“n÷-ør‹[ +‡*Ð3C ªl‡a‘³Sҙ'ii'KÆËXÊÁRé>V–ywƒ˜ÙpMjY3VËì)P¡—Ž#6=¶-Ç7¥åÁe±Mxsp]áæØNv§¤WÖ+¿E‹agÎNÓv·ü~ýnÃ#¦g‚ÏĒì1ùçª/ԟk?~^š/Ó(‚U¨-•ÔʑÚdEÀ™E_\*)¢™Q“W£½®Î§) +et1‡Ê…r"”·•÷——³åÞ ƒ(PF͂y—™1[ËNà¿d‹¸Á *•‘³ç3:exL£.`òÒpÄéћXy®Ÿ—xÁ—å-À…9 P±,¢‡é¤îxØT´EôEVÏò:µTÙtQª.‡l2“9ûiە[ fãōj-ñöÇ[Þ|úÉ_¬<”¨œñÁÀK+çnÀ%ë…uK–ô–—TÌj¼kÕÊ[SÈ¡ÛúçÞvr°{ÆÞÛ®YÒµó í«ç¼»rKà 7­k([Iýyòþ¶›Ù8ojårÐAׂ$ž0£ V ±MÁ÷%¿ó¼d—±$[ä7©×k6orïßjT*ä;óÉ8¹$hრãô³H&9" ž 6‚eÍ$("þ?xÎÈIÉ£•€ŽºóY³i,TÙ°î9dà ncHâÅ ò…üÞ|FÈoËïÏÎgó1Õa< ”'•Di ]åόdšÑŒÖ¯Î*'îüˆ¸Ãcθ–"½ +ì>¹^àüŽ€7àÒð PžŽ†Mr(¹UNˆô< +ÿ•*‰J´ fõÉhþ1Yg†€v”@ +‰ªiå-Ãïä?Ö³óÍ%›^{ê¦{ÿøÚã/’˜a↙Íw4×´ÿÈá'k±ïÈâ?<7¸ãé¾CßœÚpórrü–kÚ?Zß¿÷×7Í-¤Q7DÍ»˜è#3š8ÀX駨<ÍҊ]Ö~þ$SƒB× ¹L—íÊíÏ%¹/`?؍ÿÆ(£=΋¾wvç"Œ¯§W†Ö< ¨!Fj&ҜIdbìâšQãÄLi"µLw§Al=ëñ¢…‚÷¿¤_ZñšîQkìÆ\N¡>fQÓuå$™k—S°@œ¯S¸ ¸¯°sU:ÞÅ÷ò ÿ »ÕGC} ÝÆàÄÈ{VáΊtI…»®Z0ó¿ìm`[vñ?ü÷Mf@Ȭ]øî»ÿ¹ÝAÐõéO˜q’s£ÏŽ*äº(!Tُ–—E¢Õцhkt³b‡b¿z¿í »" Wk´ gb$¼‹Å:­QIár2ÂðL °Çˆ!p:vT9ÙÊ @Òu‚Ý+ä«À‹GBÙÀ™<¬ËÃy[Ü*Ó§…Ñ$^õ\@pF IáóDƒ" žÆ ñÒ M`âOÅ Ì®.ʼŠ›oâàÅ´àL˜d®D➥ùâÖ0µÍ쐫í~•E“‡6YV›•yXî€2< ü Ѕ!Rs…6¹„ß +ƒS#•]ɯåËJfÆ}[Ì[/æ ê^>ð«ö©5?¸§&7Ë+XøÑþûº6LèÙ}]Ô¿Òá+™5½ë§ë›VL{xٓÛÏ×DĽš$žDC’àہ\Ä2@DëeÀ.'qæ!ðPž ƒ§ó"ó12C’AR2 f9q8ÜaÊC®N܋ Ær‘£H5ò·N¿‰På^Ñ'j« ¤Õb£6èi(ð<¸Ü£qº¡Nýê­-ÚbKx+Äëa âF0wê­ܖWâ²8üí˟»ÁÃæe¢‘ËåˁOÇàÎìˈ¯"ÌÓ£¿Þ3nAjÎklþƒ¿WÙ2kôók+C7~ú~í݆ +"óûu–è}ìõßïÙv­Äïg‹ùÂV¬!¾Ñ©¿ãAˆý¼<' +£±d‹æ;·£mÎí±‡lÛ?·}üsD=m nˆ=\úPl¿ï'±÷lïß )Ùª$ùóniEå +‡§ŒæŸrÍe1/`u–• +Þ{^Y­¯Ö¿Ýö>~×÷Aì¿Œõa¿¦”cr¥v[ŽÓä3…r£Å¥u¾éeóp“u~p7Ñsˆ«šƒçûÚª:«z«ú«ä¶¨­´¦±ùœ!k„•Æiv6Ķùö½“¹«„ªÆª…d!Ó&i“¶Éڢ뤫m«íÎ5¾ÕÁ¡Û¤wØïpîŒõVý2òAäKßw>k³\ç²+x粛xȯ¶•‡]>Ɠ?¶0Æ{Båå +S~Èl6‘âå”]WP¶¯*³‰4몮)£Õ¡I“Å\ȁö­¬tFÄ1‡ »Æ–Ю®Ü €K€a–ai£R£/C,v³œæw¡Ôh$s +Õ:… @ð²Ž#stnZÕí­¬z¿ƒxԎ-HüøÇgŽïŒ¶t…[ºèWƦès»˜4‡¹xœrh÷ˆÈ`Ý璨X³ÚTŸÑ£t74iM¤Ì²8±Ìf·Ú‰TðÓ „,ŽÈJbØë Ę2\c‚öüŽJŠcȟç‰!g)S¿‹‡ãW8™=Éqww7êîºäü!º••qó¤^¾’Lý1÷ҐƒÁIræ¨>œà0—djŽîÔìÓM’‰‘9Œ0Æ¥Üá#zìÒWë‰Þ&*ân ÖY\bÙÃ2Í¿h¡èG„[ºÅ=ôoº»ÀYï¢6³ë|ËùO«G¾:*‡ú﯋äuçÚ¥j™ßPL~©]Q„Ô¹äVIVš5E]¢\Æãë†8Ôè‘Nrs Ùρ¬×MsƒšMJ¹1ì;.ׄOßúÁ–u#{nûåגԹçSGŽ÷ÃÕ?»ogÁžcSIV¤bo۞ú͙dêë]]sŽüîą7ðì秚Œö(µ’^°’t'ƾ.#4«ìª¼;¸¸ßr’uܺœ­ÜãC¹¯Û_Ïû '·è 9yNF–‹·Ú¶9IH.uÙD|.»†÷šy«+¤Õjˆ5d2!¹#Þ`À;j C2ýÇc‡†i^*‹ªË/v{q§—îè0^Þ,J£Y”F³ˆn3¸^j¤Q*6Jm´Qº×Ӟ¥•ÅQ‚/ÞþF$Êe‘«¼(b›S—ËùsNc.¶åÈÓ»æb»Ñ:÷"úéHLKWìjÁp³†\N&僀uºä›ë39¨„péðK©µ¿ï™û.MýêÜüÕþ1üjfe»ÐߗzñשO^üÍžŒÍ؊kó(¯€=x0ÃBµP¾Ôq“ã‘èӖÃÑç£Ãåò¹ÖNi§¬GÞ£è•öÊvÊw*>—=÷ø]ö0ï• !r^«u)ìrE%O[d‘T>±Ñ'’Ê··lø8Þ*†”L"­@fèÇó³£@®–‘¸¸WÏ}²”hÚAUÆGãÔ1çF¾BÜ?Â8›g¿Ÿ€_ÊS ˆé½âæ-O¿¥ÄÄoIcbLF±]& •%(áø`M°Lê÷kµ†ëæ¤ÞåBc?]½,:¡&´öû/£Ñ°Ûló͎²¹º`n¬4´XBF?ó¯I…:¼¡TÍü Ù™°%uØo愅L×Íΐ?õ»¹:JQ(J5_„ B‘$v +cü‹*¬B™ˆ0{Â'¯…ßg~þœý\ù=û½RÑ)é”ö{%½Ò@c¹L©( 2^­N†‘Ûey.»™÷H¨´%_b—jEÛétÙ¼7\RÊÕ¬„©ýæ"ä  "!Ji0 &³<FùåG!´í„ˆv—Tê’á>)†ÈG…b¤)©‰¦)©õ8óDJ才y"%óöÿ¡;2/­KŒzi¹D¼Ì1JÂp–z£s !=ðÁ–ž’ ˆXL¼^=D± Øb¹WØ¥‹ôƒ~üÄ?ç4hü~¬«ý§F LÉè‰èì€E£tS0Óxmu‹—Ѿ¬ïH•7L÷§æ.å­‹ß_âÞȬ̔Sï¶6‡(½¦‚µù X›2Ü"ÌV²“‹‰5h ÎÂY‰»B¨h«X/ï´tZ×ì²ì²&, «ª(²NµUÅX*Šmw²Ï°Ã¬š¹Cuª‚™*ºXþî1PªyËDû3$Ú<`½0©äáB³Å⑆ +mÈ£Àa—SM1ï‘ì”R$;=z}£a—è Bug!m` ,¥†èÙgEš$ÿTÊxcë®GèœÀÑiíL+_ԗ¥(D³HX$•Hµ³bxN©Ä]´TY-YæË8¹?Ì©¯‡Ý.N/ +‹Æ €skÇ!EPZ„U~mQvÂzæâ‡^ф…E¥®5d@E7u±3–LO݉r>—FÕ¹zðCD³‚{iW{ û9}ö†S£[»vÿ½·þÎWÍuDc½&/gõðöÔMo>4wÉàoLßÐ1Öh´3`âf÷_»ö­gþúrêÔ?Þ¶¤šÊü«Ríª.üìŸCOþ× ó,ù¹ÞPžZ»Ç@RëðM™ˆð¹)Eò'Óߥñ—%Ó-–‰¼_&’¨Ì#m6bH;(/ždú3A8Ðc«á ’̃T)©©* UCŠCŒ©|¾âñ¤Ø¡$¨:"F–oA@ùÕW"Àj’N½¦ù§J¢a»ÐÕ9¥Êé)ÃSX㔽¡¢Š8NÅ{<.»ƒ÷”¹ìż§ÎeŸÀ{ˆË®ä½F—ÝÎ{ÁpñÞr—}<ï x}>û„ñãU*%).*r8ìrƒÑC>ãÁnOÔÓéé÷œö {¤ž$q 6nJ۔SS÷<¥Îï)o,k+#e{'·h ÏäÎwÓ£d\W·¨ ÄCeÙ( ®Œ*¸è•fv„hÀuY¶E6>øwáçÿwu½ï'ë@„£QR+*oP…Ñèè ÑYëhŸØU2ú|VE@©$‚#÷;|Û²Œb0s5‹.ÆÕp«±5‡,2wšoWҝòK õ ~b“g•'¢Èdqp&+Á$š#äÆœ“d”G­!"ϑL'¾7Î?KñA Oqâð(Q¹ ß)ß'?"—œ”Ÿ‘§k$‹¦/„M&6ÿðú‡}þ$)â‡L#¹³-¢SÒÒÞcG##-]ÕñÌW΋¾#g³+Õ6µcV)í*ë8v,.ê9z2 ËxsÒ˛´Ù¯EYì¾)"Ð2éÉ5?\iå ݱ Ùgˆø”E$ŽÞðЋwµÄK¬®‚TLœÍ콄Sè«÷§“HBHnÒ¾¨%+îAkÉ&íºè†ò'•'4òUغb`Á +2‡,&½d»°‹<$ ižÕžˆ˜ô[ÍïJ5f´DJ$¥;ÐÖÒ½è0î×¾S*W!zàJ¢v)œšäÇEµ¢Aq'z­ì}ôu™N¡²ª¢¸œÄ„‰BcÝüÙ/#ǔ‰‰o¡Ñiüò.ó%úŸÃÿPžS­±˜b¦²²ÒhÙlüº_³»ô2EöËÑyœqg]m.ʍm1A‹Éj·H-òü€=8.H¨ú}U4Bî Û…J©Ff—R+Ë{".{ˆ÷ÄkÆÛã–µKt¢Õu¹ìAÞ;®¬Ê>#äÑjr ©AˆnL͎–åD£ekÊj$uQTSÆVi0¡ÿ¹L¦íԞÔm@ÆÊd&“õ°%>n\(_U•Ÿ8´˜ÍR©$H$òø}¬6°½Ü)Á’$+¨M£†ôjpBƒ5Iò­Pщ•N´:ÑBè<`ì)7f½(Óνµu/ุµ`½¸µpѵ§ª›_?¾ƒÅ®æ2ÅÑ8wùÊTC-ÀÕÕçL·ÒM1ȳ[b`¡/ï†e+ôÛ„;¨«{R“ ˆÄŠj"‹&±-Í-aúZYa1iª•îœÊÒdzøW)pÚJ ¶nP[‰ eP¬ähíÔdÙ=µp¸9ó} gwÒ2ªñÿ£J×WŒAcÄ­Ú¦%ôhÍ"|~ÓOçnªŠËS…¢È¾x…jšX)tYrÖâü ö‚Rþºp겦£ä\J·©œý Å(Ão§ê¯ò=–Œf¥Ú+1÷ƒÓìïÒT=9ç8H]>øóρԹQB°sˆÃnäƂgYJn"}î‡ÜO»»ÕؓÄw 1í¢Š9äz']ÏðÓ»~¼Gé²s¼×ír£(ƒþìÐsÄá%ŒÄn%I’W„ˆé?¼ +…Rd¥ØªYE¹—oo¹ì|g´Õùóâ!'•³-TY…Åã±àw™™ÛÚÉ dM¬#U°»ù5ß›ëÏCØ%+ç¹9ué­ ýÑ2|“,µË?Ö½†YAÃW?.6\8<˕›S¼6£‹¤_V¢øuá3k‘ܬµjBº|]•Æãñ‘fK^fYÙ`y?yÃòå3ü¥E£±`¥Ye*,Ñ)Æ ZQFj‘DÍf&Œò¡6U™+-åÖòhuiCé2´­³l°®‰ö¡í–Û£¡£O£ÑþÒDé›æ×-§J?4¿o9]:bþÂò…u¸ôôùŸQÿT<Í<927›çF–›×[_³¼}×ònôË'QmfÒí²ÛxO±¨EÀO’óÞ̾$/jê¦#œƒ,V„­ U¢‘œ¨ÅX"8k7Û¬V3QÈåE£Á<ú𠬑bÛÍ÷ó žÚâa^ÊïJq)&t + §sëôtG±D4Ò@Kê9ͤÑ0-€Õ‰¤€ YáÎ8PôƒË¥$[Ăå²?¾ $X<8bp9êjœ\¥Å¢¯´p†J$·Tš“éÓG͕æhNeæ(›˜š10^”Ë«¥’:è_á\э™É£çíþÆh*ë3åhëgá^ü>‹{#ó|&‡¿12z*:Ïký»öº-®¿¿ÌÝͬ›Ê ú¿ÿ=+V/ô]êèû~عô'é/ "›‚ø%¡¾Ï€ ;1&BCùN‚ yI‘q¬q½q9CÒDfôx õp=<õp= ¥«7‡ÒÕk0è1!ƒ'Ç`ð€„þXÐc¥B‰Ý&7(‘jÃ,½ÞÍE9c8PgÏê8ÜE7ƒÄÍ*no¾¸›\].äc7ýÙïp>É7æÐ)ry>êÁ§< ˆÞ¿‚yh0¦ãk¨ýÇ¥6ãe\Ú§‚(*±ÊÐzddköœ„Í•"‰eôh3j¡ê9¤0X ù¸UÐtC+šoè@Ë  à§ñóø¨á ü6ü•`y5#ˆ­»&Ñߟ‘ôÁ!§¡šÐ-sÐæB~v ˜JpTÒâ`6³‹Ù1k%ø¨´øž 3TL†JÂåB²VBèóÞ ª¦9Éþu4§’ú‹:ÿÒÖ3å*ÔÂS•]åUzÿËÄ-;îdÆSŽÁïQ^ò]¸ÅhÆ¢Œ4nü¸¼q’dŒö"«|¿­½ð³KŒs¤®Ð¨@DŒå׋¿5°£¡äAÃAÙÓʧ9ö&¼A¶o“±“äšbrCR…%N)OÃ1ôh¶ÀH˜iy”¾¶êrwžGòôqúëz’ù„<͑Ýì¥ÛŠ3¹®ð7™ýŋ'¦K±žŒ¶Œ­Z_„ìØR„sdP2I Ä)5EØJä¹EÈÌæ¡+‘¾,‹žC<…c*è~§^<mÐsÁÁr|kjcêËÔg©[?<ùÏc7n¿{ÕÐÉo·ßAoGê7©7RËðÝ8Ž'½90mëÁÔ ©g‡¶á\ƒ¯?´îíÒ/Oa1f)Ä돣bxÕûªÊ#Åk-kìk›CÅ8d,ÏùN„~oÿ½ãŸÔäŠCJep\(ZçØÁ>ã¿ûï]¿ÿEIwMùuyËœzÛìX#ٔZÛëû<Öµ†YIKõƒœÖNQ*ïmz°ÞH¥"Õ!ÙR‘‹hTȯÃM²0#ÕâyPZ‚×á;ð.´[þsÝ'HÁê43så̃l’œ"rSˆcó°\Ný—NԋXt\®až¸Ë1’Ë'÷$Æi¡‹B$d‹s·†è4. ÑL þ' :K¿…µ€Å«éϦD´ Š€Ûï¨ÔJ5‘Zü>¯ßK¤®\OÎSØ@xtz¨ò9Î"x+»2…ܪ5a¯€xøâ1àú»ƒì1' õB>_0ûK*k9_µÌÌKFìK½–úó’]³7nÅ}\|;ÈÞÆcwÞ}ãÑVo^ù3]â€Ú-Y<´¸ª¦Û_ÂQ|ojUê­oSÛØ/ny"•H=7¸}ûqüïz7\üº² $0„Ê}ʶ~‘y·z°áöÀ«ÞW‹˜i¾§ŠˆÅe.^âcXáø§ &ÜA:|›ð&²ÚµÚ½Î³Þ߇·º÷‡üÏ^(Jûr¥îÛð¾Û‚ûöã'Éߑ¢“EïEÿZ”.Ґ ۈ!RVRU\]â»!¢,‡çºì:ރü!;‚8\ 8Ý=ò +¤ÐïóyÎ!û7‘äï?0˜éreœ¬QÖ&cv‰Çe‘ý°£,‰ït¥¡¼<ÑiµFÊ âQ…¦ÌQ…º†rÄáI8E„?ÊU`¡¢³âtSQ&%[.âA.J¶ÜcÊ%;WlÌ%;woyûq1<ºjç™k¡ûMañ7ž‘ŒTG²RužFè/ï*[º#a%YmÜÈň*m–lÏù—D-Tî‹Jœ^—¿È‰á'€bOa y}Qwi £‹œqwæh_ýâA}ˆƒÎ æT†hœ”#L(ž;ÊUF9˜Hœ±ŒÍô·~<E‘ÿ¿©›pé¥ó¦2ɲÔîTyÌ­qrŽÀŒrQ9ˆÎ;þË{oí|ⶴõu\ot(^~uß­U ÉF‚qjÝÕ*¢úéµ[’Ô¦;šÔä~|ð–ž}Fº¿Ð›þˆ•€žKæ VÃ…X‡uDÅ Bù’pn +}UONWŒ­°1v¶ÕÒjmµµÚ¥D‹ +NU±kTk4k´ëtÎNWg¤3º]~‡j«f«ö6ÝÖðAö`Œ3hbš2My^,¯,¯œ~Ú-bÝN·+?¿(6O ÕlÔuF]Q~|Ùøò©š©³Us5ó¸¹ùsÃy.ì"ö˜«Ü^1Û2Û:ÛÖ\z}ìú²ë˯¯˜?F˨TùF•=ß«rWËVuºÛ}{d{"EFN…^*x-|ªê\UÎ5ò±vÔAìGðۘàœý2,hÊ.qØó:\v§óDm)³>œÊ#®Öæ¨ÕÚ°º@Ëb&õâQˆ€B%Œ7D¿cÁé)Øþ–4‰½џԓ3zìÖџÑ3ú$Ùúœë°3ÌÑ_ÄÀ×¾b|²ø¯Åi0m”r¡øm¨0¨Ø]ƒÇ¿€'£JžOæçÍw®À+Ȋ¼Ny„¯æø=’í%ì2‚óœ&Ó{T{ze/rN'ç“ä”`Tà0ÌÚjƒ¦kDGè±klr…¨ç¢JSˆzNá1›\a'ՏZzrrÎVg¿“už !dJ%¨¨4‰úϳ¹µd> žo¡ +Ï +VUN'TéÊÁá³\<ûAŽR ªrH»>]º ¹×3?9F-™ï2Ìg·+ô¸#óÙÇu•ÑµtöIðÈ#£/Q÷ü‰ÖPÙtY€“ÌH½<ÛW5æûó]qV­5®¼O XU¥‡%€Õb|ëq…°£ ROµùÄ\˜mr”…¤UÒÒ :ÖïõK½¥Á:o]pP–¬ ’ÆèÕ&ÝÃÁ“Á¤qmf«Øå²[yO¸al¤›€^ÍÁNH£(€íoÏR¬AáS1€ ƒù4Rã +¹ ®” à¤È£r"§»Èúœj{D;$÷ŠiЗÙtWZ[]ÎEqg´?šˆGÙ¨Ë-Ó-Ó-Óí1zŒ¸Ãˆ¢í2jiŸñÿ´÷æáqgâpUwOwOOÏtOÏÕs÷hî{$ÍHYö´ð-[–À—d#,À\Ä’¸ Ž•c’X œd7ØÆ– CÈáě%,á[ÙõXPâÍ:|I@òWU=#ËÙãÉó=ß?¿ç³ZÕU]}Lï]ïûVïsx‹§ÏêC » Ži `vè¬1‡Ä7ÔѐºæÂ[¶óu‘”`DZP+œñ˜MËٞÓyh"r<R–8Ö* !üß8„pŒb”…aN&¯9ÇÜOð¯Îè€o´ög]ÎüäWo–´åØŧ¼!æ ®ÝwõîŸ÷"ŽƒÍÕK㳯þä×_»ÿƒ ”ëâñJllö`ßOÆznxâ*¾KË!8PVöŒ]”rXØ0eŒ¶vÐl¢ÿåI[˜rs6$H౯š<{âÄ4,bçIQ‘#ÐÍ[ª¸!‘&TÃ-²µb¸E护ÖïТåÿTÞŸŠÐOyŽªOûDþęñþ­ïïMGØ£œéQÓÃì#Ü£®‡Ý¦¸ iB¹ß=1]ãÚ¹U˜¶¸7{ú#W°×p¦­Ü ¿U¸Ä6è2é‘~°ÞlZϚ´H™ép­«m¦8›æR|ʕr›)E†#'"¦ºa;lMpûÜ7íæ¬øý6ÄÇ9>lÃ6íڐ<ûüóÏcS-±hûu'0A?\²_²ñèà°'äOÙ£ÛÝ«ñ‡¤!'’L,‹¸âöàpÑ°„Ä,@q¬ù}ôü¦äÖÝîSnÆýVÉ¥»ú]\§\&Í5ìq»×õÎ-ro{S"â1ä==tr¨u‹‰ëÀ¼Õ*iüÏ”F€ÒÙ?"Ñ Íf “|³ *UIWª ¶"ÈUžwT‘ØøÊGUH9pï+¥jCëÄ1M.–C¯' +1JVpâÄ ¬G4ULßY¯¤ç’ñ9&){W/¡2—tà ԋËM¢imÜi¾âý1ŸÛâ GMñ¸¹kùÐÿFÛoÈ+D0%òŸù5·A`•°wÄ ;Ò §A6pPI*`.ù‹BYx€‡`=ÕÄyPôšY+'ò‚™„[å›ê¨Š¨ø1 òæ²û$¢:€jý-Ôh3WŠ=æAfÀü°™M°Y>gI‰)GʗögRÉæ6¶ê+—V²Ë¸5–Uþ ì7À +â€o ´¡ùv;wåjßÕþk[obnboânn±|Tü¨ïÿÎÀ-ڍÅÝ̧ùOî*ÞUÚÛüyî>Ë=Ž{Ôû|_ö!õÅâJßâ5?jyÔ÷-ÿ#Gƒç矦|‡K?(ý‰ÿ“åƒàŸ´ž«‹W”®nÞkf:üׅv„?’g®à®à¯6ÓkÌkëRkŠÌ sñÂÝÏõó[,4ÉYw1H‡›¹ª¥1œÊ¢NÉ`,vãÍúž³@ _M*ìÜwÀþùùˆ¿ž3¼Ù,Ü +ñ€Eˆàð9ýŽT1íO)"ºJ2”ð'«Íþêԙ‘ÇýA›:³Cw–xN-–&?:Úï BfA †8uŠAžo–ÚR±™å8¼'PjF›Í%™J!%PAàyμè«ìƒÍè›Ò+͆“)qMäKåRóxóD3Ý×¼­y¸y„l¼Ñ|ª™o~‹ÿù"‹ÿ Ÿå)J>øgÝ¢‹ý⠑î\4E}èqÑp•W>©Ê³§‰’’}s^/©[wUóÎ6ø pñFƅkN¶uñháä®Ab6þýǦ +„sA©”ÛZ á•VB«°ªXj >T34]Mut¬c¤ÁJ:’Xm&5g;ëx­p;+„œÙ¹;Ss?ž;›ûp^t._ßS+9hùuJCZœÃëu¤)9ÖQÎCR¹ ;±ap¢ýäûOӗð7̕ó$âñx©)ú±YŽÚ3¶µ%á°*<‹ºÒ­»fÃÔ;·—<)ÞF°ZBúôc«kt®ÎQì §úNf;ÛSqŒÜrÂ&áí ”—gyPCÄe³ùƒy—oµC«×œè„·€›#&%ŒÃ1lRµ(;«r·žÕ»én ûÂÑòMàûmM#ÙÛò÷7Ý}>$?y¤é‘èCùGŠOGŸŽ?xªãHíEùyÿóڋÕéî_(¿Ðþd9ÕPŠ²¦4i±lªP,.–KJI[iK–²+RÓ»µîR÷‰næ…<¼!{qwvo‘Yš#´9ꍺ—Ôº×ø–&YÅY€±Â‘#˜:61¾n=mO(;ˆ¿ +¿õñøUø‰úˆêóÏ×+üâ®6¥Ü˜3¾qÈ]ŹøŽXÈ` …G,J5Ï+Õ&M©v`ó¼TM6Í£J3ª¬Q-9—½Îÿ¦yò­Q íFPS’†ì‚°‡¶vpb‡Ã8ÊèÁ*½ Fo½qËìS—ß̕ޜ;™WÚÖ΅[ãKFVA}îþòåÔõý‹J'þ#ã¥Â*øëj¬mËEÔïæÖކx4´˜ãÇ¾^<÷…ΤKËÐñ¸Iö l…_€{&/G[t!_9÷CØܖr¹d—¢.ɳîŒ÷„÷½â‡M*DBÿV­¢—.Q/ñö—˜œç£ž[·&ïöìM²^“—¥@ÉŹRZ©¿d2™ÐS¤\Œq©d,/”J+ ^ºp[B©þÒõìõÜõ©ë3#¥q8Î~’ûdj<3^šÌ|~ƒÚ_:üEð’¶›ÝÃíIѐ£üÐPà Í©‚ªaH úC±„êñ 5׉ÀŸãyŒMÉÚJ© O1ŕø—L¨¦° ‡CX•ô¸î.îÆ8nèÑ›tÞL5õ=I4ɿՒø-(֊–,%õdr$9žœHrÉ)êˏ1Òxq:Ò1º|êYG y¼i¤¢ÚÃÔEA¦Î~ Rm¸,ô ëzàug¢3i^“qHl€c0Kìb&LF"Àæ4x¥b±\ˆ+ ÐÅj#Ü‹„„» .ô—㍉ÿ†÷ Uåü¥Ï·ý¢®¹£ÄE¹Ùi¬¡Î}ú‚b3A- ûC?º‚mmˆ×6]:;;÷· uvSÛ[¢B<žËÅ.™[¿~I!ó’!0xҩÊŽ#ìÐû½Ìá+wHò2St'³×ú¤GR™ãpX× Û™Ë¸aÇ Ì7⸓¹ƒw<´> ¦à³Â”Õ)ÉúL4ÍÚM,v¶i2 N$ÿ˜e^€õ’„)ºÞÊ –¨Ý°O/‡#`ŒÄP“,ÃúŠŽš£ÏA;ì-š åÏò^ÅqkäÚ!2Úы¤z¤T¾9DÎô?êÙ.ùÍz¢&#aƒ1°hô,0d±È"vâÀ6LaệĈfDpè©ÀH“a¸ÿƒÝTn|o%¢¿€¾rnÝu—¶ºÓÚ÷ّo³s÷ř—‹ƒ·ÁõžùÝÜ +F™»g? +(œ H4h3Qð*få*5+ÿ¡ËH‚î$R‰0Êû¯1ѹ°Í|õ™z/ýh‹éÕõ¸=­F|íj:Æ—Ÿ+Äy‹[Òqoˆ­åT¨­n|Úþ1 ´braÄi%ǶV9Rsy2줙Ñ)…VbÒ¹RYÔÍ袢 âµí§Î¼¤‡ðA¢ÈìR¡JzUr„*ÇC\WŽÅ™Ú ’؆”*ñÛ<^œÅHõRö8,¢ Bˆ§§_ËfÉ/Çx~}‡%ð©VJYß-\¯}Ë|D •¬²ìl½Üm¹»Âw§\¯1æÀZÓZv¹¶¼im§^Û䧁¦Õp°Ú²º²¦}içêś-WYv›?)|Ò"mpßá¦Âµm5j˜oå®B:_~ Ù"ë1WŔ¥*’1›ÎŠŒ$X +‹±Ã"­‘ê&‘»T<œ¶TûÔmê•.ª»TJý"Vø‰K]z…{§ƒÉWÐ{›¢WèvÆR˜ÎÃüp´ZE±\F/þô؍­Oãl¿ ŽÑVñp|<>gôø©85‡qšZ +8àBÂx¸êš‚Wé!±ÚÌ鶪Æõsã-sðqp÷Ò%K?b˜HGÇƲ8V>+ÏbgaÐðŽzoA×éٓCòÌhm{SeíU|L6[4(Ø!Z„ˆ~ÍÔSò[éÊÊ¢@Ôähïhë X3/ðiҚ(¶b©jÀt€âÂÖlŠ.2U ƒ/k°R¶(9mMhÕÉv¥ÀfÓº]&“ÁAYˆ>": Gǖ1j +áÎY@°=i 2©ŽØªíš ózL/5,—ZŒ YªTÚ}¤_[ªí)\ ¨PmFµy~\¾ñ7ˆž3ÞÈ‚Ù½1°Àº< £q=n‰¤À±.c˜3ûO­üL¬mñ¶†Ò?~wóúZ´´yÙ-›b{¯ljÊuZÊùMéðÙÝs?¼c‘“³vuÜ»ì8ÔåÍ WWmC˜æý3'飦Ï7ˆÁŸ˜0dÂ,c\69E ç +UÄ>Œè"3ÜEÏE|¼/Šª0”فµ»S7£Ãœ.à›-‘AŠ#ÖôÚkYÜNðôµì´üBZ¤ÔelÄȍ.ÎÃçàsC&S"pD»Q¥0ôâÛùãa¼¿}w‰b"n'!þ4n¯ÿÞq#ˆÚ¯ß*'à7Ù#ìÜ¿‡Sb©u¨MKÜHßÄÜIïa¢¿Ís+9ØÉ;“ÖnGȹLõˆ€ñ»ówÒ6M˜¨aÓ8RŠhÓ;¢5&Š²µß:b°2ãhuÀJ+”-¡æ´õ„•³"첫bŽ?·¦͆=… ÂÙ¡1cœa¬f÷TIÞ2‚)¯F[¸„F‡4èÔðª1À£­0Ѡ׆ë×êI êÖ̏<‰„gs« Ø2¼“ñV»Ý}v°‹…‹vßÿ™Ÿýîo÷?¸IÒÔ@ÆùÖW·þÍßl¯TRÔ{GÿãNq¼³“~â+«|rtd65ûÏ-­/>{à¿ñð†z÷ˆÀ?âØà”ïœP2ÂXw\2sё…MŠÄý?Dÿ°ÃImDÁ%ØL#Èwv¨vl†Êqç}P!‘l×gòeÅ_ÏcÝl¢Ž ÌzÓzv7àpW™n2ƒñÈa¤žÐÞÿf2·Ã•p“º1°-:¬nRÇŸR>똰O¨ÁoRE‡ßƒ?à~à}›?øwí4TYªG٬ܾ[žŠrv þý™7€†J ˜—\ GÆ#ˆÈ8…D&ø£ŠX#W_— ôwÜ̱þà¬âJïPªè!-‘Ÿ„EØ'î)±(ÏÅa0&À0 ÞfÜAG¯÷Ýá£ú}pÒ}SPԕS,¬ÌòŠ‰]Ú´ô(õ9c GGÎŽ%`•ÍÖffF é>©ÔQLX¼Õ8ŸBl\…ØÒMUÊ µ¥‘Фž^2DÛèžø+w|å-ïùNsnQÈn‰F—l_|á×ö^¶®½ /~âû}ýhÛכ(&\7…C=—}í›ï/-܊ž~ٙ“Œ Q¨0ÈSk강(’h€4« â #À´ ›,·E#ƒž42蠑£QïucDAÅgh§pðfÔ8+¬ƒ†C7Û¨'ˆ£—ËÑDâÀ”«ˆ +¬K¯!ùbš'©¿Û‹tÐ,4O Œ¡RÁ°]Æâ&4ÌÍ`‚…îЉk‘$´¦ð¬Î§É1äá؍,[,ªvííJá:í6mLjrG¹2–ïHŠÝJȱÌLº»¡à²0:ÍÂä\䭅s0— Ӗ0°DD ŠkØ=î~ÌM‡ÝnÊýNºŸÅfÝT¡Œë'WVØ¥…¥»ê#8½3³cC]³]øûݎ¡GFäQ&ôÈgɤ/‘eød<Á§5eÐ*ÅÅ5˜1å40Ÿ u`Çî)؝Åãõè1âÊYÊh°c)Z±ãAÔ: S?X:Þsïüþ­}ˆBú²VhÏK·?o™;U`»./,ßzອW­XüþóÏÕ½ü !”ï¿öµ•{tô‡ð•e#Õ¾«_üÑ?!ˆÆ9¨ÖÓ€éuˆNñnÄïDl¤ªÇºJ:€Ø)ˆ@Ɠ6ž™&´7t;ö¡ÀâÛ9SJaç‘ÃølŽPWtÇLy™œ?zcÓl±€%h™†‡Ë†X#v\<>}–]ã`?"GtïšÜ„ñ‹F,l ƒ°ÌiÜŽÜ0‡“»1Ü癯3‡ÿ‡ cbƒ³Ó¡çÄMô´ìñÓ¢ +鮨Ëf ‡ÎeáÙã'0:64”m1rþ °'CÊ6uÈ; †/Ó&¯@bZ êÖÕ0I<°´§Ì‡1‹K•I÷úL¡ìg½æÇ%îmž-êVi3˙yÑäZÍî¥>Íî?%ï~ƒú¶ú„ã%ê—Ò«òiê?i‡2Ì ó#èéöš¿Ç½(â§ã¬Ÿ¤h3ÆáIO›yµÒÜÞ@m0_FQ{{½÷9¾iþ¦0Å?a> ü€ú õ†xZpò'8¸5ŠküÏŽåv2NPr»ð­:”ª²ÍµË5ézÝŸ\þÄ9Μ@ ú2†yôUJ¿ã‹ýî'¼;å¯Jn¸Ã½Ë½ÏM»O;ã8Ði‚§Jü>þuž–yGOÂàßàYþQ›‹{1\Ñ9])ÙpFØd›f£OÙ  ߉½KÛÒÐÒºä‚T€ÞÙQ,¶Œâ€‰$ç“Dc¤²cvô‰¬½Ã…dí,Nx~z±’¾ttà(…¥‡Y)jt(Äv6F¬ú5K´*êùªsœ6aà +ӈC~cËoì«o Ɩ`l™É–n3W]²·êÕìU«Fgaö)}ppÐÁzÎ&ÿ¦-p»â‘„á-ñ*ܾ}ϖÝù°ëG_~ðÿ8rÿ ³{à·L²÷ò¶õwP‹~rà —ßâÜûkùä~ühç@¬Cÿ8’‡ú o3}d)¾ŽÝñ<áWy³<Ñ«ýY(ÛXÈÛҐ'~–Š ÇP)Am +A}Ãá’}ʈdÔ>yÒÒôRXœgfZž®Ÿ‘g ¦4Åécò x9F"Ïêˆ|Hä€NՃi6†®Ä§!ADÈb „D®&·ñŠn!ØHúÑö«D¾¶Ùò¹ z ¯ÐÏ?nøæúõ%wk÷¹îKÐËèeâ*ïnz·hºŸÅü®žèj’Ÿ4Uþªý@Þ,³ˆNmËlËRÞv8ľ qS4¯‡£¡Éг!*dÅ=0ۏ”ßR&­ØYždàSð¢Ç÷!…wŠzïÌd§ ¬[Si¨Hvùó’cX.“º³Ó¨k5£Ž5“Zw"å Ä ¾Í6b›¶°±6oî)š¥¹º”½3Ø^‚…ê.T½9trŒXòººfǺj³H³-ÖýW•xÒéNÄ]‰¸;Ig,ÿÂs I Œlxð?ZiE*`##âCD`BšŸ«Õ +ė¬Ÿ}-ºÀ{èÐÀ£× t–CžÖžp8QÐïÒkgoÊÅb©e—Q[VuíýîËò¡JäÃGóU/_° +gÀY<·‚þ¿L¾¬ƒô—ôO(îþ/%îk£A^ÞJݔ¹i=2l½èn©µ÷mÝÑ~cbd+ÎÒw‡ç“ê¾Ê§–ܱ|ߚ;û¾èù¢z_ßsÔtØsXýaù‡k¦·žØúÆÖS[ý>ÍÕ*Wœmá­¦‡ùž¶š¸é¶Hx—žÉÖìp8Íüx*qlRŠ“‰ +Ä®u‹b©MÆ‹?§ãSð«O dÇ#Ø áWº«LF‹<¡#õsHN‰ cuu¢öà È=:êêÉaÔé!ጐ×;x¸‹G ;v:©°÷-…K§èf]ôöE/ì÷Ž{)ï3ÔÏ‹«t¡]Ëy/„ærRïwéâw!´®‚^º¤‡åÜQÚWš,Ñ%óגˆQ¢T©èñ p~6+ÂVÔøÑaÙI¿"¶˜ FxB¤ ñp +×]·ÇWޗ‚}©‘ÔtêDŠIÙ𑩆 5~«+˜`¤nÔ¶–¶ê[÷£wnڊO XÄòVÛ¾{WÀĊ³¢YsCÉ=âþ"öSg~¯Û‰/“ˆ7¹G÷õŒî¸¯kÍ%ºŸ¦úiˆÝñ)¿Jo°LjtUÿ<“qãIüŒô5[¶>oAzpp/">4H«›%™ìØI9;jÄtf<£òI?#ÏԙÂ웘EÔdœªçŸ“ññè`Ä%ÿ,òz„B|bìô vqÀ=ñ×ã¨g¬a1¯ÌÏ&Cwۚ͝Ëc•@УBS"ÞÒÜÚ\n¦ÙîD_¢Ï$6Å7``Q(ÖTz5p¬i`±©ýùÞ¸(»AƒËÔ¸1¹97mvúÑáþE`ms×ôTÚtj)κ„é +ÀuÅ `}úB ,÷, y>zõÕ¹óŒdHÂGŒü$$o”°6](ÈF+²‚mM§*uO½† `Åz:Öu(c´ˆ,óÙQ¸}27EœODH’D² ·ÐveÖãûï~.k£Y-eoî8öಕ¹p¤ùéâ¡úÊûßÛ½Æb¯pÛÊÙ*tõl_Vî_{ÙòÖ¹?KÛŸ9üíÖòý¿†ëÒ÷ ÞuL7±fO0±«FƏ8U§]ãÚd¶Ž\4zùç7·´©jüóåáæpôjÏM·}uóc·Mn¹àƒ·ÄK±%»V•Ýn1}`EÄé?‘6×Fí«óÆ`‡ŽWìa„‚ÃÛ*qÇS±•ㄊíqDÃSmHÕæ–aܑˆ”+É<Œ0¢HmŒkDò*¾Fïà^Ôx˜¬ò Cwu‰0er½H„VùØ -ò±¬Ñs)ˆÇè†e£d…¬Ñ/&Ëè¢ø’ö¤@د@X®@زP·t‘®ºíKíh‡Ò!ÝÒAOsŠPÔøýa¼5>xïËç;Úë\›0ízû8ºÐSÖ1’Œ[ɋz¦"t #¹YŠK‰ñŽ‰æ@Çtlj:ËÂþŽáŽÜ¥w@WÓ!û-éö¦|:”ìiÒ!¹'I‡S´M/D+ÉBw9TYµd O‰Ä*»]¼jÌÚlU5þåpÝÞh ÛËOlÓ°9ÄÓÙمØpÓ„ÃÃ,d‰$K´v|¶‰u iðeDԏɯ Õ-$ÆHÌq„ˆffqrÿyL°j"d¯sx͚z£»ÛhèÞövv£ŽM]ûY +ÿ(Z¤‰sàÇ{Oà3ÍæXÔJðÁJa°·|ÀOfàƒŠŸàêyÒ@¡Xt:&º÷׎׎ƒuTðNÄàpl$6Û;3i±þ¥ãU 3̖–2©;::_2êhœÔzÁë+#qô4YÓ!¡EÒÛ­…"ËD¯è˜@R IäŠ0a†æ*æÁ‡–Vp¥Kµ +}­(Z½Ö˜ªg«*7jë,O¨°_…Ãêˆ:¡îWO©&õPôÐ7:éT0 Ö;cˆ©ˆóâlNó“`Àºs¨a^˜&v®ÛÚæ'Æ@pÎ,Z”Ét-ú˜·¹{né҂ß̅|” :MŸÅ;º2™Es‘YmS²¯k#¼ô‹9Í+ÅFuæò¹pŸi‚Ú4 Øp·iïsäÔx—œ‚ÿLN ãSÌø”0`ÓI ¯bJÇƼTÚíÿ© Š3DZÕN~ùx,³Ù`f_@ºË‘¯ø ë…Yü¦kíkö"z¶?;‘ý–í[ÁýYVCãYZF='²´O%µîd(µÌ‹‰Ýèð™3^¿–9÷´éV‘C¿,M’”±Wé]ã3ë++t!ëñøÐ÷5 –˜þð“¢u,žÐ ¤A<Ç)Ö4bœ:ó¤1bÛà¡Lö"ø›“»úB–¸8“I±N£¯/“8¯ZÍÀ³ìqÿao3cƒ8I[}F%[Ÿ ÅȸÙ¤`< …0dóc)6ô2[Ö_̂!,wë_ÀM*ÛՕEà1þâþ­ÍŸß~iD-¸ÏBÏ>²;“íšÓ>¸ò“D£-Vns|óç¨O)!FDt¯~¶?Yaÿ^²6œÁíF„¢á.Z1¸ñÉoÁ =k mÉBÖÅ’é%¡@øÁ«Ð + 9¡€))¾@'‚!ÇÚÃLBðøâ)òCXdI PA°§´i¡­$¼¢hŒ“ÑÿrÄ,Z xÓÿrP`ÉDÙº1›žž>; VçÓ/ ª‰›Ku¿"L“ŽJÕp•RX¢ÿ{Ì_&,âÒýö”ûÓÕÇ¡ê­ú¶ÉÛìÛÂ×É;ì;ÂPæwB3ajÜüqÛ ô ÒÛÔÛҌýw +_³×ÔZ¸C«UWHc_¤2²×Åjì9—¼^$oИ¨¼n–Þ”ÿ ›VÛW…Ÿ3?'ü«`ò˜Ýr8/§.X‹]rX}bP +ÙÂìzz#³Þ4(o°op°^) …×S ÿ¹b›J`Ê´¬ wt»ŏ"ÜXoRÑO×¥bŒð˜#ÞÆB3¡ã¨ñgBÇ …jÇY¹†ˆ5Xž9ŽÐü€b7úFY‚”]q8doØò¨’l(sHÀ’J2ږ,vWBmË@X݉ia§)-ŒdäœR8EØ™$% ²¬ +íx¦à»úZUü‰Å"°ò½^U°”Äq‘:%Ââ"5"Nã1gR…ª/\…U$ڀX± +rá ·5õàxa¢@†;ªSð–Ç#}„ öèŽ]@Òå:y ç*À´¡Ñ™žð”]^üÈX)B€#wu7<[#kÍ˜ÿ¢ªÖ9Àg¢=xß1Ž#ÙHÆFñÏXݍŒ#Š]FhãDúJ8…4/T‚:¼”D\éYª\Ù«’Q™ +;8´WáW8ÃÙՎuì¿JœÝ8ÎAtšÖFÆ_ؘ—©¥ý¬´… IßÛ="IÀÏ^ôáîwÞ¹¬©ó.™[šð§æ~ã-ôÎVD]ɦù\;”MŸý`ô¥eŠ(:ƒ”¦Q…E¿œû§FŠ6!ƒ.‡§^5wb°C…±˜Ýâ‰\H_0¹ÒobJ³IX¢4.ø¹†|åA⑯œ" ¹º}ŽÐ Hh±˜] ÿw¢aˆ JĂ +Ÿ:ó«'Èè¸éDxœï8p&2Çü¸8ŽÅx-Û2o¾3d’c؂·@kH:ˆ”ä$ƒExX®n¹3lv„‰à›2„Ñ ^¤a=¢èqŸ#ø×Ș¦)ONx¦=§<´‡ËV”q­wV•¡çu{[¿êž~Ï°gÄ3áُäÄtˆëi‚雌6ÊÑ-q¬`Ì*Ö/c¸»T•'DØ/ÂaqDœ÷‹§D“xȽ@l1Ä÷Z×YA©ÌÄ~Fä”se“d|Ô[^9W«|¶°êKÙ¡ÝôÙ÷»7u‰Bë¬4¤gÂEØýØLÿc‹x‰¶9Hl°;ù´ökK z_¾qÄ߸”%Ge›ÛW4ŽZÑ8jɎ…Zѽ²›×M¥›J÷Z'þµµóÖ6øËÚÆPãϺ»VÀ—Y›%§gÉéÙvâc…;ÚI¢ÁvìE¢ÕÚøÂíD Ƈ¶Sd?IÆÕn'×°“kرC‹q ­Tÿ|θ†–!c£Sg^Õ-øPªïÿÁ(/u{‹-ËWaJ[¹a£Ž)n„}wlܵ‘Þ¸‰]Ù¬Æs®+g2<;Š˜£ !Ájvÿ5Ú¼ÄuN³ê؞rLΒú¢%Ì­õ.tytu gâ6lÜÄ©Í+íâí@Õ²D Β¾l{7Ùê&[ÝkÑsüû“Ɛê@;6#àîvÞ@¿'{ÛÛÖb;×605þHö®];8PGûüZFwN +z@žùx­†‰2‚ÞÖ5ž+μ–£RD¥tæ­'|ªWEÊ»ñ7è×eîÄàïÜô8ñA¬mg­pb)ÕZ:¤NQnjO‡šQC·4­M‡Vö4ÙÓ!Ò«G³éPiŠ¶Žv§C+PC_ݘìíÞÚ¸ŒO·÷êÕtŠ\|å¦ÍøÃÄs¢`áXÆÄ­\Ñ\R= ’>e{,RÒàˆvO8+ºÔž.dc¥v8Ò~ jÇ}îÞÍݱµkýý½ÔxïD/zå^ª;S;ÝåÞáÁ)j âY»Ô)¸}7Iç}ZNc½ü¤Qu­3æ%¹5òßKXÃÌkì ½)&JÖx4#h“šlñ…:ûŽƒ"FuìGUöÿFq¯óbUç8ÏY:2ßÍ-Ðèϑ`[aÿv%uë¦Û]W}vÍêшÛ*´-žër,ŠxƟÜT¹v-E¹:WÌ5¯­ZL‘\_[e}ÞÛ¼fnQ­ÅGäܤYêÝíR"³}Û-kÖlì¼}î¦Mš)ø9j)è•U–ìÜ¢õ#®têkփ¹ö9ז6,æ_´^ò¥\C ÿoDÉZ©yJV!”¬Däáf#E/¹£˜$ðV4Kó„$Õ3zÀ»‰y­í*þ¥ó³áÂéÆè>Ü ‚ää ¹P\"˜&Öµ4œÓ 9mˆh¤ñ^=Ñ6Ÿ‘*V„ÄÜL4³æ+ž§íl2ìmº9&ÅZ8_Îð+ÜœÄW¬z®h¼€~Ș€È†‘í,Ù¸¤è&Öybÿn&mrÍÆõ¥O¸'O(O¨ï&înÒåæq—Û])ƒ 92H:‚dg<(ñÐh‹4&&øˆtºRþkmH6í¬è™ +_Áø_ªôW†+#•‰Š)Ï@´ÇÑց +{ r¢B¨ÀaÔ1]¡ƒ¼;’ Ã[:Šõ4ñ鐭'L‡¢†á­9™é.…š—@´¥•¦AZNS$“!|z¸lß²½ñMQ½4ËĽ´'M¬jò5ÐØH–?D؉íí´¼á¤ø :Ï +­pÍ×>¿æ:Ím³4_0·È¡· +LwïÍ7Yl+š¥pgž[³©ëö¹[7‡½Äæ&õÁ›wŽ~b.8ä"L[¹nxp•X.Ñ>IEx& %Ö1-€Ä@ù‘ˆs†N'cghÑÇ`ÜÁ;qCwàN†Æxâ¼EŽƒ3.l†Õá¬s…ïÇÇùðÉ~ S>ÆI Î)ÊD‚“‰øÆ97&$Š†“aE¸/aØåʸ >ì>â~þÐ|,øK3«üF€«ÌËݛ]»á§Í{¥_ú¹°ÞRaˆsÄd¾àú¡ÒÃp5߸…LݐEòEžÀë~f˜a&˜ ˼‹'%ªéâ$Rqæý°_06Ìf×H­_s ÿÂ-ÅÐêƒafõE[žÁžÐ€A%|f³À¥|t `€“ny[~Û¿`q‡Á³9ŸÚ`P‰ÛT<âlÂ.95„> ºÍ¨¥r¨å°ÊôÓhå²x4à5¡U]gnüO`kêàÒÝ~#u#{›p›í6å÷ê~h°> 9 Û«~T\x Æb Ô`“Y}cº®6­u*õ +œøص7ýl×Ïn»jçOÖW®½`ò—~욕ôc_ÝóØG?ðî¿û؟nî®}õöç~µÿû§?=Œ}oÿ4×C?…`- ªTSÖҋˆ¿}‹ÁÀ#"/Ð贃Ð`‡FÜí5<¶Ñ×ÝÕæ½p5:•Uë{ʘhG· ñ£·µ ²±™¡Â"èDIn3„àžã–;-¿€kñﶣ åÌO`@l0L5AXԉîŽÀ­ƒÐH‡fðb½ú­î'š†ŽJ±¶$€^º ¾|ÄGW6(#œ÷þ9QwÿÉb¨þ˜°CkU^-o•÷ڙ;spQ®¶hMnkîCöå®çoµßšû$ÿ ÷6ÿ'³µ´h u°|]™ÑÁ"O§ÒŠ‰UÞ;›H¸JFA2җ e”’MÑLAnƒøN(ߓWµµ4‡… ƅÇZxG£ˆ ϯiýØmu<±»§áâiŠ wb‡^¢Ì דClõÌ[`iž§¤Ë˜ ¢Xá¬|¼œ¥x…kÑ`ъV­æ6 6[ +Ú_LPAÆÒñV×ü䪓 ¦Õ½`LÂdLÌSt(èK¬Ü×÷©‹Gïy´§-Õâ©®™Ó¼íI‡KŽ†Ô8,›m^¿}Ʌë¥bŒ®Ž½|ë¥×}ò¥™v¹¤üÜۗ´†pªNKóvú²Á’jÛ5÷èŽhçÀº+þ|tªàqŠes= @°YøR–} B*.’؅TéP]—¶a„xfÖó‰9ƍÀDŽÁùîˆó‹é)CuÖe.ÈJ!%WÙô bálÜ ©-Tž§ Ä@3íÏ`êÏ`8ôg0 ú$_h“LÃ<¹55ٟ§ôüxþ›©ýy¦ä+Ej™ŽlŸ¬ûôH_fUv@ê÷ †ú#[2Û²;äË|—Evdn—G}»B£‘]ÙݾÏd¿"ÝëûJèÞȗ3_Í~Ëýïہ¿ËuÝÁ«Ùw³ïg3Zþúøõ©}Ž/9¾äœÎsë°‰·! :Y× ýª +ÓQ_âNJƃ*DZ6¿„Ã6 vE††ãð1HCžèûï$šeW¿‹zÖõ3×ï\´‹x¸–澓8‹Ílvh̘ Hì™Ú,†G¥‘eY¥ž˜'¡”­âNìBÙ°ýb_àѱŽ,vΞUÅës=Ô½'‘¿Ûi{cjuùþÅ,À!xÙ~æ$õ /ÍL¹/ÉV/­:–Î(HÆJ!+…’ßÇ'EܟŒH ò#aFÚB²I7s|RŠ0JÖo5ÁëLÐ/B3œ÷æ¼<Cq͇}#>ʧX@íØÐ’Š¨FÕvÍÆ ‚ä¾ã/—_28évl¨&#QWõH˜´9çÍQŠRÐ-Õ\ÊRUƒâ–Äòb&RBz¸u¤u¼••Z§ ¦ïAäòÇÖێŎÅÿ)úr엹7™7£oÆÞÎY”Zn(÷‘üÎÜ>¸ÚG»ðL²ã½ù}+Îl&Ðf‘ ¹›~å´Û©ÜAoڟ»Ï|Ÿð€vOôž˜EÉZS¹ž\_ë¶Ö[Ò·äî´}+úXë[ô›1Í7‡À3T†a‘Ln—=ž)LAŸnϨ!ï3þ/샲OCoïô>ãÆ;›%µZ)I*SþŠ™fðKõ}ÌëUq‡Ó]Ä/–ú‰¡‚]‘~‡=Íh§nÁóvH-MÁ6ݛôy aò¹É$&A¿4Ž¦’OA ´@íàšràüaD9šÅ^°g"ph°ZDrå¡35±KÔÉÓdúR’h|Ab1$• +HO‹Y-N«ÕÒH36hä;'ÓjÖc‚ šÙZYc2æ@*Öd;˅í‘dÓ|ài—2`ƒ°cÝ ÇԿϽ'¿g?Å Â1’Ll@÷NÂIj’ž´ÜopMø&üûš¾Ì‹$ð~”D† è–b´»;÷@쁜ih Íö”æ­šSÞ*ԅ*…ŠßpÈõ‘q|¡Z@]9RÌUQ)5›†W8Ö_%•·3ܚ£F%âÔ6Žj®žûåb\KRÐO(è'”jNSð9§tIB‡IUZ¶¢ß±â œÒ+ú+:ÕNÊ_†èû˜=œ‡#X`L!qµÙCCÓòqùØPç}VÿQ`E7Ð-V·ÁmU Þg¿Ïû¬ëY÷”÷-/7„{}°Oì³n·Yÿ šXÕ¥&UÚíR½>â•Ó¿Ò®RýnéEAV¬à›vÿÌõ:‘±®pú,xÜ/§!æY(© €aL1g¿Ž; NÒzÀ1í8áxÃÁ:†ßÞÛP êÓ Ž‘§q¤ììIc$í: íxÆW,s5‘¾‰OR«+j'2U{+‘¸Øw¸Ì›ÙóòË­©È{2:¾¬0ù\ûõyOšùÞÜ?®˜ýÎà’tê²Ë[·]N]q_³*qæŒÔ™“ô,ý§Ju¨r'‰ ‘¯‹å-U¨ËCZ¨®až4|249ЧÑ¥nJCEÓÄmH‰5TO›g-šMeƒ9›…ÞùO`Փ@ñµ,ö7Døw®Æ<<¯eÊQ›9#dæ‹fQm±¸]Õ¸¤¥. ÆÓ|dDÌGD,Ÿ@ì* +Ï'4ykŒ +$<Š‡Q^B¸A`OQ’‰…v´’‰½¯¦‰ƒB"ˆ!yÄ£T`kZó‡I¦liwj«Â«4“wôaÍ3ÒŠ'£|vs!~™f‰ù)¸\w G, ?M°K„„KÙÀœºeNŸA9Åë‹)J¿cÂA£Õmd6À]â¹]çÊixV‹Yœ©1MI~Žï|^RÃ. þ€dH¾í~9hLºBò)7⌸¨"¹«DêÐiÇã»ôåRÄNÚæ~›¿éöå½£¹@û*Ø=XË~xMu ý…Ù_L’h¨çÆ/üô8¼¯»Å㳌÷·­¥¸uíTØ!A0ªQßkä3ŸÂ’9ƒí¨h¨Pô¿؉bæÝwkEÄŠgmjͪ`öófsSgqã¯ÓÁډþgWXŠô üÖHCÃ×9ž=ûo¸_;.“¨:ݬ¬Ô­^ÚKR²Wš0ºÔUqz¾¨¹IˆØ5%¦j^Í×i® + +žN¡Ó×ï6/–«Ë½«}×ð_áï3ÿï~ÿdÓ#à[üƒæ¯{¿îû–ÿ»üæ#ÂõIïS¾§ýÓM¿PßÞSß÷å'Í°‰ø˜ —Im6êPÚ¨W®4êdÒ¨£Q£¶ÛI­ëÞ@YjºŒÁ1jÄt»öqÓnû¾&s'_ÊjÕÿ;yÅÇÝ%ìU÷xéve•J9TgÈüZ(‚=„°àN=göy5Õë-¹3ü>_ÌÌ£ϱ&†á‘HæPØXŸ×¢NAж Pb¤pDxI0 ;Í~ IJÎ÷óGùŸ"ìÝiöÞèÉ4`F÷+)esÝ ø´Tpõ¤Xæi¤.MÁgÈMp¼Éxè(\‘å&¬^9›Å³`azá›UßĉWÔÓ¾\©3óiWäL]÷ü™÷Œt^£ ‰€€¾‘qï As[kˆx½õ$ªÍ1 vË{I)vKU^Cb +*uïhD5r¨8FrŸ¨‘܇äáÃ)¾ìð±@2íúÅËÞÒT†Ù²3˜{:=wԝ +Û[è/ÄZ´4ÇR֎ Í,YâqÆZñÁoiS[Q6óX7>sÒtaKŽ>^ǖD$d·Q9lä³sBå™T<ÌJ,óZ­X42r5Òq5Œz Ä=—ïÈQ)ÈZ%fÞX« 3Räâ·æ`܇qˍ)˜²WÏåò‘H!_·K“ô_C5ì +J~ÌpÇ!oÕP!i@µŠ;‰L{<©¶®1ގ¿úcü)pÈQ!ǽè—#…Bz{[Ðë û£rÁD.QMlô<ìyX}8Á[âí±ödX {¹ÕüÊ؊doª7}7.Û?¿+uWz¼p¿ü|püiùhühêÙ‹ñS¿Œÿ2u¢&†c]ŒÇç’æ›®x–ÊKíý¦‹¸MêE齖}ò]ê^ïÞè]ñ»ãÏóž= Új„7Ë7Û„èkÆãäVÈ{HÖ¢‘Ò¹[H +{C!¤Ößù8vœ:³S×ÕxLã9ÞÌÅÒ)g:BÐO–x³“çÍH:ñºbBÜ)ñh,VR½NUõ¦Q/RÖþ è;< ßEH‚ï>†’oÉÀ†dÄe)ð p'9tBRõiø!<|H—R:ºÙX,eÑ>®Nuðð4¸"ÅQ3.Ý_ì÷Âý^øŒ÷gÞ×Õû|¬ˆÐÛÿ¤&Å¡Œ>z=Z$þ4”A¸†‹ºPܖ€zbόß=lޙ,òO!4ç‘8%h ÇS§ðL™ˆ÷£SSû9bPíOÃq÷j°£ Ñ&çfÿþݞ. çÿòÈQ§kö÷ðý6Í¢âqë5¼C­ž}’¦V·ZINOèß +ÓAÿ¾.3Š A-'˜<@—*â,€y‡Lu`GÙ BS,yÿfë¸oäþÛ£,à>ë>Û>ûžÄžò˖—=¯&_m5K…„·ÄÄ1áF˛-\ ³ mic +5SM®Ù;µTµ\ê\mé“ûì+B«kSkÊzç&ï¦xçÜ.Ë.y—}—{—ç‹Ü¤ + +"1ŸØá†îB| +Ú׼Ћéª(WtïïÞS^w`nì}šj­€ƒWª’ˆ<ZaëÓÔ÷@tR½GŽï5ÒmžÆ^«CÙѤϸ7Ôà¶8`_&ò&ÉzHå¿ÉU¥º³¨¾+ŸÂïø$yÑxfµ!Ô#“MùöwQ‹ãå.[כܵóØ1\ãq¨âQ¯1£IvÒp]´ œ°‡âŸ4W=ØʀÚoá9y\XI5ì5«î—Iz´ÇцJ²zl5Óäp¢Î6ÜêÄ¢ªÓ) _íÔ©×$Ìðq@#²dLÔfE;¬¤['.vÔgÇçáY|°pH1*»!2ø­U½;*]©Ê²Tµ£’Ó]xêLÜF¥`V趏SºÃUmã]ÕTÉYM£bçÝØ÷]Ì]MëvT\Õ\Ð/{梅,pÊü¯içì d¨a1¦‰«Ë/œcÞcÉ5InA^Ãöv,çøácéHÔâî^³ª)ۚcÍwžÜ°ª:ן÷:ô;ïY–ÏÏý"æOl™þNυ‹a +xÔ¹éê«/÷¹‚ˆ,©McÏMÝÚLÇbN›Ç3tìØV»š¤b1“3xó™®kÇ1s+èӈ2µÌ"é4›¡Á-I˜ "Øy˜0ÙI§!>B‘&…›-¤Ù2ÕP&²3ÙwÑR+j¬:¥™³ è´S·µÀ  ò½ ÿ†ät¶Pnz^:†ôBB ýy͆g€ÿ́÷Ì)àC„^ë.`ß6ãˆ@[ö‹iÊQ.¸··ÝaÚÍRf³IὼϜuúæ˜ó%²°M©øW*W›¯®ñ^é»ÜuîþVáVï;ü·äö +{½__6Éwoöip¢üolÉ$Ùl.“ ‘Ô½X¼ÏµÔÅû¯y}¾RFp¢rÙ,ì³tJÆgf>‡j/’4øh]Ä'Imèn“Åh5(•=ŸK þ}|]8…KG„ß ´°Od¹ÍL›wò8"˜}Y “¥íۖƒÅ\-Gå¼­åG°Ûvë=94zröôÎ0[wë=™­Ohۘu_À¹q¶Dû|ºÄÿ9ÃQL²ÿ“(NdqvA0ÖdÛ¡‘W„ßvåó‘׏Û9¾) 3ñ”jöÎÝÝö؅‹Ö¶—"ՔZëž{RŠxeO+‚ád0¹|®þ9RÌ+ÖՈ­öÁGvßµ,—iuKK'©ÇŨ(‹Æ|‡ôuz]ð½¨ðŒÊL2“ÖIÛ#ÌÃMz Õs£µ¹­ Hý.ÚÏxléæ"éuæ„ÄÕ¡2i›–(›I\c‚5Á~Ó°‰2•Dv™oà6i‡DI%JµYD$Éêì,áU¤Ú‚÷d¹ÛÂf­˜Þb2BÆ&I1šqÒ4C[(F‚¢ÍcÅ¿Âô› ©dYy›¥¤éij °†Z¢çhX˜DUè·Â’U·ŽXi«¯è©yú<´G,X*€‚”×íùšÁB֝í=s(âىN”Oâ97Id=^5î±û‹t·=;©õ9éë!ý`,‹”4B÷mgNèfDåéZ+jH:ފ¹±¯ú?qW™”7_9â¬2# +nNQªŒêÂÍ·Ž¸PS"Í¿LðJfï«'fDPm¸H²Æ¶vúb˯PÃs/]Úåð3)–³÷Ãu׬ñÈèûMŒÎx£-=sñ^Šæ´«ðÌ{¿…Ï3vÊh425 +øL4ÿ¶N~{ií8M#|~5 ÀRú*z½éZàyð ôùQ=q8ÕÄÛ-)½éˆÇ®[Ž è"BQ‰äýÃaõ]òwîGäýû’-l·Ñ6Ügf:sB§·Pœ‚7<Ù°ÅÀÈޙYôYЪŽŒµ^$`£ÿ S÷asÍÇ·.Šÿ÷ÝpÅÀZÁlµæ”ôâžö¥×í¦¶^¡[,¢%çN/îí¸àCwš®M¶/ŠZmÒâ\iù ·ÿ]"Ñyñ’€Í&/Ê6¯ÛxÍ߁3goÒàÌ7zfœ4œÊÐi¤{a¹õ{ôð÷è]ù@Ÿ4{3Éf'8b՝t½S§ä {Ʊß;Ì<.{ý¿‡?‡‹©a{g‡fΒ£úƒcšâ¨´õ¬8;ÿ0öÉøíUqŸE´YŸ=µ$œé\zíà"úŠââJ¢–$Îܕo $F7Üt)Îêµtî½¼< îÖÅÿ•Â#Å©â‹Å·‹ìm¶=Ÿ²íö0ª7‘"|FTdô˜QtÑÒ\ tö硔çÇótž|âýˆ'}Ÿé”\a׸‹vá璼¥æ…?Ô{CØGOJý7œnßt?ß¹WÿŒ¦ÿ¡ÿú+j‚Å*¸ÝîLWoû×oîÑêöØѧn[vÝî¹c™êÐbô!y¾+[Z5¶ùšïÄ2ù+EmVž_’-­¸}l€þýå7Â/Á_R>²\CÝK=G½Oa™ßš^c¯ärÜÛüvóG„fáVá c±|ÙòeñŸm‘²ÒIù¸ýAåëŽgýÎ?»ŸðèêG¼wû¼~·ÿÕ`&ôpø"mSäKÑOÄ?–8˜Ü4¿Ü¼!=š¹'û\>[ô—†Z)wW¾ÒöLÇï«ot-_ü§ZQÿb÷s¼º¼kÅU+®î_óñޟöåû³ÿ‡,+Ñò£þ×ú_»°ð¿,Sç—óËùåür~9¿œ_Î/ç—óËùåür~9¿œ_Î/ç—óËùåür~9¿œ_Î/ÿÿ[ðp $µOŒôZݺ¬gÕÚÊঋ.Œ%Ö_¼qÍf‹èr8Û·æúW¬”ƒÊ{Ûêd)^ì;Ø\öd;S-UwºÐÕ¡.öfù}Ë/ô®Ú =~8¤É,„Àÿi ø.Y3øýœê;s­!^£màüô­`è«ÀZPƒ`¸\b փ‹ÁF°l p wÛ¶‚ý`X d +Øì  ¬IPqP}à heàYÐ R T¤At ‚ÅÀ 2`ðX.Рց!°HàqpäÁÐÌ@!r— +ú¶j±xþã ×|øŠëµuWܬ]´ã×~#œ¦¿úðçnž§ÎœÓaÀ`«0Ð(øçÿ»ÂVÁ8 +.¤P)Ì>‚êõ¨þU4zÑ=¨œB%‡ÊzT4T.Ce•µ¨ÜŽÊ…èب|va¡?.ÆÅô ›6&TzP;Êü+È0׃j¯ÂÛè÷Zé È vڗæ‚èØœyïGÇ5‘ã6¡ó®ãhÿ´mAEá>ü¨–Pq ~ß)àÌ)\Ð=¬Fõ¨^îuª×¢ßìCíŨXѽvQÕ3ÛQێڋѻ±£¶ˆÊrtޟñ9èx+ºÇíh¿mSøXô»VTûñ±èšéóåÿ»‚ÞûïpAí¥‚¾Á÷þß|®A[ÿ—?Œ;&ñøÁ=µMêúï5íëÿ|×Ï|oâýf?-ކ6Í \û©†j@ +endstream +endobj +211 0 obj +<< +/Filter [/FlateDecode] +/Length 1911 +/Length1 4604 +>> +stream +xœíX_L[×ÿε lüßØ\̽ΠiŠ!4¦IX†sÝEt H®Ym°©!<ÌÚ$Z„£ŒÑÚd¤j§¤ÚªhÕþtSŽ»­¸ÙÖvOk&UÚÓ¦æa]ûЩQµHÛÒà}ç^CC65Û^ǹþóýÿÎùÎáÜ+€€r ƒþ#G;‚ 6[7vÇƧã·Ü ÝãO͋‘úÇPðäç&2ON4|Sàú µO¦ÏLhöµÌow*OüÞä­Çxo ¿?…ç¦@õ(ò;SÓó§+ù^ÀʞWü¯`¼ÈtütÆðCý¯Ð>‡Bq&>¬Ø7açËÌfç+ü÷™>3—̬Î_Ñþ%œÓۆëà…Ð=ý–¦ß˜(¿Ï¸òjôzºüfGûõÉò†w0ÒßË©ã{åá¿jÆ +Ԉƒ\&o‘Ëzˆ8T +y²FVÌÃa0”Ÿ.¯–ïÀ+pé¡òÕòîÇ:ߖ@gàªç›ˆ·H½çȉ|•¬}ëL¾‡ð Þ'/“!x—¤à,æû-9DZq|‡<¿„PHúá'ðkr‘è¡Wˆ“Išxpv?#WÈò%&aøΧDþHÖ¹×á5€Ðýûí î}¤cO{[ õáÝíjÙ)íð‹B³¯‰oôzÜ.§Ãn³ZêͦºÚcu•A¯ã´ê +Eou€÷ûýÑö +߸•§ºëÇ~ +vÞ/Ù:7­øû¼šîã}÷ñ͛üW(8iD +÷²ÈEˆü™‚ƒ'–†8¾Œ©*NrbJ’'©7œˆÅУW²Š4r«CK%v±®6,…“µímP¬­C²)´ÍIä D%¸ˆ|°ÈÑÜÞFíÊµÈ S4Tˆ!!õb$Ô8>ՔÊkË÷ªÝ6(‡FZ¦Õj^q’†â +b±m-¿\²ÂX,`JH‰ø(–.Žs,‚®EN ±BÊ ±”Hõ\íx”ˆrJÌK¬r*†½Ô‹^ÿVŽâš°²ä_ã©G™Úô1´xììŸx]^öLŠŒÍç—DúҀr¯ÖÏúh4êÁ çe b0yª—âéhoÓÖT)@"6ÅrNÅÙ<å)1_Hªs]V砚Ê)¶1¡BüA†ù¼œäD<Ñ£%ÓА:ÀÐ E]#V¯7ZU P£W5±Þ¨_«wß fs“â½¼¶ó›’XE‚yC)²ÆT) *šv±.Ùùñ.õüø£½ú?õ¢†«$æo%1é/n•Ä+’ªëm`dDŠÄòùˆ$Fò±|¼T΍I¢UÊûúò9†Yûô*•¯xYŽRk,EbùÙ!ˆ *‡x¿-ºÁöo°€§ +ÏVº¬þW¬2 )~ 5¬Dy¬“Âè!¤µ‘%<»]¸Í•²±%»6Ë®~?; …RƐ¡¹EãEã_…PG÷#Æ4k×0Óä64›î1 ³üØÍE»6«Û!§Râþ uRÓSGXÑñ\T£8^ǨÚþ±wӆһy܄ßIÔ †°²ÆwGE« o¶}G¥¾Š¶0v ãíÿöÝoá ö7ëÙõysNM¾å%Ä$ÜUøºa ÀAtÀ”}³\Æw2 57Ÿvûžv7=åæ¿înœw{³î37f¹•™Ü,—q—Œòùҳôl?›^HséYï©7jfa®qÊÉ,ʾ‰I§«ibÒůL‰Io2åäÅÕþÕÜ*]½¹j’$™ZüZã‹áø/#žG<‡¸ˆ( žE,!ç ˆsˆàÙ3 ᧋AáÔ$\£A¡ˆ°Pò£¥ pé|PXAäJ代NáEÄå“6á;ˆçGmÂsˆ_,¶ +¯-´ +…ÂñáYÄ’Ò ,". rçr ¹óºóÇmÂââ†ò®ÂÇmÂ"xrÄ&Œ"”cvá8âÐ16 1Dp»cˆÐþ€Ë³ßåÚç²?ê²tºLAWÍ^WÕ#.]‡ ö¸ÚÚ-­úÝ[v=T¿³Å²Cªý–f¡žoò™=ÞF³ËÝ`¶;œf‹Õf2™ëM5µu¦ªj£I§7˜€p&‹…²1¢”ˆ—©Õ»öu $·x‘¯ŒÑhÀGO÷Uhƥ݌¸ä‹B[6;øŒF^Π˓…Þ€fM¡Rì†™&Sùì¿ÄÀ(˜FÓx6¬²ÔCƒ¸FÍ X֘ìÁÏiÇÞxº«öÚü¶¿Í¯‡ODÝÚ'!ÜQ¿ÆŒœÛÏö³ýl?ÛÏÿü€zãj_N¼qÙGI#¢ +@ãþ›v¨½ú v‹à÷V¥G^Z}ر~ìUu_œ›Œ§Åžt|ü¨Z —Ø«ì?l÷ý+àÜ*oT¾«î÷ +> +stream +xœœ½ |”Åù8>3ï¹ï^ïÞgöÈf7$ä "y9*r&˜HQ‘o *‡ˆ‚¶âQ<ªxP–0 -©R[ +­V«V¡-*Ú¢ÔRªBvÏÌ»oÕþ?ýþw33Ï;ï¼ï;ïÌsÏ3„BVԆ84aüäò +Ä>?É@6mւ™‹ôㇾAoµbYìñð{ƒŠ?!$N¹jÑÕ Þº¡éa„¤þp|íÕ×Üp•Þ>ðB³·Î™=óʏO9‰Ð£@åÀ9Pá¬ô·ÂqќË®×Û?"Ãý—\³pÖLýxåH„‚ f^¿ÈÙamƒö 2ví̳óý{2ߢ…K—éǏÞLÏ/Z2{Qòݱû¡ý1„Ì¿ö¡¤ ð +ð)äG(÷¤ã´ÌÎͧçiI¾€«;ó ¡mh;ž‹¶£ýè|®Úö¢ôäC#Ñ#èfôc´‰h:Ô܉&ÁW€úã@®•£ÇaG¡í¥èV´y±?÷9Z‰VsoÃU«a¤ Ñ04-DwãKrËQ3:ÂߎjÐ%èZ´·ås÷äîË=…~Šör¿Éu#3 +¢Yð=˜ûRøcîO¨/\q?zÁ÷™v# žÒ-EKÐÃ\ sW羃ÄÑuЍEqIÃÝg£Ï°ß̍€»<™Ëä@«0jAsÐÃh®Æ£I\h΍ÍD^xÆõpׇP;ÚßNôsô¶'sOåN¢*CÁût ßâ..Û½*[#&À(• Z8³ýýÆ üK²P°‚&ܘ{¹Ñ4zû \ù)þ7¹¾+¹×øQ¹áÈãr/mô+ôgÄåx<žFJÈBò·ÉðÄð½ͅñ~îþ1Nã=ÄBqOòÏógĂìќ f$…~‚E¿ÄVxÓ^ŠoÃï⿒dù ù ÷cþYþ÷ÒLxëËÑt7zý;ñ <_†çà›ñZ|/~ćñq2ŒL!óÉWÜn1÷s~8|'óKùۅ5Â]âñlcö@öwÙç*rkÐDÀ‡UÐûûÑcðf{Ñ!ô>| ¿`›± ¾1ÇSñMð½ߍŸÀÛ𳸞rÿŽ¿ÆÿÂg‚¯HB$N +ᛠKÈuäÇär¾‡ÉßÉ·œ+äÒ\5WÇ5q ¡Wk¹MðÝÍý™ò‡øŒs…°YØ"lž^NŠé6Éo}²»´ûã,Ê®Ënζg;rF˜Ã ŒBÕAïgÂwÌ÷fÀ¸èml± âR<_#3ÏËñõ0’wà‡ñOY߆_†Qz}¶’0ës?RM†“ñð½œÌ&‹É&ré ï’ï8‰3svÎÕr£¹n6·Œ»ÛÌe¸·¸¸¿p§¹³ðÍñ +å ùŸæGó3øåücügügB³ð¦ð‰¨ˆ Ä5b§øi 4Tš M”Z¤Òé¹°óU´½ˆz}ðQn×ÀíF÷J>@~K~ ø<]ɍ%€©d^GnÁ¤H¸^B†àqè$Ÿ‚±~l!§Én,ƒ'£yd€~7ÑÍ?Eÿ*:Á¿ ïö[¸óõ¢ßJ¾-¨#R ÏüןOso¢¸#XâGò +öáän`ÁÏù¡B#Šs Ÿq‹ñ-h7i@H9#o<‡Ÿ¾0Wào¸âÈ8À¢î¯èv4Ÿü:^‡ÀWòW£{P%¾}†žª(®KE~Ìå×î@„Þ®aNp£;p ÷°øy-G‡x}̽½?D~ƍåO +“ð €[д8· +Ý 4ò¿ÇW#OCIþ(p·›¹ +>åJà*ÍÀÓöuï>0Œ 5~ÀœK/¦‡x¾Ÿàƒæ_ +\ì·¨CœB:ÑՂ ×Aˆ3; MÏ=Ê]®Í݇ú?X›»î¸ }‚6¢mxuö&´E€r>Ɨ£È!aT®/YOÞ'“ÉæóçF;‰ýè øþ † +/¡õü{h2ªÏmÈý°»p؇Ðèbt ÞòKx…\ªÌŽ#;s£¸Eð¾GÐÄÜ3¹(VМÜ5h•¸ð¾ô81*föªhÍÄ jÔùm2±VÖ,v~K Z^õ-5½¥ÖÓ«±:T×·,֐ˆeŽLÄ:ñô‰ß=2ј`ðXob°àx.ˆ5ø猌epk¬!3jŜõ ­#áv;ÍʈĈÙJß2´S1h(ãK,ډ}C1ˆ¯aðN‚d+t*LŒlÈ#i2\²a教 F†âñ¦¾eM®Ê\ 327cѺ^Lëéõ!©&bëÿ…'þ~~ÍÌ|˜Tÿ…(Hñ¤Õà¼gÒéLi)EiÌ)ôq(;®î[¶¢“$‹Ô0|hŒí̦Áå0üñ8à»:5tdÚ&6êÇ1tE¨iåé¦ i¥gºŒ3ž©ôL›q¦çòÖ`r¢ê®'#§zþìª×Õ0gp{ÿ?NÏÖϏ™œ3qzc¬a}k~lÇL9ïH??¨ç\ʸF4r!’‡Hˆcg)›{ӃFK†OŸȐúÊNI¬d586*£¶^¨çMJ<þ?^ԙ;I¯bŹËòÝÌ NŸ<ä¼ãóºgYÏA‡ATŽ™2}ýzå¼s€jú/Ê€ñhJc<6"ƒ¦e&á¯3×5ˆ¦¦PFƒ!AþéUùÃó†òp|(vö-ŒnýúQ‰Ø¨õ­ëgvæÚ®HÄÔÄú½äòÊúE ­âtæöÝʌÚÐc5¢ høÎ^7q§†×MžÞ¸W[aݔÆv‚ɈÖáM;‹à\ãÞB«%´–V҃=@c0¼d;‘YûÐ^ ¡6v–gìxV'F¬N6ê0šÕIô:Õ¨#PÇëu«£ÊcFLiì=Œ$›úRqÖÕÐì84BEßíøîF•Õœ÷i¦5Ö&ô5ht" ž¡‚Ôž’÷…\ts²MáúìJù£‡_æJÐQH„+iOD÷rÅ\Aû¨ÖÉ%v9=öa}¹Ü­œå1ÈBÚi?$Íà"P¯B¾R¤öC: IDrz6i!¤-ŽÒ3\nEÕaÅ\® @íœ})‰CQÈË!‡4ÒFH[ ‰¬­Yi%¤ýN²3çk¿¯úîk¿‹»æ]SÁgê‡Í-ìp×¥Mz9v¢^Ž¼Ho6Xo6 J¯î7\/‹Ëôҙ¬h£¥b­èæå¼ð’^èø"È19€ìƒ*´•ó  $‰ùsî*JUlÙÏñs„Ã`ºDs]n·:*†)$G¾BN%_’úrb—ÍQ±eØÅä/h¤ý8òøþ™ü­$Gé˜C^i ¤ýAú +’HŽÂ÷|?&#;ù•Cª‡4ÒHû!}I"A®’?Qla9…ë!ò'ÈUò!¼Ö‡ÛÉ}@>€®½Ý^S[±—éò<Mæ_(8½ä÷íߖF¥`¦£^â +ÑPTɶ'D;9{ÝÜh'ùë®X:ºuXòÊ@"ГwàÉï ¤ Z!-‚$ô.@ï¢6H› m…”X¹ +)Fހô¤wQH¤ dr¸ÓIµ§†G‡yÁø5äQrü†•o‘×Xù&ù+_‡2åäµöH 3ÃyרPªP–ÃyürW‘3šæ ûa좐—Cª‡4Ò H!‰d?)l¿2ꄛ¼„ސ´lGŸ³òiô„Œ´yQ-50F³Ôà ‚lKlKŠh©ÍÁ!ÍR÷ÜÍRwlˆf©WD³Ô5+¢YêÊyÑ,5}@4KŸdä±‹Š£5ãçãØ0;¹Fé:¥ë`”®C<ؘðEßò´o?i/-…{XK—”FÛöᶗqÛ$Üön›ÛnÅm«p[n»·¥q[·Ep›†Û^ƒ`(Ú°ÖqÞa­æÇmoà¶í¸m)nKá¶$n+Âm1\£u’xûE•¬h`Å®a”è ¼`(p;‰ÃˆÆçãÀöC~RŽiÐ(V¨7DhY¸«´^?î7¸bá° É«pá«0 ¯¢#x˜ W^…›¼ +7°C^i¤.H_AÊA¡u!t|#Ë퐗Cª‡4ÒJH_AYw¾‚DÐÂ|w°Ž•ç;=ž‘WáKø8‰kjXM«rÃØÁã#¹©A^/°l§Cvtbëž[¿ù·™†™È=d#*€‰Ø”/7¶[íĶ§^ŠóàP„¬Ãµ(…“PBKÙq5 +Ë´¬Baò<”íáip™½=U݇môª=ÑoÃÇ¢Ÿ‡; €ÇÃ/Eߋuò¸=ú¨y~OôðÑ×Ë;e¨y9Չ¡ØcM÷†E·¿Áš®‚·Go¥Åžè-áÑÑùavb¶~âò¥p¤Ù£“RÓ£ÂýF†¯ˆjKáž{¢õáË£uz«jz͞hèBZK¡³%aöÐD„ÝpjM'ž£•I›¥Fi«ïnjB~ïŠz½s¨£vÔÈÈZóyúÜÇ\ÙÙ0r/þ-š÷rCñ× “h=7tdSӘN<µC1ühóÖNÁLÛ¡˜ÑÛ=¬·KÂõЮˆÐÎdBIÖ.i2±v<¦ív.-j¹³¨ˆµñÅÐRÖf©/Ö»ÍIh“L²6Þ6ôk󆷍¶É eMÂah ³&8ˆÂ¬IY“i皔ç›ÜÙÓäNö$ŸkÖÛXm¬G¡MúýÌžNã]Cšf5Sí5Ñ0Rkæ®sü™¶+b±³šò]ªõŠYsh9sv¦)1{dfVbdlçæ8ÝLOIŒÜ‰š¦4îlÖfl¢ iHÌÙ´kô„ªšóžugϳª&üÀÍ&ЛUÑg®ùÓ5ôôhú¬ú¬ú¬ÑÚhö,Äp|BãN o;•»ˆY|m ś†{ÕECò‰ûo íme2ƒÙdÜ +‰žê;¬ï0z +hŠž²Që<Êëxhޖ?¥Bµ#1¥—-_ºùæŽÔÿ–ª–-§®çé¥ÿíçÀÐIýúc2¥“ÇdêA#Þ)IPÛJ_)3ب3›À>Ð+ûAå`ZÉq= i]­3™ò ¿?ÿËóåJmä¥]X‹àehi—‰Œ™B€LɛAû@—¢âai¼àRœÆK{仝N#ýÑw6Ò²åy(?Ëò¥~%\²Ô’ž¬tψ-ƒRÎŜì(ؠߣ¸#îHB\q]g5A1¾‹²¹ç²ãÛÑA¤ q»hþ¼Ø‰'h)ÌÕ‚\‡PI¹:$’G3ÐB´m…[o5?þ ?­žj9uL=Q§Ö¡zš«'ÔîØá¬п²ºÒã¥âköœpiEí@îàÁÅw¥Æf^φ;É<²zX¦‘E‹ÇÂ#ˆ…EÐ À/ºÛŸ§kQ?EåcO èãWuÜ3Œ”àÎÝ»“Î}Fj…·á.“÷".÷q»»–tæ>ÖbîÚ8L¸-ÜP©W ì†Ö0,R¸ãˆǝøY¸¿ëFx‡:õÔ õª¯«¯[+ôK·Ü¢Ð·¤Ó\‰ñ³›²áïßÁššûŒw]`1»fµ[,–áSí³yøT±3w\sÐcÁO%•æ!Zk¦Þ +ŽOi^«uøÔ°Hs»…æ’J󝄚ušŒð‚;bµúLpq‡ÝN¦R@ X­9…Ö ¯Å¹…Ö¡r˜ùƒ„I¨‡ +í¿§Sp'‘ÞéÓ«•_j³Y¤·Ti R-šÓºž[ž»g‡ ¨áÎÜI0rÍ¿ÈE^HNHv¨ãxq-Yg^gÝ&˜$³Ÿ4¸.ñ\šâjö4&…æKóͳ\×xæZC7ëÄæíkÅ¥ÍêëþÈ»â»æíÁžîÒÞґàë:l|£¹é ù–š´x¢ª¿ #“j"ìÅh 6DaÚ´)ê`óâ°Ñ™V:–" j-—Ƶ«Y $Óˆµ@›"¿¾ °á4¼tKúälYÌÀü à–Ũ ¢ ©—èjv©Î•^¯Ó£1QXœr©Þʊ5•(”Ä©óßÞº¢}Ùðyo?þÎ ÷î}ö曟}ö֛/n!oc_ðŒ]ÙÜÙlöÕí¾ˆÍ>ðÕI<ÏûrîŠåGõÎÖ)èm¤¢÷œå +{CÄrE –sšÕQ5Ÿ_I6’‡dþ›(Î$` Áo(l(:ŠSËT¢UDêÌ}¡9z…zÙzÁœkŠ<†0l Z €*ÞËFï%à˜  D˜÷á:¼éÄ»XGöƒº±ÝÀ*ê}µØQKǵ¤±~2žpˆ¢T 좒œéöö”þR¾Œ¿ièÍџ~cô²èU‚Qˆÿ^$eА1ØüK”V(ÀjQjìbt¥SƒÉ¡Zý.—8ÕJqÆá`À—šIUŠ¸…Å m‰Ð³‘° ÎD,ôm#ä%ÍBŸ/U„Ä¢ÀãÊß9H󃨜¢Hºžæ*(ù‘žZœN¨™ìb<ç¨fvºÈԈ›ÖÑ{·Ã­õ ×ÿ®±‘ÿ¡§QŠ¤Ï£OcÓ†ˆ/ ûŗ¤_˯‡¥‹,M–)¶ù–+m7:otÝé|ÙùIð“ÐÉ e¿ùE ‘Q FTñ¹“0ŠG‘ ¥ f8QTYßÝápPÊÁ0g¨ä©]ãLÿnúˆvy&Å TÅ T…*ãfÊRßۀ¼”XñKdŠ!Ò,ŽÝõdYHVžì#E`ƒlÜÉÈ®˜ðé4åŌÞêºëêOt·s8)®@¶ÖÖ/mÖ¬KdÐà Ԃ[–ä)1鉧jƒ¬®ªcÒHä(Á/­!¾ä“µí¡›n{ïu}ó»·O_øÌ+O4G¶oV7«ëÖŸ\5ÿG¬wzÿ‹íÏ½üÔº™(ßî©Â> @+~q/²ä¾Ó^ ïmÃgÄ(²Ü¤&ËF˜"ËM:‘²\’ê²\b,H–õz:p2Ë–‹,7±\'pg£eŽåa˳–×-Â%Ü%Öóœ& +YDN3'g°Zßàx7Çñœ‹•—¸—ÈKH½`«¦ ž‡&è …ï$W½(ŠV­R  èò_2A¡t‚!n•´ÂD•Ô¯–6Ù %y³Õ]…ˆJb„#ôbz ÇöÐkÈn['ÞÀæõRpŠNPú©Ê€zªît£–NmmíÚ~ifÖn·K`ʕD¹³èæÍ\YËö­åø‚‚:z‹&àÐFs[4s­¥mB­EKÕZ +ÃPö­eXЄ@wGiЀªq¥£Ò“ppL6wßAýÑk¯ud«ñŒŸr{Î^üÓì〔÷wϧ<—Jú¸ð4Šà³šËŦÓÉr³ŸM3“ëâرÀ˜…\LÎ;YÎù ÑĈCoD!ûN–›ýl¾i#6Ùì:§€‰£m¥Ã‹Ã6%âñ„”™í< [mI~`ÛLM`mé§l¢ü`9[À4º¨ҔW”8;³³|Lð†‚õ›]ϸ^µ¼kù0$›\~[i3õú›÷kà€Q©.Åãt¹Þ°ÙÝ6—Ûf·3Ð\´#šm«Ølv̓ózÑÎã·©#…æ ÝsÌPª+Ս*¯¶I³ f!õHui©ŸIu?F~ÕOàEN½H»èßs¾Œ«‘ß”7¨Ý¶ïÃ@íì团ø¾<IŸ8u‚1’¼à>ÕB5Sà#lZ@G=¶Vî—åc&ŒàÅ ñ}OéwÕx©7؉+î‰sÀRÇ-ŒOMý¹ç¡knëؾáÒ }ž½‡¼ßýâø;îíÂò²»Oý¦·©ëï:ðÄÃíãë½ä/dW4gOÿî×÷¶¥ø58ŠWxYÑ"ÍvÀŠyø#2o’¥Ó۟`Þd±.å8Bf<ã™ Ú奦¿¡ñxžA¸z(╠@lù!ù⺱§NŒSOSiKõZÊKkµ:ã„פ:´ˆ8QJ t:kfr»7dOŒhßËÝöÏ;ùï¶o¸?ë̞éüp;þÿújCLZ€äõ¡êύ»ÙPuƒ ù%–ÇzàBv\Îò¾yI]ÒC1©s͙f\Ȩ$ÜsdÇ%Õôe÷¥P9;‘b¹~9ŝBF?ážã ;.1è‰]Î$R9;‘òŸ#® +EúQvrŸLí×ϏˆBŸˆÓ¡|œ)Þ§ö0½;m5ˆQ™ÝÔ`'í~Žž¤ü“3ZqTæ3•+òXhs»£‡©ìžsúõùÊ;•ð'jk{tøYGD£#¢Þ‘cL—·ì6ÿ|ZÀY­VÒÇÒ+=ŒÖ=ìMϽŸñ0x.ÏwÀH”QÔT{q‰÷"ïE©O-Ÿ÷Lýñ-è|3¿L^l^bYn½ÑwZ7ðkäUæ;,k¬wûÞr¼ær‚(hǂ´ˆÅÊiÑ7–¢ +O $fA?²@7¶öýFÚ` ƒ-D([Pè,E–î7aÓ>r5J祍Féޑ^j×bÀ;ìÙU;±wâ{µ@…Ÿ1k?“·~&9ýK3`Év’«5O;YÄN±“EK=†"óhâÙ4à×Gal„§z¸JQà¬maƒHåXž“0nÒ²d1ZÜôƒ¢HÿàTªº*¯H^ÈQ¢AË}Žápî^ÜÏ[tͧû»¾˜¿`íÝÙÓ￟=}ïkæÏY}çUW¯|Ѧɫ¶m¿må3\¨äÁy[?8²õªJʬ{9‡0îÚøKþÇC£ +Õ¾ïFᗳ#Ét¼yïuwßE%ÇfrŸ~9P*Å«÷"fª„zx~TbZâªÄRÓ&qnp¹°È´Ô|»p»Y,öš8qiÄ[`2dGÅÔ®S“L.g¤´´¤… "0ÒQ0ڐ ŠC–]á7ø§5«…ÒJ´P-‚Š«%)”‹"GQ¦½æˆnŠU┤q·¤q·$½›‹Þ-™²„éÝ, +½‡…b`1½ƒ%XýaüŒ±—ˆB[GbÌЎå­ìÓLD0 oa×ÁLDÝæV˜Ý’Òìﱡ[꺩=Že¼(?AçÌ&HÀÙë@ѦæbÚQ Á‚ÊÛەŽx…·‡ëØHÇ+t‹)•¹¢f(ÑáÍ$µíÍ¥W]½zã¥m¿Üý¾`Õ ‹ÇŒºí±ì‡xÁå©ÓO¹Cv»°¯iïì˟®,~¹íꝭ¸IïUc/ZXrf«d4Ô¤P}çªÜg +ámÀƒ¯vÏ"ó +Ö甽ëqm…b¨Â: -BË +ÚЛÐÃÂóÜO­{¹믭‡Ñ±‚8lÎGAW*öq”†cÑÑÖiîK=Ós„ù79ïr>Ì=d{8¼ ?E¶9þ`s!7 +ªn5ÈS§`{ŸZLy|CŸZՎ0rE,\(›Ԕýb”ŠaŒƒQ›:›:›:_*&c`oÔ2³Ð^ʁȬf¦iÁt°)€ÙàÔ &l áõ›_‚}"Ÿ(,‚AuUVð>)E¹9ñ¸”·ó¯\}õ“Ù÷~²xåO¸lÈþÊW~ôì_›|ºæÉ¿2à«3¿Ä×þþûîaßölý Yëvè¨üjxCzB»€½áF ÷¼$¼à#134ÿÿz+j &þÙ«d¿÷NʐæÿúNÇt»†uÿù>Û¸Î~B2Ýè» ÞÞ}å? €ÿìþ“Äã´`ÈòÖb|¹ìÂN®¨ŝ>’D„‡öcѱq ¥š0N'‹ J*2(©ˆR’J_µ(Æq0Å­ÌrŒ½)ÓRòN‘Øü1-¥’Þ›,i+ÆÅlÈ +ؐ°!+HŬ0V£0W«HͺìÂ~½ðÿ…,(<®æßåéªËQÍäŒWq1špÝe©uÒÚ]p,çKž–¬ìÚåôÒúµ ðÌdòÙ\8bRL²"p<· À‘“DвEEAá1Ì©Œd…#fŒøN2X³÷ðV!#t G^¸X¦uæþŽÖœ‘8©“¬Ñ"f†fF\f6»æØÿUûúoÝFñô9Õݲøhä'(=ÔÁCFÐ ÕÆ©›J?ójJ²Z'ׁîíÝ;º7U‚ÿ8¨I·ïéÁÉ]ē`W9ªDÕ樒U›Ze¢¢Nå׊›ÎM,õ€:L…0˜eZž¦ÂP- ÕÇ{¼zkE:Öfg­\è®å5w-ûÝI=µ½”ú&zc¼xIKQퟢ +Žcø“›_!ÄR÷Cä¶ê>}RØ×]BÞëþÙÙɧ_dYÈ ÕíK—t›fÁ„ç"’cÔ°!Ïhq‰è$ɱ)àØpÿ³ ;ý=¥Aü!¥áÓ]®QîOù?tú÷€éÿÜNû÷ B¢ú§r>Í"—š¡„å†cUc"H¶YŒ?å Ðe¡>²8éiÁnáLÙd¶!ÙD³HßÀ¬Ò^›¡×{h+³Š¨ï<ÿnßïv¶ã¼%Zêæ©ïêRé´>¥ÈX²JŒØE–s,çY.°\¦X™ abx:•'¶s¶¯ÂrÉ0éj˜¥PJÀ–˜â¬²³L°pÛ@I‘A[¡/NïÆv“—È4äD*™¦YóòY4&„ÝQ§QúTù)¦­êë/Óҋóè8ÒV"b—Ý$$ó+,k,¿¡´\d¹ÈΕðIk™­‘»Œ_a½Þ¶Ö*›‰ ×ZÚƓ1ÜHI“ÇZ‡Û”ÉCÜfi³¼{FÄn³õð "[¬Öþ‚  l™dŸ„50¶eÙ¤˜©Úl*§Vg›“8÷‘mȊ´ 1¹м“Âœº«A‰i–•flÞ/lÃfhE:¡°c†„yñqZ÷[¢˜}‘ŠÕN2íŘÐ*´ ÀÅɶ]Ž!À–4¢¥ÎßMђYépìux¬¬v(µ×7¶<åkoaÆ;ú£sFúϑ%w°ô]Drï2}LÆçú0&bÍ}³Ó¦ÐÚüŠÉ;{⵶²8[5ÙSSk«¨aàî¾P›_I7•¤Bƒ’> öúÖà¸#áÀ ìxáËú{Õx^ÊNۑmöùúÞ 'ü„;ûÝ(þÍ3ÕüÑ31J]€$‰RÝ¿¼G_T;¾›­“˜Ùú²ËS%û-^æ +=®PH& %¸»L$Ž“MˆÄ +4Çx×xŸlM—ªS3\Ó}3üӂ—†îò=DÔ@„㜳Éc(ÔcÎ=”Ò˜ ð¤b`h¡liŸN˜dèFuwÓi’芝)֘ΏD§°žñÀ`[.°3)dg¸`g7·§(è‘L×Fb/Ï:gtæ}KÏlýÏh0ó]*ŠWðÔ¸djpŠ*+£Š€™fáuxà›xÔóÙ=ûe÷mû .xïCºáó{›}¼àG_ÉþôOG²[wÿOÿEößÙC¸ +‡va󏲟è>ß tfE~tR‹ÌvÌw“1ê÷eêenÞl‰GD>¿n9!uC +À7{ØRcJ¦£ë` ÌÌe%«yrJëKß\Ƃþ‚~+2+2+2ëÿՖû¾}è-¿Ï¹±ëC›VÃ@¥öµ-˜á!0²ñ¸à›”Ü7öšûš¾Ì¾ž]‡ozù±–Kܑ½SØgsÎÞ³à¥lw÷ Þ°²ùv•zI^µÆЏ +AWŒ;Í6ìž½J^åM,œEf¹Är0ìºvYõ¥ ݽdzÀÀþe—3XåÉ]…ÅUz\P\¥æK{¾„óÜUÒÏC{5_ÒóÚE$m‡/ŽM67‡„—˜®·Ý`_­¬³?`}ÖÞi?nûÌ®‚l9ìn‡Ãî°[LΉ½Šè¤±%‚ßdòú‚ˆö8ïÝû•N‚Ï‡â… -ü~»Ý&G Üè½ÌrX,õN¦lˆF¬™hL«H•ü*æ™?´%V´¨¨­ˆ+*ô“^‹+ Cüÿ+†ˆÿ•¯&¨–ý}k?O|cþ¼oˆJÎ<¢€"µå,FDz¢÷z}PÞ`ÒY³×ÚÕÁç`Êñb&;mÀGƒZpZ'$›®UAoV £zXgS/Ç©Ïës%¸~1Á“­ÑÄ'ë¼uãoí3õ’Ü©W¦^{ißø˜?ãÇWo÷À“Ùþ¾ñ¿¹á‘w ’Eã–gãwld–º—s•57ŒžÃ"½šsŸñÞFýɯö¢â| SʈhJ²µ¶–¥Ò °<Èr«á"·€ÙÂÀ‚/8˜@XŽY>‹›Å/å–ñ|²¸š« à.’.)hˆŽ,U<™k’š .ís§Ë– ÈCç¸È’2€bH°é×ë@ÒRPL‘p…úXSE¤ˆ+N´W%F&ʧǦ%¦&¯1ϳη]åží¿Á|£õFû-êò¢¥É5ÜzóÖõö»ÕÕE·'ï³n¶oöDò*tßxÊJM©œB¨$èä+¤ÐlàÖ¾7„î ‘PÒkí)Nâ¤à(ÿӍ"}M‘ˆ—cÌ=ípÖ¶è®Z´°¤òú7¤õMÙ¬f!.ˆ„dIä9"âdQ!ԉB$Ô7¨QTß¼ô„õe>%¦­¨8†'àV¼oÂ"îÄÍ֗>’>z|±ÉX +54jêY +5¥P .¡âÎf#tuû”¥÷, VęG6Ψ1ÎV3apÊI•&ÚØi¡³g%Ë9…Rk`@Þ»Ô2ö ø 5ïÌ6ä\Þ£­v·¤Ñì 3ºÀD@wA4ÀÏøàÞŒè\5RY‘÷µ³%O$™÷‚{Ü>/ïcD%‚ìL5¿hñ›[>7yBóì5ç^}ë×?~òÛ5Â>ûög3×Âï7¶Ý¸æÌ£¿Îþó!üžzíݗ_:²áê„ofºæÉÙ yåÜ·VÙîºgÕeã++ç÷²{ÅòCK—}N)ëqÐc +A¸±ESRöF¾Q~]æ½tn¼ VñCäQüÅò +ûÓÂq»dAÄAÃòD“Ûà›ncN8½‡òo­éLTéa¢J‹‡*§ç˜¨î­«‚–Ò[Ξ¨g6Zp¥#¯¶Tƒ¨/7;øÖW®Ìžyç·Ùï½2zû-ïîöÝùQöì“÷`ëçÜø³íûw_ñ +vèš@²^£êâb{‘š·˜ìÌbb±·li×Ö³ ¬GEÉôE˜CNЗ‰Y­µ'þÃÕ5¥UžcV€Òì5“g‰k®áɃLƒ¬ƒmÕΗâtQG”“f¶¼÷ɚ/{{¥´k¨[*f8®®ÃיIŠ/‘ú˜Km)ç@~°<ØLïx¡<…o‘›ÍÓmSœWãÙüvûZ›ZW'è]ÐüÀMŒ‡èš`[ l35|µ˜ +k¨ÖIW÷Bµ.½àiXN¨V. ÕÂÜwµ‡©Ü¥Eõ.ì$«Íë«s9½¾ dПê8 35¦ú9ážÎZ³¥ ~Fñ:³B!B!‹Ëu.ÔQˆtžŽ‘îêšÅ2ÃJŒ+uk ¦‹èØDj²–Ï°291`.~»»›¤Of7Fã<ÙMä,ùEvÝòú —âÕÝcÏ~KÌ}«'D²t{ÚŹã|˜Šú ²M+3YM¥k°´ÄZZZkè© .½¨´ÅÚR:Ï:·´µÿz뚒‡½? >kõô1]‹ÙŽ +=x®ÏžÀK}õù½ç£>òH/¦194”Kœêtž ¨¨¦4žBQ_ԟ.+­ªåkË.â/,›&7¥¯’ç¦WXÖZ^·|ký6í¨©²a^-/ªòUÄÝþ% KHI¸ÜVoÛhÛbËل-¶¶¯lœ­'dÄÆö5ب„£ü18Í¶±&›HÛl)*ÞlÌß`³…9_'yN³ú˘"z¿;–PO×QC±RæÌ%3ՙ½½9z uÍÑ(kjþ15/¢Ü<¯Üü]çæE<å·EtQ‡†pé&)3þ¤™iïŠX¿Šô€ +Ë4[±†Rj*–êŸÚ‘j©rNå0(=ïÀ)f•¥Ô2¯D$QÕ¿¶«–l­Åµtóƒ6ŸÞÚǂj|Ia9“êåLΗ3ÁQ^´_<$’¨X/ÑÍBjÜzÀ0 š±1Mž…š‰~¦Â³4‘Ùg¢©ól…I0¨Ç(£âb±.÷ÓiЗm…8Ñ#K˜Í–þä*?Ž¥ëOt§éé=×.ÖU&=`›*Œ.¨k-NR Ïä ûVWë1•C S¼ÛëK¤8Q²ÅG4âê®Ü;oÇË£—^X=ÿƒ«qeú•7dü×¾sÝsT“¯ðå°ïŠ ›+̝óDªàö©£ž_=nÕ8·Í,J*×ö½ i±ñ]c´™÷»þä™Õ Âõ «}Ɩ_ØzÙø ®£Öá &êÉRQ~]» {‘P-4B}4%Ñha¸2<<¼(º)*vÕy낗x/ ¶È-ÖF{‹÷òà<ùëûµÞkƒ]Ñ÷-ø>üÅõwßß-8ÍE1¡Ü^îî/ÔÛ5áûá*Ⴢñß©ÕcãE‚Ba`Š'l3û =ßoè4ŠEK2ä.:lƪY3·šÛ̼¾jofcöçÝЧ õ$CQ³±åÇLóé\Óm2{ó2ì l[ CG%r2âà=ðºŒYe•C:NßV’$¤ ƒòºgðIÌGq=9LU$J7˜ÒTÅpÌP3];)êa†zTúuPÜfM½´{Øϖ[YÈ DFל§¿P´Z¢¯u²:ÐS™‡­¶Rt„?æBqï´8ž}TÍñ¨(QX́¦y.”®ï3Kv^±c±–ýúç/Ï'USï]ñÂO—¯xAØ×ý¯ã7¾±4ûUöÝGñæýSï:øæá×R rBî8w¸nÿs/òåNj…́ÌFÐÄr;ËU}LYžß Re[iÇv3¦Ë€‹‡xgØ,ùüÛ<’LLb&±Qºs rFXßyM×Á´TÐDc3G›,8áá›ìšìkuµú~B~Â=l}J}*h‘­e™ËÍ–[YÛ¬O[v›ö(»-¯eå¯„³ΰ/´¯´svLygª?[›l…nmB[ÑQtt:»ÝŒÎõ1 ]7ÒN’ኽÈ&3¾\b;ˆN\õKmÃ¥"s:Š1Âk¶4X™Å ¬±8¾ÌîÔFh .dHdHpQØÃÐÍÃPÏÃø§è„£R½D$ó÷)ô2‰I'IßCÇZKBUzM:‚œcp-Kò?šÂ¢ê5ÁÙ%§häÔc ÝQ[®¶ƒ?fÚ*œØGùrT±M^=æ Å)®ngÁW?û ûï%Ÿß¹ýOс•Ó×=÷ÔóîÁ«}/ÂXy“U;Í¿æÕ·ß}å6à9£—Žèqqx¿v³BxkÒZeiªÝÕáKÉe’{røjr¥0Û4ËÝ#üÁõQà×'î¯| |Âx‹7M)C¤ÜIêGŠ¬ý¼ƒIµu i°Žr_¾T™f½Úú‰ø™÷;|ʦbg3«và9fɁ€épç1o^dL§’Îç×/²YL:ìFƒó‘ ˜!ARU;°êЭŽ6ð%Š¹:wr8)Kp0qLù”C¤xî`ÜÊÁÌ%:G‡±ðä0˜( µ2BZæÔ7¾è{068‹$æôÐ÷Mî—IG¤œÄSü/qR„Ñ“{RD§+†3L‘‚ g‘ª ½8 U֘qÔÃ\Xe3‰ãÔËÛM4c5t5%^MH63èjïÞA³¬üÃòyïÜÞº¹|Wwì…å+~ºí¦ë_ó؆3OnÁÜú‰Ãˆí»QÄùÖ¿|탷P‰4$R8°ã1ÍEa™Êµ-¦©æÙÜ|a¡i¶YöP¥$?TÇ´I*Ó¼Øù¾ðûtàæžèlL +Ït.Î _/^ï9MNûUäÅv«Ï7ÁKMSζoR·ªDUùPX‘Ð>ò¥ƒ³wilªT èû]À|ºþ?6i2µÆ§Æý'f´ZmDVªØёgʸ©¸´*cÅÖ`”Æ$SU´|‘ªAQõRÙÐLoä­Ô™i>þŒáZ$iE¥UÆ\ëT¯s€X¯y³y×yE˜Í¸—Í>Ìûù¦%ÍüŒÇ pàôâÞf2 «Èï©ë^\Ç,0§GÉVÎ ¶ ûüÝRœYÐ8žbÊ wù¾²/÷~žý +»ÿôlÃg+í«gmèþ€L´ švçÍÏâi¾';pd¨÷É~œýVíØ7ß¿fĜ§©Ìq:´ o#.Ñ"n¶ÊýZ`Qà'–G¬ÏZå µ5è +ð:¬Z0ZU [9‹=¬`I»]<'"e‹»s.6†.Ï7²ÁôYt“G¹³5²]U±µ²t8Zµ á€F©7 Yz‘›ùwû0çn!¥gT–÷ï~÷ïºóþÝ/˜˜gKâlë(èù/2­üIàe¼ÅÑi¬ °O÷&8êï=Æ"£ºé-tM Ží¬uèñLnÕ!š$Q½W59CÈ!ÚCŒ¯ÒU«pèqI¥#Q]Y]UCMÀ§)›öÐM_í[¶¸‚·¯¸¤94¨bÒÈC‡¸‡7,ž_5êRç£Ê¨Ö+6œ½ +(oxv"÷P^•â_i­f³à.3'ݗ˜Ü¢© PPfN¹Ëµæî‹Í£ÜÓ¤FóówÊ¿<¶~‰²â¡‰¡Å—o*ÛZ& Œ,©/eo(™ŸR2WšŸUÒZÖVöAññø—‰¯Š>¯èé$;;ú„]Åj õg‚¸ u¡Ã,r‹¦ +á°]i( [¯§2YÙ{£å×F¬þ7Z1Û ˜ôûû°êÓ|­¾6_SB¦–1nìcÜØ×Í}Œû¼ìuT0nL[‰ôXçÆ>=|ß´þ6‡aÎ2;N¢Â(C¦(C¦(C¦hÑ~û!û{ÎÎGíõöñ iè»ä¯¶3µ)®Ø Ùæ™0}²¾#ÍÎx³=.[§ì9=î™.λ$ÕÞš±hF¾§é>¯cù­^ÇtÿÖbá>øÉl‰b T¢si_u¥ƒyS½w[\µÃ\1bÙ-ëü6¼"óáÉkw÷Ë7>=ûí¿ø⡧o¹yÛö¯ßÖœ˜¬¸rzMæ.\÷уox°íì¼o]ÿƆ#ž×M=BŸœŸ~žM?¯ÐçóLPð† à© I§žõS¡¨À“ÿ –Ô±ÍÃ0Õº74¿éªeIoWÛùWu¥‡ƒù^×ÑÑÁÿíС3>uæJ¥·CVâHÇjÖÞsyÞüå#G{ÍÖy3¤oxì=ḉ¾#Q`#Î"Eké£UÕzÙ€^ê¥ZX…]ˆ +[„#?²“ mBNà¶ÂéäFïÄÈβn Â]`¹‘Þ´÷Í9Ú+èE{lðóRZ΋h}äÈ‹²ù)@ãøó§€Îuå£LÙÑ~(uÝÞÁNu^(¦@¢&È_ö"Wž›©½âtÀaÆð… dA(0¶§… dA°ë6V°€Ý\† U Àip¬X5§8 ÀjŸÈœôÚX³µ*É㏙þìû$&üA8#>9–0ùC1Ç%"aÑC…Ÿ„ÅD0 *‡“xSrk’$}¾ -¹É<3¡üÌ|b>IfB¹éD:ò{É"̐²0CŠy#FF/s +·h¿Ükٞ!«?¹)„Cì¡ž„ØBԔwЄ§1‹j³ºÈYè£B†ã3DŸÐ‘Ê»}‚‰‰‰$>Œ0u/(ªGãÒ»èXɂ(‘jDÐ_¶É˅³†yJs3¡£$“¡(P”ìÄ×>_KнEL!èåCjé½OŠw³õ‰ÅKôÀÝzºMZ¥wz…ÍÛ,nWÊmq„°Óê1ć¡÷ÿ7fC]€­oúØÆN&]˜Ú[Î<^ñô¼Do}ã±çv%š‡.úqG㕗¬̧î7ãŠÆ};öt“G¯™1øþ§º í×_?áá{»ßÏkŸ%yñNÍ%p¢‹lS;Õ¿rŸ¹Nr§]"Oƒm +ånPñƒêaÿQÎÏÇd·Ííu‚VE¯U±Ú,6imÅÙòkÉù™&ágZ…™éf¦O˜{ô 3c#æBÖ"¿°'B+:Wfiϐìä=§5æ¢13•ÅŒáÏ<ÎOÙVÕ-ü'ýd‘«?ãïòó~ŽTz¼ o¼ ‡¼ {¼I=Óáȇÿ J¡ü‡Jáè¥RðyîÖ¥9ÿSEçSO÷^§Ñ•ŒSLÍ8ïDZß`Ç~è +0æÄ9=Ã+:LŠ¬H +'ª)‡h a»âÌ# Ý!±tŽÅ 1ònî^X±ö‰åµ>>AU:Jç_¸ô>õÀŽ†Ec+né^JÖ\»`Ø}ou³]^#sÇùb˜y+ +àý{<~ú>.};Û~\›M¡;ᔔ€e´x¡XO߶žèc@—f+JVõ—0’T)FúËX „4àp+Úbulcèb³èëA ›‹ÅFÍS¶·1‡* +3ì`΀<ÿ`ܒþˆä<Ž2&‚˜!ÿÓPlQ RwAþG¡zc‚º8Ýr:ÝÒr>~‘Ô/DãL“…ɦ+„+Luç¯>Äޛþvב쉽ík×´ïZ½¶¸pñ=+²î>ø·Ûp[ßzó­ßýêÍ7 ³k³sù8`…Eðfm™Eí«^ ŽQùúX&F¢±K¢ ÂSQ0¼`QlSLìºØwq¨I¾ÌÒìk͓ç[æª |óC]±·Ýù? +¾9æ>9Ëż >­¦=Õü`u±:]ýÄü·‚¬jvØ8o˜.WˆÞ°ÍŒl!BòáæV°ªhJ«Ò¦ð1†1-Çð©ff¡ ~#®-]ôŽCח.ŠÛÕ,ÆavU’ʼ+PwêÁ$B?¼&a,E¨½–"Ôó–"NÿçR[æ†Ï–"¢£küø¼µˆž¥ˆô©cß_…`ËŽÚދ.Cx=nú›`©b×kÆ×>5ø¾9ëÏ[~ä¦éû9ž^qýóÏ,[º3;Wøùú‰7ä|2{æ®KwŸáž:xàÍ?¼ùÆ{T£Z ,á5˜wúX[îÂ*|?‚ŸÌ_Å/ãE“C6É&«Ëa²"NÆf6aH1õÙ$c¹0æÂ.RxÞO£é?–öß­¸MòÍы劌¨Î“Óº!§Òʺ!ç}à‡ ¹cjË©%t²Z㇀úúZ‹‚oYB·m꣧;q$à—«Ÿ:·þ²Ë‡>ärw„O=¾øÂÁϏ®o]Òýô¹>wœÛ #ӟ ©»¹te'Àò>–@ʒPd (4€¸Äè«®dY¡»p°ébÓÈ¢i…³ o6Ýcº£èi×óe¯pV“/è÷õSö®O‘©„¨Xñ7Ëͦf¥ÙÜli¶Î“ç™æ)óÌó,󬩎b; **X4]i2_™º²Ï²Ä²¢¶¢)Xîëó@ÙýýŸRžµŒ Â*f;*w¹½ŨL74aܯ¹àšRöH¼¾žÎlÄO ;ðSÍEш÷3Gƒ8XÐ\þª +zy5óDúõœRu€ý +b F¯ ÄèU¶ª`¾^zæ~¹ I¹¯÷0½¨n´;\{¸—ÒgÒëKÐ×Rý÷D +|Á†°”®ÔÓ»”YâÅ¥U­]¤¾¢­‚TPgxòë*,Ã÷˜>ø„! {#†-QÚ·ÃÂX‘q!;ë»=Æ|`TeI±—a[yòÞ0ö“öÂ#S­™ À€¼ïºeñØÞÛþY§O,g,٧Ӌ©»—Â{‚®o¥éÆ-f öÔn£}´èÙ0êÓõ­¸o$!¸ËRÕ©ºTN,´ÆBÈÔG +a¡/d7Æm‰*LX-r‰Â}ŠMŠ˜æC(ªPÍGß&Ê2¦*—¦W­Z…z±Qj±·œ« z~h©8U܏TW ¬ù^  |i,8óÛÕ·Ûï¼éæ뫓?zí¡ñÕÞ;ù–ŸOwd,KçÞ<Ïë-ݱÿis_»åÐûø‚ðü%³G^ð'+.Z5nô }¢é oºÚ?©yRM"\àRŠ*‡ÝÜ<}Ë¥/PÞZ”ûš” +!ŽÒ_yÓÍD³a/Ê €h +Ûš¢Ñf]ÚdÚa‹UÁòª¦´]™É™íj!*ÄÖóĘ¢‹1 ÎIrƒ©¡UZ$µI›$ò³UÊH]ÒaId[ò{ N1de¿¢Å–Žu>äwE|ÇpªUTÔ$æµ+]i”ö‘yȏî¼ê?¬{ök®º§íØ©:¶âÕ]G…š£²R}½W`uÒ§¯zQg»£†ýª‹$jð’º+®)»ãŽ]»w»Ò}"oQ‡Î~‚Ìڀ¥k²woèþÑز õ¾¯>Jÿ˾}/ +Ò%!¯ŠÄ\^R 8ÝUi.’]^ vyÍ À0~¨ÒkØ/^CùðöØ/Þ¤ßG  ³b|Ì~ñ9™£»'¢ÇDŽ—¯Çrñ¹ó.ï¼'ÔÇÌZŸþ«!0d9îòa߸ Øbj´OÉ¢àÖ`&˜ òtÁúiÙTZ,ym ¥¿R365ñ&CšziÞ7«0,}"“Ÿ&fµ˜˜#Ô4.pž&ïíü¾y¢ U +QW›ÿ©/ æ ¯Ú¬v+õŸP…·„Uv„5PJKWé¡uù5Ìâ‹õ1RHa®þæ?\þäxÕÜav\;qâ=C:é¸pÁøê¥ä¾î]w=qòÆu¤öÌ0£Aêõ†UÈ@º·òëü/ÿØòž´/جÉl­Běw’2hë¤ÆH¨½"'|‚ŒYÄ¢‚“,`"±}`å鏪¬¤:}ÛЋÕF…ŽZ…Š4«£Övo•L3Ý%Η +õΘ"ñ*Ô2¦dš +“UÈ } ÝÚ§_ŠAf·” >¦”R‹ª• ÑhežFšäFÓUø*2Wžkº]‡¯#7Èכ®SÖâµd w§´N^oz=hºWy=¡ü½(íT^G¿R>@PþŽþªœA§”2xŏ¼J”Rj”ñHSL‚æôV 08UÆ–ÂûÐWGTþí]kl×>ó~ϝ™ãõî:¬/»x)k°Á,PyB <œÈ€Á°€E¢V ©MS%Ey4BEjHQª¤Ry4*/c Dµ¤´PQ¢¦…¸ +)J#'R Þí½wfýHÔ¤ý͞=÷ޙٙٽ÷Ì9÷q¾³¢¾@-© ²öTI­Ð½¬ èñȺ˜ÃuƒùLîLò­­Tâ^‹*ÉrZQ]EQcYÜãsìšeQR!¯3zJöíÂHl#ñ¼Á†^Ð5"«ŽiŠÉHÃüª´þחӣ£¹)=ȏxzÍÆųÏù3·"€pKš#¬:P‘4üGJj‰W5KÁ]çü©rêóÄ › ½æ#¢,jiE1ð½¿U™/¼å?}CìTȃ$1˜jüÈëè »E½šE>ðbþlh–eX h§‚n“Hz°°×_™±ï÷;¸ZYDâÙIÿp`.U– .z„Ž€Cý¨ð=Å`Ôu¾[7Xÿj)ÙIÝ?p¢ÛôçíOxyR²=º­Ú:îˆ3"Â"cè4p’n3,¯ò¶ÌJú¶È&äÎXÎXç)乕H!õ 2ùq¬ï\¦§²óíö‹6G~õõUÖú*.7=et]³•¨Í{Ó;<º¾™u%"ƕGà5E3eǂçJ 9®Õšõ–äœÙ “¥iòts7Gô¤{å6í.4Ǟï¬@‹œuÒ·å5Î#â£ÒCòñ(êq>o+YÍÎBÖȘY”qòîThq¾/?+oã^Òw2»Ø]Ú/ôCÐ#5OóÄ?+Wù«èŠÓ/ÞRKé4µDßuÕïÍÑٙàَ«&â°eINK(m’a¬)q£§Þò¯…Ø?¢ t¬j0nDT5{¬š³ó‹Ô•öz{“ý¼­Ú*XÒ~à UuQåsýy·a]&ä÷öð; `à ŠªÊXœUË&Î>mpp§už·ZEfò·¶$'%Ûqr‚ä +‚dâvN¦k¦l#”SeŸ :–‘^F¶nôë9؎’Ø8D¿8ˆàU÷Ë`î3ˆgô2;=5Ù®2ÕÇUVíe—xJ»Íl´· c‰§Ys]á°Úyˆù$òÉjÚ®¹·¿«+Šû±øM4QWôï#|Î ùñƒ©j²iºy„úÈ K%ñ=—LkaR&ܶotDzn#©'Ù7Ê}x¬Ófùl74¢$~Žû£þÛö5wÐÈg÷K$ ÞQ×Ѷ¯‰ºœÉå¾ýRÒßëo>;ۃGøÚXœ= 5’+€©ìQÿNƒ<¯šžg—ûªI> 4y%p®Y>ßã`ûùƒÜ+ø7ÖÕːz «}‡…ÆØ  ot;°ùUˆÑDžUDV4°`#:àCù•m^+~9 JÕøa.Ô–£­üVy»ù2:!œOHï y£ +1.¢T1k23M{’yQ“óÎR¾(µeæKÌ6u›v˜íÕOko›¿³Þãþ¤œ3þb}¨:Î4ñQÔ°*Ð RBš¡ª¬øEhÆjQä|p†¨PxBAg dXƒÐ K‹Të$œTX+=Î8i0Fz8>C´(>Cmwgžñ˜žRÑý¢ò˜§b+|؈OÐhƒwyf’{ŒMµãʞgoz3ˆ¥M 3¶ËևVÿõ/@1&亡ï +¢à$…_¼é§8“($cF [Ýf´¶@QZmAOU8Ìdû@]Á¢Ø¥ª“ª+(^b0ÄH‘Î~`•A¨&¾…@ ¸ ƒ˜§KÛÿöó ‰ñéƒï–~Ìüèâ{ÓJÿ`³LéÓ93›n—ôß3ó‹¥.bõëJ ¹X’bì:<žŽún¾Ÿ(ÐñÁ]¿—÷§†éMuÿþd1M ¿Ã®W–þ|aԇ c­ê"Nã5È51â9(©yz2ʚ|.v1=«±HF糨™‹D â6{Éې(dÝN´Wå<ÃÃ-ŸÌ66[$‘tÅeDŒ–Ñ3Æ}Š1ÙÜnkY'™;ªè#ŪµÎÚÈÚªGćGìGÝG«ž1ž·_p^ˆlq·©»´7¬cöQ÷šzÅýØ°>uˉ;*¢;*¢%â<š…žFªüúþ|›ØÜ#DH·°nÇÝÁ7I;ª‹7Ž•wZS]MS#¢‰ä°l>q<Á&zÙÖCׅçö²‹=­Õñv•sÜa^ffbR0;®’C´¶¼¤Þ¨·ëܽLF3æ‰K1ÛÚOnŠWމo‰¥•DʈZý—kÈ?\E­ë´Q2­ˆ®\ ¯c²`‡Úö™X;F±v<†ÇîWA+_e†ëF·|©§¥ ¦Z +& UQU°po‘ ¥Hœ@N‡uOs‘Œï=ÔB€;•î)‰&?&õ¸;}üŒ¹ÕöXA+møÍÅ\jtîƒîÒú;ë7u6—Ö춲õñu¨–Ïlÿޓ›f×Ý>½wf±ƒüc՗ÒBxÓëÌön·‹U8'œ3²ûyRf©óÔ~í€>Fßbl46šº©£Iè‡öD'í|ÙÙìþuԖQ[ª› EÿõyŠmïIœ­}ÿŽË£w$×ý2õBcf×_K_ûQæFæFö ;r ÇOûÆÆÆÙ˜t6¤B +)¤B +)¤B +)¤B +)¤B +)¤B +)¤¯Á!1dé +\àHÆÄ0‹d-+RåÆÎ]¸tْ•éEíÅYs,G™x¬¾i|Ç=wϟ7%ß6{jgvܤÉÓ'8+\k"|^<¯â|%eR®p'(_Åøšó1?‹|ÎïÆ܆ïÁùL̛™SðÜ0~ +ß3ُyVoÆõñ >¿ŸW·ŸÂ徿ˆsuþs÷%/Ò6BÍËû÷í=º +ÍøXŽûùÚ™’¿õú[ÇníXc¬ãM¥Ò–ÿ僲 +endstream +endobj +213 0 obj +<< +/Filter [/FlateDecode] +/Length 25283 +/Length1 42172 +>> +stream +xœÄ¼y|TÕù0~ιwfîìwö=³Ü™É,I&Ìd'$7²‚ &H$€D…PA$nXDlEë®-ÃaªÖjµ…Ö¶Rµ‚-µjÚi+dæ}Νaë·ï÷ó~~ÿüf8ûsÏ=çٟ3' ŒÒ¢õˆA]Óf$’Hú<~?d—οfî@¡½#‹Þ=ÕJßÀßÿv)t|„î¸êš…¾¹§R²Éþ~ÕÕkú ðõÍ¿}ႹW~8íÖù=±:kB‡‰µ^‡î_Ð.¼fåuÅ÷} ó_wõ²ùs íÛ8„œ?¾fîuÖ{X€Ñ»¡Ó·tî5 ŠðWCX¶be¡ýĕt|`ù‚%KÇÎøF„L-²»‘W6EJnæ~äB(ÿ ¤ã>ËMʟ–-ABnqþc‚· ©ø ¡ (ˆ>C¢WQ/z‡0¨W nÄb;r ‚ëÑdÌ#’aŠ MF]Ȃ&¡?c-ډƠ/ðxt3¡iè@S‘µ {Ñ|Qþst3z/BÏÃÓÏ`•¢)xBþ(šŽºò{áE[ÑÃX‡¼0¢ÂBþc˜aڄö£ß¡<š…’í€YºÐÅhi~/š~…gáËón4-E7¡‡Ðcèetߎ²²|ªFóÐr¬À&anÉ?ƒêdG”/æßÈF<À?³~IâìøüWHDŸ±8¿8Á„Rð]ŠG{ÐG؎«™6¤CUð®^tÚÉD`ÐfØÛ~|=ÞÉèòOÀnjÑ|´Ã×áƒÄ/;"û&¿aU°Ò!ôú zýfg2×äšóSFŠ£xÓtú1`î5ø¾õ؏'ÂÌ?ÁãO˜¥Ì§0óÓhDÿ¼ßDšÉ-²äèÍùQv(ÂÑeèjôc_Ï>BV“›È:fóa¿Î×å_Gr”Ø[Ðs°¯_¢÷Ðû@¯ñ¸ÿŽÜÄ ËnË_ëM …°‹ èI´}‹eX‰5،}8…kag×ãƒøâ!éfæ1;ewæ×äïB~à•^´ž\ŒnEÑ^týý`'<™€'›q¾ ßƒß ‡˜Ë˜Ù̃¬È>È>Ͼƞ–d¯å~•;X§óT¢Nøö¢~´p…ïëèÌ`.™ÆáI0Ó܏oÀ[ðø‡ø)¼ÿ Ɵã¯ñ¿‰ÜIî'ÈOÉ!r˜ñ01¦y”y—õ³°§sG=¹Ws_çÕùx>•ß’$ÿa~D¢‚8¾µw-]°mA ïÎw£_ ßß•¾ÇÑ7@ƒSXÜ䀰€Kqìî2܍Wã!|~¿‰?ÁÇñi‚ˆ†à#5d™Mn!_’ÓŒŠ˜æ:f+ókæ;v, ßçe/ʾ‘W„¸wOoý8‡r‹ræ¶ç«åÀy&¹*Ô +<7 ¨|%„ïr´ +­­Œ?œ³eÐôzp}Š®—~?Jœ@£(‡ ÐS†9øÖ^ ”inéà €¶…ïõø¼?ßíøø1Àï¯ð¯ñ{ø(þþö„H9i!ÁŽºÈ夾sÈ|r3¹ƒì†ï/Éïȇää;†g Œ—)e:˜«˜Û™!&Íìf~Ãü– ³-ìv û3öW°ó ²‰²9²ù²;dÉ~({MösÙqY^~ŸüqyVþ™B¥¨Qt)f*6+žUP|¤Ès¥ÀO°ú(:÷¹_Î&Èœ'YØ÷+d%ó¹?’ Á +®DsH–y™|ÿ†-Ì™È-±íÒð8Ðbл²÷X‹ì3ô3âD_>¼Ÿ™K^!ۈ×0cٍ컠uÖÀ:HŽÙ jÌA—`ú;{)úðH68O>Æϓ7É$àä#è rmC;Ð\ «»½ˆ¾C÷â}Œï¾[‡£/ѱs«e£­¤Yn'«ä @¡}xzþg$šÿ+Hý'x#úùxÿR<'ÐSèO@õßâ*ìes¬ ý +4_ Ú\û4 2øs6ô-ÚÇT¡Yì1 ybôí\»l%s+>IZ€œ6IsO£ÚtðC «¨Õ¡À  E$‰þ+úߓ€F÷ ýŒ…˜'Éz’gÞb}è{è3Þz#è'7®‚™®A‹`¾ü§¹'`†Å¨Õáyxj‡‘ ¨$ ¬ü)ÐEb~v~›¬GG¿ÄS°½ +ÚËX|P¦ÌänÃÑ|Î]‰‚]±ãN7ÈVɶȞ“í–½"û…| º¤v;PñèX ž¸øýx½¤§ ä§V1lØÕ¤‡yµa'½Ý +8˜”\³Ü‚îyzlÈ/Ñ7˜Ç³Ñ+èHŽ ä|>¼Ÿƒy&£K€ê+ÐS oÅÃÐs%*A1ÀÓwX‡ëÈJxÕ³‚ž=kú} +š#/­« Åí@½ùèŸT–á 5¨ Ճ¥lgÞEFA°®­ £OÀs}À:äAõ²?a‚ÊrSóudó2¶‚5ÔWÍË>Â*ô°QdÁÓPuî"˜íyÐe]²'ÁúÆÁ2Xˆ…½Lv ¬û°d¿DËóÝøaH€ØzÉL±¹i\ã؆úºÚêªTrLe¢¢¼,‹FJá ðû¼%·Ëé°Û¬³Éhàõ:­F­Rr +¹ŒeFeÂø>_:ܗfÄ å´-̅Ž¹çuô¥}Ð5þB˜´¯Oó])dÿ@ŠHñ,$æ}¨±¼Ì×!øÒ¿h|Y_Gzüª…C}í0Ý.µªMh[ */C»Tj¨ª¡–¶ »°­ KbëhØE§…E¥B{GÚ!´Ó¤™PÇÜ+Ó]Ó»;Ú]~OyY·Í楑КÖÇ%Ô&½&-oK+¤×øÑÝ ;|»ÊݙåѼ¾¸æJáʹ³»ÓÌÜúCÞ۞¶­=n?ׄɍmݛÎu1CöE>ÚÚäKï˜Þ}þ¨Ÿæ==0(}¨ p;·§!è÷û)ïȊh4Òë§wÚ>4ϕAb"ޓ&}täà™Ë%tdý™‘³÷ ÀÉ»`,i.|öŸž·š:6¤±õ^PŸ^ÚþLéÐ@Gߊfóûïp¥ÇßÙ›Xˆ€[ jÝ%àÛ§ïñí3fuïã!.»}fw†`ÒÖ×Ú³+cÝû| t¥^r¶—¶|´‘pz†pҐkŸˆÐzi”•:¤öü,FRw¦£ùYRèã¥>øPAo›Ù}> %¹è)–¶Pøsè2ÚüÝQ^ê¹àsíÑ^ŠþŽÁæËÁWà!:€è—»#ŸG2DvÍôeYÍ°F—¤eÆdKfYõpÄçշ𬭇DòfHs 1RŽ‘È3×¥Ä,Ë ÅÒB±¸PÌL‰/à$”ÊdÃ6{’v«4Éõ´ä”´mÈÌJ‰-JÖK¢p4£PfºRÒp'Å€.*ô·wžj-t7Rޖ ´}DHvBú’Vo@ H[ å!±R‹Â­ƒt¤ŽQXi6.¥oq±<ŒðÒÞy䅔€Ä >V {OK¹žå+šéQVXV•AW{÷Á$Ìp‡´Rf8^!•™H4) dœîäË`m·APé…œ±º¤”im-Vjê +•áXyòh‹ŠEèkH„…È\é©áHEò›W¡™ÒcL{™ÓüÞƌëMI±…gþº ”fv¡ƒZÆ|‹ÖA"¾3S>†¾ˆÙ9¬Ò%y€ÿù ­‡Ä c©-B¢ð_›¬tú¿dôé¹£™ÊªBe˜·'»ZÌÌG°ž·™_#yÁ=ÿ58T^ægPz |“y i¥u>1¬ç“ëá}?ð2kP†ŸdÖ¢$”Ï07/DÁ~ŸÑÞóûL$–lQ1O37H +˜Ap½ÌÕ̒LÒë;À¨>¬–¥åå‡åÇäßÈe]ò>ù€|½|‹|‡\îU$Í +QÎ~ÓÒF>¤î€< ‰ õo‘j¼4ròÃR{‹Ôîƒ|@j‹wI5òJZƒ$À\ÜzÈ·@¢p´-@^IېÐ¾È·@"ä÷¢;Pƒ„ú‚BÉo‚øpðX¤ƒƒä`K9"­ò¬òˆ´Ê#ðäéÝG`^¨A`µïKpïÜûÜûGkÿ­¯ò©&BÞ%ÕÈ+i¼Ÿjõ-6²fœù£ŽBbPòfHˤ–—Bí‹äááÒ20øäáLt$BQR(ÜR1ìp&ç´èÉÃ0åÃ0åÃ0 my!5ÓVþ ٖi§°Û2ã +ECêhK-XQº”mh'$‚¦Aþ¨TK@Þ,ÕvJ0ú³í4äǤÚä;Î>7Gªy!?ó,C†ï6¨éÉZè]+ª ²ZÁ©28c–ìÏ,2z³dw&ÂC1\(2´h1p¯Å_Iù¥üQ)¿_Ê/“r½¨´ÿ´?´O Ú™„‚Ðý”.å‹E]PûYPûfPûàöñ öþ +À€_t´hÿÐî hŸ hï hg´ÓÚ):Uù–xhŽ¯r·hóiOû´Ÿø´ïø´où´ù´=>mƒÀñßÁžjñ#R¾UÊ«÷Vi½UZO•v?̈́/Ïè‘ò!ør¤eT™X“7Ë(¥‚ø3!(ܙÎ(\™Î‹¡pf:—CaÊtÞçmQ=ÞΊ—èð.Ž–šLìfV +.» +Y&VïÍâ\&&@q*Óïâ»L '3ýUP|K‹—ð?P?iðß2ý?€éñ(B§ÅAaò<”ÙLg3@ï-¼ïFM8ÝšÑUà21X~&‹@ñt&„â©BñÃLÌ Åc™þ +(~é¿ŠïgúCñp&r5oŠHó<„ÂR¹"Óé‚áÁL'a ә€bY¦³Š%™¦_@±(Ótœ>zޅ³q?ŠI+›éÁðœâFzQDžª¥™/ÊtR”Œ§“´hqGq#í¸ú|¸ï’f3±JkÊÄÂPŒ+`®1Ó‡¢.ãÚL䀹šâ ¢”>/á ,ƒN$dbϐ7Ó…¢$Óß…‹> ‹2ßjDMÒ¢ ™…â31Ÿ÷¬FýҌ*ÆïñŽÂ¼§š²øҌ÷;1ËáŒ÷Ÿ(öx¿ìœçýkg<^ï ÂÏïñЏ› *ª½Ŏ{?ìxÑå};Vá}=¼Æ›ðw–xwÁÂÒýó¼;û¥~†Ç2Þg"Y‚áéýS¼ÅâÞ­á,]Ã÷x}L´1¶Æ{KøfïµÀ ++;7{WÄ<ށÈÞÅú"›wQìbïBØÈUð̂þ«¼sc÷yûª¥_û…wFµ´‡ÉýҎ&6Iú/öŽ‡À@3€Œ¾L£Õ(ŽÀSiþ…÷’Ú—Xa¼Òr±Bñ²â&Å<ÅLE+؛REHáW”(̜‘ã9§áTÇÉ9–#â1góÇÄ8 éÌr)²“³4g¥:OhN +1 Á@+mb&“É3ZÓµñÉYEþât]|ršëº¼{Æw÷àÉéƒóÑäy¾ôÉB« ’– ­8mœŒ&ÏlµpšÜ!éÌî,ÎÓ'6ºèñÔ>„qÙÆ»\´¿ñ®žd]Õlo66êÇ·ÿ—¬¯˜w´ÇÏ}ìñø-OúÁÉ3ºÓÏyzÒIZÉ{z&§£ôk¹š,îhßG–Т§{^H®î¸˜öã…í=6VCMd €¡NZ™š(ôÏ> ï‚îö]MM ix¡™&Í*µÄ܁Û$ 6æ è…Æ`ðB‘&»ŤÆdWK`v +¶+†™úÃdW2 »ÂIixú¹áHaøG…áÑá,ÆçƫÅÕFPXzC˜D&þÿãgAëÿ‡‡ðð¸UK»éÑcŸÐ±R_úŽU íéõó|¾]KWÏ$Ã}óæ/¤åÜéU‚öôR¡Ý·k\÷î¦Ãã„ö]¨»cf÷®nqA{fœ8®C˜ÛÞ3<õæºÁ Þµùì»ênþ/“ÝL'«£ïš:ø_†éðTú®Aú®Aú®©âTé]“/nœ»ºwq¨µ§mv¡&jHKŸËßÓjåš$Ñë·ßäÚÏ"ü RÇ{Ò¡5­…D‡Ê[Ê[èˆ4ÒÑãåâý¦±~×~üLqˆ‡nƒÐŠVÚ;µÃ¿ðY¹òZøŽW¬(àÚ^XïÆ`%ÔVJ€„:M+¤ÞâøJtí¹O<^€E+âmÝ»:;;ì‹Ú]àÄS¿;Þ³Åã…ÆãÞ »–}«äè«åÖÔo;ÿÜùm'sPòðC:&yøÁ»? éxø%ÌÁ¦ÃMǚ˜ƒ‡;ìLJ?>ö1s°üpù±r¦¶¸úª +<÷½6¾âZÚÇÒn¥}ӅÀ¢¡Bw} +¤•bàS藍ÃDñ³ÇÏUV¯•)ô®8ÇÃ0@§_ymü~Š½ô”`7B2· ÂC¹Zwüº\‘e8фdìë R)Ø×1rprÙë„y · %áK‘=ΟlmœÊŸhìmDÍPçOC6¦ÒoðBa7‹Nû˜ƒ§E:…|ìAªï/Îõ“ïɖ #ê#›t{õ¤–}ˆÜ¯|†<©”á×£yMkÒj4[iÖ+hlÃ(²äQ)ò˜¿Ô´ìAúâޑ^x;_Ô<Ò<2¦õâ^l‘+àkà6«ÍF‘ï-Ó®¼lrUïßr»ðTْŠö–Ywí̽™;’Ë._œŽÿ‰ˆé¯ðX[´¶‹Å@ »Iv»>«g$۔O‘g•,¬Î«,ñ +_qU†itUf°/¶ÒtñfXÝ iaÒ"Ï[©º¦¾ž”†K«­tuŽ…cÚJ ‹ÃÓr»rý-³îLãÁI‹Ëis/å~’£×cP/#kHPÉ)j 6CNv°?ºËŸÊç?E‰NxöWûɚÑ}ä"¼ì}jVþ/øi\…Ô(°M”«™,6‰jŸ²RI”ͲÍôéÓ½#ˆ®'­³\„««j0?w^GÇܹ¸J*::æÑù6›Ì—-D6tëKH‡„«‡ŸÜ˜£X¦ ¼<Ú£Àÿ† ÁŠŸßûŸÈ=VBDžC2N¡N/&\p‘×éºôËô;õ ¯Çz‡]÷ +xyى •xì8pXooc'?ÚK¹¬ÙXÿíÈiüm÷ÆaÁ³ÕšJYüÕ©dMMµ¡*ŠÒÙnßé­ ^6ÉiãKM4âÈžzþƎ²P(2~=yõŠ„ß<.ávôìȍ>ƒ·““¦TóCTj•#™Ë¸ÃºÛJ¬nkR©9w÷í1&li±eq ƒU6jm—e‚»u2¬$Ÿ]HÆˈì#ã{z7~ՍÝÎ=ƯbŒžý¸oAåzS;OŒöGÍÍ#T=‰&N´j›9ѦƒÌ¡‡L[OŵÐFí¹ ^6úb’J/•·¡Y‚=n¨¯7ë1¤^C½±šüۀ²^Ôë÷W#cu•„«ššTÒ +dWȱpX›bºNÿ/ûþ-W<|I¨æ£-W=×7iA%Zñ‹¸bË¢;ÖÌö==qãæ}¹ñŠGþOÌà1Ž‰^…Þ¦__ßhÙhÝnzÀú¬ñ)ë~“ºÜÝì&fg14BôˆùÕà¥÷Óè'ðKäDlGk¨’ðj´@I~¹GÔɜZd†¨l·c™j?~©±sOIÍYFµ×ðŠòQ…ºhÐÛ°ÍY®/Á%¢ÉRUâ(;çqÀù`çHï P#'F õ ‡s¤ٛ›#ñ8?zœ?n¬OôŽë èÂÕMä|lŒ((ʐ?PJE%•´&k'–w‹kfÝ9/4ᓡ»ö^rùµ×ç~‘˽0­¾5î÷ð¯_2iñAòŒà¯¿¶qÆêûµO?óŠÉwT×?}Óorï×Gš+ZtÜ£×ÎÚü@L +øòG€OÒ¢m¢½Y‹S3ˆ% +¥JÆi5ˆå´Zµ:‹g‹<Âf a§ÖbÀ§‘ ©/j8,ã4Z^:á0J˜XûD{‚mf‰žõ²„uêErè¾ý[=À‘½'%‰k}v²˜‡2’±~SEœ½‘C¯×pcÂ)CÊ"€Ê÷×ú )²aí 7äFr–¹xç™E§·Êƕ‡ˆ 8¤#œ–MAÜ%VèäX©r¨"(°f•Åeq3uò‰ò½2F-ÃN—ÊÍzxÈ=,v² SØev0êø €ÙmD,f³øë=Fó*C00 q†B)Q¥7yMÄô‘FK²ä­aü+ r@ü­è¹.nÇpÎ ÿ«{8@qpœˆ/ï<L2ªõæHïX8*|¢™AÄ䍡ÊPY•$.7( ' \ lQ(Ù¢J%€Ò2cÖHÄ{FzéCbI€N “è¤:i@°€hT`ã=›dq@>2m”6àO4؋—÷b?ãW°ôn„œÎp¥ì`/ƒþ€בëŒ~‘Â=û·ÝË=üTOSK¼´kî¸2oéÅ+r;r'\5²)¹Ü&í£·¾~ã×77•ÕÅ[}í1^sÝÌôG4^›ô{MÒý¥ ãJ3ƒû­«¬D•ÍÿK´ÍU1&hù™…iæd»Ý+S†-/“Ÿƒi|¼ %~øÅp˜G2ˆ½U»ymà#M2ŒœQ{–¼ý¢Þéu'\µ™Â순!ÈéÈTþdçIj£@ý'Fø‘ã/RŽSÙ¶F¬p…T¦`Øíò¸ˆÜ҅CªÀ<\bpÎC>=Ôuxv™¼ó_ ™äŽIÅo¾õ‚-çAG`Ÿ âMm ˆ¼1ˆå³±€D¾4óڋ®Ê<-­½³ôç+nüÍêñ}¹·¹ê +yń¶øĈl¡»âÞCÛJ”æ?¼zÛ±µ›1·ý8ÞüùèÒ!q(—« +-y›µ¥áHƒ +=(ª‘Ò!#rD[•Å?õVaÄ(˜SP{¢1úÈ«„ ÂB€Í÷(•‹4ò,yGT)š- +¬8©þv¾—ÚÍO{)ΨIi£Q`\ByŒP#”ÇÈYÆ=n,°Ó&‰½0;n®‘+“ã%x0÷—'g4„Ãó˜H®ÞÍΉ—ÌÀO~÷¢Ç”àcœf^ƒûÜj‡ÑT%Ÿˆš‰Fµž™¨,{Ղ-û‘CMA¹ŒžñÜpü|¯Ãt¾r©äv̝Û^ôD˜×æ<‘¹£ËÏ÷I¢h{ {’£ÛÅ°UV#»LÆÈe²fŒÌXƂ6€:aÌD&' Ë †“ƒšˆï&¯á×dPÙëC a’ÓxÀ¤ÔV‰r,wrX$˜8ϗ–<Ý`¼àr‚¹è)àŒ«°K*ñl…â.„«±cöšS/±í§‡™Î}ø•éøõ¡Ü£¹'/Xñ÷Ä`¬hÿ¿¬W!G®—9·^•ÎX%·Ùœ +L¤pFi¬"6›ƒ+,»cAûIX4'þß×n‚•WceÛO½Ätžfïȵ]œwî×K¿Á#Y´€q¥x_€W›ûùUüja›ðœv/¯xP;¬%8(¿J§ö¨l~»Ç¦Vb%áÆÇy‘×3`‚U*%§·bë~| p…(øTŽÊð@x}xGøpøXXâþ°-átXqÏ5€¤A¾÷„„”^ð$$57:©·9 +Vﬦí/ª~“®"ÎQté]Pé}#N¬úz;âG0°÷žßPðŠÆÆb„Ç~hŸø«ÁÙ“n-4RÉZÐÓ”2 33ç¯wW¸çÆM¼¢ÿل?_hpMóYåĽøç‡ñ-Zãõ.ž …Ôó·³ §žùAÔ+ …¬|‰Ñ¤lý~/W‘x2è +¢1øñއlظÀµŠ¬ª|Úþ|Ùþ’ýeï*>*ÿwBÁuxžèº„ô¸ÛȆÊgðÏÊ~SöiÉg“%ÿ +ü«Ò0 ‡ÜÁ`©ÎçQzŸÇ*C%LUø*ÇÄP¨$‘¤Òì®…”æ`…Åb&± +ŽSrÈÇûˆïcÇ÷¬3£/õ–’Òr½Î‘Le1;ì×mÇ§Ò@²÷8U[mÝ{P_A*:?ïuíªèé9Ac©F~„&µšKV èã`¯k¤Ø£Œ—û«]¦°…a[H. V_hWT$°ß¤™}B¹,–ÃÀ7ž1 ð¹ùfj°¤<k+?/'á²xe} §ì¶²ßPÂPdV›ä>ƒS}6©öK>µ\F{ Ca0(ÌÖT±ÅÜó“©×o͝vE›ËÕÞK†>màîÑOîÞ4ᢠßõ5]›&t?L•‹—ß»íÊ5!¡n)3°´>šñdï¼mFqå¬Y+ñè#¹ÎdMíE›fÌÙÚHõàôü' ú–€\zö!k~ý°RUåÎJy±ÔB)ö@EãTºjLÎÛ¬w8ïqmvsK KŒk kŒ› O˟Ñ>iû™í—JnEá6k‹{½u£í6×÷^ö@‰*^è]-_¥]åºÍ´_¯¨ÕŒAšE<{³Uÿ³£N¶ØÃè[”xN€ ΁0CK÷á¤ä„·u‹J½Ê«"ªN‡ã%ôp¡6Ò3•ï=ÙKm®/O€ œA4|™}̘OÊÖtöÏ5U5LåÏÉиSW— :uj™Ên-g—…=‹úêfs£GÿÁhÃÊûS¹[’¾ôîÜôE°÷37̶Àt¹e÷­/¡÷ú*€¾O}Ë°_ìT°JUPORËä2¹ +„ ³aUXÖLcÆ«¦©ûU«T·©tk£[*^d_T½É¾©ú”ýTuRvR¥ÒIæÍãóXðô²²,‰ˆ‹K=a=‡9Jd¥‡ƒ@Z1wäE‰Ï œB&šiZ2 ‡_ á3]+Öêu^Ñ5yôÈ :¡©¤Äã(7[Ê"AÁV4ë<õ´#„"¡ ±på/aÖ8¬]§N<¥Oã‰FjõG¤–(ʏôR_¥±@WhÊ*iõmï”TÖ©.,L¢•ÁóÒjϗÌ3äJ•ÎZ>M#¦g—”Ú@GÇHE“½.ª[qMãã@¨÷jÖ_3zÙO®ÏÍ¥âx†J´ž»~óÄ5hFþ˜<(»¥ðÕ¢UÅ˂LH½Î{»wCpCè®èí1•P´Ušÿ°]1j»Ú ²P±P½Z½:¸y…ÍÊ÷÷†÷ÆTíÂø¨Û½-&ÛÞ{ZþCÅ3Ᶎމ*&éì4è°ã’·<öÙzL&š¡g ÞòØBê<ó@³*Ÿ—x1ïÕÚìö€¬:Îh«Jdà ÄЄKœÕôy¥†¯ª6FUÕ/á@«¥ø’¼ê½è•^%QJދR2hñ“Åã`Jc}=†„ø3¶gŽ4UÄT'}1¹^ è•A +BAB:?ߊ}^=/AKUª !½Oۊ¸¨dï@ÝRöll‹%…KÉ-„ƒ`ôÈ›w†Â`ûÀè¹%u5üÅó¬ZÙÆP[îÄ£ý|æì_Ü5æªkǁÜ7y,¯¼%÷—­?É¿^;ƒÉ[0½ì§Fw¥ bàwŸÏýò±×s YÌØٕ‡B2oÐ4)÷iÃØEÏ/z'ñS<79ZO=ðOåf×6Ü,Û€§èá;=õ°S<ëjÝÍÈÎÛwتU³ä÷{IŸ'4HñÀ5ˆ£oð6ìl`Z}ž€ÙPÐggPðŠ +û< +:ƒ`ðQ²GÏÌ•fˆz£;£ŒZ`Ä+„”ÏSþH¢¢ÛL ‰E£v»4Ô×sœ‚P+ßJZ›’ú†s@ïވ:ú:ˆØÑÕ±£#ÝÁvø +§ÝMÄcø×ÅcþÆöq«ŠözyÑ`÷ž<Ó@g‚šëAC6J¼/æçU%EÌS]Œÿolhöÿžÿ|‚Tþ§d“ŸÒº^ZÛëËÈe´h}´±P'wæfÿ§¨ê¹õxý¹Öé çêø‰BԎÈWô¯ƒÑXî§Pù<$pú<Æ@Àåó€W®öy Áh sN½Ëë"®&µŠRÍ>^h>¦Â•*Q5 :¨bç@FTŸŸº\žªc~<à?è'•~Ñ?ǿޟ††\Â; :.á>~ßÍT^¨^·åÿŽ@Š.òÕC -ô_0 ív/P ; ¡{Ěyx5¾^(e·[‚O™s›ž(l¤”q A„B|h ´>´#$ eñ>‘÷ù#p9…~¾³d§h=‡G¸²T,ÝQÊÐpjjoÑޟ81 +öƒž5žèm¤Ç¸¶zi³R@ÊüoÛµIfԀ6ujÊy»~o¬´k»àè¼zË¢þ(ü/»ß±°^§œòĎ­ 5xš¸¼„ž¨K°²äúRY×QÓU÷4z ÉBî¼­v¯ö܆6¹7y¶yžñ|áùΣ¨;VG¼F¯Ékæƒ|H¦7êMz3„´!eü|¦©hð„E,z<¡€ðyª`OnېÇíÃEÜ.³ÛíB55•{JÌO Â57ãÅNTSM0 ‡ú/ûè72íe½¹J]ùԈšÀ`œÄð/™›€ª~û‚Ó·œ'í#§â컧;®´%›C!ì­J¨/gf]•* Qùö@4ºhîǃ£äò_m=-Ä՚zÞíÖónG¯m êÞEÕq€4xªš­SŠ'Bàùy· ë=ž¦Â‘¨Ç@½cÍXˆÍÊ镘žiñ-ÖÞØ%`7DÜȅ»\¹–xÜ(ªÜÁ^ªe©Æ=Y¨Qçꌮ-þÆ=éÙÄÞø‚N{áT‡¢~ßxã›ø70¥½_„òi1nªFz^_‹–ûüë}ëý÷¢-ú-¾-þÝh·_ËúXŒ-UL1§œÏæ/Ϙª¡x +ì½%Ǜ1ÏoÁ;Üi>íæõÀbÓ«/òœÙÕÌӋTJ£½q:S3Êæ¿)¶ôæf}6ÿ—a€òƒŒÎÖ\8¸î `êp+@šuÄb lPà z>Q +V¾çÈ÷…ÊA|ðÒ±þÀé%K:|9ï@·'ÞÚ$›rz/¹hm¼„BjaZß©­ì¢Ó_{1xÖÕÌËÁš ÑëÛ@ÝodK•àçÅÔB~¡é!ÕûÆ÷GœGÜï{þbT*슱klN›»”/5•š#NU ym4³:ýy´ä¨X]I½> +…if܊$ÛäÛ¸5[µO‘§4?“ýLù¦ç}ü¾VKX'WÊU6l#6Mkõ(ûýîëd«5««<[õ{ì{<﻾áԗêtՈ±V+”FµÃ»´[bpÖDrñÀ""ƒgÂ×ì#>½Ñk$FðߨW=Hý8Q€±s¤0Dƒh雺mÓ©ÛֈKø'l+C²°Ãiw¹^k ž\!lá f“C͠х°ÖM Ç&•5„œ,dñx#| !sá +ƒ”ӨݜÜX/ËæOˆjc=±ë5H6ÿYÆPŽò—PÈhK[¯„Ö.m=:sŒÕsö@ X ÁU¿¯4là‘,@ïKÂmc5’ ¢å¶¾•»/÷½·~€·ãºýs§­½dÛUÝó®Ü.›£É-Íý:—{#wú_o`-®À÷Myå‘ÜG¹'ŸZ™±ãÐ§^JO>ª {¤ß júÐ>äé×Ôû¨ôÏV×O ã­ö“¶“¾ØçFX~Y ޙ< h©*\FTávËMF¢s¼û?î³®·> +áíP"ŒÃ®‚[U®E^Cº4}¢¹1¾ n¢êöŒEÏ;z%S_vÏ8OÒQa‰W0;í6‡È³?½NÈ–`ûl%ôXR¤x|A’¦µ\pÞç“~–3†âÁ‰º:fŸ=à›†ƒ¹'¶Ìý‹ß°vÆ[Iîvzœwî`ïð#^ +ØÉC£{Ƚm½“bz ¿ +¨_'6_â\î|ÈÂp‚]˜ì¼È}Q`®{~@aD2$çe¼œ­L\åZíZ¸]x×õŽp8Ám³þÆùoû)Ç)§,Ái²ä·»%KŠf¨ˆõÕ` %(fA¬îˆ€bn¿k}àxàD€á]Ãæpl1w@‡*\YüGÑ&€û,¯0‘|¿öû%8pÁ° Â#ãc$ö±-ËѪ †À(i¦ÑtQ=]1nvHwFç6\Hýö½×?8¯É›«î±z™YL¶þ8µqÉöû©]œ?ÆúAÓÖãr±Þ^yYtµŸ‘ë°R¯ˆË+íz[¼\磆DÀ–ÕÄjâWE7G7Ǟ­ÊÆöW™êÏF¶E š¥¯ñ֐šgǀ×3Ëçñú¼Ø›î_2 9y'q>k‰Æõ\X¯ÖëÝj·ž]¥_Ý®Rý¢ú ½<Õ«YAV=†ª-Êiø̟´Èðe…ÃÆ,æEÑ9VTk«Æê9/8ªÐµÛ;¦ÂѐÅõ»Š:÷øH/ˆA BbpI{)m¥˜^Ë(øÒºTÝ%§H*ú5£'¡h8¾X½H¿V½F[tcüý ê꟫®×¢ÞÁêÚ‚ok*œòJ?·H_‹™Æ¸¥Òѯ`H¹³.­ çÝâ¨e^SG=ÚпÚâÏ}5ãâÜ?ß—_Zéu6C¡²S÷lL-Ü°ïñ˾z±µ)±Éå,ÑBäÛøÜ¡k.*þ™×.\xÛsß:ƒæH” #Z;½rÖô–Ë×ÿ`ÎãÇyM‹o¥ê$n H·½°ò‡íΪõ!ÇòÆ*_@‘;`+¡BðŠÓ@C»ÏÃJŸGÞíœÎÓ%¯ÂA>Âë94€)‘cb€+>49x;öÙ»ì[ìŒÝÇ{±ÏÛå]çÝâe½ûq Ùɏ‡ýÔò'é±1 ôºÇ‰b84ÚxæÄï̑8ô$σþçy‘ä„ +™&è›Úž³ÀÖÖP>ÚPˆæmnºÌ–MÉÝ»n™ßxê‹s.$km˜þ ^F1R™?&{0Rñ1»Þ vUi &\/Ü¥»[Ø)üBÈ JéÞ814á™pa×Y×Ùöéފ‰|ÑÉ‹ŽøüaaŒV@ñšÿ[<¥Û£#)NAÃɀW:–ù*<(,Øm6 sj•à3úÖyñoÞK¼7VVŠ•]••;*e•½ˆHMÑhW ÇnLœ ß ·Ò$ë2Xð%G +Š+~F!ü¥^‡t!uˆK ÒˆVàÁ¶ø•¥šÒ £(nŒž¡Jip9†d¢n½¼èÔ•Oi¸Ÿœ}ú“ør’VRT’—„icµ7õ-ÝÞö”_Œ뮟bÐ6Ÿx/ÝwëÕNñRٔ¿aåèÂ=«¦Îÿñ½|ªÞ +UTøfŒŽ~ý›LB|ëYòеõ,ÝÐï.#ùîž}H®lp« 8Ånµ^Àu6\o[d{֖µ±V›Íbw8èÅåAPìG«áԍßÍß)ÖØrGaˆBQn‘´YdryÄ怚ÃÂ)ä¬Fælád2…_«A`õ•·Ü[>±J°Ùœh?®@6|‹hôiDèëÓ`# \í¿çšsÁUÜéèµOíXÐþi\bäÆFz  ŠȚΊ8µ2Pé¤_oüp{ÁÏ·›x]#Mͳ×îã Uàe‚‡N  "°xáÊ)ÄYÔ§.bˆ›1–쥗,3©!6#WîÏ%fÖO#CÖnŸ¯À~¬©´ú¼ñ‹€,š¶ä¾S'ؚ×ە¡Uï1ŽY2ÚKz®™ä,©Ð¤XʘÿDAÏJƹ8|ò_Q2ѾÈñ¬=kËñ¹ãó¨¢ÞŽe6B5hZrN²+µ"„$Ÿ¢¿W ¤Ö§¶¤v¤Ò)åkøPòOè(Ÿ”­P®p¬ŒlTÞê؁ž¶¤ÑëHiwDA©z4Ñ7~Ìr´+ïâ›×#¬t8J¥Êá°;œ¹@ +ÿ̽ ‡¢6£Çà‹@´†@25zïu‚n«ôŒÙ(‹ÔÙü†a»Zþßõâ¢(H£³p!+FÌÑhDƒÔpo¨âé/Ïäªáó¹Gb§}Ôé(r’Âò-§\düFâ.à¨óx+Ž$‡¥þá±óßönâ¹FŽ†—¸7^d»˜O©­òEŠlþJïà Z>Hï:9ï,óÉ©¥Ã&0fÒ¡®Bj›LN¬V|®2Ëës—•æÒ¹»C¹Öö‘L¹(1«~[W‘li&÷v”XìåÿüƒÀ×M®d‚!Í=§cŸ~ñôxy(DJ=áëG—²eÕ4ð^°Já·ØVÞD:fµº£ B95?’Ϛron)£f;eÈÁNê¸à–2ã·øMløÔ¹·oNšÿó1ó:ƒÉ$Ñ"çùzÖÇ×'ÅÆöª;ªïSl¯fš¨iœ;¹zO=¾IñTù {Ëß,?â¿üHõ§åÊjE‡b’i’mbu·­Ÿ{m¯~ïÁ{8MJ×7mc.d ‹šºšæ[ûš–Û´ìÄO6¼Š5©8kWÓʱÌŽXŒ2–¾å [ý×cq2Å›ÅË"ñ²P¼,ژz>u Å°©q©Îԍ©»R¦~”z9õËÔR#)õ@ +§Æš9?·€»–c 7–›Â­å6srOqoq¿ç”jÎÅ pŒÙÈ1vm؇£ý‰±Hr+êM$ˆ]ŒÆ«ôv¯}Ž}™ýQûNû«vÅQû—öÓ`»í¢Ž¯²0@j}™·,QÖ\ƖµGÛô!oˆ„¾@(¡lV®S¾ªd}P¤äÁúgñ‘›Ö7±©¯‰4=cÁú7b¤+ҜwaWÕòµ¤6)…PÕ2åI¥L”uÉúd¬Ì1®î‹1 gÔñΑÁƒñŸô‚“p¢B*0z'©çÖl¬'`,Þ ú“Ôè‰ã|Á—[.ý¶X¼4ZÏ¿ÍñºÆFzÓny±wkì;A½=…«u nAÅ3¬gH®ëJ %HãS–à€ÐÀԖ Þ­-Áªduìؒ⾂Õ,^ÕÀ ’l ÆÑ ô…Š÷ÈBՅká’'xövYá~dѾÖÚ¤+¥y*•$Ÿ¿½kqWÛÄHKÌéOÛ|Éòw—nÜnÓ©ÌZ§«$¹¤½k–jÍØR¿£<9´uÑ´%Ïß}ÅâÚ¨Çh·xã‘1SRn?Øۚ{@ôó!û¤¶Éàú‹¦×ÔV.áÅóÇYhu*ÅÓE½q<‡l¼`»ÃôÚ²ø+Ñ%„70Š’°Z­[®×ójB<½ªªpéo™ÉÕÒOucÇUuEGIeTŒvE¢;¢éèÁ¨"ªÓ!½Ãë Ž˜Á(ò¸’ù.þ "FGdê {.­‚bvøéq¸¢>©Ìؼôz`u ë|ïòx\@£EÐèy '‹16œºõqFÇ7‚2+ÐØbµ²P0ìrºD® ûB!6PŠ=G Òê¼*¨ òp)vjKJŸ+)½€ÆÒŽ¶nQ¸Q6 ð­ >È=-{ŠÛËr·p•d»NµÎ».ô lkP.™ô`Cñf{´à›VŽ¾ +g¢RÈFc¼s՝}Ïõ­}÷Ö)«ê·ªx +o«¦ŒMMSSÚ +ŽÓèèÚÁ÷oûîÖʚì“ÓMn >‘ë['ŒØð±÷»¨žš?ÎÌ-& ¿‰×|+ÇA%îQ>UòSòSáþÿ‘(T.#1óeÞ~åUÞUÊUªå%[M/˜^0gÉ~óž’ýÂOK… [LˆÑ¹£cÀ#‡ñ1LXl†¸Ùo?Ëþþj«þ ¬Z¯Ãº8¦„H:š±ôӇÒP¥ÇxNÃΝ¡¯AGèÝ^7q'E8Zî‰Ä«+°¢ðK¦®JáÖÝ]¸o ^~çˆtð¢ï<¾\ +ÑFùFé®[ï`ý t#®øÇôþñ`H’ˆ¢Î\ •â¬Òð‡ˆ¢›½­?]vàXÿõGî}¾£nl§Rn³y+U3'ÖNÓý7û k°óÍWïÝù½YõíS¯lv8RnøÛØx••i + +%¨¯…‡´Ïh÷i÷ZY£±–C%| ±y˕œýqoÉO…‚·ò³?.÷Båò½\|ƒ|RúÇʢöÆ6+`*TðBbô÷EbIÔ†ôx&i¨œ‰‚”Ñb„,!ýr øêJNÄŽIxÃ8,Ry-ôÑ3Rv˜gyGEÝÍö³J”âd(~²Ð)ÄZÜÒ[8¼ôW-½‘9+4‘@Lk +†„‘Åû7ºPÀ.E1-d!ƒ¿—êã¥Å#*’˜$%‰í€i 0K'&äºuÆU¶uÂ@ôúòÛlCåi·Z·—=e}¾l™n½~³P*ööHҝ(Hw¢(݉¢tÓÙ{¤ópÞ« áÇE*ɖPm’(~†äµÌ¯å\y]îڋ–^8sዠÛŽUj*[7MZ²‡Uå¶H÷TٔSï^cöûXçý—6í¸åå­_¯­jÁÎ%V;6zÛÝfï#íz.l*pÓ 2fA>\-vˍ“ͽæe慖ö5fEHõ4y“¼møùsD{Äòæ_ZÕ:Kájÿ¥L?³,°šY¸•¹M÷…ö3‹2Æ存S*㔠|ÃõÊ|V„Ç[³8²Û6)dY\2¬Q+­ÒÕZ ®Utª¬‹• Jl{éotUHúQÒPœ‰@s`NàëðE ^I¾(yRYb,”áÊ*‰k4ÀN‡Áovø‹(ýÒP¸ +Ù{2§Ì®KŸ¥áå‰Þã˜{°pti(ñ„ +G—n£·9ÍÖ\bp•`›²âÑ%=FŽS"bA ÐôSTV Ó;šWÎê˜Û8¯.0%»æð’KGŸ»ûW_ !‹På‹¿ÝõŒ¶Ë¬ÛoÞqó«_`Ëç?v×˜êÙ.*ZbZeK@Bãâl1å&oèåHá•ó +6GG ¼V£1‚ózMЫøi½rY—×Õìbv‚k’ ßbÁåº[Ëì±*A/«ëÞÄÑ“¿K÷*®*{I4 BØM|p´—ÿ¡hé1Ía=Öÿî0hÈßiµÆ¨¦øg´Ñd•OsXCÀÅÐTjÖk¶hvhäô(¹OªÖ|£Qh¾De‚T$~îߏ¯Ärz¤<8UúáÔ"ظÁãƒà +IµOù“ñ?)ܸþ´÷LìÙ9 +ò=BÕ(½–JoK×S 9qé7X*Rµ?ý##ƒPª.­:§D©F-˜)¹ÅfIYðQ³ïÒÑß7W›o¿¿·ûúՓÆUƒà™·yJÉÓ1ºú +;¸îA쪜B6ÏëHl98»®¼µÆ¯tô•¾²zçêyô/=;sã™A’*Ñ84¿+Nñj}sYh“òöòû¢/²û”™èžŠo‚߶«T)eµ¼^>Ö7UƁØF•Qow‚÷Nncl»òéò§ÛÔâ„`«_µóˆiPÍMQmB#yìN`ö&ÑXß$†K«šÄ/d{Uen’þ¶Ë^ՔeXÑb.üч§v«FãIFLŒ©b²Œ[ԏٚPt„=ú ’¨›'H÷Þaµ¾ xÂ{C6XR½Úܐ´/W¼Ü«À jݹ-ká!Èô͉V¬oõ¶’Ö ~žvòR'õ¼—'|–‘‰æpU%LEª°¾Ê[EªD8^Fßç…Þ21­*£³¾lYÙ=eLWÙá2R¶ºÜeɓ¹=ÞHé͏ô‚óÑÞÁÓÀ##R7½ÍE¹q4.]æ¡>tÑ'6‹^U¼g$.i€b¸5Á¶C€>ª‰=Þ*ÐÃÔ©.ž†×“¡^â&ð€ãôaé´S’pzjMÕ&m…(è%PÚµ…¬ðwBŠLRâ4¦`²‹­0ù>;<Æd_öê$ùòòqµM?úõ´Á…—ÜüÌM‡gu\qËâ·]w,Ý;©¡kZMcW¹ïÚ~ýªÞñ¨Þu óÈÒ1‘š±WÞ7C66¬ âÆKîðsYeÅD‡¸¼ã–Ê1;m~»éÚì˖>:ÜRyêooujƤ6‡¡ÄJ=ªñ±uÒm¾£û<ÿMF]/ý̞˜\]%OHý•]!“É­ò°œÕkQ•yµ|€/“wê^ÕF¦ W—%Š†@iÐÊ W+î ×Ÿ%ˆó…HÐ[&؏"{?«øý:VÅy•X3›DK³I츨Ê$Ž«6‰mê ñÚûòè8ª+ï÷ªºª—êꪮ®Þ»«z©îVw«™–dɲ»¼Éò& 0ÛLl³CdÂâxä' ˆ I–ÉaINX Œ d‡%0É<É$™9ÁçCß 1ã$$!’æ¾W%Ù&ß÷ïœ#½SïÖúT˽÷ýîò^×Û *´@U®@•1 î˜²¿ñzKœ +¼`äSL¯b½z¨ÊÔªÃäM,j'2 +MQ +­Q + R +-QÚZ¥ÔôpT‘ãJ-º nìd× +ã…c–ìíìnP +²C)Ü=՝L7 +ÑJ¿Eg‡Ò¸˜l[O ÒÀ°#zmö¯çŒL$(ýèn–¨.lEMÒD‚…&͸q«Þ¦äÃÒ­@H„-P¶>2zÕG’ï|„{ÓjótPrˆÀÇ]$‡XÖoC%Y'$N=“ªáþ™áÖ>ð/®Ý»ü¢=Ŗ…SùyQE)Ç[Ö´JSùQaàõ·Ï]ºõÖ¦¾qu»Ó0œéØ6üàç¤;—O [£—að©ÐÕì‘í ‰d—^f¹H@ ô¯fHÛë7%?RPB÷ˊœàÆ®0™ ÝOV²COJ7B~2hæ _ä™ëÄÙC’ ñhˆxpü¶K‘fŽ:ö&Ú_°ÎàÇë…_.M·šø»=o¹üß¾ ðy*™J–Žö´,šJÚòúç}?_܏®\Ž=gïÖ©¿)’n‹ø‹°´à*Ågˆ¬•7ÊÀ{2ASˆÄnVð!K⑬s2/˼À’Ê- LŽÊ-N™¸UBY¸’çðbh™ê{ ïPßxŸ£8Þ'IºÄH¥XºÌ(éï>}=ʚÑýQ&ún:SªVàP…ª<_y½Âš•ý¦ò.’:õN¦³´d1ÉLcóâ㋙Z<¾˜­Aul1»8º¢oŒ94M:´rÿéDN +Àz&gèP% qÙ¹uM’//Ïê šDkeÓÚý5©ŒZ[<)ˆ_Ï'òm\Uü3)Ä4ìkü< ǽšeẌ́íè8±•ën2=år§\ZÓÝéJ¥]NLÁÈr^›ûŽ÷1¼×ð6¼fß/n€põ»„ñ>n>3ÀxÿÄ;ˆM°s—eŒ÷‘!ãIú¢Gå`“›þÃ(t²”B× ¶ÌÉYê­ý@é¶$Xے}\¶¯J¶ŸNgQ#‘X÷A˚ÿwÆÄV±½ªÎO0ðkkoéßxszðƒ—]W)€œwŵœ,_Tñ‡O% +I­Å[Òµv8¦QÀ>¼{ÝÒuë7n¸íÀÔw4 æ +ñËð]{–¥›Í)϶XŽHA¶í<|׈iõÕSž-Mžª…ŒLՂ…;A.ʌƒàÅwžºÜ<®PéêöÁ +æ+æxö—Ì/؟ÇØ ß(’ý~+Î(’´kY÷Éi¹|Pz^ráxB5tÉŽyÀ‹ÙŒ°$Ŏ)‚ƒY@”ål6JI’ϽœcÎø¾tô ÅO?e®´ã›*óŠ&ƒA•ÀIx_RqJ}]eT-U€•*•ªÙÞ A•È†J¦J°¥J°¥J°¥¬b•JI¯ª0µÊ0ˆ  ÉŠ&)…F*6ª¬Ø(²b£ËŠ.é;‘UVv·S(ägae×òãùcy6oÃʼ +óœ4ùhëi8IѤ|œ,“8ÁiÞ¢âhOßì8ÙsFœü,L™²0ejSJS¦f0¥D=SJSJǔ`í">Ž¡]$0Ã͟ÂȟäÙûö­Ùt£*KÚòRŽ­_UhŸ*ØìySÿŠm«»šúæ +)sÑ-øëzÒ»§„«æ;ÏbCx™«¦'اE”ÆëÌȏb¸àÅʅ._^ÄÈÎ;Ý.!i:f¼3_nHìˆe-o#%+,Ò¤d´kaƒPÓh)7ƳDz ʚÙÍY²Ê™Ùû³LÖJY4 X°½M”BӄñúB”dBï}²Ð>'ќÖdzü’6öÿ€x|O ëõœ êpNË9&§k)áÕ@0Àð|>žˆ%¢ –d6H–€†CnECg²@2 Xc}xÂJpá²u õPW>(ö܅Wâ•òM^n˜ñŽÈÃѽü~ï~yoôUæÝ3⇥‘È~ç^q¯´?â" Y;7$F;‹ºœ•p††:i‡Ì°D|YxêæŸ^³íæ7~6ñîëç¬ û„¾jE+ˆj>c_ü«w¾ú£¯<„[^| —W¬}û®Z±*šYx)N?6’ ’/X˜Zå€Á ¬áϙQ¥æ"n,ä'Ž,ÙÏjYÀúq-¿o +¶˶Ìx¶²/ìô+` ð¹¼.ðNŸ\ÄE3SÚ¬ïÛf{“Û¨ ¤p°íXSo3ÛۆÛmŠ KDÅôâº×ôzǽǼœ7Z?+fãµ\µ^ÛUëýXÌÆv7ÓSÛ¬SÛìSÛΌÙ؉‘',‹äY>èT¾5¢Eså|2_ȵFŠœ× *Å*ܒÈÍúžËv„fa6W4²¤‰Œh#ù‘VÇçԑèpò ÙáÂHùËêíÙê·#÷h÷dî3¾¯>šyÌ8¢>g(˂˜ú¡Iî]n&ïnVBÓAkvŽ¿F¾š3òŒ†ë½“¿¦¨ ÿuÛ9+×_ñèE›þnûÚ¥ó:צ#ÛèʛÛ_:õ½¾F$—cÒáÍì¿;fw_ªö¥ÿ»ïk¿Þ‰}ïæ®uÿùÛ î"а +8 öÍU¦ª(½.)Œ"zXŽ84”Tì]>›|E¼œ1ò^gë>‡ û¤]²ìwJ’_×QRp_ò+³e@a§*±ºÅ +u›곁…ú±:C²Ž˜ºÞ&…‹:»È¥.|̅]3W´fÇʟ.P4DœKˆFâzh,îì`\ªÌ‘YRòéT&Åð¥<ŸË -”u û¤2ë·QÀ)Ÿ¡á¢³õӃq¥anXÎ —ÕÇë<±g$?\Ú]½­z7¾‡ûÛê#ÜÁê÷|õµªÍê+ÖmV¬Ÿ`ÈQÕé°Bç93€ƒ¦@ùgÜÔ~£í`Ž.lï]sèòsw¿qãàžÊw2rl`rbÑü`¶É­)-é*,26}ƌßÙóƒ¯OßÚÑyÍGË/çp.—¨®À?Ä_|ðÊ|`éSï¼qá‚yY¯Fˆ½¾zLºÕ+[ŠºaäÛÇõFÙFú@÷ÖÛéfR³vK2¥fA 5ä2> ÜYf„¨èoHI¤¡¢ž”5¹Èã`(F™‡t(áWô$5P²†^$l•ÌzæI¦Öý\¢³)]A *òZÒ# !Ï3øRäÀ—>}§ó˜ó8™ˆ?c +¨(…õ0.e3ke(hЬÂÑxÊÊ.T•Pc<ƒ‡g¦Pú—R¿å»´,P`Iž8!OXþƒ26œ¨'U Ôe]ƶ5C‡؝ìLÈÏŠ [a"kāw}mèöÅó—.®¶÷;=b2V ¦°Ó[›?å\Xvyòuöáþú¥Ë›KW-sð¡Ló²ëߘß%Ç£,@Á®›n0”ˆq9:ËÁóÏðæ1™ õ ÜtÈbQ•“E¯†ÔWr¯ä)¿'ÿQvå\i¾ÜQºUøVö[Æ£Âw³c“Yór¢«ô®V{yS0½Œ2OG÷1:Æm`⾟fS.7è>¥;µß•#zô¾¸‹‘îN¹3†ccøjS‹Þú¢pù²SÑòŠ`koS 6ð&2îåø“n•¿€¬˜·Ê\` m¡!%AjX[â3»AÎuöŤ®5—6>Ûilð ŕ"š¹Àʬ5ábk-+¶ÌD¤@g̨ˆ–è9¤£'*4Äĉ! ¤7xʕðD5I.q™jºéê f¡ +å`žÍÆS|°‹h—™KÓ)ËÇwÜtCéKàzò$£Ð¥Ð +¥Ð¡‡gÛ*o˜(ә®¢Øl‰ÀKNø¡’ãP‘‘+¦²'ÄBÍäiš&5µ±éÿ3êU- +gJºÐéyG@[s9 Nä48‹SgN!Ãk‡Ê3¹Ätj=©fzü͚閠²fá"“‹”­³ÈÎUàÖ@ԏZg®Ð¶~fºa%W4š›þÍ(h. O“þ7jí´Mµí´¦ç">ù3’‘³]HK–ÍC&s;™è˜oJ™…·,.v«)œêÿÚú¥Ãš¥åLå;½õ…=WÞSYò­;Ö¬ˆû•P„}aꅯ]ÙiÄ£ÅýÍúþƒ%aÜ·oA©Þ»bûüó¶ì8˜“¤,Ñqùéß1“(Šî6}û…ý^†V‚EÇðø>Ueƒ·0˜O ä—Xa—{›O S«ùÌ$'ñÆâØá@§s W +„‚7©jÀ„·°W™F-08`ÑÑ.VHL„S=–Ǫ‡Ìñr6QsrbˆdÓ¨f¦)ÖÐô`v63‡*#æŒýêWR^^Ü­{dÃn¿çæ¿zb‰crê±-“ÏŸ[Kn oY˜9€ÿ˜ÝðÒMäY›ÓŽ6öa”ÁwEÜÝ÷Á4ŽŒÛ÷–¼+½Ž.iGc Ç9ßw1’¹ž&•Ä¡€ÎÉÇ[N<íÄą”ÍZ~²Ïy¢Û܂G@™ ¼ñ%·i<1ëx°óx0íxbÚñĪã‰AǃŽ'öO¬:žF x,ñ8Å¿Î3ˆ—y†'&žÇ Ö¢֝a[w†mÕ¶UGèá’uZ6lãŽP3 +°rÜÀºqÈ`jÆ°ÁªÄÁ’DÍ(4ì³m;ŸmÛù¬Æ¨ +€‰w҇k¾qß1ë‹fûgÓh/AcgÆ >=€näÄéqÌ`KPØ@’ò‰#š¢¬Ìx¾x+(e¡<û«Óáé…vö'- §nYú•óv— +‹ðž@1n$[æ‹lÒ ~Á=ƒ+/ûÒCø:bzM~qk·ˆ àS¶? vØûðõxŸSÄ`)ØQ×6„7Dµ§½Çµ“šS#½¸Ø®‘Ï'ôF34ZϳNŸKw:Â8Ðg}Ìé|HꡱéÛÌíJ¤â‰D¯$«’$c„.‘|°æKø0rðr +4„L´%IaäxXŠË’s èNžO !þ¡|S]2¥A‰•†|ïa2í‚RøÌfz³xÜÙhÏ@ƒÞa<[hh¦(5d8®9d ‚ç`’€%ØÑô qeëkœ"û“ÑSC§"'Ðì(GÛ_‡¬߈#øVÎJ[}©üi3YÍúñ¬¹ä‚¹YÜ,#ûML*àã‡Õ.J‚„üá° 5gFŸmà0Qqä­T¼@à 72Æ¿žz¹+®àßÔü‘Ö{w·Wºð¼Öùó§^M0?¿%sçrþ–»|êA\ûR‡^`r9¾cßd†H¹z‚; ß¹•¹ðIùq+fö°¢6‹BHËHfe‡³¦ÖBµpSm†šáu 4¾ˆ»HY¯]Ã]îÙ*\©\º:¼U»\ÿ¼|³²'ô…ðuÚM© û«w—ßäßAÿî{¯õè÷žß ø>jÍó^à}™ó;4³:XÝ\ucÌ(Š?@YÐ=`4éGÊ-zÁŠ9\º;HÁBz8ŸÊéyslúó£~–IM_g^¥£ÖT¹µµWO©ºž + 7âu]¢k°©9X7‹ÙK¬Ò@Ï ¦×¯Àº";XÆánÕ +F¼_Há_§>J1©rA/§tüX¦{Z ùHØãæ[Y UÂó­V²s¾lL¥­`c$kTM’ÒÏĬâj8+\ŸÒÇp刹Ù?ìgüÏâ +J!÷LΓ{Ä==ûS:îh¥:Ƭ§œ8›™¿“fW™^=d)ŒeYSÖÜ kvÂþlzõNß'×(ǞÄ_þT֝Ié'± È Ù0>hÓÇINfkÓ?@è +¹Ô®0,x†uÙ,;ýóÎȺ>›•Ù‰iôQãó Ñsð›u#uÛ>V©á·ækÉ}7Æò8Xí(Oý)Áü`ò<æû÷ÕR>°GÿSßÀ×DVI$­†ÍÁ¾XÁp§·a2J8½öÉ[ÀéÝÌKæêBò‰%änFyXÃÝâõ£Ý¬âSõ¼~sÀwoÛkø­—ì”]2±Z#a—“øÏtç ó$X N>ÚhÏçd…´RÓèÈÒI÷¢Í{;žé`ª\KjºXKút±›ü„U·äA1F“1=jTrºÑÑÝ©w<Ãcª#`ƒD²zF϶×z{Uó*¤u6zíñsqíöÚs5¶–ü¶ôx÷sÝìÅÝ·w(±J·J÷w³É^©ThwÅö`}Õü +é·+øüÊÞÊ㕟U¬ˆ- Bâޅ÷aî6ñEýC]§ß¢CDw|Wü7ñ‘ý|~³¿,‰¨«¢¨w›J¶)aI”jR·CǺ¨×ônGw­¢'%»øÙµhG»‘å£'ïy g¼‡é[zZò7z@È;:ºmž„ò0Ö×îLþk¨Â܀ ¦w4ý[¢ˆOø`Џ5"eh–×)§‡»vî,ßê&'s(ˆP†ÄÀˆð•0aÈpÅ¢j‹E%ÒÃ^Û繁Äð@‘Óù¡ ºiÍK¦Ãû丫ÆCÿÓ þfƘj2âñ5$RùH¥‘ +َV?ÙSŠôôüŠø¾P*G`ÐîND»ˆX{yy™ÙŽ®®Ð¶WƏ돧Žê?ß=˜¸ñÈèʙà!ÍÅ-PÓqv¼eg'k‰˜Óž21Üy†”1×>´®-^›üpa2uîòï +¤[§îZ¶sÇÚúë o¸86º2?˜­àÕ ·/aNýäÁr˜k2Hôܽm¹f• cõý»pé®% fXqʒì¬ýuǵ­Á$—Ë1+.§ýËT/{¤®†· éA™ü2ºCã% «¥`¡Å(ûjµÞXTÅ¢^QŒ€e#^B&A Ç¥k±¨Oô"g°PCYÅ3Þ+ß©IÆ{ZPƒãcHØÜv¼ídK}¢ÚÒh–‚µ ¸`†¹b1Uh–ØÂké2⎦ÖÛNC‰~:[ëÐ@w‹‹wÍB‰µ2I &ìæ·'UȔ¢e RølìL¥¿0G¦K¶ô2QËCþ5+ã´ófç6 ˆ;õÓe‹«ø7m-ó¸fAÛ"ÜUí^6õûmm˯<ÿŠy 1v¹¤H¼¥#Ï<õ>жL&’žº Ç¿½ × +H‚[øÄäê©?÷¬»ti÷si^’¥äËAßî€/¯0%0‹bße?bâØô;¦;›k°©X’Ì\ðΨ–"ô¤¹:ot3«˜+ÙözïW™ÛÙâG$u5Ûë]&nb×{Ÿeÿu22\~½÷· SsÕÜ)JYï}ÃûÞ½.qxãŒêuØrØâeԀ‡‰1{˜¯2O1#bÎô^ïý²÷/çe=l¯‡{±ÇKkMÞ6D{ÒøQ¤Àwïò{š.·_ñÃ#xEe«ø9qŸøMñ{â“â+â¨J·x ™p–åÈíUƇÙ^Á=ÆæMQð EVÛ`¯=-b/bŽ ìQI©X%xAÎ\GÜnÏ&Ì^/•2MŠ•Õ.d‚¾n¢iÄ|–dÌ2¹ÃâõxÖ±IfĨcxõ,Çí,¯¤ÆÆ©SÄL”OXy•å-€åxâ}2eݐÜó> [“ÕY³“ï¢ZTmI†hMЖ@Ÿ!Ý;ݖƒ•èþã‡}Ùùµ÷¼Dڒ_“_C4šD´2ÞE­;@Å…n‰FPM7`^&4óþdZ0ôËÒévLÆn:³þt[á-ýóOæÀeë‰,˜bÌñÇʉ».»v –ã~òÚ»È/qt|jه~f—÷qˆ–&Ëü˜m8Tdz\Š–ÍPŽrGù0-'œ®¿s_ïÙ&tzŠ ÄC¤øÚ¤²ó—ü?öÿXy=ðŒº4èþS8ÿ±b†ÍÈsÑïÆ΋_0ÒÖè#©x*žÞ~3»Õx$w[þ«…/·\Xü°tMyGëæÊÏkwÖïh{i®Ì•¹2WæÊ\™+se®Ì•¹2WæÊ\™+se®Ì•¹2WæÊ\™+se®üï.ˆþr<”ªˆ%Ç`áa¥žÏuœÃÖ +ç­¼pã² úÖ¯Yuîù½‚·Óh™WlSýÁöPk¸«;RŠÎ_>°â¢d¹pÃꋇÖ-ÙÓÓ2úßÿç@÷ÒÚAÞÏɅÓÓPcRöê:Êә:ρ÷VCtZ‰.DÑ2têCëÑ´ +‹ÎG½H@^ԉ Ԃæ¡"jƒ7íGAԎB¨…QêFTBQ4-Ghº%Qõ£A´­F£!´-A›P é(M~¹“Ì% +ߍ5ZC뮺fÛu©þm7¤Îûì5—]Ûºä³;¶Ò³¾qÿßOì:{ó$:9}Ö‹O߅3 ¹…¿¸<†Îƒ%ú±eÛ8³À˼–y°¤a9–å°¬±)]àšƒdqìGŏ/܏Ì­Ge ç‡õ¢ãmTå»Ðù°”Ù$*Î,p,#^“„cƒp^ƒ,°w\‡¶ÃñU°^'mÂëPþÒâ@Óï[ º®-³w ~ @à^—Àþµ°ÝËt¡Y`}Ð2ÿ<ì‡ã«€`é‡kVÃý בûh±܃h ?ZòùþÈ÷á¼ÿøÄ¡ƒÏ\*õüÞµ>èCo·÷úò|ý£Û&o—‘«ÎuÏ|Ïÿ]Sà +endstream +endobj +214 0 obj +<< +/Filter [/FlateDecode] +/Length 13213 +/Length1 26740 +>> +stream +xœí}y|[ŵÿ̽ڭåJ–eIŽµX–lK¶%;r¯ºÞâÄNbg#6`â,Î9ÖĔ=¡Ù)]ZÊò  ;ì%-”–¶yäW(Ò¢ô=ÊòÀMèK @lý¾3’³ï½þñû}~ürGgö9gî™sΜY ¡„$"éê\®$üY+!:gÕÅ+Òåþ¡kVm¾ÌóàE·4£âO„hŒkÖ^ü³—¯i@þcBÔ¿\»áÊ5éþ=Àº®Åê×Kü?!d]*g¬C…n?½Ÿi/ʅë.¾ìŠ ½uˆönˆ¯Z‘.ÏóâXyñŠ+lvõ5èÿ*=—¬¸¸?ݾôHÁ@üÒËÒåuÓXûÀ¦þ?ïþáôÿ!9Åû„(î yH]âJâ"$•ÌÀ¿MnEÛû$gr‚áMŒ> r€¡ÌÂ=ä_÷n&7ӛ¨ƒ×ÞIE|¹ÜE(1‘mà`˜v“ÇI ê‘9‡Ü‹ð9Jò2Ú¤>!Mä5²„÷/Fݽ(¿D¯ò7È…Ÿ¼FSŠ¨Eü ÙL·Ñÿ—ÿ½À0)¼šK‘É÷5¥©'H€Èäbr ¹ü€šhAê’Ô!¢"6ÐnMý$õk²­Ãd”þTìR\›Ú…‘‹É%ä²—–+ú¯Lüûäõ©xê÷DOn%Ñ,ê0e0µŒL#³HŒœO~›~{êQ”L¤&ÿœþi¦m z;ù9H>¡-ô5E@I&iʝúmêDM0ön*"H´€Î¦ ¹â«âDIì¤ £Ï'ýd-‰“Mäa„Ç1Ë#4J«h‹Ð"ô +·w /Šw*®UlÅÊl#ÏRB4HeÚAÓÇèïéïÁ­+Åk' æãÁû6“V2ôâ}wb¥~Íg}ˆLPŠ¬¡qz-ýÝMп/‰Ks¥Ö¤n ìu-à——‘z`X‚õ}‚ì!cýPt`îÓi ï÷-až°YŒŠ]âyâ5âøñuÅ2Å“ÑÉ¿¥nL=z.õFêíÔ8ð™I)#àôÒM®ÆÊÝN~¬?'o’¿Sm¢—ÐoÑ»èèOéô9ú Âcâ ñNñiUȊ»/Oš'<9:y$՚êIÀû­$ד[ m?&Aâö[’¶Ñyt!=—öãMôVú0}‘~,(„ó…§Ä€¸Q¼J¼Z¼[<®ð+®RüA¹y²wòÎɱT$u)f|Kê?0Wq™¤3½€¬‡d Íä +Ìùðü[˜ù<|oðSÐ|†< ¾&“ãTK ÔHóiamÀ[uÓËèmô»ôAúoô}ú™@1“0CX ¬Åz> ¼$¼&üE\">.>'¾&¾¦°)æ+–B +V<¡$J³ª^ó»/xr⾉û'…É’Éޔ:•—š–jK=™z1u(õ7h®‡”B.@§®!CšQ¬Ôo!±Ö%ïC†”73-¤:ŸžO¯§o¯¿OŒð($çI:ŠðÂ~úKzÜ“¦¥_R¯˜ñùÂájááyáEaRÌóDøY'öƒ§×Š7‹á~/~"~¦0*²E­¢_q‡â1Åχ_*۔ó•[TfÕmªËqʞ࡭BøÚý׃ãO / eЈÿ­ô3òkÚDþJ' å·"\G>€-šé{¤љôú€ +ý軟ì&ˆÓ7„ëÉmÐþròb*¬£åôa¬áíÂòЗO„6ä`¥íä€x€пÓo“#x—>!‡¬¥¿'³è-´…lJˆ\F@Âð(eUž{»–Ù^ÅÝÂwÓ#¤MØÅç|]AvÓÈÛzyRH*f(ž‡”Ά–:Ñ{‘ ¢WB6¿/(ÈÃÂːÝaèÙhŽÐÞÝГF̺˜\FšéBBégTKÌôVHûÐÌ[1ŸÇÈctBœ­Ù©}>"ó»É}˜Þ)$ÿ’úù] =ÞKuäûä/džxL‘ƒã¨"_ٚ&W’·R Éo`±$ñ2‡¼MwÀnÌ!¤6ò½Ô†TÒx ՃyÞ@֑¥ÊF¥ Öx…°ü\½[õŽªNU¡¢Ê«”«•‹”ÊfåLe…²DéU:”&¥NqDñgÅAÅÏ*¾Ý-Wä(ôâ;°ŸÃâwÅb\œ/ÆÄrÈd¾¨>þ&|(üIxKØ/<*l£ ÌòíÔ¯SßMu¥êS3Sٓ““Ç'_œ|bò{“wO~grpr`²oâ¥>ñډá?¡ŸN¼ûõsú›É/±\ž:75/õ)ô͚º3U?ù&݉wô“ è×ï`Wïĺ<ÞvÃÂÉÂ*‘IrœŒƒCo }Œ<ÛBúÈ9ª%¤ë€f^Ÿ‘Æ~ØڇQ±Vì1p|Öä|"ÀJa§}‰<žz@\ +Ã\Y^¥žÉ“"X™K°?u§ ä?ö’½÷ƒÚ#ª‡AuLõ(9®úø%0Ž‘B«Ò¬Cæ'„8ývê¼Éó`Ó®&cŠ¿’¥„È󺗝³tÉâE »:´Ï5Ô×ÕÖTϚY^Y ——•†‚%ÅE¡¯Àëq»ò§å9ö\[Ž5Ûb–LFƒ>K§Õ¨UJ…(PRÚê›ÝçIúŠ€oΜ2Vö­@ŊÓ*úTÍ>³OÂÓÇ»yÎì)£çš¯ô”Ó=å“=©ä©#ue¥žVŸ'q Åç¥ç.ìFþÛ-¾Obœççó¼"À ¼^Œð´Ú×µx´ÏӚ˜½yÝöÖ¾àÎÒ5ûšûue¥dX—…lr‰\ßÀ0Ím <#ä¶Ö DcÀ¬N_KkÂákaSHˆþÖ«] »[[ò¼Þž²Òm^å[™ ¾¦„)Ä»fN&¡jN¨9Ïzö:d‡g¸tÿöÛF%²²/¤_í[½âü¢‡Ñ0‡@·%‘{Õ»öSE ·4wß|zkž¸½Õ¾ÞÊ۷ßìIì^Ø}z«—Å==À±‚vßöÙ }ã¢=Œ‰°é³WI¿T¿¯•Õô]èIh}M¾uÛ/ìÂ8·'È¢+½#N§<–:Lœ­žíKº}ÞD,Ï׳¢eÚ°•l_tå‡ìqœÙRV:,™ÓÜ6š2½áôLÿÉ6žãÝY®cÑIvR6#ß\ˆA³ʃ™tûð"³XÔ?‹l_5 ÝðôPŒJ¬Æ2¬Oh›û¶K5¬žO(ý’ϳý8Á²ûÆ?>³fE¦F嗠É3ŽÀ¥˜0´Oå¡P"dr¡nÆBbŽ ¼\UVºyT8àÒՍa=5aðÜëe«ºcT&+QH .ìN—=deÞ‘áž„ÐÇZöOµä,e-ƒS-'‡÷ù ¾{ ;©ä$4““dËn]W“ ¶ÿ¦¹?ÝÞ±Ø×±ðÜnOëö¾ o;–œQJ·Ï:ٖÉ%²›»ÅÐÚ7¥¤£©};ò³oë\®£50@iöÑ[Ëô–ÅçvI8Rß²¤{}s_SÏp!ÚºÇp2—y­p²–•<¬D:(˜0"hxSޘLÈ oUð +^^5J ¯ÓLÕQ²jTH×I¼[æ%ݧk%ghOw¥qø{tâ»ð"LnIE”?àʆ³Íjô òwR?L P"ax‰D3–J†—¹ë”„€Ès1@'`9 ð* 8ÐO¦ïNÀ®L‹’¸Å "‘Ä/$O–vvvŽ”D'÷d+ݍmðEÀÀ.€CO•Žðš™Òn€HL +%a“VbªJLD‰©)ÑË#ž@½?(؍Òa€Ø¿À$|I:‘öqøp‚¼€ô à(@—Ú/þcÏÂऱNüˆ>Ç,?']€À 8 ‡Å ¼ñç@<Á{õ†/ ¼éÁLï,àa=&Ðc‚< HœÖ‹õ8 +Ђüç#µ÷TŽñŒÁÌ3Ç÷ÔÔUl´ŠÇñnC<6!b€NÀNÀ“ÈÑêù¸c#Õ5•ì•Žaù§§‘.FŠòž…‹Àw*b€Nk<Pï1Lò(#l¨ԎÂ1ðÿV5@ñ÷‘5œÊßG,©l\ÀräuŽýïäµLút&ýQ&½)“Þ˜I/ɤë2é9™tq&mȤõ™´.“VfҊLêϤ™Ô“IÝ<ýddñô¡Æñ0®Oü+ù!^÷CvՇøôš!Àn@°p %C +¡©ýˆ1/ñ3aœh7ðåxóÄ£ïÀò°|Àñ~pFÍ`7 Ø8(~0¢µxeñHÏ „¥]FݏQ÷cÔýu?jb àD2   B˛hyJ}X| òór±ð" <£$Š/ +ËÉjèëƒBïÈjwb01Œ`î‡ÅׁëuŽëuàz£_Çè×1úuŽëTIÏW»GÅ_Œ4³äç{¼«Ý¦Æ +±è›!IÍx¡f®—M`Ò~ć$ª ­M@҄Mxå&¢ÛÄÎKn±N8‡T!­E™¥5b)O«3é,14R:bX"Í³ bJE(ñR!J…(bšąY„t:ÒBÑÇÊXDÏH¶ƒË±gÄëÏdÊ++Ÿ½ÂRRË»x÷´¶Uö5f‰Ó0Ïi˜}‘˜GÞhÌ©¨äÃòFf·e2°f1g]F+G8At‹V¤%H³3©{ÄÕ䣍B7V@Žôඬ҃¿z°Fuփ=zÕC"ô=äH9҃™zȑ~Ñb‘G…WF +§ïÚ'üš~-/<^ºKyD)ìÂIZØ%…]ÂAxAõ‚Zp«bªåª¸j§JéVÇÔËÕqõNµ2&ÄÄN¡STx\žO‘§ÔÓ¦”\’W*Š¤R©Mµ¼q½pq¹ð'Bq܎k^kPxuáâb >Ä<7ˆxˆçv#NðÜ~ޛäeéä8Öó à0@äõ|¬pHØÀ©y„·@å-ô~‹ˆ8ð?Âk%áM´0=`q º +áMá~Þçá 2 +x +oA±ÜÂF¢&wã„ðá^þÂo~ƒð +¯ÁP‡ßð·zs…¤ØÓPß ö”àÎoðn»…ß±í ± è°þ¿!;/°Ë¢w¹ǵ1%ۄkÈUÂ0(m®\ ¸ +p5h›pàrÀfÀ^3Øظ”×l\ ¸ç5ëë.BM4ú98hÄA#qN#qЈƒFœÓˆƒF4â ç4⠍8hÄ98hÄA#qN£4(â+W®\Íë/\Ø ØÂk›—òš €‹—â¼f`=àBÃ_Ãñ× ð× Ç_ü5À_ü5 ð× ð×pü5À_ü5À_#ć5)¨¨áœ@ 0'0„A Ì „A asaƒ@ÂüÂÀþ0ð‡9þ$ǟþ$ð'?Éñ'? üIàOrüIàOø“ø“ÀŸþ$ǟþ$ð'?ÉñoÖB<áÚ&¬¬ôÖðöå€>À +ÀJ^sà|@/à^³ Ð èœËk––ÎáK¿–\:ýœNt⠝8§8èÄA'ÎéÄA':qЉs:qЉƒNtâœNt⠝8§³t– ’sA‹)Ë*Àj@?` o_謬ä5çÎô.à5Ë݀À¹¼f1`I#UPZÎ)u‚R'(µsJ Ô J ÔÉ)u‚R'(u‚R'§Ô J Ô JœR'(u‚R'(urJ Ô‰7êNN':5 ! · +°ÐXÃۖú++yÍy€ó½€ xÍ2@7 p.¯Y XX +8‡ËÝZä4 0h„90h„A# aN# aЃF˜ÓƒF4 æ4 0h„9$hü‘ÓH‚F4’ ‘ä4’ ‘$h$9$h$A# IN# IÐH‚F’ÓH‚F4’ ‘d4„kèCÂÕÔ -ùÚò´æèÆnèÈ.èÊjèÌ2hF4¤šR‰@/Ê ¥Ð“"è‹ZQíðBK<З°8×g?ù²Ñ‡YÙ?€9îÆ\waΫ1÷e˜afڌ×aæ̯ ó,Å|‹0o?fW€Yz1[°Xv¸îùÇj÷­€M€€ +@9`”:å*xF_vÚu€ à<€Øl8»Y̹1W¨à}žÇ;yüoáñ<·ñ¸FÎí2<ßeØÞeˆw–wzº ³» 5]†gé$يïËù[ wo5Ü´ÕpþVCûVCÓVCãVCõVÌ­†0òú1­CÇñøßÎbò%ÿÁãÃ<¾€Çu<öðØEëF D;JxëñÞÇF¼HÆG¼+‘<:⍺Ÿ£/NŒnúàˆ÷ÔþxÄ»ÉÚo’5#Þ +$M#Þf${½÷ÞQ•Mî¿x7¹ïmw'¼ÕîX݈{oÊroò†ÜýÞ {uºzY:ifÉÓîzïcî²tMiºfi¶6[;4JÇäéê¡_©‡úÔCõPH=TÔC…ê!·z(_mÕX4’ƨÑktF¥Qh ÑXGS‡åRv¶¶ª$–¨,Vð¼$°XHΪH;éÛ'ÔÃM¨f&²Å¡cqíHì_E:VzŸ.öRÝÂsJ_MX:Hǒ¦Ð¥öŽ„cqGb1ý£B}b°¥Ãƒ'áXċû[zž¥ùÊL^F¾&“D¾-“GÿžÄÌPǨ:µ(1+ԑÐv×=LéwzPJ·Ë’îQšbU7æ±ëå1B©ûÆoç±4uã·{zˆms̳4˜«g·|Cԗ‰C§û©,£Ýu¥¬w?¡v·ªÝÓÕnŸšÕw,FåÐê¡Võ"]iÏOÜÓ±¸;‘ÊNje2XµÅžó»Ç„˜PßÚ2&4°¤§{̱[ˆµ.bõŽÝxɓý œ1ôƒnÆ2ýˆŸõ#þ¯ô+X¿"–¤ûð~gônó¶¶ {½S}ÚxŸ¶3ûì>³ÏnÞgw¦˜îã=­Oö,âå}¼Ù³¾Ö§àŸèSô}BÿÕÓßô_6þÐ1²ˆ&‡k7³oú|­ý€¾ÄŽÍëì‰Á•Ï©¥É̗¾•«Ö±tEÿ(Múú[µ¾Ïð¢Í_oOlf͋|-Ãdsë’îáÍrËÈ"yQ«oEKϞε± g»uŠÜplí7 [ːÅ­Î ßм5w2Z­ ŒV§ÜÉiµ®gÚ×Õ=¬!M=Íç§Ó=B–Rߗçíi²I \j½ö­yûpô„d…zz_SÂ`Mee¬ ŠÏšŒìkžL“}k­7o}$Ó$¡Úìk"P¯=­-ÿçÃeü¹ôŸxþ™ždªý2{ëú–Ó?\©C—….Å'tùID(1¹4SqÙ¥!Ëú¾¢¾Ò¾6±ÏÕç.½´‡U>S;õ°óE½Œ@ø2¬ÁÀÌ,é aè«nšN؁j!âV 顗^v9z\NÒé7©Pò,8è;XxЯ1€K{bQ–ʦšª]Þý†ƒqPGUT¥ïî¡¢HGéÇ{U¾B’;*dí•Ú\J-ÕÔåé¼Å<YR¥æ?MI›Z£7샋ë¥Æ§TTå,²Ž +ke­ó ‘‹£$3œ§s#E«N«ukvÂUpöÑ»è„ H/Dƒ±Q:69élœ‹É_Q7WWSi¢¾:l'Òqé%²qS(4¬bWÿŒ1oìÕJQD¤é¡žŠÝØK°~ï ¶ +9Þ*2sFU4à+P«ÔªÌ:ÌH/ZE¦?÷{Ã3Oœ+/­¹þâKær…Áúø®ýÅ?Ún¾ð€«¡cå!úÊõÍu—ÊÍÁº⺽>zxéíƒýX#9õoŠ[o“™ä5Ù{ÅLê.0YcÈzººhuɅ3¯¦[r.+ºbæ˜ãéü¬pÁ³ðz A´^6dU‰º_ˆB^QH ¾ôÈ&UØ3v—ãÆmF•ñYøÒ*¢®ßãwVC*{H±ó8’Úÿ´ÉuGhd”~°gÖ%qy 1óæ«ï•À¿qޕÆ+" Œ‚Ò¨ÕY. ªÿô€³Ô$Öhn8ÂyAb«ÌҌ‰ ^wí ‘^šæ“å‚¢ à£J… +Ûôʙ3ffÉ8Ë:UUQK!ªÄG²Ëœè²‡C¯Î)¹³ýüû7¿ù¦Îò¨§0·¤!XßwÝ÷Ÿ¾cóCwSÍ]=ßSÜât6´?ÑË͍sËftí½æÆ»^v[ª<Ù Á`dvñŒŽ:*~wÇnšsO ³?ùЌ‹ϓi$Hþ";Ǽ¯è_ ˆçx—Ýb[‰-×îpæM£O7S–à”)лæºJsƒ¥j!WSÈøm">¬„d’d»'F¤ý’ ý®4˜?*œ#›±Ö¬’„Aß’oH‹mˆY¶)æ“XlœI1c¸ Ÿá.ÖæŒzc–QgT¨þ"¿ ²˜³ÍV³¨òx +U±¶0HÝ9¾ õK‚´Àì +’´¡âaË@zgš܎(+m¹.­ãwÚ¸(Ù:ÌßÙÒø¾ßØk§?]ýBMéòH÷ÎØê]“«ai¨áW5,\䯹ýâ·ˆ´º¬¼š¶W‡î¹ë¢•ßze›+ ËSC}åßÙ¸bÅÜMK™õm‡ï‡½ä˜œ+ëd­œ%ëeƒlTMYYKv£”æ#q‘¹©ýìÛf¥H@00»lTa!ò]8»Ú¨;£¿!Ý_ÖkÅS/3µ4W;hêNR=õ'6S=Ü®¹BiV^Ô)di$­GÑÊÚí vH«Ö:}„²EËÏ&Éâ±D,²¥Ë2`´ Y´ µ8 +†ŸI/`ozkz¯‹7ÿ]nƒ°~Ôìe‡p›Oñ´é`«ÀôA0Ó}Ì`Ÿ¨b¦|ËÓçX,9ñÎ/Xfr#·èÕå`÷,D„¦Ž‚¯?_ƒôwcÄÁlºÉ#2"µ£“ÈÑO‚Ž*RãPä«C˜a¯6ÙçÙ{ƒkìëƒÉb-™ÚèLÒó§ó“íÞ_¡?PT\\ò•µ‘f@6À0²þ&Õ×wG¦(§þ–iª6×5W–d³œ-e“òÔ_=Mµë\sí$ôÔTG…·å\‡ÝêpØí4XâØ ašSSEÔ1š•5UŽ‚ =š[õzs…’`P«ÕhœaÞ¼Uã©% )VÐSRÒWɒޝ&éMQ­3kš¢^ô¦ÞكõHå€Þs Š®Š]éÞVx¯ã¾º§§¿bzyú[¦7¦¿WÿyÞ§õÆzFe:Æ8ÍúZ{ž"g–ÝÏ*EvÜ«¼tTSeð.UæÂQlƒžª"¯+ë,[^/ÛY–,S…ËhÙ/‚¬ëÒõéDÝ(GD a}u梭»0\(`è¸l¯”s±Êâ\GtW%­”=þ¨»2\)TŽ +×ɺS¦‚4ؐ3*tˆ>y@”‡d…ìœcdò…¡HßڃѬü4F©cŸ’ˆ&>½ýÎÂ`»äò¸„#®£.ÁÕ &ªˆêU•¨ú¬í±1Éx‚Çz7Âðo‡[âîË8jêÆ7†P1¾;ñ»±ñÞØøFä,·:s”dYæ3B>C!&E½¼ÞŸvSÒȖkã{-\ì¿åBº6÷ô}9³-cSε)l|?ÆxZ›çµ‡««Ã…Ncþ]Ý·vϚQ_¼ã‘ÇWúËΛg³ý90Íf3ç_6/~]ÕôZûèÀEßùÓÒ¢KlîööX GrËrQu Ùfrº»w÷Þùg_aQlîýØ©ÍklèÚY6«±¡ý‡ßwÞlgN}”J*îQšav‚tH®P +Z­N/>­yYó¾æ ­Â-Hzw¡ }¸Ðø(ðQð„ê„'Uh(”µ¦X€ “™BY—å%;2y²¢ O.Ö4$½õXsl¹§›,rò¯0Om s C±iÖBá"^…Ú¤+öê²Ü£ÂRÙJԒڣŽ¨eu—Z•PÓÃjªæ´Íº˜FÆQX&[s‰Íc‹Ø^µ%mGl)›z—Ú¦ºÙ¡U×p§Ÿí"i㲫Ï|/|ÌÕaLfM§ 2 e>ôIÒ|¥ì, z¼J­WévÓ-"ªÀMƒšbwƸîºëÈÜ%WÊR (KÐûEY~ѨT"¡©V_¡  +>¥OD+üœ©V&S½°T0mÌa#9Vù(Êñ}eg£ÑŒM¯œAWw|¯ó´xò½÷Ý×v´=&Ïõùøî¶täºÁ‘ÝwÜñ€Ò<­¨˜üãÁ_M–Tò½n ßïߖH\³ñöÛa§6¥ÞQì†×{DžÈüšõÍÂCEZÞ³¾WøaїÖ/}:UëfXúÍk-ý9kŠ¿Ô«²ôÔ2×2¿¨Çògë¡Â¬ªƒž(Uَ<›Þ i¥<š7J½{ ÈU%X¨/öJÞµv”ÂgT6oA–jk”«\‡]B—ë ”×Y–ÍÖÞ2 $à DEÀQú¯éEìÝ8Þóä¦ÞÐüwÓ¾óvi¼KX ˜ÒÖ^vb—4²ÁÓ±HË¢<¶¨°)ŒÕ=éýŠŠN±ö”ÓìECU”0ù!Q) ~0?Ç^¾pëíO>òâàÂÈ9¾`}ïöÉOÜ¸—~´ôq­/6÷†ö»%žù—o]±Ã)Ío¶ÔŸ·êÆ÷ߦnóŒ fôo@ë²4FeŽxÌH¥,wŽÛ#=YᜰÇ|;ðvkŸyÂs¢Ðäaú䢍Œ‡é"/ّɓ³™ö|šÓŽÓ_ó=¾®‚v×\ÝM[6Ó¾lµÚgȂ5sk™j™HœPa?=Lê,õ³•qº¥Ni¹—¤¤tDJIšø>>wgzïÏ‡ie“êNj™ôñIÓ1³}UÅì¾"£Ågñ»I‘Q¡ +0¦`i * féƒYЯ½ÛG³tgê—ÇkÍñä@¿¼V´æؾI¿2^€¯Š™p’^ÜܪŒ~eŸ¦_Šzß\9Ö~töw½?ù-þC×ý\¿|iõºýGJó—Ï1mªÄ± ëWi ¢"Å÷SÚ%&¬ö…Ю|RH¿'ëF-£Ögò~•§0°;ø¹Ó\ÑÕÂë¯ToªÞ²¾åx_õõÇ +ÇUÿi9aý‡ûsŸi†ªM%XÖ[×Û/t^è^ã»KØåò=î~Ð÷…#+_­³² ]TÃ6Ì`MTÃoZÑAÍApTƒj{Êâ’󫸶™ò=QÉEe× KØ颮Qj—«ˆlñÁÁÅ1\žVå&ÔD:É«DL±³3ü¸Ã^æý"²Æ¼^›Zᕲ\£Bßْ5šÜã›ãiG€¥ ï+Œ΢YÎ@á8}²5[öU¹³²…lÙ`Šf;üs7¤­24yâ]&0X~¡•…ÌÕai¶Sóêü”Kvxc.î§SLš§> OGŠ­\·C=cî„/c(3cØø^Ǟs—"‚õúR֝‡7½‰g_qJ6rÒÛ·Z±þÄ3žïØôüWÉ,Wñäov~:yˆÆ^û¿¦Ï {þ=|ßúu÷Eè]++¬5¥ÅÓüÍÔöÛ·¨©{zûÅóVoî^¶¬xònâ¿Ë¨‹Å6BGÒçá^f)s|U_¿ÛÌ0RH£Ò§ür³ÅŸþ„Ù7¥ùСɫ'§®7éß9o(¹¼™ÞØÉV9‹ü³w·\ÐNO§jµìô©Õèؙ™ì4Kì`(±#¢Â>i·¤Ž© …2r˜ôÿ«:ð o“6ɧ\,ê;„(©øiWȶ¤‰>¤z,ÿ±ÒgóÇ\ϖÈÿm©ÆÂË=N÷üdoŽ/j‰»ãåÛÜÛÊwºw–ïrï*Oº“åº +MrV2&ÄXo­1:‹õÎFÆ"#"Ѫ3gU×ÔÖÖ=/ì:SM§Në&c£ñô6~Òg§~KúöV9õ«%·ëúšNÝÈz‹rêOåeûÒ]Óüoj”Ùo¢êj3µ#®¹¦1d¹Ê‚UTÝäôê‚^ŝºIUúý9:¬-Öæ©\›\YÅè¼@•MvÕD§1‚!æDeöÂc3|â‚AD,*M–† +1áAš™7áŒIOýØXªf·Ö<^Ašî»f>gFúô‹8—û´M7g®÷Ï(Ÿ*f®d2?X¹°ª¬;Xuqõ¦¶ 䆆ö |ùþ*žõù +gWÈPø1v;ÃnSÅÛj*ü¥¥¥¡ú®oMVՔ•U 7‡ -ŽÖÉUéB¹¿¬9O8–c7¨ÓÙ *|³*š#ç±møÞ|1©Mº¾ObÙ1öÔ&(b»qYyyøk{ñÔ µš¯5¥ŠÈtúŒ 9£¾áòŒ„žºØvl¦Çó°W©àwH’I—kcª©ÑcßïÈšÒ³IKµÎ™.âæ›syù`˜ºÃ4ì˜qææÌv獧ìjZ±AŸqwF§d‹Ýš±[íôZž¶Š™eúæ ûäòÝ;ëæΧ/\–†¯Qaø‚¶‹MíÖ{gzÑZ#‘çÞ1yýɍçúfwñ̞ÉëM®šôFmÊ,•@΁}5Vʄ}úòÏ£ª7t‡Œ´ü!ç ûÌ{kÚûÆτÏU†—/ç –ñìwsÞs|”§ø£ýi +ï«ÞÓ}düТ^m¿pÚO”kÊúÃ#&õzaª_w‘ñBËj›ÊêÕ«^E–ÄÎ9:BØ%Óa¢ Ï +DZ¹ÂÒgܚˆf@#jÆP“wgœ?ˆ²í;wf嘴1 ‹r˜’ u AšVæ Y™ƒY˜ùžKaSG‹N;w\}ýäÄ·oK‘›nIí¸Š7h[ñÃûž»uûsô©Í¾þºw®¼zü–]»jñÀÈå}? IÞI¾ü)¡W<ã¡ô>µð­Ìï¬ÒIí’ð¤ô¤–ZamuDi‰1k”æË^#s=UN‡Žh<`q—¦lV áôâ QBÌ&Üæâõx#Þ.oŸwÀ«ò:‚£”_3åñãæé½M½Ü-š?>În‹q–à1»1®þª¨g§E-&I%ÁèSšD³Hf~93u|ā‚-­UböÝÌ"Y”Yԍ'•…]'¤õÃû_¸-u×Ýݸú¹>Xâ =6H O}á|¿foìmh¯Œ–ÖÏÛ°aò·_qÍ°Þ÷Bê°ÞmÂÏå*­EUå°ØªÖDnŠÜy°|où‹åoh_×½QñžöýŠcúOÃfU+ÕZõŒâȌp[Éì°¦IÇ@– ç>D:b¢ßLÒP2›¨ÂÄWX\žn»¹âފÏIŠþç³(³D½6¬äfYõùv·Ã±Ôܘµ#òû¬·ÃÆ÷ªÿRóyXôäÒHa®8½\¯#ŠºÐkÓ;"B¹ka‘gÞ=å•Q]&ճͣ¦J—NxëŒêt+RÖº§k1+󔷷w¦Û‘òÑmlô¾trXÎj®Š€¸¢ˆ´Ödh°TÖ:‹¢5u¢^§6È­‘rk$R.zgªÝ­ÛZ´Š¦ÖÎVÁÝJ[eŸ?Ú*Ϩj}£¾¾N•+ç•Es¯ o‡½"ñƼ‚÷ §®Èk͒ ;7.1ca¥!)!í—K*É9Wý¬°»K!ξY®üîéžé‘éât~wãõE§;ætîÌ€ÙWÁÒxæFzœ_˜Œoì}7#=ν–ØøÍÆòеÒK„‹²¥úäåôÉg“9}õ…ÏFvØÚȄÕId!ÖÌ¢Ù,jeQ ‹ +C‘fRO&õ¦ï– ±sjt¼W&\`r°/*`ÊìàŒ¾æ 3ÃRwAs¬E³YÔÊ¢oü;–ʎéìðà®AŽ5—Ÿµ§.NjN¿b?yÞþŠ›o7'ƒ]àñbKå%u[f»ƒžøïºÖoZ±ãž{c¦Kºã¯4†o8çÛ üUU}¶xqïÖßµ]_—í5gIž™þYÂ÷Ýî"3& ™¦Móß±ð’ö‹Ü.ƒ1ÖÞÚ+©,.)µÙ‹N‹³}îE—Ì]7͈¦Êf{y9ÓÅ» ‹ûÿJJÉã#w”ŽÈn¿x~¾J{\é5g 8¨Ãa-+)¡úÃzAÏY ‰w–û ÓG¢@¾+‡XÙY¯ §½kºßzØzÔª“PÉ*­J«£l¥´Šd®Úêê¸ÙƒÕû[¨×\†|„aýæO¼Ëvø‰:é]î"J–lA!šO„le>IߧQö¾gÞxª¦LÔôÌW«9&Dó‚~pãôüâZOÅdrÕ /p;ÕέÒÕ,+¼0ÙߔãmvօŠóÝ?¹‚¾ÈÇXÛXæD駾+ކ]J#è +ŒÙ1­ŒHgt×ëÖ{>õ(KŒ³Œ[Iú–é“jꯆ¾öG&×\9ŸžÚ—Ît· + ²MΑ­r¶l‘Ír®l—§Éù²Iú–õæԁÜë*q¨Ô:/s»tÚã.¯>KSPàe×V&2@Ÿ¤‡©È¾ p†¼Ï +Zâ$yÌÑ2›-Ô;¥žéh½Ç-þL—Çbu–S;Ï^-ÌmƃÅ6¦Ó¯#™hŸ\3÷fN•Næ6½Ø½{Nÿ]!7¿ð8klع>³cL42_)\\¼´cÆBÊY>ñÃÆú +™þ(½kRùO†=ôÆÿ)²ðəAüøÅϧ‚ÊðßuŽú€æ%ítwfyy¸Ép‡q­ñ3LGÌOYÚ³ugÃÙp6œ gÃÙp6œ gÃÙp6œ gÃÙp6œ gÃÙp6œ gÃÙp6œ ÿoÿ÷J…Ì¿`j%"ÿçK2E‹fwwÍY¸L Ï;'°´µ£mF§5§‚üó(È<+ŽÚR)ĔÅìžA\D‘Ù¤›t‘9d!YÆþ9Œ8‡ÈRÒJ:H™A:ÁÕ’f%þ°ÿ=D"¤9~ù¦õý›< ú·”6Å7¬æ="Êz†š3‹GÉÑÔ™™Vq€¬åá~%—üA&ù_ -¤%õÉT Ûþ»ú˜l" ¤‰'äáºT’LçXØ@î%wWZÿ›‡½›rZÉpâÉ}ËMuÇ5Ú43~¼4ÞÈÒ_þpaÑä–/* ý%új§xñ¿í3¦t +endstream +endobj +215 0 obj +<< +/Filter [/FlateDecode] +/Length 24619 +/Length1 43724 +>> +stream +xœœ} `Õýð{ofïkvöœ½gÙì•ÍµI€„L7"A …ï Ô*r(Ô«**´©ÂaÚjÕ¢õ>ªööh­Q´Hµ’Ýï÷f7! í×ïÛɼã÷Þ̼ùÝ¿÷ÞÂ!Z‰Ô:éÜlR~€dêü‹æ.+Ö}!üÆüË. =n^`À‡iÖ]°láEÛùZ¸F»!Õ{ —\yA±¿PÐ%‹Ì=ÿÍ£ê züNÖ.€þIҀY†ztÑE—\Qì¿Å ÷Ÿ±déü¹Åú­p?aÞEs¯Xf§ÉBÿóºxîE JãÛ ‰ÙÒå—ëÓ<´ì§ –=½y}úÿ !ývö„Øۑò3**Í_mОï+È»põ”ÒYüMã.%‚'st>z ]„~Ž~°jü'´ÉÈ𷃞ŽÐèrô6:¯ð@Eôú¥Ñ´¨GV´åñµè!L«êћhÚ@˜ûw„QW0[ñ (w™‚îF.ô*Ü1YÐC}ñÎÀ2s´éBEák|€}©0ý +7wØ'Ñ˨‡Y”¿±°¶°±p?2£ãŒ¿ï÷…ÊÂEpÕy¨]Š®¬D¢Wpi$û «aLÓa +ÐSè N±ˆí@<:zÿ ݃ö gÑ«è=ô1Æ؂ËðJü&~K…úžË?WW˜WXŠF¡³Q+Z ­~ÃÍd3ƒy‚y·ïó‡ ¸÷tº]Ö£ h+zý}€¢'SÈyÌȋÑ 4°yŒi z ÂZ\ƒ‡bߌC.c™¾ç€'Yä ŽU°ÿs´púچžC¯¡×áž_N,à>ÏÂ×â›ðmøNüþ ~ÿ¨È{ Ã\Ïþý{þ‚¾p_a <׋|(„@™ztÐóô¼_§q~ƒ¤HšÁ¬±/Ÿ¯.Œ)¬(<_xEPú6¢‘ðÎÑ4õ•èF´ý®}ý Eÿ,1XyÀEGð9ø\|)Œâ ü%î#N _=YBºÉ[LŠy…Æ>Ù·3ïÈwç¿Ì +[ ]…ß^Vè[ Ïi +´£eh¹B±]ðœçÑô7ô FjTclC aŒ×ÂûߌnC›€?‡1~„>Aš ¸`°{`ÄA…n-0î‰0òi¸ _Ç"|!à%ފ»ñÓøþ-~ Äoàñ—ÃèËáRp¹Þá>²•t‘?Ãñ ùŽ‘˜4SÅT3Ùx›UÌ-ð>¿`>d>f ë`+ÙsÙì *Fu¾ênÕFÕsªUŸ©9õ̒Ž8¥AàǼL~Ëg– Í¨•0Ìgä Ҁ¯%ßã_?þ-<ÍÏ´2­¤… Cï.¿Ù5Õ¢Z$vÄi:è=Ƚ$ÃLc%ƈ.yCd¹™t GñÓè{28í2æ²™Ìa6²·³Ãñ»h<>šQ3´{u…2Ì6öOôŽ*-sRu1V±Ÿ¨óèÁFL˜?⸷'`k¹ E Îá^Èǁþ8ž†êÙÃÌ:2ž|°%èü[xÇ}h هt©yü)nÅ÷3•è:Ü Ø‚.$w¢0YFÂÀÏç¡à°$÷{ M”\€XÆD棷HPý5̓r|ðéEh-^ƒÒ¸@/“Ÿ£Z¼€yö¤ÐWFðÉ^¼‹¶ãïٗؗ wú-`³´‡ òèˆó@2EF®©G*’þo x²’oð5d ZŒïaþ†!ÍhZÀ,'£ñÝùoØf¦0¶´I‹zˆ©T~¶(þ ܸ!õ"öêZfÞdŽÚ +b~ŽÊœÿ]Ø Úm-ÈÒXô>vâÙx2[ ØBa*ÚJ¶±\؈Eôz$,¿ 7àh!„; <8|¶zKß½ìZö&öRö°M߃ּݎîC¿kò0Ø­8àñ,Àæ,Ð=‹ÁFT *”ƒ·ŽF€Vm­h*èÓВ ‹Q'hÞÐoÐv°P³áº Ѕ_êjtÈÿ*´tÀÝèQô:yœlbDr yž\F£÷ÑûÌ ŒŒ§¢·ØÕì +t.Š¢ÉØO®*áºu…7ái äí_R +|_ø{áÂc}¯Âý…±ß®þ®nAeh>Áz°Jnž"7 ol6tH}]®¦ºª²"[žI§’‰²¸‹FÂb(ðû¼Áír:ì6ÞÊYÌ&£A¯ÓjÔ*–!¥GEFw„º¤Ž.VŠŒ›¡õÈ\Ìèè +hôé}ºBJ·Ðé=eèyÁ=åbOy 'æB ¨!“Š„º^ õà“§Cù֑‘¶PW¯Rž¨”7(e”E.r/ê¡Q]£/[´fTÇH¸Ývƒ¾%Ò²@ŸI£íz PêrE–mÇ®áX)ר¡Û Қ`P]žÈÈQ]Bd$A5÷ü®ÖÉÓGôŠb[&݅[æGæu¡Èˆ.KJé‚Z”Çt©[º4ÊcB‹éÛ µ¡íékÖõph^GÊx~äü¹³¦w1sÛè3¬)xîÈ.×UGܧªps¾eúªÁ­^fÍ(÷â­®Y³*ÔµyòôÁ­"MÛÚàp-‰îX3½8áÜ<ÜÔ6½ ߏ Ñ7¡oU|¿‘QÒqa¨KY´æ gM:çJ±Ûã‘÷#ϨК)Ó#bW“7Ò6w¤o»­9çÊ‚Noɤ·sÖ"b·›-¥‚Ñ4¸°` M))ÝiiÂ9˜ÅtD‘qÀ]¡ù!Éô¼S=MÔ£5óë¡üÚ0\Õu>Pdq—®¥c 7”Âéõ]ª ­ùDz??2·QǸo-R>`5hï/w¥R]É$eM ÐÆ8\©ç2éËzÈâÈ2. µnç¶ ÍúE‘xmŒæA¥kåäéÅzÍóv#9›jë"´å@‹ã<Ú²²¿eàòŽpòNDƒG—Vø³pNÛ¨EC»°ó?4/(¶O872aòŒé¡Qk:J¸0å´Z±½~ ­Tê²µLg¼¤T"^Fi¦œ5ЙV¦»Øü©¦>¿G£®T 84º‹ë[LÛô¢ø_^ÔS8F¯R²S—•†Ù54uz}Øiõӆg\ÃÀ€Y‰L˜2cÍýim£A­Y3:½¦cÍܞÂÊy‘Y³iͲQýí)ì]ëí½® ^b +ÜJЈí|Ëäí2¾åÜÓ÷púÜ2ez7¸6-#Ú¶G¡múžB²%PZ Ñš€Ó»Ás¤MÞ=­TZY Ôç÷`¤À´ý0Œæ÷"ŒS`ðËPÚSû^Ä+Má ö{…ÿ0…»p,Սà‹Ä¡,X%Ä|T(€‡Oö‚ù8Àè>¯Zîl¨’í0G«VÒÜ`Ròn]uSs–9€–Á¹ ÎWádÑHW” +BÚ'…®WÚ73ûPœà| N +Ù ½Ù ½ibzfžbvwGƒðè;„h՗Íf*ÀI˜Ÿ3k!œ 2³KùœR¾ò$äJù­ÌÚîaAK³ê} iNïv÷˜IU{”B]ƒRØØÙ¸ Áf¹Fu?Œê~Õý0ª/!Åp׍ßðß¨À7"¬ÜJL”nU*Üßmq– PhÖ3mÌTð‚à—óiÌÔîªàþææ<¸õ6%ÝÌLt½’ÎQÒIJºBi]¡”—*å¥J¹I)7•Ê4ÍJƒJj¡)ss.øAf23^É[™Q(ù$¨Óülfœ’OdÆ(ùYwC>úñgF+õqP ùX¨Ó| 3º{d°¢yÔç@ÄÓ …„1Œ„1$QÈz87ÃyHÌtœ¯ÂÉ(=13Ž8š™f¸B†{ÈÐ"#†‘áh‚c83Z¡o#¤2Ó ¼côj€'5®àÎ @ð_áÔ0 †˜ª€S†³Î8UpŸ4\—†qO +QFüª ø]ëòP)’µàñ™YÛÊÍ:²¢‡¨Îep®$;»U¼¥Ùýhß,œ“àœç +87Á¹ N-j*¶ÈÒDš˜IdÃw'v44T)yum1÷ù‹¹ÑSeiþ)“4%Ð&8r†œ€Wí¯á$À:q´ÎWá<'ExdÄáãp}\é¥Vú} gN˜(÷?½J¹:gvÐ](´ eP+ƒkÊ o@AŠ•+h{+œëáÜ_j +ÌV˜3 ÷ +Ãh³6)% ¤A&ÜMt–À/ji®¼O‚É­€Í[o·R!Tˆ³ÐÒTê±Împª˜=p$àˆÃQGŽ@A&ÔÛÇz8nƒãV8ÖÁ±¨aߖڟ"srKs+rës›rÛrûsš}d.¤CÖ#§t&oÕzš9of!þ—’>¡¤?URYI]²g–éÈ,Ӌ³L÷Î2Ý5Ë4}–éìY¦Ñ³LÙY¦§÷YxzŸ…JŸ…¥>L±8¨æ0•>¢æðúþ‹>±í3› F¤þÃïAãñ;Û[®¢áFGdÔ8;ºÖ^¶Èݵr^(´µàwJ‘ˆÔ1oþ"šÏ]Ѓ߉,ÙÕÚ>þª¶w]E›ÇGFnGWš2}ûUò‚‘Ýãåñ£"sG¶í37ùÄi[Ýÿ¸íɹ?r³¹ôfIú¬1OüHó´y }ÖôYOÐg‘Ç(ÏR¸ØR‹F´«ä;ˆA ÜáÛF8¹eÃn&º¯óîe~ ÀÝ7Bèh‚“6eš3Í´ ¤Œ6™iTYjr_7Lôîŏ•š8[##{Ôâ‘ð·|y©ð_þ-_¾ü’ÙËg/§¹ò·ü’Ká¤dBËÑòK¼A³Q±oAÐÆT7¯…s¢£™åËÛ.A +M—_ŠèÝ.¡É©›”.…;ã僙-?óG9#…Š'Ünù¥zю—–Øf9†F¸ ¢ƒ,݅NÌÑ9!v¡ +ÜX¤A£·«5=ظ“`¤biAzµ + +»†xt +ۍ‘ tµ;u6w¼ab_ÃÙ܉†‰\8 } ô¬¬¨¶ŠÖ˜h²èdˆ9pRV¡ïQˆ=OÛW¸ŽµªF 1Ôy—«[m­¾MöMÞmömžm^Í4VŠk–ëҙڙãd[nÜîÊa•OˆDÇku¼ßg›9¾§p ;œS²h1ó+ÙnWnün—ɵ]MZ¦L÷ʍªÍxäf9±9ÚÅ3' ™cå™uM3ë‡×Ռ­™PÃëgZu3­Ãy9yw /‡s¼ì +KnùÒ*g&–ÏÌefÖÆfŽ‹ÎŸ^[3®¦u<_cóδopovßÌVûûf;cnƒ!ȸgÛ`ÛlclO“¯ÐYè+<¹SÜñöÔçí½í\/”Žÿòâpø}®?Ù>R<ÚP6ËõÑ} ôÇ)© ¨¬À혩®r:ìêH„Q«#q)—³õ—êl‘°”«©­®>U¨­­v9fP©x¹aª™ÿˀÇøµH\V« >"nŽph…îâïz<Á_‰%à3J/wÐÖü?ž±=KŽä¿uÙl®|:àf- þÓ©…c­’¾åXÎÍå«N•”«¾ õøg?ÿ/!sªÝ`Ÿ$·£'×k `RŸ&‘åñÙµ'ڏôAM½€‘¾qXŠã°~´Zt !5ûIß?’¢˜„öüIfÜӋZåx˜äˆÊe¶éy§Z­â\N›c¸M5Q§³m6Gw ¾?îÅ*äÆÂM”ÛÛ'öo ÔVoj°òC†`š(è¯áùºZ‡5qØy—‚Íp\"ioxŸ×ëñúw³øä·è ¸¶Dó4¾éÑEØJê²½ +;‰¸4D|[óïz%!Âàò¾÷ª"‚ÞHÛ½DÃÚÈ +°1و§ªˆÀÎßJÈî(ÊN¤7rˆ9Övò×dÅWÀ˜^)ü•Áè+pã}²wk ì{Á|Ñ@Ší™Ø«}¬_ï)ªœ­o\G“¯&Õ=›žðü£…iÌgª‹@¨/’‡êtN,è˜z4D7ÓÍÔýDw¾B·Z»Zw7¾W÷ޢۍvãðKºwðQü7Ý ü­ÎeÐaC~qcŽfêzp7 j¦ö™,ƒ™w­=xßö§5ß×{¼·„—Îöv<€˜Ú"]™Ã}³¬^« 'ìf« ŠþkzL°ªÇ\fÁb!þÞûS]ëÌâ'vðDÙ[ø1…ãÝm¢Yå²Âq/ü9átþ¹Ûg֙µf²·ð-â +_wûÍzE²ðµI¨|æ 9Ì_¤ øxTŽã*S8bùt£ŠW©LžFÔC^Þ]m4 ¿Ü‹Õ <Ò7Ñ˝ 7Q{¤0ë됢þh¹RžAÊ9É-¸§àì‚Jíóú½oÐ˪ãR™”’«6õFQkÔUjF +[£2 +Ù<2N©c2Ê°YG,¢Œ½$’1-£r‰â¬(îI~©ëQ}é‡ëÿÀ³’րMh²¬®&+Mœßî)|/ËPˆÛ}VH¼$‚—¹)B“¸Ýi‚$Œú1ÞДÑCâ¤%¿]éM>—]P°Ø]AzU°‰è9ëpMðxåtØmØÁ)²—$j€9Å ¸œð§©H\Š„‰Ãa‡ºËY]Åç˜O¯_pßøËý£,.(M¸¡<0’sNiI +eCÆܺ¹%å.2vÝfòÁkù¯¼fXN¼½qêò×0GËáÛ¦®¸ü•ÆˆÉ>°çò?5†…(Pi;Îܧì·`9¶wóZoOá[ÙbU#­Î+{[ùV/«³ì%[o”uœÑhážÕi …¨Âc•Šàgµ¥, ïµï%ï"+YøRé´FØ÷‘둹ȟ Ì_hµâ…ˆÃÜ3dò¡_â?9Do×nb~z{5‰¸¾F~H֍¹oŽ?wZ¥²µ+T¶Š%G¤èªˆVU¿¡ª#pˆú}KhŠCù/ì:‹ × +ì·ßÏrFtó6[1•j;“V˜Ø +˜xd)…CE·ð)¯!¥bí”þÌ]z£½1¬-ÒÔWÔÅ; ÿ#§½Ñš±–«Ì7Ço.»9ñhÙ£‰}ƝI‰×;sÆú$›ˆ$){ŠÕ€M ÔfîÔéôFOþn§òì}x&¡¸ö#kc¬ÙD–¢ r4ý ä"”Æ?ï—JîÄq*”PÕ×Ûø=ÂõâQ ¾`”w;c!É!ºed‹Xeì +ÚeÌG!)I×õ×ñ ?ԉ;Smub®h‚@ G놓\ °«Z£.YŸ’þR«5HÓGn¢öçä[}Ý9%øäÕ?.¨uFÎêZ¼gî•f^–oï‘éÒkŽ~±tѤ²%^×îÖè]\Åóß_3tîòKòþ’òêï eQ¿cI=cÐZÕUU9ëÐè¸èøXKýO‘z…xsý]ì¹»ëÉ=Z¿Ç¶×uÐvÐþŠëÛ_\ŸÛþå*d­ôº]ö0ÎÚôA!¡µReV& q#Uć„@¨LJ @ú¡ŸîÁ·î«Á'¸uߨŽ4Öö`“¬w42>ßÆ34»Hà#×?e†T«Ô¦Ï÷â•EB€ZÄTE9r6wp?‘¢ J¾#Pí=IÕ¥ÂòÔà•¦¯&Ùì¬*V‘±Måq4'ÉØÎò2B +]®‡dõíõ¨¾;‹.€4àžUWÕ]¤’ïRj +•úe¤H$ÆvÉUßô,ù´Üââ8ûÆ'n~îîö€GÆvÞqß5ÓnOsVƒÕ=íÊû6½<l­Ù5ïŸÌªàxÎmYþÔ² Î¥²„×̜½¡¡Æ®sqeçíÿٔ»Á6½Cå ¼:×@}7î ðáhœÄQ°uˆ +œ4pÄ@Z@p¾y«¡?·TVtb1‡«­ýþD¡¤ˆª­Öf˜¾7ñ›ÛFS·j´’æ_¤ééü4…3pqG½}íEö¥AM¶´voѱ¢ð±Â½n·O¥ó©À~»uxÕ~ Z×)ÎN¥Ú;±µ_UÐèç ΍„‹ê¤_Éããoi|ðíc;/¿ølYrsVÛ/ºï8ðèÊo ™ OU{{~A0ø?»^ü6«¼ÀßúÒ¯o{bçv’ ÕC >yÀ®´HUàÇecyØ­ R1 í-œ %esŽ¦ma'hÏcghÕ1@ðÀo¨”‡•B©ÜÁÕT,Yg±Zx £6š &¢N³I‡láüف$=ør±h™€)UFÆ¢%H[ 8fŠË(¡‰+lAƒkP<9ª×:ƒ£xKEӓ§XEá0;”WJ¼ #‡ܧS¬ƒ—œýȂ›_{ö×=SÛÒT±ùík¦Ô»VŸhü}~¿ =´tÙ¦Í æÎh ¶åzøîïn^ûÄÞ²xӂ°Eà]z{~û'âë»ï߶îÆߜ[Rùf!ϼRé@+·ëj¸Õ º’D­fȳ:£É´Ðìr€3atFÄp˜,4è­NÏrFÃ^DLÛéÒ ÎϹÏG&*ŽO“¢x@ï¸i¢Â± %ºÏ°Û8'‘ƒîWèÌõ}R]Â0ù'µN3ïV³K$E,6Ýüý‹«›ÓóÀÿ6àð UãV9£Ñ²IM +•?ÝUKT"iHÌnHLæ@U1 I•³:O;¨ÅµÌ¬ü˜ÿ.òäñrÕ~„+©4Ыz +ŸuǝὅÏPUáS9W©í»*Ÿ«|³’­5E‘d6Æ eº$xùP2I0±–h¢Q¯¢|+ë³À¸z±Ñi’öošÈ£²>Úhñä<iÓϐÇPÍ)åŽ÷A=\ú10¨ÂM½¥ðzÈ)ÇËÃÖa2ÍDm³eãì«VŒ:ˆÊ `RãRØ¥iÃå, *´ š!‰p"Àw¡Œ:;À£ƒ˜µ§(cvâ^…²BŒ¢"sº”Å+¤ÛP®&NͲ¼{`׺ZfóŽÙÓêØ¿ù§O×´ ‘î˜uÝ-3†xÜV£+^ý6®²çXü“_ýê‚aË«Eò‡å—œÿÛ ïë»mÕw_Özw¶) q½Ë`Ã՟$ß;xÇÎ[WïåÐY‰‰™y{Q¥¬³t; Ún¤æ÷a'ċ,vî2Áw*Hn˜È½Ee~ì´PÙöïçS 3¯µnØÙôì[?M\_H2H…M—­̯™ßã›ÿÆ3Çi\`ŒßQaÁ–ì‘u0>Ë?¸ß:Ùì”M†ó'v¾/ ui”¨ +“¢ ™Àh÷B±8GuÚðq@$ȔXý¤Ö:H&ÏÂÚüÇÁê© õå|E˜8Œ6ê_ÎCÍìv"Ä+7ʁíj¬Õé¢ۑN°ž–­PÖ"«v&¦ÃFú™Öf~éñÓ Ig+Ò⧻Õ{pÙ +ü ÷x4ézwŽ€²Ø­¨Ö#½½ð‡„ãî^ƒd•¶4¤-w+úR6\š#ĸ¤åæ1뜫>y‚Ñ…«ÁIÆà«`Ë·æ[mP0‚ßµ¯a3F…îuݚ(Œå[ÙëˆZ ‚ÇÏNâ1üYø,ßÄ3¼à+Mηƒ3ĝh@Yð‹”ÙÑRDUtO«±•'•˜Š¹“¦ƒÊä)ja陓ÎÍÒ0p'`õ' +Vo–ÃûÕ¯¿62§as0–gZ̆› €YŠUŠÝfA}n•hOVÕ€ØÖ«±â`Äöù/{j¢—¤’ýÉÉKÌ2ú“ÿ,a6¯V0‹»pW?f­±ûÙÛQ•ãÝrªÖ +JÚ;<]—Ï󜕝€Ù9Ç3'ݚù6iI¡d2]Ž Éè¹ò°ì4­7m2‘C&lJXM&Îê×[ùH‚6™%©:)I‰¤?’Lë¤VW+¦Å¯#Á¦€œÎ©¼Óiãýo û(hlW7™×‚8˜ðƒ>¯?ìõxÒÉdÀë±{½Þj  xՙh$¢|ã@ÊR,'åå:!“–<6É#Ï^<¢Çá²=)ye‹® Y±Åôöó²àJ¤wWɚ‘ø½x8²ì°ê›¬tƒƒ¾+FÖIÖ/­+ äKïȎZ„)ö 2iZ,ö)>õµ©óØ®,Ñ[¥RíU@¤Uׂ¿­ˆö¿jïÌBô?ðÿTU®Ö€a¥gqú‘9ÃUÇ¥IÄg40L„a®î{¯SYßÈÿ¦Íxù·Ê|¯ñ}Í +øêÒo¾ãÓàGxUþ•~WžùŒ2ÿ÷¿píW‘ù}Ðu³iÀCmÀC>GUøù™mÉ­©?èŸ7¼«W­O®I=Ú۔z2¦¾:º"¶@/%¸àŠñpièô°K1èhš·ë 6)KÚ3ÓG28Í'2(j2 LY\OgÊ;;;Ûá³Fi0*Ú&VÕÕ*^£¡Fm1h1ê¤ô%ÜÏ?rãU­Ìí[GëÏãĜI#ï¼<¿o™|Åð¶×æߘR$÷®«î›“½ö”µó(ÉImÄwaݤ›N:Ç^8D¾b8ÝYV8ĞÅ>êÑ!ùŠŒgQš„•ÓáœêZ`?ß¹¸|™}¹s™{§K_ç«­ï_;Ó53w¡kQî&ß½Y}u¥%ä cÄhÍNW]U(°@\Í";S|¬Î°– ÄRu KR:³¤í%É3Ô+Y*ƒ•ÙʦJ¶R²j&öRÿ©¯¢¿©‘±ä@•Ö«\C¨/&Mè2œ;¡+:yÆô=ÈWø¼t÷ÞÂçÈ_ø|—Óéò¹¥ù¡6Üމ@Òûç‡Jîz\qÉé ¤x=¥õ/j×ʙ\®†ó^ÑnX]D5õ’;çN•¥qæv.ÙÚjuðÎÔ9¯,ž9{ììÕU7}²ê568Œ’äoAÛ;¥¹-̜=gôô;žÎÿ}ö‡ÓêÊÎjxÇnýù´­×`º)=²wȞTQoÓ¯6ܯ¶­¶¯s¬®­o¯I¬O e8JøDºGwo|—HZ´.?Õ·Oy<~äwi ­çT eæίµ–[‚§ÓpiSŽ´$*YÀ±±„,Äâ)O8Ô&HÈìÃC°öT¤uJ¨óB $4øOS  5¡¤Þa¶˜,F‹Áª¥XL…ö!n?s…¡D‚ºÿLƒû‹Kyo? ,†óE|ßµ§á4Á¤ÿq V‚å¸ ,G–äúu¡ûB$Ë5q“8fœqttª¡Ý85ú¨áÑèÓê½FqE$c<"Ek£êZ4d2ùksYª°ª-U¸ª¶¼ª*[îÏéµÁ8—±á€Ë æ)S› ú9Fô6HµY©ö‚\Žµ‰13îßb9d·ÛH2Æê”—g#Ïð¸dѵD+4®Zz†YQ6ùpÊԑ¢Ï¨·wä”yRZÓV&9NSsíE=W¬Pw}åiÖ#lŽªp¥ Ÿ¡œe…ÏvEag¤ßþ€êl§ÈJ-K9)WiM¢ß'¡ÊR[Ô/`ªâª›íØ?gÕ+·MZýźƒë4t&ÅÍ[]Xýú՗ì›\‹ÑGgÝ0­H* qgÇÝù{rµ­ºWß·«Ö,­´[<gƒ‚Ëޒ·µ_vïë'Be¸HìÆ.›É©Šþ¤j)HU þläé|2»Ã¹?ËCƒ)UŠ¥:›R½÷¿!åQë+§M]DÈÏÏX>¬8ùÊL;ü²N!“jß­ }·Þ$ôµ|ÍuÌ +ÛUöÕd³Þ¶Æþ­S«#»ÁÁÜGÐ<®ù„ûØþ±SÍrp»¹Ýv¶J+…"9°BBÐ÷Ûíj,¼ÁÀ†‚„mêvQU*›¬MH6rM‡^ Ïó”Y.0´Z mÐІ•¬âìÁo—̸pTÇ9»b—vUöÒ½[YЭ?:…9'Q;œvH­* h]‹Zcc\Ì©A; Ÿ):‡TôRÉR(-êÌÒ¦#†Î±Óxé Ì2ێ<8ç©%԰ቿθº™ù§(Ò ŠÈíóÜ{xÚ|\«°ï×cƔn›LŽš'jx/`y9_nwgܵžæhu®º®vŒ8³y¡¸¤ùrñšæ5òšæ{åÍۚ÷5¬¶YPmõ¨êi5¬%œª]Ӝ›Zù\ÓïåÍZoØ[¹8¼¸òΚm™-µŸ†¿Ë|W«¯Pe?7§Nãf3òa_u:ä’ʄM(³!C*28“ÙP™ÉTTú“•¨Èëf¤ÂªêÓØÝO‘ÝZo•,RPª)¦öƟ‹Í5r-Û4"\‰xÃvQ #±2̆p…”ŒHÉDB¨ ‡C / 0nR_' ojÒj9IÖiQ¹j§(ºuU=xúS¡#*Ñ©j/~ …ÉU²Kn­ì¨\VÉ J¹²µ’9\y |âæº}x: +¡&\+[GŠ!*wˆÃǨ赌ߋ§œ +B”¼¡AàŽ{úÜPíôÐejªt=‚¢{{ÝMž^E-÷5( +×P†âþx@ªã›æ{,°'ðz ¿åÿ ê7M`£"y¶M4ÌB˜°Y,¼Ío *® ‡Â­aNHápLò³Šsc¨ª®­ªÊÕú³•R×V³Z­Šõ¼ŽâÍÜØ⺉;aw»v¿·¼¬(ñ©ÖI%â©TYÜ_ÞSX+ûü…|~;¦i ¡€?`H«_6bR0øü¦õñ>Ÿ·¾Ž0ÉKʳñZ)›5Œ¬M2j¥x}½?ð×Õâ2zãsâKãÛâû㪸OÔÄe>g‰¯¿??°ò‘ìðñLÖãW1Á˜õùXBX¹RvÚB kg“l¯ÚÙ¾´±6aÈïJ1ëD*ÄÊÞTëlñ¯½ªí©T§›;êQv>P(  úŠ2N³¦¾â&rºO«¡è–ÑiÛU×'×U×rÏ¥ÜÿÞµêüÿóÏ:»þSðé;qÿpŸE¿ˆbüo·bDȃùg¸Šáù#MÇähú'<ù“âSwg xAtyº ãLO /MÞ:ݝb>£RY\|=pq/•Z‚u>ÁG^ ؀Õ^/vzYƒUa2s‚7›­ ±±T‘™ÀéN¤ËÊRiLÏ*]4ՌFÃ2àòەº+²baŽh=,VûE1à÷G½ó8PÜ猽Ȗ’b±€‚aºj·×.äû (ë±A¯ÇZ¿/€!8“½¥åXž”ž“^š^Ÿ>”V§=å„ ð^ÚÝÆϱ-µ­·³±¶ ™¡?ê:éLWœ¥¢®ÆÑ¢³ÖPr֔]3ʄU¿°`-h|l·ú á¼MXÑütjÿÿÙ±û¡S®¨o1òox5>S•³dIß]E]}Pَ£èêɒT;}’1¬ëdãó÷Ÿ0ϟò Z~à"ˆÂMHÀ'åÂK–çÂuuÇ}ÇwÔ/8ÿÌý™Çù®ûoÜßx‡óð§Ó;ÀÿËrÂÆ< »Ëø0Ù¢Ú¢{ØøGõµÚÉ:խڕÆնՎ;ÉF•¶N]§­Ö5‡rÕ|µs¨[›$)c–‹ñ1gÖ=Œhž¶ìçºùn[·£Ë¹ß½WÐ>ay’{„ÿ•í!ÇÃÎmîÇí4Ûdg»{w—íçýî{í(Û(Ç(çx÷YÂ Ë î^›pµÔÚêCÜg[Æs£x­A­×zÕ^m·Š˜ÕÚ,&i\à¤ZczÆ£Sù!T6#ºÜÓ;<-W•6WÓ-AtÙX™2V6ªw*?:÷Nw¬·Oìrê}Ö&¾§pbä\OáÛ¼»ÉI7œšíÞ&§ÛéorÓDÆz‡E MŸÑ\ÕSxg nàiýw4וrÍÁQvÐëŠùqÙ N³#dâ‡ÛàžÂ§;lB“©”šsŽ&c)wÓ} &«m86Cb ÓҏïÛ¥|Œè7à#+‡€yM ¡›ué¼6Ï.ºåËÕóqîàê/VŸ÷Å3ۿǚGžù‚Œ~,ÿÑf܆Í؂§oÎÿuË+xtþ¥?Ë¿‹GQÞÚšd&h’Ê c²›õ°^Mm^>óæ¼£¼{Rú$ï)|!s—z~æ!qmR{‡ç® 9ӟýñh¬rÀ=M+±Xb¼%Ú%ѨB²DÌ°'›‘ÊOœZ(蟞¦³Ó4ºhGŠ„GeÀ}¢bH ·•¾éúïÃ5ºŸ”N@ÿ›i¶~V6–ÆJk3w9¿ǧO|0¦jBëЩùï°±ý¡ ßÎ_rºD¿¼zò ±zmʹW Ÿÿ Å;ƒ~ðžAuø—{XxN>;$OÙ]îá3sT^ZÉhRC+ÇWÎðL¯¼$tIúŠÜ­¹G’W¾*½|3tHz;ó¥d…°¶rTp´xEú¦àšôσ¿ +nM¿zI<š2ö¾E:dùQB ;E£`(™ÕáL:,Gµ¥x ƒÙrŠörŠñòr-„R2I#êà^rʐͲ Á‹¸ê˜IXêÁí»VøÖûÀ"à2™~êÜÞ~-|,̆©Gb±ÊÎrÇ8 õ㗜¾B×Þy¤ýH»òUKƒ²¿_ÑøÊÊ-ˆB0x½î¿%|=šÐŗfõºƒÆÐÞÂqÀüñ)cÎ Ñ]ªiïßs\šÔ£Û‘ÿ³Ó®qžæŸÇªXæ¼zê'x÷¦ûg¬¼U¦µe÷o]šÿæã‹wLÞreþ ÑçǟÎ8/\;cSnøý_+.¹ëÙܔÖ%õSî`Ø;؄‘è9ÙX}–wRu{õå˝«<«½ë†Ü;B?.4º™P–ØÒü؈·]G]߸4^ú’6w-ݺٖ’ÃJwt‰ïæõs«Î©Z}þøšÙ®® MŸÒÕ¿Y¿xpɈ…‡'2vìM?{–zfëA®}z›œ´èŒ9ºdöké¢Ѫrt•Â&8k!Ž"<¸~ÄHèÁKwsœ5·€¢â|Y_‡ïUkñ5ù&ùæø–4móòi}‹Q—šÎ¿/í"nRÔßË?XTø ÷/%œ* ï+³TJüø~þ1eWß}§ORåÿB¹_ž_­äé¡s¯÷®Àá}Ȫ'Xø¶;Èùè?^°µá˽GÔG}Ÿ¿#ߨ¿ñ~ü>¤3V½†àMލj5ï.ÆNÎAՂÃáü|qBČ28“@™Lò'­úâLuBg2éu~kqÖcŒT]ší¨Í‘ ·Äë%ÞJüàI„ÅÆK6Ă&¡9ô¯*ÁÐj'éæè–êVèÖëT:¡rçÙ®LlQ®m?5Å5àrþMø*_[)j¥¾4·XÖé"”½yµ¹3\§Ú§h»’®îjù.>‡‡Šõ‘\‹lœäœTÞ\?Ù8ÇÙ^>¹~®ñbçÅåsë,ßPÿëpß#öÔô´¼È¿(¾XóbË{èóš/›z[þ‰¾Â_qa7ܶ +ó-V¾%…#œXS]…Åššžçb]kª"Ïp•ã*֟“,’Þ&ñ’(…$Ï©Eª‘rÒ°J©J +õ+dxz­G;Œ$ɗ5¸Fjiiª¯oŠDÊËã-Ôaà›šUœ„±ÊhTùýF§Ó)ØjQeUMªIª9*•Ê3ªJŠtWü?<‰¶ë'ùçø—ú¿0r–”­Ž¢4 »èþ<*ÓÂÄ#n¾B ´£ +L€Ê°½d®Ö;8¡LCÝÑG'9:ÙÈÑÉF.Ìš8³É ‰ÑÞTòæÛJü¥¬éð…·vÀ5‘¼µ.Sr¸’§1\¬ÔázšwŸ~ üöRîS]øJ¶™]MV D»V•ƒ&SИC¶HtCc M8·Å^¼?äU?¹Õ ž&b´á3·¢¨À™s“gȽx}ÑKþš¦7çÉo¹Y©§K–ÕxMþ– ­LMÇl<˜MKG),D¦õõ ì]{6?¢X6;ՄÁŸ ÌR¶ã‡é³ùÀó‹€ç«ðýtâõ“® ý6ò9×î0ÖEtUBD¨ZY\¥žÁÏvÎñÏY­x~øÎð#aöŸâ·¢u‡(DØþ &Wr˜‹ë ¦EP1œªÈ®—÷ßɆªòòÊ*ª +õ»Ö¹’k-Øö’‡AAŸÍ“ɨ²OEâñhğŒ„Ø [#èª"¶J)•Rɐ”ôˆ<¯¬u‚k‘Z«pUÙ¿ \²rP’-¢„øIüzº)¤z°ÕšØ«|+s¼½·ä'ʕ•­††~?kÆúæ4ýõs¦ýwÓá?â\Ó¹2ð¯ð¯cà_ï@n«»´1«ý˜ ýç¥;Ü!ø~~}­}B“sñP\}ÎßT.?r€ož&å¬Ç´¢Fó}Ì]ì'ȊF˒Õ`þ¡*xe_ƒæÒôœ–G8ªãôúV=£ø[/6ýØr§‚‹árèL\p^§â&e'y 'û±p&T§ö•hKš^çܦj¦ësÿR£Ÿ;—hJ2ÀHJ[éûfúS¯ýâñÃï½eÒʕó¶‡tœKožë¦îeTpŸö³qO-<ûòŸ^´oþ•÷Ý»ôªÝî–Q Ñ»y«ÞâI>0¿ï-%êý••›4윳M›CçM2@ûiÀµ>T†£ÛM6J+—µsœÍ6ùœ´n²Ap:¾€†Á†dl7ôàù»$QÁ“˜/'BŒFgð‹ÀÂÉ{ÞíÁêü?w}xÇóƒvñ=øþí·¿OOö“¾7ÿÿæwÏåýáå3öáÊ܋›þò—Mp–v,LÉL¢c»D½ÁB'EOÈi(¼àø0öçøáàañï±Ï⚨#îš›?/Ô›¿Ðr¡°8¶Z0:é”èr›½Í6Õñ“Øñ•Ú#pO‚Kð1Ïn#w·û.Ï#ŽG o<‹`÷*;“Ÿ«8{n±Š a«öýÊ%F æaÚ¶ÍA¼!x H‚ž´]”(‘7K˜.”oIH=7ˆÎ mÊ^²öΉNj߰Ãq¤´ƒìÔæäâDèèfпýSêÁSÎÁ{Ž#a”«AÕUÌóÊve¿±z۝û~÷Îãóžãମ½x0ÿ=6ü-còQ)y6èqyǬüì½5¶ÕFü3/ÄF* ׶·ÒÿqðýÑîqÉEIB½'‹Û²Š#ÖÜÄy³.¯×í +ôÎp™®]b°£L|ƒ8„¢=€Œ»†þ® .´’þ_{Ò1q%‡¹¼nG*¹²ÿëŠÎ~è]ƒ²,ãø;Nåàßĕºœ%!ØaÖòZªbNÉÅ”,|Þ²Ç餁ž\DtԀ©äÔaT•«Ÿ•mƒX™%EsûG?}ýÊ+__þáÝJ}Ù{wÝýÞ{wßõûÉ÷QÝòë¯<|ù‡®z¿_ääÍ~¸™r2Qv>f“B¯É‹õÎ{¤ŠŒ çùää¶? +ïóï zÿ×ýqð_N“àKújH}`¼÷¬à,ïŒàRï’àuÞuÞ{}÷žRY.uîõ=Ç<Ç¿ä{) Ö>oõ„B`­~Ñ¥aE«Á8Å3l3ÂËý‡~>–]áÐ0ù àÌtPŽÉÆVÕJՍÆë+7»;S¿K½•Ò»´ñEŽ ëjÊQ%§šÝP¸,Ë œ- £X{Bô#ć„òŒ[­ÓêÃÀ‹²¾¥qÈóªÂšwɦ¬Cv,s¼æ`BîÒ=øåÒn¥‰Êéî¨â 7Щã>åcâ3¾ñh?cǒ9™òAÓA”ò&‚˜N<\ý¿Ý• …ÒG–§¾ +V;ýþ`+z´o)Mî¦éîßÜvùªj‡Û®µýbÑŗãՊ¢5õé÷aÉʏ+.¼ß©uò¼‹q-µ¢è?tmþ:ö:àÌ8ªÆ¹r”}™|(¾û\<û^<Uÿ$qQf~v~õU¦kÕë+«Hü¼zkbsõހ™h©6˜§(J¥Õ… +¤*Ý!ÎZšwTŠ!}JDwHÐÕXËü!Òë9Ýf]—Ž±èè¤Ù6Ý«:•Î“+WF6D6Gº"ìþÈ«‘Ñc6"Ô$çžÆ¬Š¶ »>€ԁl:BUjSÿw7CÎPƒ¸øÿ´wíqNT÷þœ™d’LžóÈ$“d“É$Ù$ûÌî&»Y&lʺ„õ¬êå!Ô^ñ +¶÷ +bUhkK?¾îeẀ\zñQ-VÑÖ>¹Hí§¢´j½ÅÝÜsf’Ýì"ÖÞ¿zïgóûäœy%›s~ÏóýýæðÎ_áÜî*3ò\?Û4ƒ>´WcNá.ikÂk…ú¡°}q¢cËfWçy“ƒˆ Õ¤hiÎ`)BdÒlSc¹è ïÐu_Ô»tÞ×4 ô&ßÖ¾ýÔùóO½½ö'÷Üóê«÷Üóâ孚ÄØwùøš+Âvê¥Uã>ßáÞ½ LÙôÚë7½þ:â….Ä 7!^ÈÂåjíßy‰0@7\@­¤6ÀMÄ6ø(ñ4ì%èǨÇM{Œ{MGL¿0÷™|fÆ£Ém'â ~ž—ç=^™IÖkOͼTMM}JNºh]ÞÛ¡}ž•]ºýjÍ+Ú¯ÙF¼ÉÔ7d2 râC2‘@Ý“‹6[$ñ¸"=ñˆjÂRáÔÑ‘ꃿïmtÍ`NîZæúK"_ £1ø_'‹N•pS°ðc\ébÜã+â¦Cº|~£‰ŠùbúL%q=‡¡õœ}€*œÛ+ÙB¼nýÌÑôJC6ê ëêv¬éb ;pæôsçß5ïJä|„>тß^9o\ýåy³‘]t~Ö¤‰÷uöÿyɹ·ÖJ·ô4Xñ§M¯¢Ù ‘ˏ,ØÕj•,6Šª8S¼V\!þ³hâì®Ù<²c)›e¶Ñ(ۄ€¸ÙìXòE¢nú÷e·Ñ€8„M 7Äa0%w'y±bÆê!_ÕÕ¯R.ÿé™.+(Ï2pG2ÜÈÕâ 6ܶNÆÿw¿Wsæ&ÿ ãTŒÌ»ïÌøüe’ +Ù2XæBÿÙF4Ï3Dß>D)ØóIœCÃÛ´^íd­ùë¹Ç9âpVñU±ºdU:‘iæcc“ùôb~qÄz#\3GTóÉwcï¦?Š}”>;Ÿ6‰I/Ž.Îlç·G¨h&º ³J±žö{@†BøÚ\ù–(ŠlÏмH($Gä@Ô6iü’Ju¤S©¦´\›Î0Ví‹õ´Ãa¥e㱐¡ƒ±¼[44–ì繚J||R29/–LVÆäšX4J™4ŸÉ¤#<ÇrˆðD—‰òÆ”•@À­ø©J¥¦I©­­©!¬ +˳ šÇN¤eIF¶Æ¢]™ýpˆ¡#ö¥é5iBJ§ÒW§É4æNJi?$—ZÖX—E²¤Ð–Ä”El>¸Xʂr0¥ sé2\FCÑñì:ȹˆ˜ñ´®5ÔéñH®p¬7˜Ãp†c½½õÞS«õ»‡`”ã(µZF­D͗EË/My-bæ .¨ä +'z}Ñ4¯a4˜4‡굒fh*—ېdCòæ./—.|Zž›®@WM/^õYoLLKƒ¹ƒ8:àÒìƒQªð`”ê‚ éseîҋ°§Zc;fkúà¯Ñ–€Ïâ£ÊÀ÷à7֗9O5˜´ìõæ ±nFuq8Ê ºÕô|÷Íîo»‘úµÍÆV²“fc‰õº73ŒìÈ4Pb\®N×!éÅry •7»¸¸¨ ¸¸ø#–%ã¹L¬¡ßêÆ9êÈ*é ªÔœ³Å™u´:Ç8sαNÕÙîœha+mͶ=þÝ5†8l†DW`¾i~`…iEÀØlj L4M t™Œ)sËX?c:ÚƌÛ&·¸øPPbátö ö{–5ÖŪ,Év8XÖéÝ±¦*ì’ ¹#(Ë¡ kNé›\MDSG}SSª^nîPñÁžãí°½#ßÞ®æåÚz*XYW›¨PÐTÕ¢* ƒª +“¾°ÅBšZš›c17mwHA eR>¯¬JñJ¼_¹¦’¨ü¼ ÔKù6Êm‡ÚŽ¶‘m⤪§¼eQ\C77Ø ¦™ÓJqY¶ü/òEº/&—¸†ÂRXS§#ÕjQ¯J‰¤W¤m£5–4ÄCÐH‰´'ƪôÚ|!JõqîÐ +t#…ëJ‹¢ z› +¿Dë—H}¿U²¾à2M¸˜ð/ðµi¹”¨Ç¿d7êõR„Ýœ[‹)i~ܐŠŽ0zÁ°áûeºz$“~xÍã懳7™Û9ûÏ!eñ·ç2ý­–ïÍ&3e&¨€M8¿¹B·îª4ëÎ?ˆÖáÑGß{ÆÏëÓk™–dßݍl˜æ¢ëuÁì>‹.0ðf;wÎ՝ٹÚ|x_ƒg~ë¦Ën]VnßçÊê9’Á»/íÿdȾ›³ªý_úÿ0b‚ ûîþÂqCÍ+ðÀKÔ,+Þ#¯ÀW¬o¿2þÆô¶•ºÁ´ˆ!zˆÃ"ó"z±ýF¦‡»Îcv‡IgØBZ-&[h¹Çb^ë­WíîÌÓº@ +\Ì¿>b­êeԊ3“UtÍêu”:A¥ŒT<ÙëE"¨d¹#åv¦¿{6šKõR‡¥8r³ø¹=.ÞÁ{öN"{²×d‚CU·¶ÄƒW=­×ò¸ap€sóV5f5&Ü0¸æd²øL¼•E'Q#ðŒ§Ç ÇãȾÂa•E4Œ53nÒÊÁàqð5âèe)BQçÉ œyþðÀǐ=ü<äºÞ߶í}ü†»~2qÊ"G;¸HZlyè\¡™y7á…ÖŸhàtrþ±M]=>ù¤ßìíimhXÆC0Ž`§‚9`фҎ–e_ã^ÿ÷ŽðNÛ¯Æÿž;•þpüçܹôgãY+G Æ6ËøçÜmþñw˛ÓœÖYÜÙEÙÅÊ­Ùە»²w)ñ»yú^eoˆ˜a®NF*Ô±¹´Ïët˜Ü¶VnLE uÍN‡¤ɈÊرa&ÜN÷ÁÌR‹óð»j ²9Š©«5ÜÄ E2èëh¸<¢$ÝaKTÉNuΒ$LŠÛM$UI‡­W£ÜôêQDX}¦˜ó¨añw[Ë ŒÅËÓÆ· ‘Û+ ¹ÀPL[|×á"Y$-ÈDUxÔd±töºÜh5°8žÀ#<Gîrº3ø¢g±âqS&Ž‘&ø¢2+¸b0“§Ê€™CEã•Ñb:ò6ÝóÁ« ٙkt¤îÜ5ᚫ~úÒK«Ín»Í=‘-KÝ6cæÀKë¦Û¸“¬®@3uCÐ'ˆ¹x¶µ:“Kœœ7rÛ%7<Ñ#ó_ð)4}Ýu¡TþÖ Óêë¥ôÂ܍«±‡òÒÌ +Ι¯¨Ñó~h÷ûüÄ£ô^úyú-úmü†ãNÇfÇãŽ#Öw¬”ÇŒ+”î¸\u› “Y†.Þâfœ.†å¢-ÙQ™ še ‹V~¡þ›Ê×Ԙ-Reø¸R`iàPÀˆ´Å½µØ)ÀUéµ ô¹R™œÚ¤/+]P{EFûü´Õê³„í·…€.&ɖ8œáGô+3ãӂ™†Z–Ü@vå²®#-¼ÝåµK^¶q§"|93wÿÏ.ß$Ùq…êð×Ö¯$êñA­n¾sÑ}œCÎq$‰m´a¯@$è3;-š¶Õ›m6‹YvêËNVÿ´â²S<Œ÷kqùÏ) Kr +N^ ++ N{¼J(tš-ŠËIñaÒ*Ixl¯Z’.F25AG&F†#s9½t`ë¢g\SþkâV¥¡Š…­4,èÈr¸b#g`B€¥xýÎëlÈÙð p#öâd '‹ë+Úry¼ìökcÓ2´[Z-¿sÇË«ÔËô¨ÁÂi¯o׆áÍä\õýöÙ+‰ 6÷Ì\üœ¾©GÝð(H>€Æ ¯R¶Ãí쎔hÉ*áÄz‡ä”•¯À,;†»Ž¸žYÄ/ŠìB=ɱjâR;U·Ø]öz;iŸ¦•|i†Õ•(úoC°,d†ë9ìÄuáæid õYÞ«ÇȦ †ÈBIæ@âxžãxŽ…€.Ãü.…&ÚBE¾.V­¡Ô3yfC2ûábÀA‹jWY˜b—°Û»o`Â]hÎÄ`XsáÐÖi Í©Wt+"ró¹/rvÿ•rm_°¯#šŠHÎa ¦‘Gˆ§ïxâëZˆD« u7LÇ`V· æpü¸‹´—JöOÒ}…RÜ$[(6¡‘L5êc !|RxÌÓGìöx̀p«…û„]ÂDžÁ¼xš8JfƒÙí5xÝ "iH¸ãž¬!ë¾Äp‰{–a?Û=[œ¸Þ`Xè¾Þs½x}b•á›î…ïz'¶þսͳ—8`ès?íyV|6ñŠð’çWÂ1Ïï„Sžj«àª‰j¡Ú³V\›Ø!Žð¿>„z>#Î Ÿyqáp B.xw8ŽÕ,B•¢j”<‹·¶E߈’K£k¢„+:gûlID£ñ„N…?¼J^“NKÈÒi!?±À]–C–ãø´X¶-Ê(یɧÍʊŠz±¢Â'ʒèÝL©¯0YmtH‰7 ’›ç‘:J IçÑ| HPòzÐ6òÖHJn]!‡ì+Ðl:ÃVð„1€Ë!$/7Ðq%ìS$N±SŠ-,Iv»Zâ…ÞDˆ+ÁFQMeD5QÕX5AԈ>Ô8™´¨¨W'`â|ùx·êºµ¡5Màë|¡º˜4ÑŸPíFéj7t¿À6òŠ‡ERÜõf[ÓÚnµ¾‹þŒÖ£oÐzôy­G_†{•½Õi\‚¦†ob#:ßÙgµëÂ[ãsœõE—ÓX!N i]E)ÔéýÐ4ø ’!|j°ÀiŠºÃ¥1”ZƒL£ä;ãu*a¨‹½xG ¨µÆ¸¶®Š~u(zGýi/ÁýIAý{»ý¹¶ `ÕjÄՌØ5ƒ@l}ÌÄèç Fc˃Ÿ„Rëª/ãµ;ÓM}…w£¾X©A[/(¢¬Oª֚g‚V6߄K­OF -xÚ¤2ÛÚÇÙ<ÄM{K€ÉCÜ´·ø]h 5íø©.7aºBjK;QÓȋþ6¶»±¡z¶Ø·÷÷ºx%=¬ÚÑF$‡š0n.šŠq¨ç|l»Xú"P[*BlƒwTòN_hà˜)îØ7p@S`Ÿ}N®Þ1ðd”Cç?Àúlôʘ…>Àg£ðŁûL‚½¸tÑ:ð’³ &ä˜^bÖÎ`þÈè\ë«6ÜnxqU#|ÀËzåj{ؓ¦Ó®zÎsÿ-[-Ün²¼.d¾É}S^Ç­“÷1¹ýòùç²±&ÛÈ2œnÓíöúAcÆ/×ap‹ ʲ_Ž`ÜöÎ=u)Í7ôÛru#gÑ!SFã0e§Â#•ãIy §^K‡—}\#FoïToŠÇë5ø¶\‘¹ÆF)"ó‘ˆÌ öÅՄYÀFt‚e 0¬›>~?¯ø|ˆ£ lúD•ª¥ººÊ‚ÓƒÄÒà‰àY왦§!0ºŒ’q©ñ„ñ¬‘2ŠMUû5)®—kï^æ:Ä_)ÈPfüqi¸ê°±(ÿÊâÜW5ˆJ»®‘W›Ì®œ9§'»ÀÒÓW.:½F¬™…‰nƒ>»[ÐðÛËà,8sY1+ÀÅ×õômmîiIxЄd3kw[4áÜI<£O!4¹Î¿XŠa}òc4›<àw*íÀáDhvÐÄÁ§À^ø ÐÀ€ýS½Vî@¦mÊLàêçrʂ,!Ù¼Ýî°Ûì„ :œð «W²ÚhØmPœtž^B“´Oº—Ø Mô®\S¿/¢CO >g²uèHÔéE½}•Àj‰+­G õ¿ØäUID /¾?²¿ö¢j膥*€¦pVç'ß鿛Èj°”~@,ïÿTwî¦ô]¡UK™B<¿o¼HÐS8iXváˆ5ˆ€ëÕK-ëI÷zgx½ßït’Vïz)SAÍÕ5ÁmÁ7‚Tð׶õ6ÑUv:»F3Ó)ö×`}=•§:©5Ô6ÊH‰ÑRï¯iÅ)õ•ƒVEC*ƁŠن¹ªê\®º*·âïÁïã-Ä>¹KõS¥K{üÄЖ!‚SŠ´¾FDHd ’äTr9ù²áwÆ ò&ÁÔkžo¹ÝrÒr’~Ç*Z—Xß´ùl«1Ùäø¡ó*WÜõæ9ö1î8¿Ê]'ôļëÄÕ¾§ü‹ü‹wUtUü,øxhShSØ!G]'?)ÿVþmÄ1EÑc±»+[+¿3qe²'ùfòÍêUÕ?«P×UIAD¯6ʍGšÖ¥ojV[~fÉο_ã¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥ÿ¿„—X+ù HÜAzShƒl™2õëWÌìšÖÙqɌI³gUN˜3=:ÑÕ.{Yý¼KìdÞל x¼îñ5V[*ÖԘ¨R2Õ­usí¹Ú¶Px»Ú-i*/‚ÿƒ/èÓZ¾?g§ +¨…¸Eû€ŸÅÙ¦€©àëà +0ti t€KÀ 0 ̳@%˜æ€é +&hq p .õ`¸8A`Ádtç} $Ax€¸ÁxP¬ÀRøÛ $@P@TƒVPæ;ȁZÐB ¶t  (ú­†è{ D³оdåòE=Ë¥i=·èg܌_ùN˜‡ïžg ÃÀâ {\¯‘þ: |Ÿè†µà$8 «Á~ø:8 >§Ðï~¼C¼ނ|fÁ|Ð6iÄ û·üÝÇ‚5àô‰íè^®Aw§,½ˆfƒ}à>t']ˆ¦ƒkÁµÄXð_0µeC°ݟíàvô‰ŸƒBcsÑ!ôkÜàFp?:‡Ï {© ñè›Á™¿cêÑfۗ¿ðÉgžÞµÿ*gîOf‹>hÄf\ƒû0#^0ýeƒá¼¹íZJcö?ëÄ + +endstream +endobj +216 0 obj +<< +/Filter [/FlateDecode] +/Length 18894 +/Length1 30940 +>> +stream +xœ¬¼|ÇÝ?<3»w{½÷¶×ï¤k’îNi‰&dŠ#@Ӌ ˜bŠ1r„ ‰m츂ãØ á£Ø;qÇNy’ØÉßå‰Üâ(8 vݽ¿Ù“(Ižç}ßÏç§ÙßNÙÝÙù}mfN#„Ô¨1hò¤¶T?OÃaÆÂë¬)æ7@Â÷/ܸÞ+‘?w-dþ€÷À’5K¯Ç³N݋l=B’7—®Ú¼¤ØÞ¾ ¡±§—-^°è7½ +B›ž‚ÂÊeP )W½¦ òÁeׯßTl“ îÃªÕ ó 2vý‚Mk´Ë™´_…Þ\¿x¨÷Ã!ºfõºõÅü¦;hýš¯éXu‹ÚïDH1 Ù½šˆxH.f-²!TøÒ§4å'.JV¢@~YῙ¸zßP*~Bè9´+Ñ6tjFè)ô´­ASÐT¾À¿Ec ­nB%H@ƒÈ‚ 1¸ +r{µð¨™]øŒ|Œz݊þø´½Ž¤èaœFAT~†F–"£äw¨݅ö~86ƒžF¿+ü¡GãÐ÷Ñïp=nc:% èZ´݌îÆV\Š«ñÍ( }؄^Fg‰NއT¨]ƒ¦¡™h):Æbx¦MFGð1£áI3ÑnœÅg ‡‘zF 4W’Xá$ò R”Au¨݉îGßC¿ÅI<‚)gO +¼Ótk°ûñ™Â£ˆ‡o+š=½=€¢Ÿ¢ŸbO#)f¾äùü§HƒVC·¡Ýè¿Ð_±_‹7‘óB¾±°¢Ð[8WWÁsšÐè÷6ô ¼Ý³è8:‹~cò;ìƓñƒø/ìzIÅà­ù_ä?(X +EZèët´ ݀¶£]À›ÇÑÑ»¨}Y,ÃzüCRFÞe4ìãkvP  £µ í@;á{®x {q§ñzü¢!Z²ŠÜB‘?3»˜£ÌÙO +£ Ï^…1ÿ q(ß0š +\Ý\Û ¼;Œ^D}(‡~Œþ„¾@`$WàÝø(îÃÿ &òù/ö¢äw’/ +."%ŒvÅQ|Ó0‚cÑxèË èaàÔèM™oÐ7؉kð-xîÂ{ð>ü~Eî"o‘÷˜˜ç™næÇ,f+Ø’Ý’¤S¸ùòZàíŒpï à¦Æp1`q`âQÇô:}ûúÆÅoÄux*ބoÆ·â½ø~‡Œ#+Èj²†ÁŒ› 0f'˳‡Ø_°ïJ¶HvçÃùöBQÜ( uÐï™ð‡–ÀS¶Àw7ŒÃt¸õ#@íg€æ/Ñ·ð4|Vb3öán†ïtàúL</ÀËð6ü$>„ßÅ!:b#~²—ÜOž$¿$Ÿ0k™û˜G˜^æWLž-H”’ +ø¶HÚá}Iþ&.Ýōâ®ãž•ýl°tðǃïåUys>’oËߑ?U˜YØX¸©ðDáÙ …#…³¢¤2€]7àË ßJ‚ä´ ‰h.ô%Z ˜ìBßA߅ï³ð½è:ˆûú%z½ߏѧÀÙÏÅwú]„w²á.¼Tá9ø:¼¯Á[Äïmø{ø!üîÆgðYüü+ü[ü;ü|¿ÂÿÀ_1’©"Md,™D¦’…d1YC¶“ï‘GÈ3ä%r’¼\þ ù-ùˆäp¢™Çt0saD63·2O0/1¿fþ‹ùó!ó5Œ <ò±6ÄÖ²KÙÛÙ$Q§E’’ýðý¡T)]!="í•þTú)'å¢Ü8n2÷ ×Ã@RŽ {AJ¯øâžÃ%d6ô’Á¯’cø>ü&éaˆ·ã- " 6oE“]L70›°äø4ž00†ò 覟© ÅiÀá4ɯX3~!r^úæ-ÀO ´Ù‰N¢PáwH¾[X‰ú°$jqá!…N܂ς -%kɟ؋Œú!óàæcý ~@úS4‡Äm#Ð~dA5ÀÏ÷Ðfì%I4 =ÄìNû•²«$ Ãñߘt<@v‘c…7B½7‹‹ûèýRÄãÏызŸ_‘]¸•â'ð$胋‘>~„‚ä1´˜Ù€YÒIþÎþ½CjÈ,&ŽÿƖ3` O·£vü9–¡Ãøò5ö¡}¸Þþ#ü9ù­GÇ2Èì%Ëðñ°…Äð(¦ åɇø:èMýEbÅ2Rr$\}L2Kð#èW’2`[™ãˆÅ¯à*r‘ñ’&ÜÊTPHú5£ÎÿWa4j"…½¬rð<ŒÎZôNá“`°¾íûö-bÅ÷2×Kfþ–ß&¹4 %’ϸh3 â-°EGP)>O0î<”ÔÂHYÙï|û-™‚Üä ü%ڄ÷‚táM¦æ8‚–âç ­lS#XoÈ!К­ÌÐ3ÇÑ9@û͠ۍd!ؙex*"`%XÑ< hø+»mïa2z¬é!8óHžÎ èç ÷f€,þï©Gjؙ¨ lémȏ0ršÐØ0¢¾®¶¦º*›IW”—¥’‰x¬´$ ‡‚¿ÏË{Ü.§Ãn³ZÌ&£A¯ÓjÔ*¥B.㤖!ścæ{»Ãó»Ùp`ܸÍ@Á‚+ +æw{¡hÌÕmº½óÅfÞ«[ +ÐrÉ¿´Š-…K-±Î[êqosÀÛýfSÀ›Ã³¦Ì„ó{šíÞîñ¼U<ÿŽx®†sŸ.ð6ۖ5y»ñ|os÷˜Ëºšç7ÁíŽ*££+qtT¡„S%œu[kŽbkOˆµ¹ö(A25tªÛhjhº™Pó‚Eݓ§Ìlnrú|í‰x7½0p]7 +ŒêÖÆÄ&h´ø˜néènN|Œw9}´Û{4~¶ëîœ]7?¦ZX´`ÎÌnfA;}†>Ïmê¶né·]ÎÂÍ £gÖÉt5ۖ{i¶«k‡·ûÀ”™WÖúè±½îגИù]càÑwÓA´¥ #´ûôUŠ/µ8ÐLKæ¯ðvË£˺VÌ~8ººÑÔ;‡C8Qø9š½]Óf|ݍÎ@û‚&×Qꚺ¹×.xíW×$âGuúâhÕh‡NTê+O_ªÏÄæô¬eê¥áÄ´Gñ€‚nïB/ôdf^¤šW£®…ÕÐ >í®ê^lXÞ-=¿KWKËéõݒ.àíúÛ¾ºdÁP‰4¤ûÑS +ŽKø‚úáóîX¬»´”â‚ Œ„>6ˆùl"¾1GþX£óáC“gÂeíµ)sŸruwN@×A¦»sÊÌbދ®sö !kï&óiÍÙáótZÓ9\séòù€ï1D£s·,|éO«³›—ÕvcËÿR½¸XßÒh™2k¦·¹kþÐضL»*W¬¯¾T7tÖm=“q’¡3âdÄZ@âœKif¦ª› ÁŸTDò¢'(Š%Ø;¦[7\ñØ®ðùþ?^”+|A¯É刺Ù]»:_wUþªî©ºè0&-Ófuu)®ªj§«kLÀ;¦k~ׂ\¡óº€Wè:>`wךæùÃÍNîvv¹»^b®´4êhïœrTÀ;ÛfÍ<¡Ïw紙=“ÑóGµ BÝÌ^P´b)¹TJs^šC-ÞCdb•ó„€P§Xˊb~a#±L6\†ÑÂ)–éÄ2ø$D÷¢A_¾]«¨½(ùf²â ÄZܕþØoh#ÿü¬z°ðtà«OGˆ}§P€HŠ†Fª˜Ó¨ ’é¤nH’ÂYæToss…KŠ´'ZRqB¬p„+:G™Sh?¤#Þ‚Ä‚Wx +ñsŠ7‚‡Æ'z,Nñª\ϨQC'•ÕœÞÒDÅû#L‡D˜sE‹WõF“_ŒÔB¼óÀ€Û¿ÂœA1±Ñ™ž`iÅ æ8skO-¯iez‘œ/¤ÉÖ@ú’z׋އtR‹ Ìs=ÿ½‹…ُWâ‡á®ßC÷É° â·³Û%à>ngȼS¤áÂYlí±/©ÈÎö.v,~wâu´àeæl¥*œ%GzÊÓBHR$½0N" GŠÔ*R—W¤=bk{úÀi§nH#}ŒÀøJàAë­ ¨8ÍÜF¿¨V†úx!4'íÉÁ{ÎY þÒJ¦M¥ŒYþ +s+ŒQ—xÔвT…ŽÖM™]¡¢ôš)~JǶVhè-Ƥ@yxl…!4z¦Ø¨§"M¯é)MhÓª†SpÃ(]¸ ˜C#Ò¶Pvv….ÎTHC¥i²±'œ„êU=å7ò#õx%<“/CA±Y3@„ÒÆ¡Ë=žÇùÓyÍ¢cáÍü \êá¿Içd¸‡ÿg0GõðŸ†srAÝÃ=|9ä%ÿÇò~þ¿Ëwñ¿ ç>ο~“3”c¡áKåbÃÃâM{ Ú?^>—0ü8_ñÞ]A±Ñí0˜‡#¼Ò†@?¿n³(p#?·x«Ž€Øƒé‹¹6èIi±ðš0½±‘[¾”>ď.“oÌåky(?Î×ûùª€ø¬d@¼¼Ô/=) â#å‡øéU§ñëˆÃ]bB’Ûέå–sK¸NહJ.Áù9g’d:™F¦’)d2™TÆʈ ÉL¹ÂBŒšJ“TG‰”¥GV<×$οˆ–”@бW·‘i!-m£º«b-9®0µ»:ÖÒ-Ÿ<{æQŒ÷´ã–î³ QËuÞî¯Ú9¬¿C…» -¨eÚ(4î&;Á€O›™ÃzŝNêÁƒÝ÷8)m¿óžövdÙØhk44èkÆ4ý‡Ãü¡cìòÇ»úcsw?ÐÒ6³û »½»‚žÜí-ÝcÛ¼sfž ÛÈÖæ¦äfJÚgžÀcȶ橴ij¿Ô u34Pß\l¶yh3@÷v±ÙÜb3®†f!Jh³ç/6ãñs´ÀŒ¶;zˆon:Êóbv :$¶9Ä®)¶ ‰m>¾¢D‡>Û|,щ³ŠM‚AhR¤MŽúƒÐàhÐ/VO¹\(Vo+Vo«o¸\.V,V„êØÿ¥ÏâQÿo-š—·Â-“g•¡QíàïŠÔ¢[Ó â@ß7¢Óy»˜w\~ČÊÀ(ÔØh‹éêqªCªê–B‰6¯óÙnqžd 9m®‚bõPUbdb$­8Ó* >‡ªl·Ôùà!Ï Ué X'ۗ+›»Kç 4µ#[óò&ø"ëà³aÆuëÖo ¸ ÜÖÒ=œí£á0„ó›Úc|6­ÿ_Þµt—ÂEô"Žk†0®©}ݺ˜x],¶¡x÷¦§ÿúY_,›¢ØºKå˜Þw½K Ðæ +ïõz\¢Õ틥máXúDá æÖ£†4m܎×ÑþÁõp·â=։÷]£1Á.„$. ÁäPã1‚¿–r9²D0" û5ƒû5Fv™Tò5ø£xB¯üûæ|U?XîB}ë`=j„sÝE8”—ùô>}ØÅ¢‹^æìEA‚¾E^ö,h”J¼…,ÆxŽ«ÝNpŽÑ—;{ý[ì]«®¥ËË0ç«"‹K¿)Á…;ï„ëš ŸaêEJä9½ünT Yß'·«®ÿ’^z¡,?\YUa1›¤8›©<««/-­«ë­£GH Ó +§ +2jÉèÁÁ¿mbžE *¨„0&Bè)ÁJ¦9$¸:vÿ¯GCO¸F÷}L}cýI2¶cÛ9èiÆ̨¥3IA²ç›6É 0žhKáSæï’eȀ‚ènᚬ¥Î;N:ï™ÄOôN³Îò.²,²Þแ_éݨ]gYo½…ßê½Ír§õï>Ëw­{Ÿ4?eyÂzÈsÄ{‚3÷XŽY_öœñÿ>åðRÁ¡PÛuª±Úòêé}æy=¿èÁ›²žß|úÑ'Xs÷œÌìüÌÿö˖FWa >„•«—׶«®…Qp¢Ÿ΁g¥d#Yϼ¬–€ÒY±UËÊ´ò®î•qX:R N ‡øI°BzìwàA€¡N‹$‹ê´ÚÁjf?‰/ £äN'’È8§˜(Dr¢ìåµX›c"‚R‡]P†­Ø¥8I¢ø0* Sb±ú˜î,Ž}ÕÑ_ÿe½ÈO݅šdl›î\Lo°ÖؐîˁØEü%Ò `ÝÙâ‘_Z‹±ÆÊ +­¿F8d3ဟ‹„˜kó¯¸Òsƒƒš©ŽR³Ïÿ©™0aŸ£J§H–}»a<áB!¢4x’71¡ñJ“1UçÂXAˆÌœ…±r£>Á·Wv—òQيòCª3²“ªŸË~nSœgþÄ~n9oe•*÷Ë0FvŸ› W f7cµ± 0ÑȤŒ•µ°X™#DPÉi%vÛǀ|•ê ±‚¨ÿy<'7!=…ÏÑÒÚ? ûªÆC7Xß8Øã€é`À_ràÏH7ˆuo•’ÑÓf +r-£dyÆɲ¨£½¼ uàŸ/‹ŒÃQY™¦8£0þŠÊª4yu°ƒ°Ï´v.¹gv }îÆ[»ù²[ÏåOàiSWX£!|ã›n_vûÝ­{Þ2³eÃwßË¿ßTC}&¤'`\’èÍÈT8+ŒÑ»;×'և·%ö$N<­xÞv$qŠœâú'lgš¹h&‹MLDBäZU #e,LÐôXâ`â•Ä—fŽ5™LÄt’Ù·¿Ð‹±Æ’´ïéT+Oã‘‚€‡Y$F]L+£Fì;.èqJõgð㨠)~JF ÚÂڛâ1TF +ý˜™ƒ¨bì¸p†²cíÀª•.ô7 jRýt¬Ö®Åk;b8{7CÃ%å,ô’¡ê+]aõtmÆ5»iÆ¢±k® ež\°ñÞ]Ï.[ño»nK‡ݶ1¡Y&$¹C+'.Ÿ´t·rýM÷¬šspt쉵۾Ý÷D2Éë/6Π´“cú‘d"R@ÈpÓ(ñV%Ö™**Ù*å:ÅÉéO™ß3 +¹R®Z¬Ø `§)ð–P3cµg¤@…z8Á*&BÆ 'c”RµŠ(¥H"ùXª„÷P*äòoTJ“J.S)er…R¥æ茹R«‘ŸÂ߃Ž¨È“}ŒL&AÖý‚BU V•¨™SäY¨&„ô"¹B‘ÃßWÊ’K$9&Ú'‡[Ëå'aôe÷©Ôj•RyŠ)Ar¸ŸRPJ5Q¥Nj•j?>?¿Jä/Ķ|€m)à…n°_ô.b[þ +1ñLGë€|Ä FUCL7€ôÐ,ÛG¢4ì%cÐ;’6ª.´ðŋݸvmðã4`F_f°ù(?øýàSËï[‘·”2©{OàïJ&^¼ãæüýxÕÝ̪|~ð.xÏ[ Ÿ²À¸ ùÑûd›ØèO´ÖxüÖ¿¹’I›G1£Ì+\[\·);í{ù{•÷Ûö<ÅQ?a9ä9Æôr}–Ó®sf‹Ìi5ۜLÛ®‡Ðˆ5[ÍÖË$ÍáGz½^ëqIÿT©Ý9ì”)y£œh弜ȩƐ¿…1v­‡´§!€-©!= š“ E[C2¨¯©Ñ×@I¤ÓH÷ŒÂڎp2:°YŠ¸"¤‘he ¨ª-ŒA„¼”ÍÊ¿²yUÓöÞüÏz¾ÿì+¸ùȲ<³w՘u?Z?5Ð(Y‰æ o$sžÏ¿xþ±7ñ^ìiŠ>‘뭕[ñ¤ÿ³±ÓJuç0ne"ŽŸ:ØÂÙކÉI®HYJ#ļ †“R ú@!aÙ~LP1ÄÄ0„e)Ä÷–HÁ´° ë'ÁŽÈñ²ã¼+ìJö4À Ffë1 Q19 ÀSCq\.tԃ,`†ºAý†@ 5''X™Ñeó™qûüR.€ï!OÊ&“‡ò¯Ü¹@(‘LôóJˆ=š h¨é4XQýàòZ­5N띭e_QþÄÎp›Íâaê$-’%üͶ|—ó6ÿc¶Gœ÷ûK+êÙ¹žñŸ’ôñ†éÔ`Jm›[°ìí#/ÈýO­„¢A0 µãÐjÃbpD´˜ÇÄ Èèý@…U02}«vð*ò*.P tˆxü_Á@ßÚJõ\e•´èo ]("¡ˆŠÊº¥wüvڈ¦Òàª#ûžÎ¿rt9¼gå؍¯®žl^Ké„w¿ã1ü|×y<ãüŸæ×çÿ»¹„´cχ×oÊÿ㦭€¦ð „Ø€Š£*üˆ°‘SH ñ²ÆPcÙ¤²Ù™é­é55w—íS<Ý_ö”âŒCe½lŸâtèL™qFüKüU‰DÜè0¹Ø‰Ü8žHxN“Ãá”gƒ©¤±4‰«’þ`:›Lù÷ú‰ßoÄÄ(óWÅŽê¨Ó¡“Ë#‰ +qÞ †ï$…"à‘K½*ͳ½:Plí«‰¿œø£3Ç4 ƒC°;3ݎ³Ž·Œõé³eìÈáuÇ«å«£Zq¯ÃæaMF9눍¦a¨néÒ7Ò«zÃVJ;{£61<yA_+­ýƒýÀ²X¬õ³ k?³SFïJNk­±J:tâ—X"úC¶+] NW_OÑÜÒ…xfÄ3={(Wø¤ºº‚œ6@a_0ˆú£ÕPŠ; Ÿ‚ªÌo®©ðûj"Äîtà*_…å +£éeJ„†ÑR4~`!ñ§) îßrfÞóg¶®_ö亩/æµêk\Q½-úw¾ªUz¤ûíŸÞ¼3Xÿþªþuß3Þ¤$š¸s↗ÉïÍ^œ[bӇˆZï +ïd²ËJC±ÁŸ“¾Kש¾­9ýÄÖ.†ê•®Â‡’'$+Qí‚AÝhåhÝéRåzÅFåMž»tè膡c*õ3†× DªÅ$‡[¹,x¯,ñ2æ1¾¤_d“#36çOÙ b6ª'²[Ž™jÐ:s*\ÂؖŒK0Õìwa×âèâmEé¢,ŒVéïç¡¿±~àϺ~Ñq€Qc‘$ÃãU”œª´” øƒTËÁc‹$O,²’à¸F÷ÞuhÁäs»ßéHݐ¿pꙺë/xÿ¯n­´Ù‚¥’•ùñ7ÔÏmŽ\·­ÿô^ûüæ[<½ûâwßÃO}‘2™Rˆ^…¸ðI'J ÷O WáS!­ä\ëÜÙÛéóHÕ&[ ètc§Ëå1™Á»2’êxµÌ”ŒšMº’“Ìv$-BTz[Q +t²ÜX³&…SÎ_»N2™™æc­ ›(ê“r“Õ”ü7Ô¯!oˆÃ}LCP§TPÖM‚­Æô¯xïˆ}£Y:hg@ö°^¶ý«kDzYƒÙ¤!ì¿@QRtùalƒU•E½…ã*|±üñÙëþ’ÿÓۃ?TOrFîà®ÌDܚ×g68jÃê[îýà·YÀà-ù¿>rç·¿6DTzwév&³ *R¾(¿Ñ©óHä#…<æíÏ?¢1ê/aÔµ0êUøyáÁ~ÌNî´ï³?mgv¸îŠ<àz0ñ¬óÙÄ)¶ÏÐçz)¡XêÚèº 1­I;ÞΤ'Ø sÝo478œX >ªV§C\\£™'ssî ÇíNfªª^I¹“Òq„,¸¥Î;¬Ö/n'ÇñPÌG:'2ƒ¡ªdœ$5Z­9N¬I·,X uÒç9!`hLq˜s=זּŒý’{lÆyoòÞµ¸‡+³?q>AŽr„ö öyôŽ²:$²:ˆƒ´Òd́k4/*¼ 5XTxµW)¼X‘ûÁ¢Â æŠ(¡€Rªð‚‚+páã S;k½p1ëOuÄú‡±0@õ]ý¿¢CŒu¾ÄW±¦xÊI@î¸dØáQ`çPH¦(ŒL@ô× ˆ)^ §@•Ol GÂòà#Ûwn‰‡vG ×Ýz»Ñ®oÚôêç¡Îo?U_㌜¡¿¸²­fóói!ÎáYö‚„ü´mMÞԏeìùƑ~‡IÓu(¿€ep•ÜÎT,̄c¡ü‰$Ÿ &mŠ¨Ÿ¢ÚQ)<®Ïì×êÊéàßn¯ÍH4f̓ágÃ/³}ú—ÂÖh~^ÔjŠ‹Ûê¶D–¥R ¢îÈ0^ÌZ“Û̆pÈt‡Vëq{Ln·'• ‘¤Z£1‡ˆÅ,s—E=nÀ +⎼ŽÏ.r/ +—……ðäðš°$ì(G¿ÖRDxÀ ª Z7ïN¹™N7vS$”ÉáÉeàû¯;zñ + aà.²ß=Ä~÷°pÿÝÿfôÖ¶ë×^b}ýÿÄztŸÿó;€óÛ΁ ,úsW1¼Èï«fD qZdôÃz6ÝÔ¾'ª²úØFoÕJÕ pØ5:CçݎôDëZVŽ¯‰î–°ƒŸL؜7ÔGFŒÎ/½>ŠÒIÐ%LùÂjGÈÊ?ßÕªSÐÅXp|Æo=ø¾cد­±ÐÐAЯõ’éևŒ½N¦Ó‹‰œq¹lF·ÛAaë:·Þf·{ä +“\®0è Á29UÈu¶ÓĈìÀ1‚óBピ|»|¯\"ï´ÕÈ==±,%/¥³r!ÉÐsÁÍvÊÏÊߖ ÿZ#ä€MNùÉËåV9/J¶ñ +Éù™Eù*˜å‚AÙ(L*8XÔp°jÅ;ËAèå‚Ç æz½FJEȇ –k="í‰Ô/2åZ{±Ri¦ " ˆùNA¸‘ Q“X{ÔTó&p‹HºŒŸzŠÍ¿Z‘«P$ݍÅBÿ .́¿#Ƃÿ©ü¥fš3nöþìqd[UD¥øD*ô¹×^ÙîImf*–dAc(„µ¦ Û/þ|-o÷/#Ä-ޗW¯`LߺFožå!¿,ëëãžéºÖ½óýÖý·"âzÝM–¸ïrw3a7NøuúT=šà‰(âé +§»\…]¸ĜŞSæ֛‚w˜-s—ÝaSNÄÁ¨× ¾¯½Fãã= À¥t +ËËВ‘³nFô§Ãq¸Ø Ð» !žê ŒE½‰¨ò²á%.§Éår&âñï1ñ¼Ç`4ºÂ¡Û풕#†DÜ.Ì8xGxÜ^Jâ©cÔ×ýßÑÏfDØæΈyO­˜ï1e¢ÅÑè3^ÇvÇp¶_&»Qôc+Šãu‚’tú /¨Ô~èüÐ )ôp'þ– +‡•·:ø +EýjÅcÝ ˆ’~ÑP‰§P!¢Ükk RƒoñH¿ÃðÙÁ&mÅÙ œˆ%²¡’ÿ€¬?¶_²@¢›­uـ÷n?=Pä"pl:ÀQñ™¥Ã¨£f PI§{•8À\Ò]´¨ +‡Ã‘*²kcÄ-«Œ¾*ï·gxªM>øšÂ91ʗÇ?¸øYtûßøÊeÊüH¥saÜÀ_ý…dⷧ٦ǩ¯Y}ñ©–XÄä…,ºö‡÷GÙIO¬ ‰ÓŸÁMÌßý6.D-ӏ +Jm€à|°3Z QS¥¡6<5ƚ—‘Íä)›ršq£í˜¹c¥AåVŠ.LI(ê.Q¹[á²8Ý. +&ê{bb2S &#FFC( X¨ ™K”J…‚"Gf2Ê-ÆÒ¨Áh¶èpʘc“I¨r YaoLkL¦&֔c½rôõK¥…6°Ð +&#U³g{K‘ºƒ"ìŽl£e’e»e¯åˆEb¹¥Tn´Z¬FK©hÇÎ &v (x ?öµ&ùþK…ªñj Èþâ£(ÇÇ°W®É ØÐmÆC±U¤¨…àKW/®6]Eþ·à'ÿèʌU©•ø˜ªÉ—²z}ùó#þê,Ÿ£ÈÏÐLv–˜ÜA¬Ž´ÏUãßa×U†@U€†2ûR¾ý>»ébïütXœïVÜñ[˜#õ &T\ùPò +ÄW:äG/öyý Ö­Ôhƒ“Œ½ÖUëo²sµø§‘k5m¦éæYÅæ®üFã×Íü¦=î¥÷u=ì>f>ã~Ùãä42#ѧãHËäV^éUY©„9Y•0vQFµ8@w³6Vðld° ,Ô±´ŽìY‚òãkÀ ]<ÇÓu|%2ç3/Ç>^8ûȼ›¾¯d冏¶¾›÷]ÜÝ¿ò¼îŸw ?<þÁöü~Öõ»ð󹝿€¨ë-„دé/…Pg»”XÈXßÎÐý¾GBOsÏxs}>…TK)âæ'³•øê|c$×F·†ž$‡|ÇÕ'}¯„”¿®Fï×êÜQ…* °üÈêr#½,T©ôX¬ V…Ì͇“H–æy="½LáXJ¢V‹.@C7[{K£¿VR_ÍJŒÇ l¡6½DQQ‰ˆí[¯ðÑDÍR´Ï¢x€}ÚùXZ xh´¬ÏPcvÔ.{jñ¦sEGÎFÔ\žOû¸ç4 Tœ¦^T†1´¶ûÄùtàRä¸+†,pDœWžMˆå—oߑ¿øàÜï® +W.Q ~¤\ÑVöA´fÁëk›¯ï]|ó-M $ûn[úÃÍþüž;J½¥ÒPhüÓ »;HJ_pÏ:¶`ñF=5Ð>dgªëðtáÎ;ã·¦È\õ\Í\í +õjÍjíjÝ6õvÍvíV]g¢3ù¨ú1Í£Z]•ª3‰i‰¥¾E‰›e[57&wÉî*½+ñˆêaÍú}éçÐ ª#š#Úú§“ϧNàWT§5gt½Éã© I%9E9YÕ¦ž˜–’J!bž §™ »#)Õ&ÔI–‹ºsŒGPD™ç}>3CNá$B¨ +õ\:“Ar]Ì 8ì-++#eд/°ÓïÝéÏáQ}¼ïñõ%½vg†RÁédR¾F_§ñ9FÄ„dÖð3²׉s}ûÑ ßÔ-„†H°fÑI\‰êqåÑâäð‡®2 \ˆ‰óɱKù:åDíäÀŸu”À u'¨âºÓe·µVczHΊ¡Óð"‰Åj)N{ ûâ~Ú -¥P×ÛÏiÖø¹#÷ܾ“Oýl¡+ùëgª+ø©µR Äá®ð2?{àöe·µáØÌ붹~ٍGÇÿ_¶ëð˛ªÛ~±¨|JûžŸ(¥~+a<åù†úÐ懷L³=ÿá³—þ`…%¦ ü,Ùí µ¸íâ ïõ‚ NL„ëád_à˜ªO}ʶI¦òëÔwXYR–ª1ÔEX¹+!XJÜØéu¹(QáF“ÝíÊåžÒ„©´4áõû“É`09ŒÑ, +ɵ:}0 1”ÒÑD©Içßi@Î ”]F{ƒAœ÷ÖהÃd£¿ÿ4s ’ƒ—_íYª=z=ьHc ‘ +†òڌ·—nJËK­+Ü[‘c®¾l¸¾*NeÇ:D?ç*7gà_¬Ö°Wó?«!wSo²Éõ=˜ ~/«±#Êü5\¸CœHÆ>NCÀ}Òµ dHšÁQ ÌhHqA{XʱŠŒPÎlɺw‡8Õ±>ºzN`SbD‡QN]Áß7ö–óGöRÆßåªY'™"î ‹òÞΨPµùٖŸlď?’ò¥$àv¶¬ÊË¿üì±OöՍŽ¯Âo.J…J¤€ò²Â§Ì˜](Œ²øÁ&÷Ê|Y|¾£tþžó¾Òï%§Ç”eV•©ñ)ËS夲t‚—¨üö¬Jãf4´®N­“¬ó¬Ìˆ2¬ «ƒtÂòNøÓ0ƒ Ë"ÐСpجR["©ŠpÈ–›ãiw8ÇìŒ(ôûE,˛Ã&³9œÊþÐ –4•c’‚ÚáÐ)͕ѰY§îR½ŒG#–0È V˜y)ü‚™FTfÊxM ”Af¹ÌÌ|‡N[:{Ú²æ—É>gnE¸Ïö&3·åA¸çîlËîwŸwwE¥Ùj®TT¼Z4ÅɚØP”~¶wr”Fçg{Áq©m(X¤Ú¡r舻]‘µ^ŠÃÚ[?»£¡Ô…ÝàW—¢0Ý@lh1[#¢:£ëéڋ¸A—í°î´^Ô·k P97ŠNóЮœÚ)³fžAÙ¯QR´ð)Š>­¦s×EיáŠ.3u­CËUUÃ( Ut¡ËZÅù9éð +êüàU £©ÔæÈHó½ ±˜Å|û “&Ž_qæ¾uKFL1_Æ-Ùß¿¾óÐ(f×à¬Ùj¹N%×¹gۖ]+)ŸÜr¨©|óŠýxÁŠi„]õÓó=;š&=ñ›§O¤T%Şd²¢ –ºÙN,S`N>]+9åbÃt ]ž ¥ø¤½\â Í†¬Íš?E-eÖV›ûXƒPA©WkLjµÆôÔø",§îw•Ju(ªQëèkAË¿÷roq„ç0wí4€ÈŠƒH *-˨©©ˆfE }¼Z ·àñgÕo«¿P3ê®ë ©­ê"Gø£C€Ò(±þAóKsµàs‰ü•ù 娡¦¸1cµù✵”•ÀRfhúf,ÚPüY†š†¡UGŽLzmþÞkn¸;—ÿӎ÷㲀Κ0ÇJMœùòîÙ =aɞÁÖEîÝöDþ=kYëf³CmàÂß|]u+®xtβ}t/R=Œý*û(V c¡ˆÒCbÈX$m@ ¸VÒiˆÞMvûvE‘§‚}|oPÇ#q°v‰#ÂG¥w†ñ–HWäc‘ˆŽ\^ÔÈ=‘€–éÍj¦!ÆøïY¬²ASm/^4BeG œ¸²t$W)°B™Ê‡søïB8š,KµL隲°³¶2`bŒTö”bxcØd4†ÓA/W“+¼Ûã©©¡š[i³i”ÆúhبC9†é 1*)2•ÐϊÇ3Ê.õ³*¡ç£π>ZP0ý©}Ȩ3cQO‚¯ hœ€'tÒ)@¨ê,Š+%‚´úy'vÚëVc½¢âÙ«¥TïÚþÁ¯¨¥‡ õ*åÛ8p¥xR¨ˆ ßTJ‡„ #Ê©LÔ¢6§Ë ƒc7â/mì(î©úßUlqŸÕPSqFâ%ˆ–Î¥—« þÉþq÷ þ¸'òݛ¦¶L\ûÊ£[—V^¾NÉ© $µfjnɟ•\â¹çÛEó= +ƒÚ6ß¼èæ²xÍü›?˜Q·cý>¿æÜý[·f˗|„7WøÚ·Õ-vž[½W¿0£®mâÂ%}IÕCÍ¥™w ®ÊïϏaÞY—œ@ tgV¢‘¡chœk” +֑ÖQ5ˆ54 ђL€–;ìˆ=àÐ "ß,X Ù it™fêY¨³C^§ÊDzÍM8 À}9¼RЃHšÞ7"˜@º}Π\+®¿Ò%XÝ`¬ž^êM§óù#ž!£G± ˓ёQà{ñ$¸¬xýw5Ò»Ò»ñMѯ«¬… &Gò=ÖruŽ0‚®Ì(€À¾ÐÄ[ù&EÅï‡äïBÇàÀàÀÀåå*±Ð]ÿ°×ƒ©Ÿ Ýqîœæ܉¾ý’œ ¹`,Œt„POÓ '¬¿ÞÓH„zS£ßŸ˜Õ裇fÁ8ìlµ‹+\€Ú":c‰|-zA•âTv ªx2¼s­¸ávH<é´Yh¸÷†ñ–ož3§¾”O‡œ!³Ž“có&ø4#^|QÓ6ª*^W9áÉqç$ƒ|Ä!WÛ+Fgã˜µ£ò-ù÷úÈ =êMù-£†“K¸Ê•‹K?'O²Žlß4ª½½5( Úu)™†SD³këþÐx#?†t¦Ð4+„š{G?a8hõz:皃6­AoGR¬,\VÙàSð>v\¹ée¦¹PxÉ,S.ÈKTµU%#k]§Á=ՋJ@זfK(0µáhFW‚ß.Á%'Z:QÜ)¸–êØõm?Ó ‚ K9*¦"¥÷Âp$·ÆZ3Ì}‹ûZüjK£–Šé0ÕêtT\ñ8:$š¢¶Òˆy(<¦|FŠ$<Äm+7EÓ@ K‡Y/.d±1÷³Æ5k_[‘5Çÿð‰Lzóg÷Üü³™51ç-É)·ßpë?ßj™Ÿhm·ö¾¹£³ ›¢yߔ¶úÏìýi˪:¦eYeꎥK•Þ¸NoòéáL¶yêÎÖºEÙX‡Ç86‹Îª4ï¹vÏïc“çüqkëuµKÜZ_=*Ö° 52Æ¢¬´ðaЕx’p½a7£äÉf¹t¹|¥gUd³|³gkxkDֆV†I[–zY#$ŒIi,GFSesrV4[Vي :'©T¼Ókr:½(Ž*ã|"iJ$’r–KÄ6¥³*êu&:S—¬l¯Š ys8Ø£ +9©y¦§òW q–Ä‘¡´ÇZ#WV,¯@¤¥‘ +†ÚìùNØ«œÖ„ÕY¥¨¸ëªunúií–Ó-¤—ÖèÖ20¸’¢Ák è’_§ÒSõytÖ. 0ô˜V¾†QåðØf¾6‡/•¬2xgÖC™V[—ñ 1Ï#.)7=ï-æŒFK¦Ì³×C<öRÕSª¸é®«¢à¢”j¡=‚ôfµH‡bÜv:÷ù±nˆÛ"¯¯p¬ÐWºaæÍAS©· +*S£Zd_¸GOû´5VA;¼ö-ÎU_RÍÆ+øyióÿ0C³ø'¥µu%%uµU¯›Œj­¹¦6Ð4§©¡$c¿ÍË;-ÍKmiI]]Iim~Ýà豝I—h³.›-…fà³7¸,.e„΁N-Étãa‚aâ1/8²ÓÐ4×yþŸVVáU–)åd%«t7›gE]eîVñ?ç¸Þ`6 f­Òà‰š ºË W)NâSpË  bBdÀg oˆ¢IAᑬâ¦‰C2D5ªhø 0Ε‰Ó`ò +{£®ðŠ“c!K±Ô0C©JiøftÎb½Ö>t•Æ +¥êbë>[A°\½6܎ú/ü¹ã_™B9üぎâÞO,.n+•ô9 +zÀÀ­£ápø?°³†,È´5´ϼÉuÙpڋµ¾pԚ'vV»IkҗÌàïʆ3þàæà:½çBÀ‰@áSÉ ` ÛH³p‡äº:Ûå³UóÔךæTwÔvÔÍ­Ÿ>u™q¹eE|³j³eK|Sý.fw|wý®Ñ1h©|lô³øú‰ªç«Ô©=R÷býÁ¦'›ûª×ZY¹¬jE3µ7MÊìªÜÙô½ffqÍ–Ê µ[›6Ž{²FÅ¡šÈØÔôÕÓ$>[¾%‡]´èÔ²¶V¤®åðø‘jE-F-™r½~d9ǵ½Ž8“ÝΗ”™JJʵµ|]ƒ©®®Cmãøñ-¦ñã[ÂÊñãÆÕÕÕ*J¦x7ÔµŒ×ù»|T'ÛM¡²ˆ=T"h²óKÞ/!%9’9¾º©ÅµÔÑ2× làteV×áºÉœ…^¨;‰Ï¢q„9ÖòÂÔ7Æ•·HY‘ð"酋Ĭ½˜-‹YÁšÊdV??žŒ·O+±ÖYÇ[K¦]ÖçWhÐè Ò/ tèÀÞt¬…ò+ôû¥ Š._Òñ’á%¿Ëʾâ.ø£žèP¤Wª‡ñSě^ ¾ò«j&­¤o ­ÑŠ¾A [$¨XØV$Ö!ƒà÷¯Ä:uøÑß+ÎPu…™°þ›¨ºÒ \²àT2㥟=àÓ·];bÞ¬lmÅ(ëØ'ï2)Yg¸!(—*öš +Ÿ}û¬p U2›'ŒR¥-MumšÔüà!—Eç Õ¿œ±Ï½ÿ„‹òê:9³+?bÿ䛫½BEù¤<.ßÚÔ8ªvd~ëvFÁããÌÑ»+ÊeßÅ#W«Œ»FÛþу&×ùœ[¤€6TåCvN3Ê-•œx/€äTâ½EK™²”£C¦R–² 'q¦Ø)ÜTùTÏïf¼5±ËóLä©èIr2¬œƒçDÏ`f–|–g–WtLVxŠn‰tFé”ìª0ÈÍÕnILôJE¯‚‡8F‰ý .‹¸+ܓªŒññ„)OÄcîI"þ\ÊÏ9â“}=Ù7ԍÅE€Ç‹•"© µoñ!g%^ô]⢎—æ|Ç©³ÿœ•Xë@ÿ…Ø¿û+ÿÁ[ðވ‡ «»Êgù_\m®W˜ÿàü›5“½“á,àìܝ§~4§b¤{‹Y'W鳍|G[m2÷¯·8Œ®È„í)¾âãހCå KN5ØÚ=*[¿(?{¼NcT—Î0ÞYI„Ë6à{[JMv[â­'¦/~šÜ¸Öjñ±Ò ø&tN°0£Fvô‚0RFäŒTÁ;‰Ã7™[ÃàÎrî$SIì˜3ÈÑ-C/Udt¡DÜ>dpAÆéΜw`§=í°:è +YíÑ—Âv:â[>µ¥tƒEÔÏi¯E¢ …k7¤ÊųÿðƒCqîlh–»È+®òòÏjŠ+Ûº“§²ò²+GW·˜¡ùnüZóõ‡ÚÛoÉ?ü—ŠÖ²ñk¦Už/QtŒ Zy¯;sCÃò̪¥SGŽ/_õ«rf×ǝKîYû‡|Å•ÏO´Zx}(ÄVogVµ™œ.2hœP{㾟,œ<ýëg¨¯W +ƒ4¸]‚þ)Œ$ #}¦àéÌ\ù\ÅԒƒÌaíAÛÓùŽ}Ž„åìC,ñðæþæ][šÊ|õ•{¾#,{¯Jâ¦ïÝ2½!ê¯ÿõŠì‚»$L$žc¸½y°ô’€_ ÞDPOIΓo5Ìtgú +3Aw-š­a´^·—l Òh1+á8ävyœØár{l;‹e ³ìv–eîC–•`ºy€-»…Ú-:2^Ëð )0˜YåEG8m—æ$ƈçTe°•5™³–·-Ä"F6<Ý[Ã_وÁ¤ÖB# (-T+‰AÄ D‰t÷áð&çáÝ2ôw=õýƒ¢g)þ|—GEKêë±î¢ßXüµfè¯ÿ“m P%CL×<¦ô°K§´—ØÚ|s¦V×Ä«½Ï>¨¸áÞYì­ù/{æ¹ô†€i©ý®ªpU¬r5ñÜtZ5;x­Ç +wÈjíµÄ-[>­~…e³y‹å°ù5ôY>=9­n…œi1OC³ÌL%ª7_´¤†’ãšpctRt^ôKóW–/k8S]}½Q®Gªkj-VIÚ\o Gœ#’éô¯ãê‘1 o¬7õ6ÒiÞR½Q§è’ÏghHà¬Á6Ô(Øì£`ÎòÆIÆyƽÆýF‰¢A•9…$N†¼û ΢·ä±íâJ¯É\¤ñŒH{ š)s +ÎNÆi!wZVx¨â¦W/ퟸä6Ñ ÞIE!Þ$Ò£–bLØJ#…±% ºrgàœ­o¼<\œ4S†RÃQÔQk;†÷†ÚÌ6ey(¨ƒTÉéÒÄ/f.Ïèóx~µw%å"•UW;a ¤ªŠ9÷bD­Ô—´y&µU¥#qµ®åàG×%…øµ^½Â\:o™&T†Rѹ»Ù·â躑fíàá;=¿Êº­.ø«'|ÿì×ByË#8»Ú©Ò{æ[ÖWÅR¡ÊÝù—ï­£þø£w&R$ÅI]⾋o…‘/atÙ¨ ‚¤É¶“™Ìqö[âªs'LµËä +¬Rk8Çaoôœs¼WÉR†Fc»ó’6b£>Um=¥YQÃ9ÃÙ󶂍xm‚­ÓöÛ[6‰Í廼h¼¸ª®2eÓÂóÂgÂlø4 BŒ¼ +Ɍ·xÑ@A< +¶n>ÙÛéýŽ÷¨Ro™Wð2ÞqõF*Þ'EH €€÷ëÄ}QâúÍ ýýW}cý…ñ×zXÜ Uü-hOcHÜ÷d-î٤̹*˜¢Q¡¡”§>;ªkÌëHO7·ðæZ…qÙ×k"ÉdXɖÚ|]ûýoù‰ÿ 5éo>‰Ç"ÂÇmQê>¸íý B]K¦ApgÆzՂz¯úˆšU;ÆUØÇæ°éè{âÑ}ÜAýq بtÅÍgâî³âZhÒñ·ÞÃâ¥{ƒ“éê/í"¡?÷‰uÄ0ª/;CÖßh¹RFÂt9åò¯ú-ŝ×à*'ߖ–Û %3‹Â6w,­uÍà<Ú| 3¦þ?í{h[UÇ÷•G›÷ëöÞ¤MÒ¤y˜Øä¤YnÒõ‘¶kÒڤݖ¶´u«³6…é*ÂD™l(™ŠÚAÙ@Fýà öGjÌtVEÑ|±¦  ZQaËõœ$•MĹõÞßsî9÷žÜ›sîsîãœcõv—ôõÎJ´×¾séÞîLÈÛõxü¢Agz8>?È·0ǓIÿKOÅÇM íހAК\Éç+g n¾=oyd$ڤ•ŸF͎6oÔÛ×Ó?v¤h?iIì¯ 0Çpɦ)kvêD¡¦ÎmZAÂB·ð*}¾(^­&ÊL™Ý6D}Î9éœw2,ŠÇb\s¤ED¢™%ƒæFB.§Æ‹8•ºÚ×_óÛN¤Ë6Pûߋ[ŒÞUꝬ„ÌÙFKÒhv›isHw„'¦±È/ót‘?ʟãÇq ŸëLçÖ$ªW*Hû$FZe|Y=û "µ"µ^µÿk-£SDGíAq”E "¦•Ù2­™ši͐êªM½¯¡÷Æ÷IJªubM¨÷ÛÆÎ^®ÝE¨Ã”£öê¹fdõ i­€ºþ¦ºÖ@©?IIL öpc¨UÔG»K£¨QeØŒû£=+|ùâsIwlGÀ¦×X5œZe”rûÛӆôN{JËïœ;Y± . ?Yô˜Ìk‡7œÈe ïW¦{ ߤ³Z.¦áZó÷õÐ §úTmdôžäm(Â8KE¨Kô=ô¯Ì³ÆN±e¶ÌÝÿWTO«uêuͦö*¡á«ºn½¤_7œ&1¦—ÿóg–¬¶“öÇ~¼iLðWùÎy̵Üìk1Ÿ»ó o©ÕŒ©ø®*(((((((((((((((((üŸ #qW§/°SÌFÄR‘ï#ƒ{‡'££¥ñ¾¶]y³+0T³Yáb‡ƒÒýbh"5e7Yãh÷tþ{ U—%ù³y·,c—".™·È÷£AØ Ã0 ƒ…Q(Á8ôÁ´Á.ȃ\€!(ÀÎY $ Eèð @úA„L@ +¦À&°Bì†iÈU`!cÑâ5N{æÍ=ä™{Ô3öà¡Ù¢¹‡gÎ çE-÷¯ÿ‘æÖà&lÊ·DÔ®Pe(זÈ)ܱV …ý~:#¿‰3jëq,VV¶®'°¾­kûmuMþ„+Á n]¾Œ×?ÅúhKôŠ|éf©Vä·¹’|…[ÇǾ&ü§ D8þ‹;NÇJ1ÏBûAìgéLe‰y‡Ãt&nR§ñ‘ý°ºð>n"¦îbšåðö=$ÿF¢òòLõJú煔 §ûðü¹×/î3vý¢jyƽúñß=ÿû•ë܍gV4q\Ú­rüÙD½ï +endstream +endobj +217 0 obj +<< +/Filter [/FlateDecode] +/Length 6099 +/Length1 21772 +>> +stream +xœíœyX”UûÇϙ†qGHÄ]T’‘M7„±ÜØÅ܈Å-QÒJÃ,ËöÅlµ¢òáÑm³²}±lßµ}³l/Mø}ŸçžÛÔë}ûýþx¯ëýu]3‡Ï|¿÷}–g=Çã¥B +!,¢EÅÔ)Å郅þ)™ˆ¯é• Ëë(žö³2³rI£S¹aß$Þ"¸WMÝ܅¿þ:)þw!ÂzÎ]°¼†Ú©EûìÚêòªÏ“:ÏÂx¯#9¼ Ë}ѹBXc÷­]ظ̼Ûñe[°¸²œâ¡÷ +Ñ;aù²ºÄã5hŸ¤sQùÂjûøêQ·¸¡ÑïÔêëê«ëæo7t¢½Ãۄ0m¢s³8ù3Uœ#p½-â"±Ql‰÷D…X wØ*îw E<.žo‰ÿà§syðBaÜ%BD7!ºŽvî¼tGž”ÙŒ¨[ó¯L—­ë»Órßunî²uv„D‹p½¯Åpٟäñ®£†,-î®Å†uðV½Ç¦-Û;·vŠD©˜!fŠY¢L”ãú«D­˜‡;3_, Å"=Z„º¹ø®A4­*ÑJóµZ,ê@½hMb J|ƒ?ÒêÎÕã&±e™X.VˆóÄJÑìÿ^ªgV¢f…/«Äj<™óÅݱRf­¸@\ˆ§¶N¬ÿmtñ ×*6ˆKðœ/—ý[¿ñ”hÊåâ +¼WŠ«ÄÕâZ¼7ˆOË^£ç¯[ÄÍxg´º«¹YwZíÃâiñ€¸_lê÷²wîߗýÖá¬Ä®=éŒéþ-=q·VáÚµkkõ_é2äלÔc‰ÿ>j-×¢%BÏA¥ù´;± ×@þ¯+¢è*ýúÿʞ|Wþ.Ë÷ãƓîÌ z¤¹Ó³ÿÎ_-n ¼ßÚ]ÕÜ­ðänÖýÉù-'ÚnÕãÛÄíâ<‹mºc¥ÌðÛÄ]˜Û÷ˆ6q/Ê_þdGz¿¸OrŠhªØ!vâI>(v‰=ÿwuÿ*¿ÃŸWOdv‹=â!¼!Š½Xiž@áÌ#È=æÏîÓs?!žD¬µ¢èiñ V¨çÅ âE±_<…èeýûYD¯ˆâ5ñ–´À½*¾Â÷qñJð§"RŒÅ:½÷ùF1[Ìv«š3{ÖÌ¥>¯§¤xZÑÔ)“'M,œP0~\~^nNöXw֘³2G™1bø°ôi©ý’“úºú8âc¢lV‹9<,Ôd4H‘šçÊ/s*ÉeJP²küø4-v•#Q~R¢Lq"•jÅY¦7sžÚҍ–5§µtSK÷‰–ÒæÌ™i©Î<—Sy)×å쐥E^ø¹.ŸS9¬ûIºJÖ ‚ÄDôpæÅ×æ:YæÌSò—Ô¶æ•åb¼vsxŽ+§:<-U´‡›aÍpJ?W]»ì7FêÆÐ/oT»A„Z´Ã*Ƥ¼ò*ej‘7/מ˜èÓs"GK ÉQLúXÎyÚ9‹ ÎöÔ½­—tØDEYJD•«ª|¦W1–£S«1¯µu•¢ôwå*ýW|K®VR]¹yJŠ ƒN;q©'Ù\ÎÖ_NÞuøÛS3åþLH’í¡YíOÜ&Ô³87œ!®/1Q;— nQ@i)òRìvU¸ÓS|Š¡L«ÙË5±­¦…kNt/s%j*¯Ìÿ³¤6^i©p¦¥âîë?IøA½S1&—UTÖjZ^ÝêÊÍ¥ûVâUܹ0îrÿµæµLGûò2\Ä<í6y•tWãʦH8µg0¯Ø«wñwSbrQVé磻çåjçåÌk-Ë¥ÔÆryw‹!]ۇ:í;†ˆ¡Â§‡—ƒ‡’œ×ê­ªQeö*¼Ÿ5N¯=Qqûpû|.oµO{J.›Òÿ —¨Qï…k;­57֮ܔêôìFŸö´pæã˕‰ +—jO4;Óé•vÁÍp ͝2cRÎx­Ê¨uÍoOô%ÒçoNÉî?§à$%ô¤±lHœ8':ο=5j­Pg^uîI'xÊ Áþôö¯ÏÓ Ý ÿÑ#T{œã¹Ê˜„™‹œÃè)í)Æ;1ÕéuU»|.¼Cî©^íÚ´{­?ßÂbWaQ©WÚþ·¤ä”ˆê3(RD"ª90äàÌO±ócÕãqz|"ZuW;[C]…Å­Úà.ÿ€Â‰„‹I.(ߐ=S3«›+¿Üå´9ó[Ë;ºZ*ZÛÝîÖº¼²ÚQÚ®‚ªVW±7Ó®Ÿë4o³}…v¨hQ( K²ÓR±öd·»äú¢v·\_\êݍ ®s}‰W5HCNY¶¯½/ê¼»B¸õ¬AËjI-pj6Ò4¡z{ûn·-zmžÐãÊ)ô\(礨ì0PÎÆ9rA”së9탇_‹[Œå6ÏY¥=ž•¾ÚÖ2Ÿ6¹D%~¤"]c„bpi—†%ÜU­˜]ÙZ>KËgQ>D˛ðbÈ8‰›£­I­e.¬Sx¡¼Â.éU4jC:;ººJ¼‰/ÙûñªÍ¥^%,kpÒ´§Q†ô8¥¥²\;áñj}MI•>¼¶< š(a!Ì?Zäë}´×*ñlðõþ-”ŸâKÑêçÓ_g›"Æ»Fá±Ó˜ÁÉځÒ}­Ñ®ÁúÜÄTOZ§IÎM{)cGˆƒùè&™"pæ•.TU–9q·ƒDe1^uZKÃ픩ƒ”\­n÷W +í²ŒIfK¸6âGóæڔ N2ù|tòz´ÎßǶ)fœQòI·ÒßwUÚ¹àgNUkú¸6LQ‡˜æZ†•E;i}$ªKRA9êoFƕÁCµ5ÂìceMڕGྒྷJ:º¶¹–'žôIKui8h/¦°ïƋ-|­§'”)i©¡§g-zºµ5Ôò¯;Ðý +µœP-éÌßhˆ¿‡ˆN!÷…o=vôèÖ°oµÌ)Ÿ -cí#Â†½™ óÁ&Òþvµ©«K«UÌÎÃ;Ãâ嘵lÖ°9ŸM ›ÕlV±if³’ÍylV°YÎf›¥l–°ibÓȦÍ¹lêØ,f³ˆÍB6 ØÌgs›yljÙÌeSæšM›J6lÊٔ±™Ãf6›Ylf²™Á¦”—ÍÙl¦³ñ°)aSÌf›"6SÙLa3™Í$6Ù²™À¦€Íx6ãØä³Éc“Ë&‡M6›±lÜl²ØŒas›L6£ÙŒb3’M›l†³Æf(›!l³Äf ›t6ؤ±Ie“ÂæL6ýÙôcs›d6Ilú²q±éÃ&‘“ƒMo6 lz±±³éɦ›x6ÝÙı‰eæ›h6Qlll¬l"ÙXØD°1³ gÆ&”‰M›`6AlŒl l$á7²‹M'›ãlþdsŒÍQ6°ùÍol~eó ›ŸÙüÄæG6?°9Âæ{6ß±9Ìæ[6ß°ùšÍWl¾dó›ÏÙ|ÆæS6Ÿ°ù˜Í!6Ù|ÄæC6°yŸÍ{lÞeó›·Ù¼ÅæM6o°yÍkl°y•Í+lö³y™ÍKl^dó›çÙ<ÇæY6Ï°yšÍSlö±y’Ílg³—Ícleó›‡Ù<Äf›Ýl:Øìbó ›Øìd³ƒÊ¦Âf;›ûÙÜÇæ^6mlîas7›»Ølcs'›;ØÜÎæ66·²¹…ÍV67³ÙÂæ&67²¹Íõl®cs-›kØ\Íæ*6W²ÙÌæ +6—³ÙÄæ26—²ÙÈæ6Ø´²¹˜Íz6ëØ\ÄæB6¼í‘¼í‘¼í‘¼í‘¼í‘¼í‘¼í‘¼í‘¼í‘¼í‘¼í‘¼í‘¼í‘¼í‘¼í‘¼í‘¼í‘¼í‘õlxÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÿ#yÛ#yÛ#yÛ#y·#y·#y·#y·#y·#y·#y·#y·#y·#svh»fµ÷öÌjïXÈŠÎW{‚´P´šd•Ú;ÒLÑJ’óHV,WÆB–© 9¥$KHš¨®‘¢’zJž«&dCêH“,¢& IÌW{åAÎ!™GRK2—¤Fí• ©¦¨Š¤’¤‚¤œ¤ŒdÉlê7‹¢™$3HJI|$^’³I¦“xHJHŠI¦‘‘L%™B2™dÉD’B’ ª½R@2^µO€Œ#ÉW텐<Õ>’K’C’Muc©Ÿ›$‹ú!9‹$“ZŽ&EÝG’dŒ N2ŒJ2„FL2ˆd –N2€ú¥‘¤’¤œIҟ¤É4t2IÙ—ÄE҇†N$qR?Io’’^$v’žjÏɐ$ñjÏ)î$q”Œ%‰¡d7’h’(ª³‘X)Ib!‰ :3I8IՅ’˜HBÔS!Áj"H‰‘’Š$‰ÐEv‘têMäqŠþ$9Fr”êþ èw’ßH~%ùE/ü¬ÆC~¢èG’HŽPÝ÷}Gr˜ä[ªû†äkJ~Eò%É$ŸS“Ï(ú”¢O(ú˜äÉAªûˆäCJ~@ò>É{$ïR“w(z›ä-µûِ7ÕîÓ!o¼NÉ×H¼Jò +5ÙOò2%_"y‘ä’ç©És$ÏRò’§Iž"ÙGò$µ|‚¢ÇIö’’{IÚHîQã°^Ë»i”»H¶Qݝ$wÜNrÉ­$·l%¹™ÛB£ÜDr#ÕÝ@r=Éu$×R‡k(ºšä*’+©n3rÉåT·‰ä2’KI6’\B-7PÔJr1Éz’u$©±å ÕØ +È$kÕØÈ’óÕX¤EÅb,W«±Ã!«Hš©ûJêwÉ +5¶ +²œº/#YJ²„¤‰¤‘¤†®§îç’Ô©±•Å4Ø"j¹dÉ|’sHæQ¿Z’¹tf5Ô½š¤ŠZV’T”“”‘Ì!™M=‹Îl&É ºèRÚGò’œM§;ä¡QJHŠI¦‘©1nÈT5F;Â5F{½'«1k!“Ô˜4ÈDjRH2AÁ¾@P4žd%ó՘U<5f$WY ÉQcZ Ùjt>d,‰›$‹dŒ?ßåYeªQ>Èh’Qj”öjŒ$ÉP£ÆAF¨Q^Èp5ª2Œê†’ Q£R!ƒ©å 5J»°j”67ÓIP÷4:B*I + v&I¬É$É$Ij”v—ú’¸hÌ>4f" æ¤Q$½©_I/;IO’ªm$^µÍ†tWms q$±$1$ÝH¢©Cu°QÒJIb!‰ –fjNÉ0’PIµ ¦–A”4’H$‰pwY+ÖJÇqk•ãOøcà(ø¹ß‘û ü +~?#ÿøu? >¾߁ÃÈ ¾AÝ׈¿_‚/Àç‘sŸEÖ:>Ÿ€Á!äB?‚¿}¼ Þo[æ;Þ² r¼ }òÀñº%Ùñ8ÿª%Åñ +Ø^FýKȽhYèxþyøçàŸµœãxÆ2Ïñ´¥Öñ”e®cú>‰ñžw×^|?Dœëx8¢ÞñPDƒcOD£c7軐<€º¨Ûœ +ځ¶›—;î7¯pÜg^é¸×Üìh3¯rÜîwmàNp‡9Íq;ô6p+úÜÝjžï¸~ üMàFø0Öõë:Œu-r׀«ÁUàJ°\~—c¼Má“—…Oq\>×±1üÇ%áÛ“3ke†c§Ås~[‹gµ§Ù³ª­Ùcn–æf{saóyÍmÍï5»£CÂWzVxÎk[áYîYêYÖ¶Ô³Çp‘¨1\èÎô,ikò5Å456n’mM2·Il’Ñdkr6#=õž†¶z¨ŸZßR¯ÔVêÖD½ ïèÚ»£ÞÞ;ê^Yo±åŸëYì©k[ìYT³ÐsNp^Æ\OmÛ\OMF•§º­ÊS™Qá)Ï(óÌɘå™Ý6Ë33£Ô3£­ÔãËðzÎFûé%O[‰§8£È3­­È3%c²g2ò“2 +=Û +=2Æ{ +ÚÆ{Æeä{òpñ¢—­—³—ѦÀä^8a—ÙínûAû{°+ö½vc´µ§£§¡¿µ‡Ì™ÒC.Çe=ŒÖøýñw|ÿÔ|k÷ýÝ?êþ}÷ nîîýä‹8[œ3Ϋ][ܤ’|]³rI Ó¯uRœ+9ß+­±ŽXCž#VŠ¨ƒQG¢Œ±ÙöÛ V«´Z»¬·Í­‘ŽHƒöÕitG‘oµ8,í«ËbŒs[ÑF<#bjI¾Õì0œlüû^ÿß?ò¿}ÿüO»Ðþ£ÂØ.âʰ¬çƒ°¬Í`%8¬ËÁ2°,M 4€sAX …`˜Îó@-˜ j@5¨• ”ƒ20̳ÀL0”ð‚³Átà% LE`*˜&ƒI`"(@Ɓ|rAÈcd1à, FƒQ`$È#Àp0 CÀ`0 é`H© œ úƒ~à  ’@_à}@"pè @/`=Aºƒ8 b@7 ¢€ XA$°€`á „Á hl¾À$¢J"';Áqð'8Ž‚?Àïà7ð+øü ~?‚Àð=ø߂oÀ×à+ð%ø|>Ÿ‚OÀÇà8>‚Àûà=ð.x¼ Þo‚7Àëà5p¼ +^ûÁËà%ð"x<žςgÀÓà)°< žƒ½à1ð(x< {ÀnÐvÁ`'ØTаÜî÷‚6p¸Ü¶;Áàvp¸Ü¶‚›Áp¸Ü®ׁkÁ5àjp¸lW€ËÁ&p¸l—€  \ փuà"p¡¨Û"1ÿ%æ¿Äü—˜ÿó_bþK̉ù/1ÿ%æ¿Äü—˜ÿó_bþK̉ù/1ÿ%濬X$։5@b X$։5@b X$։5@b X$։5@b X$։5@b X$։5@b X$։5@b X$։5@b ˜ÿó_bþKÌ}‰¹/1÷%æ¾Äܗ˜ûs_bîKÌ}‰¹ÿß^‡ÿáßûþáŸø9³E° ÆÁ‘Â(Lb¤˜$&‹ ^é81J>ð@lnnhšéQ¼®áÄ *¤Ìq[ƒ –]={f¹v ÙhŒ*À_Þwf™6b)Ï:þáñ—ӏx8zdúa™þÁ¡Ù~x9jdúC¯4PF%FéÄDL¦˜WŸ†ag$2dðð¡É®>‘=7tøˆ1Æ!ƒ{Œ1œcÐbi<ðg©qÊñÃ*WÖô!Á½{Zc,!Á†^ñÑi™I¶âI™LFSˆ18ÔÔoDvŸÂy}Þ5E%ÄÆ%D‡†F'ÄÅ&D™Ž¿yôÇàÈc9A Ž]i =3«¯ñÚðPCPHHGïøgŽN,˜níf 2w³EŅš¢£"úåÎ<~Ql/mŒ^±±4ÖñIúÿ»º%P%P%P%P%P%P%P%P%P%P%P%P%P%P%PÅ_´Áÿ=b„QÙ„ÀÿC¿ðñŸú }ôoý÷›‘]]ü8HÐý‘"÷Ï ´_’b"§|Á¼ŠúyB¯r“ö?þŸÐSÃ#âH×) ÿo] Šü ¹_üïOIë¼¥£]Ù¾gŽ5óуôÐ7+_Ôô©>×®8vôø†°oM" Ó¯ŸÿÌä ü +endstream +endobj +218 0 obj +<< +/Filter [/FlateDecode] +/Length 6479 +/Length1 14204 +>> +stream +xœí{itTDZpU÷½sgF3šÑ:£…¹3Œ64ÚÐ - «edv°dHì8  KbðX`'xÁNÀ»É#~Œ†m،p¼‘‡b;‰‡˜6vœac'πæ«{G`óï¼/ç|ç|ïÇÓmuuwUuWuuuu·ŽfX&N˜’_ÚW¼„Àô¹m­‘öˆ`ýܕNi÷G&B| =· ca.xúýz±wá’Õ "üö·aÑüÖyüÞü @I­:è"BDO7çDO¤vÚ¢¶ÎUò^'0kIûÜÖHەwª­uU‡%ƒï&þNB:—¶¶ÍàWät´¯èŒ´KÒTzÇòùoÿ£àÇÄ¿ Àh&­ÆL9•oƒ€ðyÊ(Þ?6|Mü¸ûï ŸãqÔûÚ@Ž|éð%:a6Lƒ¿@!tÂ;Tk€=X ø +õA³áT`!ø L„Ëà¿ +gàPþ3Ä°0~†c°ò 6P7TB)”Áxø„Æ…FkêûÃ0À[ð!$½O?„,J;ō<°§qþ üZøÃðØÃȅßc*v +u4Þr Ɇý0’tlƒŸ¢æZ3a1¬]ð& ÿÖx|Â<âd(€ÛàQ¸" p2¼'|"ü>䐆å0šz¶Ã‹Âæâ5á-PE¸Ù𼯢?â¾5¼¬3ša)€x~C”‰x”u²µìw4§b¨§̈́v¸~ Qß]ðsÀA8 +=(`1– ·ñ×ïé¯ ’hÎå0ƒìøœ‡b"fbŽÀÛÈzÍx”÷ b¡8: á'@¹ :ÈbÂfxNÀ×Ôg® /oX»ÑÐD<ËÈ.÷P:J«òGŒÇÒò'ø»[„ÔðZpÒjԑ¦~¸Áâ^÷Áóð+x>†>”PÆ ¬Ä;ñŸÅŸç/óSâ‡âåþëÂÿ>þižFš$ë^²ï&ØJó<¯Áëd—>ò…’T;“ƒ³ðø$>‡§ð×ø ó°6ö¥³ÜË埻…kB¿¸Iü“îxÿ{á±4 ¤)€$T†ÓiÖ áûdÉÙéð&¼ †¿ÂW$Áˆ&²X¥RÒv úñ ’ô^b£ØDÖH’ÚÙ6¶—OæÙ¼•?Ο¼‚"¬N Ÿ Wŵâq·ÔÚßÒ¿lÎßî;­q%Yç{äý«à´–Ûà ’~€ÖñC8MºŸ’—à ZoPGZÄPŠÇrMë«ê1ça;ޏâ^<„ïáyü¿`"Ó±¡¬˜•³Ñ¬Šµ°•ì)J?e¯³K<Žgr_Á·ðÃü5þkÁ"< &ÐêŠcÄVñ1ÝvÝ.)Sª—æè­úS׳¯ÿ±ßÝ_Û¿°ÿñþŸ‡ÓÂUá™áÖðŽðóჴWÞÿ2|&|Yó Nžc¥9¥Ò.ôÐM+ߓa¥¥´KÖÒÊ?]´/~O’•÷Ðv‚½Fžq†gÙenåeÜÇ7ñíü~Œÿ–¿Ï?áá_ +”– +ï çÄ8±A\)>/_ÿ©+×ÍЅtŸK:)YJ“&J?“~+…õ™ð5fÐ<ÎÂw>~?ÛþÄqð(¥¸SH× e¶&áÏY+Oâå,•—ã%ÜÄV1#^¢öNòË4֊;ȯ—A-Ža÷ÃöœN{ÂǞ¤QO²1B-nÔè¬@üÀ›ñpãR(N ñqáQHgsØ|WÁ$ËÁO;ÄÏùLêqoø ÁÌÅ ä[_³)ü9v–½ Fø€v@!h?íÁï3­Áì¯dñ‹l<ÏfðKüBäsȋ'@fø¦Áã|!üŽßÅåtŒ"Ô?¤ûx +lšáY¬¥cxìë?Î߄Ïù¯pÿ óØPá1ŠQn²}ˆVë2ùÙ¾w‰—tv|~½ðÿùí18uí¶kÝp?{ùÚóØa\È=ЁÅF +a7á4Héo¿ÉÆàpö·þÕýû®ý=\Í_¹}­•gS.6Æj‰6›¢Œ½¤Îr|îºg £% d¸ëësÕ¶»•­ßA´œ„ª»•'àlÑ؜·r*ĹàãT"œÊMN´:+ "7Çés;½µngï˜ÔHõ‡jÝMÎ@ŸV÷kõ­ZÝLu—‹:8}öEµÎ¶8}º•‹º|-µ4\w”±Æ]3ߘ›ÝÆ(ªFQ-`swt£m4jfó•u3ЛI©@²»ÖHrתxº¯u^`â¤F_mŠËՔ›Àš¹î9pW,j41]M@ÒÄ8«³ÍÎ®-!+Ìiñ˜æ¹çµÎl ðÖ&UFŒ‡äÖlk.Ø¿mÒà±5¿KMá]>ûb§ÚìêÚè <3©ñ»T— +›šh êËÒëZºêHôՈö|RDU_JdRóÝ>Ór§3`pW»uÝÙBë‘܀ɫ]ÁädåPø$ûœ]SÝ®@eŠ»©µ6µ;º&¯Þ›¤8“n¥äæt[c"Ö쎶 TLæïVæߤi5]­5L¾iNT5r!/8ç:I“F7Md¤ +揄®¹#‰¾&¤^y´ ‹†š–.ká­jÿ€˜nu;»¾ZvwßÅ[1­]ºõ+P«ªsÜô/¢ß¨<ž@v¶êR -$é8Zkåæ¬ ±³î«“ +2Ll¤nMeùds—K]ÕÍ!æP#°~Rc¤í„9)APò=MÖ¢RznP¦©”õ7(7»·¸É}÷úbHè3nþX¬‰q¾EeLü/Èó#ô†)î†Iw4:}]-¶m˜zK+By“6P ÄÕ4ò6Pc)\£’'μɬ6M!~tš'Ï IzrE ƒÎº€µ¥>›Œ.׿Ø)¾¬öҊo» ¨(óÜÚ.¿¥}‹z¦.N + ¬aê]]Æ[huvººêÜκ®–®ÖPxý·Óêî:ďò£]¾–+ +ޜ¨ÛÒD“X„eä­ ª»Ý¸iR·‚›¦ÜÑxÈJï MSƒtǨi©nêN#Zã!'Z ËnbՖSmQœ'O2½FJ9DO«õUÐZ{nAÃéoàæ†XgÕpôå‚voÉÕïƒÛÿvuç7uQEt뒾{ë óƒx ŸÒª‚Î0‘ÞPVȧ[4ÓËFv¦ò_ò“Á"ªøkP@Y¡ü åeÖóØIyåw( áÞ³×ç+TBTzò´2˜5¬ðJ&gã=ìmÈ™¯S4ʱ`uõ@¥xd¤²7;·ðl•‘ƒ/(3ºr½JǞÖkoV^áåu?nÕm•Ø¡ðzövp¸W ±·÷¦z ­U)$¡…re‚{(3<§Õf|F«å¬¤<½­ìâd®ôŽ,/Tü^÷É=ò»òYœ(ϓ;åûeAãå4y„\+‹ä+2Û-‘ÿCæïôþ¡—mî}ºwOïñ^¡··×ÿ?ÛìÚÿŠÿ˜_ðûKÖ ëD¶Ž­ãÌÂñ~–ÁÃ\x„ïä{øq.Là³y;_Džt¯ä¸°®ÊÁÐâµkp¶'h°Rƒù”5hÑ`Xƒ_¨/ºJ,UiìŒÚ—àNÊg)s²Å²Åh×Z;ÙIŸ$Yʔ+)Ϧ,Ð¥ø ;Iém²Z<"D°ÙȯbcôJU ۀ;èábÆQLT!k§ë½™ÙTˆï3yŸyå}æ*3+¢{¬™Ù5ÈUˆ­ŒSliæ—Ò̏¥™ïM3·§™g¤™ëÒÌCÓÔNcÀAìÑ*Ä|^ƒ«”!ó×óßææ3ó¯æ»æ‡y¾Ã<Ùa>Â⡄øžQ¢JÌWK̹%æ!%æKØg©µ€áK€Z¸"è"‡XYÐ/SQôgËGY!øéª#³¼ üc¹ÊÀr@Ætj{¨œNe¶†7³,T`5µelÓðð +j¿!Aï-%è­¢"1èʕCø‹ ßAÅñ ÿÇT¼ô÷ÊGñHD Ê iD<@#>Hí «#a7ãST‚ÅG¨×ž`ñnR_Á6z¡Êøs*—SùRЕC䃮"*^ºÊ©x.èšE"ž…"MÄZUðQ\ ~m䕪U xWdn¸‚$/¡²c@b;•*þ{‘9áâ ÷Uôpiø¹P®•·ýCUÍk¨®ò•ƒ—í¦² ¼Z»4èAÊ]y$Ý .m´Â`ùnjÊ$ôj&ELd ºn£"&XÔK…>è_M….(ï¦B /§ËW´[¯BEJœü…7G¾Dƒ÷¹ÆÉçhNgý!Ä ü1§ï—ÿ ÷ʧ5Öòï‹”?p…pzP~¿\+zýZqÊDÕ~‰Jp‡|òºœAù-oˆDɯyËåޑò«Ô5=()?¢W™÷b1¿BåàùyW¯ü\QŸR,ò³4µídú-E(˜„’|k¤¼Ní~@^ë'¯V9ÈËü™òRR©ÓÿXy®ëA¹Å;Y¾£üˆºÐH–Ë·“:zÜ/O£9NˆHW¼Cn(¢‘ƒò˜òS•¬/ï•}®l¹†ÆKWåjÿd¹Š¬¡x”K‹—Èy®9‡zWË2‡ªT9i¦ªIPžVr”ݽ1$ܨäI”vI;¤éÒhi„T “2¤tÉ)ÅëcõV}´Þ¤7êõz^Ð3=èãCásJŽzÅë¬j¡T(hu+S!‹U õ ÆÂÎclë pœ2ÄñÖ0¥:PâiIáɁ‘ž†€4qFc7âÃMØè™ sœ¯§¸Ch¤c^tWc ¶¦Vۉ9À6‘WLm aXíñ@Šza>DѪô‡RԲ⁇šš†_‰++핱£cJëjÿ ez¾ýìž[>»gHàñ†)Ò(T+á!M Ì)ɍ‡Ø&¶ÁW{ˆmT‹¦ÆC˜Æ6ù&«xL«m"¶ Û]«roŠ°ÍÁ6•|nŽÆV£±QÙHl6jllÈ*ág©l´Ê¾bm8(Nÿk|Åú'4>#b(óÕv—•i\Žs¨hBÇ9M¨Ieê./'o¹ÊÒ[N Ýå±yø·dW„<1Bž¨‘K¿%EÈÍr3‘=ÿ-ßüê™Õ·xJ56LlìÖCu]Pµ2ÑÚ1Z󤘗F=rSøï!ŠîèFzäE¹«¡²Òî±V`~CÀuû@ó2t• ½’›»ãâÏöû†óœûú/ÿ´hûÌO~ùz?:vñç®ÍÚÕÿ&~Ì&]ߣƚñáO½8\𪒞âÈæyBž«Jy¥¹(±ÒaH£—‚;Á–jan}B¬ t–Ä(FÄ»\P‹±ª9,&—‹VA±”ªdÆ ·—n•vÚ +-K¾-ICÏÒ8Š"èY¸1¶ûÏêÑÓ×<Þªzº¿NŠÃWÿN°ÐÜ]õøo$º(æ(!Êå<®QÂ(—ŽÂL$£KrI–τÈ1£ú¼í†Ógfd2ºÐÖô§Wl=ÖùtÿŧÚWzÒRc¦—ŽQ×9Ï¿F÷—5¶%½«¶öÿ}產œJ“Þ—S=ýU½EÃ8´°–¼;A¤‹) ƒ'”,%z[‚àÓõCM.{¡X¢/-²ÛÉW¢â{ÔД8BxX‰çxE[7¦Ùb‡¬z•$ DǵhsÒé 1“”vŒ³ëŒÜx˜YÀƒE+5÷ÑY9J+óûÔxz3®6k'Òu-‚’Ô½‰R不¥˜Š„¥SJµ…jLŠB“+´¸¹vÙ]~Òs/ÞÓß^›ã¨ž){s|Ü9nqEföÒM•öôÛ/ýòƒ×‹]h©+¹þPððÝSƍMÍë:ýèØÂÌÈï®Êÿ¯iž–þ‚?bu´Åö 5ƒi0 ¦Á4˜Ó`Lƒi0 ¦Á4˜Ó`Lƒi0 ¦ÿßIýƒtíOâk¸–LY§þóRLb|‚- þ§~äiPPísY +‡ ¢ +Õ?¡ h‡H$«%€ ’4l,ÙRýƒ + §.n›¿Â9~þ÷“ÛÛZ—æT·/™7¦³uÉâ¹êx¸ÄYý­ÍËp9| "²~ +ÅÔÿ×Ì üٍL“, Ùê÷Œ‡µÿø/>UÑÔÛØsx¶¥â+}RDñçå£/¨åÝÿyìêÎë[¢ŠôÕ4–á†Þÿ ïð|° +endstream +endobj +219 0 obj +<< +/Filter [/FlateDecode] +/Length 19114 +/Length1 33568 +>> +stream +xœ¤¼ xTE¶8^Uw¿½ï[’îN'ÝIštHn D A4v…AÀ¢"« +ŽÊ¢Ì7@p¤IX–!.ãúæ;:㘙AQnj¼DTrûêvaÆ÷¾ï÷ý»S÷TÕ­SË©Sg©ªÂ!jA ª7¡ iŸ–‹ð˜<ã¶iMÉôÊ~ágܱ8ðÓÐg>Œ?!$L™Ý4ç6ñË#9‰ƒâ>šsëòÙÉòÈ«;wÖ´™®ëæºïKÈ82¬+œ™͐Κ{ÛâeÉò÷ÖBýËn]8cZ2=ò½n›¶¬É1Œ½ÊÇh¥ ¦Ý6+Õ?h¥5-¼}q2}ßô}Ó¢YMÿ3ús'”Ÿˆå]îJÓÂ.”ƆQB‰3}A—8CßQH¾†Öӓ!õiC/ p vü#r¡‹Øƒ QˆEߥö¡^ô8²£‰h3¶¢,äD“Ð(ÌB™(z?™¸#ñºý +=8ŒïKì÷Ñkè"ôàÏ,F¥h,”Ÿ„f¡¯˜ÏQ}â $¢5H‡† ë±MCÂ÷;èãè1ô;|wâ"´jG÷A}å¨U&^J\ByèAvwZ:ˆAG1Ÿ˜‘˜‡2P&ZO¢‰Ÿ¡0ªGÏ  OQÜŎDA4=€¶bóÄGÏ"ëI3œ;-B“Ñ´­G{Ð[؊k¹ÓܹÄ]‰³ˆG6”}š‡¾Â%x yŽÕ'†&>A7¢NôŒ—~»ØÙ]܍jEâ׉—‘Æ2>†_⊸‡{ïM<•xé¡?€"c¡éè~ôzýú'Y™X‰F¢ Ðòïq:à0PüCâ!+È +æ=ÔFÛ½]‚v 8ÌÈtÚüu£Ï±ûðh<?‚ÿIôd&9É<É`Þg1û<Ð;„²F‹Ñsèú/ôtsP!®Å·à…x þ5î&qò ùžÙûٟØ^.¬v«?%Æ&¾CnäEס;ÑJ í3¨@ÿ>@ÿDÿB°ÂsñS8Ž»ñ7D"™di"›Ésä·ÌXææ%¶„ÆÎgÿÀ~­æ6ÓõÒNõQõ·ê;‰Ã‰w€wŒPUEï®x@ïAí£OÑ_)ÿ@ýCð|3´r;^‹ÿſÇïà¯a”Hûf’!¤ +Z]Hî#’Ç õ“ð=E>!Ÿ’¿“ïŽÉd2ÍÌSLœé`N1_°f6Ìög°ãØ)lf¦ˆ»–›Àíæör/sçør~&ßÄ)Ü'¬ÿ«7¯÷Ï*RçªqµxWNº(ñô4ðý˜ƒ·€¢ÿ =îFça¼8ˆ#Ðï2\kð|¾ ÏÂ÷á5øWx+~?_„Àˆ}’J2L#³È*²†‡ è^v&ºýŸ\Òú+õ7¬½äSÚ 3úú ?~Ä\ân H£i e~Q©×ël%¬GH[ù“è).”òCÙ;Ñ9ôúŠ;5 $éYuûöo‰ÒD>¬0Xeh7¬»¹èZX1Ÿ—‡4MÝ+]YR«ºMA3Ñ= õIÄÛ÷'–'¢·÷GÜÿˆ[aEtF9z¾ÑÇx¬Ãkÿïqþou&êB_c7ÎÆE°z¸;¸MÜî÷;îü ö*ô$pô_›eÁ ôú}E˜ê‡bÐßAÐ÷:t+©gŽ£á؋š`Í怖ÉíPË}@½í°žÃÚ8râ&ô;tì‚̀öE¨§è<J·CÎLÚyèï0n#DC{ +Ô´¤VôéOè  vBëW? Ux2Ôõ=º̈́¢Z¼fà*ÉZÅüÐ; ›Ñ0œ‰Ÿ¼FX¡F”ŽÊ¸¿a‚ú©cƒÈ<æ8è˜䷂öò¡kp3ôÂãèE<•¨×CÞà Çïj½ØFf%Ö0KÕ[ÑÛèy˜…½C¨BH©œ¨T ½¦|Èà²A¥%±â¢…ýóûEórs"áì¬Pf0àÏHOóy=n—Óa·Y-f“Ñ ×ɒ(ðËŒúU7âáÆ8™OÓ¡i1튌Æx²ª¯.4jÅW—T äì+©$K*—Kbs •ç÷ Œâ¨ +:ð”ñu¨*Tˆ÷hñ1Z|“7@<„À÷ܪ@7Fī~DcT·_' Ÿ%ç÷CûeDu‹»BMû±k(Ö"Ä5bð~‚Dt*î Uˆ{BU´q&{Ä´™ñÚñu#ª|Á`}~¿8>#4=ŽBÃ⦨V ך‰óÃã‚ÖL` ÚØ߯kýƒf4½1ªŸš9í¦º83­ž¶a‰B»UqםgÜ?'¡rëðº5W¾õ1ëG¸çhrýú5x×øº+ßé³¾ê\’]ݸ¾š~ˆX3!­‘êëâøh2@GBG•߬КÓxK .…†…殿¥¦Æ»>Ž®_lóz•ÎD7òŽ¬ŸX +Æ+|¡úiUiûíhýõËÛ=JÀsõ›ü~û͖$a÷M©ˆÞpedÖåwZL+Nc5×_¦,¦= +†ˆf 'u!Ó ú˜5­Ÿ1ŠÁ§V|&Ìȼ¸4¼q½y0ͧøq.Û +¬ÿ„z¾¹:gZ*‡Ï6‡h”òÉeVƒ÷}ñx4ÏË£," ‡9…>ÕÒ%ùýîè CMæ ªÚN«\äéoèPÐtHÄ[Æ×%Ó4Ý׆”‚h}œ4Ò7]}o“è›–¾7—ÑCÀÉ5úq1|ùÏdvÚFÌÇÎÿãõ¬äûš ¡šñSê#Ö7¦h[3ñªTòý ËïR±¸mxã#©ñ1Ú[`ʛ.¦‰:}œÍ†?^cê™q˜RËÀê¸¹qdòY/ƒÿ+N‡ ^Ô‘8G±4ð3Zª—ñÁÑ«ÓC®J_Õ;ýzúˆIÍÄ)ë×ËW½«´~}u(P½¾qý´ŽDËôPÀZßIv‘]ë›F4öMhGâÈ_¼úÁzÄ\<˜• aûCxíøý +^;aJ]'¸FµëÚ&ÇÕïςwu`ª(Z.¹œKSšB5½ˆÚ+_§’ö–Õ2´ôŒŒ´<±/£$™gÖòà“èÜ CÕ±h¸ýøãwšµœ«>7ÓC=è÷rÐÍ<¥fTš å‰âÙ?±¥ÒÀ¼€öA€—ð @h…À …y¡]0)­v ¶9£E‰.ˆ .Öòó+j9ÆìUY Ù{Û&Ñì½íJU‘‹‡$aÁ ¶‰Éׂ½È_é´™R±q6BØá:´}!av3O·Uû¡†ç "S¥y†§Àó$„zÿŒå9ôm*‡…^=Ó.éióÏhX>æÀ2ÁÓ ¡Â>'!ph!“ªŸ©f24¸‹y +\1?óëöpš¿ë(ó¨†õ+Z)4?4ÉZCÛ Æ¢®J‰ +oãÌÃ0kojs6Ìä Bh¼b+5¦_±õ0këa¦ÖÃL­‡N­îCÌ:x³Ê0w¢&f)ÚaÄ)[9ڀ Z$+§¨“ñ0n Œù(C®·]2Ҟ¹Û¬6­˜»]o,ª8ÎÜ|~;Ô©0‹Û]G™ŠÐÔìzÜ+mjÑI§ä8“„ „Ig2Úþx¥Ҕ‘ý“·È)J$òù€N7õ05øv +þ!ÿ; ]äTrQw)ì®L#ŸCeSɧhÄ9J^A…€ð é ½ “NTð4¤gìX ðH[ð éh}²Íः%¯´E Rv*âò¥"VgQe6y™¼„Ò Šf|‰t¡L€'ºvýÀƒ¤ x _%Ç(‹“ÃäXû~ÒÞf¤]ˆ· ìkã)x± %SµþcäE²y¡èoÛÂ^ÈÝÝÎò›ŽB}üñÅmé~k¥LžÂuø<j_ ²’§ÛJi%›ÚŽüdÙ¤¸K•l%_ÙÉfæîdفü@i`g ÒL²ƒÀú%àYŠ¸‚aY×ƖÆ+{aLt\µÀ³U‹5³I‹_ŠÌ—ßžÓbä4:V@X ¡½àn"wB¸ ÂÝîÑrCXa)H“&ÀhŒ&ÀhÒ0š£ 0š£IÃhÒZ_b4F#`4F£†Ñ€Ñío#`4jµ€Q µ€Q«aÔF-`ÔF­†Q µ€Q«a(€¡†Š†¡† +`(† +`(F!`F!`j…€Q…€Q¨aF!`jÀF0F0€Œ€†Œ`4 3`˜à f à fÀ0†YÃ0kó³ÅèŒnÀèŒn £0º£0º5ŒnÀèŒn²t?sªò÷€r +PNÊ) å œ”S€rJC9(§åTjè‹5b`›VBh@q»· p»·KÃíÒØk ŠŒ8`Ä#®aÄ#qÀˆkqÀˆF\ÃhŒVÀhŒV £0Z£0Z5ŒVq—@ ÿïLùÿ<5ä^\'‚®%-8Wƒ+Ñ7\Nkð´_ƒw£¼ ݧÁ;Q©—¢°¡> .F~·ùKM•Nã L…°Âû œ€ h±“>ƒ %J&kÆ ;„} Û't Äďãwðûø<·ïæI ÒG šт6jϕðü(xVh± +ƒvc gKà#1ÅÒø6ŸÌÃ'òð¾<¼1WJäZÌj’.€JÁ÷ã:Eê? ¡4 +’éáC߸ümáþ|, r•(Ào 쇰Â}J!Aȇ Á¯ååAù:%3Uå1AÚr:Á‚´ZD¥“ðÎöߐDۉäÞѶH!€Ž¶È8‡Û"Óý•>„"Ô*ÂaæöÜ×æ?¯›/´ùØÝæhh‹ôpc[äþJž„ü,E˜‚`Ü^ßæŸ ÅÆ·ùsDÛ"aZ:ʆ·¹¸˜ÂÊJ¶jóÙæ/£¥E¡y”¯uƒ@!Óú¶×±XÑù{üú¿ô¿a=>t°NfwàɊì?–ÿ(\éo«”iyÐûS0NáAÿÎìuþ'¡.œ}È¿Íßßÿp~‡ÙA¿×iM´ùïq¯bó·ø ý‹óÏøo÷öOó_ïoȆü6ÿMþc´›¨ב½‡üµPá(Ev›ÿÚì­‹Õþå~Åñ—ŽQú¢AÉzKóQ + ¢dëý€¾yÙ”Ç'•v`‹’'œ6 7 +Ä!BHÈ2„tÁ.ZE³hõ¢,Š"/²"‘hïHt+QêGØy͝àYúdµ¸™Ð'Aš›A°HÐh·15¤fÂ0\j¦â&„:° î†ãÖT3qX|P´¦CH\/ÖąÚëöcüp=äÆÉZpv&ÖuàÍzÀG÷=öcôÀC¾N„±ç‡êë‘ÛyG…»Â:ÔRV]õ ÆÔ3úóÇ}e4=¾¹fB]|Oz}¼ˆFéõ5ñ{é®H'1ȪNb¤ ¾®“m"¦×Ó|¶©ªŠÑŠ7¡ŠPÅÄa(@‹<F‹Á%˅Ê)€r²…µraÙ •c1-·ÿt`DÕþ@@+“Ði­ÌéltEàÀ­Úk¥B\GKáºP@ëX®V‘ßEòýZ vV‘kÅ ~.’*Rr¹H‰Öƒ.ãO–±çô•±ç@™èÿÏϬaQÜ>`ɊWèFSchÄ,ñ wÌuÇ[¦ûW,Ií@…§Ï˜Ká´Yñ%¡YUñ¡ªÀþ¯üÂëWè롪ýè•ëö¿¢Ìªj  šVUß^Q^WyU[ë.·UWþ ••ÓÊêh[•¿ðº’¾® mUÒ¶*i[J…Öֈy”ïkëö‹hXý𛒰èdàáF_°~˜ÓÜ4”2t琠{…ï‹ðn¤‹ÖÇõ¡aqú*¿2¿’¾‚uF_énbê•{Ő ïޝze†lKhê#-¢…jâ%ãkâÁ Sê(«Ä•i¿D6eoÊßTښݚßZÊCéßIUi[ÁN-ŽÞÞGˆ.®bC·h{Oµ¥¥k ·ÒH4Z½kôúObã>¢_&ìí©Zoת_Ü7!ÉüÛS•ÀL$[_҇¶$…¤½\¢!%+I¦.?~þ@ŠÑm ¾`n hØ‚U^è Š q¬Ê Y`UŒ<"Ï©„9†ÃHÂqìFî¨ùByoùXóùò1½å¨âæKðP´-ÙðM€.˜®K +‡~B¶‹ª‚ùêx2—{™QµbÌ1íbˆ(a$™‘U<Ž3‘r<úô˜"KÿÒ?` YÂvÍí–çæÓzzÏ÷˜{PE…¹Ü má +“³m`i1!»Õå$³^ÚÖ:còª®us®) ©ãÏâ~…ƒ˜tWßQoødzêî'gӞ ‡ž(ZOF)î‰ÈsÈy ÙEvI4#ø³šiŸŒXëÓñ_ܓzÚë-ÃiozzÏ\ÝÛP¦$F˜b§Õa3bBÕà´ÙëNlÙ5¬æu|Ûï.~¶äøy\ð‘šqñoÕóêO´'•x ™ž$ƒŠ”`!V0Á¥0f&À2,SřQükyØçnuGǚÏ4Œ1р +zڀڕ$¯Áõ,­íQx¼€=PîÞÃîLyoåð¥Þ‘ìp÷pÏp¯˜åÎòdyg˜Ì®uo÷mO۞¾'mOºhEéæô@ú€ô;ÒW¥oJÿ0]L§ÄiwÄ҉YoJ§“G(õ !•1Vg u§Ú ֛¨¹òë ôD¯@¾~§“N;xtÙë76/%žŒ÷^Nû<¥vsyùÊs½Ñæ3°è¢ Íåk¶G¨ðA鉮6KíC›IŠÑ\Ɗæ2N´´”%×~ý~ž ŸX§è$ŸÇG|6LO¼¡"øk¨§¬\3¾î8ò%ºQ„ôD÷ AƒêqsCC¶ZK–,‰…C™¼=0«¸Èé°óÏò«¿1·~ó»èàYõusEõK_ûøâµcŠÕ ×:1§þô–þ¸¿â†I7Ϻ宴/ßúúÅíÓ+Ï׆é,Iœe}0K¹èc¥hãM¹+mCÙÉ<Ïí²bŽp‡ìŸ¸?õˆN;~Èù‹Áhb±Ëæ ú f½Ü³ý8V  Ä`ÀÎL“ßV`#6J^ÛN‡äÍÀWÀ@œ"ÈfwF q}́Þi>½Ò¿Ñ¿Ã¿ÏÂÏù»…Óã²p–7ê<íZŠO#O^ß\ô$'`C¥¬ !5!ôA“Í=˜³,ERJU *5زÎâ¢$õ„Rçe2%ÅEôDUpÂ…2³Æ`³aÑø–.º~`ѲºQ#gëÔ^ßm¯,?yϜ÷VlQ¿x÷uõGü@pî‚UM·Üíøœ™wÃ躙ýØqãª[×¾t»ïØ/©ç>‡õÄe«€®22 Ï”2}ÀP&é=ú¨~‚~¾þ¯z¾Ç€yÖÉf³9†‘† » ‡ ¯$ F¾ž7œ¬3H¯7:ð‹Š—aí ˆ%¢g Œ°2C—á$Žâ$‚B9p±, ppe,Ӊ°šÁ>!0‚×TAVB<Æ#ø:>øð˟/ÞÏ^t¡:® ¹E·D\#nñìâv‰Ï÷Ø:‡,Çm]–“6ƒƒh©2ßéT֘՛“³ Ãð,ÝÙQŒ¼@8–ÅHÔ»\^Ðhӝk—ñZ@ÿw,EòK¸Pj‘ˆt„d!JHÐ÷ÝÍ3úŒPXÕÝ;vĬª/€IÁ’ª(ÓT.íÕ̊5÷¼º¦¿›Á\^¾æÕW“à€“ 1¥K¿&®ç!œ‡NÄ$Ô6‘•$T Ô¥ý<;hPJ{%u_0ÈÀm ÝP×Ò{h¹ú‚ËòÞz QÛ¹#—Ö“@o7µˆ7å§åm Åû¡ÓJÅÒ<<׸,ï öËJA‡Äçô f;­~Ç8)tìs‡ÃÊ̶ÚĀ=#â‹4ñ-<ákr"û€×¨ éb [¯¿Ò¿¶cÿ¦þ-ý7õoí/úö'ýí™°‚Òê ÚóLè3{zAõ74_ˆ&ՎfsÓ )Mù;-méeªü½´ì·Q}_…úx÷2­LÔђ@ª”‚E„êpª|xPå\LŠ¢Ò”#ác ¦áÐf2úŽk¦,œºzSÃSwŒV?W 8çåßæ]wCÍè~ïìÁÖÖè° Êò·¸#é7m›:ç…häØʙǛ "a_SËI7\[5Iâz;Õe’¾a찛ò¨æŸ–8ËÝ v§}¨Œ]-­³¯sî@[ù×¥÷™÷uß1R¶”£Ï1äÚsK¸%ÒjNl‚Ëes¹rI“Í 9Ü6n‹ô&ó{WÇ¾ÞŒp7:‹‡’ÜâŽiP~éÀS—;ŸŠÑ3ÖL5áq&lRîØc9J¦5_fLß'£o‘V•·0 §9"­6 ~¡4Ì^»ońËrv¬¤DJdœ!{&J!4PëS³‰ãÙP€Jˆ`Àåt%E‡ÅL%[ýÃÔ?|£þI]‹ïÄ1lØ=³Hý£÷¹;žyûÖ;öߍç¾Âñ¼?¾ãæxõ¢U_«?ª_ÌIÐcÀ¡Ó€CÍ`ä¯TŠs`¹_ëšÅÎÒsy®2×Hg½s®“+s ô­ñmã6ë8¿…²¥Íšm2‹žÈ> )ž¤£Rl-A‚,µX ͅfb¦\øE.¼Ì‚t”͘²‘Ë©9?<ý†’L4”P¾.zŒ¤n¼·£1¿tö˜û§?ÛûÎùôîґSËËo0ô w$-ü²zö¿Þß:£&ÏϾ|©Ähüû={Ͷ)<VÌ9©mR®9V³y«ŸÃ…Ü>ŽpœÄ°ÙYÊÖ!Qàk2RF:¬ó …ÌV +`jˆKÀˆôWŽH›Àò1çËϗÿ²â`=¥—q°ž`YqW-+†‰¤yQŽ`*<ÎV\úŠt÷˜bîÈEõè÷jó÷Ðû-ÐûUÐ{ -R* ÷<—-ÄBñ„ø™Èˆ›D"Š(9 ú_Á©q=æñt…:¢»ºÿò/õ¿!éõ–[iç©[˜žÞ!dfïvÚ·ç.ö>B)K¥\žFÙg”l‰åd†Hr6kÝÇ`†A<ÇA'Qºrb€?Iy†lP2C­¡ÑÀ4Z „¹ì@Ö@tÉnvQG#ô’«Ygх†Ôž&ìáA{«QšÑ(Í$ÿFé¾Á\þnÆ9¤ +稧{qGzOÊ«É½½+aLÂÀÀ˜´P›Áö¢XŒ£¬ÊÖ Rawŧpµ\ ×Íq~®‘kâÎql kž0H$ÌÇ¡8êFL•$tP§ Ţ쀩ſ(5” +m yô–öïAœÃù±ú± hû +¥-~DñŠ<¶Ze™c˜•dI”9I”d±V¢ož¡êWõ+˨[™‘Q¥AÛBǐN' +"ÛAf¶q#EŠUÐXœ\¦|ƒÏø™îÊ!ºLvÐô‚« AEëÖ,l-"҈h._eè³<©qJ!óòV›ÍKU/^§xÂ|DÚÄnå[Á]ïb…UünöKö–B¢»½ôú˜D ž‘lþy1³šÙÆl“ž÷0G˜7ù%æsIf®‘‡1dhimn¨×øO|ÙnÕUð‰/ÁÖU°…'<ôö +6 ³V@ONµ›–Ï’/ÙÏ¥¯eÃRi™|?y½_zPÞD„:Ý,r ;Gš+ßA–³B©a«¤ùñ©NÜr1F³1iˆ\a¨ëÆK’ì ^Ö% )wÊOX09½ ñF}‘¶EÄZÑÓч6J#̾¨#1}@ÖvÅL#:‘Á`™AÿX«¢œrU’Ø ¸ Çü~͋}ˆ’­XQ’Š’Ž$ÑÉrC J FÏ¢ƗÑoÄàåÚé½â#d¶ˆolH.^ׄ‰1®HP„•"¯„Y8® èô¤ƒ R¬°j(ˆ(„ŠüÔì‚j T™Ïƒ15—ÿÃ\îõ˜{›{›Ë½npŒ¢N(õ’´Õ‘\WXž)+Ó6¸RLtïרIÙ }´UEÀµÀPÀMI®²<‚b ø˜Ú£~ªþMý3–næË«Ùû~ZAðÔV!ªð+F‰áEãY+È .¢¼O¥ 6…JŒˆ)D"#"0Ð hÅ°tÄ,1[ğÔvÕ6(EW«kÔ1MºiÕuéHR“ˆRªRm]'LˆIEWÉlù +™ F8Hí>± )MÚQ{äFYٚþtð@¡$QÞ­HÀb É#]‡%Ê5š©ÕDÆp­TË!]‰Ø¢+Ñv·LœŽq2EŒÂ°ÕÌ [Å6ñ ÿʜ?™S Ƙ!â8ñW̱•Ù'ƙ¢.é—ĈR¬¹@݊¡ (Fô!ØK g‹"ûÇÈDxh¥«3‚‡HÁM—ЏD„!¤XKá&2YìÄ'Œ!#„'„½ÂÛäcò%9+ü@t’#Œ– k…O%þ¢ŸCúX¡iœ@5¶lÅR‡mêG½ûò™÷~¬fŽ]ª¢¶[=X½gÁê5!zZ™´…Û"nÕo5²"Œ¢IpGÜˤ¥Va©e™c5»N\§_m|ÀºÎ¾Ö±ÖµÖ½Ú«¬À ^‡Õk÷º^Á–o<ùãŒì“1’Ír@fdjÕ +ӕôÆô¦ô–ôÖt>~.¤›#­ӝáBmÎlO[ñÊeƒV³ð4 ¯§¢GÛZi/!>@éÀ┋°ÝzÙÑ­^ôÛ9ëÚq~@]¡W;ÕxÀû÷ÿíÓÇ»ÉûÝ[›Ú¢ƒÕêê¯Õ…`ÌÎýAM$—.þDé@-»‹° +(–*Ù<×iït3×rx÷!G¬–lƒÑˆ|fj™èü«ÕéO/LK7›®Ô‚iW®—í֔‘ô³í +†yÊý …<†–ò~ÇÄÆëW왾eì-o¾ôô¾;†ß<²¤•;â ~ºoMÇ<‹£÷#öeµ±ÿôÊÚ¹Y›×Ûø ˜WÊÇâžÕék‚O 'ì۝Û]ü2ó=®¥ÕòjãZóZû:ŸÈ§KÙ^Ÿ=ÝôdÏw݉ÄÅ× sÅ–{—g,¬ÖYÖyW¶ Oè6[ž9_s~贔úê,ó„yòh9˜ ø:tº±YÎÌH$Ë) †'á´|é × Ë̗¥˜É#x‚bbޗ¤pØš}yؚ¢¦5É-yJ^c^S^K^kÈ;—Gòü‘V=6éýúB=C×öÜç ë™^°™QÅùž¨¹W¾IÚTP›Á¢ûÇÙN—Dð}Þ²€»=0ÅGꕆ#¥NnÀm-· WŒ‡7íS_TïÅ-x®Æ+JrÔ#eeÝþå//(eS&üêÈØþïØCÂ]øa<ÏÁÕfuÛï6-P†ÿî.õ§K½ÀhŽ!Áç‹(§QK,E˜™ º¨ÜWfeºA¸Ew‹~´ËØ:d<-ɼÈË.Ñ)4V«M‚h–,v£Ýd744]kZb\n~OÖ-“–yîH_+­õ¬Nç%§]қŒŒKŒ«ŒŸ1rƀAo7ô&½ÃàrfÛÌvÜhoµ»‚”‘¥H4Ò­”2˜Á|{ßiåã|Šgù5M!†H(踒Ÿ3¯´ê´UšÚ ÐÔÖφ¿&ŸA67\±³§ù¢0ÀêE§ƒ»ï²™þ$²X~æwpñþýƒ–—_j¼ç–võ7.šxóìò?~pKù¸‘YÎrGƽußs¥ Z½Wý+®Ø[ìÝΌͪ6úF=G½‰Ñ‰/Ø÷÷ç”k:-é‡r^ëǂÃî‡ÝáŽÎâfå,æ—ç|¬ÿ0¤¯—''eևæêg[ççåÌé·4}uúæ Þ¢¶T†?F¡2Ë㍍Ïz)ó¥ۜÙº7óÞÐ_2ÿâ£rž!+3+Tfˆ…jäCUæðÐ-†Y¡å†;3×Ögî”wvgÚÀØ6ð™|È#{ ÎL!3$XìšìV<ØB7^èÞá&î#dò~Ð{Ëü>ìË·3h$¦ +c”7£Û¼µ¸o­8Ž»°ˆÿÁ*Þ23‹Ùü<Éým…]ŠÍsÕ‘°·?¬süçü­%9žüwSÒ¨fBÝ~¤ ª×vr´C´óÑEtû 9z¾!z& EÏÀJ*ÍÎzø҇†¨Y›„k³•ey@êÍ6+MRLÖ2CÀZ&kÁDó¾TŒzÈ3”ÉnleWB÷9˃ %™%@ÇQ†á™Õ¡ò󙲶»žtð/ï G´oIl ¨6¹!ð»ËÉjœE÷:Fã€wǚ\s]¬ókV~û<¶c— ž¶ÝsϽ£ +ú Âñ“KL ê×ê‡øÓ´GÖ.å³ö2yù‹M¯Ìþç[†æ%™e±ì‚Ù·ß°âOó1¦üÕ´E§¶ºH H…l!W+5I-Ò&Ià1G²Y†H”\./»’ZB8_‘y!€ ÝL¥I c¬%M¤…l",ñˆ½/¤fe|Ý~³Rž<‰€ÇˆYUgRÚ¢\óðèñõ£ñgêö!u,ûòŋ?Ñ ä‚.ς^yÐze +’`!"]+^+ 7H“Í›Í[,[O:w™;?r|Î_àu½#"dÛ$½.`8IÍ]Í­öÕú}L“¯ÅG¾B_«¯ËÇú0øŸO¡§ËÃx¨ ðþ¯nu& 4wÔ´À”8µ¥ ֈÙHB™t+¦äQœ£³m¼{E‹çÞ{úÅw?^aOóä‹ãƒ¦Ü6gó‹Lô’ª^üdsý´''­¸@O† 9'ÂøxllG énˆµLs &zǺÄñ‡äcöcŽ£.È2n ÞL¶±[¹¢È _ R7§Q\Šrò¹(̏B×ò7À,2„0²Ãä&]_mç™é ӏDêõ‚¸äŽiô&=em‹W²-ìgl7˲X§È+™æ3¦Ü1X«¡8G°ºç\ˆ1öWì9à +k8ßÐu÷\¶÷{®¶ö¶e»ÚÍI+ö °ÁÍiÐLXM•!ð$QC0éA]ïy\‰o4¸÷_ܑŸ^a¯ù±:õ+n‚¶0DyÊÂúäñì™ÝËíöJÏêþˆßøt[ñcÌÜá é1Ýnü,#y±CÈÁa¡O`Ösë%)†‡Ä#عŠ½N¾Q^Å>(?Âî[Ù÷Ù?ˆRvü(û¤ü:û¦|Šd"ñ:yˈÂDâ.V€€m ^§ νã9&|2‚Õrì0¯Ø1¾†îó·‹^ò½PsrIŽª,]J é)Y=”®ts!ÚÑ É*¸¼Ïp5mM—ð‚|ŠÄX*å“ð­Ã’%&„GŸ« Iææf´hNҙþáïÔÁx +ã¾A©'Õ£êÒKŽ«¹ø£ÞA½Fü“JuQ¢GÏޓ‚‰ëUôø("^yØkbڙ£ù T@ï@0°¢mì&uþ¡CÔF•ø’íÏE!T„›•¹‚WLãҝÞѾ‘i£²ÿhþÌ" ôT{nÏöÌ ¯ÿÊó¨w§·Ó÷º÷ Ÿžç 'ïqFø\G½g)YMvòù×xý‰ØÇf’žU4ÀÒϐ¥DûDz”ÌxxÒc ³.e‘¬jí¬¾ÐhŠ]“Žé‚xúélzz?\ŒÈ¥–:A“‚Jš¥"¨øÌðp{cÁ²ø +è r?jÁÁ; Âk B‰~PBQ캌a1WÊ1Ôûõ;ô|â¸ÅŠÑÓ{ÇÅp¬øôaºPŠsƒS]ø3çšêZèb\žây•}{]0±Í= t+)šLÑä LˆHp 5Ý¥Y Ñä ·¤ãæúž¾å”Π/=61kfiˆÖÓó0K£9)\›ètG@¥Pó„±;]AÍRäAhQMS:°4i$bj£;è1›vÏJDß=y¬£†ñe«_ëÌ3òنgO~òW¿¿®vaÍD|óÀ¯³J몮Ql֑¿öâ±úu‡ÕŽ¸.­Ô#VW·­òPMZv müˆ!ê»Ö"w¤|Èä¢piÖ, ùà†Ç4ß$ ýºY•º²Rßµ>bÌO–';'»ëÓ¾øvˆaˆ­Ä7‚­1ÔØFø¶I²Þˆ F^zՌìt.l: É® èmÊÀæ\„Mô*¶7¡º¤Ò+’ôn.ÓÓ[þÅXðY’K•ìš%†×)ºÙüly¶s¶{^ק¶ïHÏ"Áª‚E6ý—ý³5Øs_Û˪ÚÛyã~ŵ¼áþUsf­æŽôž{L=«þ žS?¹±~;É{n\ӎ½‡žú5•\“`ì°<è/Êø:S½µÞ9×4Ï:Ïy{¹g Ù¢Íüšû#ó‡î¯ø¯Ä¯l_9.ò¶A¶AŽÑÖÑÎjw½~ž^l-u–º™¥ÜRÓnµig·u—³ÓzÈ)5õŌšÈ¶ÇŒÅšãɈRžŠáf‘ 4³ZtH¢Hr¨xðéP,¼ +¸LsqhÄŠÔë‚v·®òç3݆1=QpMèMÙhò„`RÆ4÷æj\5°”£L—:Ïe¨7Î7ókg;°=zþ_©ÇΞ—?'ßM˜øȞãÛo\Xð»—A ±XÀÙ»¨™´›–â›MJ¾µž¯—ë­InÙ +¬qQ’š2Z2È`&¦ìˆyF3Uúю*Ï6I²k좣\£u‚ÑS!»r†0¦œb2!ïFÊ;Aѓ^W~y„Í’£Ù+I¿]³÷W óøyòüv*7Ü°¾Љ:”¢,Îc急žmqs"{ÂMN ±[£Í„ÌFýµ€]M:ôš’wßUÏngõ«WMÈzÕ\6¾æÓK‡™QÚÚWdzšQ€Ç*ӗ¦¯I'V½¡iÀjCË6€Á«g +q1)f<œ gn4ÕÛë³'çN†©šoºh¹h³1;‡ä÷wÖY“SÕ×%? :[§7èòô†ˆÑéräôàp¹³è +8¨­ÑIÚuú$ÌÉK.€Pvˆ%‚äðiŠ*GŽß¡À(çS‚ë‚ÛÃçåêÂ^7:’Çãõn€€êPdTœ´z +/KŸó)ùcî1÷žéSV½çS{£}úiÓoƒÉÑØ÷çM"Ñܧâš5¹ešgŸ—='wvt^Oµœ‹sºúô~ ˆ°»JÀÓï&†‚íŠû7Ëq¥˜ž3yAi¶Í°¢ëÃ{¦c|â÷-XÚtt£úÏ¿^º¿qÎÃkçκ¿:2ȑtÝüä 7~€uØûÛÇ/]{ìÈ-åÉýÏÿú©ß<×úk Ö¯Àû¬¹îDmJԄý¸ŒN¤yfù3þKçä²He®…ØØ쫍±l¢DMgI–íىN‹’Ȋí“pB™ÞÍ̊mr·ºI“ûœ›|ëÆnd;šØ‚²­|΁WE’ð͋¢©ã_ˆ]H¥4ùOmï ©K3¯Äòԕ%j d°rLSw<â½kOÛ>.]=Mõ‚bõ,˜ŸïÙ´vcï#dÀ®)%UëV÷~ƒÞÖîkçªZډ$z’j‘+©V"-R\ê’NIßJœ_j”VJ­Á1¼€8–1Ñ{jôü”A `ñ/°2@gj¼̊±15®ŸÇQ¡-ϟaq.ŠÒKÏ8yqY=‹=ì!̪—~͆úü”§Õñx§ÖCÚ Œq +a!à(¹fX9ì³Þ,ý{X?ՌÍK&l3‡9ïFjc—¡Ø +ÏãtºŽù(HnÙÝÔlbϘ3î±Ú6\Ê÷nèë2½IW|U¿i¯»fÎFJû¼ò‡°§d˒¼iƒØC¦h©59˜M?ýôö®›M¦s,—»ùŽJÕuÀySµSúQÏôÓvƒE;RîñäÇÆÌØøˆ4›ß'ŸßÞ–?‘å L#C ‚[ªæoïà¹CÒgl{‰ýŽçÆ +cÅÙü=ìƒì“ìvî þ á Qö³V>ÊF¹<>OÈ 5l '_>§–%†guËӟ ÐSh™‘eÛAnS¼\Xæ°0Ë@ta܂°:ìÑWܕr´3hó…f7H +êq÷mX&OÚèisß3ÚmR0u±‹¯¡E ÉSõ¾³Úu؃Gá)êãøõõ»û¹#—.à;Ô»{oƟ®S_軯ñÀíô_É¥<ÊÕr¤…‹s]Ü)îÛä‘ÿJ®2¸äw°Å1êãFðÿƒSü—º4Ÿ:á_¿¤}éD¹€ÝmvÕ;x§>ÆÄĘ;ª"#Ä>ÀäNs[rwä>ËïvêòõñÜS¹Ý¹F”[[ /Nä~–Ëç*Þ´X¤[´—œdo:U‡m²Ô´"+˜-–ˆ/--‘aI™Ìa«E™RÒhÁ atjÅäõ…ÓÓ oanLÃiw ;ŽPK² ¡ˆf\I*¡ß(Q*!”CȊÄ"Êàkb‘“‘Ï"Œ)⏴D D +#‰ñäü­¼Ï9Lm%&u@ù°c@Õ^hnˆ–ÿ,’´Í–äÉ@ßm´EQªnqÔtP¿Ï¥y.§&¢"—EÔÏÒjf6tÍÞ\XýôMKžÎ™•?dnõlFÅÀʹùêY6üÈó'Mš8õ¦ª­½õdêoú—Ü°Y%¤úÉ)ýªWm뽔<ËgëaΜh‡âl.Ûq®Èv°fË\%V™¾2s¼&²-‚ÑÀëu:0Á ;‘&²NÐúÿ‹È–ua½‘Ò×`Ð_–Üz|ŽÊ«$·F©ÿÞɅÑg½¯Õ‘@€³õêÙ¬ñe£GArÞkxbœŸd¼0kPíª6Õφ·>wÕ]T^_vù0Rxq[”‘_â³â÷¶ïìëäKŽX=œG"õæɶÉÎz÷²•ß*nÑwH?r’>ПåÎò_̻ķÉñ¯ˆ¯é¹%â:~•ÈX4.Ô¹(‰ì¬`/¼¾&ñƒè*·+é¼&‘>­.Í3Ï_dž›ÅT¥ã[̚¼ZLg³¯ÐßׯïÝþ?8¦¾ùͯÔï×ãÀæ |Á‚Í$óA̯W_ÿöÔWV%vÿf÷îÖí»wÓñnPoe·ÀxÍàw=¡ôdi#ÖSf(³Å|UÌ(Ã([•ïŸD}÷>ì‚ðƒO„õs¥ŸîÔéÌ&cŸŸnÉ5Ma³YsÀtÿé)‡‰4Ÿù_]ӹԎ¡¾úþ½q頜ŽRÎ:uÁ~õÌ¿xK'&ê¥Îºã`ŠϞ~ßêsÖÂÔÖÎTÿ¬öªԏ«'õ~Åt¶ïýuû®§wC®Aˆ)Õƾ[ÉÙÂaɈ'p³¹%S`­3Î56YYY¢§xd£>¡'úqz¢ï K•\Aþf/ç É,JM+yWZwXÉTëJë>ë)+k5£0f´ñ҂[1ÁKE'NC}Û—ÙùՋšy ”î.+J’¢ÕÄ]èÏéÝÓ¢AõÚ/w’”HÚ¼·RŽ>¿ª±þ†k¯r}Þ2¿ªä»þ•{Ôÿ1?›aŒyäe¥‹·ð!1ⲸB[­[í["çI‚½ÚN¬G Æ׃Ÿ‡..dò¹†I†Y†Çu[¬»2;õBeHɪ +Ïɜ^c]c_y–TÁWëFƙªƒÃ2…̬H¸T_¤'!%Y/s)è6Dô™™™!!+Séw»~™}¹ãŽÜ%yk«òžp<žw ó@ÈЂ7ºtoË{>/ޏwJ0s*iþ˜ß‰?W¦X ÖfoÌ&ي;=–íí§]e©[ÛöÃýp¿Œ`!Ø Å8ˆR’9yU®Hê%z‹Â]ÖAI~ ¤­¶#—’ Ú½`*‡{Pê8§„ǘÇNάNÄõ®™xžë–±‹°Þ`&ɱô$Ç;•ÅluŽ®Ö‹½Õ6|!ø£fy_hhöÑç·©'ìHÂLíp.‹¦»ÛýYÉ´Ç«¥DæðÀÌêÌ­†Ç2_Í|?“fê ,ëE)_S¯¥Ý•_SŽ­–Î̎içmé ûNž¸±¸ŸÃ ÂfíüÕJڜPce bñTöKèœ +Tí,v)P¯KJ]JIiÌEw\]Jv.< ^“˯mn²®I^¤·É‹k½ /I ^;‚Ó>ôoC3½Ñ»(™L#uf–ô›áӐ¼½˜•xS‘tÖ +S<€ß2”éíú2mÓÓS¸¯÷ëÊPê +Z=êûý-U$ÉÒÎÓ¨ö»ò8þ&ˆZŒ…Øk]0ã¶Òl»c”ú+>ùü“÷sÔï-SëÒÂø¥úºóß~܋ ¢×OÊI+8얚¡“·­?öð†C‡ù¡ GÚìÑ5«õnÑFõ%y„û5è„?(¹.©œklm¬7 r3NrYmvì²;v3’ z7%· ¹Z]qÓ ËŸÀõns`*2ۑƒþrt±bÔ뤹÷;UûI «ä¸™°Ë:ÉQaßaßggí-öMöSösvÙÍvú#Öîñ.kí3&j⥠'†h÷ùí‰.z$w)y"g>¯yî=Ú/N¡èÍÐNyî Üt»FSŸ:겄JŠK²-äÎ.]$-2Ú=ýîëî,ÓI÷ދ½l¸[x_4Í÷I^ñøÇ'»ß{V]ôy¤Ì6 öÁvÅuƒeŽe3ÇH¼‡/'å–Rc9KÍ£³°:'’v»,ñ6{Øá@T@š•Ü¾ø?¬I¼lˆøœˆÅÿݱKª˜³’Ûxá0=ܳÿ|Înj||Þü=×aÿúŠ‘‹ò°gǤé7ïÙLZUw÷¬!㖜Á]à*Á8u`Mqê°Oqp9ނ˜@<}ˆôÆév€š“ðŽ=ÁbžÑ‰¢¬×'J¬ŒWòʙ(_÷ºNkûœâLÄdÄéìÈ£ËFyº¬[ƒ¤Ôo6dlÐkué$WŒÅHÂ<’Q½1XÕ.-ø«ɬN–$B0q©Œî+˜Îà×ns³—Ëk–+äqÚ§BEǒ2[ÁŽcö)­E1éKÐßfaþÕÖÔAUÔ=¦§4UƒGû͉–ÖìS³vC´¥¥¿&K^¥?qÑã8 ‡Õ‰8òÆ`o4¿…ƒ*P¯÷¯G8óóIF’¦øƒ€¦zü©2(+#žÈ'ù“d°Î+Ø¥ Ù¢×[£L”éʘ2~$3’ßÊlåµ]qei¿k„:–åXI'³zò²NÎ.yd‡^B9l„Ë—räˆ~*å†JÕèZr-7R%-EËØ¥Ü2i™¼T¿­e×pk¥µòýÇècöîécùý×èkö wFúZ>£ÿýÀ^à. +¤ä úüÔ‰L^íFP0yíНBS:¤°, ÑY£F}ê¦gr꼬c¹@GbL;/K¯SŠ¤£G³z†“u‚$ò¢ pɓ]^»í‰äc…‘aVÅJ QˆvÒAPƒØcxµ{“Ɔ×3¦×ëîíõzzÝÉY¼|’kN}µÑ]¥²äµ^jesQy}@§Ê`˜Û ôû"k¢§9ç@X3IÀÓ»:šêîÝ©»ÃÚÁ¯ÍFÿpap½ǖ×cÓþ·±CÝ«þóðàŒ‘¤ƒ†Ÿ>!{{'oèa½5jëm«²!Gxƒ%[…Nü'üpÎÀ‰‚—uó9|)$ŽÄõøn¼DÃ8* ă…jhŽ6÷5'c}û‹®²Ë‡ÎÀÈt€ÉM픙ÞSnn^Dšcm^1U=^©>‚o8ö­nÅëÔ]§?!!¨ÂYªÔû¥¦+Þ¨Žg¯‡YµáØk‡mtèn½)&: ¦˜@<}pNÈ£÷ð?HRŽçYƒÎț ²ñ¬°ÀEtƒ» À¼Ä ÉP`ÌAG¡£ÑÁЍ?ÍB +Ç´ý@kZFÌA︔1ŠÛ£w ;pD‘ˆ–"˜Ð”—!%m`,u\o5¥a£ÉkT&zÔZôÿµwu±Qqü7{ÛÛíÞÞíÞ]¯wW©´×ï\Ó®ÔÐJiK?é'åT-ÔV± õMê©¢ñA /‚-…˜ˆÑðFú†‰ñEL +QjJ ÞùŸ½ëC "ñɘÙ_~ûŸ™Ý¹ÛÙ™ùÏîÌü;ÌÕüVy²±õÌV)R\֛ÙTk_0©ÞF ô¢lâr‚r+±rÁf2k®]jÚÌÏõ.§{‡×ôiç ìHãy¸\$j ~²).[^¨¨Èúüæbáø=–Ÿn*hœêîé 6V>¤å’~¿/}}"äþÁ91ÌS?D½žï(õMÖqɳ$3Òõ•¦»Jc´S˜ªIwÙ=Mªu´h-ú’Æؘ4åQ¯Ë×ôÛòº¬•ËsʗÒKP¡±>Ò²©†båúœÕĦ mFþ˜̜Â2zrXøRº1”‚Îe}×Ð ÓÈ1*ŒzcÊ°Y”öW¨ß$y5‚×õ¼«Å‡FÓo(ºŸûXx‘±¿ÑóuÒóݯN®ëù¼s ›«¤ð‘>wxgKYÉP ­¢° RÚk/q4ëž`cíöheÕ֎Nóß5þ¯m2__Üâ¥ÏÊ6¾ +ÀŠµ7ô‚dzÕ`z±»áC5Zя E؃Aäc?ºáÇ cÜc'ZP† !€6T ˆ ]ˆ¡ÅÍÐáA¨ÅvDQ‰*lE:‘LXFG%ke\>| ãc—6>ø~ì7gðˆ›ºÑ»‚•Ä†€”•L;Ÿ{–¢ÅÃy‡ˆMá;%EqNygˆb±8B|T¦]ˆïgÓ𞼌Ӝ<œþëmNrÈi?“$?°G1Ìϵ$?€6ŠSJîSäÆ?QžHüš$Z)Þ$ûIö‘l { Xîe¼›º×³>ÍÝJ6ŽRøIb/ñ-N[¶¿‚âm&ÿ;ävÐu¥“Ô‰.zÀBÉòøÍ2_‘1yaaþòSFÝ5˜ÌÐ3ËuÙ\.µ5w­­ÝÿĚoÍJåçŸ[#¯) +endstream +endobj +220 0 obj +<< +/Filter [/FlateDecode] +/Length 2982 +/Length1 5464 +>> +stream +xœímpTÕõÜ{ßÛ}ù"›B>À¼õ‘¤É&"B¾L6Én@VB`ì‚»Ù„$$Œ¤ ¦0h\$nÕ«­ âÐÊÛ`ìÆ*Äogª­£5Ó´€+ÊXÅRȾžûv‰„:Ž?;µ÷ì=÷žûιçœ{ß[ =À a¾³¨ô–ü¢Å¾vog„N‘TøºÖÊù¯ßŒŒÃ¢°¼³µý†²S çG°ïh]Õ½<¢ŸX‚¨¿­ÅÛüç=Ö{&ÈHÏlCFâNös€¸¤§´µ¯]Ñ? Ÿ|U‡Ï]ÿÒÛ½ë:iºaêïB¦¼ÚÛÞõï7ˆÒ:;Ö¬Ð8’;oié\¼ûÉ*ÔGÿÙñ˜.^YØ'±!@;íÇÃní´x3(á•ÚáÜD\ý\´Gš²áFȃ¹ð +œ$`H{|ࢷA!òïƒßÁ| 6h +dÈÚ¯à^ȁM°J… m®ƒSR"¤Â(#`@7[áQr®>£fÃ=p âÈÿ†” „@,܀Ö„Gàüþ +éøÄ©0LŒäí÷P Nôa= ÂÇb¸ÆÃ/àiØ /ÃßÈT²‹|Ê>×´·µ¿ãª<˜3a4!܏¡ÞÓðª°'´ m½öŒöLBï÷â®_†×ÑÖY"“ÅÄGŸbÝái«µ½‡xô½G¨ÆÝÔÃZx5‡á<‰AØHeZE}á$m"! d° ‹ î€^؊»xvÀ>8EªHy‡|Nh=(6ëõ1G>ÐfkgÑF<˜ÑÛ%p3¬Ã•÷ð W>†¶^C8#d&)'•äZ²ÜGî"O’R =Dϳq,‘07ó° ì;'‰#óÃÛÃïj Ú:Œ%Á˜Çb&kqŸp=t¸ 6`µ÷BB£·AÅxDx>‚ONÀ)øŒP"âcI>Â4„rb%sÉ"ri%kÈvò< ‘äuò)ùŠÎ 3i)OÒVÚI×ÒUi¤Çé?ÐË2fgk؝l/{…½ÅÞc + ̼ +áVáAA>Î_ aDaªèwŽ<v„—i9Z¹Ö¤mÕ§0ÆWànr ÷ӀYõÁr¬œN„Ÿ"tcì6㎶Á£;½ç!/b•¾‚ù}ޅqÁ1øÎapøþ&3)$Ó1¾×ÙK1O]dé!}äaŒs ‘øË0îp1uÓiÝ@·Òíô:H‡è0fBcÌD›Íl [ÆndkÙ6öû%{”í`!6ÄÞ¨P&4·›„€ð¸°OxSx_8,NËE?‚*ˆ/‰' ɆLà ƒÓ2¤n餆ýð&a.k¤—˜H~KN2õз©‹ÆÑa²QøÉÅ Tû`5|‰N&ïÑYd 󑥿d9Y¿f“Øãl.¼-®&NÖ@šÁ)l‡ â«àý´ŸQÑÏFÈ9ºÚ Þ<²[s“qà$»èSX1·Cä 0LK…A’MóèAã³$•F+eeR"R»Ø'è¦SJ$Ÿ‚—ÃósÏÖBúÞ 'Èaã|ôn„íCÛ¡’ì +'ÁnÑM=dÝE®Ù4òöˆ¶ƒ¤Óc#I#Õ´+n‘¶‡€/`{øœpÐC°o Ÿ~r¾Ä³wÞ4‹áMÀóäÄ{¤Ójm¬ª¼¦¢¼¬´dÖÕ3®*ž>­hja%?ï'¹9ÙS”+ÍrÖ“'ef¤§ML2>9ɔ8.!>.6F2DQv¥Î#«9UÈQæÌ)ä´âE†÷†G•‘U7VG•=ºšÓÕù̱p4²„{¤\‹¡Ê>=q)¸§ŽZJÀï+A5ln‚«ÔfÌÈ +5¦Öã7•q>_¯ŠÙ&Eö XÊéÏÆr¼QŽ!Ûô5ð)¯“ÑZCùŹj±¨ùù¼DŒµ˜Sô±R§¯.,è +Ñj¥Ó$ã€áƒŒ­×]V„á7›y‚·„¬Ð„„Ú³À¡ehÊìk‘Å­R— ]”LXÄ%=%£Ë= +VòsÀ?Î&¨RÎè/є:ÞÞV¦’Ôï·Dä§âX°Ô%Ûýžhlc¨ˆ¼dT©ãk],“Fg4“éR,ÊëG•9áŠW…lüô¢n%¬JCä:Õä™ÁîX³ù. +igø*}øvYÔMµÌ2–.Cq/ÞÏÐa!‡:—úý±cdxÀk‚ +é]´’^çR×  ¿{]ý”ÐZO;8e®Aü`µê\:Êå”Ì)p,Ø~*é¢ÌA+@.t†NûBtžt‘GÀ¢žIça+žC).\‰xqxÒI=«—¶n3„ozQ§)˜ ¿²>×4Î6&W§Ð\„š$ܤãù:®ÒqÇ´¨¿(++D§öïäCAÿä<¦XãŽfdMÏMΪÈåôDkùª¼¬#{Ò³Žbߛ[œÕ[Qœµ {ö.¤¹^¬ŽÜŽöŽ»:îfAj*ÿ0O’¬!òÉó‹RbRbfBä µÔxÉØo ´ÍÆÀc Î˜i L5,Æ@¶10Ř"%K&iœ/ÅJ’d‰J ¥„´#V PŠÁăÀ± ÏM”c +z)‘(~’«ã™ƒ:œ5Ä¡ùÀÑ$«gJˆÄbuˆJ Q“àh¬ISK,ŽQ[¨Î²8TcÃ2W>7rUڋYkt…ˆÆY›3ùE<„h›·fFG·R»ªÒª’+“Jël߁1Dšø#ó¹Åú¾ï°ØÇÅõÜb·ØÇ-Ö[ëu‹ö< ® 5n¼0ôq?‹Å\x2ÍîšTSg¥ž˜rsÚ™/@ž8¼?ãñ]œ€‹ +« «¹ †‹Æñ×tT”vG¹9óòLTdBv’R–[-—µ5¼Aš}…wôdP¢=ýÉYÅ·…ŸÂV¡$ܕ[¯0}øµ$ +>±ÑÇ͈1 +>éR^Iš¥ÞôUż‘ŠzÓيy¦‘ +¨ª©à}ú´«’ÌIÙæ$s«d6tÁ*Ây…!½´á}zˆ= q`Fž³Ž‹1BF‚!=>á 3¬¥þ¸éTÍ;=}I1(Wæ\=cæUÅ©ôÐðö‡†‡Ú>L«#ã°~wÿÈÀý_‘û;rç`åðû+»'ë.ÿ‡ó#k\©cÇç áï¶æ—>DâC ãǯ}8»Û›:Vq}ˆ¾H“Æ’gàŒ6†} ï@ëÿûÿnÇ{ueä ~O㵀•T÷½pSbÅ×ÒäHñ<1çÅr>¾<»TÔ´p¥tRŠC2îbíü­¥ +endstream +endobj +221 0 obj +<< +/Filter [/FlateDecode] +/Length 14298 +/Length1 25516 +>> +stream +xœí|y|TÕ½ø9çî³Ïdf2™,3“É> ²˜kH !`’C‹ÙdkC«â®­kµj­}j«a‰¦…ªEÔj¥ÚöU[·ªU+H-µ<ÌL~ç|ïÜ!€¾×÷~ïŸßçי¹gÎ=÷ÞsÏùîßïùދ0BȌ¶#µµÎ —!øôøiѱduo¿¶¿¨!|xÉÆõþ\DhÃèþËú—¯~ð•Õ³"ëéöÔòU›—içËôº‹¯XÚÛ÷ÆK ´„GU+hƒ5ßø#„„RºŸ³bõúM‰ûÑò‡Uk–ôjû¯#$õ¯îÝÔ/Vóvzþ\Ú迬wõÒÄù<-Òú׬[¯í/ãýk—öËýŸ©ô|6ž1Kt +'…cü6>ÊýÙýóè»ñMñ¾x÷ä£×܆ACèzéŸaô üoD{Ñaôûùúzý½>K¶ÝîE¢Ásλ ZD£ÇÐ>ôz–¶íB7ÓÖ¢9o ډnDw£ûÐk83Ñö,qbm#9†×ᐣ´­CßD;踎â´mmk£­kÑ&t mBGхŸI¨EÑJtÚCÏø9´ÑÖ¹¨¶²6ís9ڂ®A÷£¡§é¸¶Ð‘ÝŒîúŠþ¾E$€Ö£è•/âï’#tF?BW‹Nd p?Æ ÊG¶hô]„â}£Gˆ[LN‘ÈÍèq²ÍP]ís««ÊÂãJŠór}·ÝlxRìärƒÁÞ»ý+ü»ƒ = %Å-³;ҁ®’b?mnðâãàԍ+<»Ù ƒŽÐ ÉmdÛÊAõÚZ 6z$å쑃£‡¯sÈÉ Ú;ˆ®õï)>¼ûºƒ6´¸'dê öõ.ìäzé½ö :˜s;٘ØÖ³Â?ÈÓ«¡H§-‰!²c+zhl W}e;mV¦tî NtÐÿÆA{hp=cږ÷ӹݍžKülw÷îþÁûfuŽ=`eWW—ç0L NíÙ½{jÐ?uwÏîރ£Ûý¶àî=--»û{üƒ¨­sÓö§®Mœz]× ­gžH§Ìæ1uvg$=`§½l¾×TÑbº3¸}V§¶ïG‹Ó÷"5ê$=ìÈaýˆ«Ù®I^ÞXOéäÒ í¸eN°eÖüNãîžÄ€-´½=Õï â]³ö¨xלùC”1ý»ævî%˜Lé©ïړCuùR¡•°VÖÈvülµ` +Ž½D†óӇ(Ço‡£<4Àþ’ƒA›¬·a´ä ÑÚlz¡m¼Ö¦BûÐɐ)s;ǎšnl씨©¼”ñÙ™Š¿Ü»Üx+k9çó$kឤ\)¡K‘@ïaCaʅˆFG©œÅChîèa5koaY•m¯¯º·moÿÞí{ïÛ;¸÷Õ½ïì5Þ{r/¡ôªö?‘ê©ò5`k‡¯ƒ´¶w·“5sñ÷ç>>—Ìš“ÊϞãæçÌvñӛgóS›«ùiÍe|ݚ+køºH?)2‰Ÿ ðS"™|}d6ÝTºE*Ëø²ò>¾¼²‚¯¬˜ËWTfñ¯V¼Sq²‚;8zbßþܦªƒ£ïìÛo Òÿªy¿b­Úïmâ7îÛ±ëä¾}pÆutŸ’SµÏÙÄ_³+…ï_Õ¿‰X¿÷ö½D½ÇV¥~ϝ^¥ÞžJk·¥¦Wí¸:Åg½ÊzµõëÖ›|WùnðݾaûÕÛwÝxóMWß´ó¦]Võۊ­ÊºÖ·–¨—+¦*ëjì?ŠýÏãȑώÿ/Ô_´£Å¶ÅDí½¯—Xঢ়/væò!g _äLá .ÞçÌâþ)¼ßYÇ¿àmä½éÓøtoïu–ñ.z^ +®ÃéåítëwbÕyє*«¥È‡Dl~¶Ågz¦Åg8ÜâSè& ·øøŸ¶ø¸¡yªÅ‡´øГ-¾gŸ)ò>Täû©Ú1ð=5ð=y à{æÙç̇ÿÜ<üӟ™†žzÚtàɃ&Ûðöa¢m"Ö‘­ðÖaZ]C«‡üêÀèÙ Tó&3¡ò##Ò&àƒx:ZPËÜúÁLÿçÔïQÊB-ƒ}³ë¯¾þúÌÁÛ(õnÏì:(Ós(¯âºå–9‰* +±Ïºõëօ¾â3È5Š+zÅ`Ã:¶ca;*q,ƒVV·BxÐÙ¸bÐIkt²Nÿ„Ö%j7‚møª{²±¬§%=N»HH¤,BÿœOŠ„Gl ¿üǗ¡_°ì¹´Àô¬3Ûô%ûG´Â¸ï‰xg¥Úƅ:Ô) +V¤4œ&pB+n⚄V©wKkðio"›ÄÉ!alÚÂc¹”ñ¥ÕDÝn5) +-}ü.·íÔñP¨<­‹¢Hd|)Žâ`±ÛÕå.Q”Dâr:RÝîTÎúÁžçžÛóÁ¬[#u-͓ëîšï{ ¿ƒKè÷— ͇¶ÆÿýÁGãïoßú|#ç­ñ>rƹR­91ÅŹRòp——’皆UNM™æjãÚRz¸ž”Íh#éçúS6:]̛6 ìˆð˜çGOígfÕÊmô!“ÕJÚÑ-©¶/BçÝF¤`eUUu•£²‚äçååW–»ä8øÌ»k'7OŸ¹u©‹¿÷¿dh|~ëvœñ胸`ëÀ¡fÃKq?Œü¡ö‡*Յñø,£|pô#ÕÀ ÆLp8:Ž"ôÚ@Ð^Ž?ýì3z6}/þ*·b€CUj.‡‘€Ý8O@ͨwàåø +¼°ƒpa:Fl(ŽÒ1ì<Ýy˜Ns cå?!/ŠÎÓÃ5‚ ºfô]þFá3dDAô°š]…kŒ¦ZG­§"«7L-ŽOC–ÉÕ¬@3g°=½ßh¬o§•‘ý&TN0™(ý§û› ¿ùF#­yØ!to®5חKÒevi:Ï®K7±#é‘^¤¦°«D£ÑÄ®ïÈ¡ôbŠ&k* .Œ0~FÖ¿WUUVäQâfS]N7%ðò²*þÆ/ã§ã§þq+ØôøÓÒr‚›»mÍÉNsç6÷-ÚF>Ž¯‰_ƒ·áÝøz¼5>0òĬ7ïºã‹g^|qëô7|ï×s.ž}1EvSʨ~‹¬è)5Í “°@i¶±©X äDÌæúvªwFÔV¦Š¢‰³pMX¶Ú}v"Ÿ[­& ÌÝb6™Äv‹ŸD¸5\?Çq&›°«ßQ œ›Áƒc°Ìd0á²ØUœh¦ÄÙÌf‘–¬.¬ ¦h9…RMY8.§<+‹”‡ j”íÊ2ÊNUÕåö_7ò®Š¿¹)w\%7.½ƒûp—Ë™6ó¢3ÏPú¹ŸÎùfá$ò£˜:«Í×ã#'Úݜ˞c¯&˜+-‘ÌHV¯Eh27ZZ3[³š}Ý\” + ”{wÚ¢ôhFwfwÖJ®O\j_ìZ“ÕOÖÛ¼Y¹tRígc'Œödz²Ú¬%r8£ÔªZE« +¥šè$Y’™Õ8=…ßt,ûˆ¬S¡Ì@ÆŽË77ÈB7Ïæf Kc=¹Ýìn·ÿÞlk¶/›P@ß°}A!Å +…œ£€v¼œµP¾¡ŽR°1 ĈŒQ“GåLù2bc¿óˆí’×¾áÎk¼¾Ô0íøš0*Ê¿¤åÒ÷—pcó÷w=õæÀú+Õú_'þñ§í·ÖOÞÔ|É/æRÿˆrß6 +ãIè=µÓhÂ^£+\hÌ ÖÕ+ã³+ÂӍÎ)ÙS¸Kè2¶‡W—…WÖm2n ¯¯ÜZ筘Ø0‘ÔN¤°Ç%öRRR8ݧŒ'V³ÏLÌfûtÅÔad°Ê`° +ª«yFJÕ"ƒMuÖ8·~¦›™ÃÎt¸qY©Jç¼@{& ·û"ֈ/BLwM¶}µ} +ÙSkl~ápX$b0ŒF5ì/«©‰2¦u»5¨³A3&­N2o°’îžed ̌•Ù5.·›·”Nž>¥å¥ÍÛNδ¶xiä†âq%å%%ۧϟzÇã +C‹'wÿ¶›AõCSš¦?~Eé6òrèÛ˗=™:¥6xlÂô¢Â╳Ú.Éò¥>4°¥j–×ël˜|,X[P\ºkÁ¶!E.§Ú|>ŠÍÔãcځ®iå¯Ð5«d¯ª¥ ŸX(TÕwAÌi²§¦QYÃñš0¹4¥T7–ùp‚Gi+cÙm7ØBs§Í}áîØI<ôƒ¦Ïž¾jþíÅ÷å„w,ù£èeápþ@Õ´ÒkÇ_Àâ·ªœP_\óHuýá˜'/´sÑÊï–Ⱦ—_5=5ÝŸ’•Õ»kþÊÜ4kì·é9ù}ÌjZ7ú0Uø¡kÕËlVD§§+NW®«Ê5Ź@î4tZØôp½Î~²ÑÚïLq»½RT”W!Üèòbk1¶ûŠÃőâ5ł`î[Äï2™ØžIf{&'»)ƒÛ´"¤AŽÂÑpˆ6¶1h劚<ËÉÏ#•Žêª&³\Á Œ‘êrajuWÓ¤;ˆÿcqϪ‹»±ùÁMŸÝbÝúùî˟˜Ö8³}ÊÔ§WÜxfµe•§(5%}Ao7Î}æ Îîë]6±ù/Ë5Ïlùà¶{ޛ6}ÚâŔûÅï¥oA™è7ª«ÆÑ츄¬0ónJÚ©”´7"ÌL55l52uŠ`’}/i¥í™Æ)A¬§Ô\ Òõ>«/ìS©ÞçSR©@©ÿ;ԙu–:ëÔ£ºT¥”HtJäSÝI'AMk{÷ܺì˗ã»ðú70îºã‘_mÙÜyd÷SOÝø›®5kȟ_ŠX¡©îŽ?÷ÛÇO6–åyeQÍ´(-QØñ÷PØѽO*•H´‰Ddâ¡ŒP •„3Tb™G25Ïי­f,*` 81Àë0ÀI`€Öa€uÐÊÇVàU¦ 8´.Z—äÇ˙ýO'ïJlü=#!î7#å¬lŽ ÆW Æ~—˜Í‚ÞKGÎ&âbC!D•2'Ɉk5Ž£¸}]A†úŒV#&LI€) ˜Iø!÷¹Ÿ&k8gblf§BÔÒ¢N&i˜^ƒIQyÂĬdglóîI!_8+§S~ÿ“ðå÷tF­•°"Š–L1Å°TZšñE–Y–¥âRãËzËú kv¥ÄÁ ‰³ÙR+L$³‚3lTp¶-[±`&”§ºqN+q5…M&° +ñÀ¶W|¡sÅûpÅ]r©Ö‚äސgÍSóˆ`è!âu) D"Šƒõª€QLìjeEn0cIüšr +—°Fúåa;ÝϑŠ>![lˆq,`!;k¨ªÛà-ñ·w>kÙò~|?^5€•;¾5¯9ÿ#.ÅbÏ¡¦øådÎeæôôôâà³x)¾gRó_<{}…ñCññ·ã‡ò²ðêÇ4jjo`×^®RfÔä¨È6™È²`8ªÿ¢ƒ“è6#k9À&Nœfz•®òÎìO¨ÅSûPþP#($ë0V«à\€Ú +pNo¢œ§šÛ̜ÌñàW°96ç¤ί¡sA§V!I­t.èD*èd vVjÎcÃ1šRo@‘ºHÅÉå!Í%gtKÝ'{¹P{$–väùóòûX¾p,v41Ú½†šg¿ùrÿâÇ8…Páuˆqz…×í pózø2‘3peX6¯6ÈÆù''ù dzî[@¯œN¯´‡Y²¸çpW''wªÌ£Û‡ààÄÊÆ:…Ôz­ ¸˜û›ØþgŸ%3ž}öþþ;îø²›Î¥xô/ä°¬®V+©«Lå.N’Œœ’’‑ÓIÑÊél.'¨—ÒÏèuBç¨:G½Ai@; œÂ¯Hµ¦bq©›yc؃…1beaÍówžï>0 Ÿ|öBé}UÆÂM‘…«½éÖø/ÆW>÷ºÝ4dÉ*Ê/X?ƒ[z/Í˔º7uKêµiJ^HX¥@™ LWV(»•W$+6(Y8áRƒk”Jc3nV ñRãZ´Y¶ÂíÂG1Áû(‚ee1RÓø*–I‚9¨°5¬f?*¥¶=ßFo{%c,'ÉH0æ,ÿ' 7Iʟëüù×Sp4Z¦®D‚tk4;ûðá-1ï´m‰E=ÌÔ¾|m €% g\Ž… ñÑؾïPŠ~ídl9¹ýÞ¸DmìpJ¬!¡g6RØ èÊ„ã©~CÖ˜C’U·Ä?>‚ïß¹¿iւnè-©mlûøè¢ëƗ„H[lP8,)¿ûŠû_ .ÉÎL½()ZÍì壄úz¥¸~…ò·DÄã˜&¸—Õ<0óT(ÝPºÀ vBpƒje +¦ËN_¡\àÉñå„kä*ۄ”J_UÑt¹Ñ֜Ò蛞ßPÔIÚÓÛ}í%—¦-K_ê[ê ou÷ûúýë‹Ö—ìpÕb«–YA»·€ÏÜŠLb0X*DC °Qò§Àå ã¥\ôµ×®Ë;Ƙª8Ӆ^钍qœjÞ[_f-ë/#ÊÊñz½F £ƒ< +'#MvªX©’U]öy+ìË 6Û7\cßQp»ýÎC´ *tvJ° [ÔFæ“1uú«¬  œÈœ`v"4E™ÕÜö›Û^m¹|ûà˽KZ_|ä®ûÛ=Ô·´Çÿró÷Þ³YýtöCÿ†ž÷H­ÚTW{zѲÝë–,ò:½Î¢—~ðôguş4u_µ"º2ÃRà*ދ´<þD¨¿§ùA&]֛Î÷ƒØW};æ+EŽ“­ŠOiU8´°ôÔ/Tè­‹m¢ ä |²?AûŸ_@û£ýkdÑSTà¼Ï$LÒ ÒH»2ÀŸˆ}z$ö)ràÌÛB`Î`/Յ…t™è„št=“¸IÊ n†rEÊ©r†™sQ’H×g”®;AéNßø´.y?Qí`F€‡ÜztX-„ cL‰>«ÏçS}œ$€hÎê4ýƒ6q¬o™’Þ´ ú4±ëÖ¤‹uã"Ö±I[¥¥•K¿&ö¦/ÜDê47+±PCé†ZÚÉ8&s¸Ê…Âi³f¾rÍu¯N›5íH ¿øö•—ÞV’8B:økی©Ó›fô0·udëæëj.ª¿¨¾æÖÕÜn +M}ÅBDÃCHdü¡ù ¬5[ È"¾?aÆԕ¬6 7Q¹Ê ’8OÜ!r¢“— ñóø<Ç;9Âɸ·N²o#"Ès‘Ñt–„Âñ(ML¬Qˆè2Ù*cú3r!®’kç–r[9‘ë“Øóœ(2òˆ&ݦX'K”^p€:KXX{/~:öÞëø5üõ@Ât{OÈ¢ó\Hݡ뙂þ1„LÔ †Ð2Ã4Id)‹%ÁD% “ä–s›9Ό„ç‰@c*NãþÊñ/á\AÍ\Í Æ¿þe1µ;‹øß~™Å¿GÇ֐ðŒèƒ!ÄQüÀŽ•FF÷Cpö7à-1ð‚ÁË» Å|ÐP­Ìäë \7ß)ÌSÚ óŒ+¸Õü +a¹ÒcXnÜʯ3¤§,ɜ“*kÁ)Š’ÀKØ`‰L§Í"½ÄMòH™FEN“ å¹Iˆ,xæ_˜‘å¡*4 µQZZf–1M,kÄ&±[Åeԏ–±zLá0¥( N£ãÉ…ВBN@Nbq‚?ˆ¯Œ÷ü;‘âÂûøf|—p,æYÉÒØÝä#òqì$JIt$þºàA‘f?€Û… SÏé+†‚—büõMÔÂY1ú.ŸÉo¢c.ǯ ¡,X ¬oÏdZ¨; |0Íà +ò!ÅP–@Ùe™•µ°øKO暒­†-ÎþÌ­Å"L*µ«vb·û匃£/ª©¬›Ö œ‘á‰øùñÉ,[31½ÅO½ìùàŸ.<©a·(èkDwÊXE…e{âE™F$‚WæHF5Yêòõ&Díˆ]‚ +|5QsÀ]Š"êáś+­•¾ÊH%7NWÂÈHc—Œ“Ù%ãÀë'3N—nd>ý02 öf”Ù5FˆíMPÃèf71‚£gyn„õX#ø$ƫǬɍqÜ><Ûd¯±Åtğ¥ôfF#Êi̕«L,?QÕN%sNõW.Ÿsv1±Œb2ŸNk/o™}û¯W/]†³,)*èŸ4ý@¯¡úÕ¥W#õOw|Ü0«oýK¼Â>ɑê;z÷À=%%~9SëIµåç²æä‡Çݲ*žIyؙ’ÚÛÞÓ;“ÙÒC”Òn¢²9ùq£ZXA*­µ®Ri´¶¸Tÿ<Çrǀ¼5ÃdQÄÔz;oÂYªh0ÊN=.ê<˜ M§N#ND¨@Š‘3}lŠÑI]±žR@–ö?ÝÈÖ/§•¿©µ€ù›²}ّlbIWdvOwk;&-T¾‹Ì:P £xM,Ô +Z—…ÎÕ·'t5û£fZٕ AÛýìèß]ó=t†ã³ŽF €pf„ל£„%¡cupZŠ]Kqº©uÊ´G–ußÐhnÝ»æÈÏ\uëìkj[×ü½=¤úºwf´¶–äUˆÎØë͉¿ÿð详MˆmÏÉx™ŠÁKFÿÌý¿ÐÛê k°5HB8ÛRäÎñLĕ–‰îJO3n54XZÝyºp»å¼Ô²¯³¤ØlΈ‰¼N±!R„t¤Kù–ÿ·ÔÙö냩ÀP©`6'ցeRuLhK' à6ʀ `8Ìl`«0+ ÜÉ«³ÇðÀ/±?v‘6 +«´ K†ùíÉõY# ŠûÛ¢‡»7¿ØÔ܆KþÑ34ÓÐñä¼û†žx°fc¸°Ée˜ZR6­©é·bžP•lJÓï^}ñ÷YWØNé~¥û) ºŸ®æÖyK3&ø[½õMþNq…ØoS˜ØÏEËYõ‚Áî+O͏•‹_%͚ÌV¤ÿ…qö/²1+‹†„@<Á"WLîiV€Œ[4ÐsñØ8Òmc2ò §,=]¼È€ð"{ØÝd¶€bw”áŽ2„3e¸V†„"ø†]OË«_)ôÆ´Åtf@:íG(Ú@º³‰‰6eörÎ>qü”áYƒËþeVcý»Z†‡glšvïà®ÛÚÜ0õb\í7¼uñŒ¶Ü|üþ™Qò­lï^|þWӘ¤Z9ú!ßÃoCêõ‹j~2—òµæº¬)|‹¹%k¾¹Í½ÒܓºÉ¼%˂ë|>kÆ$Ë]ýˆå’Q™n”"V* ¸@úiºå¦c4 rCӼȟ\\_(¸1À‘çà ðǀ Äààt`ÁXp€@Ý<â¨;à +a7p\í?oK²hð/ל˸û°¬8›©à¢p÷k1.‡+¡Oøž‘&WUÜرöÏã ÝGVÇ?‰Å¡SïýýI|ëm·ï3‘ôåwŽ/-]PürA.Á.Ê)õñÓ+úÎ{¯Òì:Î!fQˆŸB¶„¬Ìø¬œY{!”";kœŽºŽ2Z&ËvÁ,#–-¥X %x’Àb´iÚUÓàAD4°×jGÕl«¶¸ËXüì^¸Æ’ۖqìÞÆ0`8X¬ ³ÑIš¬/Ë5ic ·¬¬,–¬‡K¸‘rX`ƒô0…ÂÆ¥-x+Ë©²fäÌ9 ¾¾¼Í«ñœø¾á#OG– ‹””K¯Ë»wä"îн¹ÏÿÆ$3z]ïâ§Pz ¢RümµdRÊ䢲≥ JKʌ¢úâ–Ò8*Ìw¯Ä«„•îmB¿ßž-8®5‹—4?‚Þ‡õð?$ˆí’dT9ó¸‹\’UÄb Ç¡Ë ‡.žI#­ 0äЅ“CN¬¢j„çE¢$ӆB2y/”Je¾²H zCÀ!@oh<( ¥{€<€~ðƒ–ï=L*å²»y@Wx€<+ëkY–WOªÜ1âèý¯1Áô5yº—”L¹68w ò|IU}¾¤ŠÇ㧺žmw´¯ç›Á`Vûݛ¨àšzÑS {¯l¦º»å[êÝ{¯ºsöâïÇ¿HK=ì¨W˜Yò†)Ôٔn:6cZk~AéÈoIovæ«G†Ÿ‰°øÊe’nªyÜx™šÂ¹Ü® .Îf–ëSx Æfù¿«eNƒÖ&z €ZÝ,Š’X Qí€P~ B™å–¨ÄX¶nï3»y*ØÀE‰ÇÍŸ§ÇClç0±ÆÖcYYÃÊ^³nƒ™“éÑf8Ù¬Û`f]›!<Äîo†.Ì,ÿ¬, +ñÖ]©ˆÇóVþ“ a!h–w hOZØvÝ$s»øîa‡'mQËÌ›9<Ü9¼ä‰Ÿ‘m3wæΨù5¾^nžýÆ˔§H»Rx“åƒâyÌ¿=­çOë@€7e[þlˆ$‰O<æ‚SPôŠ4&Ë ™ ¡V°^I†ZØUªB`—ñ|â¼ÃÔ§c÷i ­Õ„AP°r B1งðó€+Ä.¸â½˜À2oτêÞғ4hK,bêht´ 9ÁÊö¨¯Þ%'1}_ÃÓû!=D(z’9 c?˜ +XŽ=6qå믛†‡ϳgryê5“Ñgâ]ÄÐOÃè ƒ!˜jö9SuONŒF«*™[Sqê€pÏؼh ðn£Ü:#¹õУ[Ÿ†[g$·À–¥ÍÚŸ†5šOƒvX¸iÌXø¤AŸî¿¯-Ô¤‘„]¡¥‘Òʧ,IlO“Xïi£è´[ÒÏ!ÞhYÙûIÂ~? G)ࢦ S)‚•⢀;úoW2ºKš:ÝnóÇø‡ Ž†çŽÚLûŒ—Ïâ®bù?§èq*ŒØª6Ço*œ‚­fÎ$>s ›Kªq®ñ²³Gl°r&öCÎK˜$ =†~1ÀDš¢™ýfÕLd„K¬„q@xÏ ‘HK÷Ž¥¶÷Σ¶$‘%ÉîCMH|‚èþ¡Ši„„pé+…ËA ¹¶¼Ñ¢„[ñw-·"‰àÙ¼ +þñÓquËð0ñýþx}üZÑ9â%áØ“âOÓâ +x®çƒ!J¦šÀI Àï#]Œè€À€¦Dü¬®VĀ¥”c™±ä- ñ­yk "©ÞŒ±CœäXlJ&l$ò4VÐ1qt*»ø³ü +û0ñ$×X…‡š®†0.ÓaR*µmBäOCHJð™¨3œ0&E꼤©¤.Ãç¬ë'Äâi],ž>›s•Xiˆ:G˜J:O‹zEÐ+¼^áÆhғ:¨Oª­p,‡+LÉI)lð7ä=Y$ÈŹ¾Ì 9µ¾ ›Ï°-CVK°¯¤´D-i+é/¾ % äKÀ¹À°ºŽåDÍ'ÿÛ1¥pRF7Ÿƒê…qM¬€G€{m¹ÆŒÄB°”Õ¦-—Ã9ŒÂ +£°Â(¬^›W›Nu6=Bc +`ƒ²Á èþ¯µxœ-ud#Ngc±é¶­| LF+£j9—Í—H¡„1yaL^“Æä…1yaL^o†Nœɕ 89Cgð J3’¶|†u‘¡EµŠja÷ÎèõÙTÛvg GO]È鶱T«·²%º1ö£f%°(ou±2»#ñ°Ë…ªI£ý¤áv»ìçÙ.Í|Ô¬ +)uØìJí˜Õzo+Çkՙw3ãñ%k¿Ÿ¿vø҃“mM; +BÅ­“R'eÅ*ɶéW„BÌèà£Ûšg÷´÷´¿}T·)¹ñÂóíDáßNLc'j 3ºQ×WÄÞaÄržQÈÜå‰Àÿ™y†¡f$~½yüqŽ]¨‰«¤Áø¿`þ֡런QÔ8„¨Ä»üåKF”ŠëUo­¥ÂVá¬u·Xl ηl(¼+ÂL:;štt™tt™ôÌ&“Ž.Xu0›ÒÓÔFô¸é;'žÑ<8ú†nµŸÐx_èÔ3j¯@M³¦ùÒ"ikÒx(dÝ8?œCÀ’0ãH‹"¸m"8l¢ð„ȽΝ ‘¹ƒg‚Ò2vØ1Z^íù*ã+¯ ^,üdžH{üWñO_<:µ&¶3Çûº?éƒø Ã_«ªå&yK3&úgp-Þ©Óý,B+;ïQ-<6eÕ ŠÝ©ZÉ9ÆÆù"òŸ“Œÿl¤öŒú m…ê©Õb´Z¼V‹ÔÂL²‘YÇñY »“,ÿ×QÚ µâùaZ´ÿWÁáy?î{þøœ†ú½Kæ_Ûd¾xÓÔnwR DNÕÙï$¦D¾@E¨Iw !ýJÀ’WÑY@I½ ~ÑY€¥µ1‹›Örý+}-èŸVþC[”Ø•òµ^£yj"°<r(~n­¡¨µjÞ-ÃÃýv/.æn2(3'ü™þp~‹ ±TòѸßñ›P9ޡΉ’î"iéyJQN™R—S¯ÌÈY$DÝsá¹ek„Uî_xi™s‹0`_ïß\°>´ï2_íÝYð|WºY<…|·=g«Œ`²³ó&k1CœRI2N攀…Qç$ŽB€]!@­à[-Ú,L¯ãØ´œ= c=ŒO@΢³‹E_³èLfÑy˹S¬GK: +x$°/ôšdrn"Ñ™ŽI¡xZŠ§Õ|ࢫ½Ý••‚ÊG‚…ZÉ ØßQK°gbiX!ÈÄ:«Z’1sZDí°¨Åç=PY‘ŸÌ¶Ò"¹Ü”ªe\¥º¹ßÅÞÜö«©†®7ú¶]——·ªà[•·n­™8á'—ö½Ü`hzeÉòBE‹*¾ºrÚ4\çsµÁצ´¶uÔgg{%ÿöË·”†«Ç_¨ln½¸1t›<†¬æéŒc&~Bb½(=¯Î5 ^!$pF›4Ùl4éé©NiÍÈ$t]¦l¶ +mÀ"6@¤ ¨Þh¶wgdÛ¼YbAt‰Å)ìrôOél"%ÙDʀ3ôÁüÓ¬)2ÏweœGOòIØöEY"TQ^QôÄê‹M”³”Wàl2R9‰U~cü£{†ñUñm²Ç=³u\ŸÛ`°8¾Dfߋ/Šº7Îu. ä¦+:{¨5Ê7¾XuÅ4i‹ÄÁ¥özÁ€eçWàñÿ„š© ü ,`’õŸèfÖjã˜à¨E“ùšõû_,sœcüÊú7rÒ+J,Íéh‘uëAf˜.C²nüÒÊßA€É;SÏ_U=×Ð:+Ô@…×%lßÊšÆäŠÙËùyÃݏ]2øܰ͛Þ1»ù'-ÃÛZÚ~÷*ùMìªö͡₵\=£ÚIìFŠ=Ã2ÃbT1·›3jîøim‚—îy\m¯ž°2/«øq*ß,Š…B  +³„A½´cÞË®åsP57Mã6à-DN¤ˆ D&˜=yXÍQlÕ&”V¢-ˆG׳1ŽKá–r8žË€ÔôoKT@D©NŒj¹õc3ÄèOOéђŸÊ1æâu?G~‰çcJr_þ€Žìä6³Ùv DGE&\ùaZœ$ž—&f1éib %ô;Ãd"Cþó³™Ü¢öÀÄNðc¸L®‘B.—Ïr䐱× + ¸E˜‡;ù.ažq5YÌ÷É+•>Ã¥ÆÍød-¿^Þª¬3l1f™Ô$¯(ˆH±)DÑ“Ä b{2?ŒÂÍ*úÄ°È!/ˆå< ß,6KIJÆÂ!‘9a`äëY¯"<V=ä:‹W&9)±›È’:7™ŒêːîFë e)²)bUüÅߍÿé'ñ7ž{§Þ³žaæ¢# ÊßçzÙÆ ]Géj;…´ ! © õLWª·ˆ1ìÓ±“sJéJ>—/Õ¡Z\ÁUðb…T«L2Ì@-¸kàÄ©E™i˜Û¹ùB»4_i7®Á=Ü%B´FYf Z ’#¤Tn%ªü ÒOùËk0”öä¼¼Àc"PÞù-üHžÖ±H̘‚ÔÈó ÅlJ‹"üõìÁcö"ÕÜmæEÂc”ÿm˜Œ–A¶bˆ%šAx7ýÚ<³@2ˬóۏSïæçoâýñ¶ã¸×ý!ތŸCJHi|>~(öãGj13~”?Jlu¢q$f£ûðÐ0џ«Q[ ^üÉÃs9mbØ/Š +' i\ª07shÞÌ)Db$&xyŽoFSy‚8ÂÓžÈ +Œ1á8> ƏӁ#t½bU0ǧðüR~ä·eÛû`þHÄ&¸ñðÙ\DF;)CÆÖ¿ðj|Ê/ñ<<Ÿž‘ð¯ùü‘ç¸:F)Qjiþ‰ÎXAËh!göŽu2«¹ä‰\¥<k”rsåy€ë— ’ÄM¦œ@äÉXæeŽHO”Œ>cÄØm\c0 +ä*Ëë~ŸJ ö,^â!ÆäÒp Pɒõ\8Àýid ¹6v%·<¶–|ÿZ®òž#,nó“ø&¾Kt¢\Ô¡NgN”¦KÁåÁ AqbæôL’™¡Ì‰ZYÜ;g9pÎ,ltZá}"JšßgAŠ*`!-/¯‹Õ…ÃgŸ-j/daïËΛ„+òB˜½|…Öªj±‹š*™Ìseaúï®Å|×mûÞ~èÑòòGz{ßmkwm½ëškîÚºkm|ÓóÃß}øÐ÷=üÝáçwóºÇ¯ýiµ§ú§×>~Ý7ÙzËqîÎ qm Í~‚x¨ñÀ^tµO1Uà +#sÖ*$Zy֚B[Ù»­ˆT_ÂïÃÔâ:Ž"uìÕ`É`2“ÛÜ;â=ù+¸H8vŒ„™Ïw½û¡ÄÝÛXöùGª…ÝËCo$zèM` ~6(ÖD<ÉûrR⾈²f8úU÷f¯ ҍ;ÿëŽ>È +ÑÉî¬Ý£ûèPjàîaêÂÐyÏ»¥uŽÞLè-P¤<Öz‡·ÕÄÿº;Ñ£öFßW~סWá{{pîƟ“U\÷ç±_Þ ßºÄ÷aŸX+þ^R¥Gå劢¬Q~kXoø…ñÓ +s®ù-ó[–û­×[OؾkWì9jÎù¶:ZS®r.t!×ïÝ·¤Ž÷LJs¥½îýfº?ýû™³²r²þê;æ,P=-û·ÁrÒr^É]™û§¼’¼ëþŸù¾”o ßñÿúþëû¯ï¿¾ÿúþÿùEÌ~ÐނÌ48{M«—n"­ΘÞÙÞĹ3Kór«ÊÃù]9S[æUW¶ÍžÖÚÑ°oքýÅÑ93›õe%ãM çÚ/vÌ?`è¯©uº, +¥Œ+²}Å;Èÿßùðè!(yŸ“SFGi‰YÉ\mZ¢ÔdïDí¨‰B΍2Q)Ê£ök*Ga”ºPšŠZЍƒâ½Ù_do¥ëXº¶¯÷2x?7¾ ÿôŒåswO¢“£ç4`ý4œÜÈ«è?ݸÐt»UßÈÇð'ýqŒþIp£k7vÓÿûéö£¯Û¸ð|}¯C» ›W؆Ž +·¡ubý·¢£üè¨XA÷9t”[„®á~€Š…kÑËüzÚþ3zÎýŸÖñ¯Ñsé&ÜD·Mh!áM´—õ)}Œ +[QÃ×nîÑÛøWÐ +~ ñ!t ý_Å?‡VÒ¹7°º`CC¤ =N~>ú,?Œ~NëOKGÑkçßD+á:z·®¿ŒËG“é±=ôÜItnô¿ŽÕù +œè'ÿÚþw7îÇ£'¸SŠn$ݧÉÀÿäÃx@0½¼gðñ§º­uGéÓ<ò͆Böÿ_xþ˱[·Ê+è®|I?ÿú)±h +endstream +endobj +222 0 obj +<< +/Filter [/FlateDecode] +/Length 2603 +/Length1 5412 +>> +stream +xœíW pTÕ>çÞ÷·É&ÙüÒ¬Ê[ž‰Hv "áÇ°$»k’kB‚좖Ýü`"‰D ¢–Y‹VÜg[¨3R• ¢AßÔÀ0DÁÌhÇ:bG„jۉ£µÄÁ©H§3&=ï½$%¶µítœ±3Þ³ßýî=ç¼sï¹÷¾}ï@ĀCíõÅ¥`–,;U75uD;­¾ã.iêÚ¨>W¼w/)Έ‹ÖtÞÖñêç‹u)@X}[{÷Ë?ÝAÕ{­-ÑæÓøÚÇ9ç¨m+)²²SHÙDý+[;6n¯€µ¶¯kŠŽ_Oþx²#º©“ß$Í&ÿGI©Þíh±ì™ç©rv®Û°Ñêç¼aØ;×·tÞøÚU«Éÿ(o€o[yë_ZJHš0Äîe«¨õ h¤z'¡™ðì€lÀòyZ5ð‘8¥°ÞÔσ{¨öÁ_°~bj–@#ÙÉûq9ٚˆÑŒ±{MþÜG±?cì8;nZ—RÜÃÃ6 ‘Þˆ·žƒ÷ñùÜ ÛÉvÞ2®¢È;à\ÄY$=ø!Ž°ZÒ¢1>ÅYKÞ;h¾¿„ÓðgÌÁrŒãQòÉb÷šs±F‹‘Ï ’·Ì(†Ü€í¸×ãƒs˜q6Ÿ¢®c[YÓÙqÊÅ!)KZ ·SF§7“24¢}êiäF¸s2ª%¿F†u؀­ø0öÑNàÉçÌÖҪòsìÂÇâZñ ’!i…ü˜"Ql$È +àÊÊOcÔќ›áv¸Ë”»Iü1ì‚>Ø {! GàecL8ïÃEZ #¯¸W’„IÖãf¼Ö£çنâ¡ù½Žï°”µ%픽5Ë-l';Ä^go°Ø0û„}ƁÛøjÞÈ7ð=|“¿)T }Âná¬pVDQ7W*Kʑn•zHze›¼V¾Oþ©ü˜übʘNy¹)¯XIYuS&÷ÀVˆ›»–$9/ Á'F$c㙲}À$a\…ìÀ ¸i2£§ðiìÇC”Ë;$ïâü=þ ?5å"“X.+šÌ¯–Õ³•l-{˜=ÂeÏ҉`GÙ»ì}Êq˜] SyŸÆ¯à~ ià7óM| ?Àó3|„öÍ.\'” +„[)÷“°ð1í$¹X Α´Šwˆ›Åñq:Ñ#âˆd7W%KʖKH»¤é´ô¥L;̂™tÖEÈ!€wAقk敖Ì-žãq;zÖU…Wj3]êŒ+.¿Ì™ÿ½¼é¹Ór²³2éiöÔ›"K¢À‚Û¯"ª^хB­ªÊcôµ()¢—("ºJªÀT]˜nêTO/y®ùŠ§×òôNz¢C]Kb¶o0ÛB¡ÙI£ŽËEW¨þ¼VŸªcDõ끮ָ?â£xÉԔJ­²%Åã†dJ*5S©¥´Î$ÊÑl°€Q’’F³Òk4Ÿ_¯Ö|Æt^à6ëµu!¿Ïér…=n+›´F´ +=£ÈtJs]ªÔesµÍHzÔ¤ûX¼wЍ‘"{³Ö½%¤óhØ#³H¿^óé×ß5œçqâÓ !ÝV9ˆÐ: 5c±duÌç £eU†0ݧ“ûô»†<îÏkSn<þ€ª÷Յ.µºŒ:¦ wpyÈE³Öü½ª‘Æò™żbš¤¡3Ò´nÑü†&r»ªÛ´ +­5~{„6+?®Ãòn×Áüïá±ßA_7„4—¾Ô©…£¾Ë’9_Þ=PíU«§Z<î¤#ÓZédzÆxÞvi£eÒf¶Lw£E³žXj4f¤UÓÑÕ&•fÒtVPfT-eo*#7*a¤m£õ‹Ä‹Œ š¿t´‘sS5ÑqTà¸FÓ8.“GŽìm½¨HŸ=Û8)r%m-ͬÜìÏ÷¸»ô ÖéPõ -Ԇè¢ð¢bZr—ËØåžA/4RGÕ…¬¾ +Îƒà-. +ë,bXŽMX¦­0,± Ëä华ó!0^è¦éJáä/ћío]¤cîט[,;Ý>~5)ˆñÚPa4Þã,ŒÄ{ô5ºãñ€¦â‘xtp,Ö¨©-ž ãþÈDJƒcÇzœº·7܊´¨úK8CxðÂ+„ /ž' ì'ôž!ì"o…>`Ñ>‹ž¶hEOYô¸E>‹–YtEeɉ1‹Àë%>Mx‡0Dxp’p‚ðáa€ð¡ð3B7¡¹ª4ǖc[Ä.oµœØ-'¶Ë‰mrbœh—käD‹œ¸EN¬’a9’¯Tf*ªr…r™’¯ä)¹JŽ’¥8”tÅ®¤(Š")‚Âz„éÙ<Ȃõԏ5A°QÕ¿¨×1¥n•.j¨g!ØP‘§—él«ù8ˆcIćîw†‡qìþmÎq‡!·èKޔ^°¶û(ÌÀ S=o@žñªlhëI›0µ C›0µyx°JƒÑžÈåðOÿ½à×Z§xúیtkCI*•·X<ÀRS(ŸˆÓ®Èut–›É-våmv€^ýSé?ÁN™4‚aò,ó,3L˜¦tãù3nÊÛ¼Øå<‚ýã&©3i)é.‹Ñ·SŒÞú9%©y3äS(œÂ'éo Ä1~?(qŒÀÒO©.™;/ӕYàÊtÅ8|c0 +âÐ_ËbÂ]A_ ýpY´~ŒZØV¶Ýq[3aƒùLƄñöÿej÷<œ›¢À‰IAì;|‡o²‹ž5üߜWã<ÒéNêÏY±ä‚â´ðžÛG ~¹â­£µ)È%ÔµOœß¿%óKl +endstream +endobj +223 0 obj +<< +/Filter [/FlateDecode] +/Length 28538 +/Length1 47352 +>> +stream +xœ”½ `ÅÙ?<3»º%ku–´º%{-Ë·-ÇÇ&ŽíÜ69ícç„p:„’I0GR®r–@ (ıs(áH +”( /–Ò#)MRܦmH)ÄÒ÷Ì®ä8@ßÿûIÞ¹wwvæy~Ï1³2Â!ڌÔÙ1'Y¤Ï-Ì_zÅâ~9¿ï!„ð«K×­õo;»5¿CHùþŠþ‹¯øèÚäd„T{RO¸øòõ+äöö#tÛ¢K–/^vìo³Þ@(} +k.ýNt +!#(|Ék¯ÍÝ®‡^½üª¥‹åüÔ™ï¾bñµý£úÄY¡Ðåâ+–çÚ÷Ñóû¯Z³VΧwÑúþÕËûG}W½í« W³#Äމ +!ö1K¡ìñÜñaf#ÔA}f4›%¿†³gçù3¾sÑ8æJ©Ýxú5ė¡]2h~5 0¤ßAwAÍrԈ1^Dæ¢?¡RD ÆˆUHbèdÌþ=Ž«Ð…èp¥h:›A¸îô(z]ƒ7°;‡†°È¼Ä5¡w‰Q 2¡Üˈ§žýÜq.êC×âë™^æ‡Ù»²g‘5ªKÐôÖ ‚ße_GêF×aœáE«Ñ³è ôK4‚ƒ¸oƒ+òètjCx9œ¹)û ò£J4 ݇†q3Âö)Pöu(+Aå¨]t±݁D?…s®ÏòÙÿ rÃÓÍF· ½è-ô+\‰ëp +¯'É*ò'ææ-æãlrÁ"¨U»uè&èŧè,Å:lÆE¸?MÊÈ2À,džeìTv»‚ý«Â8ú§Ì‹ÙÛ²Ïd‹&ÂٛÐvt/z¥±»ð¼’UÌ$%=ÛÌÞãkD=hºîpúzzô?p—r|!~¾¿#ï3½,Ë6±¯eÛ³g?@jè—cZªQ=šý»]Š6 ï¡¡C@ÕÇaþþ„£XÄ­x^ˆWã5ø9‚‰‚´‘…䲇fodŸa–ù"ëÌÖeOµꡯ“àJ}h%Zß[ÐCh=~½ù¨Â £?÷â>üCü8~ÿ†™Ãìd>gÑèÎLSfGæ/Ù£× 2T×ê@]h!Z ã¶]nE£çÐÛð\„1<ƒ2˜Çá«ñ}ø×øþ7H/|·‘²—¼H~Fþʬc¾Ç<Ììg>†'ç3¿Î.Ë®Ë>‹¬@ÿQèç ´¨u%ºFºúMèvô]ôÌð›Ò=þ€>AG§¥¹b±k ÷-¸¨§îڋ/ÆWâ›ñmx7~ ÿÿÿ‡°DI8b%…d¹˜¬$—B?Þ!¿%ÿaŠ™ L#<é.æ5ææ6ÂÖ³“Ø>v{ûû;R(ŠJ»ú£333½™‡¡·‘ìzdF^ A¨°ƤÍš¾Fövèç3ÀQ@'`4>FCÿ‚~ª° 0ç¸ +æ­_‚7âÍø&¼ ¾wàø!ógñüþ)~ ¿?À¿ƒïWÐs/ ’‰’*RGšÈ$Òß©dé"Ëɵd#¹Fõ^ø~ŸÊÞÉì"·f.E?FÝÐÿUä'èo™»É­ä×_Uf5Lzó0®Ex.ùڜ݂6e· þ`ȧûÐD…÷å$æ1E5š¨lAø ëÆ +æ]qfwׂùóæΙ}AgǬ)íÍM êSuµÕU•åeÉÒD‰P\E#áP0àç}^O¡ÛåtØmV‹ÙÄ zV£V),C0*i µõù£}ƒl44eJ‚æC‹¡`ñ¸‚¾A?µßfÐß'5óŸßR„–+¾ÖR”[Šc-1ço@ ‰kÈ?øÖä?^ÐéÛ'‡ºýƒ#Rz¦”f£Rƙ@Îð·:/™ìÄ}þÖÁ¶u— ´öM†ëíÑi[B-˵‰´G«ƒ¤RƒŽPÿìhÂR‚8Zë÷¤6@¯Ý¡É­ƒ®ÐdڅA&ÒºxÙ`ç]­“ îDÉ nYZ2ˆB“‚ÔµH·T¶ ª¤ÛøWÒÇA·ú÷”¸-Í¡%}‚~YhÙâE]ƒÌânz“÷<èØpÒy. 7·tm_[È ´:Wúiv``›p×]ãk4ìî†kÀ¹$ÒÖ7з¾Ž¢3 ¡Ý§"?ÔòP+-é»Ô?¨ M +]2piLˆ{`Í^r»ÅƒÙÈÝê˜Û + 6†ºOöì±¢Ùë‡]¢ßu~M¢dg’GsO1—ÐÆ'–ÕI)©9MMŸ=6œ˜ö(4È`пÔ=é +ÁƒÔÑ`yXZÍàӍá¬Áe0 +5-}\=-§ç*"\È?ð9‚i|v~Éâ\‰2Â}Žh’ǁA}>=(ƒÅŔ.T-0‘ÐÇ&)_(Y—&‡ú9?D0|¨³ Në®O˜tVoM‹h d7_Ð%çýhIá“B÷ é£5Gò5¶y´fs¾fìô¾ï^DUnÛ ::ögäì–ÖKê±ý©^.×OŸš~ÁÂ.ë@_nl§Ï=/'×׍ÕåRƒ––.¦äR¤‘j5¦™.ý ?¥DÉËÒ*5¢T‚ýmƒ\ß9ìÖÿǓÒÙSô,):wZ®›ƒõÂùù çåÏëž~€³Q2}îíù]g#¡Auˆ ˆÀ‰ÔÜ(‡Ò¨!՘tJEsǒRKEþæu. pݔî9á½Àÿ¯«(¿qéŸuÒt´v° 2h”BCdP#¥áÏtÁõ¹õYùÊ'NIŒ=ˆåQëìê+\ÜMY†þÑ{ *¥q‘¯¯—.U ݂“þäËΆìàØ«û™¥òiã>p&Š¹©%!H!)叆àJ(5ùû€"u…¡@w:›í£pØ&}?­èƒdhpN1­ú û¢ÝpCÛÎ(+ª"m´«ðà0¤°äGÃHûìLÎëz¯0Ð Ãր¹SÉ)CFíz«æ­Î£}tîѕ*ãÄjfÜl>Üv¨³ó¡{ àDHu@jÀ±[*M2ó Só ftª™‹úá pÞ\T‡G'ùšÍpì„cƒÌ\Q¯m&ÍLé`Xsrb#t¾Ž^8vÀqê#›Ðf8Ôm’rGà8‹’d#ÚAFi®ŽÞ\én8NÀ¡’jšsµ}¹R˜&7’MðÝH6Hzûù8Ò¸{È×ÏÄ]øC±¸Ÿ¹³ŸŸ–ìçËCý|*xh“‹‘ƒ„˜l³I-N,[ÜÚ½˜iˆ§J¡O +Ý¢{©áøRÃϖ~²ÔpûRÃÜ¥†9K ³—Š—ÒøBѽÀðÉà Sšêª* M`8v!zY +§Ia¹¥Ç]C¤IãۇÚïâ_À‹P;y†ªÜ4{× /‹÷óÿjž_HÓä"ïÅ|‡’C¼¢¸…há~^•¦JS»óy¢„‘Û‰ŸkT; Úy‘jgJµ³Vµ³Tµ³Hµ3¦ÚU패vúUVµYÍ© ÔzµV­V+Õ¬š¨‘ښΞÊ +V%G#%KCVJsIÖºÄK« š†-Ìt2}Î$<}ðÈR4}‰ð̜PkA„)B“ð y:š>w’s°V˜žVegÖ Ó5víÁøŽnÈ ’íÀÀs»Ò8K‹n.¤*âA˜«ØÍ·Òø†›oïîFöuÍÎfs“)Õ6ù[‚¾\(œû8…ñŸéë#ž¸`lxüŒ>-ÚUü Šÿ±ŠŸ¥â§¨øF_¥âËTãΚgí”ÎÚ)µS:kç jçU;g©vNQílTí¬Rí–Ó;xïô9]ƒO{»+h"ëíž>xrŽE:ÐHµ`ÒèB“Ps³SàpR©TB‘ +ÚzBÀ¹±ð‹ð¤Öz(6äªið­* ¶Q®Ê¹qB ðþQ®ŠƒbÜã5´®œ,ÿ­Y{õšµk “/H¸ÇS\ӍÖ`(]³>HX'H¹–®C Gz^Û-PÉDÐÅ ·.V€(¢2«Ò0E¦ÀÅ,:ëgŽœè+ägS:²كŠIhš ’bÇOn˜ÜFPñ¬VŽ‘VÖ¯iÕYýšF‹Í¯©·ó~M…/#¾¢âY¾ò²ö +߄²öz{CY{£¥­¬½U×Q<«ÑÒY<«Þ~AŒÔÛgÇH£¥Þnù*¬>_E«N²4Z-–F¬¸LCfµ«§‡íõºVv®Ïg·è*ê[բ˯ K㘨+pµ—…Š‹wϳ ?T-*ÓØz€YÿÏ֕iüÕ>‹¨«¯²¤qó°}¥/AkQ˜ “ð?+ᯐ/{DÔhê«|OÎyâ÷0•g„“§{Nr£g„Ó£@Ɇўn´b™ÌŽ¦=¶” +×s¯B䤱ñkŸò2ÜӃ™Ê +ê2P†BŒRŠE««j-ã“A×TVB*—¨©©¤g¨˜ñÉÜE!¦’yiÚ.¯Z<¹Eíã8³â¦oV{9“YyãnFì›öÇ <¶E#—¾¸EªVÜ4졧eþõâôÉÉÌ*-góeJ|NVoÔZð/Ç%U:ÎêÃj3 ßóºX½IcÎTŒKÊç~èMödFÙ!öcTˆâ¢ÙhÕ¡KÿOõ.¿µÌJ¬.O큑Åî™9zú$p L}*BlVù±`Hu•¹¦¾ì£Uÿ‹ç:¼Í á/^ö½å3œöcKA—ù<#žxýœÂâÓøñ’-øêËzM*CF3gIFêE™h»Ôr©ƒ9d–»Òl퀮¼@¶tUàNDç¹g¬/=˜Ž|­Ù\]%ÏŒµÙf%J|±zóæî ~©7Kï¾d†Ë9k)0rXƒüñõ^ãÏ<|Ópæè[›´ÐüQ±{ 7IôŠx‘F« !l…r­Îbµ†´:«[, ™JF#>¯7dŽF#^RV›Õjµy}I„5p†ÍãõEb®Xg˙$Ö³…þ×½Ïiµ(Íx†ã,â€ÖEƒõ¹èëeŸØUöV~ÌOÂs +§7zºÁ”#_õ¶R¡hbçÿ+CD Qš2&"'”*E~æb*¥Dºµµð<òð‘/U^K…i«Noqø2¿»Fã·ÚŒ×~Ph7Z\¿ÍÚ ¼Ekbv`žw[ôSæÝJ‹ÁìÑtbљyï_þâµM…éV V^IÇôªÌ{Ì.ET<ü#„Yà÷ †áeèuºÏ>͓ÚË? S;rzø–‘æ6€sÝ#×bsfq4b/ÔàÒÑ÷+ÜV“0NÌ~ÈÞ§P ЏÅ+ÞT¾fù¸ˆyÚócþñèE¯)†˜ç(ß3óÿ¶øsÿWEj}Qµ¿¾x’ZQ·g~ôÿEš[<[£¤ŸZ4_X´œ_Ytÿ@ÑüSEOë,>“*Þ®0øÚM +w»ÑÞk'vw"Ü®u•ÂÿÁs‘4O3GfMÎAÍ#Í#€.)Úyԃ¦šçL ƒQ?äñEÓÙëêºñª´ª«ˆ4òŽÔškéÄH`QS]„$*•ÒfµÛ++̵ì–Dê±Íß[¶Í´&R?Øô½å[Á˸ºE“ïø]<ž‹ÉoßΜzø;}3¯\2£ïml‚dǕ‹§_>sâ-·5fþðÒÁYâöۛpè%à¶Ï@xü“ý¹±YLL@óÝ+Ü׸ïGûݯ#ÕÔi"ï›ð4ÁÔmZiZo0=m:hJ»5ñyòÒ#=þ¡XÀéõF£–{YوF&ìE +¬P¤¡Î 1!Zü²SævãNÎdå8“éEPgãÈ +¡›áD=R¨5z®0nâ8Çarғא h¥ôË+ö{ ”+Ô"*ü> 3j8NÿÙõªó4>IsÜÔÜÐ|zTÙ¦(Ô@쒿Bhh4§’NÌý#ÙsZxõkEPR^ãÉMÌA„²_ì1Ys3Ó³ +3 +­eHX2 ÖÔ2ß?‹ýk 0z9 ±ÿO™ßÙ´z³g¿øj‘ 0•B.[6_i)0y4ðèπ¬~ 賝#nHÄõ©ÃV¼ÐºÞô„ð òÓø+Å?T¯›ŽDȀõ!ë¾sMñ¶â{…Gãý xŸ *)ŒÅ\‘E5(Òäò}À3:0:>Òë Óø_{íí!¦v‚oîÕbmš<#êK-íÑ«¢$ê.u¡8Üéþ`ˆ44àmCzWâþ«sô{zätOŽ†!l=Ùü•š')àÈä Š½nlԜÙÓ{mz«¾ø¥ìǨ(û)²'QIöÓ:ùӍ{V¡Aˆjjsè£ +Ԇ#M )€¼•yØÉA“R©B*l$7tœ Çuö½B<‡.+ºe啯•Zý–ª™¿YuӞò5Û3·þcn£ÎdÖk¹«¿sfdõêžäE7}§·Èl¶.¿òÙ õ6ögÞÚMIOÂø×ã¤x ZS•p„ŠC•¤º¶Ûz©ånŃÖO‡_Ž>{+øVøhÔP¯hP§ìõŽiŠꩦiöiŽ—¹7¯õ‚âBå…eŒàX^»Ùz»ãöè›Qe¹·ÓÛYñYe6¦ˆ†­/ªTU³ñjäw!o]™ŸÚé:¿ »\ÕªdƒóÉÞx{µ¢¢ÖÜ®20í~¶ÁìÕµGž'¡T†ÿµ¯S‡u® ‡ðÅùiê™y’“fJšžÑ“=€4ɞ ©‚@fŠ?ð‘ælÕx zUf?C¡ìg{£>‡Õp4To3ïÃ=Qk]~ÞÐ*,M¶KӒ×p@ªVVä°I.qTÔÖ|û\2wÍßþՍ÷Ló™M¦üęiÌæÕzáôM‹]wÅü]µ>+g¶4ÿꊁ][É3%wtöýv˂$oñ×ß0qm»¤Ÿàùó–Í^=¡Úk.0Y[ºï½rù €øਥt7 +’‰û~»¡™IgOí7¥Ι¢É!.Ehd–#£ȑAŠÄ}*ÀàЧˆÓ˜R²S˜Éì<ö~æVi.VNe~Ãü‡g‘߇ +ÖT°Flàý¾ Ò¡ñRtªˆ>·ÛëÕú^vøüœÆN+,Ȃ{Å£ÅÂqZãËv#ë° !Á€5 Y¶Óï³úý>eЀ;ƒ¢.5Úª`Ðá3×`ã kwèƒ+ ÞF]QäûÃ>MjO ù5Úð‘/Dx›X £õU +«15,›&»†4 C)ɯAi¼íڍ_ãó¥É£¢>¬ñ‡â>Îïð‡´‡ðeøƒ<¬R,ÅÂîv&°‡èq2ŸßðÏ|)5•„“gF æC©Fj@Ñ¢¡Yh@³Rö(IËÜ®¡d÷t„4PxÎ«Ú +H`S*õu¨þV¤¦Š¸|±·úq¯­Ÿ žžîò2‰¢@Ôû|z¿•ÑcsZºDg%qR—Ô' ɂdP•T$•IufÎÄ«„¼A†¥ P‹+Ç)ù•çA¥ÅÂ̬ÑwmdãîçÚ$õ¼-ÕN±?ó3~ÚC%£ÏãÞÅLìì/d¥úó¼À½äøh¦pcöC… 0(L=é +±r)Î_B”¿«Oí@;Âw”½~)ùÛd6üeRm {’áöèôäºè¥*·qRtItYüê@tC|mrUÙ́Ûã7%·”=âyÎý7OÖmbC5‘ÊèCª{CÄï/R)ýÊ@ —ôPÔ«oà ç+‚G6—»õXçg”á0b’Ñp\§(N´3Œ%Ö®3¸löûÚA굧ñ?Ä@§£Ï1è8â`îŠp{_æ : ú + Ž¼] ,p•Âgñ@¡VåT¡Q£F`2GL“$T3¾d¡‚V›Çýez¬G—Îþí@Øê÷ ¾’s ÂdÅ2:k83„¢'©Ncv ÀćU(6Àï/}qùUvo¼·këÓùÃcߟ^iõ– 7öŸy¥<๡ÿÆ_­›³då4b¹æÒÇ·õÙ8õåw°?¹¾ËW`µù´Öï¼³þ‚Ì©~úÀś:ë`F¯Ë³ +f 2 'š&Z8Ñ`j6Ò@­ZòYih°²ßÓýÓ¸¬àyqøöa»ËuùA\–×OKŠîhC3µL¬áÙrÔ'k è¾9`eքËWL +—5­ø9VgnôzL6—YҘ—Ñcô™²Éa2¹¨àP(=ô΃šö!¬V…pš1°Ù졂£;M~8¬sû,~¸Ïìòž¼KîÐI˜·™Ôd†îpg(ÛB§ò:Œëc9i¼ÙWςô3w+,>+©D#•à͔Þ¥ì Öm>èÙdÀîÓ읨•âGÄ(fÙè6†ŒEÆ”`K=nO‰ÖŒ„’’b\šHÖ†oš\#êøvcCÑ¢b”Ëj5J†`È৸]v‹Ù$§CAÞSè¦íæóSÌ B¼&³Õd2—{ ÝÖÂB·ÙD˜D²¸Ð͔•”¸{…RŠÂ¥›KE­©¹T“0›­‚ÛEóޖy+’̧&“Õ÷ÕËc¨¹,}1¨hå0Ð +ŠP%.}¿ +~#Eåõå­Áéåkƒ›Ê•S™†M¯šŽ™ÀìȝÞH•ã°¶J;3þÊââ"§ËÃ#™DÚ5jÁù´ñS*ËýF6YU$!÷ƀß[QYé*4jR,N—UÅ1â’aóÑ°^´ê›ýú2}§¾O߯WèÝÕ8¢¾Xð£2ԉú ×^.jªÀ­Ò^Ú/‹V:ᔳzÊñcV e{ŠH夣4åp’<± k2FEM̞ԇáÞÚtöôž„=Š=xµ@5¼HÞù$s©JVÜTcóƒ5˜±6[E'„p÷÷_²è‚Õ] SGo“f¬-ùQ×5—eöÃOͽgî3Ofޙ+Ïӎ}÷×ǯ›1íþÞ ƒN©i¿±vêegís¶LXz9Õ¸?ÍWÄÙgÑ$¬ïrsƔׯK-,œ¾¨éúª µF†N†ONú}î­:3ÉA%¶¤½5ۚíUÛP‡m>êµõڗ†/=z:ÆÅÂ5áÖ¶PkxRÓü&U4¥¼Õ¡šXk¨-ÖÚ|aáüðüزÐò¦uM·ºðüØsе7ô¦ûÕÐïÜï…~v"£AÉ:Â"cت`Y±go$\¡‰S&6$6p?lÑ œh¡4䶦Åo)³tZú,ý¥åáÉ~¡sBß2!W·ly֙Æ%7Kó +âN8 !˜LÔò)mAGuojH®Â’ÄÊëÅ`Ñç Iꪢ¢IúJv>ˆ«¼™$ëܒ7¦¶¶Æ†RöƒÒk1ZØ +%uÌ°Óúné훚\ŠYxíÛ®<|±Ýʙì‹G×-[ØkèЅ _Š-—üå'øÜfƒÚôê§Q¹ 3&Ì*ö—νh₻’¥[´Øf2Ø_]ä+j~vvMõ3ßÁŠ[Ú©y!…´sãbA,nIüW³ßoM))ÀE…*ÊuC±j6—uÒxP!ÅQ);®ªzÿ´ÀÔØÝÜ~Ï¡€rCì»Úø§ùÒ±7øø‘¸&Ä©øÔø…ñKãã[µ[ùgûùŸãbå>3}ÿÒt6v6n²Úœ…9^žrŽ—kù)ÅOŽ‰½O¡`µ©­ åc$PŽ†Í<(¢ÕYµbwIÆ2óz3„!@¸0½¢F ž$í¥ǘwUË"ÉEpdØglF9`§ñ0<"áf÷ÈɉËi{‘Ó‹&O³^ä +!€&z:NFk³ÔræxÈcà¶2éô¬SR‘p>ƒS2:ÇÜP”SS[›ãëà±6‰‰_ùÁ¯ ®Â§[¹1ÓH Äå“×ôLZmök7fŽæøùä ko<³håå’öŠÝóî‹=Bù¸ð÷,Ì#éëcœÇÔSûÌÍ6µ5WSÒÎÔ*EITÆù¹å®„Kp¥\’+ãʹ +®rwÀÂÑ'·Ts9ÊpQŠhý°1&a]XŸ¨,ו뫄ɺýº^}·mEÑ&ýµ¶u¼Vwl2nqÝûuLQÜØÐ !ŒãU i²}m¢‘¯ª y 4QÌW4H‹VŽ[‡Å¢µò«ÍëqÁ QJ ñS¢±˜×ë³Â¡Ó뽄±ÂÄ1öÊ>ÛÀ-¥i²cˆ °âÓäÑÐ؈!f¼qQ¤™è&Ä*èãµµ)n³rÅb£X%øÊHÃ!r7Ø×_ˆ:cÊ_YVI*aúèãj̺fA4؛¥\¹1%47ů7éköõùŸÀE£ÍMDÐëEM§¦OÓ¯Ù¬QhŽaš›°]‡³ìp¤µÓÚge¬®&Îê°6i?Ê©¤v 3ÿLÝIáóžîëIèIr° +t1ÇU4wRŽ©$âF¨>rú£¼±–óCVN8…oÚg¸t}~:©cz ˆ/#ˆ/ ˆ¯=^«äZƒN Ùèbc˜ÈŒ™ZygòZom`|»±RüÖ +²µJöP·Ÿ]L‰{•,̘5M2L +£Oöà„•¶±²õrS+©Îð_RwõÞsªGæ8ï¢eoe¦÷ÊX™ù5\/pÁ!@ÁMÀ)Âî5é'Ao2¦ô2Yësdm£s$@¢³¬³n]xXñoÓ¿ÃÊI¶[BO‡^½R¼†_ “+Œ"á0ÖhŒ”NMzý‚œ•ÏûPzŠºœ÷”Wã°Ëi3›8J½~J(Uv¤VuîO¡bNÒ>wˆZºúBHíô¥q›èr…LBÜå$XPs‚&®Q«¹zêe ÂuÈEî + +îtvóp|B•[´ˆEª¥ˆ—#¹¥HÔ-UGÜØ}bB™P—†k$…-·‚¾‰b}±ã1&›PÃèÊô¢ tr€æĉœMÎis®ëç6sG8<[ρzêé­×~q79zÏP‚¸Ï$bî¡ê37ړSPÇëRP.U©…QDl’µ*îd72†ªÿ_%\œsÝùºsN³=!Wž|%ÊýšƒàÿJµ$¶Bvg +ÇSìCJ•èÂèõßN±çëÉÿ±µþt/t¯)xšè#öF%©×­+9db ®vyåÚÊå˕Ç*O™Ôí1M¾'ZÑdV¹¦öÄåçûVÍí9="i_’-%é]#'éğJئ.Í9™¨>ýÿœùžü‚€.§n ֊tö3Éë@]¡˜É9AóژãœG;?½9î šUI¢4YV^QYuˆA fˆhæç#g H£Õé F°ÝËU bÍÏAEq¹ =^ïógšøù"'šÈ„†Æ¦fq⤔¯1À5ÏmÓ?w§ÈÎÙ :·£ÿÜ Ð¹ÿãN0ÖñuÉïÀtU櫚ù!ÔÒbB•UUޖ°²1¯A(Ê%֖‚Ûí‚.6P@‹ir<ÜÐ\IõH®E¨;ª“UxG®r·ši!O³h:a"~S™©Ï´Ë4hR˜\“[&œ­ýè y[»œ—5MÌh–’ až ǝq)²æ5HÉ¢\&%çÉùäPÆÀq’œ¢`Þkàz¨Aö%Ú­Î[ýß4ù)¼ÕVÕÔìvpˆ Œmt€;-©¬wFm%óåè;+zK)ÐýÎcæ½Ç.*ö“cWØÂ8…ÞRºHªþ²&C…ú"°¹3ÿð8Ìe½¤&㣈çà¬.æSÎfq± +•Õæa33ð^ +€¸Àls³gí¤³ÙœÕ£ ”=ºê’¯àEÑÛ¡õSM¢­ÃÓ«˜­Ÿmëõ\¥XbÓ©5z HÙð­^°*ÎI[7?I[¤jšóƒłévRJ¦€&éf5Ոã@ç픤Ú.îwŠÓpi|@ÔøA®ùµ[.3'á䈐_¹§õS½àæKçùßB̵ÇÎ_<–9!Yñwy­A?ÛtÖ~¾¸ 9:>¿¹° Æ'Š/ãFT€£“5ÇÌUæ*[›­Í®y*<‡ì‡C¬Õì²·qŒKÃS1Ðäñ|âôx\.­“ç:$§Õápr&“W¥¶ªLf•Z§c£9.ÁÏK˜Õ8bq§ƒsø²LɧPLm +á¾Ph0ĄÜq“ âPxî†rŠôýªA£rÅGL ¿"§È°’?ügÎ þÙt’¨‚~Áø%†o~aºôN 4æ`ú4PRzw$ëÎèkvæb)oÎå͹¼Ñ•«wÉù‡”‚x¼Mò 1J–®ðŸÛ~AåÂ9Á›TöÞïû3}hñLRz­  ¤®»§ãŽï˜¿ŸÙ/Íí +²M£îŽ/XŠkdqŸùç“w^@>?Ë·¾o‡Ynaˆfcß@ÌÈ©Kà¨ à„„ )œÎž:`L-¬ Im½€}blNlEìê«©5ÔˆÞº5K«—Ö\6©¿úzqs㝠''~û²Îx8ñA©ñ-xFÅ ËE¦&Øø`£¡ +ø ¨ûqK太‰Õµª|,ÖA}ÅîåÛsäåò ç!ž +¿ÇÃóZ?ïòã¢âDYEåÿƛA~J \’m˜ìcQsE0ð¢ ++ +øQEˋ@xPuµÜÅ +Ð=ö—WTƒ¡ϛg…P)QäÞ&FAFY³(j¨¢ìà&kSi2¼·®E¡#/‹Úà >^+á‹PB&‡„¤Û‚uŸ}F)G‰"‘# +)öÔæÊåÖÃ`J±Þ*Ç:³Û<òÕ +ŒP!ü'(=žwªƒ—âýДKàÄ!ò +«¼euøDë:ëú꘺[ýTûæ"„ Á“ÙUúö ŽøsÅ .ž ­‘wò +·$N@ÕvqT¢8Ál¤%«GÇîs`H·kÄyÚ=Â}DY1ï̦棜‘MÉܗڟÉ×I`Q§°Mqý«À€Ãtº¨2=Ú,Å â¤DEËÂDs@ô5@ƒá!i&q ?ÃÒÅrzÍË;Q¿¦ñ÷Pþ´•J9RȑR©¹uƒª o®Zsêߋ¨&{UÃQ•=½OÔOÔ·èóKã=¸g4uAÓ*hz  Ìÿq‚(¯QѪ`î*Óô¢^^¸Z- UԍC}’s¨A˨VØieÏ=БÖԍCªçûÃË¥#”BP!¹ò!ô›<4wd˜+”c 9ˆ?5@tA?´tȗ +Ò |PdSjkŽÑ%ª0 *ãDi +Fû¥Ã€´8njF¹…Ño~$Dûý`”…˜üAn›™2„©žàÈ/l‘h Øù dígá>ÉGu%Ù³ˆ&þíµZ tu£¿í½"jO¬¤EÕÞ²¿‘ø¦€ýŠ(ä´Ñ£`2K‹7^Ý2B+ðʣŷƒv°p1„ÕƒX¤d$Ã}L€v3+ÂE¦ê§Øì!ñs¾¤æq¾$—åõ†s~%¬+È>$"è½¢7¨­aê ÒS{ÇÎ:ÊМ®O·CwBwJ§Ð¹#6P‡° ùw<´/Ö2«(ùxvYOXOYÕVWØ갆µ‡È»’ ”—‡Â̱…qÛ ƙ»ßbï +yËv•ä†Eî¿{`äÉ"/#¥íJŸÙhaºÏJôóc?—fëϲH:kdzrVèE_S:0òƒ4ú>Œz{½È6"#&ÄzT^ú»8Jb¤Õ²uZ3 ¢Á˜ +R#C 1gŽä=ÊÔo8”¨vȑT’kÅ|µYOôƒÏ4Ôy}Þº$IzâÞ_¿óçÎ]Î焿þü{([œ²%vc±Q0–ð>ȇøb^àKڝÿ±þÛ£×kÌtÎÝFcÂb4šÍZ ¯·XQߏF¢1yæK“Õ5µ² Sht’/G­®`Õj…BËò:–AN,yLbøÜKÇy{ÊÀ DŒŠ1rî5å|u¿ÀçõzQy=¨ÎiL¬ØëÄ:/kj­ AX-/ËXY–©«ã'Œ· …"ïóy<…aêçñRq4{隦7w‹¼ÎJ«…¤BЙ½XšLêtzuƒuÔ°)-HÚaQ‹ÅX5ËÊ«0]!ñú^¿·Ì{ÊËz½`;Õm¨ÕÄbB¦¶VSSCŸ2"°F¬­¯ªCÕƾ&YÃk¸MYXÓYs¢æTº†ZD±z !4 Ãj,AÃv°±lÛÏnfw²J#û6{ŠeXh»?¥©­aXî®Îë‚@é¸S€§ÒΓ?ÊûOÞÆ.ˆ>”BZI­ZqD.ɵ¢õ’É=*Ώd›+'·ÜÔ{D¿nðŒ0Úà̗ +®Ó€SŽ%?è9kJ@Šñ jVõ| ã =ßR:¶Àç¡ |Z¬zj=ŒÇêÉíwX½ª¥KìÁZ*40 Örg½¯I˜A¦13¬¢sš¯Cè ö +W7w­ìÏߎº‡ƒ»ÉnÏîàKä%ÏáàÑàOÂG"G¢oGß®ýýÍùwð@ÝW¾ÑàWu%=Ýç@žÊ$gŠÇÔLD$¦Òr̈́ƒÐéô0Ät_Aç=1 ­ þ„æ=¹rù,—΂@: bé,y½ä{ry¹5&á ZC,µ†Xj 1m-:!!PŽ9!¨¡ÓH—|Ȭkþ/Â*'°PO{㿉­JËؖ‹o6!YüwL–UoаíX~ùCüÎQš¨:Ö&­w¿I·ë?pÌD7ü|Ý-!ïђñåT&-t\ èXBL"/½EÅ"-*D^TÂûxž÷çð)\`.¡’Ùš*¤,ïe'èRľ‰`s…zo¼‹,,\GÖX~cùÂò…W÷ÆKêP=®*¬óLÓ +§x.ñ®÷êâba¤ª ‡¨i + ¡Õ˜ÌÙ"á€ÏëÉo°PaVÅ2DBº)È!cš Ÿû…d±1B‡¹ßLÌ®„ÇavÀU´[&Ž÷³Ì9}¢Õ#'¹¸Ñ‘¯;PÆ´XI‰Í;)׫ó«!=yn§^içŽÐ³ +Ø­ªCT{’9„êÿ&ºÑâ%f’#î´\^˜#rivóÆ#’ˆ6ú¯zV%þºÆÅ2—gÖ¾u•öÓè·øv¹×H¥¬ãlã×ö\|ÌütL^ônö8{š} /fÄ §*Û í¦©Î­E­§lUÞ6ÅTÃTS›ë;x=¹Z³Aÿ„â)ÃS¦Ç]Q|¢ÿ³áóßl'½V»³Èq^Æ­p®uX·zÕ¼Îg«ci,aèô7ë(EÁÒÑmnî¨Òm^toUR‡{ux‡î°î¨î¸îﺬN©só…a&g,ÑXŒÁ) =…¡§ô2¸ƒÙÄì`3G™ãÌߙ,£f\¾ž‰9W1Μ»xµœ–öæcSe¥äí5ä½½½"ýېÕps"§ÈÓ] +:Îfª$Ñ·IØXEØ,ïvU›ÕN?ó§-?ÿª7^ýYæÍí×cÝã/m½èÀS«þýÎã¸ä—+2þÑ뙁_ÌÆíO½Û=”ùꖃïÑuõßç—ç‡Q_!M(ßˋ®KÜßWÄJy=på~BÑ ~F|¿(Þ¯¸&ù=t¯i§íáĽÉ×M?åßLü!aªÒ—Ù&ÙVó,Š$“x̺¦¬Ë)ð·›Îsø)ñ¢€Ÿ"IÐXÍ`8‡‘7šŒàHDm’Òš7 +DșÂeZ!ì¡ö +p2e¶]žžS…Ç]žCÓvƒldæUé±%+u§pó‰)¡Ïî-³³ç 6³:áÏ'é:eÞ¥™·)GèvÒæaэ2=çü™y¯'·UfÓ2f¼²Ÿ¡8ÅÙÏöÈ¥Åj‚ý÷śœ±Bí•X ¢6·G†TÍý–%üÉ}ωMá-å-~Žõ‹ûç,ݺ&s ŸÈ¬=Ÿ½];yg}°ÍdŸ[]t礅‘Äc&‰ÇÊP3.§¬¯ZU³¾–™Ûtµ°¦d})ÛŸ—ì©ï™ÀN©šœŒ)416Y_;¥”½4‰ÛÊÚ*ÆÖÿžw*©ÉB‡‚øyÆ궇11aû!ƌôäÑ¢ +[‚Ûˤ© 37$<ÛñKx9 +`'ˆ›:$÷ŠÉHu8Ay²7w$Ž&Ž'² 6ážØîàŽÈ¦ÈŽÈÑÈñH6¢Œ¸Ä1ÖʱL݌>ògî¤ÄZ®?;“#tW£Û5’W–ä½»¢Ö㠄«°ßᯢ')?†Üúš¨©tÕºjÀÖ©?ó6®¼ä­íU=ô£P嶟ß!“Û?“[]‹æyÕþm¼zé óktÔê/ðëf½å{©â[Z˦^:Ѧ1šýïo~’rò3úi旷çä¹&¿#i6Íöæ½É¤0 ­Ûü#ƒƒŸy÷§™Û߸àü ’}ø;j‰n¯×¥Ôx×S%~c**ÚsËŁËýžèíÕ/ûފ¾Qr,ð'¿¦  +Öš’2}qYI‡Z £dŽ¿;ÐU¼°ü’â~~CÉþ¦À]ü=Çûüƒ#ü«ÁW‹_Mx~åÇî,$Må-þi¯~™P½çûOˆßì'ˆçxu×’óý7¤àù)‚?È'’|ª.Ás¨´×æ #¼¥<•Äþd²´T]7 ԋFqCŠ‹sÐQ§-¦K€Aº7(Q”œW0ÿA›xؓ8×X>TöÐÑкüUœ{6¤t} ¯&çÃ2ѽw€% \Ö€|$ﭓmá?vp d9XÄ£g¤eAaäœcj„ªÞˆn³ÆísÈA‰J^ò…?ùõ‰”Œ+ÔP^…¨?'ÿêÄހүçÓÙ”èkµ§Ê3nk2´sB»zꊋ1°ì"bî]ŠiåIKÇÿ«ïDe?ÏK«Û©÷Ӟoñ—|5ð̓‡g\´PÚ[¹ê¢›—}qrí±ÅÛ/˼I´™iç#Ñ#W^ò“†ÆûÏH>ûá깋6×u~‡êœ/ƒÌ𨷈·µ; R^8¦:õpRÓ=“ø©S/ôÌ÷ot®)ì÷¬n~æmž=OMþ|†q¹gLrNç:çðÝ⩘W‰kùk¦^3c ÿ¦øÆäCŸš¦‰Ý" +áÝíƒÞÃm‡§°›Ú6MÙÑÎÔ$â̄d1³Èh7”–Äk›¦´y=¬¡¥qß~{x㦤ÖÚoš1‰nà Kª·&JÔMáˆ&ùئ x‚X÷Wxz¯-“íœhyLE7^©Ü³¿¸"ÖaæèéÏGFGÎH/ÎH«Å £gFOf–_˜ùúîôò2ºÝ š[¦êeѲ°ë0j̞£ú4òÀdœÊ) Òão¬ çޏ¡ïɲŽüû4ÑØزñØ3ò’1m“¾ÕUÒ¶¿ z­É^`a҆Åök¾ÿ:liõ´×}¹õŠ]•ZióS!ízQ<ôÝ+^]\ßÛ:¡#Ú½*ÊôFû¢‡£Ç£l4Mú‡±E(|ÜÌ€RrÏ>£™³®I + uÃ[¨×ΒƎ!,˜ÒعïÜ6›´eü²ß §¦‹~ûã€}qíÙ1%'¿ìw†îZé¥ÛX@zŽßÀ"ùè†`Ùñß7` ’äärÊÎ^¤6©Íéì9:Äyc>ª®p5ûhVòÛt­Â”‹¥¼Ñ%獹z°>L¹XÚ¹ (ío‚·¦¿`ç6½ŒO2×û@Z£ü7 ?8–ùQnWV'ól§¼Û¥éü¥ÊÌï巈ñ5™[r©̶+{\q9P^Þ})Á|Š–Ty¨«; ‰[]øV-îãy…¸áÙ^T‚¶à¿ÑŸFl_vH8˜ é]“‘œGCþ Š/Û®?÷NIüR‰¬«ïµ‹#ôBVÒõy+«‘4òN¸@ˆÙ£Ó'͟,ØBé ‘¯—’ǯ>2ÑÎiMN®su&§{Üjþ.-sã:¨ã\.‘mRq:ƒK¯â´.ýY;óéø<ÕV¾€Ù¼f³ˆ™#&ÒÄ KÝè搛p gáí¼[ovÒåX§Hßhqⷝ§œDZ/Xv¹¼šÐµHò}Ñ<ÄΩnÇSìmŽnûÇ%äûU®«¼W…¯*ºVqíZû&צ¢­Ö®E÷áû쏸 ?Rä¬Ô\G®³_ç؎Ȁ}À±Ýùò[ûoú{»•Û±ÞÀY¬¶Õðaì„‹ŠrTcÐk” +6G5¼ü^·ËIó×óSì6›—!V†!E.§Ó‹Š¬± +Enu P‘aÕDpH۟ìp£"1&~—[ðû-‚A)ô¤Hp‰ÕµU.1^íCHØ«í›ù $\¾*£‹w%]Í®—‚saäâ\Ä5Œ–8sö»3·YÏé1•…q"šuÍÄëw¼b§Wµ‹p!»ŠBP諲ovU˝I“½Ì›À‚¹³¨´™¥?òpѐUPЕ]¸$¥’q¨—dMaî-3\EÁ)üŠ2EŸ¢_±Y¡R¼@zP1Põ +ù?rÛ>Aǧýœq»F…ÓòÆ=£ôN:Ωëv;G¥†ù-ô”@ªæÞ¶•ö ö4Ȉ˜µlniZJäùc{Ø©_ÞNÝí0Y†¯»Í%¯#ƒCß\Ï­´à¯yIB̯ojʬØr9/ArEëŸ.ÅßÝ܀›*Aw­Çj-ÐV3ÍgÂ6åáølIžýæ¹¥ÚByObðôàéV’ F#± @Y…Âl¦¿>f´¥ÌNK*ääRÁ¸%%R­Ä”ª‡( Ñ~PÜý©* +êfCªÎT""]@TH›Óç69Šk Qkžœì +ö{¿“ÜìÝ!ރŸÀ?Ão™ß +~jþ4h´ã(Ž™cÁ)¦©¡.SWèqL›ÆdâÌæÖªªj„ZAT‡BA“ ÌàpU¤ÃÁ`5ªÄæV“¹5̅Â\°ºª«Ï7²½Øåöƒ¡|>‰…’dEe•  bk+úú;jȎÇ^k¤û¿Qœ‹“! ‡d¹±!6­mâ§TRý8 úq¸tæ`µºV]š9¬jo‹„é±­“…ÆƆ`Îh1tK#(ÌÕ/‚ªÜJè?àpÝ>4Œ?l¯LãºáðÏCæ .uAìn»ôsʌ'嗞¤¸«ò–ôŸnÀç¿¿(k°’Ï\ +é»Ý*NM7a|#/‰Æ\{ÔoÞsnׂä|÷Ê>Iiâ5¨vzj›Í¹-9¦\Œrñ„\,Õ»*äzºk&OÈÅR½#!×CŒrñ„\,Õ[彚4F¹˜Ö€Xڈñ­ëUtkþúK•ç€i‰Ïß\÷»-'òÒ¢Ô¿('n=›™¶Urœ–Y‘ù;O ¤üÞÏðƒ½4ñ‘Çj)ÐU“££cïa¾”™$§ < +†0øã<#gzðÆ11&ÊÌ({û1èRëEúzNÈ j,Q+4fQ‹ã$¤VkÌ(nétZÎø:Z­Wq?mo 4.ERy-Ú¿<(YL9õÏ:=sô¤ô¤ôG8Ù!L#é/è!“ËØháœêb2¾I÷EfNàI˜Õ#`ïüò0í»âS•Ikåéï2£Ì#Ð{ Ú.&ÕÔ1Òi­ÐW¢Qj-zN‡â–èjfú(ðd\œƒgÐé8­òù.jm:+<†NgÕÂWK?S5îQ@Ë?‰ÐŒ¤gÈEß|”ÎÿÆ2ƙˆ5b§“ÅÀÒmB[Õ4aJhZՙô à ~†÷Lߕ¡Bk’ÏŠ G ÜÙU½JWG0ò&LQ5 ˜#*¨u`i#Ú.«òBù~y¿l”¥šêZXKGU_¯o¿ö‰©±çŒ¦T%é’5 ã°«@òï¡ð„qÜçc<³{äbôŸmMòF4šÛE‘·4ÓCiD+—ÃÈ';ⱨ-uUáö ³fµp¸ºêÞjì™ UFùÃè¿à;^¾:¯! ·šÞ½¾ç½é~‡ÝÍÕ?½¯ÿœÇ~}Ãüv¦ñÜYÞl,|,Ìݹõ´¬ÓãtsM½ï=Ý·wõo<–µß5ëÜgV£Õ`?Ñþ‚øPéZĂDg ˜j×d6d^ ¼˜1/hN”«&0&°3ý‹ôïÒiÉ9·KârnQâꅺZX/TB¼Fiw¸»B™“j,! +Oªá~ZVÂ5Ñtçd¡ÞÄåSÇŤV¸·V•ör~.Ï'–ª8.ä 'æwSVø(‡!*ÅÉY§k âǙ6ÜÖ>tdHÃué›R*a øö”â Ô\„z+³Y—¿ãÔï„„Ô†ûpý惴3àÿõê¾U­®°`v?0Ñ}Ž¼“h´}xbI£var[yÅ:žqÛ½2í¿ªc%QÍý¾¸Â؀h. ÆÀõ;"ؤT9øù脐Å7špՈ+wÌqÄäkënó»´)oÚÔ1†®ÏÍ5-«^–]]·vÌËaKS¸±®±~{Ýöú7›Máp¤ru¾ \Fı5Ùj"kµÊ2äс–îqJ=«RÐ$Ê.Av»]ŽðæL4jm‰Ö˜åB +rOXUU†ªìÈgH~ýŒÁ)^K¶>[™ëFŽlmâ/Ž|‚Zpúȯʱd†ˆÒ96Z²bít(²jaºÄºÑZ‘ˆÚì ôa-~L¦­:³Æz6ѽXg‹.ÜæjŒÝ5gúgxæ|1ñöBđ߼ï{/_rߎË~_¼õìµ×OyôºÅþœLع@´¨ÉÅR“Ñõî»Å3Žy"çƲÑåÅô—¤ÏeèÚ욟FÖý56Ü÷a̲ ¬M2H¶Cm—áÐ»!&l6«Åh uH³Ä£ÍgeÙnãív¤¶ÐZ¿»­6“X+!ìqØÃ)4|'t¾èx¿HØvØ°Ä®Ê>1l÷Ûì\²±rò€LÉ{¨~ëá°×f°G- NãP‡~­c¹áAÜ·Ø'é¨LÚ@`é£=¬0_Ðð…&®wµ.¾fôþ.õ3]™É،X#ý%êqOÑN ´_®¿xü™Å£¤ã™+:/ðán>Ž»úøÅWßW'Ž×¦^¦ái Ï!ޖ7ðÊÒ¼2 Ã:½Nq×;³®g­èV ì ¸„ÑXåȉèÐáG‡^t蘙“XPµ ÷v­{¿)ñRú]ž=Û3Ï3ßà٘4º“y€˜&Hxp<^/‘°¢¯— ÂE¨@0O$õ;ΦpUWߔÍåOæŒ\¸Û)@§¨`@ðòZpw}]ººŠüúÙánw‚÷xdàÇ ùdU•œËó¹\žÅ +’)HnúϪry`A|š¦1­à°âñ 1¼ˆ‚& +ÂúT}ë†\ñÚçy0=ƒˆ¼/َ^äªÐ͝ÎlÏÁ:ÝZ¥äú©=Š£=¿>OåÕH{r}’BßIØ9†Q9H ˜¡¨Õgoo‡*\iøSX­€ƒ!jÛ4ºýŠˆÿJÃ=Â Ä #†Œõ(‘; ¥Rà5³>á r›Î¢ÿ ñ—UvªÜqÌ"Rä!†“”-ò ‡?¤—i8:G¹!¡ƒÍ¥!2MñoŒë܁D†2ÈUÀÎ:÷²‚þK†²z0”Õƒ¡¬eÕ;¿ e%¿6ã…ô,£UMّ‹„Ù$F ïσ[j·¢–èpH>™0k „eUÀŽ ÈP$ETůø¯RÎõŒý•£~“I¬cyðç[ݸKú±éÓ£›@=)ê$ׄàl©ÂOQÁw›Ð‰„ïp%⊼$aOW"®­²ûÚä³Ð–œ<þ¬”&t›pv^@g’ÁÛ«Tå"ä̉ÏP%`C¬ 8<Úÿ܎NôÑD_Ջ+Ƃ*Q±qí~\ ¸âqTW^ñ;ړ¸Êãˤòuè·ý€’!gC§O6œµÐ£¾R]Xûš[Âß̨4¢íÝ7d;²Imnqì$I­Š‡p=¶x^W¼kt>~ Ö█iÅϊ³Ë›Åˆg½‚x–Œx–Tì)×dc·‹þFµKKå`_ Xe-ºN1NÄÙ.öPÀ/#™[|$âMÕÃùœ("EIdÑbJí?ú-.¾9ÁEia|ì'.Šk҉f>¨A ¡¿ñm¤·L¥sJœ±Zl#Ù꘦3àHR$ Ԇë‚õb‹Øɹͺ‘ +âÙÕæ,¤i©&›î,8 +B!ZÈê +ÙBç$Ç$¡;ÛÝy1¸<ܝá®èšð+#Ìf›s9p3¡Ÿº‘S +”rq‡¢L˜ÀvÄNëèä~äòxÎÒÓ~Ç|NGœ©!¿Pª¸*ªê¬XUU<ÎÆb5±hži# + À¨ÂY¹B!Ÿgs±¶èb¦âG…I“Îêœ4©«‹íŒMí수èæ–Fèp:e-¤(‹†cr:Ã#i¶³£CÎļÁT`Ê"6»¦£‡MX³J3Qš©ŒÙ©ú|~L­©IçÔt[‡Úv››–ü™4ÈqÎÃ@r„_ɞ–õ+9?Ƌqþˆ¿Ñ¿Òoð÷S˷ƧK¯¥ñkiôZš¼–Ž¤Ó+ӆ4zMñåÔlk]Ø;Äi~ڟó禱»aüc)Á—>Y†µÈ½ÑÐX%ñ`§há8„ikjØ¥2Ô^™ÙÆR"Yò¢ÿMÖ§žëÖ·¼¤yhJª!DÜבÐUÃE%ØaÁq¸Šâ*ƒ«,®:qEâ.‘¼êÄ.47ýzÓÛ´Þæô¶[µ¢èDÀ>(®2¸ÊqHøíÀU''ã|âi)>>ڂšoä`ØÕl&›œ¬bÄ=¥ŒÙÿòÖÉ΂ÇÝ·\ÝvŽgâwÆM¾Èt#AD®»×PH×7O˜µ”¤J_wa\u]ÓÄó®#OÿBðhkÈ#ú¢³wuvuΛÁ Ã;0¥S?p¹r§«/&™£©ïñž%P3_»¬Œ!X‚øÀ\ÄÆÂÓw¨&øÇ0±£·[]-9 œ…!":Ûß½:¢­¡`(ëBYxZh¼>ÚÚ-[‘â*€(’ÀÒawXà¢\"kê2ÝûnË#!G »…‘hè¥þ{ÍGnTÃoÓK£c‰è¥¸¦B#5GAÄ)+ª€m@ª(¤¿·Etœb‡µÜßò¢…^RÖB‡ðNWÕ +(&x‚æY9WÅÒ\Õâ։YÊüµ¹ðo«›ÎÀÕëλñ^ã"2žàjâUÆù½çÞy×ÂJmóA}¼Wž?þÖ¼4üù¨²é÷NêíúÎð_×|þ:²ßðaœÉü»Ð*„ã~ˆÂs««`L¹ +óƒp¹m9w#mðj óŒõ×nën×kÖ×\ŸÿKpø“l“8šåÁÙÆY¦óüWðóƒËø¥Áuüƒ_y^ ÚƤ°Ì¸Ì›ñnþ6áÖà1þ¨ðUÐꈫ7j6»£í¬Ê.d7³ûY#+ÉRT¥÷Ó-†Ê&ÜÊ­NrùØFŽà0 Œ|²Õã ìÖ°eákæh,™Úuø’ýˆ9zé‚ o?ý«Ÿ|{]ñàŠë®üÉs7Þ<ó'Ñß>q t>ö›uß-ùáÌÛÞï[ñÌ´6wËjä¯Å†Ÿ£~K‚&øª²•%™r¿'C/LÛ.ÏÁm;«wÕ½To‰Sñº¥ÕÏf ë÷7Rî:[\[]W?)4UžÚp ¸Ü +î­¾'ó}°†Y—yl´o =#y&#¦SrA[½@þ®|[£64Úìvàõ‰Á¬„ÏëvØm:$ca9„‰c^¸»±Ê€}«ZÖ$0Õ"*¨Š²V¯Ïò‡šÙš¨y՜0¯4S ͔͛Yj±U–CèîæÐK¡·Bt{¨7ÔZZZ2©äŸn™Bb³âúaۖMeÐ¢Eš£õdˆ¡æ`Õ×¼t`1弎¼òʉ)¸_M#@Ýȁm™xJ*YÓ'ÌÚyèu÷ŠtÏlp Îktäï!$,(‹½ÂyselFqÈvÒâüÁx*;ÐS·‚DZW'…ó°ŒroPbڍ‚x¬Sã7’#RÖËÆ?øAdÎKK6¾ZÜöÞÀ¼+ß$ñ/Ņšè©ˆîÝVm+~±¾èážó~öð›ÅÝÏM&ëÅz°lÀiÃÃhÚxíúâ±'nxÑä¾â +ãydn5SpHŽzýɔ/?û”WœôA²éÁÔúÌ“à‡©çƒ;«·¦~žúÏÀ;ÍöÚX(’”•JòÌÌb°2µ0soê±Ô³©`wê­Ô{ý)ÇKòK™W™Af¨ö(óØH­åÁ¦gàSìSÒ&ùÙZӔô™`fòö¦GàÃ1SšiHW5ŒKOf¦Ô åßlakZdÄ´é¼ðù±ò屍MFcS8ãkªfZ5£Öš7ߓ¹¥ùÌþŒqræ¼Ì² @2]“’¤Q­stO”Ú¹ÇíÔ¹»+ÜÍ°ˆ¢ _OQ&ô†Cá%5åö8ª¢!k]4a–üR ›ÆŽ &€sXȪ$‡ª„þ| q…«9ÒBi³ôœ4 ’ðž{&Ë5F#J8Gt—tAVôFEèˆØ%nì.]ûÕCMÈLÆví{ÚÚ Éܔ威í™Jñ[Ÿ×ßlÓ®tÖúš÷ ž•@“þ4áør´Ý5z”?è¹&³ˆ ÚZ+(œ8'õ€’6J덥;¢%¨bN¾yåÖ¿þðõ5¹ó/Å% ß[ºáæ­h^R¯?L܅{Ës{~ïšÅ5Ç?Yþæ¼ë/ûáõO Y`ÎVM/؎ÿ¥i{Vgb"““˜ æ>sŸ¥Ï¾ìu”pØð> öªœIíÐã9žå™¿‚«û|wŸý +÷ö•î»Ýϸ_t¿éf=7މð`8O”B9X¶±@ +‚R€&N8M¹i—Ñé0Ù,¬ž—ã >O$UD×&@îQZ9Ľj ¦‚l¼6•ˆsv•Ó Ju@M$x•‹ûãµ,Ÿ§@|ñm±©n¶Ì9!ž„ !O&ÁÑÏx³¨ŠA%3[Ùʀ÷bÁÒ@Ϩ0 íN§­þßⶢv×ýr[GÇUks„1?¼.ÁBÞðUA>}sÍ:mÕ{íYHވÙ—f=[ÌԆ“Q{°¹ DžìC+ý͈«Ì€›”3 x‡O÷Ã͛š_o~½Óðú¸xüCÀF~s͏fl?­Ù>ãeðFÍÞÇRöOS™A9SÉSS{C¿î4NžØ9!J–ªé¶{h“­²æûá…©c}Ñéæ јž‰-¦' -á¼°Yi`€jq«Ì\` -/[,‡,‹t¦Œí“1‹>4N~¢¥FmnS[v#ŽÛŒhÕÃÚA3ìkh>ÔL7‹gŒ}_è‡Õ·•Eplˆ†LÕG»Îèt-bdHßg4tggÊÇû¼¾ÓûG>ÙÞåëæA M8{ÉØlDUW¿­ÒÛpiS’2%ˆ“§`Ö(&êmDoÇcϟˆNÂôwʸêŽ8 atÈœîýôˆ“ö5$;ð8 +Ô<êû‰Õ^¤Ùg¨!©¦ 2Á:BØ8qÕ#çwŒË@_ÛÌ3¯üóÝ?”³Ø\¼ÃC' ˆÌ4núÚm{ZŽ\;þœ×o:÷6:"бûqŠo—ÅœeÇ7µæcB˜ÌW&?8§¥¹ÆæÄhÇ˒Çn‘ÍHõ¿¯«jR&P33ß~Ãlœ+ v yxµáƒœ’®åœ…f;¬´G¦Dv×ý½ÎØØÔB×ÖjÍÕ&â9«UŽ×!r®ó"*ÞÎEekc?-(ùL’Q!̘âùT]œ3Ì'P‚ÔšÚ›sYÖÊÔÎM$âL.§Ö1V«gêê˜xœ €°Pç┟ƒh¼ŸZ¶3Ï ÊÏ£%‰ÚÒ§«Î˸/qԆ¾)W9ˑ<‚wî"5‡C M¬0··qxÛ8llÇ«A)];té3Ï]–\hð qÕ­á0 +–QúäÒøžèÏ&»Ä^_CÊÚCÅ1K÷Îþíé~»Ã-žöH_ïMwš–±.§áé‹8DFÓðo¾QmŽÚ=œ×]›–œ)…©¼ü]Ë7†FŠA#õ}HÃõÊ%pš¯«!ZQ+6¢ê.1¤K`WS媊·ZãÓ ®2.7^c¿Ëø¨ñûâîz±]œ.ž/^.× +*ÙÖ,$˜Q ì^rÊ0•’¨K²j‹³³8k;±¨‹qÄTݲ…á-&Ë@âàiÀú£´•s¹¢©hÌ‹©#ÎÅ;ÐK@ã®2`À2À §È«Ázð2ÙNæ â­e\.•a ãF|ÉbÁ¯Zð\áp² ä,K#áR/Àõ Úò4Ž3ÒÒa&ËÒBŒô¹òMÏ8}Ó·/НQ»7ŽXýúþmš¬Ü£-:r FJº%Æ«ôè¹æeÊᦣvRmþTÜ(›Þ.ýúÍK®µ,&êÞÛ Ó'¼õŸ‹Éùü)¢A.tñìH‚’‰dz¯×7^Ý£]hž3¼–| €q<šI8gšÄx@¨m˜Ô¬^­ÁÛ¯mõhv¥´pÔÿ!ð0v‡}a8¸\ïµÎçæ»néùì|ë|Û|û|Ç|§‰aõÔIŠIQˆþCÑD²´EU¸b‹*öá »QPÊ7$‹$º”÷ ÖX† †L îx>©z±©ÛK@ +¡,b5?Vjò/yà’> +®§ ¥º•`0ÛîVÝ«ÝëÝ÷Î<ʳ‰èU°sË92çz "¶€ÖTߦí?f< §A’i‰Ja¦œ¾YêGºã ÿh@À,ޞ–¯Á©çîÛvÑ8Ƒ•»OŸk{ µ‘gÓö²I{x¢¦ÿkQ*1v`:§/WT§ˆ†ÇÈJlÚènTš¾ \&]–^–ÓïQSXh³Ï"0’ñ|Š‚›(XC½ )ÂëÁ.ê5¤¾Ûì£Q¿HªÑ¶;ÉS]&{eJ¸­f²ÌKK¢(ƒ4D¤EQ‚% "/P´ çUk`©Ã‚ßo°Õ¨±€Š‘ž¼j7©v›)­V–+؄')ÁdVRÄâD p‚q¢ªÀ”ìl‡Jï2uç6j\‰ÅîÇoûÑÛV?ô•^ä“ µ^Ù¨ûƒIÔ`u[¥A×ñ£èºûŸ3-ÆÝÔr$.‡¶2º…Áp¸WaD®Dì òáJľ ®D h‹*;“|¸òc–+`½Á+‹N2Ér·ç饱CNËvWn•úTÃó"øÿč+¹ìÔóáíÃ-¹F¿@®ñ×Á×èːkü¥ð5¶ëfar¾¹ÆÞ.=™+Ð]xiÌÚ¾ tTéÑ:Q°=Q3 «Ëþ­2iW GÑî\ÐU|ç2K ¦çƒ„œ¯°Àø%aèr×p€ÜJA*8<+é|>ÅJ=RIëW!-nÑzõšrŽ%RÚþB ‰«9yo!§›u;}ŽSfc丰O…e9!góى٥ñ?®ßÕÍõZÜð°ë÷à9(ksXÊÚº–ìG„’¿Òº6çFO²èÈïFbO×È'Ê­n%¦¨FÕ7µQ¯Nè5^è›YÓ;¾wBŸ±Ï7§¦o|߄•¾•¡;²ƒÙ£‰£5_dý Ë…®.w‚‹çc .—…ùXT©Õ­Š"ãT9ÕBA´„³Yµz\RM¨™ÚÚ¼Ú¥žvº‰ì.gÃsÌiƒ¶½\ã’ìáÔ ðNYø¸âF·ñ;FòŽ‰mCB C +¾½ Œ…ã¶æGvvÎû–¸ó»©!BoZ݇¹Œ‰ÇkVK¤"ùÆ[.ÃGpøŸcòÆn—¡¡!-ËúqÄ ŸÑYw¸ðzŸë/ٔõظ*Ž·g G~"Ø.tÄõ¡Ñì>÷p´1™¹ËÖ{ÒÖT¶ˆæRzKÜÅyÌäR¡Wâ O¡^¸rá*qŠí\ +gÕP•Ð¥“„¦í‘OL"gŠ[N¿&‘vtânЦÉöBË{!!ð…çB-G\,„€þEÊdx’Y~®O\UډT†#ô9 "¤â˜Îî)þ³xYA‹Ÿy·ƒMÁ·Š‡bœ-ªÓÛ¼๗½Ñ؇A‹Í-&áÞâj£Ëª{Š Å_êØ>Éd€‹`·Ée-y”?GF’ö€Ѥ\\aô#šÌÃ+”`‹åqċ%irGŒÍFÅøožÏJCXô‰À@0’LV•ÂUšÃÍIœ«/´,StuVXQÐÂÛPŸÑ#UêÂÝ$FÙÏ󼜬âÑÇzïö¦Þ£bY)45Ô;ø~øÓ­yµ +5J$‰'—„IiŒ{¯g¸›ƒ$@¿öA[_€`Ê*ºËûÕ"ÔK\×H2Ò³*`¬–Ž•ÈHPßLcÆ†=$7V®•Ò‚¬ùü>*=Å-Ð5oñÚÙJLZÏ©3_‚íüæI“kŸds‹Rãö‹A¯K?ôql4ºððÅ¥YàqX‡M·Å ‘¾,˜Û%Fô…‡Uj‹>òŽ€ÉPasÓwظ͂|_a9 +ºsR6D,G” 9€, 8“‹ƒAšãxW#läæÀ9Ü*¸Š{•ú¥óª•R ‚n_Äm 68ߦÞvÀÏéîC×1ú¨ËµÚAí¥h‹SNŽw:9Œ·Gr/ÝÁ¹ä@ B®­ÀdÆ` †¦d-ÛíNts»ƒ¥U{?lÞjPmHß +æBâ`Ãùy¨ÕÜËÅí ¹Ô€[  ·žÇ¶×‰–°[Íå˜ œœ“zÜùœóeç€ÓàÜ ¿(XÜKdf,.éÔÌ7‹†É®½í´œ=ƒød¸m0£§Ô J´ § ÛœHyž ¯Ñrƒ±„÷âiéD\böÂáŠø(I•¡JÙà9Œ_ ÙCõ½ƒ¸Z#â]A< .…¥Û³È;6Ìʤð($UìËZÆØͺoWàRÜ7z†K^8ºy•9Ú +££¹ª ÷qǏRcÄÒk€£™á£‚¶WU†¾hÊðiK°í…å^›Býüm£ª_"M}¸xÜÐf8ÆÀ˜Ò7þ:†²eœ µÞs²×f†”!ïMyóí ƒ'MO{Ÿ7ÔlÈ=~~þ˜áF2# î¼ÉlÎ¥DA¨ÉåóñT ŸJÕ [q,v ¢Wä²é\J^ $ž€ÞX¬Ö¶Àãn^P‹†¿~¼ÍÌ44 Vq3¹Ü¦¦F`ÌæŒ 0¢øü õ›zng#^ ï‚fPòëe–•·C¯Ô ¿ jó€¦G]yˆìs-•†%-ì%# Qšñ ñĎî7€ƒÃ,½òîtÐÔ­,=Ðç×6C²ß§ïkM”çRv0²hä[KùÛIÞJÚd¢ÖǬNóTCKuÈÌF¥‰=&t^#šÙP$w†uÿý™^>ÏΰMµ_†}¡*1V|ØåN·Ò”™qzÃNõKð2ΕA7,Œ©;Æ)yxYïh¸ƒt^|èôéØF6¯xœ~’Œgƒr“bòb*”ƒ,här©æ†0ß{»ùváöÔíùÍà%ðÀ/2ûÁo3^'›æӉôµ©MÖ_Y-ÿÃÊ¡auÿûú­ ëxŒ¥¾¤k‰Dþ?ëO?òH ïÈ`)C¾†²´OÜèpëãYB㒑¦©¸ÕQÜ@×ÆitypmSÉà¥Á•}rRŠÂË\.4¸´‰u Áæ“Šq\f mÖá—iÔÖâCxpù€Á85/Ń øÑ«Ëår¸…:•ÛµBGéw k+MûLûÌ?+ ‡JV˜Å¬jm±µØw:í\Ðu§[ôؼùÎ>2ÒþÀŸ‚oÉÉpkdItMìÆÄüªnR6Vm¬v 2±zbêʚ Ó ™ËkçÕ%ê»Noø{ãöG˪ܭùk[]cÚ w½|ÜOÚn9íþӗ*Wo0¶cV§Ò©t՟*§Ê©rªœ*§Ê©rªœ*§Ê©rªœ*§Ê©rªœ*ÿ³ +À8ˆ7ò< q%t˜Ð‰ib÷¤©gЍ]çœ5¾u\ªÐ”cågÙrÞs/˜Ñ|æ…- Տ³61GžÌŸ]Ó1Í7Y’9¯êü:Ñ>ýôz%Ý3Ö?üÏý1€gHmÀýs¨sdÕ×d79Ô?`"è“ÀTpê¹FÐ:Á9à,0´‚q  +  dÁ`E=; Ø@xÁ¹à04ƒ3Á… 4€jൠæÌIgƒÐ¦˜ T0dÀy  +œê€ì`:8Ô¤A ü`&ùFn4ŽùVn&ô]{͂y×D¦Ï[Z;iÉÜ+\Œÿx?0þÛ½åÄËCàÐÈ 7 ÞI¿—’¢Ýô— +µ ß Ò§| +žQTV”Ër¸¼¬—Ð > ~Ø þƒ!ð+p7ø.꡹àwà]tÌ?‡MP#àï¨GQ¡L” Ú¡}déÈR°õð1ðxì¿ Á^p9úýW@,ûÀ6°v@| ‚«PoÁaTæióþ_üà¿Õ¬ÙòÜæݽζ£FëœÍX‹gØû¿Ï¨Á™AM—Z ¦Ô7ÿ—çS¾ +endstream +endobj +224 0 obj +<< +/Filter [/FlateDecode] +/Length 10246 +/Length1 19572 +>> +stream +xœí|yxTU²xsîÒ[ºow’^ÒIúv:I‡îld%È% [€„=Ac‚€‚Š€(ê¢f̌*.0Oá)ŒÒIPÉ(#ˆ(Œ3®ðgPq‰fFÀQ ûÕ½70ð¾™÷½ßï{ß÷ûãÇ=©[g©³Õ©ªSuIq°Ô×MÍ+í?_3æ,œ½X/=@®ž³l© 7œ"ØNR`?¼’Üo“¹àœ¥é pÃ4Ø +û‰Ðûž™ð Gà—pŒdà 8@¬ÈÝéðL"‰±mð5¡±c8Âp¨‡’À/ã?$«€'ŒÞ˃8ìy7$ÀHxþHî0¾{JánBì¯ðqÓXa1|¸¾:Œ6ÅÂlX¿#«âŒeÃMp–­Ž=…+a*ÎÛ wÂÃ8ëHÒG·ós!*`,Œ‡&X[à9z-?(d¸ö½p‚YEzÉ(¡ËéOLŽAìeȂ10®‚[à.è€G¡ ^FnþŽNdUìá¾æÎD÷€fášn‡nxÞÃssdšI¿a~v/{Š`§p'ñÜÝH{ w‘kœ€i*î žóX¿m°vâzÁà0|†«Fn w'É.ršüDý4–ÓEô×4BwÒ?3'›Ì¦±V¶žm`o°?rv®’«åžàvp 9 qvtsô/±I±†Ø]±_ÅvÅ^‹ý1ö-QÓÒ Ù°y݊ûZœ|^Å´>€àcÔ¬ÏPê€Xˆ—“ñd*™Nn$mdy€$Ÿ’?“¯È·d€2ê¡> aÚLçÓ˜VÓé£tݏrr¢ïÓ´ŸI,å±a˜ÊÙ(VÉÚÙ6vˆKä\Èí:îfî6äø®û÷î/<ðϧóÙ|-ÿs¾ß«íÙ*¸…Lá&ánáa³Ð#r¢S,W‰÷‰‰¿ÿdH0 › »pYÄC’ࢇ47`;›@É2Ä‘vÒ 4 ¿áZéxîqú Ñm*¥PÆET̞…uŒP×Á~I‚ +à2n!¿Â“~ƒ,Féʆ l7‹ÒÑÍyš ƒÓì Ú¤÷[Ed(ãé>î~ïUkh:½š|Ä]-¹7àAº‹káŠ9‚¼]Žf{-û”À·l ;ŽZ±ë@¼ƒp0‚^'¿2$‘ š dózv-IÂ}ª}ßC+±€vÒ +ØC¢7°,r;)€S…nþux”ŸÂ½›Ä½“±æ6[qÜ#¹ŸµpCb3£?5ÌMÇ2éò7n6]}žÔ‘"úJ–Ð¥ä é&Y(AûéD:Š$ѧQöOÁ7(Cgá¯ÐÅ=È~û„m‹N¦/C:¼‹M€Ét'ùþˆöôU” +ÚÜç¸x‘ݬ…öÐsäú< Ï£ÞNƒä0U _h掑ÏYI*»m…Íh•¯aߨاà#Kcc»‰õe'Ú¥¿ò¯ÓEð+´¯¢E¹íØl”æÁB–£X1u£ìÿ íƒ ‡Gzêé´—;Ñ^¼‡V㶁Ө»ÂaJ ^xW>¯áþ~"è…¼3¬¨KÇc§¹w‘w/À}ŒÀëb¼0’[ ¯ð»Å‘°5VŠvý&ëaù˜{^U*§)#G”_1¼lXiIqQaÁÐü¼ÜœìphHV03#=æ—}©)ÉÞ$ÛåLLˆwØ%›5Îb6 ¢Às “]Ý"G2["\f`ìص˜³/ªh‰ÈX5úRšˆÜ¢‘É—R*Hyí¡TtJå%‘är(Ïɖkräíê€ÜCfMnÀü/ªr¤_ËOÔò\¦VˆÃ‚ߏ=ä÷üj9BZäšÈèeóÛkZªq¼N³©*P5ϔ“ &3f͘‹¸‹;‰k$Ñ2ÔU3¼“‚!WI +T×D<ju –Q3{n¤~rCMµ×ïoÌɎª9k"¨ŒØ TiÓD„ªˆ¨M#/P·?—;³ûÚïï‘àš–°en`îì«"lv£:‡=ŒóVG\·wÿ£ˆƒ;ªÖ\Üêeí5î²Zlo_#Gú&7\ÜêWߍ8ö¥£[ÚGãÔ÷«\tçáBÔå«[Ñ75/P£Ö´\/GŒÊÀüöë[ð@’Ú#0e¹¿+)IéE_"©FnŸÖðG*¼ÆÙÕɝ Ð>ey·G‘=—¶ädwJv›VÛ`Æwqfޅ6-§‘«¹Ú)ØIÔÆ¡Dä92®¤!€¦¾æ ƒö9Ð ŸF‚½"sñDŒU-íÒpµ^íá3¤€Ü~ +ðØýß\Z3{°FȐNšU…ã‚€aûù|$Ž„Bª\ˆUx¸Æ‘Z¹8'{YX,Ɉ}P߀݇ç!Ïý~õTÞ£À5Xˆ¬œÜ —e¸ÆÛJ^¸1B[Ԗ¾ó-‰ÓՖ•ç[.to  ø¾ªÿœ1d^ø±IÎøšùÃ#Äùß4ÏÓÛk§j'ÏjkÚ[y[;풒Þ>ìBÛ`Žè È𗁜@‰›2«A­À>ct fAËXÔ0\c$¾ªyi£ž£^¦ …b{Յ‘ÕBƒE‹Ë4±Ÿa(¶Z‘GG¤–±ú»Ñä÷ÿË>=¢á¢N=±µ—†þÑmpK‘ááKËW\R¾du–v†ëå2ií´Yíí¦KÚF£joG··´Ï¼& Kö^ô«Ú×´œ?ýžØΟ{#£ïoÄMÌ'ÃQ²)TvÈÚɝ +Y;uVC¯„ÄÚi ]èVµT6v¦c[C¯  hµôB­Z’ÕÔԊ.jК¼½”¬ÔZ9­B+Ïé! ÕÎטÓCõ:I«Ã'TAGF'A•ië™Õ?M1ûÀwÏÅOƒJcü;ÞMåè‡óxÏI‡þ=ð±p@;§åïb“‘Jau]e…J«ë– ×w[*žØW¨á®‘…Z±fœ^¬×Š]³t4¯p¥Úèõê} :6ÇØF%²‰°á;ø®Cx!†Àm°² Ý$Í×ò +«År-®Va㺫ª +Vìfã`#ÂQ¦Õæk‹×]\¬ã¼¡:uœ–[¼aÂÁÁî¼ÖÝ_7ÊÏÆcÓxœç|ïF8ˆpá;×5òêZ6^¨=ªõRØøî!ÃÕùÆnx|·Y*¨%±±8ðXì0—«¾ v‹ÃŽÕºí6JŽÞX=Ò¥Œ*Ð3eåZæ“îòQ塟`§|z„z„„CÇð¤ñ݁° !‚#p¥£Òè[دƒîSÏTË+Z>_ËçkyYË˃4› ,Ã>OãHO¥O+ÍDŽc"Ý-ìéva»H7 +EZ'ԉÔ&Øël£šX%2¨T‰»¬ÔŽ²9^ ÍÛúbäÑX@Á†o‚ZSP‡ðÂF„ÝtÓJpi¶‹hš{ǐh1–Šµ±Š‘¦SŒœVëˆÖZP§Ö±ñ˜*Y%-ÅT‚©˜#—tù‹4v¿u>³ÿ|æÍó™}j¦'Ö×½0©\Ã_&« äÊ.̨w âeƒ¸eçê¸+TT¨¡Bèh¨Žòu”§£Ž†è(KG~¹täÔQ¢Žt¯#‡ŽâtdёYEÝ¡ÁÅõÅõÅõÅõÅõÅõÅõÅõÅõÅõÅõÅõÅõÅõÅõÅõÅõÅõÅõÅ9äW1žBz±¯Ï@Cûuô¦Žö)fÄ ÓË}_ªer¥âC|Â2„„\„BÁ¯Ò°Š®uCì–¾æQF6!¬@xceݲßçC{4 Åv +ê0Ýa(¶ñ½a7»ÐFYñ÷Šrœß³—òƒ¶”nm…d›ŽfèhºŽ¼Ê$Ä?!|…ð.Â-7!ÌD˜€P…0¡¡”€ã Ô±˜¬$„aôg$衂˅æÛa7(»¨sFz_ׂxÿÅ®¬ëpäÈâF*ݤYÃX ám$ˆ·"žøߺBOb·(}ˆž@ C4¯++ÑÜ®,ќ®¬|D³»²F©|î +>ée$3!hPœ!²ñô®Ð}Ø蛺Ë×Äò_s(䛙ÛC2º|Sp$œ€¥;|µ8ù¸Á‰Ç„¾jœ¼J]g—oT–6¢‚#Åëá?î»×Pš»ËWºÂ74÷¸/ªñ¥-À^òM3ÆK;zH@);þCìh;¦‹EbGžØ;2Ŏ ±#UìH ƒd°,“Á` œXCBO옒­Þï ‚¤"Sߜ–—(hŸÞ´ëŸÅ0Ó‰gµ´vjedX¸¶GŒM‰”†k#†ú+: YרÖFúæ@í5räôÔ@1¡·Ä*IÄQ µÓ*ݺ}Ži (åj‡{½j€Ò „xîý…w76V5ìDí²¤œË*ÜŽ‘ö²ÑÕÿäÕ2øÿãq_”×Ö/ïEñx¦[ô•ˆXœŠÅµØ¡Ý)‘õµS"[S#j&–ÒX¹oª|UC/uSgMu/u©¨±¡—ë¦îš)j=×]ÝØX‹G¬ÑáíæF:HWÒY «t [ ݦÓù0&Dº,!{3ø4:Ÿ{³FÇ•®s\S݉§JX Ñ,ÀE4½¤ґ*=]§ÚDšU*ÒؤREÂÚ@Á ’ä5’ Am  IÖHŠÿAâ$i¾@Ò¬‘Üÿ’N¶ž'a[‘$ü¿ðÌ«¬Y0µ’ÔÖ7t ²v ;¥Å#5ɈóŒÜìÝ ï²¯ÁŒ1Ž ƒds/þ +wX*'yMØ¡k!MZî;5'X"’‰êWøÝwzwr@žÑF°`uÜ`S؜QjʼÚdU#ðÁ&÷Wø½;É3ƒMVÛqÞ¶…%K–†—\\ñO©þg¸kTë?îAÀáoÖ`钥곤¦–Bm$4µ62 £“NQ¬Áp·ºërÏ×1¦ÕuˆgW7.|ÂKo^Š!·”¡ +z +º +ú +: +z + +º +^à +ÞÞ +^Ý +ÞÛ +^Ú +Þ؛F™4n“æÏmÔòñú,$ +z +º +^è +Þæ +º +ÞÎ +ú +^ë +:J(=è öò^Â$ma=Æ« KéM7‡É’óÕž¥aÕ2¡…â1á}*Bù ”¼$ˆ=ô”âž{‰Iä^"à1üK”EŒ»?AÑ9]~®|’t²|â¹r¨À¼t_Cóýv¿=_há¬ÌúÎ*<œ™ëÃYb_â,sø8‡‰8•iGD±Ù²Øò1ûÇÕY–s»-‡,>“…¸,ã 6Ãô÷°I4Á2j…ñÅ"€Á(“ÑHyAH ¢häK£ÆJÆÚØÅLªKbE[ÈxŽ +¢H™Aè¡«³,®i½xT¤â.’F`´Q1ùh]La\×Cw(60*ÆÅÆCFŒ’‘_&`¦]ô%p‡=ÒɦÖÓMî~-ãîÇ­—Kå厲<•ýkøÜðϤ=krÝ*¥òò5{Ê;Z5­A‘ŒŠÝSdÌ2ZŠêŒÄÈsÄî(ƒ&<«¡ù¤µ©©•´A+ñ3?ñÇû#\¹]‘è~6‚Ô}ýóŒéÑ'Iuôe~çO£é0:é\—z©¼ûœÿÿ#x¡KÉ­ƒ:¢X'º\®°1l +'ŒåëlcÆ»é,6˲Þ‡Çh­³5Û¨m'yô-ÅdfyP +ž½ZåÁªáœ²‘Ý„Ö‘f²=»lY`•¬Ôú–’BŽ¥9EI©OiIáRœYŠX/¶ˆ(9rµ‡nèN.+P¤©µ_jmj;ÙÔ²© 9uîxSŹ“Me¸kÜp4^€€ ö"Gzaçâ33iMLp”p·‘üÆèãßE¿þá-2ÿOߒ̤èQ÷}m?ûhÕ³wÞü:•rˆž!Õ¤è'²ñHìHòÊ%D_ùM¤ï¼nQΠœÙÁ)i÷ºI);j]33};{]û÷;>‡Ã$¹ï@qyÁ†T͕M¢BòdI2QS’â'²ŸìÆcñ½L…póôÜï[°åê×·<ºå×#o›7¾èÞíüNÞ8l޺ޛú£¿¼qZ–ó›!Ã&ëK?‘äPå¢9p/rÀ/*™ÉÍ4|`ä Êh’l&õfbæ^Æ]iã?㇠\;éVœèR†œnj›xUç¸Î•%vMw#–—«¼AΈ¨ õ¤£Eç²ÇÓ7 +Ï _Åï<Ýtê\îñÎØü”ýiU~V)Ž—ÆÙ'zÄ͗Æ/J™3¤ƒl4ltntu$ÿ2u«·×»ßÒgßç}-+²ÉhË8m€6*æI©u¾:ye¶ ø<&Wj¢¯$m¢¹.ntªâ«ò+iO§î‹ÿ}ÆÇ©˒! Ò¥tš~ʙ%%’Ĥìä¬E6²ÑFl=4[±‘, dÜ»'üŠG<{Üjÿ$鴖ëÝô‚}FcRJ‘_ƗEõ “âXÂW¯Æ?Ý2ËÏù}AÙt8w’FU+»Œ¨Yž¾Õ4ªê„Ú„º¤êSY“jʽ/O9‰³‡4*¶ížÝžƒæóäy*<Ì£vñeŒà^t°ƒ„•(žWâË6ñ¾g/óùs®æºèÛÑo_‰~ÝFÛî˟t}í¨ÿCsž¼¾÷äßތ[°¸¡ªbHhÜÂê¹O¼í_ñg¼IàªØ\5WJþ]YxkÖê¤UÞ{“Û³xÇ +™Ù1:©Ú;.¸6é¾`oқI‡“Ogš’Wø>;‘w"ÿXáÙð©¼Sù†tÏpG£cc¾çvO/¼”ô1}Ïý¾çDÒWÁ¯³¬ 24=™¥ZE;,¤÷àݕ”œŸ¬$/N>”|,™Oö[m&–ŸCrHŽ1x*4œ• ã€CÃJrª­"'˜`4LԆ¯04Ã"ԛ¼{Xº2į`_¿‚ý +öò+ØÃæ'1´>!N«}©DJ•Sij­Q’,S셀t±­ÏFÁ&Ùd[¾-fãQ$+S¡Œj’nSÏ©Ý¡j—RQÜì"ù.ÅuÐuÔŹ<•ûuQm £ˆ¶ö7©Ù¶“ýg[ÛT“Õøoj­èW3ˆQ]›òú[QÔëËá*S¥¢ í@[+iU}"‰(¦2@ Š1‚î4‘Œ’’ ´u(#þÌ  ÒPvÐè©ÿ¦ÊD­U•­’RòEôDþw¿{½0äŽ~iç*žžzÏo_ùþíÇøq I +X™7öŠQKʜôG÷ºM›oÉ¿ñóW'TO>rtískÙow—§çŽ¬ˆ¾, +Ié# +j*æ,@ùYŽ¶£í£ ’á]åá o«²ÔáE9>ùÖdñ +Óp÷poCb}êÊÔ-°Õ¹¾€Öà{ö£É2e%ÞâXŒf›á9ÄQB¬qIfÏSW³°Ùd+I°bŽ˜âƒ¼9)h­6¼=a +é D&ê׶‰D‰Ëù¤žð$UJ /eÖŸ¥א·uËÙï(Cß -¯?¬Ì~Lç%ž€« ððgU*ߣ;Ðä÷—ò + \ñ~¢3Tã1å‚Ñ÷¤‡›7¿Mäþ÷oXB|gK—L›´fò“ïü·%µ£>=#o¥gN·­¼áȼ%ë¢'c· Æ-FsL>T~¹Öюј8~n\wµßÈÅ$£ÓĒ I&ŸÙm÷$Æûr£ÁÐ.­ñ½bÜa=`ŠhÔ<2¿®{¥¼*>P\TZâW56cP=Eîªsùdù̐õg?zrùfRðúçџÈõ¿ðvãõ« +?ö±ýxëçýhþUñ¦eËVߍ†è& /öà}í&³•§ ÔÀÎcd@‰ÁçŒ;Ò؇<·—íåöñ}"{}°rÛá9²ÍîVãm–û-+“¸ g‰±8q4å2i&/Gó×±ë-B•T“HÓ%µIv[h%nÊ\”17úBœÑ.‹1™3&`š±H ÍPDUZ<Ø D" +Œ39 $²]:$CáE‰é‚d'”¦½È¦pât–Òð~NS<\3Gó8bã:8*q2÷ǸÛ=úD½ô÷ç}"4´'KçŽã ­îµ†ËU««©¸U×ñ25Ž@@ßÜx!㉔ÕF20P¡ªö,¦Å¨ûƒÌ(-TM+Z]—ˆÇ‡¦Ud%ÙouE?íڔ½É•ìI[³ðž_ »Nê–ì—ùîÙß²iï.\§Ôæ¿ð%L¯UïÚ)øz +m%S¡´ËƱ¬Ã¸ 㣣à$nF1˜`­ïæÜü3âvã>n¯°Wü@è§ýìà|ž±D(gð3…•ÆõÂzq³°Y<ÁâP Y„FXíc‡è!öýŽÔàŽ0¼ð€ò™S ‚,B‚ZÓÁ6±cLÕ&—§ˆõ° ÅÊa Ëa/фÞww S‘bñÒëI®~AD/½·s䶆Ñ+=ïˆV”K§Ã­™Vݳä}¹îü¨ú?Z˜¦:¨äâ+‰~šJ|ŸD?åwFÏvœùxÐÿ¦¿Ñxv»èXuð›øCü1~€#<áUÙQUœÇÏd+ùíü^ØGö²Éìù™Q>eÝG§êïˆÄ¦DàîHŽ¾ŽÃ`ƒücmƒwÃÅÑ ·µ¢æ°¤FßQÃFì9@ø­x˜ŠŠ£D-Žñ0â ™s¨>JWe±æªÄ*ŠësZrh¦áyËs‰ÏúX>´} æ娵}9Çrø [†#ۑ’9$3\ +eb‰­ÄQê-Rccãã“:Ã<Ó6Ó»†Þk¾O^™ó,Šÿ8ñƒäåÃþB'à éËÄ/’¿–¿ôúþnµšÌ¡‹r¥lH(D¬6IŠ‹wØí b€‡°‰“$ٞ€5Þäd9%5!%%•„BrÂaìö䔔PØä +™Lô¯ öÔK’bš’gÙéA;±÷ÐWsò”¼”X +=˜BRvÑWÐs#tlWH•±ñJB~˜´„I]¸#LÃë²í®WX´ýÚ§TíŒPÔTßJ‹PæÔ¤ÝçåR¿ö.úz ª>ÝçmÞóÚ¿gυ—aÏEæ_ûÕ ¶Ø‰.©,¡GCq:Jê‰ ò"zQ*“ÝR¹Ä䋪WæôÍD4º±Gkq!/Z‰‰Õûäó·®r”¾³hźäµÑO×zŠ‹o˜6"¸.×W-‘ô< jÐOëa;„ï€ÃIS,u±¡oIeŒŽzÈÓÝ9•zxN¢zÃKjnÕ># Fœ®3Ü`”Á F*îRýVMÛñ4õ¯N/p$PhjÔz+ ɪ&«F²ª…Éʅ.8_™Tº´£ZÕøBmŠÏpjª¡~ö ¦3¯~±¼øˏ|ægÆMÍ×\1$Ñ9;zväì«ï&ôíw“£?$æ)³fÕeyÖ¾;fnô‹Ïϐ!Ù ã²SÃ).§<£`ҝw^¹býÊÜá)Áò`V’”5⊩7?üɳ(;b_0™_wÅåû:ö;Êð‡¸8ò+ÃCæû»—»Çp¯‡#Ä&–p,Ž=Éö±7¸ØqNÈb+X;c”Š¯þ]‡(·“:y»`%Éi?a8&}åìG½ÇÈqîS;*~d8jÿÈÃíöH$ïsÜK†Ýö=d/Ç=mØlÜâ~Ú!»Da¥}¥÷An½a½q'4¸o5.w¯VŠ+%!ÍSÍ16°cc¢fÈ4ÊRº='1Ó- eÀÈCæý‚Wb6sn§“y˜Dg‘ç̨óÌI°³š¬v)žõбÊŽ3šAiҋ6 1äLC NPv‚ñfûˆ*DÓÆ Dô}c"‰ û»‹^^0 Q0šÉØ¯Ð£šˆDsz‡3âìs2=ÞísžtòΝt$‘DÕËÔ>æ?Ùv\:~›ôwGwÞɓ­Çјª_„0^)_cÍ ÐL€;ï¸j&ÂêˆÏ͓±J{.½°ÔoFxñiqk<†)¬C–AÓ+êß.Jã7dß ã&nώ4yB¥ñrÆOz¤=£‘M~oëю÷¢UËíþ ñ=ÛÍó‡võ7õ ÿ—Ò8B®#'È :ë_%Öð¯w«šP° +D«–žÑÒIã“Ï´EMæbËÔ¸¹—Óåt9]N—Óåt9]N—Óåt9]N—Óåt9]N—Óåt9ýë¤ýÝ,Õþ ˜ö¿z$©¿ÛŠ™àØq&Ϝ’Y?czu K¯2þ¿z8¨ÖޜʟG,†o¢¾Õ?OÂwÆÂ8˜“a&LL¨‡0û” Ó¡†€Î0ä±úGLH£Ú̾1»rэsÇ-}ã‚9õÏþ‡áÒâ Ä.©Ðϧ#€–Áÿsà÷ƾÒ^ChTû ÔÿŸ?îü¿n \uþËßB·ÂM  ¦\õb +ŒCºwœ–•Ø/é7èúòß<ڟ…$ÜÞÙ¾³ÙV~ÊàÑî©É»KTüæøš©gVŸ=göÒq,ãùsûO±]èê +endstream +endobj +225 0 obj +<< +/Filter [/FlateDecode] +/Length 7620 +/Length1 12704 +>> +stream +xœízy\Tç¹ÿû¾g™9³žY`€Î À Û Ê\0•U:0.c↠4¨IÄDmöě&iӛ1M*&֐4i–fÑÄܛ˜¥¦1‹m¸Iúiroîs΀Šmïm¿þs?Ÿœ—÷=ïr–÷yžï³a„õ" +ÕÖ,ðä!ùðl¦aÙêÖPtœ}!¼aYW‡mZÕ\L¼ãOW„®]}Ç/ú"Ï#ÄüáÚUWD¯×d!”0«mykðLμóå¶ÁdaLðv!eÆ©m«;6Œ¿ï4<¯cÕÚe­Ñ±³!ŚխBì\2×Ã:²­i]½|üúÅÒ8´v}Gtœ;K_¿<”ðõMípýŸ¢ +Y3RÁ¾N!a¢½ü љ±&·‘àØ7èŸt(Çë?ràSÄuÅ̵ÿð‹O¡_£gÑrý:ŽŽBùWtÌ¿ˆ~ sR ¡—ÐÃè0ÌîC¢ÐÝèú±<º¸ ¡ÇЭ“žzHú#´z h5ê@ÛÐ´Ý ẅ́¹~”‹ŠÑFÔ å'hÞõ-º݅v¡ h- l'ºýfžDo¡ó؄F±{q)I$•ä^œD<äj=ìçqØÉcd ±ãð(Üuìí ÔOØC…Q:ìéN&c°Ï;Ñ\XEbi]‰¯¸¨° ߛ—›ã™’åÎte¤;ÓR)v›œ”hMˆ³ÄƘMF¯×i5j§T° MŒ²p8®¢éH¼ÂmµÛíÍÙãã„Éã0•ÆÿÑFÆIY¯¸)ñŠqÒãä‹ã«ÃÈ®rTTJ>‚ª> #S›ÃHz 6]o¿É\éð·‡ã+‚--pG¥ƒ·…«¾òŒoE~öµªÂQ±\•…Ž¨ÔÐUC® ÁUÓ±Ü!Uþ’#)µÙYa£;LÒüR]w·@ÇQ O‚Ó¥•¡±á=—/!¸m¢gŠöp˜­+ä÷ÚÚÃbkí¶ÉØ3Ä£¥-nMÐl] œk…=ATš¿­Nâ£_ª-m¶0 —+ÌØüm¶‡Ä[ ´ŽJ¸ë¯ÎÃ4WÑ´Ó>l áìÜá™pÅÌMç¬Ô€?®Ý& vÚÂ÷Íkº|Õ.µÍÍÍq°á¿ó¯,Râ<ÙYQšÆlY)½se«´OÿJÛÀîåò^÷È{/õ·`Zÿ·«üA‡?Ø,>½",ÖÉ'T·°I&XWÙ<>5~¬ÐòJKe³=ÊìêùMÒÆ­•Ö¨Ø/δŒÏÀ„bÑ&í`6< l[f £ùM¸´Xj–£eÅ2xìÍtW˜I㶁oP·8F¾˜<Ó:>æñß ©[å¨j¨rتZZ‡Æz—:l¼càHuõ@Èßo­m‚»†ÆžÚm Wíió-m¸x/! j~S™ÕnhžÖN @ +€¥–É.ÀßìñpÕ5ÙmÀ¨ú¦f+ð©Iê×A?z–€À-³MâÑòâ‹ì©ïÚí:w‰h) ½óš¢cZj}‰7È£EZžX‰©—Vz'V.ÞÞ‷<$7V:/þéùX“¿­$Œcÿ‡ååÑõ°©¢‰²’æhX)©§rƒ¦—†-nèg¸@'aÞfš†­¥Í6Þ@’ÞGõ¼…M6ÿÀEDgÆ)•pPw´¶ Œ«’z€‰³T +±IUaÑQî‘W‚gQ˜: `4ʏ8ð®yGD¼kÁ¦cN”ò’õ˜ˆP¯¼JËòxÙFòœrb£eC$:ÇËspd#‰“Jud>ÄÎ -£Ÿ«Ã½P“¼T@º†úø)º1ˆ Í@õà»ìccp-¹ºÏ?‹>ý,A°ˆ;^´ÄþîNá‹?d ¶wÅwIÍ«K^%¿yÅ(¬}ßûÊc¯—•Â³O¤ +wÝQ$ÜyGžð#¨wìËȘ%ÜõÀ`¶pÌíß7EØ7X%ƒžA2¸Ï&Ôì[²Ü»‹gϞ%ü‡¶ úÿ0çCñÃÚC²âqN](í£öi _È?…Å!Ž/DGù£¶£T˓¡'Éǟ8„sŸØ4’3Ò2BÕ¾ÅÓµ§C§©?n‹¾z"Oøê½Oà÷Îd gÞ³ ï0Eøà„Q"îçoéxùáco©øÂ7O(…S° ?)œôœ¤Þ8/ C}¦»Zøå A8ÑãnÞS-ìÝ]-ìٝ! ì®n‚º»g¦pw_‚°«oŠ°³/Sèï +7öÕ +; Š}¥Ó +ûàÆû¶…í½Õ¶žjAìQYØۓ!tàg«_mÅâÖ…®àÔ`u°9Øì²¼Þ.ÄÆd + +Ö.ÄÇe +4eLÆL!+[ŸéÖe¸ôÎt]jš>Å¡³Ùõɂʘ¤‹OÐÆÄZ´F“Y«ç V§áTj «Pj(šÑ L4¼¾WOD¶—%"ÕK=*C5Htö Z<0X‹zÐ3è 4†”Ö©JA_¢(ŸR@ÅJ¡Ö‹ÃÆjT]W6a8/({ÝÕCJ4?œç®sµ‹šŽ`|s3̆É.€l]˜Þ(­O´pQÓŽ—–ûdǽ!ÜÛ·w¯õb¯¹ÙV/h +‡’šÃyRçÖ¤fä†c}ÇúõëÝã8ÂIoÎ/?rž–ÜVkø¼£òÈïÏË.,ü{G%A¹+ׇ·úÛÂ[•î¿ù(÷¥%©#¿j‡¼´¾ÃÝ9ùâ÷Ķ@³ˆdƈõ‚“ù(Kh$UÏk¼&7¹9vƒÝ †«¾ëeÐ÷ÒAGÒÜÍÐü+N‚»uO’ÃÔ)ìAž¸ËaòâU_— ‹ˆŒý¢óˆØ¿÷‰ŽSª¨tº^ASt/Ã2œ’à­ +D±&ÖÁ°~v#êR("§-R(xdƒÐL‚FÔ`ÆÎñEˆáC1™L 3‡¡¨Á +«8¢–b§Ìhñy#ì ¸¯'àõ¸s;G‡‡‡ù£áaå°ÝAÙ)¶S¦G^ÎÝú§STf«‘Z|8`N]è ¿µÃk« ט +{A©È‹ŠY„#—Æy9?·1½3·#ËJNÊNÊÎÞF3fšfÒºC&lŠí6é5’¦Ž5š±çû˜r']HWэtÍÐùù%ô“ù¼>kÿÉä³É¤%''ÓIƒ •=B)1!ëF|¾ÌêVðs2=nŸoÜ9ÅÝÍ?¯(-ÍE4vر=/֒Œc̬"F>QùÎô)؍){^aÑt:ìãCÚ×zúÎÑp#~ôð½åEEƒÛ6ôô”&&dn þn¦zs¦—Ç:s3º×FÞځ }M«™¿aFs*6#¥]ÜöëB¥õ¶Žž©·2‹Œ‰úHU¼5µot¸ØŸϏ¾š”æ9 éû„ùŒù¢üub£6«Ý$ RÀjÃbÒ¸%i« kÒz =–î4"Z­y£SS“‘)5•*Ó`™j•Ä?WB7u4ƒÿӈDø‚ÊF¼©VÔ5‰:rr%¨€£Em­–͹9Ɔ ùÆ¢ÂT/°Eᘂ%âSXKḇ^™E^K“ßE>‰œØÒ±×¾±íӍÙz{EEÑ¡Å{~ßP×òo¯,ùiՌ¶4§=ò¥§aíë8ØãÊ*ÏÚ})Iéí+"ï?øú'n»P™ôiä”¤Ü‰ù£CIhµXc5d‘,C ·Ù¸Æ¸<1D6«fc‡u]b(Ik±lS(Í +…Rߍ†QÀÉ>e¹SQ¨¨R4*ºŒ"YH.Q<™;¨¤,ƒ +—áX › Ð# (Æŏ%b Ì—ÿõï7F¾x,²7á…`õڕ¡SóæÏÚû`äoÜòQðþ‡©ŠÌ½afs*{ÎÌO¹þÁ¢Â´ï;=¾Åx‘¤ïeë25Ú*Z)VAˆB±M¥6«Tj¤ä•D¢1M+‘$6¯i5>u¹SU¨ªR5ªºTŒJ£Õ”¨žÔ°ûNRg©¯(ª…Â¥"ûԔbŸê2Ì_¢0 +xOÀ¸x¬G+fÖ§_øº…ÒC»]jݸ‘9õHdñã¯={Œ³¯COƒoä¢hN§N aÉZí–¤°;8ì 0Ø)¶3]/açèá®7#o> ä_&•ØD}ájëwŸƒÁú5MB_ÿØG¬•ù +-Ë\T¦Ò©I1ø”ù†e¥¡ŽÔjMÄ ±Ý"!ªG2®3õX{c‰ÔÓöAÖHLKî掦òߎÀ@×ÊF$=ÓºX§¾„-ÐÏf«ô¬¬e㘻¨k6`Ž± ßy¹¦±Öε×G†_Ž|9½aÝìsxJ¤¯®áµ¡[>]PÛðÚ±½ŸQÏ=9tÓÞû\Í«xéîþû#¿½pøzÿÈ«ïí­‰|pÇël—(”,²äÉ#¬Ê¬ÊJsKÒfÔcféø8&Ža¶± +3Ë* Ý!Öéì¢Û|Šr'[ÈV±lË°6»­„}Ò?(C–TP,ÈEFßÈds;ÙÒbdP—líE#5)ôÌÅß÷@D»v=î›:}åʔTwç5Çö>¾áÞ’Ê +òÂÜêÑ7™S9à/mz{½M‰ö¤Ñû³r|7K:–³,fú…˜œm´¹ +b +R«bªR›õ 2ך–¹Z27ò]ŽÎt+©§å‹’Dhâ‡ÆΊ³8M±AõۜB[²ŠÖZk‹•¶Z…A ]C/¡ ¨(˜Xu·;¥Ûì6S(O°%P y¶<1¯6/”GS™p#è݈gD6µ¹1f% šÔ)Õ])7©ûSª¥(%0HaE€IIM/òÆÒÀŽ™5ðWì²v¦.ÀºqO¥Ãdö¾Èw[st-زýíç]=ãçóî~·ãä»ÆgëfFþ¼ïï^OϺyKÃâÿ´N+ûxQë#;ü‹cv“ã'[ßÆÖYoϸæ¾ÍåÁx½Û”~GçÒçüsê$n†+ÏˑG»X… ÙFÑfŠ¢yEŽ¢†iQР¥ŒÒÇÊo¡0¢xÊIRUT#ÕE)(%§,¡(NYíåz8ö±(ÍËÁl¬H(Yw.àöz=ö)Û%-²3÷ŒŽDÞx 玎8éÿ`2¾{‡Éxa,}/](Û£{ÅyéØCMá +Q. µ +Ϧ®æ©Fn9^Åm!©ÍœA ñð}@ V«¶s¡h¥b+ x!³…!£ä Z&,‰¡ÃCc¿Áeª8Aؤu!a›ÃŠ,ÅJá,]7ìß ~T2F¹@ÐN~T +Àø CW9ŒQëCyMþ” G >É=ñþ´—3ÈL¨ÕÌ©ï<ô©ï=Ì©ï³èÓßÛè³ écÑ é @]Ú#6#É““æ)1ç{fÇTzê2Wdveª‘F[\œÜŸ›oÎÍÍ/ôå—ç‚“*q¹bsŸ*bwĊÆø¢Xt(3ћX‘H%&f›j\ØåJ;˜Íçs·›b”žqHFUÖãá?5È"9çÞ©›âf@;u¥¥ÌóÏçæȊ `wý +yàHqäÃ[SAo£X•¬–F2Hà¤ÔÊ;¾¼z^ÝÒkýr~ª5ãÝ:¿ïǝë×á²WY¥Óáן©T¥ùÞ_~ò$Ç>ö4¹ŠuØíëêf͝绋Ÿcîìî;Zâ󲉮؜R£Q[d=®wnßkfU¿Š_±fd{½A¬Ó»õNÓ4]I¢ŸTÅ4Q+©õx‹r£>dêŠÙ"èˆC‰e:ž¦â’“tÚ~Z“êӔ;Õj¿ºAÝ©fÔ©i©%êc©”p»WÛ°ã¼*»dÖdQÁÁ¸Æ™é +öR2ýXæ‰Ä*YŠ è‡VÔ7¿ß×|ç´ø0¾öxoàñՇùMqqÛõ ¿j¿¸±®í_ȅÑwÚ×lô¤±æÑÓ3¼2zSãÉ®¶ÍÏݖâ\(nû ¬Ð 6‹F€3~¸Ü:ϺÔÚC)u’3BèÀ󖃂Áƒ(65U/™:#X9½ÞUãZâêqQ ;ا¥xPˆ½—ÂA°B`‚œ²Ñù‹àoRä–'qåáiSÅ¥ 1ºméÏÊ]js©ËŸûf_ÙÖ¬Ü:“:£ñ¹ø¼Âü{ÚïÆüµÁδßsbb“"CØ{(5ƒ¯}-ÝR¬ûˆÉ—bŸ¸pvÂ씕t2dØbefÄÜ4¿Ÿ˜Ì„˜R}¦r') ~Ò@: C$ñ‹ž¬%=¤—ÜJXB@ IÚÁ=jB–zžØn¿\”ßʤ֍KT¶=:¾TYª“ýènÑ8Q@[LTീɌ:ní¹sÑ=ǂ õŸoo>0#t[ŶÙm‡K +|í]uÍaÍþ¢³qÚKÏ܏…U×u;øÜh¯Ãl¬ù°mÓ¶º<É7}Jo§· dºLÌ£¼Îl\>GŠ-Ü!т-{ˆçíö¤ƒªØ*®Žëà(»Ý¤å, TŸIŽò9}‘ÉäJØ¡}z"Ê1ø|²rËºëF¤ˆã"0qJj/yIWíÉòFµ›fèÎm7¿ŸŽÙÏ#ÿ…oÄÉ'^1˜.¼Ì2Þ³æ|Ú•W;}z y8)#îº á[G§Ÿy{ñÑ_þ4y{CRqÜÞû +cLÖëy@m%¤È_°É(íºÌ*՚~“NkЮMÀ"W˅8Šã´HÏëmz[\Ž>'î–8Eœ>.AŸ€õñ>C¹S[ « h;µŒ6>!¾D 9ñA6Ç`µRwÈ ×JчÏWÍóHÆL–ªW±ä‡=/DžÃùàz² õXŠ&G‘w\ÂÔ ª¤çæ͇¤F~~æęžÔ¥ëËãe+\Ìr•qËvç >êÅiÏ¿£0Ë»0£xtðh‘©ÊÔ`¢â†ÆΈ !õŽq™]1íº¶˜Mº 1¡¸P<Ç(•ý˜6cLëõZ³9Öěx¾ß`4 FÚ`ÄOÔq‚ÏXî4ü†C§1$XJ Ç4·[x#b Èã-›œÁ|»sx<ÂR|ÁtÇɶ@ìZe3lºdŒ.(ú §|øø~vÁª¹GŸ=FiûuO/tm}ùm N_u··žX}ø§/ȱÔàŒ®ºk,ô“ ?Ž¼¿¢}£+=’Éü¹©3r(µÓ‘¬­{=ŠHê<˜#Z#&Äk ÕUêz5­Q@V£V 9•™ãTF‰Ðb4šCflò©Ê\çç¸NŽáLfS wÌà¾]¯Wë908e²šôÑñ"øt¥—\º Ý£N¨2ü¹×«âÄØ gß±úܬLꠊ«/½ðx00‹QÀŽ cŸÐjÈ|h—˜ÄÅ0y 11yÞ +ڼïf¾3[Ml¾HBÁl謵`]¾ÅM'!»=ãPo“2võ!«Ûòù|[>•ïÞaÉ·P¶ ‘ÙlSõS…©eS{¦Ž§²îh*¸,—•Rـ”³Êáb‘WÎH''­…ãnõÒÇÃ+RW|{÷ 噪˜Š|ÏFÿÞûæ_•¾º¸3TY!þzcðŲ ?#Ͻ~z÷]s¯Î½.¯£s¶æ+Öé©/sã,ö¶å>#«·w/¼z—¯°"/mX›e1%¶/Ê«0ib4I›_µ¿Ð'ýã¬wì÷ÔV攌nkŒ‰Æ,c©éjS³i•I‘ é|’5ΒDÓý–D³Å’(ø܉‹7CÒTnlBI ª±µ ê±1iµ¶x 2óf›™2‡q"IŽ;”hÕkµÜAD— ÷2ïˆô½Mò9^/ðÎ+û€úDRŗ–*øèLj?&…]ã•’˜¼µ5%²eƒŠŸt­3«Å=¹`v÷¤ôT¯¦‡FGӗ'Ϟ™¨|@gܸÃV–Ašá‘g$O¹ lÐ;€ìxô¸L¯”™ÊÙÔlåVE²ÇÔe”y6ÙH¨¸¸XH‰9¸Ž‡à:^¯Óõk5f­VÓ¬½NKâ5Z)®–l%©'kÈf9¾V5ÂÚrdy5œ„ `‡CZ=‰™ˆ´½’¦{å”2ý6'eù:)³dÀÃY)…Ü “"nà€÷cLô; +$]wìÚ[à”ßÏñísž™7L¾? îeßîÑEÞ½1=˜ÔÐÐPL•ý^°k_ý +ˆ8óÓ†H¡<‹mb7@¿ŽÓ7RQ ‚Ü€”!™M¢E¤©¥>€ …‚Ósø:²…ÀA }$ja–b„RRzl~È„ 3ª*`¼¥ Qþg‰rXú‡ü“7°ÿ•gï!±¯E‚ø:ñ³TBHø_‹÷ï*ûpþ ±ë¯(çÉyj!õ²Tèý”T×_)ϲ>ö_)ŠÛ”ÊFå\>áªÔªVÕYÕYµOý–æ*ÍkÑ¢Mý¡üP~(?”ÊåÿF‘Eä_ !dŽþV +'@e¡CòæÕ,ÎHÏI­?sÖ܆¦õ³«i…ÞÊUÑ?ü»ãÿk®‘[ZâÏWÂØ´XjaL#éw.”‡æ¡´e t”ƒRQ-šf¢Yh.j@MhªGh6ªFN”† +!&©D%ȏªP‘ü#ðž@E:„–_l]Ӛ5»£uUû2éøVÄüÝ»½â§ä_¡¯Æ&Mà‰ËðÅJN¢ÿ·zmþgU¦kìQf ªb >ֆf2úÿ¹²'P•\ç¢~ú-T5Q™ (Ÿþž¨Š/°ãï©ôë(¾€Ši7j„s=ý> +stream +xœízyx\ŕoUݵûör{U«[½©--©%µÔ²d]kó"ƒe[¶%CC˒mYبñ†mlIxG6cŒ yž@|™@‹U6 ֛<&l&C€ÂòB@ $†L°u5çޖvÈÌË|ïŸ÷>néÔ=µWýêÔ9§Za„ " +µ.\-GêSx¢e]ë;S™tÁ:„ðº®-›|mƒÝ+!ã Hÿ~ujÍúO,ۇy!æÃ5붭ÎÔ×µ#d»¯gUg÷ë» i„Šþ2ã=aê1\†y(س~ÓÖLýHô×½®¯«3“öÃøÜuë;·¦ØNò Ô2}×u®_59?¥¿`ªoã¦LºhD)OmX•zú;ُAýsQ+Y+Ò¼^DÞ©ø«ÈäL¼}q,wO|†þ/=ü$ý=~‘\’³æïŃx+îRé܇;!ÌÃ9ø8ޅ¯Çëñ5x º}€]؂yŒ¡Dƒ1ú û•4Çÿ„Mè5܁롯ÒÉNÇÐ+èOämô ð{Ðè :‹~‡þŒ 8„fBÞ”‹òÑ45á:܊{ðMЫ—A­3Ðö}ô Œe€-؇ð ü}<«½‹¼Cþ‚o&—“óÔs؄ƒè#ôYIÌø»ø:ýa F?Cg©4r  Ç©rêûè0º½LF ¤Ú¶šêUñʊXyYi´¤¸(RXŸ¹~Ÿ×ãÎq9³Yv›Õb6‰Fƒ^'h5<Ç24E0*ÂiGCûp6qùýþŽâÉ´óâtš +‰ô§‘ù¢J®Kå\’v_’öL§¯H#kº9ÐШt<ŒšßO#K[ÓH[.‡‘&5u÷šÖ¦³º“IhÑ}éæO¢“SQû´ †UÚâ"4¬€€ƒº©aÜ|VÒÜT3L¯/.J›#ijR¨7-Lh„ž ÄòeÉÈÄ衯!h6ÅY2N³ iN×·6-u¦ÑAßpÑèС­LFt݁îΫ¹N˜ã0¢BM=m +ŽM +%{|i:W#äøšz|CŽ¦ž$āFhõµù­ihßïu¥ÍðnJ›"é9PcÎöw]ÔP“c­OI í÷¥O.jÿj©_‰;::0ᡦt5õÖÃRÑâ¢Ìš&èNö*cöv*ólêõ \¥Îõ:µjSlLçUkh¨©;ÐÔÝÙ]Ÿé½!-µ©/Ô¶¢]] @×Ø1™5YJhµ$ÙØáπݲ¸½A™X ³Ñ•Ùöéœädd4Mú”̃Ò¾._-n@ÕJ´jꚡ +¿C«Ö/[¥™ð }†Ò8ûèâœÎÉ6$~†¶9Мjøš‡’C#ƒ+>104ÜÒ2”jJ¨­íÐjdâôAWºùPGZLöàÀ^‘€æÅíu.¿©c*Ù:•D R X‚º@þæM¾eÔÖî÷PKÛ;\€S»Â·Ÿy+‚‚;öx6£U3¦ái˜dý~E:ŽHh%$҃‹Ú3iZézIÑìGR)*±-UJ§J¦›'0ÊcH1£¶4žþ3ŠvKSOMÛÿ“âU™ò´¥¡r‘Ž G\”Âi#pÒkÓYàó#C° /Òb$Í´ºj;|¢ 4€²{K-‹V´ûš†¦¥ “3¹RE@ԝ=C“GIz $5Ì DQ-tãS2šÓR >ª–t¿…ÒÔ[PJ£~8€,–ð%+ÚO‰`i´µ?B0iHÖw ¡¬ý”!IÍ%Ó¹Jʧ¤P‹"ª^-r’TKi5CMw`¤æñSyuLž¨æÁSŒ$yA^ŒaÆùÇÆ?Õß Þ u‘ñëPêPO ­ˆC=ˆA‰h6Z +^J|bêb)«í÷ïçxÿ7Pê5,½ŠS¯`ßË¥/'^ֈñÔ¿``Ÿ|^ãÿë§f/ðÒUÏéÄøÏ ñ ýôˆÙû?N˜½žðy¿ t÷‰ ÷. ‡]ÞO›½÷·{ï<^è=v<ä½è—Çñqhb¼×{/9zØì½è0d9œ«`; £‰c¾1i¬uŒ–Þ­¿IýF™‘äø -=­1Ä۞J>•zŠ2žÆ҈ÆW + žÔñ÷Þuyß?Æo¾aöFߨ{ƒüúu—ÏúƞMžMe•ÚƳZ1ÞúlòÙÔ³Ôÿ|4[xèQè>úHÝ#$ý°Ù›z¿ôŒÙû"Ð/w–zïÑgxï™g¬Þþ™—÷ÖCÙÞ[f{ŒxD¼Cý-ޛw¶xïÙköÚ´oo‹wÏވw÷Þïށ€7ºw`ï·öR¿Ü‹ÿa—É{h×`‹÷¦ïà€Ã»s Ä;Ð_¡Nç¾~ƒ/èžÙÝÒÝѝìÞÒ͊F¿×n+ôr¬ß›í(ôҔßk1z‹Š…C~1œg†Œ¹ƒÏoôx ®·Þ‘íÔÛìYz³Åª7Š&NoÐi´‚ŽåxE3:„‰N4‰Ä²D¢)bDuh!@´Eíö ú%š@¼k&ï5Öð^ªš÷¢¼·5†ÓæÔÒVŸ¶`x/©OÇ"-#É)}þÍçÕ¨¬Ôoò›Ba¨õÅ ƒÎ+oŒrÊ+¡ ß ­m’@^ÅÔKXÒ[ªp42†¢ce¥ØâÇ?”¬÷f8ãI¨ÿkºKÍ'™ð«„a_e æ^ò1˜‰&ÆbQ¥i4Æ~h DÕdY}‘_ã›Ïߣô6q/Ü~wn'¥«±kâT3Õ¬]N-ç9†×R m£Cô2z5ÍÐ'–ÑŒLœ“èÅ* Op?‡(ÖÂØJv6ÛÀõ²7¢­ì œ–“4ú*ŽQ +¦Œt>¤#Œ_#V!FdCݞÒb­F‹(†¥­3gUÃÄKq4I˜bÑD,)K썈ûÇ££ü(Nøýì§(Ìü@ޙ;þÆCrµ?ý§Zùy\*¿À¼x¡—d ìxêÌë°2#xÒ~t—TQÄù«ùËq 3Ÿ_¯d®t^Ë\ëÜÈï0Ýè4¸mVç&Ag]vŠÃœ¸“ærP˔Y£€1€s«uõa!.4 ˅-#ärk„ÇsiÊ}4iÃ6›`=¢£’_’GìÀWž9ùÞö¢kžø­üۓ'†þ¸.yñÖª¹;ݸÛ^ÇÝ»úo­›%ß¹:)Ÿ?|ädß2ùÛæ˜h³ƒ0‚\° @×HRZJ-ñwûSTÊÏf;7q¼•ãxãÎí€ÙHÈÂÁj¾>ÌŹfn9·™c¸`(XÃ=Ì>ÂSÎ#œº×_ÙdñÜÔöª{‹8–€È¢<¶6¯ç…s•}­ÁU—᪸™?¡_þøÌø{¸ÿî,¦[¯Û(_·àŠ`Kiɖ"ýš=•Kc·ÝM—Û643/ÖÏXðΙշ[m }¡•aìÎù8 óUdþ9X›€IFŠåḛ´‚U«xeC­®ŠOј¦yU´kõŠhë}z¬«êÃÚ¸¾v³–Ñêôºíã:öð Ô[)¥$*I¥Àz0¥%‡Š;¬–òëÇþJÈ£‰h$ƒW[[†)ÿTÀÌs³Çç]Fö֏߸œ<)ÿ9ng^”ß—?—ß“ÈïÃä'×qX ê“L,E8e¼ÆÊóšVgS¥ ­Öԇù8ßÌ/ç7ó ¯´5üãڋ¦ Ok(ÔÌ_ÍWnôk¦Š™3 ãmÙ^?¾ïvyPå[ò‡ò[ã{¦çÈ=¬}þh”Âڑ‰5ˆUܤ¸‚+Å1zÁDe1n!J‡5Qm¡PJÕó…vºCèÖ®vh¶h+"4¥m®ƒ…]|ÊÂnÇ#,â0Žãf|5îÃ;”Ÿ/ ܛ§U•ÄîâxN‰lê zM=ˆ9aˆ–ÒТ)NCq“*¨¡­]2IÌjf€¡˜ :±Š B‰$: ¤´cP»‘ÑQ¬(ãý££Àc³)«º¬a)TJDP$† û¬Øìg—ɃoËkä?ïùƒ|äøÔ½ø ücê_Æo#w]Ð0/ŽÛȇ“¨±¿Uv3OD±%¤,¨EYõI‚Í8Wá9¸ w㬘§™F3\âj¸ùÜ +®—ë‡uû„V! R(HBJ a6Î6±ËÙY†%”Ò_ôGƒ¥­fêÃtœn¦—Ó›•4 q<äYŠÊ`£à®à¹gæ|¤†”ró‰ÄµqkI’ )NGæÃs#·>bP1SA“l3I×B¹YÌ­'+¹d§Mt”^&¨9S,€& 4è|Å¢gö˧䖏åïzá-?Á+iîü_À¢}—ºMê-Ó#;ºQZڊW»ðµÆÞH¶ Ɣ]C[̌™anb9+(LÃN£Ãëð)w‡äH:R*«š«W°j¬6VYŽ¬öñ,ËašfÍG8Š0s–´tQå¶ÊüÜdÁŒ•Ë ÷ï؄g?…Ù=»;~÷WÖa~7æÿ̱iù1óv›½µ¾&Z~È~™9ËqOÿÞSU%ë2Í©®µb­˜?tØ*9ÆiÀ°iâmæUÖ +§+Œn—zæ.-1¶å$B×ÒëB;Èa»a£u»GgË +Sa¼Ø­„Øóªíõ^‚ä’4‘Ù z7/?¯æ¸Àu¾ô“AÈ"ùÆ|ìÛ­Õ9uD÷Tž9ï4‹$pL“Án¬NÜç Õ9J\¯œ¼ ïNÚOFXÑì¯ú'3€ƒh¡J°‚Ô4–Ì«òqù˜«baiñòY÷þh͊öOv_u`nß?¸¯.*”_,[_ÆZÿòÑf¥Ýj}åG'qöºµ;Byø7ãó Y êg>¹tÕUEE®Z&~Çøè}`‡óЀ4'¤ŒU¹>0n´Ífkò´ò‹ÄVO'ߣKŠ):e4Ÿ8±Ó©e﷈(([ƒÉ`*ȃ¾;µö`Ю׸©½vÕ5m·ˆÑâÞ«*Ê53U›¾t3^48ˆ‘ŽÇ'¥Ââ VNºŠªhø­Vۗž"õ8E­¼ªïμ—ä·åŸ­N^…­ß;?á²_xæ¾·¼|E~ÃÚߓ6{ąm[¯÷Éo݅QçÕ×ýâ'»$V`7ïi-“[UlUBôÖ÷‡¤l-í¤ édÖvÉB½O€‹ƒ1#*«‰‚9Ñitz$|&ۙ]řJ¦‰YÆlfÆd²×c +±÷kŒÊ…®ʑQn<1õ”(«W=cQ1·™=Ç~\K *6¹Ý\ ³Ýä>lËŸ?/{þDüWrîßÚwEgº²–»¯Ì¡»Æ. Q[ÆÜ¿xYÐȼéŠuÊ^æÃ¥ˆùVîWK’QãÕ´j’š”†¡ïù‹Ù9°b¼ì'á«©zŽd‘*ÓËÈ&ð¿x _C¸ïô±,Œ–ËÜئ,L:«K”¨jÀ¬YÈ1ù‚| Óø_ëä]ut×ù{è.<,ÿ6ÁX0ò…:ŸF©ØÈx™V&ɤF=Z-Š†y„§çÀ0ß5„BÊÐÓÃf VÇÄä Eöq"Ýг:o¢w¡ú¹baÎI{`£PŠ¡ì“ÛÃY³¬yÖ+mµ"·ËçÍÉÙçöXÝnÃóû(ÚJQ4GaÊí¡Ðéb±¸®øšâT1]Tí©»+ÝMîeîMnÆ]T\Tã>U¤»£@tÜ=FÆäFÑX¬®î’kÃçåûÅÄ蔪Ü_☼!b‡r +ºªDD°ª -Ó:òb$&#)j̛4š壻ô6iq^Wó°‚}֒ÈjiDݗ^÷uÃkúŽ{ö½ÒuôÛÔZïܼñ)«éõ×ÄC¡ ² žYUù¹Þ¥»vÌ[ܕì\yepeZ×ltë)0>çX#¯J‹ÀX—±)mʑÊf¬0mÅ@F‹(î3™­&“9 FÙdƧ]F¸4gµ¹>lª45™–™6™“Óå¬1rêîÈ̀€Uw RûGÓhÌ¡"V¦•¯g +¦…×< 4ˆõí‘Tó“°~ +Öß÷äuw>@­ò4‡aåŗµ‡g×*+W—{DmþěLh@ÜC’ÍqÜ(ú³vÛnôtH aÏnÍSAñs°wç·AýÉÅJ”;_¢¿Ô\,›QTLUo²[þ÷ôyù\÷Êk°í/`A.*‰®X¹`cQAtuÇì­ägߑ?êZÓ÷É+Ç°aͪÍcãgš¿Ú¾ùu§Wnì‚Ó:ñ§‰·éÇ` +Ñ]øBي/TÌLsE¸Yœožl'žà~‡mƒ{C®ÏšÌ'†|k.…\èàVv¹¼÷g‰´¢Çr ‡¦…û‘Ý°å‹ù¾üÒ|:?w¯5ßJ9• +:¨àt‹RE“^SDq›¦½¦ˆª¶#ŠÛ”PµvÆeò`p'½¦؛ âþ²t•¯~f8Hå(ÿ+ñþ—¡êo„«/ +¿ÀKð¯À"=HÎ5PÇè„o+™ýŸ„w”À®g?▨án5<Ïoã?ÖÔN†_hçj_ú&|¾ ߄oÂ7áÿ­ ~›@Ô/A²f¾YÀN ˜¼¹óÛ.§ZÏY°¬4ŠÇòƒ¦2÷¢K¾üÿö¡Ñb5¦|>ɞ˜€+1¤iˆóÐ\45¢v´-W¾U…úsд •¢0Ü\ã(·¯ ÜGʐ-BjK³òƒ?p,phÙª ݝ×uÕ÷­ëž·©sÝÚ.e,|bþgyɧœŸ O&.ÊÀSÕð4‘§ÑÞE•Q3PòoŸ¸u ™Ìsh {¼oªøÛÄ݁f²?ÉóæWèaÄý·¨Y¦é8jbZQ Չ¦֛ÿUâo@ùÌ£@;Ðü¯}fâõ=´ Êz.ùæç¯e/Æ;œ~øô5ÆÚϐ+³y?üé6òþqIS÷ùÇÆo×ßËß}iT9ç?ÄòâÙ +endstream +endobj +xref +0 227 +0000000000 65535 f +0000000015 00000 n +0000000369 00000 n +0000000434 00000 n +0000000736 00000 n +0000003937 00000 n +0000004156 00000 n +0000004324 00000 n +0000004492 00000 n +0000004660 00000 n +0000004828 00000 n +0000005021 00000 n +0000005190 00000 n +0000005383 00000 n +0000005552 00000 n +0000005721 00000 n +0000005890 00000 n +0000006059 00000 n +0000006228 00000 n +0000006397 00000 n +0000006566 00000 n +0000006735 00000 n +0000006904 00000 n +0000007073 00000 n +0000007243 00000 n +0000007415 00000 n +0000007587 00000 n +0000007759 00000 n +0000007931 00000 n +0000008103 00000 n +0000008275 00000 n +0000008447 00000 n +0000008619 00000 n +0000008791 00000 n +0000008963 00000 n +0000009135 00000 n +0000009307 00000 n +0000009479 00000 n +0000009651 00000 n +0000009823 00000 n +0000009995 00000 n +0000011810 00000 n +0000011909 00000 n +0000011944 00000 n +0000011978 00000 n +0000012013 00000 n +0000013697 00000 n +0000013770 00000 n +0000013804 00000 n +0000019084 00000 n +0000019170 00000 n +0000019204 00000 n +0000020730 00000 n +0000020803 00000 n +0000020837 00000 n +0000025013 00000 n +0000025112 00000 n +0000025146 00000 n +0000027681 00000 n +0000027767 00000 n +0000027802 00000 n +0000027836 00000 n +0000032155 00000 n +0000032228 00000 n +0000032262 00000 n +0000037888 00000 n +0000037987 00000 n +0000038074 00000 n +0000038108 00000 n +0000042758 00000 n +0000042857 00000 n +0000042891 00000 n +0000046401 00000 n +0000046461 00000 n +0000046495 00000 n +0000051394 00000 n +0000051506 00000 n +0000051540 00000 n +0000055255 00000 n +0000055380 00000 n +0000055414 00000 n +0000058062 00000 n +0000058135 00000 n +0000058169 00000 n +0000062271 00000 n +0000062370 00000 n +0000062404 00000 n +0000065159 00000 n +0000065232 00000 n +0000065266 00000 n +0000070242 00000 n +0000070354 00000 n +0000070388 00000 n +0000073873 00000 n +0000073972 00000 n +0000074006 00000 n +0000077369 00000 n +0000077455 00000 n +0000077489 00000 n +0000080894 00000 n +0000081006 00000 n +0000081041 00000 n +0000084167 00000 n +0000084307 00000 n +0000084342 00000 n +0000086614 00000 n +0000086702 00000 n +0000086737 00000 n +0000089345 00000 n +0000089460 00000 n +0000089495 00000 n +0000092340 00000 n +0000092456 00000 n +0000092491 00000 n +0000096247 00000 n +0000096375 00000 n +0000096410 00000 n +0000098316 00000 n +0000098378 00000 n +0000098413 00000 n +0000101385 00000 n +0000101501 00000 n +0000101536 00000 n +0000104722 00000 n +0000104837 00000 n +0000104872 00000 n +0000108287 00000 n +0000108430 00000 n +0000108465 00000 n +0000111680 00000 n +0000111796 00000 n +0000111831 00000 n +0000115046 00000 n +0000115188 00000 n +0000115223 00000 n +0000118150 00000 n +0000118266 00000 n +0000118301 00000 n +0000121040 00000 n +0000121182 00000 n +0000121217 00000 n +0000125794 00000 n +0000125934 00000 n +0000125969 00000 n +0000129584 00000 n +0000129710 00000 n +0000129745 00000 n +0000134231 00000 n +0000134318 00000 n +0000134353 00000 n +0000134833 00000 n +0000134997 00000 n +0000135357 00000 n +0000135771 00000 n +0000136025 00000 n +0000136490 00000 n +0000139589 00000 n +0000139636 00000 n +0000139942 00000 n +0000140293 00000 n +0000140473 00000 n +0000140675 00000 n +0000141068 00000 n +0000242497 00000 n +0000242657 00000 n +0000243323 00000 n +0000244043 00000 n +0000244755 00000 n +0000245447 00000 n +0000246210 00000 n +0000246636 00000 n +0000246799 00000 n +0000247243 00000 n +0000247482 00000 n +0000247771 00000 n +0000248041 00000 n +0000248517 00000 n +0000248749 00000 n +0000248843 00000 n +0000249054 00000 n +0000249326 00000 n +0000249548 00000 n +0000249891 00000 n +0000250127 00000 n +0000250288 00000 n +0000250524 00000 n +0000251000 00000 n +0000251227 00000 n +0000251490 00000 n +0000251729 00000 n +0000251820 00000 n +0000252056 00000 n +0000252260 00000 n +0000252389 00000 n +0000252620 00000 n +0000252937 00000 n +0000253166 00000 n +0000253261 00000 n +0000253469 00000 n +0000253864 00000 n +0000254091 00000 n +0000254188 00000 n +0000254396 00000 n +0000254806 00000 n +0000255042 00000 n +0000255187 00000 n +0000255425 00000 n +0000255614 00000 n +0000255849 00000 n +0000256024 00000 n +0000256268 00000 n +0000292773 00000 n +0000294775 00000 n +0000316576 00000 n +0000341952 00000 n +0000355258 00000 n +0000379970 00000 n +0000398957 00000 n +0000405148 00000 n +0000411719 00000 n +0000430926 00000 n +0000433999 00000 n +0000448390 00000 n +0000451084 00000 n +0000479715 00000 n +0000490054 00000 n +0000497766 00000 n +trailer +<< +/ID [ ] +/Info 1 0 R +/Root 2 0 R +/Size 227 +>> +startxref +504647 +%%EOF \ No newline at end of file diff --git a/packages/ti/drv/mcbsp/docs/MCBSP_LLD_SoftwareManifest.doc b/packages/ti/drv/mcbsp/docs/MCBSP_LLD_SoftwareManifest.doc new file mode 100644 index 0000000000000000000000000000000000000000..7ee92ba66703c0a2a075478f48e69c817ec0989e GIT binary patch literal 56320 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

<_&H#mf?* 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 MLm9x3Z&&+g-`QbP0SKKiV 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�GqH6SP=Rh2bAtGRift#<-uZdUZJbh(HgI-2~FQn zyXwBFZV!H2MdW=)&CdUhiU?Sz?y^{1)5LYm*!`}mTjgD~b>O?IYUoC_Z2U$wvBGAx zuJIQ2ZtNDdXTla0*?Fs)8oN~unz&U}D7sD6YQ0Srov=;Cgny*kP5ekTDZER~58tik zRNSM^G~27X7u}~0wm+n{dL33_r4OqWeGaRlwU4NcU5=`wxsR!lKF8I;$m5JIoKZ_m zU$LIZS88<0uhgNg=hRyTzEus2ey2V)T~Y@}e6OaB`%#Vd|5@Fv@{3yIdRcX7ds(&h zyrOcIy`p}ucSRM5zN&ury{@(nx}lQC-cT{^eph)4-BkIi|EYXy-BDk<-Bo9r+*KXR z>i(##SFsRe6TdGl+{{pbwiVi`Ei~^d9sD%j^^pbVI?EZ%5GJm6uP4;)Bi z9?SIuY1$Jw7DGx{t9Kl%-gCCcHC4NUpgIUQ z?QtG!Wx4W>39NTM=Y=#|^jHskW9A`Sk+-9T*Pvjxn{HS zA@~%!p9EXJXJ)_r$jp9*x()wAYY|wXug5Iz7@FyCm2wJwcHS=88=Bebk9*;a>Y2QDRuZpAM1%d{plK>cH+>fBzWP9lGz;(T9U;17Qq=!MozVP;Put^3#c zXkN>Ht>7D#87hUmyVN$~+8S}qj6h8zTpodBN3=&=gCnlD5zm@NKm+X`w{X;m{gtWV7Ff(# UPSWorJ5{!;f2Z_%IsdZ$Kb~Z7F8}}l literal 0 HcmV?d00001 diff --git a/packages/ti/drv/mcbsp/docs/Module.xs b/packages/ti/drv/mcbsp/docs/Module.xs new file mode 100644 index 000000000..88dc645b9 --- /dev/null +++ b/packages/ti/drv/mcbsp/docs/Module.xs @@ -0,0 +1,54 @@ +/****************************************************************************** + * FILE PURPOSE: MCBSP LLD DOCS Module specification file. + ****************************************************************************** + * FILE NAME: Module.xs + * + * DESCRIPTION: + * This file contains the module specification for the MCBSP LLD Documentation. + * + * Copyright (C) 2012, Texas Instruments, Inc. + *****************************************************************************/ + +/* Load the library utility. */ +var libUtility = xdc.loadCapsule ("../build/buildlib.xs"); + +/************************************************************************** + * FUNCTION NAME : modBuild + ************************************************************************** + * DESCRIPTION : + * The function is used to build all the components of the documentation + **************************************************************************/ +function modBuild() +{ + /* Create the actual PROLOGUE Section for the Documentation.*/ + Pkg.makePrologue += "release: mcbsp_lld_document_generation\n"; + Pkg.makePrologue += "mcbsp_lld_document_generation:\n"; + Pkg.makePrologue += "\t @echo -------------------------------------------------------\n"; + Pkg.makePrologue += "\t @echo Generating MCBSP LLD Documentation\n"; + Pkg.makePrologue += "\t doxygen docs/Doxyfile\n"; + Pkg.makePrologue += "\t @echo MCBSP LLD Documentation Generated \n"; + Pkg.makePrologue += "\t @echo -------------------------------------------------------\n"; + + /* Add the documentation file to the package. */ + Pkg.otherFiles[Pkg.otherFiles.length++] = "docs/tifooter.htm"; + Pkg.otherFiles[Pkg.otherFiles.length++] = "docs/tiheader.htm"; + Pkg.otherFiles[Pkg.otherFiles.length++] = "docs/tilogo.gif"; + Pkg.otherFiles[Pkg.otherFiles.length++] = "docs/titagline.gif"; + Pkg.otherFiles[Pkg.otherFiles.length++] = "docs/doxygen"; + Pkg.otherFiles[Pkg.otherFiles.length++] = "docs/MCBSP_LLD_SDS.pdf"; + Pkg.otherFiles[Pkg.otherFiles.length++] = "docs/MCBSP_LLD_SoftwareManifest.pdf"; + Pkg.otherFiles[Pkg.otherFiles.length++] = "docs/ReleaseNotes_MCBSP_LLD.pdf"; + + if (mcbspDriverInstallType == "SETUP") + { + /* Generate the ECLIPSE Plugin Generation */ + Pkg.makePrologue += "all: eclipse_plugin_generation\n"; + Pkg.makePrologue += "eclipse_plugin_generation:\n"; + Pkg.makePrologue += "\t @echo -------------------------------------------------------\n"; + Pkg.makePrologue += "\t @echo MCBSP LLD Eclipse Plugin Generation\n"; + Pkg.makePrologue += "\t xs xdc.tools.eclipsePluginGen -o . -x ./eclipseDocs/sample.xml -c ./eclipseDocs/toc_cdoc_sample.xml\n"; + Pkg.makePrologue += "\t @echo MCBSP LLD Eclipse Plugin Generated \n"; + Pkg.makePrologue += "\t @echo -------------------------------------------------------\n"; + } +} + diff --git a/packages/ti/drv/mcbsp/docs/ReleaseNotes_MCBSP_LLD.doc b/packages/ti/drv/mcbsp/docs/ReleaseNotes_MCBSP_LLD.doc new file mode 100644 index 0000000000000000000000000000000000000000..fb21160dcbdc3891a4a76dd9d511a59d96d2cfaf GIT binary patch literal 137216 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�j#d!7C-zlhK8g7@v_wxB*>_%OGZ2M3+@2v;)H= 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 literal 0 HcmV?d00001 diff --git a/packages/ti/drv/mcbsp/docs/ReleaseNotes_MCBSP_LLD.pdf b/packages/ti/drv/mcbsp/docs/ReleaseNotes_MCBSP_LLD.pdf new file mode 100644 index 0000000000000000000000000000000000000000..492b81d991b969e2ed59d11fb8ca85c3eb7a3734 GIT binary patch literal 285734 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 z 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≥P#oDX2xa0^J$t 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

lJPp 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

@#8} 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

qkfF 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

&A*xhlu7ziRYf^|8>iNL#nHEW8R1d>}+%+!L#~| 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

ogE*BSY;?AdTcb7B>dTpRIY(S9N_0k31YI61s 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 + + + mpbu mcbsp_C6657 July 2012 Report + + + + + + + + + + + + + + +
ConfidentialFor Internal Use Only
DISCLAIMER:This report was created using Black Duck(TM) Protex software compliance management products and services. The results contained in the report reflect the user's analysis and decision making. Recipient of the results bears all of the risks relating to use of, or reliance upon, such results or any other content contained in this report. Black Duck Software makes no representation or warranty to any party regarding the contents of this report, its accuracy, completeness or correctness, and Black Duck Software hereby disclaims any and all warranties (both express and implied) with respect thereto.
+

mpbu mcbsp_C6657 July 2012 Report

+

July 31, 2012 03:42 PM

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table Of Contents
 
Summary
Analysis Summary
Bill of Materials
File Name Patterns Flagged as Pending Id
Code Matches - Precision
+
+

+ + + + +
+ Top + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Summary +
Name:mpbu mcbsp_C6657 July 2012
Project Creator:Jack Manbeck
License:[template] Basic Proprietary Commercial License
Description:
Number of Files:96
Files Pending Identification:3 (3.12%)
Files with Violations:6 (6.25%)
Server:blackduck01.dal.design.ti.com
+
+


+ + + + +
+ Top + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Analysis Summary +
Last Updated:July 31, 2012 03:39 PM
Scan Started:July 31, 2012 03:19 PM
Scan Finished:July 31, 2012 03:20 PM
Files analyzed:96 Files
Bytes analyzed:2.53 MiB (2,650,509 bytes)
Files skipped: 0 Files
Bytes skipped: 0 Bytes
Analysis Release Description:Product version 6.0.4 KB update 70, custom codeprints modified June 04, 2012 10:22 AM
Analyzed From Host:GTLA0850427.gt.design.ti.com
Analyzed By:a0850427 (j-manbeck2@ti.com)
Analyzed With OS:Windows XP
Analyzed With Locale:en-US
Analyzed With Options:File Matches -Yes
Snippet Matches -Yes
Java Import Statements -Yes
Java Package Statements -Yes
Binary Dependencies -Yes
String Searches -Yes
Allow wild cards (*) in string search queries -Yes
Allow regular expression search queries -No
Decompress Compressed Files -Yes
Expand Archive Files -Yes
Enable Multi-User File Comparison -No
Store non-precision matches -Yes
Enable Auto Identification -No
+
+


+ + + + +
+ Top + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Bill of Materials +
Approval StatusLicense ConflictComponentVersionHome PageComponent CommentLicenseUsageShip Status# Manual Code Match# Rapid ID Code Match# Manual Depends# Manual SearchUsed By
Pending ApprovalDeclared License Conflict and Component License ConflictDoxygenUnspecifiedhttp://www.stack.nl/~dimitri/doxygenGPL 2.0FileShip6000
N/AN/Ampbu mcbsp_C6657 July 2012Unspecified[template] Basic Proprietary Commercial LicenseOriginal CodeShip68000
Pending ApprovalNo Conflictsmsp430-Breathe-with-GraceUnspecifiedhttp://github.com/GWDeveloper/msp430-Breathe-with-Grace/UnspecifiedSnippetShip1000
+
+


+ + + + +
+ Top + +
+ + + + + + + + + + + + + + + + +
+File Name Patterns Flagged as Pending Id +
Full PathTypeFile/Folder Comment
This project does not have any file name patterns flagged as pending id.
+
+


+ + + + +
+ Top + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Code Matches - Precision +
FileSizeFile LineTotal LinesComponentVersionLicenseUsageStatus%Matched FileMatched File LineFile CommentComponent Comment
ti/drv/mcbsp/docs/doxygen/html/doxygen.css8077Doxygen1.5.0GPL 2.0FileIdentified by Generic Version100%doxygen-1.5.0.linux.bin.tar.gz/doxygen-1.5.0/html/doxygen.css
ti/drv/mcbsp/docs/doxygen/html/doxygen.png1281Doxygen1.3.9GPL 2.0FileIdentified by Generic Version100%doxygen-1.3.9.linux.bin.tar.gz/doxygen-1.3.9/examples/afterdoc/html/doxygen.png
ti/drv/mcbsp/docs/doxygen/html/tab_b.gif35Doxygen1.4.5GPL 2.0FileIdentified by Generic Version100%doxygen-1.4.5.linux.bin.tar.gz/doxygen-1.4.5/html/tab_b.gif
ti/drv/mcbsp/docs/doxygen/html/tab_l.gif706Doxygen1.4.5GPL 2.0FileIdentified by Generic Version100%doxygen-1.4.5.linux.bin.tar.gz/doxygen-1.4.5/html/tab_l.gif
ti/drv/mcbsp/docs/doxygen/html/tab_r.gif2585Doxygen1.4.5GPL 2.0FileIdentified by Generic Version100%doxygen-1.4.5.linux.bin.tar.gz/doxygen-1.4.5/html/tab_r.gif
ti/drv/mcbsp/docs/doxygen/html/tabs.css1758Doxygen1.4.5GPL 2.0FileIdentified by Generic Version100%doxygen-1.4.5.linux.bin.tar.gz/doxygen-1.4.5/examples/tag/html/tabs.css
ti/drv/mcbsp/docs/tifooter.htm98EonosMIT License V2FilePrecision Match100%Eonos-master-20101115.tgz/Martix-Eonos-cedf664/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tifooter.htm
ti/drv/mcbsp/docs/tifooter.htm98OpenEmbeddedtesting_2010-09-07MIT License V2FilePrecision Match100%openembedded-git-tag-testing_2010-09-07.tar.gz/openembedded-git-tag-testing_2010-09-07/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tifooter.htm
ti/drv/mcbsp/docs/tifooter.htm98OpenEmbeddedtesting_2010-08-30MIT License V2FilePrecision Match100%openembedded-git-tag-testing_2010-08-30.tar.gz/openembedded-git-tag-testing_2010-08-30/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tifooter.htm
ti/drv/mcbsp/docs/tifooter.htm98OpenEmbeddedtesting_2010-09-13MIT License V2FilePrecision Match100%openembedded-git-tag-testing_2010-09-13.tar.gz/openembedded-git-tag-testing_2010-09-13/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tifooter.htm
ti/drv/mcbsp/docs/tifooter.htm98OpenEmbeddedtesting_2010-09-20MIT License V2FilePrecision Match100%openembedded-git-tag-testing_2010-09-20.tar.gz/openembedded-git-tag-testing_2010-09-20/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tifooter.htm
ti/drv/mcbsp/docs/tifooter.htm98OpenEmbeddedtesting_2010-08-23MIT License V2FilePrecision Match100%openembedded-git-tag-testing_2010-08-23.tar.gz/openembedded-git-tag-testing_2010-08-23/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tifooter.htm
ti/drv/mcbsp/docs/tifooter.htm98OpenEmbedded2011.3MIT License V2FilePrecision Match100%release-2011.03.tar.gz/release-2011.03/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tifooter.htm
ti/drv/mcbsp/docs/tifooter.htm98OpenEmbedded2010.12MIT License V2FilePrecision Match100%release-2010.12.tar.gz/release-2010.12/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tifooter.htm
ti/drv/mcbsp/docs/tifooter.htm98openembedded-androidMIT License V2FilePrecision Match100%openembedded-android-android-20101206.tgz/anguslees-openembedded-android-a608b5f/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tifooter.htm
ti/drv/mcbsp/docs/tifooter.htm98openembedded-rascalMIT License V2FilePrecision Match100%openembedded-rascal-master-20101212.tgz/rascalmicro-openembedded-rascal-effc276/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tifooter.htm
ti/drv/mcbsp/docs/tifooter.htm98overo-oeMIT License V2FilePrecision Match100%overo-oe-min_image-20110417.tgz/yyli-overo-oe-b470aae/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tifooter.htm
ti/drv/mcbsp/docs/tilogo.gif1137EonosMIT License V2FilePrecision Match100%Eonos-master-20101115.tgz/Martix-Eonos-cedf664/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tilogo.gif
ti/drv/mcbsp/docs/tilogo.gif1137OpenEmbeddedtesting_2010-09-20MIT License V2FilePrecision Match100%openembedded-git-tag-testing_2010-09-20.tar.gz/openembedded-git-tag-testing_2010-09-20/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tilogo.gif
ti/drv/mcbsp/docs/tilogo.gif1137OpenEmbeddedtesting_2010-09-13MIT License V2FilePrecision Match100%openembedded-git-tag-testing_2010-09-13.tar.gz/openembedded-git-tag-testing_2010-09-13/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tilogo.gif
ti/drv/mcbsp/docs/tilogo.gif1137OpenEmbeddedtesting_2010-09-07MIT License V2FilePrecision Match100%openembedded-git-tag-testing_2010-09-07.tar.gz/openembedded-git-tag-testing_2010-09-07/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tilogo.gif
ti/drv/mcbsp/docs/tilogo.gif1137OpenEmbeddedtesting_2010-08-23MIT License V2FilePrecision Match100%openembedded-git-tag-testing_2010-08-23.tar.gz/openembedded-git-tag-testing_2010-08-23/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tilogo.gif
ti/drv/mcbsp/docs/tilogo.gif1137OpenEmbeddedtesting_2010-08-30MIT License V2FilePrecision Match100%openembedded-git-tag-testing_2010-08-30.tar.gz/openembedded-git-tag-testing_2010-08-30/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tilogo.gif
ti/drv/mcbsp/docs/tilogo.gif1137OpenEmbedded2011.3MIT License V2FilePrecision Match100%release-2011.03.tar.gz/release-2011.03/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tilogo.gif
ti/drv/mcbsp/docs/tilogo.gif1137OpenEmbedded2010.12MIT License V2FilePrecision Match100%release-2010.12.tar.gz/release-2010.12/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tilogo.gif
ti/drv/mcbsp/docs/tilogo.gif1137openembedded-androidMIT License V2FilePrecision Match100%openembedded-android-android-20101206.tgz/anguslees-openembedded-android-a608b5f/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tilogo.gif
ti/drv/mcbsp/docs/tilogo.gif1137openembedded-rascalMIT License V2FilePrecision Match100%openembedded-rascal-master-20101212.tgz/rascalmicro-openembedded-rascal-effc276/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tilogo.gif
ti/drv/mcbsp/docs/tilogo.gif1137overo-oeMIT License V2FilePrecision Match100%overo-oe-min_image-20110417.tgz/yyli-overo-oe-b470aae/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/tilogo.gif
ti/drv/mcbsp/docs/titagline.gif653EonosMIT License V2FilePrecision Match100%Eonos-master-20101115.tgz/Martix-Eonos-cedf664/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/titagline.gif
ti/drv/mcbsp/docs/titagline.gif653OpenEmbeddedtesting_2010-08-30MIT License V2FilePrecision Match100%openembedded-git-tag-testing_2010-08-30.tar.gz/openembedded-git-tag-testing_2010-08-30/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/titagline.gif
ti/drv/mcbsp/docs/titagline.gif653OpenEmbeddedtesting_2010-09-13MIT License V2FilePrecision Match100%openembedded-git-tag-testing_2010-09-13.tar.gz/openembedded-git-tag-testing_2010-09-13/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/titagline.gif
ti/drv/mcbsp/docs/titagline.gif653OpenEmbeddedtesting_2010-08-23MIT License V2FilePrecision Match100%openembedded-git-tag-testing_2010-08-23.tar.gz/openembedded-git-tag-testing_2010-08-23/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/titagline.gif
ti/drv/mcbsp/docs/titagline.gif653OpenEmbeddedtesting_2010-09-07MIT License V2FilePrecision Match100%openembedded-git-tag-testing_2010-09-07.tar.gz/openembedded-git-tag-testing_2010-09-07/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/titagline.gif
ti/drv/mcbsp/docs/titagline.gif653OpenEmbeddedtesting_2010-09-20MIT License V2FilePrecision Match100%openembedded-git-tag-testing_2010-09-20.tar.gz/openembedded-git-tag-testing_2010-09-20/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/titagline.gif
ti/drv/mcbsp/docs/titagline.gif653OpenEmbedded2011.3MIT License V2FilePrecision Match100%release-2011.03.tar.gz/release-2011.03/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/titagline.gif
ti/drv/mcbsp/docs/titagline.gif653OpenEmbedded2010.12MIT License V2FilePrecision Match100%release-2010.12.tar.gz/release-2010.12/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/titagline.gif
ti/drv/mcbsp/docs/titagline.gif653openembedded-androidMIT License V2FilePrecision Match100%openembedded-android-android-20101206.tgz/anguslees-openembedded-android-a608b5f/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/titagline.gif
ti/drv/mcbsp/docs/titagline.gif653openembedded-rascalMIT License V2FilePrecision Match100%openembedded-rascal-master-20101212.tgz/rascalmicro-openembedded-rascal-effc276/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/titagline.gif
ti/drv/mcbsp/docs/titagline.gif653overo-oeMIT License V2FilePrecision Match100%overo-oe-min_image-20110417.tgz/yyli-overo-oe-b470aae/recipes/ti/ti-dmai/doxygen_templates.tar.gz.---/doxygen_templates/titagline.gif
ti/drv/mcbsp/package/ti_drv_mcbsp.java11018161msp430-Breathe-with-GraceUnspecifiedSnippetIdentified41%msp430-Breathe-with-Grace-master-20110401.tgz/GWDeveloper-msp430-Breathe-with-Grace-1d8bd9a/Debug/configPkg/package/configPkg.java1TI Code matching TI code
+
+ + + + + + + + + +
ConfidentialFor Internal Use Only
DISCLAIMER:This report was created using Black Duck(TM) Protex software compliance management products and services. The results contained in the report reflect the user's analysis and decision making. Recipient of the results bears all of the risks relating to use of, or reliance upon, such results or any other content contained in this report. Black Duck Software makes no representation or warranty to any party regarding the contents of this report, its accuracy, completeness or correctness, and Black Duck Software hereby disclaims any and all warranties (both express and implied) with respect thereto.
+ + diff --git a/packages/ti/drv/mcbsp/docs/tifooter.htm b/packages/ti/drv/mcbsp/docs/tifooter.htm new file mode 100644 index 000000000..4bdf9c9f5 --- /dev/null +++ b/packages/ti/drv/mcbsp/docs/tifooter.htm @@ -0,0 +1,4 @@ +
+Copyright $year, Texas Instruments Incorporated + + diff --git a/packages/ti/drv/mcbsp/docs/tiheader.htm b/packages/ti/drv/mcbsp/docs/tiheader.htm new file mode 100644 index 000000000..3c61efe15 --- /dev/null +++ b/packages/ti/drv/mcbsp/docs/tiheader.htm @@ -0,0 +1,12 @@ + + +$title + + + + + + + + +
diff --git a/packages/ti/drv/mcbsp/docs/tilogo.gif b/packages/ti/drv/mcbsp/docs/tilogo.gif new file mode 100644 index 0000000000000000000000000000000000000000..f2fab2da7bf35dbc41b8edb749d037d25d157df0 GIT binary patch literal 1137 zcmV-%1djVhNk%w1Vcq~X0HOc@00030|NpzYyKirAKR-VP1_tQp=olCnA^8LV00000 zEC2ui0NwyL000C32)f+}*y*TU5yZ>M)j$~<`XsWJk>%MR-&vb3yc&_h!@BhG{ za7Zi~kI1BQ$!t2G(5Q5JD+~hIEP=`;TC>`&ICupIwt&IlFmB_@;4J|waNB2Jvtckd z2nc|8f-HGvYia-nS$huz0*{c90s}QxYKVh1aB+%fh7ST}q5*6)b65qLnxhAFn`fyF zd!?bU2ac3AbgDFk0d)YUxp27=1+`lRfXmAVx6J_0feO#147Yp))(*QD)!Sps(HNGO z1GT$(1F7i163Ef$V0`FX2ce7r>I_z$SOyX36u5__SeZJG%m5ly(BGnU#1yDQ2kw-C z1F!z2`B#en;2wss1~_zQ0c1gKwVr{=7Xe3Ol*x95K&%GcA}R=_ zPthL&SI+GzvvjE|kp&a|`k6>Tsw^a>p3(R3k^lo+Y8gnSEPzrqS=9L1i8K^d3K>P! z3;=diRtGLm-3+F{BEe!CJKe;`U>dhyedi4guyJdFf#>uU5cn9a<5P7)Wt9m4j5RoD zG(YYe7Au=MY7VeN_4upVpL{N?HreV|+`A3(VnJg?Cz#C_y8#dzTSB)!VTdv<4iqu9 zGH6=)8SZ=m=id_jg|4nmpX*(y8PsBcwL1rSX8sgJFC2pIUyr6QIQEZf_)f82u{;cH zPC~l>3C*<98st^i7#~oPLfvM-(3OR1R|vM4AMu4Y$v^4=HlB6q?d8B*^EosRG9tDI z%5I6#6<=1TY-Qa=>f|RPZk;*j-vON%pojtqnzlfD83{m(fx|WU2p!Tvx0pgh)d5E+ z>u|`}eCz?%0Ei33W!5EWR5`(WH~F*xj*G-nfKf-%)c{i3J#d_3@{FleTCo6mk|JO& z#vo2YVz?!W3ub8{kMsPrVPWUw1Ob-Rbn-_nl#J%f9~6K&pLp;^6&NIf-6Gj+9^z!9 zi*sR-Mgs@^SX~}+a1*-eXewzE4b+J-64WH*gw~Mx3pgzSs+Ugx zltlQLggQ#}(o|-B2558rxfsl^j})tEjqb3zWMt2U` zNWo7QK|<#Rf~CR~r)SjKVp3EIhR-Cm;8q(z8v!=gOKU-ur>Is*iAIas;Hd^aXiOE@ zl45GSakSB58s(B9+BWCO_F^Dbp%aVp)I4loHpk}*1pWw#=U#It;Ky&) zw8LYL7Yp_ulH(e^MS@_lx1LeCovifIL9^U)%%Y4%&U}wC%IK$5k@dmZ68ywA1WZ(d+%-(kN^NX D-#`uN literal 0 HcmV?d00001 diff --git a/packages/ti/drv/mcbsp/docs/titagline.gif b/packages/ti/drv/mcbsp/docs/titagline.gif new file mode 100644 index 0000000000000000000000000000000000000000..743a0249e3fbf0c14128aad036beac9611724b72 GIT binary patch literal 653 zcmV;80&@LFNk%w1VLAaC0J8u9{{R60|NsAXcK^4x|Ba3R*4F>+?f)Sm|Mm6%qoe=F z$NxV+|6E-EM)j$~<` zXsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~kI1BQ$!t2Gw?jiPAW)&$tkyRG3=)Lyb{q4?ux(04jo%^#;w z*?fH?FK40yz>tYW`UvcVcnaqIoI4?Fq;N+~u~C{vt6Qy6Wh(SipkZFWX}As^J9y^W zt`Y_`NHE8sm_C0PSE5plu4l*mN)hBoKq_d^d>v}M`Gz3^3EmDM3umBIUdyW+Pw?0_ zaafZmRRSPp%@m;om><<_Iaqe0(VypT@`T{(INO=`z6rF<+u&TgB%o~tZ9;>Bx4Sn} z%p0 + + MCBSP Low Level Driver + ti.drv.mcbsp + 1.00.00.00 + Texas Instruments Inc. + http://ti.com + Copyright Texas Instruments 2012 + + + Released under the Eclipse Public License 1.0 (http://www.eclipse.org/legal/epl-v10.html) + + + ../../.. + ../../../packages + + ../../../packages/ti/drv/mcbsp/docs + + MCBSP Low Level Driver + diff --git a/packages/ti/drv/mcbsp/eclipseDocs/toc_cdoc_sample.xml b/packages/ti/drv/mcbsp/eclipseDocs/toc_cdoc_sample.xml new file mode 100644 index 000000000..14f0d4906 --- /dev/null +++ b/packages/ti/drv/mcbsp/eclipseDocs/toc_cdoc_sample.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + diff --git a/packages/ti/drv/mcbsp/example/Module.xs b/packages/ti/drv/mcbsp/example/Module.xs new file mode 100644 index 000000000..1e2f246c6 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/Module.xs @@ -0,0 +1,58 @@ +/****************************************************************************** + * FILE PURPOSE: MCBSP LLD example files. + ****************************************************************************** + * FILE NAME: Module.xs + * + * DESCRIPTION: + * This file contains the module specification for MCBSP LLD example files. + * + * Copyright (C) 2012, Texas Instruments, Inc. + *****************************************************************************/ + +/* Load the library utility. */ +var libUtility = xdc.loadCapsule ("../build/buildlib.xs"); + +/************************************************************************** + * FUNCTION NAME : modBuild + ************************************************************************** + * DESCRIPTION : + * The function is used to add all the source files in the example + * directory into the package. + **************************************************************************/ +function modBuild() +{ + /* Add all the .c files to the release package. */ + var exampleFiles = libUtility.listAllFiles (".c", "example", true); + for (var k = 0 ; k < exampleFiles.length; k++) + Pkg.otherFiles[Pkg.otherFiles.length++] = exampleFiles[k]; + + /* Add all the .h files to the release package. */ + var exampleFiles = libUtility.listAllFiles (".h", "example", true); + for (var k = 0 ; k < exampleFiles.length; k++) + Pkg.otherFiles[Pkg.otherFiles.length++] = exampleFiles[k]; + + /* Add all the .cmd files to the release package. */ + var exampleFiles = libUtility.listAllFiles (".cmd", "example", true); + for (var k = 0 ; k < exampleFiles.length; k++) + Pkg.otherFiles[Pkg.otherFiles.length++] = exampleFiles[k]; + + /* Add all the .cfg files to the release package. */ + var exampleFiles = libUtility.listAllFiles (".cfg", "example", true); + for (var k = 0 ; k < exampleFiles.length; k++) + Pkg.otherFiles[Pkg.otherFiles.length++] = exampleFiles[k]; + + /* Add all the make files to the release package. */ + var exampleFiles = libUtility.listAllFiles ("makefile", "example", true); + for (var k = 0 ; k < exampleFiles.length; k++) + Pkg.otherFiles[Pkg.otherFiles.length++] = exampleFiles[k]; + + /* Add the .txt to the package */ + var exampleFiles = libUtility.listAllFiles (".txt", "example", true); + for (var k = 0 ; k < exampleFiles.length; k++) + Pkg.otherFiles[Pkg.otherFiles.length++] = exampleFiles[k]; + + /* Add all the .mk files to the release package. */ + var mkFiles = libUtility.listAllFiles (".mk", "example", true); + for (var k = 0 ; k < mkFiles.length; k++) + Pkg.otherFiles[Pkg.otherFiles.length++] = mkFiles[k]; +} diff --git a/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/MCBSP_evmc6657_C66DigLpbkExampleProject.txt b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/MCBSP_evmc6657_C66DigLpbkExampleProject.txt new file mode 100644 index 000000000..1c429a481 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/MCBSP_evmc6657_C66DigLpbkExampleProject.txt @@ -0,0 +1,7 @@ +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk.c" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/device/c6657/src/device_mcbsp_loopback.c" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c" + +-ccs.setCompilerOptions "-DSOC_C6657 -DMCBSP_DEBUG_TEMP -g --diag_warning=225 -I${PDK_INSTALL_PATH} -I${BIOS_INSTALL_PATH}/packages -I${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk -I${PDK_INSTALL_PATH}/ti/drv/mcbsp/include -I${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/include -I${PDK_INSTALL_PATH}/ti/drv/mcbsp -I${PDK_INSTALL_PATH}/ti/board" -rtsc.enableRtsc diff --git a/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/bios6_edma3_drv_sample.h b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/bios6_edma3_drv_sample.h new file mode 100644 index 000000000..5fad8a74a --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/bios6_edma3_drv_sample.h @@ -0,0 +1,186 @@ +/* + * bios6_edma3_drv_sample.h + * + * Header file for the sample application for the EDMA3 Driver. + * + * Copyright (C) 2009-2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#ifndef _BIOS6_EDMA3_DRV_SAMPLE_H_ +#define _BIOS6_EDMA3_DRV_SAMPLE_H_ + +#include +#include + +/* Include EDMA3 Driver */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Cache line size on the underlying SoC. It needs to be modified + * for different cache line sizes, if the Cache is Enabled. + */ +#define EDMA3_CACHE_LINE_SIZE_IN_BYTES (128u) + +/* Error returned in case of buffers are not aligned on the cache boundary */ +#define EDMA3_NON_ALIGNED_BUFFERS_ERROR (-1) + +/* Error returned in case of data mismatch */ +#define EDMA3_DATA_MISMATCH_ERROR (-2) + +/** + * \brief EDMA3 Initialization + * + * This function initializes the EDMA3 Driver for the given EDMA3 controller + * and opens a EDMA3 driver instance. It internally calls EDMA3_DRV_create() and + * EDMA3_DRV_open(), in that order. + * + * It also registers interrupt handlers for various EDMA3 interrupts like + * transfer completion or error interrupts. + * + * \param edma3Id [IN] EDMA3 Controller Instance Id (Hardware + * instance id, starting from 0) + * \param errorCode [IN/OUT] Error code while opening DRV instance + * \return EDMA3_DRV_Handle: If successfully opened, the API will return the + * associated driver's instance handle. + */ +EDMA3_DRV_Handle edma3init (unsigned int edma3Id, EDMA3_DRV_Result *errorCode); + +/** + * \brief EDMA3 De-initialization + * + * This function de-initializes the EDMA3 Driver for the given EDMA3 controller + * and closes the previously opened EDMA3 driver instance. It internally calls + * EDMA3_DRV_close and EDMA3_DRV_delete(), in that order. + * + * It also un-registers the previously registered interrupt handlers for various + * EDMA3 interrupts. + * + * \param edma3Id [IN] EDMA3 Controller Instance Id (Hardware + * instance id, starting from 0) + * \param hEdma [IN] EDMA3 Driver handle, returned while using + * edma3init(). + * \return EDMA3_DRV_SOK if success, else error code + */ +EDMA3_DRV_Result edma3deinit (unsigned int edma3Id, EDMA3_DRV_Handle hEdma); + + +/** + * \brief EDMA3 Cache Invalidate + * + * This function invalidates the D cache. + * + * \param mem_start_ptr [IN] Starting address of memory. + * Please note that this should be + * aligned according to the cache line size. + * \param num_bytes [IN] length of buffer + * \return EDMA3_DRV_SOK if success, else error code in case of error + * or non-alignment of buffers. + * + * Note: This function is required if the buffer is in DDR. + * For other cases, where buffer is NOT in DDR, user + * may or may not require the below implementation and + * should modify it according to her need. + */ +EDMA3_DRV_Result Edma3_CacheInvalidate(unsigned int mem_start_ptr, + unsigned int num_bytes); + + + +/** + * \brief EDMA3 Cache Flush + * + * This function flushes (cleans) the Cache + * + * \param mem_start_ptr [IN] Starting address of memory. + * Please note that this should be + * aligned according to the cache line size. + * \param num_bytes [IN] length of buffer + * \return EDMA3_DRV_SOK if success, else error code in case of error + * or non-alignment of buffers. + * + * Note: This function is required if the buffer is in DDR. + * For other cases, where buffer is NOT in DDR, user + * may or may not require the below implementation and + * should modify it according to her need. + */ +EDMA3_DRV_Result Edma3_CacheFlush(unsigned int mem_start_ptr, + unsigned int num_bytes); + + + +/** + * Counting Semaphore related functions (OS dependent) should be + * called/implemented by the application. A handle to the semaphore + * is required while opening the driver/resource manager instance. + */ + +/** + * \brief EDMA3 OS Semaphore Create + * + * This function creates a counting semaphore with specified + * attributes and initial value. It should be used to create a semaphore + * with initial value as '1'. The semaphore is then passed by the user + * to the EDMA3 driver/RM for proper sharing of resources. + * \param initVal [IN] is initial value for semaphore + * \param semParams [IN] is the semaphore attributes. + * \param hSem [OUT] is location to receive the handle to just created + * semaphore. + * \return EDMA3_DRV_SOK if successful, else a suitable error code. + */ +EDMA3_DRV_Result edma3OsSemCreate(int initVal, + const Semaphore_Params *semParams, + EDMA3_OS_Sem_Handle *hSem); + + + +/** + * \brief EDMA3 OS Semaphore Delete + * + * This function deletes or removes the specified semaphore + * from the system. Associated dynamically allocated memory + * if any is also freed up. + * \param hSem [IN] handle to the semaphore to be deleted + * \return EDMA3_DRV_SOK if successful else a suitable error code + */ +EDMA3_DRV_Result edma3OsSemDelete(EDMA3_OS_Sem_Handle hSem); + +#ifdef __cplusplus +} +#endif /* extern "C" */ + +#endif /* _BIOS6_EDMA3_DRV_SAMPLE_H_ */ + diff --git a/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/config.bld b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/config.bld new file mode 100644 index 000000000..cb4905e5a --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/config.bld @@ -0,0 +1,82 @@ +/* + * + * $Source: /cvsstl/ti/pa/f/s19/config.bld,v $ + * $Revision: 1.6 $ + * + * XDC/BIOS configuration file for I12 Topo/Feature Set + * + * Copyright 2008, Texas Instruments, Inc. All rights reserved. + * + * $Log: config.bld,v $ + * Revision 1.6 2009/06/10 07:51:13 mkamat + * MID 2487 Replace references to PA17 with PA + * + * Revision 1.5 2009/03/02 04:36:58 uparikh + * Add segment SDRAM_LINK_SHARED for dhared LINK memory + * + * Revision 1.4 2009/02/18 14:29:12 uparikh + * Partition SDRAM and re-order memory segments in ascending order + * + * Revision 1.3 2009/02/14 09:05:55 uparikh + * Update IRAM and SDRAM base / len + * + * Revision 1.2 2009/01/28 12:37:59 mkamat + * Made cache 64k and moved o/p buffer to L3 - MID 2144 + * + * Revision 1.1 2008/10/21 04:45:09 mkamat + * Code cleanup in s19 area - MID 1923 + * + * Revision 1.6 2008/10/13 05:22:54 uparikh + * Define section for uboot + * + * Revision 1.5 2008/09/29 11:20:53 uparikh + * Increase size of SDRAM for pa.out to build + * + * Revision 1.4 2008/09/09 23:35:52 lester + * (MID 1820) Revised to use deviceName: 'TMS320DA830', + * instead of deviceName: 'Primus' (deprecated). + * + * Revision 1.3 2008/09/05 17:18:42 martin + * Renumber array elements. Element 1 was missing in last commit + * + * Revision 1.2 2008/09/05 16:00:43 martin + * Move DSP image to upper SDRAM to cooperate with Linux images. + * + * Revision 1.1 2008/08/20 09:54:35 lester + * (MID 1820) Generated via (from latest this date): + * [/cygdrive/t/pa/f/s17/pai1] delog -f"t:/pa/f/s19/i12" .... + * + */ + +/* ......................................................................... */ + +var memory = []; + + +memory[0] = ["IRAM", + { + name : "IRAM", + base : 0x10800000, + len : 0x00080000, + space : "code/data" + }]; + +memory[1] = ["L3RAM", + { + name : "DDR3", + base : 0x80000000, + len : 0x10000000, + space : "data" + }]; + + +Build.platformTable['ti.platforms.generic:plat'] = +{ +clockRate: 600, +catalogName: 'ti.catalog.c6000', +deviceName: 'TMS320TCI6616', +regs: {l1DMode: "32k"}, +regs: {l1PMode: "32k"}, +regs: {l2Mode: "64k"}, +customMemoryMap: memory +}; diff --git a/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk.c b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk.c new file mode 100644 index 000000000..22a7fa967 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk.c @@ -0,0 +1,993 @@ +/* + * mcbspMasterDigLpbk.c + * + * This file contains the test / demo code to demonstrate the McBSP driver + * master functionality using Digital Loopback setup. The file configures + * the EVM in master mode. + * + * Copyright (C) 2012 - 2018 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +/* ========================================================================== */ +/* INCLUDE FILES */ +/* ========================================================================== */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +/* Include EDMA3 Driver */ +#include + +/* CSL Chip Functional Layer */ +//#include + +/* CSL Cache Functional Layer */ +//#include + +/* CSL CPINTC Include Files. */ +//#include + +/* MCBSP Driver Include File. */ +#include +#include + +/* PlatformLib Include File */ +//#include + + +extern EDMA3_DRV_GblConfigParams sampleEdma3GblCfgParams[]; +extern EDMA3_RM_InstanceInitConfig sampleInstInitConfig[2][8]; +/* ========================================================================== */ +/* EXTERNAL FUNCTIONS */ +/* ========================================================================== */ + +extern EDMA3_DRV_Handle edma3init(unsigned int edma3Id, EDMA3_DRV_Result *); + +extern void McbspDevice_init(void); + +extern int32_t Osal_dataBufferInitMemory(uint32_t dataBufferSize); + +extern void McbspXmtInterrupt_init(void *mcbspTxChan); +extern void McbspRcvInterrupt_init(void *mcbspRxChan); + +extern Board_STATUS Board_init(Board_initCfg); + +/* FPGA Configuration Misc-1 Register offset */ +#define MCBSP_FPGA_MISC_REG_OFFSET (0x0C) + +/* ========================================================================== */ +/* MACRO DEFINTIONS */ +/* ========================================================================== */ + +#define NUM_BUFS 2 /* Max of buffers used in each direction */ +#define FRAMESIZE 40 /* e.g 5 ms 8 KHz samples */ +#define NUM_OF_ENABLED_CHANNELS 8 /* Number of slots to be used */ +#define NUM_OF_MAX_CHANNELS 128 /* Maximum number of time slots available based on clock settings */ +#define BUFSIZE (NUM_OF_ENABLED_CHANNELS * FRAMESIZE) /* Total buffer size per frame */ + +/* Defines the core number responsible for system initialization. */ +#define CORE_SYS_INIT 0 +/* Number of iterations to execute test: Only applicable to INTERNAL CLOCK Loopback test */ +#define NUM_OF_ITERATIONS 10 + +/* Number of MCBSP Frame structures used for submit channel */ +#define NUM_OF_MCBSP_FRAMES 2 + +/* Number of buffers initially submitted to Mcbsp lld: Only applicable to + External clock test ; Note: This should be set to 2*/ +#define INIT_SUBMIT_Q_CNT 2 + +/*============================================================================*/ +/* GLOBAL VARIABLES */ +/*============================================================================*/ + +/* Shared Memory Variable to ensure synchronizing MCBSP initialization + * with all the other cores. */ +/* Created an array to pad the cache line with MCBSP_CACHE_LENGTH size */ +#pragma DATA_ALIGN (isMCBSPInitialized, MCBSP_MAX_CACHE_ALIGN) +#pragma DATA_SECTION (isMCBSPInitialized, ".mcbspSharedMem"); +volatile Uint32 isMCBSPInitialized[(MCBSP_CACHE_LENGTH / sizeof(Uint32))] = { 0 }; + +/* Handle to the EDMA driver instance */ +#pragma DATA_ALIGN (hEdma, MCBSP_MAX_CACHE_ALIGN) +EDMA3_DRV_Handle hEdma[(MCBSP_CACHE_LENGTH / sizeof(EDMA3_DRV_Handle))] = { NULL }; + +/* Handle to MCBSP driver instance */ +typedef void* Mcbsp_DevHandle; +Mcbsp_DevHandle hMcbspDev; + +/* Handle to MCBSP driver channel instance */ +typedef void* Mcbsp_ChanHandle; +Mcbsp_ChanHandle hMcbspTxChan; +Mcbsp_ChanHandle hMcbspRxChan; + +/* Core Number Identifier */ +UInt32 coreNum = 0xFFFF; + +/* Array to hold the pointer to the allocated buffers */ +void* bufRx[NUM_BUFS]; +void* bufTx[NUM_BUFS]; + +#ifdef MCBSP_LOOP_PING_PONG +/* Ping pong buffers used to submit to Mcbsp lld, which will be used in a loop */ +void* bufRxPingPong[INIT_SUBMIT_Q_CNT]; +void* bufTxPingPong[INIT_SUBMIT_Q_CNT]; +#endif +/* Global Error call back function prototype */ +void mcbsp_GblErrCallback(uint32_t chanHandle,uint32_t spcr_read,uint32_t Arg3); + +/* Variables to indicate status of EDMA TX and RX requests */ +volatile uint32_t edmaTxDone = 0; +volatile uint32_t edmaRxDone = 0; +/* Global variables to track number of buffers submitted, number of iterations, error counts etc */ +int rxSubmitCount=0, txSubmitCount=0; +uint32_t num_iterations=0; +uint32_t num_rx_Call_backs=0, num_tx_Call_backs=0, dummy_call_backs=0; +uint32_t rxunderflowcnt=0, txunderflowcnt=0; +uint32_t errBuffCount=0; +/* Debug variables */ +volatile int debugVar=1; /* This can be used to maintain a while loop, If set to 0 will exit loop */ +volatile int debugCommand=1; /* This can be used to set to value below to send command to restart channel */ + +#define DEBUG_COMMAND_RESTART_CHANNELS 1 +/** + * \brief Mcbsp Sample rate generator default parameters. + * + */ +Mcbsp_srgConfig mcbspSrgCfg = +{ + FALSE, /* No gsync to be used as input is not CLKS */ + Mcbsp_ClkSPol_RISING_EDGE, /* Dont care as input clock is not clks */ + Mcbsp_SrgClk_CLKCPU, /* McBSP internal clock to be used */ + //166666667, /* Mcbsp internal clock frequency(PLL-SYSCLK6) */ + 333333333, //sys_oscclk or cpu_clk/3 + 0 /* frame sync pulse width (val+1) is used */ +}; + +/** + * \brief Mcbsp device creation default parameters. + * + */ +const Mcbsp_Params Mcbsp_PARAMS = +{ + Mcbsp_DevMode_McBSP, /* Use the device as MCBSP */ + Mcbsp_OpMode_DMAINTERRUPT, /* Use DMA mode of operation */ + TRUE, /* cache coherency taken care of by driver */ + Mcbsp_EmuMode_FREE, /* Emulation mode free is to be enabled */ +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_Loopback_DISABLE, /* Loop back mode disabled */ +#else + Mcbsp_Loopback_ENABLE, /* Loop back mode enabled */ +#endif + &mcbspSrgCfg, /* sample rate generator configuration */ + NULL, /* TX pending buffer queue from application */ + NULL, /* TX floating buffer queue in DMA */ + NULL, /* RX pending buffer queue from application */ + NULL /* RX floating buffer queue in DMA */ +}; + +#pragma DATA_ALIGN(loopTxJob, MCBSP_MAX_CACHE_ALIGN) +static Int32 loopTxJob[16] = { + /* Filling with Mu law silence pattern : Can be any user defined pattern */ + 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, + 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f +}; +#pragma DATA_ALIGN(loopRxJob, MCBSP_MAX_CACHE_ALIGN) +static Int32 loopRxJob[16] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +}; + +/**< settings to configure the TX or RX hardware sections */ +Mcbsp_DataConfig mcbspChanConfigTx = +{ + Mcbsp_Phase_SINGLE, + Mcbsp_WordLength_8, + Mcbsp_WordLength_8, /* Dont care for single phase*/ + NUM_OF_MAX_CHANNELS, + NUM_OF_MAX_CHANNELS, // Only used with dual phase + Mcbsp_FrmSync_DETECT, +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_DataDelay_0_BIT, +#else + Mcbsp_DataDelay_1_BIT, +#endif + Mcbsp_Compand_OFF_MSB_FIRST, + Mcbsp_BitReversal_DISABLE, + Mcbsp_IntMode_ON_SYNCERR, + Mcbsp_RxJust_RZF, /* Dont care for TX */ + Mcbsp_DxEna_OFF +}; + +/**< settings to configure the TX or RX hardware sections */ +Mcbsp_DataConfig mcbspChanConfigRx = +{ + Mcbsp_Phase_SINGLE, + Mcbsp_WordLength_8, + Mcbsp_WordLength_8, /* Dont care for single phase*/ + NUM_OF_MAX_CHANNELS, + NUM_OF_MAX_CHANNELS, // Only used with dual phase + Mcbsp_FrmSync_DETECT, +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_DataDelay_0_BIT, +#else + Mcbsp_DataDelay_1_BIT, +#endif + Mcbsp_Compand_OFF_MSB_FIRST, + Mcbsp_BitReversal_DISABLE, + Mcbsp_IntMode_ON_SYNCERR, + Mcbsp_RxJust_RZF, /* Dont care for TX */ + Mcbsp_DxEna_OFF +}; +/**< clock setup for the TX section */ +Mcbsp_ClkSetup mcbspClkConfigTx = +{ +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_FsClkMode_EXTERNAL, + 8000, /* 8KHz */ + Mcbsp_TxRxClkMode_EXTERNAL, +#else + Mcbsp_FsClkMode_INTERNAL, + 8000, /* 8KHz */ + Mcbsp_TxRxClkMode_INTERNAL, +#endif + Mcbsp_FsPol_ACTIVE_HIGH, + Mcbsp_ClkPol_RISING_EDGE +}; + +/**< clock setup for the RX section */ +Mcbsp_ClkSetup mcbspClkConfigRx = +{ +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_FsClkMode_EXTERNAL, + 8000, /* 8KHz */ + Mcbsp_TxRxClkMode_EXTERNAL, +#else + Mcbsp_FsClkMode_INTERNAL, + 8000, /* 8KHz */ + Mcbsp_TxRxClkMode_INTERNAL, +#endif + Mcbsp_FsPol_ACTIVE_HIGH, + Mcbsp_ClkPol_FALLING_EDGE +}; + +/**< Multi channel setup */ +Mcbsp_McrSetup mcbspMultiChanCtrl = +{ + Mcbsp_McmMode_ALL_CHAN_DISABLED_UNMASKED, + Mcbsp_PartitionMode_CHAN_0_15, + Mcbsp_PartitionMode_CHAN_16_31, + Mcbsp_PartitionMode_2 +}; + + +Mcbsp_ChanParams mcbspChanparamTx = +{ + Mcbsp_WordLength_8, /* wordlength configured */ + &loopTxJob[0], /* loop job buffer internal */ + 8, /* user loopjob length */ + mcbsp_GblErrCallback, /* global error callback */ + NULL, /* edma Handle */ + 1, /* EDMA event queue */ + 8, /* hwi number */ + Mcbsp_BufferFormat_MULTISLOT_NON_INTERLEAVED, + TRUE, /* FIFO mode enabled */ + &mcbspChanConfigTx, /* channel configuration */ + &mcbspClkConfigTx, /* clock configuration */ + &mcbspMultiChanCtrl, /* multi channel control */ + 0x7531, /* Enabled timeslots: 0, 4, 5, 8, 10, 12, 13, 14 */ + 0x00, + 0x00, + 0x00, + NUM_OF_ENABLED_CHANNELS /* Total number of channels enabled*/ +}; + +Mcbsp_ChanParams mcbspChanparamRx = +{ + Mcbsp_WordLength_8, /* wordlength configured */ + &loopRxJob[0], /* loop job buffer internal */ + 8, /* user loopjob length */ + mcbsp_GblErrCallback, /* global error callback */ + NULL, /* edma Handle */ + 1, /* EDMA event queue */ + 8, /* hwi number */ + Mcbsp_BufferFormat_MULTISLOT_NON_INTERLEAVED, + TRUE, /* FIFO mode enabled */ + &mcbspChanConfigRx, /* channel configuration */ + &mcbspClkConfigRx, /* clock configuration */ + &mcbspMultiChanCtrl, /* multi channel control */ + 0x7531, /* Enabled timeslots: 0, 4, 5, 8, 10, 12, 13, 14 */ + 0x00, + 0x00, + 0x00, + NUM_OF_ENABLED_CHANNELS /* Total number of channels enabled*/ +}; + + +/* ========================================================================== */ +/* FUNCTION DEFINITIONS */ +/* ========================================================================== */ + +/* + * This is the application's callback function. The driver will + * call this function whenever an EDMA I/O operation is over. + * + */ +void mcbspAppCallback(void* arg, Mcbsp_IOBuf *ioBuf) +{ + int32_t mode; + int32_t *pmode = (int32_t *)arg; + + mode = *pmode; + if (mode == MCBSP_MODE_OUTPUT) + { + if(ioBuf) { + num_tx_Call_backs++; + edmaTxDone = 1; + }else + txunderflowcnt++; + } + else if (mode == MCBSP_MODE_INPUT) + { + if(ioBuf) { + num_rx_Call_backs++; + edmaRxDone = 1; + }else + rxunderflowcnt++; + }else + dummy_call_backs++; + return; +} + +/* + * This is the application's Global error callback function + */ +void mcbsp_GblErrCallback(uint32_t chanHandle,uint32_t spcr_read,uint32_t Arg3) +{ + MCBSP_log ("Debug(Core %d): ERROR callback called SPCR: %x", coreNum, spcr_read); +} + +/* + * \brief This function demostrates the use of Mcbsp using digital loopback + * communication setup. + * + * \param None + * + * \return None + */ +void mcbspDigLpbkApp(UArg arg0, UArg arg1) +{ + /**< Mcbsp device params */ + Mcbsp_Params mcbspParams; + + /**< Queue to hold the pending packets received from the application */ + Queue_Struct txQueuePendingList, rxQueuePendingList; + /**< Queue to manage floating packets in DMA */ + Queue_Struct txQueueFloatingList, rxQueueFloatingList; + + uint32_t count = 0, tempCount = 0; + int32_t status = 0, retval = 0; + int32_t txChanMode = MCBSP_MODE_OUTPUT; + int32_t rxChanMode = MCBSP_MODE_INPUT; + uint32_t mcbspTxDone = 0, mcbspRxDone = 0; + Mcbsp_IOBuf txFrame[NUM_OF_MCBSP_FRAMES], rxFrame[NUM_OF_MCBSP_FRAMES]; + int txFrameIndex=0, rxFrameIndex=0; + int init_count=0; +#ifdef MCBSP_LOOP_PING_PONG + int pingPongIndex=0; +#endif + + /* Initialize the OSAL */ + if (Osal_dataBufferInitMemory(BUFSIZE) < 0) + { + MCBSP_log ("Debug(Core %d): Error: Unable to initialize the OSAL. \n", coreNum); + return; + } + + /* update EDMA3 handle to channel parameters */ + mcbspChanparamTx.edmaHandle = hEdma[0]; + mcbspChanparamRx.edmaHandle = hEdma[0]; + + /* create the pending and floating queue for the TX channel */ + Queue_construct(&txQueuePendingList, NULL); + Queue_construct(&txQueueFloatingList, NULL); + + /* create the pending and floating queue for the RX channel */ + Queue_construct(&rxQueuePendingList, NULL); + Queue_construct(&rxQueueFloatingList, NULL); + + + mcbspParams = Mcbsp_PARAMS; + mcbspParams.txQPendingList = &txQueuePendingList; + mcbspParams.txQFloatingList = &txQueueFloatingList; + mcbspParams.rxQPendingList = &rxQueuePendingList; + mcbspParams.rxQFloatingList = &rxQueueFloatingList; + + + /* Bind the driver instance with device instance */ + status = mcbspBindDev(&hMcbspDev, coreNum, &mcbspParams); + + if (status != MCBSP_STATUS_COMPLETED) + { + MCBSP_log ("Debug(Core %d): MCBSP LLD Bind Device Failed\n", coreNum); + return; + } + + /* If the user loopjob buffer is in local L2 memory: Convert into Global memory address space */ + if(mcbspChanparamRx.userLoopJobBuffer) + mcbspChanparamRx.userLoopJobBuffer = (void *)Mcbsp_osalLocal2Global(mcbspChanparamRx.userLoopJobBuffer); + + /* Create a RX channel for receiving */ + status = mcbspCreateChan(&hMcbspRxChan, hMcbspDev, MCBSP_MODE_INPUT, &mcbspChanparamRx, mcbspAppCallback, &rxChanMode); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Create Channel (RX) failed\n", coreNum); + return; + } + + /* If the user loopjob buffer is in local L2 memory: Convert into Global memory address space */ + if(mcbspChanparamTx.userLoopJobBuffer) + mcbspChanparamTx.userLoopJobBuffer = Mcbsp_osalLocal2Global(mcbspChanparamTx.userLoopJobBuffer); + + /* Create a TX channel for the transmission */ + status = mcbspCreateChan(&hMcbspTxChan, hMcbspDev, MCBSP_MODE_OUTPUT, &mcbspChanparamTx, mcbspAppCallback, &txChanMode); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Create Channel (TX) failed\n", coreNum); + return; + } + + /* Register mcbsp interrupts */ + //McbspRcvInterrupt_init(hMcbspRxChan); + //McbspXmtInterrupt_init(hMcbspTxChan); + + /* create the buffers required for the TX and RX operations */ + for (count = 0; count < (NUM_BUFS); count++) + { + bufTx[count] = (uint8_t *)Osal_mcbspDataBufferMalloc(BUFSIZE); + bufRx[count] = (uint8_t *)Osal_mcbspDataBufferMalloc(BUFSIZE); + + if (bufTx[count] == NULL) + { + MCBSP_log ("Debug(Core %d): Error: Tx Buffer (%d) Memory Allocation Failed\n", coreNum, count); + return; + } + if (bufRx[count] == NULL) + { + MCBSP_log ("Debug(Core %d): Error: Rx Buffer (%d) Memory Allocation Failed\n", coreNum, count); + return; + } + } +#ifdef MCBSP_LOOP_PING_PONG + /* create the ping pong buffers required for the TX and RX operations */ + for (count = 0; count < (NUM_BUFS); count++) + { + bufRxPingPong[count] = (uint8_t *)Osal_mcbspDataBufferMalloc(BUFSIZE); + bufTxPingPong[count] = (uint8_t *)Osal_mcbspDataBufferMalloc(BUFSIZE); + + if (bufTxPingPong[count] == NULL) + { + MCBSP_log ("Debug(Core %d): Error: Tx Ping pong Buffer (%d) Memory Allocation Failed\n", coreNum, count); + return; + } + if (bufRxPingPong[count] == NULL) + { + MCBSP_log ("Debug(Core %d): Error: Rx Ping pong Buffer (%d) Memory Allocation Failed\n", coreNum, count); + return; + } + } +#endif + /* Fill the buffers with known data and transmit the same and + check if the same pattern is received */ + for (count = 0; count < (NUM_BUFS); count++) + { + memset((uint8_t *)bufTx[count], 0, BUFSIZE); + for (tempCount = 0; tempCount < BUFSIZE; tempCount++) + { + ((uint8_t *)bufTx[count])[tempCount] = (tempCount % 0x100); + } + } + MCBSP_log ("Debug(Core %d): If required to restart set debugCommand variable to %d\n", coreNum, DEBUG_COMMAND_RESTART_CHANNELS); + +restart_mcbsp_point: + txFrameIndex=0; + rxFrameIndex=0; + init_count=0; +#ifdef MCBSP_EXTERNAL_CLOCK + /* Initial loading of ping ping buffers */ + for(init_count =0 ; init_count < INIT_SUBMIT_Q_CNT; init_count++) + { +#ifdef MCBSP_LOOP_PING_PONG + memset((uint8_t *)bufRxPingPong[init_count], 0, BUFSIZE); + + /* RX frame processing */ + rxFrame[rxFrameIndex].cmd = Mcbsp_IOBuf_Cmd_READ; + rxFrame[rxFrameIndex].addr = (void*)bufRxPingPong[init_count]; +#else + memset((uint8_t *)bufRx[init_count], 0, BUFSIZE); + + + /* RX frame processing */ + rxFrame[rxFrameIndex].cmd = Mcbsp_IOBuf_Cmd_READ; + rxFrame[rxFrameIndex].addr = (void*)bufRx[init_count]; +#endif + + rxFrame[rxFrameIndex].size = BUFSIZE; + rxFrame[rxFrameIndex].arg = (uint32_t) hMcbspRxChan; + rxFrame[rxFrameIndex].status = MCBSP_STATUS_COMPLETED; + rxFrame[rxFrameIndex].misc = 1; /* reserved - used in callback to indicate asynch packet */ + + status = mcbspSubmitChan(hMcbspRxChan, (void *)&rxFrame[rxFrameIndex]); + if (status != MCBSP_STATUS_PENDING) + { + MCBSP_log ("Debug(Core %d): Error: RX buffer #%d submission FAILED\n", coreNum, init_count); + retval = 1; + } + else + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): RX buffer #%d is submitted to MCBSP driver\n", coreNum, init_count); +#endif + } + rxFrameIndex++; + rxFrameIndex = (rxFrameIndex >= (NUM_OF_MCBSP_FRAMES)) ? 0 : rxFrameIndex; + + rxSubmitCount++; + + /* TX frame processing */ + txFrame[txFrameIndex].cmd = Mcbsp_IOBuf_Cmd_WRITE; +#ifdef MCBSP_LOOP_PING_PONG + txFrame[txFrameIndex].addr = (void*)bufTxPingPong[init_count]; +#else + txFrame[txFrameIndex].addr = (void*)bufTx[init_count]; +#endif + txFrame[txFrameIndex].size = BUFSIZE; + txFrame[txFrameIndex].arg = (uint32_t)hMcbspTxChan; + txFrame[txFrameIndex].status = MCBSP_STATUS_COMPLETED; + txFrame[txFrameIndex].misc = 1; /* reserved - used in callback to indicate asynch packet */ + + status = mcbspSubmitChan(hMcbspTxChan, (void *)&txFrame[txFrameIndex]); + if (status != MCBSP_STATUS_PENDING) + { + MCBSP_log ("Debug(Core %d): Error: TX buffer #%d submission FAILED\n", coreNum, init_count); + retval = 1; + } + else + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): TX buffer #%d submission is submitted to MCBSP driver\n", coreNum, init_count); +#endif + } + txFrameIndex++; + txFrameIndex = (txFrameIndex >=(NUM_OF_MCBSP_FRAMES)) ? 0 : txFrameIndex; + + txSubmitCount++; + } + + /* Wait for TX and RX processing to complete */ + while (1) + { + if (edmaTxDone == 1) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): EDMA -> Iteration-%d frames are transmitted to TX path\n", coreNum, count); +#endif + edmaTxDone = 0; /* Reset for next iteration */ + mcbspTxDone = 1; + } + if (edmaRxDone == 1) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): EDMA -> Iteration-%d frames are received from RX path\n", coreNum, count); +#endif + edmaRxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 1; + } + if ((mcbspTxDone == 1) && (mcbspRxDone == 1)) + { + mcbspTxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 0; /* Reset for next iteration */ + break; + } + } +#ifdef MCBSP_LOOP_PING_PONG + /* Change ping Pong Index */ + init_count=0; +#endif +#endif /* MCBSP_EXTERNAL_CLOCK */ + + /* Start main loop to iterate through frames */ + while(debugVar) + { + /* submit frames to the driver */ + for (count = init_count; count < NUM_BUFS; count++) + { +#ifdef MCBSP_EXTERNAL_CLOCK +/* With External clock the data coming from the RX side is copied to loop back to the Tx side */ + memcpy((uint8_t *)bufTx[count], (uint8_t *)bufRx[count], BUFSIZE); +#endif +#ifdef MCBSP_LOOP_PING_PONG + memset((uint8_t *)bufRxPingPong[pingPongIndex], 0, BUFSIZE); +#else + memset((uint8_t *)bufRx[count], 0, BUFSIZE); + /* RX frame processing */ + rxFrame[rxFrameIndex].cmd = Mcbsp_IOBuf_Cmd_READ; + rxFrame[rxFrameIndex].addr = (void*)getGlobalAddr(bufRx[count]); + rxFrame[rxFrameIndex].size = BUFSIZE; + rxFrame[rxFrameIndex].arg = (uint32_t) hMcbspRxChan; + rxFrame[rxFrameIndex].status = MCBSP_STATUS_COMPLETED; + rxFrame[rxFrameIndex].misc = 1; /* reserved - used in callback to indicate asynch packet */ + + status = mcbspSubmitChan(hMcbspRxChan, (void *)&rxFrame[rxFrameIndex]); + if (status != MCBSP_STATUS_PENDING) + { + MCBSP_log ("Debug(Core %d): Error: RX buffer #%d submission FAILED\n", coreNum, count); + retval = 1; + } + else + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): RX buffer #%d is submitted to MCBSP driver\n", coreNum, count); +#endif + } + rxFrameIndex++; + rxFrameIndex = (rxFrameIndex >= (NUM_OF_MCBSP_FRAMES)) ? 0 : rxFrameIndex; +#endif + rxSubmitCount++; +#ifdef MCBSP_LOOP_PING_PONG + /* Copy buffer from buffer to ping pong buffer*/ + memcpy((uint8_t *)bufTxPingPong[pingPongIndex], (uint8_t *)bufTx[count],BUFSIZE); +#else + /* TX frame processing */ + txFrame[txFrameIndex].cmd = Mcbsp_IOBuf_Cmd_WRITE; + txFrame[txFrameIndex].addr = (void*)getGlobalAddr(bufTx[count]); + txFrame[txFrameIndex].size = BUFSIZE; + txFrame[txFrameIndex].arg = (uint32_t)hMcbspTxChan; + txFrame[txFrameIndex].status = MCBSP_STATUS_COMPLETED; + txFrame[txFrameIndex].misc = 1; /* reserved - used in callback to indicate asynch packet */ + + status = mcbspSubmitChan(hMcbspTxChan, (void *)&txFrame[txFrameIndex]); + if (status != MCBSP_STATUS_PENDING) + { + MCBSP_log ("Debug(Core %d): Error: TX buffer #%d submission FAILED\n", coreNum, count); + retval = 1; + } + else + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): TX buffer #%d is submitted to MCBSP driver\n", coreNum, count); +#endif + } + txFrameIndex++; + txFrameIndex = (txFrameIndex >= (NUM_OF_MCBSP_FRAMES)) ? 0 : txFrameIndex; +#endif + txSubmitCount++; + + /* Wait for TX and RX processing to complete */ + while (1) + { + if (edmaTxDone == 1) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): EDMA -> Buffer #-%d is transmitted to TX path\n", coreNum, count); +#endif + edmaTxDone = 0; /* Reset for next iteration */ + mcbspTxDone = 1; + } + if (edmaRxDone == 1) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): EDMA -> Buffer #-%d is received from RX path\n", coreNum, count); +#endif + edmaRxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 1; + } + if ((mcbspTxDone == 1) && (mcbspRxDone == 1)) + { + mcbspTxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 0; /* Reset for next iteration */ + break; + } + } +#ifdef MCBSP_LOOP_PING_PONG + /* Change ping Pong Index */ + pingPongIndex=(pingPongIndex)?0:1; + + /* Copy buffer from buffer to other buffer*/ + memcpy((void*)bufRx[count], (uint8_t *)bufRxPingPong[pingPongIndex],BUFSIZE); +#endif + /* compare buffer contents */ + for (tempCount = 0; tempCount < BUFSIZE; tempCount++) + { + if (((char *)bufTx[count])[tempCount] != ((char *)bufRx[count])[tempCount]) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log("Debug(Core %d): Error: TX and RX frame data DOES NOT match in Buffer #-%d\n", + coreNum, count); + MCBSP_log("Debug(Core %d): Error: Buffer index = %d, Tx data = %d, Rx data = %d\n", coreNum, + tempCount, ((char *)bufTx[count])[tempCount], ((char *)bufRx[count])[tempCount]); +#endif + errBuffCount++; + break; + } + } + if (tempCount >= BUFSIZE) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log("Debug(Core %d): TX and RX frames data match in iteration-%d !!!\n", coreNum, count); +#endif + } + } + init_count=0; + num_iterations++; +#ifndef MCBSP_EXTERNAL_CLOCK + if(num_iterations >= NUM_OF_ITERATIONS) + break; +#endif + switch(debugCommand) + { + case DEBUG_COMMAND_RESTART_CHANNELS: + debugCommand=0; + /* Close channel and reopen */ + /* Delete RX channel */ + status = mcbspDeleteChan(hMcbspRxChan); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Delete Channel (RX) failed\n", coreNum); + return; + } + + /* Delete TX channel*/ + status = mcbspDeleteChan(hMcbspTxChan); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Delete Channel (TX) failed\n", coreNum); + return; + } + /* Create a RX channel for receiving */ + status = mcbspCreateChan(&hMcbspRxChan, hMcbspDev, MCBSP_MODE_INPUT, &mcbspChanparamRx, mcbspAppCallback, &rxChanMode); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Create Channel (RX) failed\n", coreNum); + return; + } + + /* Create a TX channel for the transmission */ + status = mcbspCreateChan(&hMcbspTxChan, hMcbspDev, MCBSP_MODE_OUTPUT, &mcbspChanparamTx, mcbspAppCallback, &txChanMode); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Create Channel (TX) failed\n", coreNum); + return; + } + edmaTxDone = 0; /* Reset for next iteration */ + edmaRxDone = 0; /* Reset for next iteration */ + mcbspTxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 0; /* Reset for next iteration */ + goto restart_mcbsp_point; + + default: + debugCommand=0; + break; + + } + + } + + if ((errBuffCount == 0 ) & (retval ==0)) + { + MCBSP_log("Debug(Core %d): MCBSP Digital Loopback Application completed successfully : "\ + "Num iterations %d Num buffers per iteration %d!!!\n", + coreNum, num_iterations, NUM_BUFS); + MCBSP_log("\n All tests have passed \n"); + } + else + { + MCBSP_log("Debug(Core %d): MCBSP Digital Loopback application FAILED : "\ + "Num iterations %d Num buffers per iteration %d Failed buffers %d!!!\n", + coreNum, num_iterations, NUM_BUFS, errBuffCount); + } + + /* Delete RX channel */ + status = mcbspDeleteChan(hMcbspRxChan); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Delete Channel (RX) failed\n", coreNum); + return; + } + + /* Delete TX channel*/ + status = mcbspDeleteChan(hMcbspTxChan); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Delete Channel (TX) failed\n", coreNum); + return; + } + return; +} + +/* + * \brief Void main(Void) + * + * Main function of the sample application. This function calls the + * function to configure the mcbsp instance. + * + * \param None + * + * \return None + */ +#include "ti/sysbios/hal/Cache.h" + +Void main(Void) +{ + Task_Params taskParams; + EDMA3_DRV_Result edmaResult = 0; +#ifdef SIMULATOR_SUPPORT + uint8_t uchValue, uchReadValue; +#endif + + Board_initCfg arg = BOARD_INIT_MODULE_CLOCK | BOARD_INIT_PINMUX_CONFIG | BOARD_INIT_UART_STDIO; + Board_init(arg); + + uint32_t temp; + /* Get the core number. */ + coreNum = 0; //CSL_chipReadReg (CSL_CHIP_DNUM); + +#ifdef SIMULATOR_SUPPORT +#warn MCBSP Digital Loopback example is not supported on SIMULATOR !!! + MCBSP_log ("MCBSP Digital Loopback example is not supported on SIMULATOR. Exiting!\n"); + return; +#else + MCBSP_log ("Debug(Core %d): Running MCBSP Digital Loopback example on the DEVICE\n", coreNum); +#endif + + /* Initialize the system only if the core was configured to do so. */ + if (coreNum == CORE_SYS_INIT) + { +#if 0 + MCBSP_log ("Debug(Core %d): System Initialization for MCBSP\n", coreNum); + /* Read FPGA register */ + if (0 != (platform_fpgaReadConfigReg(MCBSP_FPGA_MISC_REG_OFFSET, &uchReadValue))) + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register READ failed \n", coreNum); + return; + } + /* Clear field for configuration */ + uchValue = (uchReadValue & (~0x3)); +#ifndef PLATFORM_FPGA_MCBSP_AMC_EN + uchValue |= 0x3; +#endif + /* Drive McBSP_AMC_EN# high. Output SLCLKs, TxCLKs, RxCLKs, FSTs, FSRs as Hi-Z. + * These clocks and syncs are tri-stated and McBSP is accessed over 80-pin header */ + if (0 != (platform_fpgaWriteConfigReg(MCBSP_FPGA_MISC_REG_OFFSET, (uchValue)))) + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register WRITE failed \n", coreNum); + return; + } + + /* DEBUG: Verify if FPGA register is configured correctly */ + if (0 != (platform_fpgaReadConfigReg(MCBSP_FPGA_MISC_REG_OFFSET, &uchReadValue))) + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register READ failed \n", coreNum); + return; + } + + if (uchValue != uchReadValue) + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register setting failed \n", coreNum); + return; + } + else + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register is set to %d \n", coreNum, uchValue); + } +#endif + /* MCBSP Driver Initialization: This should always be called before + * invoking the MCBSP Driver. */ + mcbspInit(); + + /* Device Specific MCBSP Initializations */ + McbspDevice_init(); + + /* MCBSP Driver is operational at this time. */ + MCBSP_log ("Debug(Core %d): MCBSP Driver Initialization Done\n", coreNum); + + /* Write to the SHARED memory location at this point in time. The other cores cannot execute + * till the MCBSP Driver is up and running. */ + isMCBSPInitialized[0] = 1; + + /* The MCBSP IP block has been initialized. We need to writeback the cache here because it will + * ensure that the rest of the cores which are waiting for MCBSP to be initialized would now be + * woken up. */ + //CACHE_wbL1d ((void *) &isMCBSPInitialized[0], MCBSP_MAX_CACHE_ALIGN, CACHE_FENCE_WAIT); + Cache_wb ((void *) &isMCBSPInitialized[0], MCBSP_CACHE_LENGTH,0x7fff, 1); + } + else + { + /* All other cores need to wait for the MCBSP to be initialized before they proceed with the test. */ + MCBSP_log ("Debug(Core %d): Waiting for MCBSP to be initialized.\n", coreNum); + + /* All other cores loop around forever till the MCBSP is up and running. + * We need to invalidate the cache so that we always read this from the memory. */ + while (isMCBSPInitialized[0] == 0) + //CACHE_invL1d ((void *) &isMCBSPInitialized[0], MCBSP_MAX_CACHE_ALIGN, CACHE_FENCE_WAIT); + Cache_inv ((void *) &isMCBSPInitialized[0], MCBSP_CACHE_LENGTH, 0x7fff, 1); + + + MCBSP_log ("Debug(Core %d): MCBSP can now be used.\n", coreNum); + } + /* Enabling the dmaChannel MCBSP Events to EDMA (36-40) */ + temp=sampleEdma3GblCfgParams[0].dmaChannelHwEvtMap[1]; + sampleEdma3GblCfgParams[0].dmaChannelHwEvtMap[1]= temp | 0x000000F0; + + /* Let RM Own the dmaChannels (36-40) */ + temp=sampleInstInitConfig[0][0].ownDmaChannels[1]; + sampleInstInitConfig[0][0].ownDmaChannels[1]=temp | 0x000000F0; + + /* Let RM Own the TCCs (36-40) */ + temp=sampleInstInitConfig[0][0].ownTccs[1]; + sampleInstInitConfig[0][0].ownTccs[1]= temp | 0x000000F0; + + /* Initialize EDMA3 library */ + hEdma[0] = edma3init(0, &edmaResult); + + if (edmaResult != EDMA3_DRV_SOK) + { + /* Report EDMA Error */ + MCBSP_log("Debug(Core %d): EDMA Driver Initialization FAILED\n", coreNum); + } + else + { + MCBSP_log("Debug(Core %d): EDMA Driver Initialization Done\n", coreNum); + } + + /* Create the Digital Loopback Application Task */ + Task_Params_init(&taskParams); + Task_create(mcbspDigLpbkApp, &taskParams, NULL); + + /* Start BIOS */ + BIOS_start(); + + return; +} + +/* ========================================================================== */ +/* END OF FILE */ +/* ========================================================================== */ diff --git a/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg new file mode 100644 index 000000000..7377088a4 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg @@ -0,0 +1,80 @@ +/* + * Copyright 2012-2018 by Texas Instruments Incorporated. + * + * All rights reserved. Property of Texas Instruments Incorporated. + * Restricted rights to use, duplicate or disclose this code are + * granted through contract. + * + */ + +/* THIS FILE WAS GENERATED BY ti.sysbios.genx */ + +/* + * ======== mcbspMasterDigLpbk.cfg ======== + * + */ + +/* Load and use the required BIOS packages */ +var BIOS = xdc.useModule('ti.sysbios.BIOS'); +var Task = xdc.useModule('ti.sysbios.knl.Task'); +var cache = xdc.useModule('ti.sysbios.hal.Cache'); +var Idle = xdc.useModule('ti.sysbios.knl.Idle'); +var Queue = xdc.useModule('ti.sysbios.knl.Queue'); +var ECM = xdc.useModule('ti.sysbios.family.c64p.EventCombiner'); +var CpIntc = xdc.useModule('ti.sysbios.family.c66.tci66xx.CpIntc'); +var Memory = xdc.useModule('xdc.runtime.Memory'); +var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem'); + +/* Load and use the System Package */ +var System = xdc.useModule('xdc.runtime.System'); +var SysStd = xdc.useModule('xdc.runtime.SysStd'); + +/* Create a default system heap using ti.bios.HeapMem. */ +var heapMemParams1 = new HeapMem.Params; +heapMemParams1.size = 32768; +heapMemParams1.sectionName = "systemHeap"; +Program.global.heap0 = HeapMem.create(heapMemParams1); + +/* This is the default memory heap. */ +Memory.defaultHeapInstance = Program.global.heap0; + +/* + * Create and install logger for the whole system. + * Enable Event Groups here and registering of ISR for specific GEM INTC is done + * using EventCombiner_dispatchPlug() and Hwi_eventMap() APIs + */ +ECM.eventGroupHwiNum[0] = 7; +ECM.eventGroupHwiNum[1] = 8; +ECM.eventGroupHwiNum[2] = 9; +ECM.eventGroupHwiNum[3] = 10; + +/* Load and use the mcbsp, EDMA, PlatformLib etc. packages */ +var Edma = xdc.loadPackage ("ti.sdo.edma3.drv.sample"); +var drv = xdc.loadPackage ("ti.sdo.edma3.drv"); +var rm = xdc.loadPackage ("ti.sdo.edma3.rm"); + +var devType = "c6657" +var mcbsp = xdc.useModule('ti.drv.mcbsp.Settings'); +mcbsp.deviceType = devType; + +/* Load the uart package */ +var Uart = xdc.loadPackage('ti.drv.uart'); +Uart.Settings.socType = devType; + +var Csl = xdc.useModule('ti.csl.Settings'); +Csl.deviceType = devType; +Csl.libProfile = "release"; + +/* Load the OSAL package */ +var osType = "tirtos" +var Osal = xdc.useModule('ti.osal.Settings'); +Osal.osType = osType; +Osal.socType = devType; + +/* Load the Board package and set the board name */ +var Board = xdc.loadPackage('ti.board'); +Board.Settings.boardName = "evmC6657"; + +/* Circular buffer size for System_printf() */ +System.SupportProxy = SysStd; + diff --git a/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd new file mode 100644 index 000000000..207553081 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd @@ -0,0 +1,9 @@ +SECTIONS +{ + .init_array: load >> L2SRAM + .mcbsp: load >> L2SRAM + .mcbspSharedMem: load >> L2SRAM + platform_lib: load >> L2SRAM + systemHeap: load >> L2SRAM +} + diff --git a/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c new file mode 100644 index 000000000..888513df5 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c @@ -0,0 +1,641 @@ +/** + * @file mcbspMasterDigLpbk_osal.c + * + * @brief + * This is the OS abstraction layer and is used by the MCBSP + * driver for the MCBSP Example Digital Loopback Application. + * + * \par + * ============================================================================ + * @n (C) Copyright 2012, Texas Instruments, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * \par +*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if 0 +/* CSL Include Files */ +#include +#include +#include +#include +#endif +/* IPC includes */ +/* #include +#include +#include +#include */ + +/********************************************************************** + ************************** Local Definitions ************************* + **********************************************************************/ + +#define MCBSP_HW_SEM 1 +#define PLATFORM_SPI_HW_SEM 2 /**< SPI BUS arbitration - Used by platform library */ + +#ifdef MCBSP_LOOP_PING_PONG +#define MAX_MEM_MGR_ENTRIES 8 +#else +#define MAX_MEM_MGR_ENTRIES 4 +#endif + +typedef struct MEM_MGMT_ENTRY +{ + uint8_t* ptrMemory; + uint32_t isFree; +}MEM_MGMT_ENTRY; + +MEM_MGMT_ENTRY gDataBufferMemMgr[MAX_MEM_MGR_ENTRIES]; +int32_t gDataBufferMemMgrMaxSize = 0; + +/********************************************************************** + ************************** Global Variables ************************** + **********************************************************************/ +UInt32 malloc_counter = 0; +UInt32 free_counter = 0; + +/********************************************************************** + ************************** Extern Definitions ************************ + **********************************************************************/ + + +/********************************************************************** + **************************** OSAL Functions ************************** + **********************************************************************/ + +/** + * @b Description + * @n + * Utility function which converts a local address to global. + * + * @param[in] addr + * Local address to be converted + * + * @retval + * Global Address + */ +void *Osal_local2Global (void *addr) +{ + UInt32 corenum; + + /* Get the core number. */ + corenum = 0;//CSL_chipReadReg(CSL_CHIP_DNUM); + return addr; + + if(((UInt32)addr & 0xff000000) == 0) { + /* Compute the global address. */ + return ((void *)((UInt32)(addr) + (0x10000000 + (corenum*0x1000000)))); + } + else + return(addr); +} + +/** + * @b Description + * @n + * The function is used to allocate a memory block of the specified size. + * + * @param[in] numBytes + * Number of bytes to be allocated. + * + * @retval + * Allocated block address + */ +Void* Osal_mcbspMalloc(UInt32 numBytes) +{ + Error_Block errorBlock; + Void* ptr; + + /* Increment the allocation counter. */ + malloc_counter++; + + /* Allocate the memory. */ + ptr = Memory_alloc(NULL, numBytes, 0, &errorBlock); + + /* Return the allocated memory block. */ + return ptr; +} + +/** + * @b Description + * @n + * The function is used to clean up a specific memory block and is called + * from the MCBSP Driver. + * + * @param[in] ptr + * Pointer to the memory block to be cleaned up. + * @param[in] size + * Size of the memory block being cleaned up. + * + * @retval + * Not Applicable + */ +Void Osal_mcbspFree (Void* ptr, UInt32 size) +{ + /* Increment the free counter. */ + free_counter++; + Memory_free(NULL, ptr, size); +} + +/** + * @b Description + * @n + * The function is used to allocate a block of memory for all the data buffer + * operations. This function is called by the application. + * + * @param[in] numBuffers + * Number of data buffers + * @param[in] dataBufferSize + * Size of each data buffer + * + * @retval + * Success - 0 + * @retval + * Error - <0 + */ +int32_t Osal_dataBufferInitMemory(uint32_t dataBufferSize) +{ + Error_Block errorBlock; + uint8_t* ptrMemory; + uint32_t index; + + /* Allocate memory for all the data buffers */ + ptrMemory = (uint8_t*)Memory_alloc(NULL, MAX_MEM_MGR_ENTRIES*dataBufferSize, 128, &errorBlock); + if (ptrMemory == NULL) + return -1; + + /* Convert to a global address */ + ptrMemory = Osal_local2Global(ptrMemory); + + /* Now we chop up the memory and add it to the memory manager. */ + for (index = 0; index < MAX_MEM_MGR_ENTRIES; index++) + { + /* Populate the data memory management entry. */ + gDataBufferMemMgr[index].isFree = 1; + gDataBufferMemMgr[index].ptrMemory = ptrMemory; + + /* Increment the memory to the next address */ + ptrMemory = ptrMemory + dataBufferSize; + } + + /* Remember the memory buffer size */ + gDataBufferMemMgrMaxSize = dataBufferSize; + + /* Memory Manager has been created. */ + return 0; +} + +/** + * @b Description + * @n + * The function is used to allocate a data buffer of the specified + * size. Data buffers should always be allocated from the global + * address space. + * + * @param[in] numBytes + * Number of bytes to be allocated. + * + * @retval + * Allocated block address + */ +Void* Osal_mcbspDataBufferMalloc(UInt32 numBytes) +{ + uint32_t index; + void* ptrMemory = NULL; + + /* Basic Validation: Ensure that the memory size requested is within range. */ + if (numBytes > gDataBufferMemMgrMaxSize) + return NULL; + + /* Increment the allocation counter. */ + malloc_counter++; + + /* Lock out interrupts */ + Hwi_disable(); + + /* Cycle through for a free entry. */ + for (index = 0; index < MAX_MEM_MGR_ENTRIES; index++) + { + /* Check if the entry is free or not? */ + if (gDataBufferMemMgr[index].isFree == 1) + { + /* Entry was free. We can use it. */ + ptrMemory = gDataBufferMemMgr[index].ptrMemory; + + /* Mark the entry as used. */ + gDataBufferMemMgr[index].isFree = 0; + + /* We have found a match. */ + break; + } + } + + /* Unlock interrupts. */ + Hwi_enable(); + + /* Return the allocated memory. */ + return ptrMemory; +} + +/** + * @b Description + * @n + * The function is used to clean up a previously allocated data buffer + * block. All data buffers are in the global address space + * + * @param[in] ptr + * Pointer to the data buffer block to be cleaned up + * @param[in] size + * Size of the data buffer + * + * @retval + * Not Applicable + */ +void Osal_mcbspDataBufferFree(void* ptr, uint32_t numBytes) +{ + uint32_t index; + + /* Increment the free counter. */ + free_counter++; + + /* Lock out interrupts */ + Hwi_disable(); + + /* Cycle through and clean up */ + for (index = 0; index < MAX_MEM_MGR_ENTRIES; index++) + { + /* Check if the entry is free or not? */ + if (gDataBufferMemMgr[index].ptrMemory == (uint8_t*)ptr) + { + /* Mark the entry as free. */ + gDataBufferMemMgr[index].isFree = 1; + + /* We have found a match. */ + break; + } + } + + /* Unlock interrupts. */ + Hwi_enable(); + return; +} + +/** + * @b Description + * @n + * The function is the MCBSP OSAL Logging API which logs + * the messages on the console. + * + * @param[in] fmt + * Formatted String. + * + * @retval + * Not Applicable + */ +Void Osal_mcbspLog( String fmt, ... ) +{ +} + +/** + * @b Description + * @n + * The function is used to create a critical section. + * + * @retval + * Semaphore Handle created + */ +Void* Osal_mcbspCreateSem(Void) +{ + return (Void*)Semaphore_create(0, NULL, NULL); +} + +/** + * @b Description + * @n + * The function is used to delete a critical section. + * + * @param[in] semHandle + * Semaphore handle to be deleted + * + * @retval + * Not Applicable + */ +Void Osal_mcbspDeleteSem(Void* semHandle) +{ + Semaphore_delete(semHandle); +} + +/** + * @b Description + * @n + * The function is used to pend on a semaphore + * + * @param[in] semHandle + * Semaphore handle on which the API will pend + * + * @retval + * Not Applicable + */ +Void Osal_mcbspPendSem(Void* semHandle) +{ + Semaphore_pend(semHandle, BIOS_WAIT_FOREVER); +} + +/** + * @b Description + * @n + * The function is used to post a semaphore + * + * @param[in] semHandle + * Semaphore handle which will be posted + * + * @retval + * Not Applicable + */ +Void Osal_mcbspPostSem(Void* semHandle) +{ + Semaphore_post(semHandle); +} + +/** + * @b Description + * @n + * This is the Multicore OSAL Implementation to protect the driver shared + * resources across multiple cores. + * + * @retval + * Semaphore Opaque Handle + */ +void* Osal_mcbspEnterMultipleCoreCriticalSection(void) +{ + /* Get the hardware semaphore */ + // while ((CSL_semAcquireDirect (MCBSP_HW_SEM)) == 0); + return NULL; +} + +/** + * @b Description + * @n + * The function is called to end the critical section which was protecting + * shared resources from access across multiple cores. + * + * @param[in] critSectHandle + * Semaphore opaque handle. + * + * @retval + * None + */ +Void Osal_mcbspExitMultipleCoreCriticalSection(Void* critSectHandle) +{ + //CSL_semReleaseSemaphore (MCBSP_HW_SEM); +} + +/** + * @b Description + * @n + * The function is used to provide critical section to prevent access of shared + * resources from single core and multiple threads. + * + * @param[in] drvHandle + * Driver Handle which needs critical section to protect its resources. + * + * @retval + * Opaque handle + */ +Void* Osal_mcbspEnterSingleCoreCriticalSection() +{ + /* Disable interrupts */ + return (Void*)Hwi_disable(); +} + +/** + * @b Description + * @n + * The function is called to end the critical section access of shared resources + * from single cores. + * + * @param[in] drvHandle + * Driver Handle which needed critical section to protect its resources. + * @param[in] critSectHandle + * Opaque handle retreived when the Single Core Protection Enter API was called + * + * @retval + * Not Applicable. + */ +Void Osal_mcbspExitSingleCoreCriticalSection(Void* critSectHandle) +{ + /* Driver Managed Configuration: We need to enable interrupts. */ + Hwi_enable(); +} + +/** + * @b Description + * @n + * The function is used by the MCBSP driver to indicate that + * its about to access a block of memory and we need to ensure + * that the cache contents for this block are invalidated before + * we try and use it. + * + * @param[in] ptr + * Pointer to the buffer which is being accessed + * @param[in] size + * Size of the buffer which is to be accessed. + * + * @retval + * None + */ +#include "ti/sysbios/hal/Cache.h" +void Osal_mcbspBeginMemAccess(void* ptr, uint32_t size) +{ + UInt key; + + /* Disable Interrupts */ + key = Hwi_disable(); + + /* Cleanup the prefetch buffer also. */ + //CSL_XMC_invalidatePrefetchBuffer(); + + /* Invalidate the cache. */ + //CACHE_invL1d (ptr, size, CACHE_FENCE_WAIT); + + Cache_inv ((void *) ptr,size, 0x7fff, 1); + + /* Reenable Interrupts. */ + Hwi_restore(key); +} + +/** + * @b Description + * @n + * The function is used by the MCBSP driver to indicate that its + * ending access to a block of memory. We need to ensure that the + * contents of the cache are written back to the actual memory. + * + * @param[in] ptr + * Pointer to the buffer + * @param[in] size + * Size of the buffer + * + * @retval + * None + */ +void Osal_mcbspEndMemAccess(void* ptr, uint32_t size) +{ + UInt key; + + /* Disable Interrupts */ + key = Hwi_disable(); + + /* Writeback the cache. */ + //CACHE_wbL1d (ptr, size, CACHE_FENCE_WAIT); + Cache_wb ((void *) ptr,size, 0x7fff, 1); + /* Reenable Interrupts. */ + Hwi_restore(key); +} + +/** + * @brief The function is used by the MCBSP driver to test for an + * empty queue. + * + * Parameter + * @n handle - Handle of a previously created Queue instance object + * + * Return Value + * @n TRUE - If the queue is empty + */ +Bool Osal_mcbspQueueEmpty(void* handle) +{ + return Queue_empty(handle); +} + +/** + * @brief The macro is used by the MCBSP driver to get an + * element from the front of queue. The function + * removes the element from the front of queue and + * returns a pointer to it. + * + * Parameter + * @n handle - Handle of a previously created Queue instance object + * + * Return Value + * @n Handle (pointer) to former first element + */ +void* Osal_mcbspQueueGet(void* handle) +{ + return Queue_get(handle); +} + +/** + * @brief The macro is used by the MCBSP driver to put an + * element at the end of queue. + * + * Parameter + * @n handle - Handle of a previously created Queue instance object + * @n elem - Pointer to new queue element + * + * Return Value + * @n None + */ +void Osal_mcbspQueuePut(void* handle, Mcbsp_QueueElem* elem) +{ + Queue_put(handle, (Queue_Elem *)elem); + return; +} + +/** + * @brief The macro is used by the MCBSP driver to wait 'n' + * bit clocks to ensure proper synchronization internally. + * + * Parameter + * @n nticks - Number of bit clocks to wait + * + * Return Value + * @n None + */ +void Osal_mcbspWaitNBitClocks(uint32_t nticks) +{ + //Task_sleep(nticks); + int i=0; + for (i=0; i<100; i++); + return; +} + +/* OSAL functions for Platform Library */ +uint8_t *Osal_platformMalloc (uint32_t num_bytes, uint32_t alignment) +{ + return malloc(num_bytes); +} + +void Osal_platformFree (uint8_t *dataPtr, uint32_t num_bytes) +{ + /* Free up the memory */ + if (dataPtr) + { + free(dataPtr); + } +} + +void Osal_platformSpiCsEnter(void) +{ + /* Get the hardware semaphore. + * + * Acquire Multi core CPPI synchronization lock + */ + //while ((CSL_semAcquireDirect (PLATFORM_SPI_HW_SEM)) == 0); + + return; +} + +void Osal_platformSpiCsExit (void) +{ + /* Release the hardware semaphore + * + * Release multi-core lock. + */ + //CSL_semReleaseSemaphore (PLATFORM_SPI_HW_SEM); + + return; +} diff --git a/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/sample_c6657_cfg.c b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/sample_c6657_cfg.c new file mode 100644 index 000000000..b698e98d2 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/sample_c6657_cfg.c @@ -0,0 +1,701 @@ +/* + * sample_c6657_cfg.c + * + * Platform specific EDMA3 hardware related information like number of transfer + * controllers, various interrupt ids etc. It is used while interrupts + * enabling / disabling. It needs to be ported for different SoCs. + * + * Copyright (C) 2011-2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#include + +/* Number of EDMA3 controllers present in the system */ +#define NUM_EDMA3_INSTANCES 1u +const unsigned int numEdma3Instances = NUM_EDMA3_INSTANCES; + +/* Number of DSPs present in the system */ +#define NUM_DSPS 2u +//const unsigned int numDsps = NUM_DSPS; + +#define CGEM_REG_START (0x01800000) + + +extern cregister volatile unsigned int DNUM; + +#define MAP_LOCAL_TO_GLOBAL_ADDR(addr) ((1<<28)|(DNUM<<24)|(((unsigned int)addr)&0x00ffffff)) + + +/* Determine the processor id by reading DNUM register. */ +unsigned short determineProcId() + { + volatile unsigned int *addr; + unsigned int core_no; + + /* Identify the core number */ + addr = (unsigned int *)(CGEM_REG_START+0x40000); + core_no = ((*addr) & 0x000F0000)>>16; + + return core_no; + } + +signed char* getGlobalAddr(signed char* addr) +{ + if (((unsigned int)addr & (unsigned int)0xFF000000) != 0) + { + return (addr); /* The address is already a global address */ + } + + return((signed char*)(MAP_LOCAL_TO_GLOBAL_ADDR(addr))); +} +/** Whether global configuration required for EDMA3 or not. + * This configuration should be done only once for the EDMA3 hardware by + * any one of the masters (i.e. DSPs). + * It can be changed depending on the use-case. + */ +unsigned int gblCfgReqdArray [NUM_DSPS] = { + 0, /* DSP#0 is Master, will do the global init */ + 1, /* DSP#1 is Slave, will not do the global init */ + }; + +unsigned short isGblConfigRequired(unsigned int dspNum) + { + return gblCfgReqdArray[dspNum]; + } + +/* Semaphore handles */ +EDMA3_OS_Sem_Handle semHandle[NUM_EDMA3_INSTANCES] = {NULL}; + + +/* Variable which will be used internally for referring number of Event Queues. */ +unsigned int numEdma3EvtQue[NUM_EDMA3_INSTANCES] = {4u}; + +/* Variable which will be used internally for referring number of TCs. */ +unsigned int numEdma3Tc[NUM_EDMA3_INSTANCES] = {4u}; + +/** + * Variable which will be used internally for referring transfer completion + * interrupt. Completion interrupts for all the shadow regions and all the + * EDMA3 controllers are captured since it is a multi-DSP platform. + */ +unsigned int ccXferCompInt[NUM_EDMA3_INSTANCES][EDMA3_MAX_REGIONS] = { + { + 24u, 25u, 26u, 27u, + 28u, 29u, 30u, 31u, + }, + }; + +/** + * Variable which will be used internally for referring channel controller's + * error interrupt. + */ +unsigned int ccErrorInt[NUM_EDMA3_INSTANCES] = {16u}; + +/** + * Variable which will be used internally for referring transfer controllers' + * error interrupts. + */ +unsigned int tcErrorInt[NUM_EDMA3_INSTANCES][EDMA3_MAX_TC] = { + { + 18u, 19u, 20u, 21u, + 0u, 0u, 0u, 0u, + }, + }; + +/* Driver Object Initialization Configuration */ +EDMA3_RM_GblConfigParams sampleEdma3GblCfgParams[NUM_EDMA3_INSTANCES] = + { + { + /* EDMA3 INSTANCE# 0 */ + /** Total number of DMA Channels supported by the EDMA3 Controller */ + 64u, + /** Total number of QDMA Channels supported by the EDMA3 Controller */ + 8u, + /** Total number of TCCs supported by the EDMA3 Controller */ + 64u, + /** Total number of PaRAM Sets supported by the EDMA3 Controller */ + 512u, + /** Total number of Event Queues in the EDMA3 Controller */ + 4u, + /** Total number of Transfer Controllers (TCs) in the EDMA3 Controller */ + 4u, + /** Number of Regions on this EDMA3 controller */ + 8u, + + /** + * \brief Channel mapping existence + * A value of 0 (No channel mapping) implies that there is fixed association + * for a channel number to a parameter entry number or, in other words, + * PaRAM entry n corresponds to channel n. + */ + 1u, + + /** Existence of memory protection feature */ + 1u, + + /** Global Register Region of CC Registers */ + (void *)0x02740000u, + /** Transfer Controller (TC) Registers */ + { + (void *)0x02790000u, + (void *)0x02798000u, + (void *)0x027A0000u, + (void *)0x027A8000u, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL + }, + /** Interrupt no. for Transfer Completion */ + 24u, + /** Interrupt no. for CC Error */ + 16u, + /** Interrupt no. for TCs Error */ + { + 18u, + 19u, + 20u, + 21u, + 0u, + 0u, + 0u, + 0u, + }, + + /** + * \brief EDMA3 TC priority setting + * + * User can program the priority of the Event Queues + * at a system-wide level. This means that the user can set the + * priority of an IO initiated by either of the TCs (Transfer Controllers) + * relative to IO initiated by the other bus masters on the + * device (ARM, DSP, USB, etc) + */ + { + 0u, + 1u, + 2u, + 3u, + 0u, + 0u, + 0u, + 0u + }, + /** + * \brief To Configure the Threshold level of number of events + * that can be queued up in the Event queues. EDMA3CC error register + * (CCERR) will indicate whether or not at any instant of time the + * number of events queued up in any of the event queues exceeds + * or equals the threshold/watermark value that is set + * in the queue watermark threshold register (QWMTHRA). + */ + { + 16u, + 16u, + 16u, + 16u, + 0u, + 0u, + 0u, + 0u + }, + + /** + * \brief To Configure the Default Burst Size (DBS) of TCs. + * An optimally-sized command is defined by the transfer controller + * default burst size (DBS). Different TCs can have different + * DBS values. It is defined in Bytes. + */ + { + 64u, + 64u, + 64u, + 64u, + 0u, + 0u, + 0u, + 0u + }, + + /** + * \brief Mapping from each DMA channel to a Parameter RAM set, + * if it exists, otherwise of no use. + */ + { + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP, + EDMA3_RM_CH_NO_PARAM_MAP, EDMA3_RM_CH_NO_PARAM_MAP + }, + + /** + * \brief Mapping from each DMA channel to a TCC. This specific + * TCC code will be returned when the transfer is completed + * on the mapped channel. + */ + { + 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, + 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, + 16u, 17u, 18u, 19u, 20u, 21u, 22u, 23u, + 24u, 25u, 26u, 27u, 28u, 29u, 30u, 31u, + 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, + EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u + }, + + /** + * \brief Mapping of DMA channels to Hardware Events from + * various peripherals, which use EDMA for data transfer. + * All channels need not be mapped, some can be free also. + */ + { + 0xFFFFFFFFu, + 0xFF0000FFu + } + }, + }; + +EDMA3_RM_InstanceInitConfig sampleInstInitConfig[NUM_EDMA3_INSTANCES][EDMA3_MAX_REGIONS] = + { + /* EDMA3 INSTANCE# 0 */ + { + /* Resources owned/reserved by region 0 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 159 128 191 160 223 192 255 224 */ + 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 287 256 319 288 351 320 383 352 */ + 0xFFFFFFFFu, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x0000FF00u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x0000000Fu}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x0000FFF0u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0xFFFFFFFFu, 0xFFFFFFFFu, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0xFFFFFFFFu, 0xFF0000FFu}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0xFFFFFFFFu, 0xFF0000FFu}, + }, + + /* Resources owned/reserved by region 1 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 415 384 447 416 479 448 511 480 */ + 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu,}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00FF0000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x000000F0u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00FF0000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0xFFFFFFFFu, 0xFFFFFFFFu, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0xFFFFFFFFu, 0xFF0000FFu}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0xFFFFFFFFu, 0xFF0000FFu}, + }, + + /* Resources owned/reserved by region 2 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 3 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 4 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 5 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 6 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 7 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + }, + }; + +/* End of File */ diff --git a/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/sample_c6657_int_reg.c b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/sample_c6657_int_reg.c new file mode 100644 index 000000000..a727019c7 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/sample_c6657_int_reg.c @@ -0,0 +1,153 @@ +/* + * sample_c6657_int_reg.c + * + * Platform specific interrupt registration and un-registration routines. + * + * Copyright (C) 2011-2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#include +#include +#include +#include + +#include + +extern unsigned int ccXferCompInt[][EDMA3_MAX_REGIONS]; +extern unsigned int ccErrorInt[]; +extern unsigned int tcErrorInt[][EDMA3_MAX_TC]; +extern unsigned int numEdma3Tc[]; + +void (*ptrEdma3TcIsrHandler[EDMA3_MAX_TC])(unsigned int arg) = + { + &lisrEdma3TC0ErrHandler0, + &lisrEdma3TC1ErrHandler0, + &lisrEdma3TC2ErrHandler0, + &lisrEdma3TC3ErrHandler0, + &lisrEdma3TC4ErrHandler0, + &lisrEdma3TC5ErrHandler0, + &lisrEdma3TC6ErrHandler0, + &lisrEdma3TC7ErrHandler0, + }; + +unsigned int hwiInterrupt = 8; + +/* Host interrupts for transfer completion */ +//unsigned int ccXferHostInt[NUM_EDMA3_INSTANCES][NUM_DSPS] = { +unsigned int ccXferHostInt[1][2] = { + {0u, 20u}, + }; +unsigned int edma3ErrHostInt[1][2] = { + {1u, 21u}, + }; + + +extern unsigned int dsp_num; + +/** To Register the ISRs with the underlying OS, if required */ +void registerEdma3Interrupts (unsigned int edma3Id) + { + static UInt32 cookie = 0; + Int eventId = 0; /* GEM event id */ + unsigned int numTc = 0; + + /* Disabling the global interrupts */ + cookie = Hwi_disable(); + + /* Transfer completion ISR */ + CpIntc_dispatchPlug(ccXferCompInt[edma3Id][dsp_num], + lisrEdma3ComplHandler0, + edma3Id, + TRUE); + CpIntc_mapSysIntToHostInt(0, ccXferCompInt[edma3Id][dsp_num], + ccXferHostInt[edma3Id][dsp_num]); + CpIntc_enableHostInt(0, ccXferHostInt[edma3Id][dsp_num]); + eventId = CpIntc_getEventId(ccXferHostInt[edma3Id][dsp_num]); + EventCombiner_dispatchPlug (eventId, CpIntc_dispatch, + ccXferHostInt[edma3Id][dsp_num], TRUE); + EventCombiner_enableEvent(eventId); + + /* CC Error ISR */ + CpIntc_dispatchPlug(ccErrorInt[edma3Id], lisrEdma3CCErrHandler0, + edma3Id, TRUE); + CpIntc_mapSysIntToHostInt(0, ccErrorInt[edma3Id], + edma3ErrHostInt[edma3Id][dsp_num]); + /* TC Error ISR */ + while (numTc < numEdma3Tc[edma3Id]) + { + CpIntc_dispatchPlug(tcErrorInt[edma3Id][numTc], + (CpIntc_FuncPtr )(ptrEdma3TcIsrHandler[numTc]), + edma3Id, TRUE); + CpIntc_mapSysIntToHostInt(0, tcErrorInt[edma3Id][numTc], + edma3ErrHostInt[edma3Id][dsp_num]); + numTc++; + } + /* Enable the host interrupt which is common for both CC and TC error */ + CpIntc_enableHostInt(0, edma3ErrHostInt[edma3Id][dsp_num]); + eventId = CpIntc_getEventId(edma3ErrHostInt[edma3Id][dsp_num]); + EventCombiner_dispatchPlug (eventId, CpIntc_dispatch, + edma3ErrHostInt[edma3Id][dsp_num], TRUE); + EventCombiner_enableEvent(eventId); + + Hwi_enableInterrupt(hwiInterrupt); + + /* enable the 'global' switch */ + CpIntc_enableAllHostInts(0); + + /* Restore interrupts */ + Hwi_restore(cookie); + } + +/** To Unregister the ISRs with the underlying OS, if previously registered. */ +void unregisterEdma3Interrupts (unsigned int edma3Id) + { + static UInt32 cookie = 0; + Int eventId = 0; /* GEM event id */ + + /* Disabling the global interrupts */ + cookie = Hwi_disable(); + + /* Transfer completion ISR */ + CpIntc_disableHostInt(0, ccXferHostInt[edma3Id][dsp_num]); + eventId = CpIntc_getEventId(ccXferHostInt[edma3Id][dsp_num]); + EventCombiner_disableEvent(eventId); + + /* CC/TC Error ISR */ + CpIntc_disableHostInt(0, edma3ErrHostInt[edma3Id][dsp_num]); + eventId = CpIntc_getEventId(edma3ErrHostInt[edma3Id][dsp_num]); + EventCombiner_disableEvent(eventId); + + /* Restore interrupts */ + Hwi_restore(cookie); + } + diff --git a/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/sample_cs.c b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/sample_cs.c new file mode 100644 index 000000000..2cfcc4ca8 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/sample_cs.c @@ -0,0 +1,419 @@ +/* + * sample_cs.c + * + * Sample functions showing the implementation of critical section entry/exit + * routines and various semaphore related routines (all BIOS6 depenedent). + * These implementations MUST be provided by the user / application, using the + * EDMA3 driver, for its correct functioning. + * + * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#include +#include +#include +#include +#include + +#include + +extern uint32_t ccXferCompInt[EDMA3_MAX_EDMA3_INSTANCES][EDMA3_MAX_REGIONS]; +extern uint32_t ccErrorInt[EDMA3_MAX_EDMA3_INSTANCES]; +extern uint32_t tcErrorInt[EDMA3_MAX_EDMA3_INSTANCES][EDMA3_MAX_TC]; + +/** + * Shadow Region on which the executable is running. Its value is + * populated with the DSP Instance Number here in this case. + */ +extern uint32_t region_id; + +/** + * \brief EDMA3 OS Protect Entry + * + * This function saves the current state of protection in 'intState' + * variable passed by caller, if the protection level is + * EDMA3_OS_PROTECT_INTERRUPT. It then applies the requested level of + * protection. + * For EDMA3_OS_PROTECT_INTERRUPT_XFER_COMPLETION and + * EDMA3_OS_PROTECT_INTERRUPT_CC_ERROR, variable 'intState' is ignored, + * and the requested interrupt is disabled. + * For EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR, '*intState' specifies the + * Transfer Controller number whose interrupt needs to be disabled. + * + * \param level is numeric identifier of the desired degree of protection. + * \param intState is memory location where current state of protection is + * saved for future use while restoring it via edma3OsProtectExit() (Only + * for EDMA3_OS_PROTECT_INTERRUPT protection level). + * \return None + */ +void edma3OsProtectEntry (uint32_t edma3InstanceId, + int32_t level, uint32_t *intState) + { + if (((level == EDMA3_OS_PROTECT_INTERRUPT) + || (level == EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR)) + && (intState == NULL)) + { + /* Nothing to be done here */ + } + else + { + switch (level) + { + /* Disable all (global) interrupts */ + case EDMA3_OS_PROTECT_INTERRUPT : + *intState = Hwi_disable(); + break; + + /* Disable scheduler */ + case EDMA3_OS_PROTECT_SCHEDULER : + Task_disable(); + break; + + /* Disable EDMA3 transfer completion interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_XFER_COMPLETION : + EventCombiner_disableEvent(ccXferCompInt[edma3InstanceId][region_id]); + break; + + /* Disable EDMA3 CC error interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_CC_ERROR : + EventCombiner_disableEvent(ccErrorInt[edma3InstanceId]); + break; + + /* Disable EDMA3 TC error interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR : + switch (*intState) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + /* Fall through... */ + /* Disable the corresponding interrupt */ + EventCombiner_disableEvent(tcErrorInt[edma3InstanceId][*intState]); + break; + + default: + break; + } + + break; + + default: + break; + } + } + return; + } + + +/** + * \brief EDMA3 OS Protect Exit + * + * This function undoes the protection enforced to original state + * as is specified by the variable 'intState' passed, if the protection + * level is EDMA3_OS_PROTECT_INTERRUPT. + * For EDMA3_OS_PROTECT_INTERRUPT_XFER_COMPLETION and + * EDMA3_OS_PROTECT_INTERRUPT_CC_ERROR, variable 'intState' is ignored, + * and the requested interrupt is enabled. + * For EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR, 'intState' specifies the + * Transfer Controller number whose interrupt needs to be enabled. + * \param level is numeric identifier of the desired degree of protection. + * \param intState is original state of protection at time when the + * corresponding edma3OsProtectEntry() was called (Only + * for EDMA3_OS_PROTECT_INTERRUPT protection level). + * \return None + */ +void edma3OsProtectExit (uint32_t edma3InstanceId, + int32_t level, uint32_t intState) + { + switch (level) + { + /* Enable all (global) interrupts */ + case EDMA3_OS_PROTECT_INTERRUPT : + Hwi_restore(intState); + break; + + /* Enable scheduler */ + case EDMA3_OS_PROTECT_SCHEDULER : + Task_enable(); + break; + + /* Enable EDMA3 transfer completion interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_XFER_COMPLETION : + EventCombiner_enableEvent(ccXferCompInt[edma3InstanceId][region_id]); + break; + + /* Enable EDMA3 CC error interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_CC_ERROR : + EventCombiner_enableEvent(ccErrorInt[edma3InstanceId]); + break; + + /* Enable EDMA3 TC error interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR : + switch ((int32_t)intState) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + /* Fall through... */ + /* Enable the corresponding interrupt */ + EventCombiner_enableEvent(tcErrorInt[edma3InstanceId][intState]); + break; + + default: + break; + } + + break; + + default: + break; + } + } + + +/** + * \brief EDMA3 Cache Invalidate + * + * This function invalidates the D cache. + * + * \param mem_start_ptr [IN] Starting address of memory. + * Please note that this should be + * aligned according to the cache line size. + * \param num_bytes [IN] length of buffer + * \return EDMA3_DRV_SOK if success, else error code in case of error + * or non-alignment of buffers. + * + * Note: This function is required if the buffer is in DDR. + * For other cases, where buffer is NOT in DDR, user + * may or may not require the below implementation and + * should modify it according to her need. + */ +EDMA3_DRV_Result Edma3_CacheInvalidate(uint32_t mem_start_ptr, + uint32_t num_bytes) + { + EDMA3_DRV_Result cacheInvResult = EDMA3_DRV_SOK; + + /* Verify whether the start address is cache aligned or not */ + if((mem_start_ptr & (EDMA3_CACHE_LINE_SIZE_IN_BYTES-1U)) != 0) + { +#ifdef EDMA3_DRV_DEBUG + EDMA3_DRV_PRINTF("\r\n Cache : Memory is not %d bytes alinged\r\n", + EDMA3_CACHE_LINE_SIZE_IN_BYTES); +#endif + cacheInvResult = EDMA3_NON_ALIGNED_BUFFERS_ERROR; + } + else + { + Cache_inv((Ptr)mem_start_ptr, num_bytes, Cache_Type_ALL, (Bool)TRUE); + } + + return cacheInvResult; +} + + + +/** + * \brief EDMA3 Cache Flush + * + * This function flushes (cleans) the Cache + * + * \param mem_start_ptr [IN] Starting address of memory. + * Please note that this should be + * aligned according to the cache line size. + * \param num_bytes [IN] length of buffer + * \return EDMA3_DRV_SOK if success, else error code in case of error + * or non-alignment of buffers. + * + * Note: This function is required if the buffer is in DDR. + * For other cases, where buffer is NOT in DDR, user + * may or may not require the below implementation and + * should modify it according to her need. + */ +EDMA3_DRV_Result Edma3_CacheFlush(uint32_t mem_start_ptr, + uint32_t num_bytes) + { + EDMA3_DRV_Result cacheFlushResult = EDMA3_DRV_SOK; + + /* Verify whether the start address is cache aligned or not */ + if((mem_start_ptr & (EDMA3_CACHE_LINE_SIZE_IN_BYTES-1U)) != 0) + { +#ifdef EDMA3_DRV_DEBUG + EDMA3_DRV_PRINTF("\r\n Cache : Memory is not %d bytes alinged\r\n", + EDMA3_CACHE_LINE_SIZE_IN_BYTES); +#endif + cacheFlushResult = EDMA3_NON_ALIGNED_BUFFERS_ERROR; + } + else + { + Cache_wb((Ptr)mem_start_ptr, num_bytes, Cache_Type_ALL, (Bool)TRUE); + } + + return cacheFlushResult; +} + + +/** + * Counting Semaphore related functions (OS dependent) should be + * called/implemented by the application. A handle to the semaphore + * is required while opening the driver/resource manager instance. + */ + +/** + * \brief EDMA3 OS Semaphore Create + * + * This function creates a counting semaphore with specified + * attributes and initial value. It should be used to create a semaphore + * with initial value as '1'. The semaphore is then passed by the user + * to the EDMA3 driver/RM for proper sharing of resources. + * \param initVal [IN] is initial value for semaphore + * \param semParams [IN] is the semaphore attributes. + * \param hSem [OUT] is location to recieve the handle to just created + * semaphore + * \return EDMA3_DRV_SOK if succesful, else a suitable error code. + */ +EDMA3_DRV_Result edma3OsSemCreate(int32_t initVal, + const Semaphore_Params *semParams, + EDMA3_OS_Sem_Handle *hSem) + { + EDMA3_DRV_Result semCreateResult = EDMA3_DRV_SOK; + + if(NULL == hSem) + { + semCreateResult = EDMA3_DRV_E_INVALID_PARAM; + } + else + { + *hSem = (EDMA3_OS_Sem_Handle)Semaphore_create(initVal, semParams, NULL); + if ( (*hSem) == NULL ) + { + semCreateResult = EDMA3_DRV_E_SEMAPHORE; + } + } + + return semCreateResult; + } + + +/** + * \brief EDMA3 OS Semaphore Delete + * + * This function deletes or removes the specified semaphore + * from the system. Associated dynamically allocated memory + * if any is also freed up. + * \param hSem [IN] handle to the semaphore to be deleted + * \return EDMA3_DRV_SOK if succesful else a suitable error code + */ +EDMA3_DRV_Result edma3OsSemDelete(EDMA3_OS_Sem_Handle hSem) + { + EDMA3_DRV_Result semDeleteResult = EDMA3_DRV_SOK; + + if(NULL == hSem) + { + semDeleteResult = EDMA3_DRV_E_INVALID_PARAM; + } + else + { + Semaphore_delete((Semaphore_Handle *)&hSem); + } + + return semDeleteResult; + } + + +/** + * \brief EDMA3 OS Semaphore Take + * + * This function takes a semaphore token if available. + * If a semaphore is unavailable, it blocks currently + * running thread in wait (for specified duration) for + * a free semaphore. + * \param hSem [IN] is the handle of the specified semaphore + * \param mSecTimeout [IN] is wait time in milliseconds + * \return EDMA3_Result if successful else a suitable error code + */ +EDMA3_Result edma3OsSemTake(EDMA3_OS_Sem_Handle hSem, int32_t mSecTimeout) + { + EDMA3_Result semTakeResult = EDMA3_DRV_SOK; + + if(NULL == hSem) + { + semTakeResult = EDMA3_DRV_E_INVALID_PARAM; + } + else + { + if((Semaphore_pend(hSem, (uint32_t)mSecTimeout)) == FALSE) + { + semTakeResult = EDMA3_DRV_E_SEMAPHORE; + } + } + + return semTakeResult; + } + + +/** + * \brief EDMA3 OS Semaphore Give + * + * This function gives or relinquishes an already + * acquired semaphore token + * \param hSem [IN] is the handle of the specified semaphore + * \return EDMA3_Result if successful else a suitable error code + */ +EDMA3_Result edma3OsSemGive(EDMA3_OS_Sem_Handle hSem) + { + EDMA3_Result semGiveResult = EDMA3_DRV_SOK; + + if(NULL == hSem) + { + semGiveResult = EDMA3_DRV_E_INVALID_PARAM; + } + else + { + Semaphore_post(hSem); + } + + return semGiveResult; + } + +/* End of File */ + diff --git a/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/sample_init.c b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/sample_init.c new file mode 100644 index 000000000..b8f0b6295 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c6657/MCBSPDigLpbk/sample_init.c @@ -0,0 +1,226 @@ +/* + * sample_init.c + * + * Sample Initialization for the EDMA3 Driver for BIOS 6 based applications. + * It should be MANDATORILY done once before EDMA3 usage. + * + * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#include +#include +#include + +#include + +/** @brief EDMA3 Driver Instance specific Semaphore handle */ +extern EDMA3_OS_Sem_Handle semHandle[EDMA3_MAX_EDMA3_INSTANCES]; + +/** To Register the ISRs with the underlying OS, if required. */ +extern void registerEdma3Interrupts (uint32_t edma3Id); +/** To Unregister the ISRs with the underlying OS, if previously registered. */ +extern void unregisterEdma3Interrupts (uint32_t edma3Id); + +/* To find out the DSP# */ +extern uint16_t determineProcId(void); + +/** + * To check whether the global EDMA3 configuration is required or not. + * It should be done ONCE by any of the masters present in the system. + * This function checks whether the global configuration is required by the + * current master or not. In case of many masters, it should be done only + * by one of the masters. Hence this function will return TRUE only once + * and FALSE for all other masters. + */ +extern uint16_t isGblConfigRequired(uint32_t dspNum); + +/** + * DSP instance number on which the executable is running. Its value is + * determined by reading the processor specific register DNUM. + */ +uint32_t dsp_num; + +/** + * Shadow Region on which the executable is runnig. Its value is populated + * with the DSP Instance Number here in this case. + */ +uint32_t region_id; + +/* Number of EDMA3 controllers present in the system */ +extern const uint32_t numEdma3Instances; + +/* External Global Configuration Structure */ +extern EDMA3_DRV_GblConfigParams sampleEdma3GblCfgParams[EDMA3_MAX_EDMA3_INSTANCES]; + +/* External Instance Specific Configuration Structure */ +extern EDMA3_DRV_InstanceInitConfig sampleInstInitConfig[EDMA3_MAX_EDMA3_INSTANCES][EDMA3_MAX_REGIONS]; + +#ifdef DMA_XBAR_AVAILABLE +extern EDMA3_DRV_Result sampleInitXbarEvt(EDMA3_DRV_Handle hEdma, uint32_t edma3Id); +#endif + +/** + * \brief EDMA3 Initialization + * + * This function initializes the EDMA3 Driver and registers the + * interrupt handlers. + * + * \return EDMA3_DRV_SOK if success, else error code + */ +EDMA3_DRV_Handle edma3init (uint32_t edma3Id, EDMA3_DRV_Result *errorCode) + { + EDMA3_DRV_Result edma3Result = EDMA3_DRV_E_INVALID_PARAM; + Semaphore_Params semParams; + EDMA3_DRV_GblConfigParams *globalConfig = NULL; + EDMA3_DRV_InitConfig initCfg; + EDMA3_RM_MiscParam miscParam; + EDMA3_DRV_Handle hEdma = NULL; + + if ((edma3Id >= numEdma3Instances) || (errorCode == NULL)) + { + hEdma = NULL; + } + else + { + /* DSP instance number */ + dsp_num = determineProcId(); + + globalConfig = &sampleEdma3GblCfgParams[edma3Id]; + + /* Configure it as master, if required */ + miscParam.isSlave = isGblConfigRequired(dsp_num); + edma3Result = EDMA3_DRV_create (edma3Id, globalConfig , + (void *)&miscParam); + + if (edma3Result == EDMA3_DRV_SOK) + { + /** + * Driver Object created successfully. + * Create a semaphore now for driver instance. + */ + Semaphore_Params_init(&semParams); + + initCfg.drvSemHandle = NULL; + edma3Result = edma3OsSemCreate((int32_t)1, &semParams, &initCfg.drvSemHandle); + } + + if (edma3Result == EDMA3_DRV_SOK) + { + /* Save the semaphore handle for future use */ + semHandle[edma3Id] = initCfg.drvSemHandle; + + /* Driver instance specific config NULL */ + initCfg.drvInstInitConfig = NULL; + +#ifndef EDMA3_DRV_USE_DEF_RM_CFG + /* Hook for running examples with default RM config */ + /* configuration structure for the Driver */ + initCfg.drvInstInitConfig = &sampleInstInitConfig[edma3Id][dsp_num]; +#endif + + initCfg.isMaster = TRUE; + /* Choose shadow region according to the DSP# */ + initCfg.regionId = (EDMA3_RM_RegionId)dsp_num; + /*Saving the regionId for using it in the sample_cs.c file */ + region_id = (EDMA3_RM_RegionId)dsp_num; + /* Driver instance specific config NULL */ + + initCfg.gblerrCb = NULL; + initCfg.gblerrData = NULL; + + /* Open the Driver Instance */ + hEdma = EDMA3_DRV_open (edma3Id, (void *) &initCfg, &edma3Result); + } + +#ifdef DMA_XBAR_AVAILABLE + { + if((hEdma != NULL) && (edma3Result == EDMA3_DRV_SOK)) + { + edma3Result = sampleInitXbarEvt(hEdma, edma3Id); + } + } +#endif + if((hEdma != NULL) && (edma3Result == EDMA3_DRV_SOK)) + { + /** + * Register Interrupt Handlers for various interrupts + * like transfer completion interrupt, CC error + * interrupt, TC error interrupts etc, if required. + */ + registerEdma3Interrupts(edma3Id); + } + + *errorCode = edma3Result; + } + return hEdma; + } + + +/** + * \brief EDMA3 De-initialization + * + * This function removes the EDMA3 Driver instance and unregisters the + * interrupt handlers. + * + * \return EDMA3_DRV_SOK if success, else error code + */ +EDMA3_DRV_Result edma3deinit (uint32_t edma3Id, EDMA3_DRV_Handle hEdma) + { + EDMA3_DRV_Result edma3Result = EDMA3_DRV_E_INVALID_PARAM; + + /* Unregister Interrupt Handlers first */ + unregisterEdma3Interrupts(edma3Id); + + /* Delete the semaphore */ + edma3Result = edma3OsSemDelete(semHandle[edma3Id]); + + if (EDMA3_DRV_SOK == edma3Result ) + { + /* Make the semaphore handle as NULL. */ + semHandle[edma3Id] = NULL; + + /* Now, close the EDMA3 Driver Instance */ + edma3Result = EDMA3_DRV_close (hEdma, NULL); + } + + if (EDMA3_DRV_SOK == edma3Result ) + { + /* Now, delete the EDMA3 Driver Object */ + edma3Result = EDMA3_DRV_delete (edma3Id, NULL); + } + + return edma3Result; + } + +/* End of File */ + diff --git a/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/MCBSP_DigLpbkC66ExampleProject.txt b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/MCBSP_DigLpbkC66ExampleProject.txt new file mode 100644 index 000000000..2565bf5e5 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/MCBSP_DigLpbkC66ExampleProject.txt @@ -0,0 +1,11 @@ +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk.c" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/device/c674x/device_mcbsp_loopback.c" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_omapl138_cfg.c" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_omapl138_int_reg.c" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_cs.c" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_init.c" + +-ccs.setCompilerOptions "-Domapl138 -DMCBSP_DEBUG_TEMP -mv6740 -g --diag_warning=225 -I${PDK_INSTALL_PATH} -I${BIOS_INSTALL_PATH}/packages -I${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/MCBSPDigLpbk -I${PDK_INSTALL_PATH}/ti/drv/mcbsp/include -I${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/include -I${PDK_INSTALL_PATH}/ti/drv/mcbsp -I${PDK_INSTALL_PATH}/ti/board" -rtsc.enableRtsc diff --git a/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/bios6_edma3_drv_sample.h b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/bios6_edma3_drv_sample.h new file mode 100644 index 000000000..5fad8a74a --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/bios6_edma3_drv_sample.h @@ -0,0 +1,186 @@ +/* + * bios6_edma3_drv_sample.h + * + * Header file for the sample application for the EDMA3 Driver. + * + * Copyright (C) 2009-2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#ifndef _BIOS6_EDMA3_DRV_SAMPLE_H_ +#define _BIOS6_EDMA3_DRV_SAMPLE_H_ + +#include +#include + +/* Include EDMA3 Driver */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Cache line size on the underlying SoC. It needs to be modified + * for different cache line sizes, if the Cache is Enabled. + */ +#define EDMA3_CACHE_LINE_SIZE_IN_BYTES (128u) + +/* Error returned in case of buffers are not aligned on the cache boundary */ +#define EDMA3_NON_ALIGNED_BUFFERS_ERROR (-1) + +/* Error returned in case of data mismatch */ +#define EDMA3_DATA_MISMATCH_ERROR (-2) + +/** + * \brief EDMA3 Initialization + * + * This function initializes the EDMA3 Driver for the given EDMA3 controller + * and opens a EDMA3 driver instance. It internally calls EDMA3_DRV_create() and + * EDMA3_DRV_open(), in that order. + * + * It also registers interrupt handlers for various EDMA3 interrupts like + * transfer completion or error interrupts. + * + * \param edma3Id [IN] EDMA3 Controller Instance Id (Hardware + * instance id, starting from 0) + * \param errorCode [IN/OUT] Error code while opening DRV instance + * \return EDMA3_DRV_Handle: If successfully opened, the API will return the + * associated driver's instance handle. + */ +EDMA3_DRV_Handle edma3init (unsigned int edma3Id, EDMA3_DRV_Result *errorCode); + +/** + * \brief EDMA3 De-initialization + * + * This function de-initializes the EDMA3 Driver for the given EDMA3 controller + * and closes the previously opened EDMA3 driver instance. It internally calls + * EDMA3_DRV_close and EDMA3_DRV_delete(), in that order. + * + * It also un-registers the previously registered interrupt handlers for various + * EDMA3 interrupts. + * + * \param edma3Id [IN] EDMA3 Controller Instance Id (Hardware + * instance id, starting from 0) + * \param hEdma [IN] EDMA3 Driver handle, returned while using + * edma3init(). + * \return EDMA3_DRV_SOK if success, else error code + */ +EDMA3_DRV_Result edma3deinit (unsigned int edma3Id, EDMA3_DRV_Handle hEdma); + + +/** + * \brief EDMA3 Cache Invalidate + * + * This function invalidates the D cache. + * + * \param mem_start_ptr [IN] Starting address of memory. + * Please note that this should be + * aligned according to the cache line size. + * \param num_bytes [IN] length of buffer + * \return EDMA3_DRV_SOK if success, else error code in case of error + * or non-alignment of buffers. + * + * Note: This function is required if the buffer is in DDR. + * For other cases, where buffer is NOT in DDR, user + * may or may not require the below implementation and + * should modify it according to her need. + */ +EDMA3_DRV_Result Edma3_CacheInvalidate(unsigned int mem_start_ptr, + unsigned int num_bytes); + + + +/** + * \brief EDMA3 Cache Flush + * + * This function flushes (cleans) the Cache + * + * \param mem_start_ptr [IN] Starting address of memory. + * Please note that this should be + * aligned according to the cache line size. + * \param num_bytes [IN] length of buffer + * \return EDMA3_DRV_SOK if success, else error code in case of error + * or non-alignment of buffers. + * + * Note: This function is required if the buffer is in DDR. + * For other cases, where buffer is NOT in DDR, user + * may or may not require the below implementation and + * should modify it according to her need. + */ +EDMA3_DRV_Result Edma3_CacheFlush(unsigned int mem_start_ptr, + unsigned int num_bytes); + + + +/** + * Counting Semaphore related functions (OS dependent) should be + * called/implemented by the application. A handle to the semaphore + * is required while opening the driver/resource manager instance. + */ + +/** + * \brief EDMA3 OS Semaphore Create + * + * This function creates a counting semaphore with specified + * attributes and initial value. It should be used to create a semaphore + * with initial value as '1'. The semaphore is then passed by the user + * to the EDMA3 driver/RM for proper sharing of resources. + * \param initVal [IN] is initial value for semaphore + * \param semParams [IN] is the semaphore attributes. + * \param hSem [OUT] is location to receive the handle to just created + * semaphore. + * \return EDMA3_DRV_SOK if successful, else a suitable error code. + */ +EDMA3_DRV_Result edma3OsSemCreate(int initVal, + const Semaphore_Params *semParams, + EDMA3_OS_Sem_Handle *hSem); + + + +/** + * \brief EDMA3 OS Semaphore Delete + * + * This function deletes or removes the specified semaphore + * from the system. Associated dynamically allocated memory + * if any is also freed up. + * \param hSem [IN] handle to the semaphore to be deleted + * \return EDMA3_DRV_SOK if successful else a suitable error code + */ +EDMA3_DRV_Result edma3OsSemDelete(EDMA3_OS_Sem_Handle hSem); + +#ifdef __cplusplus +} +#endif /* extern "C" */ + +#endif /* _BIOS6_EDMA3_DRV_SAMPLE_H_ */ + diff --git a/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk.c b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk.c new file mode 100644 index 000000000..005508e24 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk.c @@ -0,0 +1,978 @@ +/* + * mcbspMasterDigLpbk.c + * + * This file contains the test / demo code to demonstrate the McBSP driver + * master functionality using Digital Loopback setup. The file configures + * the EVM in master mode. + * + * Copyright (C) 2012 - 2018 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +/* ========================================================================== */ +/* INCLUDE FILES */ +/* ========================================================================== */ + +#include +#include +#include +#include +#include +#include + +#include + +/* Include EDMA3 Driver */ +#include + +/* CSL Chip Functional Layer */ +//#include + +/* CSL Cache Functional Layer */ +//#include + +/* CSL CPINTC Include Files. */ +//#include + +/* MCBSP Driver Include File. */ +#include +#include +#include +#include + +/* PlatformLib Include File */ +//#include + + +/* ========================================================================== */ +/* EXTERNAL FUNCTIONS */ +/* ========================================================================== */ + +extern EDMA3_DRV_Handle edma3init(unsigned int edma3Id, EDMA3_DRV_Result *); + +extern void McbspDevice_init(void); + +extern int32_t Osal_dataBufferInitMemory(uint32_t dataBufferSize); + +extern void McbspXmtInterrupt_init(void *mcbspTxChan); +extern void McbspRcvInterrupt_init(void *mcbspRxChan); + +extern Board_STATUS Board_init(Board_initCfg); + +/* FPGA Configuration Misc-1 Register offset */ +#define MCBSP_FPGA_MISC_REG_OFFSET (0x0C) + +/* ========================================================================== */ +/* MACRO DEFINTIONS */ +/* ========================================================================== */ + +#define NUM_BUFS 2 /* Max of buffers used in each direction */ +#define FRAMESIZE 40 /* e.g 5 ms 8 KHz samples */ +#define NUM_OF_ENABLED_CHANNELS 8 /* Number of slots to be used */ +#define NUM_OF_MAX_CHANNELS 128 /* Maximum number of time slots available based on clock settings */ +#define BUFSIZE (NUM_OF_ENABLED_CHANNELS * FRAMESIZE) /* Total buffer size per frame */ + +/* Defines the core number responsible for system initialization. */ +#define CORE_SYS_INIT 0 +/* Number of iterations to execute test: Only applicable to INTERNAL CLOCK Loopback test */ +#define NUM_OF_ITERATIONS 10 + +/* Number of MCBSP Frame structures used for submit channel */ +#define NUM_OF_MCBSP_FRAMES 2 + +/* Number of buffers initially submitted to Mcbsp lld: Only applicable to + External clock test ; Note: This should be set to 2*/ +#define INIT_SUBMIT_Q_CNT 2 + +/*============================================================================*/ +/* GLOBAL VARIABLES */ +/*============================================================================*/ + +/* Shared Memory Variable to ensure synchronizing MCBSP initialization + * with all the other cores. */ +/* Created an array to pad the cache line with MCBSP_CACHE_LENGTH size */ +#pragma DATA_ALIGN (isMCBSPInitialized, MCBSP_MAX_CACHE_ALIGN) +#pragma DATA_SECTION (isMCBSPInitialized, ".mcbspSharedMem"); +volatile Uint32 isMCBSPInitialized[(MCBSP_CACHE_LENGTH / sizeof(Uint32))] = { 0 }; + +/* Handle to the EDMA driver instance */ +#pragma DATA_ALIGN (hEdma, MCBSP_MAX_CACHE_ALIGN) +EDMA3_DRV_Handle hEdma[(MCBSP_CACHE_LENGTH / sizeof(EDMA3_DRV_Handle))] = { NULL }; + +/* Handle to MCBSP driver instance */ +typedef void* Mcbsp_DevHandle; +Mcbsp_DevHandle hMcbspDev; + +/* Handle to MCBSP driver channel instance */ +typedef void* Mcbsp_ChanHandle; +Mcbsp_ChanHandle hMcbspTxChan; +Mcbsp_ChanHandle hMcbspRxChan; + +/* Core Number Identifier */ +UInt32 coreNum = 0xFFFF; + +/* Array to hold the pointer to the allocated buffers */ +void* bufRx[NUM_BUFS]; +void* bufTx[NUM_BUFS]; + +#ifdef MCBSP_LOOP_PING_PONG +/* Ping pong buffers used to submit to Mcbsp lld, which will be used in a loop */ +void* bufRxPingPong[INIT_SUBMIT_Q_CNT]; +void* bufTxPingPong[INIT_SUBMIT_Q_CNT]; +#endif +/* Global Error call back function prototype */ +void mcbsp_GblErrCallback(uint32_t chanHandle,uint32_t spcr_read,uint32_t Arg3); + +/* Variables to indicate status of EDMA TX and RX requests */ +volatile uint32_t edmaTxDone = 0; +volatile uint32_t edmaRxDone = 0; +/* Global variables to track number of buffers submitted, number of iterations, error counts etc */ +int rxSubmitCount=0, txSubmitCount=0; +uint32_t num_iterations=0; +uint32_t num_rx_Call_backs=0, num_tx_Call_backs=0, dummy_call_backs=0; +uint32_t rxunderflowcnt=0, txunderflowcnt=0; +uint32_t errBuffCount=0; +/* Debug variables */ +volatile int debugVar=1; /* This can be used to maintain a while loop, If set to 0 will exit loop */ +volatile int debugCommand=1; /* This can be used to set to value below to send command to restart channel */ + +#define DEBUG_COMMAND_RESTART_CHANNELS 1 +/** + * \brief Mcbsp Sample rate generator default parameters. + * + */ +Mcbsp_srgConfig mcbspSrgCfg = +{ + FALSE, /* No gsync to be used as input is not CLKS */ + Mcbsp_ClkSPol_RISING_EDGE, /* Dont care as input clock is not clks */ + Mcbsp_SrgClk_CLKCPU, /* McBSP internal clock to be used */ + 166666667, /* Mcbsp internal clock frequency(PLL-SYSCLK6) */ + 0 /* frame sync pulse width (val+1) is used */ +}; + +/** + * \brief Mcbsp device creation default parameters. + * + */ +const Mcbsp_Params Mcbsp_PARAMS = +{ + Mcbsp_DevMode_McBSP, /* Use the device as MCBSP */ + Mcbsp_OpMode_DMAINTERRUPT, /* Use DMA mode of operation */ + TRUE, /* cache coherency taken care of by driver */ + Mcbsp_EmuMode_FREE, /* Emulation mode free is to be enabled */ +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_Loopback_DISABLE, /* Loop back mode disabled */ +#else + Mcbsp_Loopback_ENABLE, /* Loop back mode enabled */ +#endif + &mcbspSrgCfg, /* sample rate generator configuration */ + NULL, /* TX pending buffer queue from application */ + NULL, /* TX floating buffer queue in DMA */ + NULL, /* RX pending buffer queue from application */ + NULL /* RX floating buffer queue in DMA */ +}; + +#pragma DATA_ALIGN(loopTxJob, MCBSP_MAX_CACHE_ALIGN) +static Int32 loopTxJob[16] = { + /* Filling with Mu law silence pattern : Can be any user defined pattern */ + 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, + 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f +}; +#pragma DATA_ALIGN(loopRxJob, MCBSP_MAX_CACHE_ALIGN) +static Int32 loopRxJob[16] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +}; + +/**< settings to configure the TX or RX hardware sections */ +Mcbsp_DataConfig mcbspChanConfigTx = +{ + Mcbsp_Phase_SINGLE, + Mcbsp_WordLength_8, + Mcbsp_WordLength_8, /* Dont care for single phase*/ + NUM_OF_MAX_CHANNELS, + NUM_OF_MAX_CHANNELS, // Only used with dual phase + Mcbsp_FrmSync_DETECT, +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_DataDelay_0_BIT, +#else + Mcbsp_DataDelay_1_BIT, +#endif + Mcbsp_Compand_OFF_MSB_FIRST, + Mcbsp_BitReversal_DISABLE, + Mcbsp_IntMode_ON_SYNCERR, + Mcbsp_RxJust_RZF, /* Dont care for TX */ + Mcbsp_DxEna_OFF +}; + +/**< settings to configure the TX or RX hardware sections */ +Mcbsp_DataConfig mcbspChanConfigRx = +{ + Mcbsp_Phase_SINGLE, + Mcbsp_WordLength_8, + Mcbsp_WordLength_8, /* Dont care for single phase*/ + NUM_OF_MAX_CHANNELS, + NUM_OF_MAX_CHANNELS, // Only used with dual phase + Mcbsp_FrmSync_DETECT, +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_DataDelay_0_BIT, +#else + Mcbsp_DataDelay_1_BIT, +#endif + Mcbsp_Compand_OFF_MSB_FIRST, + Mcbsp_BitReversal_DISABLE, + Mcbsp_IntMode_ON_SYNCERR, + Mcbsp_RxJust_RZF, /* Dont care for TX */ + Mcbsp_DxEna_OFF +}; +/**< clock setup for the TX section */ +Mcbsp_ClkSetup mcbspClkConfigTx = +{ +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_FsClkMode_EXTERNAL, + 8000, /* 8KHz */ + Mcbsp_TxRxClkMode_EXTERNAL, +#else + Mcbsp_FsClkMode_INTERNAL, + 8000, /* 8KHz */ + Mcbsp_TxRxClkMode_INTERNAL, +#endif + Mcbsp_FsPol_ACTIVE_HIGH, + Mcbsp_ClkPol_RISING_EDGE +}; + +/**< clock setup for the RX section */ +Mcbsp_ClkSetup mcbspClkConfigRx = +{ +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_FsClkMode_EXTERNAL, + 8000, /* 8KHz */ + Mcbsp_TxRxClkMode_EXTERNAL, +#else + Mcbsp_FsClkMode_INTERNAL, + 8000, /* 8KHz */ + Mcbsp_TxRxClkMode_INTERNAL, +#endif + Mcbsp_FsPol_ACTIVE_HIGH, + Mcbsp_ClkPol_FALLING_EDGE +}; + +/**< Multi channel setup */ +Mcbsp_McrSetup mcbspMultiChanCtrl = +{ + Mcbsp_McmMode_ALL_CHAN_DISABLED_UNMASKED, + Mcbsp_PartitionMode_CHAN_0_15, + Mcbsp_PartitionMode_CHAN_16_31, + Mcbsp_PartitionMode_2 +}; + + +Mcbsp_ChanParams mcbspChanparamTx = +{ + Mcbsp_WordLength_8, /* wordlength configured */ + &loopTxJob[0], /* loop job buffer internal */ + 8, /* user loopjob length */ + mcbsp_GblErrCallback, /* global error callback */ + NULL, /* edma Handle */ + 1, /* EDMA event queue */ + 8, /* hwi number */ + Mcbsp_BufferFormat_MULTISLOT_NON_INTERLEAVED, + TRUE, /* FIFO mode enabled */ + &mcbspChanConfigTx, /* channel configuration */ + &mcbspClkConfigTx, /* clock configuration */ + &mcbspMultiChanCtrl, /* multi channel control */ + 0x7531, /* Enabled timeslots: 0, 4, 5, 8, 10, 12, 13, 14 */ + 0x00, + 0x00, + 0x00, + NUM_OF_ENABLED_CHANNELS /* Total number of channels enabled*/ +}; + +Mcbsp_ChanParams mcbspChanparamRx = +{ + Mcbsp_WordLength_8, /* wordlength configured */ + &loopRxJob[0], /* loop job buffer internal */ + 8, /* user loopjob length */ + mcbsp_GblErrCallback, /* global error callback */ + NULL, /* edma Handle */ + 1, /* EDMA event queue */ + 8, /* hwi number */ + Mcbsp_BufferFormat_MULTISLOT_NON_INTERLEAVED, + TRUE, /* FIFO mode enabled */ + &mcbspChanConfigRx, /* channel configuration */ + &mcbspClkConfigRx, /* clock configuration */ + &mcbspMultiChanCtrl, /* multi channel control */ + 0x7531, /* Enabled timeslots: 0, 4, 5, 8, 10, 12, 13, 14 */ + 0x00, + 0x00, + 0x00, + NUM_OF_ENABLED_CHANNELS /* Total number of channels enabled*/ +}; + + +/* ========================================================================== */ +/* FUNCTION DEFINITIONS */ +/* ========================================================================== */ + +/* + * This is the application's callback function. The driver will + * call this function whenever an EDMA I/O operation is over. + * + */ +void mcbspAppCallback(void* arg, Mcbsp_IOBuf *ioBuf) +{ + int32_t mode; + int32_t *pmode = (int32_t *)arg; + + mode = *pmode; + if (mode == MCBSP_MODE_OUTPUT) + { + if(ioBuf) { + num_tx_Call_backs++; + edmaTxDone = 1; + }else + txunderflowcnt++; + } + else if (mode == MCBSP_MODE_INPUT) + { + if(ioBuf) { + num_rx_Call_backs++; + edmaRxDone = 1; + }else + rxunderflowcnt++; + }else + dummy_call_backs++; + return; +} + +/* + * This is the application's Global error callback function + */ +void mcbsp_GblErrCallback(uint32_t chanHandle,uint32_t spcr_read,uint32_t Arg3) +{ + MCBSP_log ("Debug(Core %d): ERROR callback called SPCR: %x", coreNum, spcr_read); +} + +/* + * \brief This function demostrates the use of Mcbsp using digital loopback + * communication setup. + * + * \param None + * + * \return None + */ +void mcbspDigLpbkApp(UArg arg0, UArg arg1) +{ + /**< Mcbsp device params */ + Mcbsp_Params mcbspParams; + + /**< Queue to hold the pending packets received from the application */ + Queue_Struct txQueuePendingList, rxQueuePendingList; + /**< Queue to manage floating packets in DMA */ + Queue_Struct txQueueFloatingList, rxQueueFloatingList; + + uint32_t count = 0, tempCount = 0; + int32_t status = 0, retval = 0; + int32_t txChanMode = MCBSP_MODE_OUTPUT; + int32_t rxChanMode = MCBSP_MODE_INPUT; + uint32_t mcbspTxDone = 0, mcbspRxDone = 0; + Mcbsp_IOBuf txFrame[NUM_OF_MCBSP_FRAMES], rxFrame[NUM_OF_MCBSP_FRAMES]; + int txFrameIndex=0, rxFrameIndex=0; + int init_count=0; +#ifdef MCBSP_LOOP_PING_PONG + int pingPongIndex=0; +#endif + + /* Initialize the OSAL */ + if (Osal_dataBufferInitMemory(BUFSIZE) < 0) + { + MCBSP_log ("Debug(Core %d): Error: Unable to initialize the OSAL. \n", coreNum); + return; + } + + /* update EDMA3 handle to channel parameters */ + mcbspChanparamTx.edmaHandle = hEdma[0]; + mcbspChanparamRx.edmaHandle = hEdma[0]; + + /* create the pending and floating queue for the TX channel */ + Queue_construct(&txQueuePendingList, NULL); + Queue_construct(&txQueueFloatingList, NULL); + + /* create the pending and floating queue for the RX channel */ + Queue_construct(&rxQueuePendingList, NULL); + Queue_construct(&rxQueueFloatingList, NULL); + + + mcbspParams = Mcbsp_PARAMS; + mcbspParams.txQPendingList = &txQueuePendingList; + mcbspParams.txQFloatingList = &txQueueFloatingList; + mcbspParams.rxQPendingList = &rxQueuePendingList; + mcbspParams.rxQFloatingList = &rxQueueFloatingList; + + + /* Bind the driver instance with device instance */ + status = mcbspBindDev(&hMcbspDev, coreNum, &mcbspParams); + + if (status != MCBSP_STATUS_COMPLETED) + { + MCBSP_log ("Debug(Core %d): MCBSP LLD Bind Device Failed\n", coreNum); + return; + } + + /* If the user loopjob buffer is in local L2 memory: Convert into Global memory address space */ + if(mcbspChanparamRx.userLoopJobBuffer) + mcbspChanparamRx.userLoopJobBuffer = (void *)Mcbsp_osalLocal2Global(mcbspChanparamRx.userLoopJobBuffer); + + /* Create a RX channel for receiving */ + status = mcbspCreateChan(&hMcbspRxChan, hMcbspDev, MCBSP_MODE_INPUT, &mcbspChanparamRx, mcbspAppCallback, &rxChanMode); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Create Channel (RX) failed\n", coreNum); + return; + } + + /* If the user loopjob buffer is in local L2 memory: Convert into Global memory address space */ + if(mcbspChanparamTx.userLoopJobBuffer) + mcbspChanparamTx.userLoopJobBuffer = Mcbsp_osalLocal2Global(mcbspChanparamTx.userLoopJobBuffer); + + /* Create a TX channel for the transmission */ + status = mcbspCreateChan(&hMcbspTxChan, hMcbspDev, MCBSP_MODE_OUTPUT, &mcbspChanparamTx, mcbspAppCallback, &txChanMode); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Create Channel (TX) failed\n", coreNum); + return; + } + + /* Register mcbsp interrupts */ + //McbspRcvInterrupt_init(hMcbspRxChan); + //McbspXmtInterrupt_init(hMcbspTxChan); + + /* create the buffers required for the TX and RX operations */ + for (count = 0; count < (NUM_BUFS); count++) + { + bufTx[count] = (uint8_t *)Osal_mcbspDataBufferMalloc(BUFSIZE); + bufRx[count] = (uint8_t *)Osal_mcbspDataBufferMalloc(BUFSIZE); + + if (bufTx[count] == NULL) + { + MCBSP_log ("Debug(Core %d): Error: Tx Buffer (%d) Memory Allocation Failed\n", coreNum, count); + return; + } + if (bufRx[count] == NULL) + { + MCBSP_log ("Debug(Core %d): Error: Rx Buffer (%d) Memory Allocation Failed\n", coreNum, count); + return; + } + } +#ifdef MCBSP_LOOP_PING_PONG + /* create the ping pong buffers required for the TX and RX operations */ + for (count = 0; count < (NUM_BUFS); count++) + { + bufRxPingPong[count] = (uint8_t *)Osal_mcbspDataBufferMalloc(BUFSIZE); + bufTxPingPong[count] = (uint8_t *)Osal_mcbspDataBufferMalloc(BUFSIZE); + + if (bufTxPingPong[count] == NULL) + { + MCBSP_log ("Debug(Core %d): Error: Tx Ping pong Buffer (%d) Memory Allocation Failed\n", coreNum, count); + return; + } + if (bufRxPingPong[count] == NULL) + { + MCBSP_log ("Debug(Core %d): Error: Rx Ping pong Buffer (%d) Memory Allocation Failed\n", coreNum, count); + return; + } + } +#endif + /* Fill the buffers with known data and transmit the same and + check if the same pattern is received */ + for (count = 0; count < (NUM_BUFS); count++) + { + memset((uint8_t *)bufTx[count], 0, BUFSIZE); + for (tempCount = 0; tempCount < BUFSIZE; tempCount++) + { + ((uint8_t *)bufTx[count])[tempCount] = (tempCount % 0x100); + } + } + MCBSP_log ("Debug(Core %d): If required to restart set debugCommand variable to %d\n", coreNum, DEBUG_COMMAND_RESTART_CHANNELS); + +restart_mcbsp_point: + txFrameIndex=0; + rxFrameIndex=0; + init_count=0; +#ifdef MCBSP_EXTERNAL_CLOCK + /* Initial loading of ping ping buffers */ + for(init_count =0 ; init_count < INIT_SUBMIT_Q_CNT; init_count++) + { +#ifdef MCBSP_LOOP_PING_PONG + memset((uint8_t *)bufRxPingPong[init_count], 0, BUFSIZE); + + /* RX frame processing */ + rxFrame[rxFrameIndex].cmd = Mcbsp_IOBuf_Cmd_READ; + rxFrame[rxFrameIndex].addr = (void*)bufRxPingPong[init_count]; +#else + memset((uint8_t *)bufRx[init_count], 0, BUFSIZE); + + + /* RX frame processing */ + rxFrame[rxFrameIndex].cmd = Mcbsp_IOBuf_Cmd_READ; + rxFrame[rxFrameIndex].addr = (void*)bufRx[init_count]; +#endif + + rxFrame[rxFrameIndex].size = BUFSIZE; + rxFrame[rxFrameIndex].arg = (uint32_t) hMcbspRxChan; + rxFrame[rxFrameIndex].status = MCBSP_STATUS_COMPLETED; + rxFrame[rxFrameIndex].misc = 1; /* reserved - used in callback to indicate asynch packet */ + + status = mcbspSubmitChan(hMcbspRxChan, (void *)&rxFrame[rxFrameIndex]); + if (status != MCBSP_STATUS_PENDING) + { + MCBSP_log ("Debug(Core %d): Error: RX buffer #%d submission FAILED\n", coreNum, init_count); + retval = 1; + } + else + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): RX buffer #%d is submitted to MCBSP driver\n", coreNum, init_count); +#endif + } + rxFrameIndex++; + rxFrameIndex = (rxFrameIndex >= (NUM_OF_MCBSP_FRAMES)) ? 0 : rxFrameIndex; + + rxSubmitCount++; + + /* TX frame processing */ + txFrame[txFrameIndex].cmd = Mcbsp_IOBuf_Cmd_WRITE; +#ifdef MCBSP_LOOP_PING_PONG + txFrame[txFrameIndex].addr = (void*)bufTxPingPong[init_count]; +#else + txFrame[txFrameIndex].addr = (void*)bufTx[init_count]; +#endif + txFrame[txFrameIndex].size = BUFSIZE; + txFrame[txFrameIndex].arg = (uint32_t)hMcbspTxChan; + txFrame[txFrameIndex].status = MCBSP_STATUS_COMPLETED; + txFrame[txFrameIndex].misc = 1; /* reserved - used in callback to indicate asynch packet */ + + status = mcbspSubmitChan(hMcbspTxChan, (void *)&txFrame[txFrameIndex]); + if (status != MCBSP_STATUS_PENDING) + { + MCBSP_log ("Debug(Core %d): Error: TX buffer #%d submission FAILED\n", coreNum, init_count); + retval = 1; + } + else + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): TX buffer #%d submission is submitted to MCBSP driver\n", coreNum, init_count); +#endif + } + txFrameIndex++; + txFrameIndex = (txFrameIndex >=(NUM_OF_MCBSP_FRAMES)) ? 0 : txFrameIndex; + + txSubmitCount++; + } + + /* Wait for TX and RX processing to complete */ + while (1) + { + if (edmaTxDone == 1) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): EDMA -> Iteration-%d frames are transmitted to TX path\n", coreNum, count); +#endif + edmaTxDone = 0; /* Reset for next iteration */ + mcbspTxDone = 1; + } + if (edmaRxDone == 1) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): EDMA -> Iteration-%d frames are received from RX path\n", coreNum, count); +#endif + edmaRxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 1; + } + if ((mcbspTxDone == 1) && (mcbspRxDone == 1)) + { + mcbspTxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 0; /* Reset for next iteration */ + break; + } + } +#ifdef MCBSP_LOOP_PING_PONG + /* Change ping Pong Index */ + init_count=0; +#endif +#endif /* MCBSP_EXTERNAL_CLOCK */ + + /* Start main loop to iterate through frames */ + while(debugVar) + { + /* submit frames to the driver */ + for (count = init_count; count < NUM_BUFS; count++) + { +#ifdef MCBSP_EXTERNAL_CLOCK +/* With External clock the data coming from the RX side is copied to loop back to the Tx side */ + memcpy((uint8_t *)bufTx[count], (uint8_t *)bufRx[count], BUFSIZE); +#endif +#ifdef MCBSP_LOOP_PING_PONG + memset((uint8_t *)bufRxPingPong[pingPongIndex], 0, BUFSIZE); +#else + memset((uint8_t *)bufRx[count], 0, BUFSIZE); + /* RX frame processing */ + rxFrame[rxFrameIndex].cmd = Mcbsp_IOBuf_Cmd_READ; + rxFrame[rxFrameIndex].addr = (void*)bufRx[count]; + rxFrame[rxFrameIndex].size = BUFSIZE; + rxFrame[rxFrameIndex].arg = (uint32_t) hMcbspRxChan; + rxFrame[rxFrameIndex].status = MCBSP_STATUS_COMPLETED; + rxFrame[rxFrameIndex].misc = 1; /* reserved - used in callback to indicate asynch packet */ + + status = mcbspSubmitChan(hMcbspRxChan, (void *)&rxFrame[rxFrameIndex]); + if (status != MCBSP_STATUS_PENDING) + { + MCBSP_log ("Debug(Core %d): Error: RX buffer #%d submission FAILED\n", coreNum, count); + retval = 1; + } + else + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): RX buffer #%d is submitted to MCBSP driver\n", coreNum, count); +#endif + } + rxFrameIndex++; + rxFrameIndex = (rxFrameIndex >= (NUM_OF_MCBSP_FRAMES)) ? 0 : rxFrameIndex; +#endif + rxSubmitCount++; +#ifdef MCBSP_LOOP_PING_PONG + /* Copy buffer from buffer to ping pong buffer*/ + memcpy((uint8_t *)bufTxPingPong[pingPongIndex], (uint8_t *)bufTx[count],BUFSIZE); +#else + /* TX frame processing */ + txFrame[txFrameIndex].cmd = Mcbsp_IOBuf_Cmd_WRITE; + txFrame[txFrameIndex].addr = (void*)bufTx[count]; + txFrame[txFrameIndex].size = BUFSIZE; + txFrame[txFrameIndex].arg = (uint32_t)hMcbspTxChan; + txFrame[txFrameIndex].status = MCBSP_STATUS_COMPLETED; + txFrame[txFrameIndex].misc = 1; /* reserved - used in callback to indicate asynch packet */ + + status = mcbspSubmitChan(hMcbspTxChan, (void *)&txFrame[txFrameIndex]); + if (status != MCBSP_STATUS_PENDING) + { + MCBSP_log ("Debug(Core %d): Error: TX buffer #%d submission FAILED\n", coreNum, count); + retval = 1; + } + else + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): TX buffer #%d is submitted to MCBSP driver\n", coreNum, count); +#endif + } + txFrameIndex++; + txFrameIndex = (txFrameIndex >= (NUM_OF_MCBSP_FRAMES)) ? 0 : txFrameIndex; +#endif + txSubmitCount++; + + /* Wait for TX and RX processing to complete */ + while (1) + { + if (edmaTxDone == 1) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): EDMA -> Buffer #-%d is transmitted to TX path\n", coreNum, count); +#endif + edmaTxDone = 0; /* Reset for next iteration */ + mcbspTxDone = 1; + } + if (edmaRxDone == 1) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): EDMA -> Buffer #-%d is received from RX path\n", coreNum, count); +#endif + edmaRxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 1; + } + if ((mcbspTxDone == 1) && (mcbspRxDone == 1)) + { + mcbspTxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 0; /* Reset for next iteration */ + break; + } + } +#ifdef MCBSP_LOOP_PING_PONG + /* Change ping Pong Index */ + pingPongIndex=(pingPongIndex)?0:1; + + /* Copy buffer from buffer to other buffer*/ + memcpy((void*)bufRx[count], (uint8_t *)bufRxPingPong[pingPongIndex],BUFSIZE); +#endif + /* compare buffer contents */ + for (tempCount = 0; tempCount < BUFSIZE; tempCount++) + { + if (((char *)bufTx[count])[tempCount] != ((char *)bufRx[count])[tempCount]) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log("Debug(Core %d): Error: TX and RX frame data DOES NOT match in Buffer #-%d\n", + coreNum, count); + MCBSP_log("Debug(Core %d): Error: Buffer index = %d, Tx data = %d, Rx data = %d\n", coreNum, + tempCount, ((char *)bufTx[count])[tempCount], ((char *)bufRx[count])[tempCount]); +#endif + errBuffCount++; + break; + } + } + if (tempCount >= BUFSIZE) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log("Debug(Core %d): TX and RX frames data match in iteration-%d !!!\n", coreNum, count); +#endif + } + } + init_count=0; + num_iterations++; +#ifndef MCBSP_EXTERNAL_CLOCK + if(num_iterations >= NUM_OF_ITERATIONS) + break; +#endif + switch(debugCommand) + { + case DEBUG_COMMAND_RESTART_CHANNELS: + debugCommand=0; + /* Close channel and reopen */ + /* Delete RX channel */ + status = mcbspDeleteChan(hMcbspRxChan); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Delete Channel (RX) failed\n", coreNum); + return; + } + + /* Delete TX channel*/ + status = mcbspDeleteChan(hMcbspTxChan); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Delete Channel (TX) failed\n", coreNum); + return; + } + /* Create a RX channel for receiving */ + status = mcbspCreateChan(&hMcbspRxChan, hMcbspDev, MCBSP_MODE_INPUT, &mcbspChanparamRx, mcbspAppCallback, &rxChanMode); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Create Channel (RX) failed\n", coreNum); + return; + } + + /* Create a TX channel for the transmission */ + status = mcbspCreateChan(&hMcbspTxChan, hMcbspDev, MCBSP_MODE_OUTPUT, &mcbspChanparamTx, mcbspAppCallback, &txChanMode); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Create Channel (TX) failed\n", coreNum); + return; + } + edmaTxDone = 0; /* Reset for next iteration */ + edmaRxDone = 0; /* Reset for next iteration */ + mcbspTxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 0; /* Reset for next iteration */ + goto restart_mcbsp_point; + + default: + debugCommand=0; + break; + + } + + } + + if ((errBuffCount == 0 ) & (retval ==0)) + { + MCBSP_log("Debug(Core %d): MCBSP Digital Loopback Application completed successfully : "\ + "Num iterations %d Num buffers per iteration %d!!!\n", + coreNum, num_iterations, NUM_BUFS); + MCBSP_log("\n All tests have passed \n"); + } + else + { + MCBSP_log("Debug(Core %d): MCBSP Digital Loopback application FAILED : "\ + "Num iterations %d Num buffers per iteration %d Failed buffers %d!!!\n", + coreNum, num_iterations, NUM_BUFS, errBuffCount); + } + + /* Delete RX channel */ + status = mcbspDeleteChan(hMcbspRxChan); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Delete Channel (RX) failed\n", coreNum); + return; + } + + /* Delete TX channel*/ + status = mcbspDeleteChan(hMcbspTxChan); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Delete Channel (TX) failed\n", coreNum); + return; + } + return; +} + +/* + * \brief Void main(Void) + * + * Main function of the sample application. This function calls the + * function to configure the mcbsp instance. + * + * \param None + * + * \return None + */ +#include "ti/sysbios/hal/Cache.h" + +Void main(Void) +{ + Task_Params taskParams; + EDMA3_DRV_Result edmaResult = 0; +#ifdef SIMULATOR_SUPPORT + uint8_t uchValue, uchReadValue; +#endif + + Board_initCfg arg = BOARD_INIT_MODULE_CLOCK | BOARD_INIT_PINMUX_CONFIG | BOARD_INIT_UART_STDIO; + Board_init(arg); + + /* Get the core number. */ + coreNum = 0; //CSL_chipReadReg (CSL_CHIP_DNUM); + +#ifdef SIMULATOR_SUPPORT +#warn MCBSP Digital Loopback example is not supported on SIMULATOR !!! + MCBSP_log ("MCBSP Digital Loopback example is not supported on SIMULATOR. Exiting!\n"); + return; +#else + MCBSP_log ("Debug(Core %d): Running MCBSP Digital Loopback example on the DEVICE\n", coreNum); +#endif + + /* Initialize the system only if the core was configured to do so. */ + if (coreNum == CORE_SYS_INIT) + { +#if 0 + MCBSP_log ("Debug(Core %d): System Initialization for MCBSP\n", coreNum); + /* Read FPGA register */ + if (0 != (platform_fpgaReadConfigReg(MCBSP_FPGA_MISC_REG_OFFSET, &uchReadValue))) + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register READ failed \n", coreNum); + return; + } + /* Clear field for configuration */ + uchValue = (uchReadValue & (~0x3)); +#ifndef PLATFORM_FPGA_MCBSP_AMC_EN + uchValue |= 0x3; +#endif + /* Drive McBSP_AMC_EN# high. Output SLCLKs, TxCLKs, RxCLKs, FSTs, FSRs as Hi-Z. + * These clocks and syncs are tri-stated and McBSP is accessed over 80-pin header */ + if (0 != (platform_fpgaWriteConfigReg(MCBSP_FPGA_MISC_REG_OFFSET, (uchValue)))) + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register WRITE failed \n", coreNum); + return; + } + + /* DEBUG: Verify if FPGA register is configured correctly */ + if (0 != (platform_fpgaReadConfigReg(MCBSP_FPGA_MISC_REG_OFFSET, &uchReadValue))) + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register READ failed \n", coreNum); + return; + } + + if (uchValue != uchReadValue) + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register setting failed \n", coreNum); + return; + } + else + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register is set to %d \n", coreNum, uchValue); + } +#endif + /* MCBSP Driver Initialization: This should always be called before + * invoking the MCBSP Driver. */ + mcbspInit(); + + /* Device Specific MCBSP Initializations */ + McbspDevice_init(); + + /* MCBSP Driver is operational at this time. */ + MCBSP_log ("Debug(Core %d): MCBSP Driver Initialization Done\n", coreNum); + + /* Write to the SHARED memory location at this point in time. The other cores cannot execute + * till the MCBSP Driver is up and running. */ + isMCBSPInitialized[0] = 1; + + /* The MCBSP IP block has been initialized. We need to writeback the cache here because it will + * ensure that the rest of the cores which are waiting for MCBSP to be initialized would now be + * woken up. */ + //CACHE_wbL1d ((void *) &isMCBSPInitialized[0], MCBSP_MAX_CACHE_ALIGN, CACHE_FENCE_WAIT); + Cache_wb ((void *) &isMCBSPInitialized[0], MCBSP_CACHE_LENGTH,0x7fff, 1); + } + else + { + /* All other cores need to wait for the MCBSP to be initialized before they proceed with the test. */ + MCBSP_log ("Debug(Core %d): Waiting for MCBSP to be initialized.\n", coreNum); + + /* All other cores loop around forever till the MCBSP is up and running. + * We need to invalidate the cache so that we always read this from the memory. */ + while (isMCBSPInitialized[0] == 0) + //CACHE_invL1d ((void *) &isMCBSPInitialized[0], MCBSP_MAX_CACHE_ALIGN, CACHE_FENCE_WAIT); + Cache_inv ((void *) &isMCBSPInitialized[0], MCBSP_CACHE_LENGTH, 0x7fff, 1); + + + MCBSP_log ("Debug(Core %d): MCBSP can now be used.\n", coreNum); + } + + /* Initialize EDMA3 library */ + hEdma[0] = edma3init(0, &edmaResult); + + if (edmaResult != EDMA3_DRV_SOK) + { + /* Report EDMA Error */ + MCBSP_log("Debug(Core %d): EDMA Driver Initialization FAILED\n", coreNum); + } + else + { + MCBSP_log("Debug(Core %d): EDMA Driver Initialization Done\n", coreNum); + } + + /* Create the Digital Loopback Application Task */ + Task_Params_init(&taskParams); + Task_create(mcbspDigLpbkApp, &taskParams, NULL); + + /* Start BIOS */ + BIOS_start(); + + return; +} + +/* ========================================================================== */ +/* END OF FILE */ +/* ========================================================================== */ diff --git a/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg new file mode 100644 index 000000000..44dedf67b --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg @@ -0,0 +1,78 @@ +/* + * Copyright 2012-2018 by Texas Instruments Incorporated. + * + * All rights reserved. Property of Texas Instruments Incorporated. + * Restricted rights to use, duplicate or disclose this code are + * granted through contract. + * + */ + +/* THIS FILE WAS GENERATED BY ti.sysbios.genx */ + +/* + * ======== mcbspMasterDigLpbk.cfg ======== + * + */ + +/* Load and use the required BIOS packages */ +var BIOS = xdc.useModule('ti.sysbios.BIOS'); +var Task = xdc.useModule('ti.sysbios.knl.Task'); +var cache = xdc.useModule('ti.sysbios.hal.Cache'); +var Idle = xdc.useModule('ti.sysbios.knl.Idle'); +var Queue = xdc.useModule('ti.sysbios.knl.Queue'); +var ECM = xdc.useModule('ti.sysbios.family.c64p.EventCombiner'); +//var CpIntc = xdc.useModule('ti.sysbios.family.c66.tci66xx.CpIntc'); +var Memory = xdc.useModule('xdc.runtime.Memory'); +var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem'); + +/* Load and use the System Package */ +var System = xdc.useModule('xdc.runtime.System'); +var SysStd = xdc.useModule('xdc.runtime.SysStd'); + +/* Create a default system heap using ti.bios.HeapMem. */ +var heapMemParams1 = new HeapMem.Params; +heapMemParams1.size = 32768; +heapMemParams1.sectionName = "systemHeap"; +Program.global.heap0 = HeapMem.create(heapMemParams1); + +/* This is the default memory heap. */ +Memory.defaultHeapInstance = Program.global.heap0; + +/* + * Create and install logger for the whole system. + * Enable Event Groups here and registering of ISR for specific GEM INTC is done + * using EventCombiner_dispatchPlug() and Hwi_eventMap() APIs + */ +ECM.eventGroupHwiNum[0] = 7; +ECM.eventGroupHwiNum[1] = 8; +ECM.eventGroupHwiNum[2] = 9; +ECM.eventGroupHwiNum[3] = 10; + +/* Load and use the mcbsp, EDMA, PlatformLib etc. packages */ +var Edma = xdc.loadPackage('ti.sdo.edma3.drv'); + +var devType = "omapl138" +var mcbsp = xdc.useModule('ti.drv.mcbsp.Settings'); +mcbsp.deviceType = devType; + +/* Load the uart package */ +var Uart = xdc.loadPackage('ti.drv.uart'); +Uart.Settings.socType = devType; + +var Csl = xdc.useModule('ti.csl.Settings'); +Csl.deviceType = devType; +Csl.libProfile = "release"; + +/* Load the OSAL package */ +var osType = "tirtos" +var Osal = xdc.useModule('ti.osal.Settings'); +Osal.osType = osType; +Osal.socType = devType; + +/* Load the Board package and set the board name */ +var Board = xdc.loadPackage('ti.board'); +Board.Settings.boardName = "lcdkOMAPL138"; + +/* Circular buffer size for System_printf() */ +System.SupportProxy = SysStd; + diff --git a/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd new file mode 100644 index 000000000..6021dd060 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd @@ -0,0 +1,9 @@ +SECTIONS +{ + .init_array: load >> IRAM + .mcbsp: load >> DDR + .mcbspSharedMem: load >> DDR + platform_lib: load >> DDR + systemHeap: load >> IRAM +} + diff --git a/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c new file mode 100644 index 000000000..6cda4227c --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c @@ -0,0 +1,639 @@ +/** + * @file mcbspMasterDigLpbk_osal.c + * + * @brief + * This is the OS abstraction layer and is used by the MCBSP + * driver for the MCBSP Example Digital Loopback Application. + * + * \par + * ============================================================================ + * @n (C) Copyright 2012, Texas Instruments, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * \par +*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if 0 +/* CSL Include Files */ +#include +#include +#include +#include +#endif +/* IPC includes */ +#include +#include +#include +#include + +/********************************************************************** + ************************** Local Definitions ************************* + **********************************************************************/ + +#define MCBSP_HW_SEM 1 +#define PLATFORM_SPI_HW_SEM 2 /**< SPI BUS arbitration - Used by platform library */ + +#ifdef MCBSP_LOOP_PING_PONG +#define MAX_MEM_MGR_ENTRIES 8 +#else +#define MAX_MEM_MGR_ENTRIES 4 +#endif + +typedef struct MEM_MGMT_ENTRY +{ + uint8_t* ptrMemory; + uint32_t isFree; +}MEM_MGMT_ENTRY; + +MEM_MGMT_ENTRY gDataBufferMemMgr[MAX_MEM_MGR_ENTRIES]; +int32_t gDataBufferMemMgrMaxSize = 0; + +/********************************************************************** + ************************** Global Variables ************************** + **********************************************************************/ +UInt32 malloc_counter = 0; +UInt32 free_counter = 0; + +/********************************************************************** + ************************** Extern Definitions ************************ + **********************************************************************/ + + +/********************************************************************** + **************************** OSAL Functions ************************** + **********************************************************************/ + +/** + * @b Description + * @n + * Utility function which converts a local address to global. + * + * @param[in] addr + * Local address to be converted + * + * @retval + * Global Address + */ +void *Osal_local2Global (void *addr) +{ + UInt32 corenum; + + /* Get the core number. */ + corenum = 0;//CSL_chipReadReg(CSL_CHIP_DNUM); + return addr; + + if(((UInt32)addr & 0xff000000) == 0) { + /* Compute the global address. */ + return ((void *)((UInt32)(addr) + (0x10000000 + (corenum*0x1000000)))); + } + else + return(addr); +} + +/** + * @b Description + * @n + * The function is used to allocate a memory block of the specified size. + * + * @param[in] numBytes + * Number of bytes to be allocated. + * + * @retval + * Allocated block address + */ +Void* Osal_mcbspMalloc(UInt32 numBytes) +{ + Error_Block errorBlock; + Void* ptr; + + /* Increment the allocation counter. */ + malloc_counter++; + + /* Allocate the memory. */ + ptr = Memory_alloc(NULL, numBytes, 0, &errorBlock); + + /* Return the allocated memory block. */ + return ptr; +} + +/** + * @b Description + * @n + * The function is used to clean up a specific memory block and is called + * from the MCBSP Driver. + * + * @param[in] ptr + * Pointer to the memory block to be cleaned up. + * @param[in] size + * Size of the memory block being cleaned up. + * + * @retval + * Not Applicable + */ +Void Osal_mcbspFree (Void* ptr, UInt32 size) +{ + /* Increment the free counter. */ + free_counter++; + Memory_free(NULL, ptr, size); +} + +/** + * @b Description + * @n + * The function is used to allocate a block of memory for all the data buffer + * operations. This function is called by the application. + * + * @param[in] numBuffers + * Number of data buffers + * @param[in] dataBufferSize + * Size of each data buffer + * + * @retval + * Success - 0 + * @retval + * Error - <0 + */ +int32_t Osal_dataBufferInitMemory(uint32_t dataBufferSize) +{ + Error_Block errorBlock; + uint8_t* ptrMemory; + uint32_t index; + + /* Allocate memory for all the data buffers */ + ptrMemory = (uint8_t*)Memory_alloc(NULL, MAX_MEM_MGR_ENTRIES*dataBufferSize, 128, &errorBlock); + if (ptrMemory == NULL) + return -1; + + /* Convert to a global address */ + ptrMemory = Osal_local2Global(ptrMemory); + + /* Now we chop up the memory and add it to the memory manager. */ + for (index = 0; index < MAX_MEM_MGR_ENTRIES; index++) + { + /* Populate the data memory management entry. */ + gDataBufferMemMgr[index].isFree = 1; + gDataBufferMemMgr[index].ptrMemory = ptrMemory; + + /* Increment the memory to the next address */ + ptrMemory = ptrMemory + dataBufferSize; + } + + /* Remember the memory buffer size */ + gDataBufferMemMgrMaxSize = dataBufferSize; + + /* Memory Manager has been created. */ + return 0; +} + +/** + * @b Description + * @n + * The function is used to allocate a data buffer of the specified + * size. Data buffers should always be allocated from the global + * address space. + * + * @param[in] numBytes + * Number of bytes to be allocated. + * + * @retval + * Allocated block address + */ +Void* Osal_mcbspDataBufferMalloc(UInt32 numBytes) +{ + uint32_t index; + void* ptrMemory = NULL; + + /* Basic Validation: Ensure that the memory size requested is within range. */ + if (numBytes > gDataBufferMemMgrMaxSize) + return NULL; + + /* Increment the allocation counter. */ + malloc_counter++; + + /* Lock out interrupts */ + Hwi_disable(); + + /* Cycle through for a free entry. */ + for (index = 0; index < MAX_MEM_MGR_ENTRIES; index++) + { + /* Check if the entry is free or not? */ + if (gDataBufferMemMgr[index].isFree == 1) + { + /* Entry was free. We can use it. */ + ptrMemory = gDataBufferMemMgr[index].ptrMemory; + + /* Mark the entry as used. */ + gDataBufferMemMgr[index].isFree = 0; + + /* We have found a match. */ + break; + } + } + + /* Unlock interrupts. */ + Hwi_enable(); + + /* Return the allocated memory. */ + return ptrMemory; +} + +/** + * @b Description + * @n + * The function is used to clean up a previously allocated data buffer + * block. All data buffers are in the global address space + * + * @param[in] ptr + * Pointer to the data buffer block to be cleaned up + * @param[in] size + * Size of the data buffer + * + * @retval + * Not Applicable + */ +void Osal_mcbspDataBufferFree(void* ptr, uint32_t numBytes) +{ + uint32_t index; + + /* Increment the free counter. */ + free_counter++; + + /* Lock out interrupts */ + Hwi_disable(); + + /* Cycle through and clean up */ + for (index = 0; index < MAX_MEM_MGR_ENTRIES; index++) + { + /* Check if the entry is free or not? */ + if (gDataBufferMemMgr[index].ptrMemory == (uint8_t*)ptr) + { + /* Mark the entry as free. */ + gDataBufferMemMgr[index].isFree = 1; + + /* We have found a match. */ + break; + } + } + + /* Unlock interrupts. */ + Hwi_enable(); + return; +} + +/** + * @b Description + * @n + * The function is the MCBSP OSAL Logging API which logs + * the messages on the console. + * + * @param[in] fmt + * Formatted String. + * + * @retval + * Not Applicable + */ +Void Osal_mcbspLog( String fmt, ... ) +{ +} + +/** + * @b Description + * @n + * The function is used to create a critical section. + * + * @retval + * Semaphore Handle created + */ +Void* Osal_mcbspCreateSem(Void) +{ + return (Void*)Semaphore_create(0, NULL, NULL); +} + +/** + * @b Description + * @n + * The function is used to delete a critical section. + * + * @param[in] semHandle + * Semaphore handle to be deleted + * + * @retval + * Not Applicable + */ +Void Osal_mcbspDeleteSem(Void* semHandle) +{ + Semaphore_delete(semHandle); +} + +/** + * @b Description + * @n + * The function is used to pend on a semaphore + * + * @param[in] semHandle + * Semaphore handle on which the API will pend + * + * @retval + * Not Applicable + */ +Void Osal_mcbspPendSem(Void* semHandle) +{ + Semaphore_pend(semHandle, BIOS_WAIT_FOREVER); +} + +/** + * @b Description + * @n + * The function is used to post a semaphore + * + * @param[in] semHandle + * Semaphore handle which will be posted + * + * @retval + * Not Applicable + */ +Void Osal_mcbspPostSem(Void* semHandle) +{ + Semaphore_post(semHandle); +} + +/** + * @b Description + * @n + * This is the Multicore OSAL Implementation to protect the driver shared + * resources across multiple cores. + * + * @retval + * Semaphore Opaque Handle + */ +void* Osal_mcbspEnterMultipleCoreCriticalSection(void) +{ + /* Get the hardware semaphore */ + // while ((CSL_semAcquireDirect (MCBSP_HW_SEM)) == 0); + return NULL; +} + +/** + * @b Description + * @n + * The function is called to end the critical section which was protecting + * shared resources from access across multiple cores. + * + * @param[in] critSectHandle + * Semaphore opaque handle. + * + * @retval + * None + */ +Void Osal_mcbspExitMultipleCoreCriticalSection(Void* critSectHandle) +{ + //CSL_semReleaseSemaphore (MCBSP_HW_SEM); +} + +/** + * @b Description + * @n + * The function is used to provide critical section to prevent access of shared + * resources from single core and multiple threads. + * + * @param[in] drvHandle + * Driver Handle which needs critical section to protect its resources. + * + * @retval + * Opaque handle + */ +Void* Osal_mcbspEnterSingleCoreCriticalSection() +{ + /* Disable interrupts */ + return (Void*)Hwi_disable(); +} + +/** + * @b Description + * @n + * The function is called to end the critical section access of shared resources + * from single cores. + * + * @param[in] drvHandle + * Driver Handle which needed critical section to protect its resources. + * @param[in] critSectHandle + * Opaque handle retreived when the Single Core Protection Enter API was called + * + * @retval + * Not Applicable. + */ +Void Osal_mcbspExitSingleCoreCriticalSection(Void* critSectHandle) +{ + /* Driver Managed Configuration: We need to enable interrupts. */ + Hwi_enable(); +} + +/** + * @b Description + * @n + * The function is used by the MCBSP driver to indicate that + * its about to access a block of memory and we need to ensure + * that the cache contents for this block are invalidated before + * we try and use it. + * + * @param[in] ptr + * Pointer to the buffer which is being accessed + * @param[in] size + * Size of the buffer which is to be accessed. + * + * @retval + * None + */ +#include "ti/sysbios/hal/Cache.h" +void Osal_mcbspBeginMemAccess(void* ptr, uint32_t size) +{ + UInt key; + + /* Disable Interrupts */ + key = Hwi_disable(); + + /* Cleanup the prefetch buffer also. */ + //CSL_XMC_invalidatePrefetchBuffer(); + + /* Invalidate the cache. */ + //CACHE_invL1d (ptr, size, CACHE_FENCE_WAIT); + + Cache_inv ((void *) ptr,size, 0x7fff, 1); + + /* Reenable Interrupts. */ + Hwi_restore(key); +} + +/** + * @b Description + * @n + * The function is used by the MCBSP driver to indicate that its + * ending access to a block of memory. We need to ensure that the + * contents of the cache are written back to the actual memory. + * + * @param[in] ptr + * Pointer to the buffer + * @param[in] size + * Size of the buffer + * + * @retval + * None + */ +void Osal_mcbspEndMemAccess(void* ptr, uint32_t size) +{ + UInt key; + + /* Disable Interrupts */ + key = Hwi_disable(); + + /* Writeback the cache. */ + //CACHE_wbL1d (ptr, size, CACHE_FENCE_WAIT); + Cache_wb ((void *) ptr,size, 0x7fff, 1); + /* Reenable Interrupts. */ + Hwi_restore(key); +} + +/** + * @brief The function is used by the MCBSP driver to test for an + * empty queue. + * + * Parameter + * @n handle - Handle of a previously created Queue instance object + * + * Return Value + * @n TRUE - If the queue is empty + */ +Bool Osal_mcbspQueueEmpty(void* handle) +{ + return Queue_empty(handle); +} + +/** + * @brief The macro is used by the MCBSP driver to get an + * element from the front of queue. The function + * removes the element from the front of queue and + * returns a pointer to it. + * + * Parameter + * @n handle - Handle of a previously created Queue instance object + * + * Return Value + * @n Handle (pointer) to former first element + */ +void* Osal_mcbspQueueGet(void* handle) +{ + return Queue_get(handle); +} + +/** + * @brief The macro is used by the MCBSP driver to put an + * element at the end of queue. + * + * Parameter + * @n handle - Handle of a previously created Queue instance object + * @n elem - Pointer to new queue element + * + * Return Value + * @n None + */ +void Osal_mcbspQueuePut(void* handle, Mcbsp_QueueElem* elem) +{ + Queue_put(handle, (Queue_Elem *)elem); + return; +} + +/** + * @brief The macro is used by the MCBSP driver to wait 'n' + * bit clocks to ensure proper synchronization internally. + * + * Parameter + * @n nticks - Number of bit clocks to wait + * + * Return Value + * @n None + */ +void Osal_mcbspWaitNBitClocks(uint32_t nticks) +{ + Task_sleep(nticks); + return; +} + +/* OSAL functions for Platform Library */ +uint8_t *Osal_platformMalloc (uint32_t num_bytes, uint32_t alignment) +{ + return malloc(num_bytes); +} + +void Osal_platformFree (uint8_t *dataPtr, uint32_t num_bytes) +{ + /* Free up the memory */ + if (dataPtr) + { + free(dataPtr); + } +} + +void Osal_platformSpiCsEnter(void) +{ + /* Get the hardware semaphore. + * + * Acquire Multi core CPPI synchronization lock + */ + //while ((CSL_semAcquireDirect (PLATFORM_SPI_HW_SEM)) == 0); + + return; +} + +void Osal_platformSpiCsExit (void) +{ + /* Release the hardware semaphore + * + * Release multi-core lock. + */ + //CSL_semReleaseSemaphore (PLATFORM_SPI_HW_SEM); + + return; +} diff --git a/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_c6657_cfg.c b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_c6657_cfg.c new file mode 100644 index 000000000..8b18b501b --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_c6657_cfg.c @@ -0,0 +1,692 @@ +/* + * sample_c6657_cfg.c + * + * Platform specific EDMA3 hardware related information like number of transfer + * controllers, various interrupt ids etc. It is used while interrupts + * enabling / disabling. It needs to be ported for different SoCs. + * + * Copyright (C) 2011-2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ +#include +#include + +/* Number of EDMA3 controllers present in the system */ +#define NUM_EDMA3_INSTANCES 1u +const unsigned int numEdma3Instances = NUM_EDMA3_INSTANCES; + +/* Number of DSPs present in the system */ +#define NUM_DSPS 2u +//const unsigned int numDsps = NUM_DSPS; + +#define CGEM_REG_START (0x01800000) + + +extern cregister volatile unsigned int DNUM; + +#define MAP_LOCAL_TO_GLOBAL_ADDR(addr) ((1<<28)|(DNUM<<24)|(((unsigned int)addr)&0x00ffffff)) + + +/* Determine the processor id by reading DNUM register. */ +unsigned short determineProcId() + { + volatile unsigned int *addr; + unsigned int core_no; + + /* Identify the core number */ + addr = (unsigned int *)(CGEM_REG_START+0x40000); + core_no = ((*addr) & 0x000F0000)>>16; + + return core_no; + } + +signed char* getGlobalAddr(signed char* addr) +{ + if (((unsigned int)addr & (unsigned int)0xFF000000) != 0) + { + return (addr); /* The address is already a global address */ + } + + return((signed char*)(MAP_LOCAL_TO_GLOBAL_ADDR(addr))); +} +/** Whether global configuration required for EDMA3 or not. + * This configuration should be done only once for the EDMA3 hardware by + * any one of the masters (i.e. DSPs). + * It can be changed depending on the use-case. + */ +unsigned int gblCfgReqdArray [NUM_DSPS] = { + 0, /* DSP#0 is Master, will do the global init */ + 1, /* DSP#1 is Slave, will not do the global init */ + }; + +unsigned short isGblConfigRequired(unsigned int dspNum) + { + return gblCfgReqdArray[dspNum]; + } + +/* Semaphore handles */ +EDMA3_OS_Sem_Handle semHandle[NUM_EDMA3_INSTANCES] = {NULL}; + + +/* Variable which will be used internally for referring number of Event Queues. */ +unsigned int numEdma3EvtQue[NUM_EDMA3_INSTANCES] = {4u}; + +/* Variable which will be used internally for referring number of TCs. */ +unsigned int numEdma3Tc[NUM_EDMA3_INSTANCES] = {4u}; + +/** + * Variable which will be used internally for referring transfer completion + * interrupt. Completion interrupts for all the shadow regions and all the + * EDMA3 controllers are captured since it is a multi-DSP platform. + */ +unsigned int ccXferCompInt[NUM_EDMA3_INSTANCES][EDMA3_MAX_REGIONS] = { + { + 24u, 25u, 26u, 27u, + 28u, 29u, 30u, 31u, + }, + }; + +/** + * Variable which will be used internally for referring channel controller's + * error interrupt. + */ +unsigned int ccErrorInt[NUM_EDMA3_INSTANCES] = {16u}; + +/** + * Variable which will be used internally for referring transfer controllers' + * error interrupts. + */ +unsigned int tcErrorInt[NUM_EDMA3_INSTANCES][EDMA3_MAX_TC] = { + { + 18u, 19u, 20u, 21u, + 0u, 0u, 0u, 0u, + }, + }; + +/* Driver Object Initialization Configuration */ +EDMA3_DRV_GblConfigParams sampleEdma3GblCfgParams[NUM_EDMA3_INSTANCES] = + { + { + /* EDMA3 INSTANCE# 0 */ + /** Total number of DMA Channels supported by the EDMA3 Controller */ + 64u, + /** Total number of QDMA Channels supported by the EDMA3 Controller */ + 8u, + /** Total number of TCCs supported by the EDMA3 Controller */ + 64u, + /** Total number of PaRAM Sets supported by the EDMA3 Controller */ + 512u, + /** Total number of Event Queues in the EDMA3 Controller */ + 4u, + /** Total number of Transfer Controllers (TCs) in the EDMA3 Controller */ + 4u, + /** Number of Regions on this EDMA3 controller */ + 8u, + + /** + * \brief Channel mapping existence + * A value of 0 (No channel mapping) implies that there is fixed association + * for a channel number to a parameter entry number or, in other words, + * PaRAM entry n corresponds to channel n. + */ + 1u, + + /** Existence of memory protection feature */ + 1u, + + /** Global Register Region of CC Registers */ + (void *)0x02740000u, + /** Transfer Controller (TC) Registers */ + { + (void *)0x02790000u, + (void *)0x02798000u, + (void *)0x027A0000u, + (void *)0x027A8000u, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL + }, + /** Interrupt no. for Transfer Completion */ + 24u, + /** Interrupt no. for CC Error */ + 16u, + /** Interrupt no. for TCs Error */ + { + 18u, + 19u, + 20u, + 21u, + 0u, + 0u, + 0u, + 0u, + }, + + /** + * \brief EDMA3 TC priority setting + * + * User can program the priority of the Event Queues + * at a system-wide level. This means that the user can set the + * priority of an IO initiated by either of the TCs (Transfer Controllers) + * relative to IO initiated by the other bus masters on the + * device (ARM, DSP, USB, etc) + */ + { + 0u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + /** + * \brief To Configure the Threshold level of number of events + * that can be queued up in the Event queues. EDMA3CC error register + * (CCERR) will indicate whether or not at any instant of time the + * number of events queued up in any of the event queues exceeds + * or equals the threshold/watermark value that is set + * in the queue watermark threshold register (QWMTHRA). + */ + { + 16u, + 16u, + 16u, + 16u, + 0u, + 0u, + 0u, + 0u + }, + + /** + * \brief To Configure the Default Burst Size (DBS) of TCs. + * An optimally-sized command is defined by the transfer controller + * default burst size (DBS). Different TCs can have different + * DBS values. It is defined in Bytes. + */ + { + 64u, + 64u, + 64u, + 64u, + 0u, + 0u, + 0u, + 0u + }, + + /** + * \brief Mapping from each DMA channel to a Parameter RAM set, + * if it exists, otherwise of no use. + */ + { + 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, + 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, + 16u, 17u, 18u, 19u, 20u, 21u, 22u, 23u, + 24u, 25u, 26u, 27u, 28u, 29u, 30u, 31u, + 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, + 40u, 41u, 42u, 43u, 44u, 45u, 46u, 47u, + 48u, 49u, 50u, 51u, 52u, 53u, 54u, 55u, + 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u + }, + + /** + * \brief Mapping from each DMA channel to a TCC. This specific + * TCC code will be returned when the transfer is completed + * on the mapped channel. + */ + { + 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, + 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, + 16u, 17u, 18u, 19u, 20u, 21u, 22u, 23u, + 24u, 25u, 26u, 27u, 28u, 29u, 30u, 31u, + 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, + EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u + }, + + /** + * \brief Mapping of DMA channels to Hardware Events from + * various peripherals, which use EDMA for data transfer. + * All channels need not be mapped, some can be free also. + */ + { + 0xFFFFFFFFu, + 0xFFFFFFFFu + } + }, + }; + +EDMA3_DRV_InstanceInitConfig sampleInstInitConfig[NUM_EDMA3_INSTANCES][EDMA3_MAX_REGIONS] = + { + /* EDMA3 INSTANCE# 0 */ + { + /* Resources owned/reserved by region 0 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 159 128 191 160 223 192 255 224 */ + 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0xFFFFFFFFu, 0xFFFFFFFFu}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x000000FFu}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0xFFFFFFFFu, 0xFFFFFFFFu}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 1 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 159 128 191 160 223 192 255 224 */ + 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 287 256 319 288 351 320 383 352 */ + 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 415 384 447 416 479 448 511 480 */ + 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu,}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0xFFFFFFFFu, 0xFFFFFFFFu}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x000000FFu}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0xFFFFFFFFu, 0xFFFFFFFFu}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 2 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 3 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 4 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 5 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 6 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 7 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + }, + }; +/** + * Variable which will be used internally for referring mcbsp Xmt + * interrupt. + */ +unsigned int ccMcbspXmtInt[CSL_MCBSP_PER_CNT] = { + CSL_INTC0_XINT0, + CSL_INTC0_XINT1 + }; +/** + * Variable which will be used internally for referring mcbsp Recv + * interrupt. + */ +unsigned int ccMcbspRcvInt[CSL_MCBSP_PER_CNT] = { + CSL_INTC0_RINT0, + CSL_INTC0_RINT1 + }; +/* End of File */ diff --git a/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_c6657_int_reg.c b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_c6657_int_reg.c new file mode 100644 index 000000000..a2a36bada --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_c6657_int_reg.c @@ -0,0 +1,228 @@ +/* + * sample_c6657_int_reg.c + * + * Platform specific interrupt registration and un-registration routines. + * + * Copyright (C) 2011-2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#include +#include +#include +#include + +#include + +#include + +extern unsigned int ccXferCompInt[][EDMA3_MAX_REGIONS]; +extern unsigned int ccErrorInt[]; +extern unsigned int tcErrorInt[][EDMA3_MAX_TC]; +extern unsigned int numEdma3Tc[]; +extern unsigned int ccMcbspXmtInt[CSL_MCBSP_PER_CNT]; +extern unsigned int ccMcbspRcvInt[CSL_MCBSP_PER_CNT]; + +void (*ptrEdma3TcIsrHandler[EDMA3_MAX_TC])(unsigned int arg) = + { + &lisrEdma3TC0ErrHandler0, + &lisrEdma3TC1ErrHandler0, + &lisrEdma3TC2ErrHandler0, + &lisrEdma3TC3ErrHandler0, + &lisrEdma3TC4ErrHandler0, + &lisrEdma3TC5ErrHandler0, + &lisrEdma3TC6ErrHandler0, + &lisrEdma3TC7ErrHandler0, + }; + +unsigned int hwiInterrupt = 8; + +/* Host interrupts for transfer completion */ +//unsigned int ccXferHostInt[NUM_EDMA3_INSTANCES][NUM_DSPS] = { +unsigned int ccXferHostInt[1][2] = { + {0u, 20u}, + }; +unsigned int edma3ErrHostInt[1][2] = { + {1u, 21u}, + }; + +/* Host interrupts for Mcbsp */ +unsigned int ccMcbspHostInt[2][2] = { + {2u, 3u}, + {4u, 5u}, + }; +extern unsigned int dsp_num; + +/** To Register the ISRs with the underlying OS, if required */ +void registerEdma3Interrupts (unsigned int edma3Id) + { + static UInt32 cookie = 0; + Int eventId = 0; /* GEM event id */ + unsigned int numTc = 0; + + /* Disabling the global interrupts */ + cookie = Hwi_disable(); + + /* Transfer completion ISR */ + CpIntc_dispatchPlug(ccXferCompInt[edma3Id][dsp_num], + lisrEdma3ComplHandler0, + edma3Id, + TRUE); + CpIntc_mapSysIntToHostInt(0, ccXferCompInt[edma3Id][dsp_num], + ccXferHostInt[edma3Id][dsp_num]); + CpIntc_enableHostInt(0, ccXferHostInt[edma3Id][dsp_num]); + eventId = CpIntc_getEventId(ccXferHostInt[edma3Id][dsp_num]); + EventCombiner_dispatchPlug (eventId, CpIntc_dispatch, + ccXferHostInt[edma3Id][dsp_num], TRUE); + EventCombiner_enableEvent(eventId); + + /* CC Error ISR */ + CpIntc_dispatchPlug(ccErrorInt[edma3Id], lisrEdma3CCErrHandler0, + edma3Id, TRUE); + CpIntc_mapSysIntToHostInt(0, ccErrorInt[edma3Id], + edma3ErrHostInt[edma3Id][dsp_num]); + /* TC Error ISR */ + while (numTc < numEdma3Tc[edma3Id]) + { + CpIntc_dispatchPlug(tcErrorInt[edma3Id][numTc], + (CpIntc_FuncPtr )(ptrEdma3TcIsrHandler[numTc]), + edma3Id, TRUE); + CpIntc_mapSysIntToHostInt(0, tcErrorInt[edma3Id][numTc], + edma3ErrHostInt[edma3Id][dsp_num]); + numTc++; + } + /* Enable the host interrupt which is common for both CC and TC error */ + CpIntc_enableHostInt(0, edma3ErrHostInt[edma3Id][dsp_num]); + eventId = CpIntc_getEventId(edma3ErrHostInt[edma3Id][dsp_num]); + EventCombiner_dispatchPlug (eventId, CpIntc_dispatch, + edma3ErrHostInt[edma3Id][dsp_num], TRUE); + EventCombiner_enableEvent(eventId); + + Hwi_enableInterrupt(hwiInterrupt); + + /* enable the 'global' switch */ + CpIntc_enableAllHostInts(0); + + /* Restore interrupts */ + Hwi_restore(cookie); + } + +/** To Unregister the ISRs with the underlying OS, if previously registered. */ +void unregisterEdma3Interrupts (unsigned int edma3Id) + { + static UInt32 cookie = 0; + Int eventId = 0; /* GEM event id */ + + /* Disabling the global interrupts */ + cookie = Hwi_disable(); + + /* Transfer completion ISR */ + CpIntc_disableHostInt(0, ccXferHostInt[edma3Id][dsp_num]); + eventId = CpIntc_getEventId(ccXferHostInt[edma3Id][dsp_num]); + EventCombiner_disableEvent(eventId); + + /* CC/TC Error ISR */ + CpIntc_disableHostInt(0, edma3ErrHostInt[edma3Id][dsp_num]); + eventId = CpIntc_getEventId(edma3ErrHostInt[edma3Id][dsp_num]); + EventCombiner_disableEvent(eventId); + + /* Restore interrupts */ + Hwi_restore(cookie); + } + +/** To Register the Xmt mcbsp interrupt with the underlying OS */ +void registerXmtMcbspInterrupt (unsigned int mcbspId, void *hChan) +{ + static UInt32 cookie = 0; + Int eventId = 0; /* GEM event id */ + + /* Disabling the global interrupts */ + cookie = Hwi_disable(); + + /* Tx Mcbsp ISR */ + CpIntc_dispatchPlug(ccMcbspXmtInt[mcbspId], + (CpIntc_FuncPtr)mcbspGblXmtIsr, + (UArg)hChan, + TRUE); + CpIntc_mapSysIntToHostInt(0, ccMcbspXmtInt[mcbspId], + ccMcbspHostInt[mcbspId][0]); + CpIntc_enableHostInt(0, ccMcbspHostInt[mcbspId][0]); + eventId = CpIntc_getEventId(ccMcbspHostInt[mcbspId][0]); + EventCombiner_dispatchPlug (eventId, CpIntc_dispatch, + ccMcbspHostInt[mcbspId][0], TRUE); + EventCombiner_enableEvent(eventId); + + Hwi_restore(cookie); +} + +/** To Register the Xmt mcbsp interrupt with the underlying OS */ +void registerRcvMcbspInterrupt (unsigned int mcbspId, void *hChan) +{ + static UInt32 cookie = 0; + Int eventId = 0; /* GEM event id */ + + /* Disabling the global interrupts */ + cookie = Hwi_disable(); + + /* Rx Mcbsp ISR */ + CpIntc_dispatchPlug(ccMcbspRcvInt[mcbspId], + (CpIntc_FuncPtr)mcbspGblRcvIsr, + (UArg)hChan, + TRUE); + CpIntc_mapSysIntToHostInt(0, ccMcbspRcvInt[mcbspId], + ccMcbspHostInt[mcbspId][1]); + CpIntc_enableHostInt(0, ccMcbspHostInt[mcbspId][1]); + eventId = CpIntc_getEventId(ccMcbspHostInt[mcbspId][1]); + EventCombiner_dispatchPlug (eventId, CpIntc_dispatch, + ccMcbspHostInt[mcbspId][1], TRUE); + EventCombiner_enableEvent(eventId); + /* Restore interrupts */ + Hwi_restore(cookie); +} +/** Initialize Mcbsp transmit interrupts */ +void McbspXmtInterrupt_init(void *mcbspTxChan) +{ + int i; + for(i=0; i < CSL_MCBSP_PER_CNT; i++) + { + registerXmtMcbspInterrupt(i, (void *)mcbspTxChan); + } +} +/** Initialize Mcbsp Recv interrupts */ +void McbspRcvInterrupt_init(void *mcbspRxChan) +{ + int i; + for(i=0; i < CSL_MCBSP_PER_CNT; i++) + { + registerRcvMcbspInterrupt(i, (void *)mcbspRxChan); + } +} diff --git a/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_cs.c b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_cs.c new file mode 100644 index 000000000..92c20ab46 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_cs.c @@ -0,0 +1,420 @@ +/* + * sample_cs.c + * + * Sample functions showing the implementation of critical section entry/exit + * routines and various semaphore related routines (all BIOS6 depenedent). + * These implementations MUST be provided by the user / application, using the + * EDMA3 driver, for its correct functioning. + * + * Copyright (C) 2009-2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#include +#include +#include +#include +#include + +#include "bios6_edma3_drv_sample.h" + +extern unsigned int ccXferCompInt[][EDMA3_MAX_REGIONS]; +extern unsigned int ccErrorInt[]; +extern unsigned int tcErrorInt[][EDMA3_MAX_TC]; + +/** + * Shadow Region on which the executable is running. Its value is + * populated with the DSP Instance Number here in this case. + */ +extern unsigned int region_id; + +/** + * \brief EDMA3 OS Protect Entry + * + * This function saves the current state of protection in 'intState' + * variable passed by caller, if the protection level is + * EDMA3_OS_PROTECT_INTERRUPT. It then applies the requested level of + * protection. + * For EDMA3_OS_PROTECT_INTERRUPT_XFER_COMPLETION and + * EDMA3_OS_PROTECT_INTERRUPT_CC_ERROR, variable 'intState' is ignored, + * and the requested interrupt is disabled. + * For EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR, '*intState' specifies the + * Transfer Controller number whose interrupt needs to be disabled. + * + * \param level is numeric identifier of the desired degree of protection. + * \param intState is memory location where current state of protection is + * saved for future use while restoring it via edma3OsProtectExit() (Only + * for EDMA3_OS_PROTECT_INTERRUPT protection level). + * \return None + */ +void edma3OsProtectEntry (unsigned int edma3InstanceId, + int level, unsigned int *intState) + { + if (((level == EDMA3_OS_PROTECT_INTERRUPT) + || (level == EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR)) + && (intState == NULL)) + { + return; + } + else + { + switch (level) + { + /* Disable all (global) interrupts */ + case EDMA3_OS_PROTECT_INTERRUPT : + *intState = Hwi_disable(); + break; + + /* Disable scheduler */ + case EDMA3_OS_PROTECT_SCHEDULER : + Task_disable(); + break; + + /* Disable EDMA3 transfer completion interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_XFER_COMPLETION : + EventCombiner_disableEvent(ccXferCompInt[edma3InstanceId][region_id]); + break; + + /* Disable EDMA3 CC error interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_CC_ERROR : + EventCombiner_disableEvent(ccErrorInt[edma3InstanceId]); + break; + + /* Disable EDMA3 TC error interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR : + switch (*intState) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + /* Fall through... */ + /* Disable the corresponding interrupt */ + EventCombiner_disableEvent(tcErrorInt[edma3InstanceId][*intState]); + break; + + default: + break; + } + + break; + + default: + break; + } + } + } + + +/** + * \brief EDMA3 OS Protect Exit + * + * This function undoes the protection enforced to original state + * as is specified by the variable 'intState' passed, if the protection + * level is EDMA3_OS_PROTECT_INTERRUPT. + * For EDMA3_OS_PROTECT_INTERRUPT_XFER_COMPLETION and + * EDMA3_OS_PROTECT_INTERRUPT_CC_ERROR, variable 'intState' is ignored, + * and the requested interrupt is enabled. + * For EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR, 'intState' specifies the + * Transfer Controller number whose interrupt needs to be enabled. + * \param level is numeric identifier of the desired degree of protection. + * \param intState is original state of protection at time when the + * corresponding edma3OsProtectEntry() was called (Only + * for EDMA3_OS_PROTECT_INTERRUPT protection level). + * \return None + */ +void edma3OsProtectExit (unsigned int edma3InstanceId, + int level, unsigned int intState) + { + switch (level) + { + /* Enable all (global) interrupts */ + case EDMA3_OS_PROTECT_INTERRUPT : + Hwi_restore(intState); + break; + + /* Enable scheduler */ + case EDMA3_OS_PROTECT_SCHEDULER : + Task_enable(); + break; + + /* Enable EDMA3 transfer completion interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_XFER_COMPLETION : + EventCombiner_enableEvent(ccXferCompInt[edma3InstanceId][region_id]); + break; + + /* Enable EDMA3 CC error interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_CC_ERROR : + EventCombiner_enableEvent(ccErrorInt[edma3InstanceId]); + break; + + /* Enable EDMA3 TC error interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR : + switch (intState) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + /* Fall through... */ + /* Enable the corresponding interrupt */ + EventCombiner_enableEvent(tcErrorInt[edma3InstanceId][intState]); + break; + + default: + break; + } + + break; + + default: + break; + } + } + + +/** + * \brief EDMA3 Cache Invalidate + * + * This function invalidates the D cache. + * + * \param mem_start_ptr [IN] Starting address of memory. + * Please note that this should be + * aligned according to the cache line size. + * \param num_bytes [IN] length of buffer + * \return EDMA3_DRV_SOK if success, else error code in case of error + * or non-alignment of buffers. + * + * Note: This function is required if the buffer is in DDR. + * For other cases, where buffer is NOT in DDR, user + * may or may not require the below implementation and + * should modify it according to her need. + */ +EDMA3_DRV_Result Edma3_CacheInvalidate(unsigned int mem_start_ptr, + unsigned int num_bytes) + { + EDMA3_DRV_Result cacheInvResult = EDMA3_DRV_SOK; + + /* Verify whether the start address is cache aligned or not */ + if((mem_start_ptr & (EDMA3_CACHE_LINE_SIZE_IN_BYTES-1u)) != 0) + { +#ifdef EDMA3_DRV_DEBUG + EDMA3_DRV_PRINTF("\r\n Cache : Memory is not %d bytes alinged\r\n", + EDMA3_CACHE_LINE_SIZE_IN_BYTES); +#endif + cacheInvResult = EDMA3_NON_ALIGNED_BUFFERS_ERROR; + } + else + { + Cache_inv((Ptr)mem_start_ptr, num_bytes, Cache_Type_ALL, TRUE); + } + + return cacheInvResult; +} + + + +/** + * \brief EDMA3 Cache Flush + * + * This function flushes (cleans) the Cache + * + * \param mem_start_ptr [IN] Starting address of memory. + * Please note that this should be + * aligned according to the cache line size. + * \param num_bytes [IN] length of buffer + * \return EDMA3_DRV_SOK if success, else error code in case of error + * or non-alignment of buffers. + * + * Note: This function is required if the buffer is in DDR. + * For other cases, where buffer is NOT in DDR, user + * may or may not require the below implementation and + * should modify it according to her need. + */ +EDMA3_DRV_Result Edma3_CacheFlush(unsigned int mem_start_ptr, + unsigned int num_bytes) + { + EDMA3_DRV_Result cacheFlushResult = EDMA3_DRV_SOK; + + /* Verify whether the start address is cache aligned or not */ + if((mem_start_ptr & (EDMA3_CACHE_LINE_SIZE_IN_BYTES-1u)) != 0) + { +#ifdef EDMA3_DRV_DEBUG + EDMA3_DRV_PRINTF("\r\n Cache : Memory is not %d bytes alinged\r\n", + EDMA3_CACHE_LINE_SIZE_IN_BYTES); +#endif + cacheFlushResult = EDMA3_NON_ALIGNED_BUFFERS_ERROR; + } + else + { + Cache_wb((Ptr)mem_start_ptr, num_bytes, Cache_Type_ALL, TRUE); + } + + return cacheFlushResult; +} + + +/** + * Counting Semaphore related functions (OS dependent) should be + * called/implemented by the application. A handle to the semaphore + * is required while opening the driver/resource manager instance. + */ + +/** + * \brief EDMA3 OS Semaphore Create + * + * This function creates a counting semaphore with specified + * attributes and initial value. It should be used to create a semaphore + * with initial value as '1'. The semaphore is then passed by the user + * to the EDMA3 driver/RM for proper sharing of resources. + * \param initVal [IN] is initial value for semaphore + * \param semParams [IN] is the semaphore attributes. + * \param hSem [OUT] is location to recieve the handle to just created + * semaphore + * \return EDMA3_DRV_SOK if succesful, else a suitable error code. + */ +EDMA3_DRV_Result edma3OsSemCreate(int initVal, + const Semaphore_Params *semParams, + EDMA3_OS_Sem_Handle *hSem) + { + EDMA3_DRV_Result semCreateResult = EDMA3_DRV_SOK; + + if(NULL == hSem) + { + semCreateResult = EDMA3_DRV_E_INVALID_PARAM; + } + else + { + *hSem = (EDMA3_OS_Sem_Handle)Semaphore_create(initVal, semParams, NULL); + if ( (*hSem) == NULL ) + { + semCreateResult = EDMA3_DRV_E_SEMAPHORE; + } + } + + return semCreateResult; + } + + +/** + * \brief EDMA3 OS Semaphore Delete + * + * This function deletes or removes the specified semaphore + * from the system. Associated dynamically allocated memory + * if any is also freed up. + * \param hSem [IN] handle to the semaphore to be deleted + * \return EDMA3_DRV_SOK if succesful else a suitable error code + */ +EDMA3_DRV_Result edma3OsSemDelete(EDMA3_OS_Sem_Handle hSem) + { + EDMA3_DRV_Result semDeleteResult = EDMA3_DRV_SOK; + + if(NULL == hSem) + { + semDeleteResult = EDMA3_DRV_E_INVALID_PARAM; + } + else + { + Semaphore_delete((Semaphore_Handle *)&hSem); + } + + return semDeleteResult; + } + + +/** + * \brief EDMA3 OS Semaphore Take + * + * This function takes a semaphore token if available. + * If a semaphore is unavailable, it blocks currently + * running thread in wait (for specified duration) for + * a free semaphore. + * \param hSem [IN] is the handle of the specified semaphore + * \param mSecTimeout [IN] is wait time in milliseconds + * \return EDMA3_DRV_Result if successful else a suitable error code + */ +EDMA3_DRV_Result edma3OsSemTake(EDMA3_OS_Sem_Handle hSem, int mSecTimeout) + { + EDMA3_DRV_Result semTakeResult = EDMA3_DRV_SOK; + unsigned short semPendResult; + + if(NULL == hSem) + { + semTakeResult = EDMA3_DRV_E_INVALID_PARAM; + } + else + { + semPendResult = Semaphore_pend(hSem, mSecTimeout); + if (semPendResult == FALSE) + { + semTakeResult = EDMA3_DRV_E_SEMAPHORE; + } + } + + return semTakeResult; + } + + +/** + * \brief EDMA3 OS Semaphore Give + * + * This function gives or relinquishes an already + * acquired semaphore token + * \param hSem [IN] is the handle of the specified semaphore + * \return EDMA3_DRV_Result if successful else a suitable error code + */ +EDMA3_DRV_Result edma3OsSemGive(EDMA3_OS_Sem_Handle hSem) + { + EDMA3_DRV_Result semGiveResult = EDMA3_DRV_SOK; + + if(NULL == hSem) + { + semGiveResult = EDMA3_DRV_E_INVALID_PARAM; + } + else + { + Semaphore_post(hSem); + } + + return semGiveResult; + } + +/* End of File */ + diff --git a/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_init.c b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_init.c new file mode 100644 index 000000000..54fc95574 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_init.c @@ -0,0 +1,223 @@ +/* + * sample_init.c + * + * Sample Initialization for the EDMA3 Driver for BIOS 6 based applications. + * It should be MANDATORILY done once before EDMA3 usage. + * + * Copyright (C) 2009-2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#include +#include +#include + +#include "bios6_edma3_drv_sample.h" + +/** @brief EDMA3 Driver Instance specific Semaphore handle */ +extern EDMA3_OS_Sem_Handle semHandle[]; + +/** To Register the ISRs with the underlying OS, if required. */ +extern void registerEdma3Interrupts (unsigned int edma3Id); +/** To Unregister the ISRs with the underlying OS, if previously registered. */ +extern void unregisterEdma3Interrupts (unsigned int edma3Id); + +/* To find out the DSP# */ +extern unsigned short determineProcId(); + +/** + * To check whether the global EDMA3 configuration is required or not. + * It should be done ONCE by any of the masters present in the system. + * This function checks whether the global configuration is required by the + * current master or not. In case of many masters, it should be done only + * by one of the masters. Hence this function will return TRUE only once + * and FALSE for all other masters. + */ +extern unsigned short isGblConfigRequired(unsigned int dspNum); + +/** + * DSP instance number on which the executable is running. Its value is + * determined by reading the processor specific register DNUM. + */ +unsigned int dsp_num; + +/** + * Shadow Region on which the executable is runnig. Its value is populated + * with the DSP Instance Number here in this case. + */ +unsigned int region_id; + +/* Number of EDMA3 controllers present in the system */ +extern const unsigned int numEdma3Instances; + +/* External Global Configuration Structure */ +extern EDMA3_DRV_GblConfigParams sampleEdma3GblCfgParams[]; + +/* External Instance Specific Configuration Structure */ +extern EDMA3_DRV_InstanceInitConfig sampleInstInitConfig[][EDMA3_MAX_REGIONS]; + +#if defined (CHIP_TI814X) +extern EDMA3_DRV_Result sampleInitXbarEvt(EDMA3_DRV_Handle hEdma, unsigned int edma3Id); +#endif + +/** + * \brief EDMA3 Initialization + * + * This function initializes the EDMA3 Driver and registers the + * interrupt handlers. + * + * \return EDMA3_DRV_SOK if success, else error code + */ +EDMA3_DRV_Handle edma3init (unsigned int edma3Id, EDMA3_DRV_Result *errorCode) + { + EDMA3_DRV_Result edma3Result = EDMA3_DRV_E_INVALID_PARAM; + Semaphore_Params semParams; + EDMA3_DRV_GblConfigParams *globalConfig = NULL; + EDMA3_DRV_InitConfig initCfg; + EDMA3_RM_MiscParam miscParam; + EDMA3_DRV_Handle hEdma = NULL; + + if ((edma3Id >= numEdma3Instances) || (errorCode == NULL)) + return hEdma; + + /* DSP instance number */ + dsp_num = determineProcId(); +// dsp_num = 0; /* selection of region ID */ + + globalConfig = &sampleEdma3GblCfgParams[edma3Id]; + + /* Configure it as master, if required */ + miscParam.isSlave = isGblConfigRequired(dsp_num); + edma3Result = EDMA3_DRV_create (edma3Id, globalConfig , + (void *)&miscParam); + + if (edma3Result == EDMA3_DRV_SOK) + { + /** + * Driver Object created successfully. + * Create a semaphore now for driver instance. + */ + Semaphore_Params_init(&semParams); + + initCfg.drvSemHandle = NULL; + edma3Result = edma3OsSemCreate(1, &semParams, &initCfg.drvSemHandle); + } + + if (edma3Result == EDMA3_DRV_SOK) + { + /* Save the semaphore handle for future use */ + semHandle[edma3Id] = initCfg.drvSemHandle; + + /* Driver instance specific config NULL */ + initCfg.drvInstInitConfig = NULL; + +#ifndef EDMA3_DRV_USE_DEF_RM_CFG + /* Hook for running examples with default RM config */ + /* configuration structure for the Driver */ + initCfg.drvInstInitConfig = &sampleInstInitConfig[edma3Id][dsp_num]; +#endif + + initCfg.isMaster = TRUE; + /* Choose shadow region according to the DSP# */ + initCfg.regionId = (EDMA3_RM_RegionId)dsp_num; + /*Saving the regionId for using it in the sample_cs.c file */ + region_id = (EDMA3_RM_RegionId)dsp_num; + /* Driver instance specific config NULL */ + + initCfg.gblerrCb = NULL; + initCfg.gblerrData = NULL; + + /* Open the Driver Instance */ + hEdma = EDMA3_DRV_open (edma3Id, (void *) &initCfg, &edma3Result); + } + +#if defined (CHIP_TI814X) + { + if(hEdma && (edma3Result == EDMA3_DRV_SOK)) + { + edma3Result = sampleInitXbarEvt(hEdma, edma3Id); + } + } +#endif + if(hEdma && (edma3Result == EDMA3_DRV_SOK)) + { + /** + * Register Interrupt Handlers for various interrupts + * like transfer completion interrupt, CC error + * interrupt, TC error interrupts etc, if required. + */ + registerEdma3Interrupts(edma3Id); + } + + *errorCode = edma3Result; + return hEdma; + } + + +/** + * \brief EDMA3 De-initialization + * + * This function removes the EDMA3 Driver instance and unregisters the + * interrupt handlers. + * + * \return EDMA3_DRV_SOK if success, else error code + */ +EDMA3_DRV_Result edma3deinit (unsigned int edma3Id, EDMA3_DRV_Handle hEdma) + { + EDMA3_DRV_Result edma3Result = EDMA3_DRV_E_INVALID_PARAM; + + /* Unregister Interrupt Handlers first */ + unregisterEdma3Interrupts(edma3Id); + + /* Delete the semaphore */ + edma3Result = edma3OsSemDelete(semHandle[edma3Id]); + + if (EDMA3_DRV_SOK == edma3Result ) + { + /* Make the semaphore handle as NULL. */ + semHandle[edma3Id] = NULL; + + /* Now, close the EDMA3 Driver Instance */ + edma3Result = EDMA3_DRV_close (hEdma, NULL); + } + + if (EDMA3_DRV_SOK == edma3Result ) + { + /* Now, delete the EDMA3 Driver Object */ + edma3Result = EDMA3_DRV_delete (edma3Id, NULL); + } + + return edma3Result; + } + +/* End of File */ + diff --git a/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_omapl138_cfg.c b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_omapl138_cfg.c new file mode 100644 index 000000000..5e670ca80 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_omapl138_cfg.c @@ -0,0 +1,1391 @@ +/* + * sample_omapl138_cfg.c + * + * SoC specific EDMA3 hardware related information like number of transfer + * controllers, various interrupt ids etc. It is used while interrupts + * enabling / disabling. It needs to be ported for different SoCs. + * + * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#include + +/* Number of EDMA3 controllers present in the system */ +#define NUM_EDMA3_INSTANCES 2u +const unsigned int numEdma3Instances = NUM_EDMA3_INSTANCES; + +/* Number of DSPs present in the system */ +#define NUM_DSPS 1u +const unsigned int numDsps = NUM_DSPS; + +/* Determine the processor id by reading DNUM register. */ +unsigned short determineProcId() +{ + return 1; +} + +signed char* getGlobalAddr(signed char* addr) +{ + return (addr); /* The address is already a global address */ +} +unsigned short isGblConfigRequired(unsigned int dspNum) +{ + (void) dspNum; + + return 1; +} + +/* Semaphore handles */ +EDMA3_OS_Sem_Handle semHandle[NUM_EDMA3_INSTANCES] = {NULL,NULL}; + +/** Number of PaRAM Sets available */ +#define EDMA3_NUM_PARAMSET (128u) +/** Number of TCCS available */ +#define EDMA3_NUM_TCC (32u) + +/** Number of Event Queues available */ +#define EDMA3_0_NUM_EVTQUE (2u) +#define EDMA3_1_NUM_EVTQUE (1u) + +/** Number of Transfer Controllers available */ +#define EDMA3_0_NUM_TC (2u) +#define EDMA3_1_NUM_TC (1u) + +#ifdef __TMS470__ /* values for ARM */ + +#else /* values for DSP */ +/** Interrupt no. for Transfer Completion */ +#define EDMA3_0_CC_XFER_COMPLETION_INT (8u) +#define EDMA3_1_CC_XFER_COMPLETION_INT (91u) + +/** Interrupt no. for CC Error */ +#define EDMA3_0_CC_ERROR_INT (56u) +#define EDMA3_1_CC_ERROR_INT (92u) + +/** Interrupt no. for TCs Error */ +#define EDMA3_0_TC0_ERROR_INT (57u) +#define EDMA3_0_TC1_ERROR_INT (58u) +#define EDMA3_0_TC2_ERROR_INT (0u) +#define EDMA3_0_TC3_ERROR_INT (0u) +#define EDMA3_0_TC4_ERROR_INT (0u) +#define EDMA3_0_TC5_ERROR_INT (0u) +#define EDMA3_0_TC6_ERROR_INT (0u) +#define EDMA3_0_TC7_ERROR_INT (0u) + +#define EDMA3_1_TC0_ERROR_INT (93u) +#define EDMA3_1_TC1_ERROR_INT (0u) +#define EDMA3_1_TC2_ERROR_INT (0u) +#define EDMA3_1_TC3_ERROR_INT (0u) +#define EDMA3_1_TC4_ERROR_INT (0u) +#define EDMA3_1_TC5_ERROR_INT (0u) +#define EDMA3_1_TC6_ERROR_INT (0u) +#define EDMA3_1_TC7_ERROR_INT (0u) + +/** + * EDMA3 interrupts (transfer completion, CC error etc.) correspond to different + * ECM events (SoC specific). These ECM events come + * under ECM block XXX (handling those specific ECM events). Normally, block + * 0 handles events 4-31 (events 0-3 are reserved), block 1 handles events + * 32-63 and so on. This ECM block XXX (or interrupt selection number XXX) + * is mapped to a specific HWI_INT YYY in the tcf file. + * Define EDMA3_HWI_INT_XFER_COMP to specific HWI_INT, corresponding + * to transfer completion interrupt. + * Define EDMA3_HWI_INT_CC_ERR to specific HWI_INT, corresponding + * to CC error interrupts. + * Define EDMA3_HWI_INT_TC_ERR to specific HWI_INT, corresponding + * to TC error interrupts. + */ +/* EDMA 0 */ +#define EDMA3_0_HWI_INT_XFER_COMP (7u) +#define EDMA3_0_HWI_INT_CC_ERR (8u) +#define EDMA3_0_HWI_INT_TC0_ERR (8u) +#define EDMA3_0_HWI_INT_TC1_ERR (8u) + +/* EDMA 1 */ +#define EDMA3_1_HWI_INT_XFER_COMP (9u) +#define EDMA3_1_HWI_INT_CC_ERR (9u) +#define EDMA3_1_HWI_INT_TC0_ERR (9u) + +#endif /* __TMS470__ */ + +/** + * \brief Mapping of DMA channels 0-31 to Hardware Events from + * various peripherals, which use EDMA for data transfer. + * All channels need not be mapped, some can be free also. + * 1: Mapped + * 0: Not mapped + * + * This mapping will be used to allocate DMA channels when user passes + * EDMA3_DRV_DMA_CHANNEL_ANY as dma channel id (for eg to do memory-to-memory + * copy). The same mapping is used to allocate the TCC when user passes + * EDMA3_DRV_TCC_ANY as tcc id (for eg to do memory-to-memory copy). + * + * To allocate more DMA channels or TCCs, one has to modify the event mapping. + */ + /* 31 0 */ +#define EDMA3_0_DMA_CHANNEL_TO_EVENT_MAPPING_0 (0xFF3FF3FFu) +#define EDMA3_1_DMA_CHANNEL_TO_EVENT_MAPPING_0 (0x3F07FFFFu) + +/** + * \brief Mapping of DMA channels 32-63 to Hardware Events from + * various peripherals, which use EDMA for data transfer. + * All channels need not be mapped, some can be free also. + * 1: Mapped + * 0: Not mapped + * + * This mapping will be used to allocate DMA channels when user passes + * EDMA3_DRV_DMA_CHANNEL_ANY as dma channel id (for eg to do memory-to-memory + * copy). The same mapping is used to allocate the TCC when user passes + * EDMA3_DRV_TCC_ANY as tcc id (for eg to do memory-to-memory copy). + * + * To allocate more DMA channels or TCCs, one has to modify the event mapping. + */ +/* DMA channels 32-63 DOES NOT exist in omapl138. */ +#define EDMA3_0_DMA_CHANNEL_TO_EVENT_MAPPING_1 (0x0u) +#define EDMA3_1_DMA_CHANNEL_TO_EVENT_MAPPING_1 (0x0u) + +/* Variable which will be used internally for referring number of Event Queues*/ +unsigned int numEdma3EvtQue[NUM_EDMA3_INSTANCES] = { + EDMA3_0_NUM_EVTQUE, + EDMA3_1_NUM_EVTQUE + }; + +/* Variable which will be used internally for referring number of TCs. */ +unsigned int numEdma3Tc[NUM_EDMA3_INSTANCES] = { + EDMA3_0_NUM_TC, + EDMA3_1_NUM_TC + }; + +/** + * Variable which will be used internally for referring transfer completion + * interrupt. + */ +unsigned int ccXferCompInt[NUM_EDMA3_INSTANCES][EDMA3_MAX_REGIONS] = { + { + 0u, EDMA3_0_CC_XFER_COMPLETION_INT, 0u, 0u, 0u, 0u, 0u, 0u, + }, + { + 0u, EDMA3_1_CC_XFER_COMPLETION_INT, 0u, 0u, 0u, 0u, 0u, 0u, + }, + }; + +/** + * Variable which will be used internally for referring channel controller's + * error interrupt. + */ +unsigned int ccErrorInt[NUM_EDMA3_INSTANCES] = { + EDMA3_0_CC_ERROR_INT, + EDMA3_1_CC_ERROR_INT + }; + +/** + * Variable which will be used internally for referring transfer controllers' + * error interrupts. + */ +unsigned int tcErrorInt[NUM_EDMA3_INSTANCES][8] = { + { + EDMA3_0_TC0_ERROR_INT, EDMA3_0_TC1_ERROR_INT, + EDMA3_0_TC2_ERROR_INT, EDMA3_0_TC3_ERROR_INT, + EDMA3_0_TC4_ERROR_INT, EDMA3_0_TC5_ERROR_INT, + EDMA3_0_TC6_ERROR_INT, EDMA3_0_TC7_ERROR_INT, + }, + { + EDMA3_1_TC0_ERROR_INT, EDMA3_1_TC1_ERROR_INT, + EDMA3_1_TC2_ERROR_INT, EDMA3_1_TC3_ERROR_INT, + EDMA3_1_TC4_ERROR_INT, EDMA3_1_TC5_ERROR_INT, + EDMA3_1_TC6_ERROR_INT, EDMA3_1_TC7_ERROR_INT, + } + }; + +/** + * Variables which will be used internally for referring the hardware interrupt + * for various EDMA3 interrupts. + */ +unsigned int hwIntXferComp[NUM_EDMA3_INSTANCES] = { + EDMA3_0_HWI_INT_XFER_COMP, + EDMA3_1_HWI_INT_XFER_COMP + }; + +unsigned int hwIntCcErr[NUM_EDMA3_INSTANCES] = { + EDMA3_0_HWI_INT_CC_ERR, + EDMA3_1_HWI_INT_CC_ERR + }; + +unsigned int hwIntTcErr[NUM_EDMA3_INSTANCES][8] = { + { + EDMA3_0_HWI_INT_TC0_ERR, + EDMA3_0_HWI_INT_TC1_ERR, + }, + { + EDMA3_1_HWI_INT_TC0_ERR, + } + }; + +/* Driver Object Initialization Configuration */ +EDMA3_DRV_GblConfigParams sampleEdma3GblCfgParams[NUM_EDMA3_INSTANCES] = +{ + { + /* EDMA3 INSTANCE# 0 */ + /** Total number of DMA Channels supported by the EDMA3 Controller */ + 32u, + /** Total number of QDMA Channels supported by the EDMA3 Controller */ + 8u, + /** Total number of TCCs supported by the EDMA3 Controller */ + 32u, + /** Total number of PaRAM Sets supported by the EDMA3 Controller */ + 128u, + /** Total number of Event Queues in the EDMA3 Controller */ + 2u, + /** Total number of Transfer Controllers (TCs) in the EDMA3 Controller*/ + 2u, + /** Number of Regions on this EDMA3 controller */ + 4u, + + /** + * \brief Channel mapping existence + * A value of 0 (No channel mapping) implies that there is fixed association + * for a channel number to a parameter entry number or, in other words, + * PaRAM entry n corresponds to channel n. + */ + 0u, + + /** Existence of memory protection feature */ + 0u, + + /** Global Register Region of CC Registers */ + (void *)0x01C00000u, + /** Transfer Controller (TC) Registers */ + { + (void *)0x01C08000u, + (void *)0x01C08400u, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL + }, + /** Interrupt no. for Transfer Completion */ + EDMA3_0_CC_XFER_COMPLETION_INT, + /** Interrupt no. for CC Error */ + EDMA3_0_CC_ERROR_INT, + /** Interrupt no. for TCs Error */ + { + EDMA3_0_TC0_ERROR_INT, + EDMA3_0_TC1_ERROR_INT, + EDMA3_0_TC2_ERROR_INT, + EDMA3_0_TC3_ERROR_INT, + EDMA3_0_TC4_ERROR_INT, + EDMA3_0_TC5_ERROR_INT, + EDMA3_0_TC6_ERROR_INT, + EDMA3_0_TC7_ERROR_INT + }, + + /** + * \brief EDMA3 TC priority setting + * + * User can program the priority of the Event Queues + * at a system-wide level. This means that the user can set the + * priority of an IO initiated by either of the TCs (Transfer Controllers) + * relative to IO initiated by the other bus masters on the + * device (ARM, DSP, USB, etc) + */ + { + 0u, + 1u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + /** + * \brief To Configure the Threshold level of number of events + * that can be queued up in the Event queues. EDMA3CC error register + * (CCERR) will indicate whether or not at any instant of time the + * number of events queued up in any of the event queues exceeds + * or equals the threshold/watermark value that is set + * in the queue watermark threshold register (QWMTHRA). + */ + { + 16u, + 16u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + + /** + * \brief To Configure the Default Burst Size (DBS) of TCs. + * An optimally-sized command is defined by the transfer controller + * default burst size (DBS). Different TCs can have different + * DBS values. It is defined in Bytes. + */ + { + 16u, + 16u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + + /** + * \brief Mapping from each DMA channel to a Parameter RAM set, + * if it exists, otherwise of no use. + */ + { + 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, + 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, + 16u, 17u, 18u, 19u, 20u, 21u, 22u, 23u, + 24u, 25u, 26u, 27u, 28u, 29u, 30u, 31u, + /* DMA channels 32-63 DOES NOT exist in OMAPL138. */ + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS + }, + + /** + * \brief Mapping from each DMA channel to a TCC. This specific + * TCC code will be returned when the transfer is completed + * on the mapped channel. + */ + { + 0u, 1u, 2u, 3u, + 4u, 5u, 6u, 7u, + 8u, 9u, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + 12u, 13u, 14u, 15u, + 16u, 17u, 18u, 19u, + 20u, 21u, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + 24u, 25u, 26u, 27u, + 28u, 29u, 30u, 31u, + /* DMA channels 32-63 DOES NOT exist in OMAPL138. */ + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC + }, + + /** + * \brief Mapping of DMA channels to Hardware Events from + * various peripherals, which use EDMA for data transfer. + * All channels need not be mapped, some can be free also. + */ + { + EDMA3_0_DMA_CHANNEL_TO_EVENT_MAPPING_0, + EDMA3_0_DMA_CHANNEL_TO_EVENT_MAPPING_1 + } + }, + + { + /* EDMA3 INSTANCE# 1 */ + /** Total number of DMA Channels supported by the EDMA3 Controller */ + 32u, + /** Total number of QDMA Channels supported by the EDMA3 Controller */ + 8u, + /** Total number of TCCs supported by the EDMA3 Controller */ + 32u, + /** Total number of PaRAM Sets supported by the EDMA3 Controller */ + 128u, + /** Total number of Event Queues in the EDMA3 Controller */ + 1u, + /** Total number of Transfer Controllers (TCs) in the EDMA3 Controller */ + 1u, + /** Number of Regions on this EDMA3 controller */ + 4u, + + /** + * \brief Channel mapping existence + * A value of 0 (No channel mapping) implies that there is fixed association + * for a channel number to a parameter entry number or, in other words, + * PaRAM entry n corresponds to channel n. + */ + 0u, + + /** Existence of memory protection feature */ + 0u, + + /** Global Register Region of CC Registers */ + (void *)0x01E30000u, + /** Transfer Controller (TC) Registers */ + { + (void *)0x01E38000u, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL + }, + /** Interrupt no. for Transfer Completion */ + EDMA3_1_CC_XFER_COMPLETION_INT, + /** Interrupt no. for CC Error */ + EDMA3_1_CC_ERROR_INT, + /** Interrupt no. for TCs Error */ + { + EDMA3_1_TC0_ERROR_INT, + EDMA3_1_TC1_ERROR_INT, + EDMA3_1_TC2_ERROR_INT, + EDMA3_1_TC3_ERROR_INT, + EDMA3_1_TC4_ERROR_INT, + EDMA3_1_TC5_ERROR_INT, + EDMA3_1_TC6_ERROR_INT, + EDMA3_1_TC7_ERROR_INT, + }, + + /** + * \brief EDMA3 TC priority setting + * + * User can program the priority of the Event Queues + * at a system-wide level. This means that the user can set the + * priority of an IO initiated by either of the TCs (Transfer Controllers) + * relative to IO initiated by the other bus masters on the + * device (ARM, DSP, USB, etc) + */ + { + 0u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + /** + * \brief To Configure the Threshold level of number of events + * that can be queued up in the Event queues. EDMA3CC error register + * (CCERR) will indicate whether or not at any instant of time the + * number of events queued up in any of the event queues exceeds + * or equals the threshold/watermark value that is set + * in the queue watermark threshold register (QWMTHRA). + */ + { + 16u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + + /** + * \brief To Configure the Default Burst Size (DBS) of TCs. + * An optimally-sized command is defined by the transfer controller + * default burst size (DBS). Different TCs can have different + * DBS values. It is defined in Bytes. + */ + { + 16u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + + /** + * \brief Mapping from each DMA channel to a Parameter RAM set, + * if it exists, otherwise of no use. + */ + { + 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, + 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, + 16u, 17u, 18u, 19u, 20u, 21u, 22u, 23u, + 24u, 25u, 26u, 27u, 28u, 29u, 30u, 31u, + /* DMA channels 32-63 DOES NOT exist in OMAPL138. */ + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS + }, + + /** + * \brief Mapping from each DMA channel to a TCC. This specific + * TCC code will be returned when the transfer is completed + * on the mapped channel. + */ + { + 0u, 1u, 2u, 3u, + 4u, 5u, 6u, 7u, + 8u, 9u, 10u, 11u, + 12u, 13u, 14u, 15u, + 16u, 17u, 18u, EDMA3_RM_CH_NO_TCC_MAP, + EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + 24u, 25u, 26u, 27u, + 28u, 29u, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + /* DMA channels 32-63 DOES NOT exist in OMAPL138. */ + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC + }, + + /** + * \brief Mapping of DMA channels to Hardware Events from + * various peripherals, which use EDMA for data transfer. + * All channels need not be mapped, some can be free also. + */ + { + EDMA3_1_DMA_CHANNEL_TO_EVENT_MAPPING_0, + EDMA3_1_DMA_CHANNEL_TO_EVENT_MAPPING_1 + } + }, +}; + + +/* Driver Instance Initialization Configuration */ +EDMA3_DRV_InstanceInitConfig sampleInstInitConfig[NUM_EDMA3_INSTANCES][EDMA3_MAX_REGIONS] = +{ + /* EDMA3 INSTANCE# 0 */ + { + /* Resources owned/reserved by region 0 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + /* Resources owned/reserved by region 1 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0xFFFFFFFFu, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x000000FFu}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0xFFFFFFFFu, 0x00000000u}, + + /* Resources reserved by Region 1 */ + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0xFFFFFFFFu, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* resvdDmaChannels */ + /* 31 0 */ + {0xFF3FF3FFu, + /* 63..32 */ + 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 */ + {EDMA3_0_DMA_CHANNEL_TO_EVENT_MAPPING_0, + /* 63..32 */ + EDMA3_0_DMA_CHANNEL_TO_EVENT_MAPPING_1}, + }, + /* Resources owned/reserved by region 2 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 3 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 4 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 5 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 6 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 7 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + }, + /* EDMA3 INSTANCE# 1 */ + { + /* Resources owned/reserved by region 0 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + /* Resources owned by Region 1 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0xFFFFFFFFu, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x000000FFu}, + + /* ownTccs */ + /* 31 0 63 32 */ + { + 0xFFFFFFFFu, + 0x00000000u + }, + + /* Resources reserved by Region 1 */ + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + { + 0xFFFFFFFFu, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + }, + + /* resvdDmaChannels */ + /* 31 0 */ + { + EDMA3_1_DMA_CHANNEL_TO_EVENT_MAPPING_0, + /* 63..32 */ + EDMA3_1_DMA_CHANNEL_TO_EVENT_MAPPING_1 + }, + + /* resvdQdmaChannels */ + /* 31 0 */ + { + 0x00000000u + }, + + /* resvdTccs */ + /* 31 0 */ + { + 0x3F07FFFFu, + /* 63..32 */ + 0x00000000u + }, + }, + /* Resources owned/reserved by region 2 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 3 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 4 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 5 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 6 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 7 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + } + } +}; + +/* End of File */ + diff --git a/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_omapl138_int_reg.c b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_omapl138_int_reg.c new file mode 100644 index 000000000..e82c9392b --- /dev/null +++ b/packages/ti/drv/mcbsp/example/c674x/MCBSPDigLpbk/sample_omapl138_int_reg.c @@ -0,0 +1,152 @@ +/* + * sample_omapl138_int_reg.c + * + * Platform specific interrupt registration and un-registration routines. + * + * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#include +#include +#include + +#include + +/** + * EDMA3 TC ISRs which need to be registered with the underlying OS by the user + * (Not all TC error ISRs need to be registered, register only for the + * available Transfer Controllers). + */ +void (*ptrEdma3TcIsrHandler[EDMA3_MAX_TC])(unsigned int arg) = + { + &lisrEdma3TC0ErrHandler0, + &lisrEdma3TC1ErrHandler0, + &lisrEdma3TC2ErrHandler0, + &lisrEdma3TC3ErrHandler0, + &lisrEdma3TC4ErrHandler0, + &lisrEdma3TC5ErrHandler0, + &lisrEdma3TC6ErrHandler0, + &lisrEdma3TC7ErrHandler0, + }; + +extern unsigned int ccXferCompInt[][EDMA3_MAX_REGIONS]; +extern unsigned int ccErrorInt[]; +extern unsigned int tcErrorInt[][EDMA3_MAX_TC]; +extern unsigned int numEdma3Tc[]; + +/** + * Variables which will be used internally for referring the hardware interrupt + * for various EDMA3 interrupts. + */ +extern unsigned int hwIntXferComp[]; +extern unsigned int hwIntCcErr[]; +extern unsigned int hwIntTcErr[]; + +extern unsigned int dsp_num; + +/** To Register the ISRs with the underlying OS, if required. */ +void registerEdma3Interrupts (unsigned int edma3Id) + { + static UInt32 cookie = 0; + unsigned int numTc = 0; + + /* Disabling the global interrupts */ + cookie = Hwi_disable(); + + /* Enable the Xfer Completion Event Interrupt */ + EventCombiner_dispatchPlug(ccXferCompInt[edma3Id][dsp_num], + (EventCombiner_FuncPtr)(&lisrEdma3ComplHandler0), + edma3Id, 1); + EventCombiner_enableEvent(ccXferCompInt[edma3Id][dsp_num]); + + /* Enable the CC Error Event Interrupt */ + EventCombiner_dispatchPlug(ccErrorInt[edma3Id], + (EventCombiner_FuncPtr)(&lisrEdma3CCErrHandler0), + edma3Id, 1); + EventCombiner_enableEvent(ccErrorInt[edma3Id]); + + /* Enable the TC Error Event Interrupt, according to the number of TCs. */ + while (numTc < numEdma3Tc[edma3Id]) + { + EventCombiner_dispatchPlug(tcErrorInt[edma3Id][numTc], + (EventCombiner_FuncPtr)(ptrEdma3TcIsrHandler[numTc]), + edma3Id, 1); + EventCombiner_enableEvent(tcErrorInt[edma3Id][numTc]); + numTc++; + } + + /** + * Enabling the HWI_ID. + * EDMA3 interrupts (transfer completion, CC error etc.) + * correspond to different ECM events (SoC specific). These ECM events come + * under ECM block XXX (handling those specific ECM events). Normally, block + * 0 handles events 4-31 (events 0-3 are reserved), block 1 handles events + * 32-63 and so on. This ECM block XXX (or interrupt selection number XXX) + * is mapped to a specific HWI_INT YYY in the tcf file. So to enable this + * mapped HWI_INT YYY, one should use the corresponding bitmask in the + * API C64_enableIER(), in which the YYY bit is SET. + */ + Hwi_enableInterrupt(hwIntXferComp[edma3Id]); + Hwi_enableInterrupt(hwIntCcErr[edma3Id]); + Hwi_enableInterrupt(hwIntTcErr[edma3Id]); + + /* Restore interrupts */ + Hwi_restore(cookie); + } + +/** To Unregister the ISRs with the underlying OS, if previously registered. */ +void unregisterEdma3Interrupts (unsigned int edma3Id) + { + static UInt32 cookie = 0; + unsigned int numTc = 0; + + /* Disabling the global interrupts */ + cookie = Hwi_disable(); + + /* Disable the Xfer Completion Event Interrupt */ + EventCombiner_disableEvent(ccXferCompInt[edma3Id][dsp_num]); + + /* Disable the CC Error Event Interrupt */ + EventCombiner_disableEvent(ccErrorInt[edma3Id]); + + /* Enable the TC Error Event Interrupt, according to the number of TCs. */ + while (numTc < numEdma3Tc[edma3Id]) + { + EventCombiner_disableEvent(tcErrorInt[edma3Id][numTc]); + numTc++; + } + + /* Restore interrupts */ + Hwi_restore(cookie); + } + diff --git a/packages/ti/drv/mcbsp/example/include/MCBSP_log.h b/packages/ti/drv/mcbsp/example/include/MCBSP_log.h new file mode 100644 index 000000000..603091b9c --- /dev/null +++ b/packages/ti/drv/mcbsp/example/include/MCBSP_log.h @@ -0,0 +1,77 @@ +/** + * \file MCBSP_log.h + * + * \brief This file contains the prototypes for the log print functions. By + default the prints will be directed to serial console using UART. + * + */ + +/* + * Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/ + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef _MCBSP_LOG_H +#define _MCBSP_LOG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* UART Header files */ +#include +#include + +/********************************************************************** + ************************** Global Variables ************************** + **********************************************************************/ +extern void UART_printf(const char *pcString, ...); +extern void ConsoleUtilsInit(void); + +/********************************************************************** + ************************** Macros ************************************ + **********************************************************************/ +/* Enable the below macro to have prints on the IO Console */ +//#define IO_CONSOLE + +#ifndef IO_CONSOLE +#define MCBSP_log UART_printf +#else +#define MCBSP_log System_printf +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _MCBSP_LOG_H */ diff --git a/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/MCBSP_DigLpbkevmK2Gc66ExampleProject.txt b/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/MCBSP_DigLpbkevmK2Gc66ExampleProject.txt new file mode 100644 index 000000000..d0302fd85 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/MCBSP_DigLpbkevmK2Gc66ExampleProject.txt @@ -0,0 +1,8 @@ +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk.c" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/device/k2g/src/device_mcbsp_loopback.c" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/sample_k2g_cfg.c" + +-ccs.setCompilerOptions "-DDEVICE_K2G -DMCBSP_DEBUG_TEMP -g --diag_warning=225 -I${PDK_INSTALL_PATH} -I${BIOS_INSTALL_PATH}/packages -I${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk -I${PDK_INSTALL_PATH}/ti/drv/mcbsp/include -I${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/include -I${PDK_INSTALL_PATH}/ti/drv/mcbsp -I${PDK_INSTALL_PATH}/ti/board" -rtsc.enableRtsc diff --git a/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/bios6_edma3_drv_sample.h b/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/bios6_edma3_drv_sample.h new file mode 100644 index 000000000..5fad8a74a --- /dev/null +++ b/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/bios6_edma3_drv_sample.h @@ -0,0 +1,186 @@ +/* + * bios6_edma3_drv_sample.h + * + * Header file for the sample application for the EDMA3 Driver. + * + * Copyright (C) 2009-2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#ifndef _BIOS6_EDMA3_DRV_SAMPLE_H_ +#define _BIOS6_EDMA3_DRV_SAMPLE_H_ + +#include +#include + +/* Include EDMA3 Driver */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Cache line size on the underlying SoC. It needs to be modified + * for different cache line sizes, if the Cache is Enabled. + */ +#define EDMA3_CACHE_LINE_SIZE_IN_BYTES (128u) + +/* Error returned in case of buffers are not aligned on the cache boundary */ +#define EDMA3_NON_ALIGNED_BUFFERS_ERROR (-1) + +/* Error returned in case of data mismatch */ +#define EDMA3_DATA_MISMATCH_ERROR (-2) + +/** + * \brief EDMA3 Initialization + * + * This function initializes the EDMA3 Driver for the given EDMA3 controller + * and opens a EDMA3 driver instance. It internally calls EDMA3_DRV_create() and + * EDMA3_DRV_open(), in that order. + * + * It also registers interrupt handlers for various EDMA3 interrupts like + * transfer completion or error interrupts. + * + * \param edma3Id [IN] EDMA3 Controller Instance Id (Hardware + * instance id, starting from 0) + * \param errorCode [IN/OUT] Error code while opening DRV instance + * \return EDMA3_DRV_Handle: If successfully opened, the API will return the + * associated driver's instance handle. + */ +EDMA3_DRV_Handle edma3init (unsigned int edma3Id, EDMA3_DRV_Result *errorCode); + +/** + * \brief EDMA3 De-initialization + * + * This function de-initializes the EDMA3 Driver for the given EDMA3 controller + * and closes the previously opened EDMA3 driver instance. It internally calls + * EDMA3_DRV_close and EDMA3_DRV_delete(), in that order. + * + * It also un-registers the previously registered interrupt handlers for various + * EDMA3 interrupts. + * + * \param edma3Id [IN] EDMA3 Controller Instance Id (Hardware + * instance id, starting from 0) + * \param hEdma [IN] EDMA3 Driver handle, returned while using + * edma3init(). + * \return EDMA3_DRV_SOK if success, else error code + */ +EDMA3_DRV_Result edma3deinit (unsigned int edma3Id, EDMA3_DRV_Handle hEdma); + + +/** + * \brief EDMA3 Cache Invalidate + * + * This function invalidates the D cache. + * + * \param mem_start_ptr [IN] Starting address of memory. + * Please note that this should be + * aligned according to the cache line size. + * \param num_bytes [IN] length of buffer + * \return EDMA3_DRV_SOK if success, else error code in case of error + * or non-alignment of buffers. + * + * Note: This function is required if the buffer is in DDR. + * For other cases, where buffer is NOT in DDR, user + * may or may not require the below implementation and + * should modify it according to her need. + */ +EDMA3_DRV_Result Edma3_CacheInvalidate(unsigned int mem_start_ptr, + unsigned int num_bytes); + + + +/** + * \brief EDMA3 Cache Flush + * + * This function flushes (cleans) the Cache + * + * \param mem_start_ptr [IN] Starting address of memory. + * Please note that this should be + * aligned according to the cache line size. + * \param num_bytes [IN] length of buffer + * \return EDMA3_DRV_SOK if success, else error code in case of error + * or non-alignment of buffers. + * + * Note: This function is required if the buffer is in DDR. + * For other cases, where buffer is NOT in DDR, user + * may or may not require the below implementation and + * should modify it according to her need. + */ +EDMA3_DRV_Result Edma3_CacheFlush(unsigned int mem_start_ptr, + unsigned int num_bytes); + + + +/** + * Counting Semaphore related functions (OS dependent) should be + * called/implemented by the application. A handle to the semaphore + * is required while opening the driver/resource manager instance. + */ + +/** + * \brief EDMA3 OS Semaphore Create + * + * This function creates a counting semaphore with specified + * attributes and initial value. It should be used to create a semaphore + * with initial value as '1'. The semaphore is then passed by the user + * to the EDMA3 driver/RM for proper sharing of resources. + * \param initVal [IN] is initial value for semaphore + * \param semParams [IN] is the semaphore attributes. + * \param hSem [OUT] is location to receive the handle to just created + * semaphore. + * \return EDMA3_DRV_SOK if successful, else a suitable error code. + */ +EDMA3_DRV_Result edma3OsSemCreate(int initVal, + const Semaphore_Params *semParams, + EDMA3_OS_Sem_Handle *hSem); + + + +/** + * \brief EDMA3 OS Semaphore Delete + * + * This function deletes or removes the specified semaphore + * from the system. Associated dynamically allocated memory + * if any is also freed up. + * \param hSem [IN] handle to the semaphore to be deleted + * \return EDMA3_DRV_SOK if successful else a suitable error code + */ +EDMA3_DRV_Result edma3OsSemDelete(EDMA3_OS_Sem_Handle hSem); + +#ifdef __cplusplus +} +#endif /* extern "C" */ + +#endif /* _BIOS6_EDMA3_DRV_SAMPLE_H_ */ + diff --git a/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/config.bld b/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/config.bld new file mode 100644 index 000000000..cb4905e5a --- /dev/null +++ b/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/config.bld @@ -0,0 +1,82 @@ +/* + * + * $Source: /cvsstl/ti/pa/f/s19/config.bld,v $ + * $Revision: 1.6 $ + * + * XDC/BIOS configuration file for I12 Topo/Feature Set + * + * Copyright 2008, Texas Instruments, Inc. All rights reserved. + * + * $Log: config.bld,v $ + * Revision 1.6 2009/06/10 07:51:13 mkamat + * MID 2487 Replace references to PA17 with PA + * + * Revision 1.5 2009/03/02 04:36:58 uparikh + * Add segment SDRAM_LINK_SHARED for dhared LINK memory + * + * Revision 1.4 2009/02/18 14:29:12 uparikh + * Partition SDRAM and re-order memory segments in ascending order + * + * Revision 1.3 2009/02/14 09:05:55 uparikh + * Update IRAM and SDRAM base / len + * + * Revision 1.2 2009/01/28 12:37:59 mkamat + * Made cache 64k and moved o/p buffer to L3 - MID 2144 + * + * Revision 1.1 2008/10/21 04:45:09 mkamat + * Code cleanup in s19 area - MID 1923 + * + * Revision 1.6 2008/10/13 05:22:54 uparikh + * Define section for uboot + * + * Revision 1.5 2008/09/29 11:20:53 uparikh + * Increase size of SDRAM for pa.out to build + * + * Revision 1.4 2008/09/09 23:35:52 lester + * (MID 1820) Revised to use deviceName: 'TMS320DA830', + * instead of deviceName: 'Primus' (deprecated). + * + * Revision 1.3 2008/09/05 17:18:42 martin + * Renumber array elements. Element 1 was missing in last commit + * + * Revision 1.2 2008/09/05 16:00:43 martin + * Move DSP image to upper SDRAM to cooperate with Linux images. + * + * Revision 1.1 2008/08/20 09:54:35 lester + * (MID 1820) Generated via (from latest this date): + * [/cygdrive/t/pa/f/s17/pai1] delog -f"t:/pa/f/s19/i12" .... + * + */ + +/* ......................................................................... */ + +var memory = []; + + +memory[0] = ["IRAM", + { + name : "IRAM", + base : 0x10800000, + len : 0x00080000, + space : "code/data" + }]; + +memory[1] = ["L3RAM", + { + name : "DDR3", + base : 0x80000000, + len : 0x10000000, + space : "data" + }]; + + +Build.platformTable['ti.platforms.generic:plat'] = +{ +clockRate: 600, +catalogName: 'ti.catalog.c6000', +deviceName: 'TMS320TCI6616', +regs: {l1DMode: "32k"}, +regs: {l1PMode: "32k"}, +regs: {l2Mode: "64k"}, +customMemoryMap: memory +}; diff --git a/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk.c b/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk.c new file mode 100644 index 000000000..03a52bc0c --- /dev/null +++ b/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk.c @@ -0,0 +1,979 @@ +/* + * mcbspMasterDigLpbk.c + * + * This file contains the test / demo code to demonstrate the McBSP driver + * master functionality using Digital Loopback setup. The file configures + * the EVM in master mode. + * + * Copyright (C) 2012 - 2018 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +/* ========================================================================== */ +/* INCLUDE FILES */ +/* ========================================================================== */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +/* Include EDMA3 Driver */ +#include + +/* CSL Chip Functional Layer */ +//#include + +/* CSL Cache Functional Layer */ +//#include + +/* CSL CPINTC Include Files. */ +//#include + +/* MCBSP Driver Include File. */ +#include +#include + +/* PlatformLib Include File */ +//#include + + +/* ========================================================================== */ +/* EXTERNAL FUNCTIONS */ +/* ========================================================================== */ + +extern EDMA3_DRV_Handle edma3init(unsigned int edma3Id, EDMA3_DRV_Result *); + +extern void McbspDevice_init(void); + +extern int32_t Osal_dataBufferInitMemory(uint32_t dataBufferSize); + +extern Board_STATUS Board_init(Board_initCfg); + +extern void McbspXmtInterrupt_init(void *mcbspTxChan); +extern void McbspRcvInterrupt_init(void *mcbspRxChan); + +/* FPGA Configuration Misc-1 Register offset */ +#define MCBSP_FPGA_MISC_REG_OFFSET (0x0C) + +/* ========================================================================== */ +/* MACRO DEFINTIONS */ +/* ========================================================================== */ + +#define NUM_BUFS 2 /* Max of buffers used in each direction */ +#define FRAMESIZE 40 /* e.g 5 ms 8 KHz samples */ +#define NUM_OF_ENABLED_CHANNELS 8 /* Number of slots to be used */ +#define NUM_OF_MAX_CHANNELS 128 /* Maximum number of time slots available based on clock settings */ +#define BUFSIZE (NUM_OF_ENABLED_CHANNELS * FRAMESIZE) /* Total buffer size per frame */ + +/* Defines the core number responsible for system initialization. */ +#define CORE_SYS_INIT 0 +/* Number of iterations to execute test: Only applicable to INTERNAL CLOCK Loopback test */ +#define NUM_OF_ITERATIONS 10 + +/* Number of MCBSP Frame structures used for submit channel */ +#define NUM_OF_MCBSP_FRAMES 2 + +/* Number of buffers initially submitted to Mcbsp lld: Only applicable to + External clock test ; Note: This should be set to 2*/ +#define INIT_SUBMIT_Q_CNT 2 + +/*============================================================================*/ +/* GLOBAL VARIABLES */ +/*============================================================================*/ + +/* Shared Memory Variable to ensure synchronizing MCBSP initialization + * with all the other cores. */ +/* Created an array to pad the cache line with MCBSP_CACHE_LENGTH size */ +#pragma DATA_ALIGN (isMCBSPInitialized, MCBSP_MAX_CACHE_ALIGN) +#pragma DATA_SECTION (isMCBSPInitialized, ".mcbspSharedMem"); +volatile Uint32 isMCBSPInitialized[(MCBSP_CACHE_LENGTH / sizeof(Uint32))] = { 0 }; + +/* Handle to the EDMA driver instance */ +#pragma DATA_ALIGN (hEdma, MCBSP_MAX_CACHE_ALIGN) +EDMA3_DRV_Handle hEdma[(MCBSP_CACHE_LENGTH / sizeof(EDMA3_DRV_Handle))] = { NULL }; + +/* Handle to MCBSP driver instance */ +typedef void* Mcbsp_DevHandle; +Mcbsp_DevHandle hMcbspDev; + +/* Handle to MCBSP driver channel instance */ +typedef void* Mcbsp_ChanHandle; +Mcbsp_ChanHandle hMcbspTxChan; +Mcbsp_ChanHandle hMcbspRxChan; + +/* Core Number Identifier */ +UInt32 coreNum = 0xFFFF; + +/* Array to hold the pointer to the allocated buffers */ +void* bufRx[NUM_BUFS]; +void* bufTx[NUM_BUFS]; + +#ifdef MCBSP_LOOP_PING_PONG +/* Ping pong buffers used to submit to Mcbsp lld, which will be used in a loop */ +void* bufRxPingPong[INIT_SUBMIT_Q_CNT]; +void* bufTxPingPong[INIT_SUBMIT_Q_CNT]; +#endif +/* Global Error call back function prototype */ +void mcbsp_GblErrCallback(uint32_t chanHandle,uint32_t spcr_read,uint32_t Arg3); + +/* Variables to indicate status of EDMA TX and RX requests */ +volatile uint32_t edmaTxDone = 0; +volatile uint32_t edmaRxDone = 0; +/* Global variables to track number of buffers submitted, number of iterations, error counts etc */ +int rxSubmitCount=0, txSubmitCount=0; +uint32_t num_iterations=0; +uint32_t num_rx_Call_backs=0, num_tx_Call_backs=0, dummy_call_backs=0; +uint32_t rxunderflowcnt=0, txunderflowcnt=0; +uint32_t errBuffCount=0; +/* Debug variables */ +volatile int debugVar=1; /* This can be used to maintain a while loop, If set to 0 will exit loop */ +volatile int debugCommand=1; /* This can be used to set to value below to send command to restart channel */ + +#define DEBUG_COMMAND_RESTART_CHANNELS 1 +/** + * \brief Mcbsp Sample rate generator default parameters. + * + */ +Mcbsp_srgConfig mcbspSrgCfg = +{ + FALSE, /* No gsync to be used as input is not CLKS */ + Mcbsp_ClkSPol_RISING_EDGE, /* Dont care as input clock is not clks */ + Mcbsp_SrgClk_CLKCPU, /* McBSP internal clock to be used */ + //166666667, /* Mcbsp internal clock frequency(PLL-SYSCLK6) */ + 333333333, //sys_oscclk or cpu_clk/3 + 0 /* frame sync pulse width (val+1) is used */ +}; + +/** + * \brief Mcbsp device creation default parameters. + * + */ +const Mcbsp_Params Mcbsp_PARAMS = +{ + Mcbsp_DevMode_McBSP, /* Use the device as MCBSP */ + Mcbsp_OpMode_DMAINTERRUPT, /* Use DMA mode of operation */ + TRUE, /* cache coherency taken care of by driver */ + Mcbsp_EmuMode_FREE, /* Emulation mode free is to be enabled */ +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_Loopback_DISABLE, /* Loop back mode disabled */ +#else + Mcbsp_Loopback_ENABLE, /* Loop back mode enabled */ +#endif + &mcbspSrgCfg, /* sample rate generator configuration */ + NULL, /* TX pending buffer queue from application */ + NULL, /* TX floating buffer queue in DMA */ + NULL, /* RX pending buffer queue from application */ + NULL /* RX floating buffer queue in DMA */ +}; + +#pragma DATA_ALIGN(loopTxJob, MCBSP_MAX_CACHE_ALIGN) +static Int32 loopTxJob[16] = { + /* Filling with Mu law silence pattern : Can be any user defined pattern */ + 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, + 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f +}; +#pragma DATA_ALIGN(loopRxJob, MCBSP_MAX_CACHE_ALIGN) +static Int32 loopRxJob[16] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +}; + +/**< settings to configure the TX or RX hardware sections */ +Mcbsp_DataConfig mcbspChanConfigTx = +{ + Mcbsp_Phase_SINGLE, + Mcbsp_WordLength_8, + Mcbsp_WordLength_8, /* Dont care for single phase*/ + NUM_OF_MAX_CHANNELS, + NUM_OF_MAX_CHANNELS, // Only used with dual phase + Mcbsp_FrmSync_DETECT, +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_DataDelay_0_BIT, +#else + Mcbsp_DataDelay_1_BIT, +#endif + Mcbsp_Compand_OFF_MSB_FIRST, + Mcbsp_BitReversal_DISABLE, + Mcbsp_IntMode_ON_SYNCERR, + Mcbsp_RxJust_RZF, /* Dont care for TX */ + Mcbsp_DxEna_OFF +}; + +/**< settings to configure the TX or RX hardware sections */ +Mcbsp_DataConfig mcbspChanConfigRx = +{ + Mcbsp_Phase_SINGLE, + Mcbsp_WordLength_8, + Mcbsp_WordLength_8, /* Dont care for single phase*/ + NUM_OF_MAX_CHANNELS, + NUM_OF_MAX_CHANNELS, // Only used with dual phase + Mcbsp_FrmSync_DETECT, +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_DataDelay_0_BIT, +#else + Mcbsp_DataDelay_1_BIT, +#endif + Mcbsp_Compand_OFF_MSB_FIRST, + Mcbsp_BitReversal_DISABLE, + Mcbsp_IntMode_ON_SYNCERR, + Mcbsp_RxJust_RZF, /* Dont care for TX */ + Mcbsp_DxEna_OFF +}; +/**< clock setup for the TX section */ +Mcbsp_ClkSetup mcbspClkConfigTx = +{ +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_FsClkMode_EXTERNAL, + 8000, /* 8KHz */ + Mcbsp_TxRxClkMode_EXTERNAL, +#else + Mcbsp_FsClkMode_INTERNAL, + 8000, /* 8KHz */ + Mcbsp_TxRxClkMode_INTERNAL, +#endif + Mcbsp_FsPol_ACTIVE_HIGH, + Mcbsp_ClkPol_RISING_EDGE +}; + +/**< clock setup for the RX section */ +Mcbsp_ClkSetup mcbspClkConfigRx = +{ +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_FsClkMode_EXTERNAL, + 8000, /* 8KHz */ + Mcbsp_TxRxClkMode_EXTERNAL, +#else + Mcbsp_FsClkMode_INTERNAL, + 8000, /* 8KHz */ + Mcbsp_TxRxClkMode_INTERNAL, +#endif + Mcbsp_FsPol_ACTIVE_HIGH, + Mcbsp_ClkPol_FALLING_EDGE +}; + +/**< Multi channel setup */ +Mcbsp_McrSetup mcbspMultiChanCtrl = +{ + Mcbsp_McmMode_ALL_CHAN_DISABLED_UNMASKED, + Mcbsp_PartitionMode_CHAN_0_15, + Mcbsp_PartitionMode_CHAN_16_31, + Mcbsp_PartitionMode_2 +}; + + +Mcbsp_ChanParams mcbspChanparamTx = +{ + Mcbsp_WordLength_8, /* wordlength configured */ + &loopTxJob[0], /* loop job buffer internal */ + 8, /* user loopjob length */ + mcbsp_GblErrCallback, /* global error callback */ + NULL, /* edma Handle */ + 1, /* EDMA event queue */ + 8, /* hwi number */ + Mcbsp_BufferFormat_MULTISLOT_NON_INTERLEAVED, + TRUE, /* FIFO mode enabled */ + &mcbspChanConfigTx, /* channel configuration */ + &mcbspClkConfigTx, /* clock configuration */ + &mcbspMultiChanCtrl, /* multi channel control */ + 0x7531, /* Enabled timeslots: 0, 4, 5, 8, 10, 12, 13, 14 */ + 0x00, + 0x00, + 0x00, + NUM_OF_ENABLED_CHANNELS /* Total number of channels enabled*/ +}; + +Mcbsp_ChanParams mcbspChanparamRx = +{ + Mcbsp_WordLength_8, /* wordlength configured */ + &loopRxJob[0], /* loop job buffer internal */ + 8, /* user loopjob length */ + mcbsp_GblErrCallback, /* global error callback */ + NULL, /* edma Handle */ + 1, /* EDMA event queue */ + 8, /* hwi number */ + Mcbsp_BufferFormat_MULTISLOT_NON_INTERLEAVED, + TRUE, /* FIFO mode enabled */ + &mcbspChanConfigRx, /* channel configuration */ + &mcbspClkConfigRx, /* clock configuration */ + &mcbspMultiChanCtrl, /* multi channel control */ + 0x7531, /* Enabled timeslots: 0, 4, 5, 8, 10, 12, 13, 14 */ + 0x00, + 0x00, + 0x00, + NUM_OF_ENABLED_CHANNELS /* Total number of channels enabled*/ +}; + + +/* ========================================================================== */ +/* FUNCTION DEFINITIONS */ +/* ========================================================================== */ + +/* + * This is the application's callback function. The driver will + * call this function whenever an EDMA I/O operation is over. + * + */ +void mcbspAppCallback(void* arg, Mcbsp_IOBuf *ioBuf) +{ + int32_t mode; + int32_t *pmode = (int32_t *)arg; + + mode = *pmode; + if (mode == MCBSP_MODE_OUTPUT) + { + if(ioBuf) { + num_tx_Call_backs++; + edmaTxDone = 1; + }else + txunderflowcnt++; + } + else if (mode == MCBSP_MODE_INPUT) + { + if(ioBuf) { + num_rx_Call_backs++; + edmaRxDone = 1; + }else + rxunderflowcnt++; + }else + dummy_call_backs++; + return; +} + +/* + * This is the application's Global error callback function + */ +void mcbsp_GblErrCallback(uint32_t chanHandle,uint32_t spcr_read,uint32_t Arg3) +{ + MCBSP_log ("Debug(Core %d): ERROR callback called SPCR: %x", coreNum, spcr_read); +} + +/* + * \brief This function demostrates the use of Mcbsp using digital loopback + * communication setup. + * + * \param None + * + * \return None + */ +void mcbspDigLpbkApp(UArg arg0, UArg arg1) +{ + /**< Mcbsp device params */ + Mcbsp_Params mcbspParams; + + /**< Queue to hold the pending packets received from the application */ + Queue_Struct txQueuePendingList, rxQueuePendingList; + /**< Queue to manage floating packets in DMA */ + Queue_Struct txQueueFloatingList, rxQueueFloatingList; + + uint32_t count = 0, tempCount = 0; + int32_t status = 0, retval = 0; + int32_t txChanMode = MCBSP_MODE_OUTPUT; + int32_t rxChanMode = MCBSP_MODE_INPUT; + uint32_t mcbspTxDone = 0, mcbspRxDone = 0; + Mcbsp_IOBuf txFrame[NUM_OF_MCBSP_FRAMES], rxFrame[NUM_OF_MCBSP_FRAMES]; + int txFrameIndex=0, rxFrameIndex=0; + int init_count=0; +#ifdef MCBSP_LOOP_PING_PONG + int pingPongIndex=0; +#endif + + /* Initialize the OSAL */ + if (Osal_dataBufferInitMemory(BUFSIZE) < 0) + { + MCBSP_log ("Debug(Core %d): Error: Unable to initialize the OSAL. \n", coreNum); + return; + } + + /* update EDMA3 handle to channel parameters */ + mcbspChanparamTx.edmaHandle = hEdma[0]; + mcbspChanparamRx.edmaHandle = hEdma[0]; + + /* create the pending and floating queue for the TX channel */ + Queue_construct(&txQueuePendingList, NULL); + Queue_construct(&txQueueFloatingList, NULL); + + /* create the pending and floating queue for the RX channel */ + Queue_construct(&rxQueuePendingList, NULL); + Queue_construct(&rxQueueFloatingList, NULL); + + + mcbspParams = Mcbsp_PARAMS; + mcbspParams.txQPendingList = &txQueuePendingList; + mcbspParams.txQFloatingList = &txQueueFloatingList; + mcbspParams.rxQPendingList = &rxQueuePendingList; + mcbspParams.rxQFloatingList = &rxQueueFloatingList; + + + /* Bind the driver instance with device instance */ + status = mcbspBindDev(&hMcbspDev, coreNum, &mcbspParams); + + if (status != MCBSP_STATUS_COMPLETED) + { + MCBSP_log ("Debug(Core %d): MCBSP LLD Bind Device Failed\n", coreNum); + return; + } + + /* If the user loopjob buffer is in local L2 memory: Convert into Global memory address space */ + if(mcbspChanparamRx.userLoopJobBuffer) + mcbspChanparamRx.userLoopJobBuffer = (void *)Mcbsp_osalLocal2Global(mcbspChanparamRx.userLoopJobBuffer); + + /* Create a RX channel for receiving */ + status = mcbspCreateChan(&hMcbspRxChan, hMcbspDev, MCBSP_MODE_INPUT, &mcbspChanparamRx, mcbspAppCallback, &rxChanMode); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Create Channel (RX) failed\n", coreNum); + return; + } + + /* If the user loopjob buffer is in local L2 memory: Convert into Global memory address space */ + if(mcbspChanparamTx.userLoopJobBuffer) + mcbspChanparamTx.userLoopJobBuffer = Mcbsp_osalLocal2Global(mcbspChanparamTx.userLoopJobBuffer); + + /* Create a TX channel for the transmission */ + status = mcbspCreateChan(&hMcbspTxChan, hMcbspDev, MCBSP_MODE_OUTPUT, &mcbspChanparamTx, mcbspAppCallback, &txChanMode); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Create Channel (TX) failed\n", coreNum); + return; + } + + /* Register mcbsp interrupts */ + //McbspRcvInterrupt_init(hMcbspRxChan); + //McbspXmtInterrupt_init(hMcbspTxChan); + + /* create the buffers required for the TX and RX operations */ + for (count = 0; count < (NUM_BUFS); count++) + { + bufTx[count] = (uint8_t *)Osal_mcbspDataBufferMalloc(BUFSIZE); + bufRx[count] = (uint8_t *)Osal_mcbspDataBufferMalloc(BUFSIZE); + + if (bufTx[count] == NULL) + { + MCBSP_log ("Debug(Core %d): Error: Tx Buffer (%d) Memory Allocation Failed\n", coreNum, count); + return; + } + if (bufRx[count] == NULL) + { + MCBSP_log ("Debug(Core %d): Error: Rx Buffer (%d) Memory Allocation Failed\n", coreNum, count); + return; + } + } +#ifdef MCBSP_LOOP_PING_PONG + /* create the ping pong buffers required for the TX and RX operations */ + for (count = 0; count < (NUM_BUFS); count++) + { + bufRxPingPong[count] = (uint8_t *)Osal_mcbspDataBufferMalloc(BUFSIZE); + bufTxPingPong[count] = (uint8_t *)Osal_mcbspDataBufferMalloc(BUFSIZE); + + if (bufTxPingPong[count] == NULL) + { + MCBSP_log ("Debug(Core %d): Error: Tx Ping pong Buffer (%d) Memory Allocation Failed\n", coreNum, count); + return; + } + if (bufRxPingPong[count] == NULL) + { + MCBSP_log ("Debug(Core %d): Error: Rx Ping pong Buffer (%d) Memory Allocation Failed\n", coreNum, count); + return; + } + } +#endif + /* Fill the buffers with known data and transmit the same and + check if the same pattern is received */ + for (count = 0; count < (NUM_BUFS); count++) + { + memset((uint8_t *)bufTx[count], 0, BUFSIZE); + for (tempCount = 0; tempCount < BUFSIZE; tempCount++) + { + ((uint8_t *)bufTx[count])[tempCount] = (tempCount % 0x100); + } + } + MCBSP_log ("Debug(Core %d): If required to restart set debugCommand variable to %d\n", coreNum, DEBUG_COMMAND_RESTART_CHANNELS); + +restart_mcbsp_point: + txFrameIndex=0; + rxFrameIndex=0; + init_count=0; +#ifdef MCBSP_EXTERNAL_CLOCK + /* Initial loading of ping ping buffers */ + for(init_count =0 ; init_count < INIT_SUBMIT_Q_CNT; init_count++) + { +#ifdef MCBSP_LOOP_PING_PONG + memset((uint8_t *)bufRxPingPong[init_count], 0, BUFSIZE); + + /* RX frame processing */ + rxFrame[rxFrameIndex].cmd = Mcbsp_IOBuf_Cmd_READ; + rxFrame[rxFrameIndex].addr = (void*)bufRxPingPong[init_count]; +#else + memset((uint8_t *)bufRx[init_count], 0, BUFSIZE); + + + /* RX frame processing */ + rxFrame[rxFrameIndex].cmd = Mcbsp_IOBuf_Cmd_READ; + rxFrame[rxFrameIndex].addr = (void*)bufRx[init_count]; +#endif + + rxFrame[rxFrameIndex].size = BUFSIZE; + rxFrame[rxFrameIndex].arg = (uint32_t) hMcbspRxChan; + rxFrame[rxFrameIndex].status = MCBSP_STATUS_COMPLETED; + rxFrame[rxFrameIndex].misc = 1; /* reserved - used in callback to indicate asynch packet */ + + status = mcbspSubmitChan(hMcbspRxChan, (void *)&rxFrame[rxFrameIndex]); + if (status != MCBSP_STATUS_PENDING) + { + MCBSP_log ("Debug(Core %d): Error: RX buffer #%d submission FAILED\n", coreNum, init_count); + retval = 1; + } + else + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): RX buffer #%d is submitted to MCBSP driver\n", coreNum, init_count); +#endif + } + rxFrameIndex++; + rxFrameIndex = (rxFrameIndex >= (NUM_OF_MCBSP_FRAMES)) ? 0 : rxFrameIndex; + + rxSubmitCount++; + + /* TX frame processing */ + txFrame[txFrameIndex].cmd = Mcbsp_IOBuf_Cmd_WRITE; +#ifdef MCBSP_LOOP_PING_PONG + txFrame[txFrameIndex].addr = (void*)bufTxPingPong[init_count]; +#else + txFrame[txFrameIndex].addr = (void*)bufTx[init_count]; +#endif + txFrame[txFrameIndex].size = BUFSIZE; + txFrame[txFrameIndex].arg = (uint32_t)hMcbspTxChan; + txFrame[txFrameIndex].status = MCBSP_STATUS_COMPLETED; + txFrame[txFrameIndex].misc = 1; /* reserved - used in callback to indicate asynch packet */ + + status = mcbspSubmitChan(hMcbspTxChan, (void *)&txFrame[txFrameIndex]); + if (status != MCBSP_STATUS_PENDING) + { + MCBSP_log ("Debug(Core %d): Error: TX buffer #%d submission FAILED\n", coreNum, init_count); + retval = 1; + } + else + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): TX buffer #%d submission is submitted to MCBSP driver\n", coreNum, init_count); +#endif + } + txFrameIndex++; + txFrameIndex = (txFrameIndex >=(NUM_OF_MCBSP_FRAMES)) ? 0 : txFrameIndex; + + txSubmitCount++; + } + + /* Wait for TX and RX processing to complete */ + while (1) + { + if (edmaTxDone == 1) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): EDMA -> Iteration-%d frames are transmitted to TX path\n", coreNum, count); +#endif + edmaTxDone = 0; /* Reset for next iteration */ + mcbspTxDone = 1; + } + if (edmaRxDone == 1) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): EDMA -> Iteration-%d frames are received from RX path\n", coreNum, count); +#endif + edmaRxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 1; + } + if ((mcbspTxDone == 1) && (mcbspRxDone == 1)) + { + mcbspTxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 0; /* Reset for next iteration */ + break; + } + } +#ifdef MCBSP_LOOP_PING_PONG + /* Change ping Pong Index */ + init_count=0; +#endif +#endif /* MCBSP_EXTERNAL_CLOCK */ + + /* Start main loop to iterate through frames */ + while(debugVar) + { + /* submit frames to the driver */ + for (count = init_count; count < NUM_BUFS; count++) + { +#ifdef MCBSP_EXTERNAL_CLOCK +/* With External clock the data coming from the RX side is copied to loop back to the Tx side */ + memcpy((uint8_t *)bufTx[count], (uint8_t *)bufRx[count], BUFSIZE); +#endif +#ifdef MCBSP_LOOP_PING_PONG + memset((uint8_t *)bufRxPingPong[pingPongIndex], 0, BUFSIZE); +#else + memset((uint8_t *)bufRx[count], 0, BUFSIZE); + /* RX frame processing */ + rxFrame[rxFrameIndex].cmd = Mcbsp_IOBuf_Cmd_READ; + rxFrame[rxFrameIndex].addr = (void*)getGlobalAddr(bufRx[count]); + rxFrame[rxFrameIndex].size = BUFSIZE; + rxFrame[rxFrameIndex].arg = (uint32_t) hMcbspRxChan; + rxFrame[rxFrameIndex].status = MCBSP_STATUS_COMPLETED; + rxFrame[rxFrameIndex].misc = 1; /* reserved - used in callback to indicate asynch packet */ + + status = mcbspSubmitChan(hMcbspRxChan, (void *)&rxFrame[rxFrameIndex]); + if (status != MCBSP_STATUS_PENDING) + { + MCBSP_log ("Debug(Core %d): Error: RX buffer #%d submission FAILED\n", coreNum, count); + retval = 1; + } + else + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): RX buffer #%d is submitted to MCBSP driver\n", coreNum, count); +#endif + } + rxFrameIndex++; + rxFrameIndex = (rxFrameIndex >= (NUM_OF_MCBSP_FRAMES)) ? 0 : rxFrameIndex; +#endif + rxSubmitCount++; +#ifdef MCBSP_LOOP_PING_PONG + /* Copy buffer from buffer to ping pong buffer*/ + memcpy((uint8_t *)bufTxPingPong[pingPongIndex], (uint8_t *)bufTx[count],BUFSIZE); +#else + /* TX frame processing */ + txFrame[txFrameIndex].cmd = Mcbsp_IOBuf_Cmd_WRITE; + txFrame[txFrameIndex].addr = (void*)getGlobalAddr(bufTx[count]); + txFrame[txFrameIndex].size = BUFSIZE; + txFrame[txFrameIndex].arg = (uint32_t)hMcbspTxChan; + txFrame[txFrameIndex].status = MCBSP_STATUS_COMPLETED; + txFrame[txFrameIndex].misc = 1; /* reserved - used in callback to indicate asynch packet */ + + status = mcbspSubmitChan(hMcbspTxChan, (void *)&txFrame[txFrameIndex]); + if (status != MCBSP_STATUS_PENDING) + { + MCBSP_log ("Debug(Core %d): Error: TX buffer #%d submission FAILED\n", coreNum, count); + retval = 1; + } + else + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): TX buffer #%d is submitted to MCBSP driver\n", coreNum, count); +#endif + } + txFrameIndex++; + txFrameIndex = (txFrameIndex >= (NUM_OF_MCBSP_FRAMES)) ? 0 : txFrameIndex; +#endif + txSubmitCount++; + + /* Wait for TX and RX processing to complete */ + while (1) + { + if (edmaTxDone == 1) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): EDMA -> Buffer #-%d is transmitted to TX path\n", coreNum, count); +#endif + edmaTxDone = 0; /* Reset for next iteration */ + mcbspTxDone = 1; + } + if (edmaRxDone == 1) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): EDMA -> Buffer #-%d is received from RX path\n", coreNum, count); +#endif + edmaRxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 1; + } + if ((mcbspTxDone == 1) && (mcbspRxDone == 1)) + { + mcbspTxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 0; /* Reset for next iteration */ + break; + } + } +#ifdef MCBSP_LOOP_PING_PONG + /* Change ping Pong Index */ + pingPongIndex=(pingPongIndex)?0:1; + + /* Copy buffer from buffer to other buffer*/ + memcpy((void*)bufRx[count], (uint8_t *)bufRxPingPong[pingPongIndex],BUFSIZE); +#endif + /* compare buffer contents */ + for (tempCount = 0; tempCount < BUFSIZE; tempCount++) + { + if (((char *)bufTx[count])[tempCount] != ((char *)bufRx[count])[tempCount]) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log("Debug(Core %d): Error: TX and RX frame data DOES NOT match in Buffer #-%d\n", + coreNum, count); + MCBSP_log("Debug(Core %d): Error: Buffer index = %d, Tx data = %d, Rx data = %d\n", coreNum, + tempCount, ((char *)bufTx[count])[tempCount], ((char *)bufRx[count])[tempCount]); +#endif + errBuffCount++; + break; + } + } + if (tempCount >= BUFSIZE) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log("Debug(Core %d): TX and RX frames data match in iteration-%d !!!\n", coreNum, count); +#endif + } + } + init_count=0; + num_iterations++; +#ifndef MCBSP_EXTERNAL_CLOCK + if(num_iterations >= NUM_OF_ITERATIONS) + break; +#endif + switch(debugCommand) + { + case DEBUG_COMMAND_RESTART_CHANNELS: + debugCommand=0; + /* Close channel and reopen */ + /* Delete RX channel */ + status = mcbspDeleteChan(hMcbspRxChan); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Delete Channel (RX) failed\n", coreNum); + return; + } + + /* Delete TX channel*/ + status = mcbspDeleteChan(hMcbspTxChan); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Delete Channel (TX) failed\n", coreNum); + return; + } + /* Create a RX channel for receiving */ + status = mcbspCreateChan(&hMcbspRxChan, hMcbspDev, MCBSP_MODE_INPUT, &mcbspChanparamRx, mcbspAppCallback, &rxChanMode); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Create Channel (RX) failed\n", coreNum); + return; + } + + /* Create a TX channel for the transmission */ + status = mcbspCreateChan(&hMcbspTxChan, hMcbspDev, MCBSP_MODE_OUTPUT, &mcbspChanparamTx, mcbspAppCallback, &txChanMode); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Create Channel (TX) failed\n", coreNum); + return; + } + edmaTxDone = 0; /* Reset for next iteration */ + edmaRxDone = 0; /* Reset for next iteration */ + mcbspTxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 0; /* Reset for next iteration */ + goto restart_mcbsp_point; + + default: + debugCommand=0; + break; + + } + + } + + if ((errBuffCount == 0 ) & (retval ==0)) + { + MCBSP_log("Debug(Core %d): MCBSP Digital Loopback Application completed successfully : "\ + "Num iterations %d Num buffers per iteration %d!!!\n", + coreNum, num_iterations, NUM_BUFS); + MCBSP_log("\n All tests have passed \n"); + } + else + { + MCBSP_log("Debug(Core %d): MCBSP Digital Loopback application FAILED : "\ + "Num iterations %d Num buffers per iteration %d Failed buffers %d!!!\n", + coreNum, num_iterations, NUM_BUFS, errBuffCount); + } + + /* Delete RX channel */ + status = mcbspDeleteChan(hMcbspRxChan); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Delete Channel (RX) failed\n", coreNum); + return; + } + + /* Delete TX channel*/ + status = mcbspDeleteChan(hMcbspTxChan); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Delete Channel (TX) failed\n", coreNum); + return; + } + return; +} + +/* + * \brief Void main(Void) + * + * Main function of the sample application. This function calls the + * function to configure the mcbsp instance. + * + * \param None + * + * \return None + */ +#include "ti/sysbios/hal/Cache.h" + +Void main(Void) +{ + Task_Params taskParams; + EDMA3_DRV_Result edmaResult = 0; +#ifdef SIMULATOR_SUPPORT + uint8_t uchValue, uchReadValue; +#endif + + Board_initCfg arg = BOARD_INIT_MODULE_CLOCK | BOARD_INIT_PINMUX_CONFIG | BOARD_INIT_UART_STDIO; + Board_init(arg); + + /* Get the core number. */ + coreNum = 0; //CSL_chipReadReg (CSL_CHIP_DNUM); + +#ifdef SIMULATOR_SUPPORT +#warn MCBSP Digital Loopback example is not supported on SIMULATOR !!! + MCBSP_log ("MCBSP Digital Loopback example is not supported on SIMULATOR. Exiting!\n"); + return; +#else + MCBSP_log ("Debug(Core %d): Running MCBSP Digital Loopback example on the DEVICE\n", coreNum); +#endif + + /* Initialize the system only if the core was configured to do so. */ + if (coreNum == CORE_SYS_INIT) + { +#if 0 + MCBSP_log ("Debug(Core %d): System Initialization for MCBSP\n", coreNum); + /* Read FPGA register */ + if (0 != (platform_fpgaReadConfigReg(MCBSP_FPGA_MISC_REG_OFFSET, &uchReadValue))) + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register READ failed \n", coreNum); + return; + } + /* Clear field for configuration */ + uchValue = (uchReadValue & (~0x3)); +#ifndef PLATFORM_FPGA_MCBSP_AMC_EN + uchValue |= 0x3; +#endif + /* Drive McBSP_AMC_EN# high. Output SLCLKs, TxCLKs, RxCLKs, FSTs, FSRs as Hi-Z. + * These clocks and syncs are tri-stated and McBSP is accessed over 80-pin header */ + if (0 != (platform_fpgaWriteConfigReg(MCBSP_FPGA_MISC_REG_OFFSET, (uchValue)))) + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register WRITE failed \n", coreNum); + return; + } + + /* DEBUG: Verify if FPGA register is configured correctly */ + if (0 != (platform_fpgaReadConfigReg(MCBSP_FPGA_MISC_REG_OFFSET, &uchReadValue))) + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register READ failed \n", coreNum); + return; + } + + if (uchValue != uchReadValue) + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register setting failed \n", coreNum); + return; + } + else + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register is set to %d \n", coreNum, uchValue); + } +#endif + /* MCBSP Driver Initialization: This should always be called before + * invoking the MCBSP Driver. */ + mcbspInit(); + + /* Device Specific MCBSP Initializations */ + McbspDevice_init(); + + /* MCBSP Driver is operational at this time. */ + MCBSP_log ("Debug(Core %d): MCBSP Driver Initialization Done\n", coreNum); + + /* Write to the SHARED memory location at this point in time. The other cores cannot execute + * till the MCBSP Driver is up and running. */ + isMCBSPInitialized[0] = 1; + + /* The MCBSP IP block has been initialized. We need to writeback the cache here because it will + * ensure that the rest of the cores which are waiting for MCBSP to be initialized would now be + * woken up. */ + //CACHE_wbL1d ((void *) &isMCBSPInitialized[0], MCBSP_MAX_CACHE_ALIGN, CACHE_FENCE_WAIT); + Cache_wb ((void *) &isMCBSPInitialized[0], MCBSP_CACHE_LENGTH,0x7fff, 1); + } + else + { + /* All other cores need to wait for the MCBSP to be initialized before they proceed with the test. */ + MCBSP_log ("Debug(Core %d): Waiting for MCBSP to be initialized.\n", coreNum); + + /* All other cores loop around forever till the MCBSP is up and running. + * We need to invalidate the cache so that we always read this from the memory. */ + while (isMCBSPInitialized[0] == 0) + //CACHE_invL1d ((void *) &isMCBSPInitialized[0], MCBSP_MAX_CACHE_ALIGN, CACHE_FENCE_WAIT); + Cache_inv ((void *) &isMCBSPInitialized[0], MCBSP_CACHE_LENGTH, 0x7fff, 1); + + + MCBSP_log ("Debug(Core %d): MCBSP can now be used.\n", coreNum); + } + + /* Initialize EDMA3 library */ + hEdma[0] = edma3init(0, &edmaResult); + + if (edmaResult != EDMA3_DRV_SOK) + { + /* Report EDMA Error */ + MCBSP_log("Debug(Core %d): EDMA Driver Initialization FAILED\n", coreNum); + } + else + { + MCBSP_log("Debug(Core %d): EDMA Driver Initialization Done\n", coreNum); + } + + /* Create the Digital Loopback Application Task */ + Task_Params_init(&taskParams); + Task_create(mcbspDigLpbkApp, &taskParams, NULL); + + /* Start BIOS */ + BIOS_start(); + + return; +} + +/* ========================================================================== */ +/* END OF FILE */ +/* ========================================================================== */ diff --git a/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg b/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg new file mode 100644 index 000000000..c639a820f --- /dev/null +++ b/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg @@ -0,0 +1,80 @@ +/* + * Copyright 2012-2018 by Texas Instruments Incorporated. + * + * All rights reserved. Property of Texas Instruments Incorporated. + * Restricted rights to use, duplicate or disclose this code are + * granted through contract. + * + */ + +/* THIS FILE WAS GENERATED BY ti.sysbios.genx */ + +/* + * ======== mcbspMasterDigLpbk.cfg ======== + * + */ + +/* Load and use the required BIOS packages */ +var BIOS = xdc.useModule('ti.sysbios.BIOS'); +var Task = xdc.useModule('ti.sysbios.knl.Task'); +var cache = xdc.useModule('ti.sysbios.hal.Cache'); +var Idle = xdc.useModule('ti.sysbios.knl.Idle'); +var Queue = xdc.useModule('ti.sysbios.knl.Queue'); +var ECM = xdc.useModule('ti.sysbios.family.c64p.EventCombiner'); +var CpIntc = xdc.useModule('ti.sysbios.family.c66.tci66xx.CpIntc'); +var Memory = xdc.useModule('xdc.runtime.Memory'); +var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem'); + +/* Load and use the System Package */ +var System = xdc.useModule('xdc.runtime.System'); +var SysStd = xdc.useModule('xdc.runtime.SysStd'); + +/* Create a default system heap using ti.bios.HeapMem. */ +var heapMemParams1 = new HeapMem.Params; +heapMemParams1.size = 32768; +heapMemParams1.sectionName = "systemHeap"; +Program.global.heap0 = HeapMem.create(heapMemParams1); + +/* This is the default memory heap. */ +Memory.defaultHeapInstance = Program.global.heap0; + +/* + * Create and install logger for the whole system. + * Enable Event Groups here and registering of ISR for specific GEM INTC is done + * using EventCombiner_dispatchPlug() and Hwi_eventMap() APIs + */ +ECM.eventGroupHwiNum[0] = 7; +ECM.eventGroupHwiNum[1] = 8; +ECM.eventGroupHwiNum[2] = 9; +ECM.eventGroupHwiNum[3] = 10; + +/* Load and use the mcbsp, EDMA, PlatformLib etc. packages */ +var Edma = xdc.loadPackage ("ti.sdo.edma3.drv.sample"); +var drv = xdc.loadPackage ("ti.sdo.edma3.drv"); +var rm = xdc.loadPackage ("ti.sdo.edma3.rm"); + +var devType = "k2g" +var mcbsp = xdc.useModule('ti.drv.mcbsp.Settings'); +mcbsp.deviceType = devType; + +/* Load the uart package */ +var Uart = xdc.loadPackage('ti.drv.uart'); +Uart.Settings.socType = devType; + +var Csl = xdc.useModule('ti.csl.Settings'); +Csl.deviceType = devType; +Csl.libProfile = "release"; + +/* Load the OSAL package */ +var osType = "tirtos" +var Osal = xdc.useModule('ti.osal.Settings'); +Osal.osType = osType; +Osal.socType = devType; + +/* Load the Board package and set the board name */ +var Board = xdc.loadPackage('ti.board'); +Board.Settings.boardName = "evmK2G"; + +/* Circular buffer size for System_printf() */ +System.SupportProxy = SysStd; + diff --git a/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd b/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd new file mode 100644 index 000000000..207553081 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd @@ -0,0 +1,9 @@ +SECTIONS +{ + .init_array: load >> L2SRAM + .mcbsp: load >> L2SRAM + .mcbspSharedMem: load >> L2SRAM + platform_lib: load >> L2SRAM + systemHeap: load >> L2SRAM +} + diff --git a/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c b/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c new file mode 100644 index 000000000..888513df5 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c @@ -0,0 +1,641 @@ +/** + * @file mcbspMasterDigLpbk_osal.c + * + * @brief + * This is the OS abstraction layer and is used by the MCBSP + * driver for the MCBSP Example Digital Loopback Application. + * + * \par + * ============================================================================ + * @n (C) Copyright 2012, Texas Instruments, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * \par +*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if 0 +/* CSL Include Files */ +#include +#include +#include +#include +#endif +/* IPC includes */ +/* #include +#include +#include +#include */ + +/********************************************************************** + ************************** Local Definitions ************************* + **********************************************************************/ + +#define MCBSP_HW_SEM 1 +#define PLATFORM_SPI_HW_SEM 2 /**< SPI BUS arbitration - Used by platform library */ + +#ifdef MCBSP_LOOP_PING_PONG +#define MAX_MEM_MGR_ENTRIES 8 +#else +#define MAX_MEM_MGR_ENTRIES 4 +#endif + +typedef struct MEM_MGMT_ENTRY +{ + uint8_t* ptrMemory; + uint32_t isFree; +}MEM_MGMT_ENTRY; + +MEM_MGMT_ENTRY gDataBufferMemMgr[MAX_MEM_MGR_ENTRIES]; +int32_t gDataBufferMemMgrMaxSize = 0; + +/********************************************************************** + ************************** Global Variables ************************** + **********************************************************************/ +UInt32 malloc_counter = 0; +UInt32 free_counter = 0; + +/********************************************************************** + ************************** Extern Definitions ************************ + **********************************************************************/ + + +/********************************************************************** + **************************** OSAL Functions ************************** + **********************************************************************/ + +/** + * @b Description + * @n + * Utility function which converts a local address to global. + * + * @param[in] addr + * Local address to be converted + * + * @retval + * Global Address + */ +void *Osal_local2Global (void *addr) +{ + UInt32 corenum; + + /* Get the core number. */ + corenum = 0;//CSL_chipReadReg(CSL_CHIP_DNUM); + return addr; + + if(((UInt32)addr & 0xff000000) == 0) { + /* Compute the global address. */ + return ((void *)((UInt32)(addr) + (0x10000000 + (corenum*0x1000000)))); + } + else + return(addr); +} + +/** + * @b Description + * @n + * The function is used to allocate a memory block of the specified size. + * + * @param[in] numBytes + * Number of bytes to be allocated. + * + * @retval + * Allocated block address + */ +Void* Osal_mcbspMalloc(UInt32 numBytes) +{ + Error_Block errorBlock; + Void* ptr; + + /* Increment the allocation counter. */ + malloc_counter++; + + /* Allocate the memory. */ + ptr = Memory_alloc(NULL, numBytes, 0, &errorBlock); + + /* Return the allocated memory block. */ + return ptr; +} + +/** + * @b Description + * @n + * The function is used to clean up a specific memory block and is called + * from the MCBSP Driver. + * + * @param[in] ptr + * Pointer to the memory block to be cleaned up. + * @param[in] size + * Size of the memory block being cleaned up. + * + * @retval + * Not Applicable + */ +Void Osal_mcbspFree (Void* ptr, UInt32 size) +{ + /* Increment the free counter. */ + free_counter++; + Memory_free(NULL, ptr, size); +} + +/** + * @b Description + * @n + * The function is used to allocate a block of memory for all the data buffer + * operations. This function is called by the application. + * + * @param[in] numBuffers + * Number of data buffers + * @param[in] dataBufferSize + * Size of each data buffer + * + * @retval + * Success - 0 + * @retval + * Error - <0 + */ +int32_t Osal_dataBufferInitMemory(uint32_t dataBufferSize) +{ + Error_Block errorBlock; + uint8_t* ptrMemory; + uint32_t index; + + /* Allocate memory for all the data buffers */ + ptrMemory = (uint8_t*)Memory_alloc(NULL, MAX_MEM_MGR_ENTRIES*dataBufferSize, 128, &errorBlock); + if (ptrMemory == NULL) + return -1; + + /* Convert to a global address */ + ptrMemory = Osal_local2Global(ptrMemory); + + /* Now we chop up the memory and add it to the memory manager. */ + for (index = 0; index < MAX_MEM_MGR_ENTRIES; index++) + { + /* Populate the data memory management entry. */ + gDataBufferMemMgr[index].isFree = 1; + gDataBufferMemMgr[index].ptrMemory = ptrMemory; + + /* Increment the memory to the next address */ + ptrMemory = ptrMemory + dataBufferSize; + } + + /* Remember the memory buffer size */ + gDataBufferMemMgrMaxSize = dataBufferSize; + + /* Memory Manager has been created. */ + return 0; +} + +/** + * @b Description + * @n + * The function is used to allocate a data buffer of the specified + * size. Data buffers should always be allocated from the global + * address space. + * + * @param[in] numBytes + * Number of bytes to be allocated. + * + * @retval + * Allocated block address + */ +Void* Osal_mcbspDataBufferMalloc(UInt32 numBytes) +{ + uint32_t index; + void* ptrMemory = NULL; + + /* Basic Validation: Ensure that the memory size requested is within range. */ + if (numBytes > gDataBufferMemMgrMaxSize) + return NULL; + + /* Increment the allocation counter. */ + malloc_counter++; + + /* Lock out interrupts */ + Hwi_disable(); + + /* Cycle through for a free entry. */ + for (index = 0; index < MAX_MEM_MGR_ENTRIES; index++) + { + /* Check if the entry is free or not? */ + if (gDataBufferMemMgr[index].isFree == 1) + { + /* Entry was free. We can use it. */ + ptrMemory = gDataBufferMemMgr[index].ptrMemory; + + /* Mark the entry as used. */ + gDataBufferMemMgr[index].isFree = 0; + + /* We have found a match. */ + break; + } + } + + /* Unlock interrupts. */ + Hwi_enable(); + + /* Return the allocated memory. */ + return ptrMemory; +} + +/** + * @b Description + * @n + * The function is used to clean up a previously allocated data buffer + * block. All data buffers are in the global address space + * + * @param[in] ptr + * Pointer to the data buffer block to be cleaned up + * @param[in] size + * Size of the data buffer + * + * @retval + * Not Applicable + */ +void Osal_mcbspDataBufferFree(void* ptr, uint32_t numBytes) +{ + uint32_t index; + + /* Increment the free counter. */ + free_counter++; + + /* Lock out interrupts */ + Hwi_disable(); + + /* Cycle through and clean up */ + for (index = 0; index < MAX_MEM_MGR_ENTRIES; index++) + { + /* Check if the entry is free or not? */ + if (gDataBufferMemMgr[index].ptrMemory == (uint8_t*)ptr) + { + /* Mark the entry as free. */ + gDataBufferMemMgr[index].isFree = 1; + + /* We have found a match. */ + break; + } + } + + /* Unlock interrupts. */ + Hwi_enable(); + return; +} + +/** + * @b Description + * @n + * The function is the MCBSP OSAL Logging API which logs + * the messages on the console. + * + * @param[in] fmt + * Formatted String. + * + * @retval + * Not Applicable + */ +Void Osal_mcbspLog( String fmt, ... ) +{ +} + +/** + * @b Description + * @n + * The function is used to create a critical section. + * + * @retval + * Semaphore Handle created + */ +Void* Osal_mcbspCreateSem(Void) +{ + return (Void*)Semaphore_create(0, NULL, NULL); +} + +/** + * @b Description + * @n + * The function is used to delete a critical section. + * + * @param[in] semHandle + * Semaphore handle to be deleted + * + * @retval + * Not Applicable + */ +Void Osal_mcbspDeleteSem(Void* semHandle) +{ + Semaphore_delete(semHandle); +} + +/** + * @b Description + * @n + * The function is used to pend on a semaphore + * + * @param[in] semHandle + * Semaphore handle on which the API will pend + * + * @retval + * Not Applicable + */ +Void Osal_mcbspPendSem(Void* semHandle) +{ + Semaphore_pend(semHandle, BIOS_WAIT_FOREVER); +} + +/** + * @b Description + * @n + * The function is used to post a semaphore + * + * @param[in] semHandle + * Semaphore handle which will be posted + * + * @retval + * Not Applicable + */ +Void Osal_mcbspPostSem(Void* semHandle) +{ + Semaphore_post(semHandle); +} + +/** + * @b Description + * @n + * This is the Multicore OSAL Implementation to protect the driver shared + * resources across multiple cores. + * + * @retval + * Semaphore Opaque Handle + */ +void* Osal_mcbspEnterMultipleCoreCriticalSection(void) +{ + /* Get the hardware semaphore */ + // while ((CSL_semAcquireDirect (MCBSP_HW_SEM)) == 0); + return NULL; +} + +/** + * @b Description + * @n + * The function is called to end the critical section which was protecting + * shared resources from access across multiple cores. + * + * @param[in] critSectHandle + * Semaphore opaque handle. + * + * @retval + * None + */ +Void Osal_mcbspExitMultipleCoreCriticalSection(Void* critSectHandle) +{ + //CSL_semReleaseSemaphore (MCBSP_HW_SEM); +} + +/** + * @b Description + * @n + * The function is used to provide critical section to prevent access of shared + * resources from single core and multiple threads. + * + * @param[in] drvHandle + * Driver Handle which needs critical section to protect its resources. + * + * @retval + * Opaque handle + */ +Void* Osal_mcbspEnterSingleCoreCriticalSection() +{ + /* Disable interrupts */ + return (Void*)Hwi_disable(); +} + +/** + * @b Description + * @n + * The function is called to end the critical section access of shared resources + * from single cores. + * + * @param[in] drvHandle + * Driver Handle which needed critical section to protect its resources. + * @param[in] critSectHandle + * Opaque handle retreived when the Single Core Protection Enter API was called + * + * @retval + * Not Applicable. + */ +Void Osal_mcbspExitSingleCoreCriticalSection(Void* critSectHandle) +{ + /* Driver Managed Configuration: We need to enable interrupts. */ + Hwi_enable(); +} + +/** + * @b Description + * @n + * The function is used by the MCBSP driver to indicate that + * its about to access a block of memory and we need to ensure + * that the cache contents for this block are invalidated before + * we try and use it. + * + * @param[in] ptr + * Pointer to the buffer which is being accessed + * @param[in] size + * Size of the buffer which is to be accessed. + * + * @retval + * None + */ +#include "ti/sysbios/hal/Cache.h" +void Osal_mcbspBeginMemAccess(void* ptr, uint32_t size) +{ + UInt key; + + /* Disable Interrupts */ + key = Hwi_disable(); + + /* Cleanup the prefetch buffer also. */ + //CSL_XMC_invalidatePrefetchBuffer(); + + /* Invalidate the cache. */ + //CACHE_invL1d (ptr, size, CACHE_FENCE_WAIT); + + Cache_inv ((void *) ptr,size, 0x7fff, 1); + + /* Reenable Interrupts. */ + Hwi_restore(key); +} + +/** + * @b Description + * @n + * The function is used by the MCBSP driver to indicate that its + * ending access to a block of memory. We need to ensure that the + * contents of the cache are written back to the actual memory. + * + * @param[in] ptr + * Pointer to the buffer + * @param[in] size + * Size of the buffer + * + * @retval + * None + */ +void Osal_mcbspEndMemAccess(void* ptr, uint32_t size) +{ + UInt key; + + /* Disable Interrupts */ + key = Hwi_disable(); + + /* Writeback the cache. */ + //CACHE_wbL1d (ptr, size, CACHE_FENCE_WAIT); + Cache_wb ((void *) ptr,size, 0x7fff, 1); + /* Reenable Interrupts. */ + Hwi_restore(key); +} + +/** + * @brief The function is used by the MCBSP driver to test for an + * empty queue. + * + * Parameter + * @n handle - Handle of a previously created Queue instance object + * + * Return Value + * @n TRUE - If the queue is empty + */ +Bool Osal_mcbspQueueEmpty(void* handle) +{ + return Queue_empty(handle); +} + +/** + * @brief The macro is used by the MCBSP driver to get an + * element from the front of queue. The function + * removes the element from the front of queue and + * returns a pointer to it. + * + * Parameter + * @n handle - Handle of a previously created Queue instance object + * + * Return Value + * @n Handle (pointer) to former first element + */ +void* Osal_mcbspQueueGet(void* handle) +{ + return Queue_get(handle); +} + +/** + * @brief The macro is used by the MCBSP driver to put an + * element at the end of queue. + * + * Parameter + * @n handle - Handle of a previously created Queue instance object + * @n elem - Pointer to new queue element + * + * Return Value + * @n None + */ +void Osal_mcbspQueuePut(void* handle, Mcbsp_QueueElem* elem) +{ + Queue_put(handle, (Queue_Elem *)elem); + return; +} + +/** + * @brief The macro is used by the MCBSP driver to wait 'n' + * bit clocks to ensure proper synchronization internally. + * + * Parameter + * @n nticks - Number of bit clocks to wait + * + * Return Value + * @n None + */ +void Osal_mcbspWaitNBitClocks(uint32_t nticks) +{ + //Task_sleep(nticks); + int i=0; + for (i=0; i<100; i++); + return; +} + +/* OSAL functions for Platform Library */ +uint8_t *Osal_platformMalloc (uint32_t num_bytes, uint32_t alignment) +{ + return malloc(num_bytes); +} + +void Osal_platformFree (uint8_t *dataPtr, uint32_t num_bytes) +{ + /* Free up the memory */ + if (dataPtr) + { + free(dataPtr); + } +} + +void Osal_platformSpiCsEnter(void) +{ + /* Get the hardware semaphore. + * + * Acquire Multi core CPPI synchronization lock + */ + //while ((CSL_semAcquireDirect (PLATFORM_SPI_HW_SEM)) == 0); + + return; +} + +void Osal_platformSpiCsExit (void) +{ + /* Release the hardware semaphore + * + * Release multi-core lock. + */ + //CSL_semReleaseSemaphore (PLATFORM_SPI_HW_SEM); + + return; +} diff --git a/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/sample_k2g_cfg.c b/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/sample_k2g_cfg.c new file mode 100644 index 000000000..36e4e45b8 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/k2g/MCBSPDigLpbk/sample_k2g_cfg.c @@ -0,0 +1,1217 @@ +/* + * sample_galileo_cfg.c + * + * Platform specific EDMA3 hardware related information like number of transfer + * controllers, various interrupt ids etc. It is used while interrupts + * enabling / disabling. It needs to be ported for different SoCs. + * + * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#include + +/* Number of EDMA3 controllers present in the system */ +#define NUM_EDMA3_INSTANCES 2u +const unsigned int numEdma3Instances = NUM_EDMA3_INSTANCES; + +/* Number of DSPs present in the system */ +#define NUM_DSPS 1u +//const unsigned int numDsps = NUM_DSPS; + +#define CGEM_REG_START (0x01800000) + + +extern cregister volatile unsigned int DNUM; + +#define MAP_LOCAL_TO_GLOBAL_ADDR(addr) ((1<<28)|(DNUM<<24)|(((unsigned int)addr)&0x00ffffff)) + + +/* Determine the processor id by reading DNUM register. */ +unsigned short determineProcId() + { + volatile unsigned int *addr; + unsigned int core_no; + + /* Identify the core number */ + addr = (unsigned int *)(CGEM_REG_START+0x40000); + core_no = ((*addr) & 0x000F0000)>>16; + + return core_no; + } + +signed char* getGlobalAddr(signed char* addr) +{ + if (((unsigned int)addr & (unsigned int)0xFF000000) != 0) + { + return (addr); /* The address is already a global address */ + } + + return((signed char*)(MAP_LOCAL_TO_GLOBAL_ADDR(addr))); +} +/** Whether global configuration required for EDMA3 or not. + * This configuration should be done only once for the EDMA3 hardware by + * any one of the masters (i.e. DSPs). + * It can be changed depending on the use-case. + */ +unsigned int gblCfgReqdArray [NUM_DSPS] = { + 0, /* DSP#0 is Master, will do the global init */ + + }; + +unsigned short isGblConfigRequired(unsigned int dspNum) + { + return gblCfgReqdArray[dspNum]; + } + +/* Semaphore handles */ +EDMA3_OS_Sem_Handle semHandle[NUM_EDMA3_INSTANCES] = {NULL,NULL}; + + +/* Variable which will be used internally for referring number of Event Queues. */ +unsigned int numEdma3EvtQue[NUM_EDMA3_INSTANCES] = {2u, 2u}; + +/* Variable which will be used internally for referring number of TCs. */ +unsigned int numEdma3Tc[NUM_EDMA3_INSTANCES] = {2u, 2u}; + +/** + * Variable which will be used internally for referring transfer completion + * interrupt. Completion interrupts for all the shadow regions and all the + * EDMA3 controllers are captured since it is a multi-DSP platform. + */ +unsigned int ccXferCompInt[NUM_EDMA3_INSTANCES][EDMA3_MAX_REGIONS] = { + { + 0x88, 0x89, 0x8a, 0x8b, + 0x8c, 0x8d, 0x8e, 0x8f, + }, + { + 0x90, 0x91, 0x92, 0x93, + 0x94, 0x95, 0x96, 0x97, + }, + }; + +/** + * Variable which will be used internally for referring channel controller's + * error interrupt. + */ +unsigned int ccErrorInt[NUM_EDMA3_INSTANCES] = {0x99, 0x9c}; + +/** + * Variable which will be used internally for referring transfer controllers' + * error interrupts. + */ +unsigned int tcErrorInt[NUM_EDMA3_INSTANCES][EDMA3_MAX_TC] = { + { + 0xA0,0xA1, 0u, 0u, + 0u, 0u, 0u, 0u, + }, + { + 0xA4, 0xA5, 0u, 0u, + 0u, 0u, 0u, 0u, + }, + }; + +/* Driver Object Initialization Configuration */ +EDMA3_RM_GblConfigParams sampleEdma3GblCfgParams[NUM_EDMA3_INSTANCES] = + { + { + /* EDMA3 INSTANCE# 0 */ + /** Total number of DMA Channels supported by the EDMA3 Controller */ + 64u, + /** Total number of QDMA Channels supported by the EDMA3 Controller */ + 8u, + /** Total number of TCCs supported by the EDMA3 Controller */ + 64u, + /** Total number of PaRAM Sets supported by the EDMA3 Controller */ + 512u, + /** Total number of Event Queues in the EDMA3 Controller */ + 2u, + /** Total number of Transfer Controllers (TCs) in the EDMA3 Controller */ + 2u, + /** Number of Regions on this EDMA3 controller */ + 8u, + + /** + * \brief Channel mapping existence + * A value of 0 (No channel mapping) implies that there is fixed association + * for a channel number to a parameter entry number or, in other words, + * PaRAM entry n corresponds to channel n. + */ + 1u, + + /** Existence of memory protection feature */ + 1u, + + /** Global Register Region of CC Registers */ + (void *)0x02700000u, + /** Transfer Controller (TC) Registers */ + { + (void *)0x02760000u, + (void *)0x02768000u, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + }, + /** Interrupt no. for Transfer Completion */ + 0x88, + /** Interrupt no. for CC Error */ + 0x99, + /** Interrupt no. for TCs Error */ + { + 0xA0, + 0xA1, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u, + }, + + /** + * \brief EDMA3 TC priority setting + * + * User can program the priority of the Event Queues + * at a system-wide level. This means that the user can set the + * priority of an IO initiated by either of the TCs (Transfer Controllers) + * relative to IO initiated by the other bus masters on the + * device (ARM, DSP, USB, etc) + */ + { + 0u, + 1u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u, + }, + /** + * \brief To Configure the Threshold level of number of events + * that can be queued up in the Event queues. EDMA3CC error register + * (CCERR) will indicate whether or not at any instant of time the + * number of events queued up in any of the event queues exceeds + * or equals the threshold/watermark value that is set + * in the queue watermark threshold register (QWMTHRA). + */ + { + 16u, + 16u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u, + }, + + /** + * \brief To Configure the Default Burst Size (DBS) of TCs. + * An optimally-sized command is defined by the transfer controller + * default burst size (DBS). Different TCs can have different + * DBS values. It is defined in Bytes. + */ + { + 128u, + 128u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u, + }, + + /** + * \brief Mapping from each DMA channel to a Parameter RAM set, + * if it exists, otherwise of no use. + */ + { + 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, + 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, + 16u, 17u, 18u, 19u, 20u, 21u, 22u, 23u, + 24u, 25u, 26u, 27u, 28u, 29u, 30u, 31u, + 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, + 40u, 41u, 42u, 43u, 44u, 45u, 46u, 47u, + 48u, 49u, 50u, 51u, 52u, 53u, 54u, 55u, + 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u, + }, + + /** + * \brief Mapping from each DMA channel to a TCC. This specific + * TCC code will be returned when the transfer is completed + * on the mapped channel. + */ + { + 0u, 1u, 2u, EDMA3_RM_CH_NO_TCC_MAP, 4u, 5u, 6u, EDMA3_RM_CH_NO_TCC_MAP, + 8u, 9u, 10u, EDMA3_RM_CH_NO_TCC_MAP, 12u, 13u, 14u, EDMA3_RM_CH_NO_TCC_MAP, + 16u, 17u, 18u, EDMA3_RM_CH_NO_TCC_MAP, 20u, 21u, 22u, EDMA3_RM_CH_NO_TCC_MAP, + 24u, 25u, 26u, 27u, 28u, 29u, 30u, EDMA3_RM_CH_NO_TCC_MAP, + 32u, 33u, 34u, 35u, 36u, 37u, 38u, EDMA3_RM_CH_NO_TCC_MAP, + 40u, 41u, 42u, EDMA3_RM_CH_NO_TCC_MAP, 44u, 45u, 46u, EDMA3_RM_CH_NO_TCC_MAP, + 48u, 49u, 50u, 51u, 52u, 53u, 54u, EDMA3_RM_CH_NO_TCC_MAP, + 56u, 57u, 58u, 59u, 60u, 61u, 62u, EDMA3_RM_CH_NO_TCC_MAP + }, + + /** + * \brief Mapping of DMA channels to Hardware Events from + * various peripherals, which use EDMA for data transfer. + * All channels need not be mapped, some can be free also. + */ + { + 0x0F000000u, + 0x0000000Fu + } + }, + + { + /* EDMA3 INSTANCE# 1 */ + /** Total number of DMA Channels supported by the EDMA3 Controller */ + 64u, + /** Total number of QDMA Channels supported by the EDMA3 Controller */ + 8u, + /** Total number of TCCs supported by the EDMA3 Controller */ + 64u, + /** Total number of PaRAM Sets supported by the EDMA3 Controller */ + 512u, + /** Total number of Event Queues in the EDMA3 Controller */ + 2u, + /** Total number of Transfer Controllers (TCs) in the EDMA3 Controller */ + 2u, + /** Number of Regions on this EDMA3 controller */ + 8u, + + /** + * \brief Channel mapping existence + * A value of 0 (No channel mapping) implies that there is fixed association + * for a channel number to a parameter entry number or, in other words, + * PaRAM entry n corresponds to channel n. + */ + 1u, + + /** Existence of memory protection feature */ + 1u, + + /** Global Register Region of CC Registers */ + (void *)0x02728000U, + /** Transfer Controller (TC) Registers */ + { + (void *)0x027b0000U, + (void *)0x027b8000U, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + }, + /** Interrupt no. for Transfer Completion */ + 0x90, + /** Interrupt no. for CC Error */ + 0x9c, + /** Interrupt no. for TCs Error */ + { + 0xA2, + 0xA3, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u, + }, + + /** + * \brief EDMA3 TC priority setting + * + * User can program the priority of the Event Queues + * at a system-wide level. This means that the user can set the + * priority of an IO initiated by either of the TCs (Transfer Controllers) + * relative to IO initiated by the other bus masters on the + * device (ARM, DSP, USB, etc) + */ + { + 0u, + 1u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + /** + * \brief To Configure the Threshold level of number of events + * that can be queued up in the Event queues. EDMA3CC error register + * (CCERR) will indicate whether or not at any instant of time the + * number of events queued up in any of the event queues exceeds + * or equals the threshold/watermark value that is set + * in the queue watermark threshold register (QWMTHRA). + */ + { + 16u, + 16u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + + /** + * \brief To Configure the Default Burst Size (DBS) of TCs. + * An optimally-sized command is defined by the transfer controller + * default burst size (DBS). Different TCs can have different + * DBS values. It is defined in Bytes. + */ + { + 64u, + 64u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + + /** + * \brief Mapping from each DMA channel to a Parameter RAM set, + * if it exists, otherwise of no use. + */ + { + 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, + 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, + 16u, 17u, 18u, 19u, 20u, 21u, 22u, 23u, + 24u, 25u, 26u, 27u, 28u, 29u, 30u, 31u, + 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, + 40u, 41u, 42u, 43u, 44u, 45u, 46u, 47u, + 48u, 49u, 50u, 51u, 52u, 53u, 54u, 55u, + 56u, 57u, 58u, 59u, 60u, 61u, 62u, 63u + }, + + /** + * \brief Mapping from each DMA channel to a TCC. This specific + * TCC code will be returned when the transfer is completed + * on the mapped channel. + */ + { + 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, + 8u, 9u, 10u, 11u, 12u, 13u, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + 16u, 17u, 18u, 19u, 20u, 21u, 22u, 23u, + 24u, 25u, 26u, 27u, 28u, 29u, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + 32u, 33u, 34u, 35u, 36u, 37u, 38u, 39u, + 40u, 41u, 42u, 43u, 44u, 45u, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + 48u, 49u, 50u, 51u, 52u, 53u, 54u, 55u, + 56u, 57u, 58u, 59u, 60u, 61u, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP + }, + + /** + * \brief Mapping of DMA channels to Hardware Events from + * various peripherals, which use EDMA for data transfer. + * All channels need not be mapped, some can be free also. + */ + { + 0x00000000u, + 0xFFF00000u + } + }, + + }; + +EDMA3_RM_InstanceInitConfig sampleInstInitConfig[NUM_EDMA3_INSTANCES][EDMA3_MAX_REGIONS] = + { + /* EDMA3 INSTANCE# 0 */ + { + /* Resources owned/reserved by region 0 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0xFFFF000Fu, 0x00000FFFu, 0x00000000u, 0x00000FFFu, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x0f00000Fu, 0x0000000Fu}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000003u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x0f00000Fu, 0x000000FFu}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000003u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* resvdDmaChannels */ + /* 31 0 */ + {0x00000003u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 */ + {0x00000003u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 1 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x000000F0u, 0xFFFFF000u, 0x000000FFu, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x000000F0u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x0000000Cu}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x000000F0u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000030u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000030u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000030u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 2 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000F00u, 0x00000000u, 0xFFFFFF00u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000F00u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000030u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000F00u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000300u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000300u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000300u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 3 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0xFFFFF000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x0000F000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x000000C0u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x0000F000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00003000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00003000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00003000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 4 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 5 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 6 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 7 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + }, + + /* EDMA3 INSTANCE# 1 */ + { + /* Resources owned/reserved by region 0 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000FFFFu, 0x00F00000u, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 159 128 191 160 223 192 255 224 */ + 0xFFFFFFFFu, 0x0000FFFFu, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x0000FFFFu, 0x00F00000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000003u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x0000FFFFu, 0x00F00000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00003FFFu, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00003FFFu, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00003FFFu, 0x00000000u}, + }, + + /* Resources owned/reserved by region 1 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0xFFFF0000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0xFFFF0000u, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 287 256 319 288 351 320 383 352 */ + 0xFFFFFFFFu, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0xFFFF0000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x0000000Cu}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0xFFFF0000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x3FFF0000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x3FFF0000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x3FFF0000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 2 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x0000FFFFu, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 415 384 447 416 479 448 511 480 */ + 0x0000FFFFu, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x0000FFFFu}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000030u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x0000FFFFu}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00003FFFu, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00003FFFu}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00003FFFu}, + }, + + /* Resources owned/reserved by region 3 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0xFFFF0000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0xFFFF0000u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu,}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0xFFFF0000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x000000C0u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0xFFFF0000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x3FFF0000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x3FFF0000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x3FFF0000u}, + }, + + /* Resources owned/reserved by region 4 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 5 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 6 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 7 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + }, + }; + +/* End of File */ diff --git a/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/MCBSP_DigLpbk_lcdkOMAPL138_c674xExampleProject.txt b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/MCBSP_DigLpbk_lcdkOMAPL138_c674xExampleProject.txt new file mode 100644 index 000000000..6ef721e68 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/MCBSP_DigLpbk_lcdkOMAPL138_c674xExampleProject.txt @@ -0,0 +1,11 @@ +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk.c" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/device/omapl138/src/device_mcbsp_loopback.c" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_omapl138_cfg.c" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_omapl138_int_reg.c" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_cs.c" +-ccs.linkFile "${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_init.c" + +-ccs.setCompilerOptions "-mv6740 --abi=eabi -g --define=SOC_OMAPL138 --define=LCDK_OMAPL138 -DMCBSP_DEBUG_TEMP -mv6740 -g --diag_warning=225 -I${PDK_INSTALL_PATH} -I${BIOS_INSTALL_PATH}/packages -I${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk -I${PDK_INSTALL_PATH}/ti/drv/mcbsp/example/include -I${PDK_INSTALL_PATH}/ti/drv/mcbsp/include -I${PDK_INSTALL_PATH}/ti/drv/mcbsp -I${PDK_INSTALL_PATH}/ti/board" -rtsc.enableRtsc diff --git a/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/bios6_edma3_drv_sample.h b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/bios6_edma3_drv_sample.h new file mode 100644 index 000000000..5fad8a74a --- /dev/null +++ b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/bios6_edma3_drv_sample.h @@ -0,0 +1,186 @@ +/* + * bios6_edma3_drv_sample.h + * + * Header file for the sample application for the EDMA3 Driver. + * + * Copyright (C) 2009-2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#ifndef _BIOS6_EDMA3_DRV_SAMPLE_H_ +#define _BIOS6_EDMA3_DRV_SAMPLE_H_ + +#include +#include + +/* Include EDMA3 Driver */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Cache line size on the underlying SoC. It needs to be modified + * for different cache line sizes, if the Cache is Enabled. + */ +#define EDMA3_CACHE_LINE_SIZE_IN_BYTES (128u) + +/* Error returned in case of buffers are not aligned on the cache boundary */ +#define EDMA3_NON_ALIGNED_BUFFERS_ERROR (-1) + +/* Error returned in case of data mismatch */ +#define EDMA3_DATA_MISMATCH_ERROR (-2) + +/** + * \brief EDMA3 Initialization + * + * This function initializes the EDMA3 Driver for the given EDMA3 controller + * and opens a EDMA3 driver instance. It internally calls EDMA3_DRV_create() and + * EDMA3_DRV_open(), in that order. + * + * It also registers interrupt handlers for various EDMA3 interrupts like + * transfer completion or error interrupts. + * + * \param edma3Id [IN] EDMA3 Controller Instance Id (Hardware + * instance id, starting from 0) + * \param errorCode [IN/OUT] Error code while opening DRV instance + * \return EDMA3_DRV_Handle: If successfully opened, the API will return the + * associated driver's instance handle. + */ +EDMA3_DRV_Handle edma3init (unsigned int edma3Id, EDMA3_DRV_Result *errorCode); + +/** + * \brief EDMA3 De-initialization + * + * This function de-initializes the EDMA3 Driver for the given EDMA3 controller + * and closes the previously opened EDMA3 driver instance. It internally calls + * EDMA3_DRV_close and EDMA3_DRV_delete(), in that order. + * + * It also un-registers the previously registered interrupt handlers for various + * EDMA3 interrupts. + * + * \param edma3Id [IN] EDMA3 Controller Instance Id (Hardware + * instance id, starting from 0) + * \param hEdma [IN] EDMA3 Driver handle, returned while using + * edma3init(). + * \return EDMA3_DRV_SOK if success, else error code + */ +EDMA3_DRV_Result edma3deinit (unsigned int edma3Id, EDMA3_DRV_Handle hEdma); + + +/** + * \brief EDMA3 Cache Invalidate + * + * This function invalidates the D cache. + * + * \param mem_start_ptr [IN] Starting address of memory. + * Please note that this should be + * aligned according to the cache line size. + * \param num_bytes [IN] length of buffer + * \return EDMA3_DRV_SOK if success, else error code in case of error + * or non-alignment of buffers. + * + * Note: This function is required if the buffer is in DDR. + * For other cases, where buffer is NOT in DDR, user + * may or may not require the below implementation and + * should modify it according to her need. + */ +EDMA3_DRV_Result Edma3_CacheInvalidate(unsigned int mem_start_ptr, + unsigned int num_bytes); + + + +/** + * \brief EDMA3 Cache Flush + * + * This function flushes (cleans) the Cache + * + * \param mem_start_ptr [IN] Starting address of memory. + * Please note that this should be + * aligned according to the cache line size. + * \param num_bytes [IN] length of buffer + * \return EDMA3_DRV_SOK if success, else error code in case of error + * or non-alignment of buffers. + * + * Note: This function is required if the buffer is in DDR. + * For other cases, where buffer is NOT in DDR, user + * may or may not require the below implementation and + * should modify it according to her need. + */ +EDMA3_DRV_Result Edma3_CacheFlush(unsigned int mem_start_ptr, + unsigned int num_bytes); + + + +/** + * Counting Semaphore related functions (OS dependent) should be + * called/implemented by the application. A handle to the semaphore + * is required while opening the driver/resource manager instance. + */ + +/** + * \brief EDMA3 OS Semaphore Create + * + * This function creates a counting semaphore with specified + * attributes and initial value. It should be used to create a semaphore + * with initial value as '1'. The semaphore is then passed by the user + * to the EDMA3 driver/RM for proper sharing of resources. + * \param initVal [IN] is initial value for semaphore + * \param semParams [IN] is the semaphore attributes. + * \param hSem [OUT] is location to receive the handle to just created + * semaphore. + * \return EDMA3_DRV_SOK if successful, else a suitable error code. + */ +EDMA3_DRV_Result edma3OsSemCreate(int initVal, + const Semaphore_Params *semParams, + EDMA3_OS_Sem_Handle *hSem); + + + +/** + * \brief EDMA3 OS Semaphore Delete + * + * This function deletes or removes the specified semaphore + * from the system. Associated dynamically allocated memory + * if any is also freed up. + * \param hSem [IN] handle to the semaphore to be deleted + * \return EDMA3_DRV_SOK if successful else a suitable error code + */ +EDMA3_DRV_Result edma3OsSemDelete(EDMA3_OS_Sem_Handle hSem); + +#ifdef __cplusplus +} +#endif /* extern "C" */ + +#endif /* _BIOS6_EDMA3_DRV_SAMPLE_H_ */ + diff --git a/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk.c b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk.c new file mode 100644 index 000000000..86516a1d5 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk.c @@ -0,0 +1,978 @@ +/* + * mcbspMasterDigLpbk.c + * + * This file contains the test / demo code to demonstrate the McBSP driver + * master functionality using Digital Loopback setup. The file configures + * the EVM in master mode. + * + * Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +/* ========================================================================== */ +/* INCLUDE FILES */ +/* ========================================================================== */ + +#include +#include +#include +#include +#include +#include + +#include + +/* Include EDMA3 Driver */ +#include + +/* CSL Chip Functional Layer */ +//#include + +/* CSL Cache Functional Layer */ +//#include + +/* CSL CPINTC Include Files. */ +//#include + +/* MCBSP Driver Include File. */ +#include +#include +#include +#include + +/* PlatformLib Include File */ +//#include + + +/* ========================================================================== */ +/* EXTERNAL FUNCTIONS */ +/* ========================================================================== */ + +extern EDMA3_DRV_Handle edma3init(unsigned int edma3Id, EDMA3_DRV_Result *); + +extern void McbspDevice_init(void); + +extern int32_t Osal_dataBufferInitMemory(uint32_t dataBufferSize); + +extern void McbspXmtInterrupt_init(void *mcbspTxChan); +extern void McbspRcvInterrupt_init(void *mcbspRxChan); + +extern Board_STATUS Board_init(Board_initCfg); + +/* FPGA Configuration Misc-1 Register offset */ +#define MCBSP_FPGA_MISC_REG_OFFSET (0x0C) + +/* ========================================================================== */ +/* MACRO DEFINTIONS */ +/* ========================================================================== */ + +#define NUM_BUFS 2 /* Max of buffers used in each direction */ +#define FRAMESIZE 40 /* e.g 5 ms 8 KHz samples */ +#define NUM_OF_ENABLED_CHANNELS 8 /* Number of slots to be used */ +#define NUM_OF_MAX_CHANNELS 128 /* Maximum number of time slots available based on clock settings */ +#define BUFSIZE (NUM_OF_ENABLED_CHANNELS * FRAMESIZE) /* Total buffer size per frame */ + +/* Defines the core number responsible for system initialization. */ +#define CORE_SYS_INIT 0 +/* Number of iterations to execute test: Only applicable to INTERNAL CLOCK Loopback test */ +#define NUM_OF_ITERATIONS 10 + +/* Number of MCBSP Frame structures used for submit channel */ +#define NUM_OF_MCBSP_FRAMES 2 + +/* Number of buffers initially submitted to Mcbsp lld: Only applicable to + External clock test ; Note: This should be set to 2*/ +#define INIT_SUBMIT_Q_CNT 2 + +/*============================================================================*/ +/* GLOBAL VARIABLES */ +/*============================================================================*/ + +/* Shared Memory Variable to ensure synchronizing MCBSP initialization + * with all the other cores. */ +/* Created an array to pad the cache line with MCBSP_CACHE_LENGTH size */ +#pragma DATA_ALIGN (isMCBSPInitialized, MCBSP_MAX_CACHE_ALIGN) +#pragma DATA_SECTION (isMCBSPInitialized, ".mcbspSharedMem"); +volatile Uint32 isMCBSPInitialized[(MCBSP_CACHE_LENGTH / sizeof(Uint32))] = { 0 }; + +/* Handle to the EDMA driver instance */ +#pragma DATA_ALIGN (hEdma, MCBSP_MAX_CACHE_ALIGN) +EDMA3_DRV_Handle hEdma[(MCBSP_CACHE_LENGTH / sizeof(EDMA3_DRV_Handle))] = { NULL }; + +/* Handle to MCBSP driver instance */ +typedef void* Mcbsp_DevHandle; +Mcbsp_DevHandle hMcbspDev; + +/* Handle to MCBSP driver channel instance */ +typedef void* Mcbsp_ChanHandle; +Mcbsp_ChanHandle hMcbspTxChan; +Mcbsp_ChanHandle hMcbspRxChan; + +/* Core Number Identifier */ +UInt32 coreNum = 0xFFFF; + +/* Array to hold the pointer to the allocated buffers */ +void* bufRx[NUM_BUFS]; +void* bufTx[NUM_BUFS]; + +#ifdef MCBSP_LOOP_PING_PONG +/* Ping pong buffers used to submit to Mcbsp lld, which will be used in a loop */ +void* bufRxPingPong[INIT_SUBMIT_Q_CNT]; +void* bufTxPingPong[INIT_SUBMIT_Q_CNT]; +#endif +/* Global Error call back function prototype */ +void mcbsp_GblErrCallback(uint32_t chanHandle,uint32_t spcr_read,uint32_t Arg3); + +/* Variables to indicate status of EDMA TX and RX requests */ +volatile uint32_t edmaTxDone = 0; +volatile uint32_t edmaRxDone = 0; +/* Global variables to track number of buffers submitted, number of iterations, error counts etc */ +int rxSubmitCount=0, txSubmitCount=0; +uint32_t num_iterations=0; +uint32_t num_rx_Call_backs=0, num_tx_Call_backs=0, dummy_call_backs=0; +uint32_t rxunderflowcnt=0, txunderflowcnt=0; +uint32_t errBuffCount=0; +/* Debug variables */ +volatile int debugVar=1; /* This can be used to maintain a while loop, If set to 0 will exit loop */ +volatile int debugCommand=1; /* This can be used to set to value below to send command to restart channel */ + +#define DEBUG_COMMAND_RESTART_CHANNELS 1 +/** + * \brief Mcbsp Sample rate generator default parameters. + * + */ +Mcbsp_srgConfig mcbspSrgCfg = +{ + FALSE, /* No gsync to be used as input is not CLKS */ + Mcbsp_ClkSPol_RISING_EDGE, /* Dont care as input clock is not clks */ + Mcbsp_SrgClk_CLKCPU, /* McBSP internal clock to be used */ + 166666667, /* Mcbsp internal clock frequency(PLL-SYSCLK6) */ + 0 /* frame sync pulse width (val+1) is used */ +}; + +/** + * \brief Mcbsp device creation default parameters. + * + */ +const Mcbsp_Params Mcbsp_PARAMS = +{ + Mcbsp_DevMode_McBSP, /* Use the device as MCBSP */ + Mcbsp_OpMode_DMAINTERRUPT, /* Use DMA mode of operation */ + TRUE, /* cache coherency taken care of by driver */ + Mcbsp_EmuMode_FREE, /* Emulation mode free is to be enabled */ +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_Loopback_DISABLE, /* Loop back mode disabled */ +#else + Mcbsp_Loopback_ENABLE, /* Loop back mode enabled */ +#endif + &mcbspSrgCfg, /* sample rate generator configuration */ + NULL, /* TX pending buffer queue from application */ + NULL, /* TX floating buffer queue in DMA */ + NULL, /* RX pending buffer queue from application */ + NULL /* RX floating buffer queue in DMA */ +}; + +#pragma DATA_ALIGN(loopTxJob, MCBSP_MAX_CACHE_ALIGN) +static Int32 loopTxJob[16] = { + /* Filling with Mu law silence pattern : Can be any user defined pattern */ + 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, + 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f +}; +#pragma DATA_ALIGN(loopRxJob, MCBSP_MAX_CACHE_ALIGN) +static Int32 loopRxJob[16] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +}; + +/**< settings to configure the TX or RX hardware sections */ +Mcbsp_DataConfig mcbspChanConfigTx = +{ + Mcbsp_Phase_SINGLE, + Mcbsp_WordLength_8, + Mcbsp_WordLength_8, /* Dont care for single phase*/ + NUM_OF_MAX_CHANNELS, + NUM_OF_MAX_CHANNELS, // Only used with dual phase + Mcbsp_FrmSync_DETECT, +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_DataDelay_0_BIT, +#else + Mcbsp_DataDelay_1_BIT, +#endif + Mcbsp_Compand_OFF_MSB_FIRST, + Mcbsp_BitReversal_DISABLE, + Mcbsp_IntMode_ON_SYNCERR, + Mcbsp_RxJust_RZF, /* Dont care for TX */ + Mcbsp_DxEna_OFF +}; + +/**< settings to configure the TX or RX hardware sections */ +Mcbsp_DataConfig mcbspChanConfigRx = +{ + Mcbsp_Phase_SINGLE, + Mcbsp_WordLength_8, + Mcbsp_WordLength_8, /* Dont care for single phase*/ + NUM_OF_MAX_CHANNELS, + NUM_OF_MAX_CHANNELS, // Only used with dual phase + Mcbsp_FrmSync_DETECT, +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_DataDelay_0_BIT, +#else + Mcbsp_DataDelay_1_BIT, +#endif + Mcbsp_Compand_OFF_MSB_FIRST, + Mcbsp_BitReversal_DISABLE, + Mcbsp_IntMode_ON_SYNCERR, + Mcbsp_RxJust_RZF, /* Dont care for TX */ + Mcbsp_DxEna_OFF +}; +/**< clock setup for the TX section */ +Mcbsp_ClkSetup mcbspClkConfigTx = +{ +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_FsClkMode_EXTERNAL, + 8000, /* 8KHz */ + Mcbsp_TxRxClkMode_EXTERNAL, +#else + Mcbsp_FsClkMode_INTERNAL, + 8000, /* 8KHz */ + Mcbsp_TxRxClkMode_INTERNAL, +#endif + Mcbsp_FsPol_ACTIVE_HIGH, + Mcbsp_ClkPol_RISING_EDGE +}; + +/**< clock setup for the RX section */ +Mcbsp_ClkSetup mcbspClkConfigRx = +{ +#ifdef MCBSP_EXTERNAL_CLOCK + Mcbsp_FsClkMode_EXTERNAL, + 8000, /* 8KHz */ + Mcbsp_TxRxClkMode_EXTERNAL, +#else + Mcbsp_FsClkMode_INTERNAL, + 8000, /* 8KHz */ + Mcbsp_TxRxClkMode_INTERNAL, +#endif + Mcbsp_FsPol_ACTIVE_HIGH, + Mcbsp_ClkPol_FALLING_EDGE +}; + +/**< Multi channel setup */ +Mcbsp_McrSetup mcbspMultiChanCtrl = +{ + Mcbsp_McmMode_ALL_CHAN_DISABLED_UNMASKED, + Mcbsp_PartitionMode_CHAN_0_15, + Mcbsp_PartitionMode_CHAN_16_31, + Mcbsp_PartitionMode_2 +}; + + +Mcbsp_ChanParams mcbspChanparamTx = +{ + Mcbsp_WordLength_8, /* wordlength configured */ + &loopTxJob[0], /* loop job buffer internal */ + 8, /* user loopjob length */ + mcbsp_GblErrCallback, /* global error callback */ + NULL, /* edma Handle */ + 1, /* EDMA event queue */ + 8, /* hwi number */ + Mcbsp_BufferFormat_MULTISLOT_NON_INTERLEAVED, + TRUE, /* FIFO mode enabled */ + &mcbspChanConfigTx, /* channel configuration */ + &mcbspClkConfigTx, /* clock configuration */ + &mcbspMultiChanCtrl, /* multi channel control */ + 0x7531, /* Enabled timeslots: 0, 4, 5, 8, 10, 12, 13, 14 */ + 0x00, + 0x00, + 0x00, + NUM_OF_ENABLED_CHANNELS /* Total number of channels enabled*/ +}; + +Mcbsp_ChanParams mcbspChanparamRx = +{ + Mcbsp_WordLength_8, /* wordlength configured */ + &loopRxJob[0], /* loop job buffer internal */ + 8, /* user loopjob length */ + mcbsp_GblErrCallback, /* global error callback */ + NULL, /* edma Handle */ + 1, /* EDMA event queue */ + 8, /* hwi number */ + Mcbsp_BufferFormat_MULTISLOT_NON_INTERLEAVED, + TRUE, /* FIFO mode enabled */ + &mcbspChanConfigRx, /* channel configuration */ + &mcbspClkConfigRx, /* clock configuration */ + &mcbspMultiChanCtrl, /* multi channel control */ + 0x7531, /* Enabled timeslots: 0, 4, 5, 8, 10, 12, 13, 14 */ + 0x00, + 0x00, + 0x00, + NUM_OF_ENABLED_CHANNELS /* Total number of channels enabled*/ +}; + + +/* ========================================================================== */ +/* FUNCTION DEFINITIONS */ +/* ========================================================================== */ + +/* + * This is the application's callback function. The driver will + * call this function whenever an EDMA I/O operation is over. + * + */ +void mcbspAppCallback(void* arg, Mcbsp_IOBuf *ioBuf) +{ + int32_t mode; + int32_t *pmode = (int32_t *)arg; + + mode = *pmode; + if (mode == MCBSP_MODE_OUTPUT) + { + if(ioBuf) { + num_tx_Call_backs++; + edmaTxDone = 1; + }else + txunderflowcnt++; + } + else if (mode == MCBSP_MODE_INPUT) + { + if(ioBuf) { + num_rx_Call_backs++; + edmaRxDone = 1; + }else + rxunderflowcnt++; + }else + dummy_call_backs++; + return; +} + +/* + * This is the application's Global error callback function + */ +void mcbsp_GblErrCallback(uint32_t chanHandle,uint32_t spcr_read,uint32_t Arg3) +{ + MCBSP_log ("Debug(Core %d): ERROR callback called SPCR: %x", coreNum, spcr_read); +} + +/* + * \brief This function demostrates the use of Mcbsp using digital loopback + * communication setup. + * + * \param None + * + * \return None + */ +void mcbspDigLpbkApp(UArg arg0, UArg arg1) +{ + /**< Mcbsp device params */ + Mcbsp_Params mcbspParams; + + /**< Queue to hold the pending packets received from the application */ + Queue_Struct txQueuePendingList, rxQueuePendingList; + /**< Queue to manage floating packets in DMA */ + Queue_Struct txQueueFloatingList, rxQueueFloatingList; + + uint32_t count = 0, tempCount = 0; + int32_t status = 0, retval = 0; + int32_t txChanMode = MCBSP_MODE_OUTPUT; + int32_t rxChanMode = MCBSP_MODE_INPUT; + uint32_t mcbspTxDone = 0, mcbspRxDone = 0; + Mcbsp_IOBuf txFrame[NUM_OF_MCBSP_FRAMES], rxFrame[NUM_OF_MCBSP_FRAMES]; + int txFrameIndex=0, rxFrameIndex=0; + int init_count=0; +#ifdef MCBSP_LOOP_PING_PONG + int pingPongIndex=0; +#endif + + /* Initialize the OSAL */ + if (Osal_dataBufferInitMemory(BUFSIZE) < 0) + { + MCBSP_log ("Debug(Core %d): Error: Unable to initialize the OSAL. \n", coreNum); + return; + } + + /* update EDMA3 handle to channel parameters */ + mcbspChanparamTx.edmaHandle = hEdma[0]; + mcbspChanparamRx.edmaHandle = hEdma[0]; + + /* create the pending and floating queue for the TX channel */ + Queue_construct(&txQueuePendingList, NULL); + Queue_construct(&txQueueFloatingList, NULL); + + /* create the pending and floating queue for the RX channel */ + Queue_construct(&rxQueuePendingList, NULL); + Queue_construct(&rxQueueFloatingList, NULL); + + + mcbspParams = Mcbsp_PARAMS; + mcbspParams.txQPendingList = &txQueuePendingList; + mcbspParams.txQFloatingList = &txQueueFloatingList; + mcbspParams.rxQPendingList = &rxQueuePendingList; + mcbspParams.rxQFloatingList = &rxQueueFloatingList; + + + /* Bind the driver instance with device instance */ + status = mcbspBindDev(&hMcbspDev, coreNum, &mcbspParams); + + if (status != MCBSP_STATUS_COMPLETED) + { + MCBSP_log ("Debug(Core %d): MCBSP LLD Bind Device Failed\n", coreNum); + return; + } + + /* If the user loopjob buffer is in local L2 memory: Convert into Global memory address space */ + if(mcbspChanparamRx.userLoopJobBuffer) + mcbspChanparamRx.userLoopJobBuffer = (void *)Mcbsp_osalLocal2Global(mcbspChanparamRx.userLoopJobBuffer); + + /* Create a RX channel for receiving */ + status = mcbspCreateChan(&hMcbspRxChan, hMcbspDev, MCBSP_MODE_INPUT, &mcbspChanparamRx, mcbspAppCallback, &rxChanMode); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Create Channel (RX) failed\n", coreNum); + return; + } + + /* If the user loopjob buffer is in local L2 memory: Convert into Global memory address space */ + if(mcbspChanparamTx.userLoopJobBuffer) + mcbspChanparamTx.userLoopJobBuffer = Mcbsp_osalLocal2Global(mcbspChanparamTx.userLoopJobBuffer); + + /* Create a TX channel for the transmission */ + status = mcbspCreateChan(&hMcbspTxChan, hMcbspDev, MCBSP_MODE_OUTPUT, &mcbspChanparamTx, mcbspAppCallback, &txChanMode); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Create Channel (TX) failed\n", coreNum); + return; + } + + /* Register mcbsp interrupts */ + //McbspRcvInterrupt_init(hMcbspRxChan); + //McbspXmtInterrupt_init(hMcbspTxChan); + + /* create the buffers required for the TX and RX operations */ + for (count = 0; count < (NUM_BUFS); count++) + { + bufTx[count] = (uint8_t *)Osal_mcbspDataBufferMalloc(BUFSIZE); + bufRx[count] = (uint8_t *)Osal_mcbspDataBufferMalloc(BUFSIZE); + + if (bufTx[count] == NULL) + { + MCBSP_log ("Debug(Core %d): Error: Tx Buffer (%d) Memory Allocation Failed\n", coreNum, count); + return; + } + if (bufRx[count] == NULL) + { + MCBSP_log ("Debug(Core %d): Error: Rx Buffer (%d) Memory Allocation Failed\n", coreNum, count); + return; + } + } +#ifdef MCBSP_LOOP_PING_PONG + /* create the ping pong buffers required for the TX and RX operations */ + for (count = 0; count < (NUM_BUFS); count++) + { + bufRxPingPong[count] = (uint8_t *)Osal_mcbspDataBufferMalloc(BUFSIZE); + bufTxPingPong[count] = (uint8_t *)Osal_mcbspDataBufferMalloc(BUFSIZE); + + if (bufTxPingPong[count] == NULL) + { + MCBSP_log ("Debug(Core %d): Error: Tx Ping pong Buffer (%d) Memory Allocation Failed\n", coreNum, count); + return; + } + if (bufRxPingPong[count] == NULL) + { + MCBSP_log ("Debug(Core %d): Error: Rx Ping pong Buffer (%d) Memory Allocation Failed\n", coreNum, count); + return; + } + } +#endif + /* Fill the buffers with known data and transmit the same and + check if the same pattern is received */ + for (count = 0; count < (NUM_BUFS); count++) + { + memset((uint8_t *)bufTx[count], 0, BUFSIZE); + for (tempCount = 0; tempCount < BUFSIZE; tempCount++) + { + ((uint8_t *)bufTx[count])[tempCount] = (tempCount % 0x100); + } + } + MCBSP_log ("Debug(Core %d): If required to restart set debugCommand variable to %d\n", coreNum, DEBUG_COMMAND_RESTART_CHANNELS); + +restart_mcbsp_point: + txFrameIndex=0; + rxFrameIndex=0; + init_count=0; +#ifdef MCBSP_EXTERNAL_CLOCK + /* Initial loading of ping ping buffers */ + for(init_count =0 ; init_count < INIT_SUBMIT_Q_CNT; init_count++) + { +#ifdef MCBSP_LOOP_PING_PONG + memset((uint8_t *)bufRxPingPong[init_count], 0, BUFSIZE); + + /* RX frame processing */ + rxFrame[rxFrameIndex].cmd = Mcbsp_IOBuf_Cmd_READ; + rxFrame[rxFrameIndex].addr = (void*)bufRxPingPong[init_count]; +#else + memset((uint8_t *)bufRx[init_count], 0, BUFSIZE); + + + /* RX frame processing */ + rxFrame[rxFrameIndex].cmd = Mcbsp_IOBuf_Cmd_READ; + rxFrame[rxFrameIndex].addr = (void*)bufRx[init_count]; +#endif + + rxFrame[rxFrameIndex].size = BUFSIZE; + rxFrame[rxFrameIndex].arg = (uint32_t) hMcbspRxChan; + rxFrame[rxFrameIndex].status = MCBSP_STATUS_COMPLETED; + rxFrame[rxFrameIndex].misc = 1; /* reserved - used in callback to indicate asynch packet */ + + status = mcbspSubmitChan(hMcbspRxChan, (void *)&rxFrame[rxFrameIndex]); + if (status != MCBSP_STATUS_PENDING) + { + MCBSP_log ("Debug(Core %d): Error: RX buffer #%d submission FAILED\n", coreNum, init_count); + retval = 1; + } + else + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): RX buffer #%d is submitted to MCBSP driver\n", coreNum, init_count); +#endif + } + rxFrameIndex++; + rxFrameIndex = (rxFrameIndex >= (NUM_OF_MCBSP_FRAMES)) ? 0 : rxFrameIndex; + + rxSubmitCount++; + + /* TX frame processing */ + txFrame[txFrameIndex].cmd = Mcbsp_IOBuf_Cmd_WRITE; +#ifdef MCBSP_LOOP_PING_PONG + txFrame[txFrameIndex].addr = (void*)bufTxPingPong[init_count]; +#else + txFrame[txFrameIndex].addr = (void*)bufTx[init_count]; +#endif + txFrame[txFrameIndex].size = BUFSIZE; + txFrame[txFrameIndex].arg = (uint32_t)hMcbspTxChan; + txFrame[txFrameIndex].status = MCBSP_STATUS_COMPLETED; + txFrame[txFrameIndex].misc = 1; /* reserved - used in callback to indicate asynch packet */ + + status = mcbspSubmitChan(hMcbspTxChan, (void *)&txFrame[txFrameIndex]); + if (status != MCBSP_STATUS_PENDING) + { + MCBSP_log ("Debug(Core %d): Error: TX buffer #%d submission FAILED\n", coreNum, init_count); + retval = 1; + } + else + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): TX buffer #%d submission is submitted to MCBSP driver\n", coreNum, init_count); +#endif + } + txFrameIndex++; + txFrameIndex = (txFrameIndex >=(NUM_OF_MCBSP_FRAMES)) ? 0 : txFrameIndex; + + txSubmitCount++; + } + + /* Wait for TX and RX processing to complete */ + while (1) + { + if (edmaTxDone == 1) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): EDMA -> Iteration-%d frames are transmitted to TX path\n", coreNum, count); +#endif + edmaTxDone = 0; /* Reset for next iteration */ + mcbspTxDone = 1; + } + if (edmaRxDone == 1) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): EDMA -> Iteration-%d frames are received from RX path\n", coreNum, count); +#endif + edmaRxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 1; + } + if ((mcbspTxDone == 1) && (mcbspRxDone == 1)) + { + mcbspTxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 0; /* Reset for next iteration */ + break; + } + } +#ifdef MCBSP_LOOP_PING_PONG + /* Change ping Pong Index */ + init_count=0; +#endif +#endif /* MCBSP_EXTERNAL_CLOCK */ + + /* Start main loop to iterate through frames */ + while(debugVar) + { + /* submit frames to the driver */ + for (count = init_count; count < NUM_BUFS; count++) + { +#ifdef MCBSP_EXTERNAL_CLOCK +/* With External clock the data coming from the RX side is copied to loop back to the Tx side */ + memcpy((uint8_t *)bufTx[count], (uint8_t *)bufRx[count], BUFSIZE); +#endif +#ifdef MCBSP_LOOP_PING_PONG + memset((uint8_t *)bufRxPingPong[pingPongIndex], 0, BUFSIZE); +#else + memset((uint8_t *)bufRx[count], 0, BUFSIZE); + /* RX frame processing */ + rxFrame[rxFrameIndex].cmd = Mcbsp_IOBuf_Cmd_READ; + rxFrame[rxFrameIndex].addr = (void*)bufRx[count]; + rxFrame[rxFrameIndex].size = BUFSIZE; + rxFrame[rxFrameIndex].arg = (uint32_t) hMcbspRxChan; + rxFrame[rxFrameIndex].status = MCBSP_STATUS_COMPLETED; + rxFrame[rxFrameIndex].misc = 1; /* reserved - used in callback to indicate asynch packet */ + + status = mcbspSubmitChan(hMcbspRxChan, (void *)&rxFrame[rxFrameIndex]); + if (status != MCBSP_STATUS_PENDING) + { + MCBSP_log ("Debug(Core %d): Error: RX buffer #%d submission FAILED\n", coreNum, count); + retval = 1; + } + else + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): RX buffer #%d is submitted to MCBSP driver\n", coreNum, count); +#endif + } + rxFrameIndex++; + rxFrameIndex = (rxFrameIndex >= (NUM_OF_MCBSP_FRAMES)) ? 0 : rxFrameIndex; +#endif + rxSubmitCount++; +#ifdef MCBSP_LOOP_PING_PONG + /* Copy buffer from buffer to ping pong buffer*/ + memcpy((uint8_t *)bufTxPingPong[pingPongIndex], (uint8_t *)bufTx[count],BUFSIZE); +#else + /* TX frame processing */ + txFrame[txFrameIndex].cmd = Mcbsp_IOBuf_Cmd_WRITE; + txFrame[txFrameIndex].addr = (void*)bufTx[count]; + txFrame[txFrameIndex].size = BUFSIZE; + txFrame[txFrameIndex].arg = (uint32_t)hMcbspTxChan; + txFrame[txFrameIndex].status = MCBSP_STATUS_COMPLETED; + txFrame[txFrameIndex].misc = 1; /* reserved - used in callback to indicate asynch packet */ + + status = mcbspSubmitChan(hMcbspTxChan, (void *)&txFrame[txFrameIndex]); + if (status != MCBSP_STATUS_PENDING) + { + MCBSP_log ("Debug(Core %d): Error: TX buffer #%d submission FAILED\n", coreNum, count); + retval = 1; + } + else + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): TX buffer #%d is submitted to MCBSP driver\n", coreNum, count); +#endif + } + txFrameIndex++; + txFrameIndex = (txFrameIndex >= (NUM_OF_MCBSP_FRAMES)) ? 0 : txFrameIndex; +#endif + txSubmitCount++; + + /* Wait for TX and RX processing to complete */ + while (1) + { + if (edmaTxDone == 1) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): EDMA -> Buffer #-%d is transmitted to TX path\n", coreNum, count); +#endif + edmaTxDone = 0; /* Reset for next iteration */ + mcbspTxDone = 1; + } + if (edmaRxDone == 1) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log ("Debug(Core %d): EDMA -> Buffer #-%d is received from RX path\n", coreNum, count); +#endif + edmaRxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 1; + } + if ((mcbspTxDone == 1) && (mcbspRxDone == 1)) + { + mcbspTxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 0; /* Reset for next iteration */ + break; + } + } +#ifdef MCBSP_LOOP_PING_PONG + /* Change ping Pong Index */ + pingPongIndex=(pingPongIndex)?0:1; + + /* Copy buffer from buffer to other buffer*/ + memcpy((void*)bufRx[count], (uint8_t *)bufRxPingPong[pingPongIndex],BUFSIZE); +#endif + /* compare buffer contents */ + for (tempCount = 0; tempCount < BUFSIZE; tempCount++) + { + if (((char *)bufTx[count])[tempCount] != ((char *)bufRx[count])[tempCount]) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log("Debug(Core %d): Error: TX and RX frame data DOES NOT match in Buffer #-%d\n", + coreNum, count); + MCBSP_log("Debug(Core %d): Error: Buffer index = %d, Tx data = %d, Rx data = %d\n", coreNum, + tempCount, ((char *)bufTx[count])[tempCount], ((char *)bufRx[count])[tempCount]); +#endif + errBuffCount++; + break; + } + } + if (tempCount >= BUFSIZE) + { +#ifdef MCBSP_APP_VERBOSE + MCBSP_log("Debug(Core %d): TX and RX frames data match in iteration-%d !!!\n", coreNum, count); +#endif + } + } + init_count=0; + num_iterations++; +#ifndef MCBSP_EXTERNAL_CLOCK + if(num_iterations >= NUM_OF_ITERATIONS) + break; +#endif + switch(debugCommand) + { + case DEBUG_COMMAND_RESTART_CHANNELS: + debugCommand=0; + /* Close channel and reopen */ + /* Delete RX channel */ + status = mcbspDeleteChan(hMcbspRxChan); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Delete Channel (RX) failed\n", coreNum); + return; + } + + /* Delete TX channel*/ + status = mcbspDeleteChan(hMcbspTxChan); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Delete Channel (TX) failed\n", coreNum); + return; + } + /* Create a RX channel for receiving */ + status = mcbspCreateChan(&hMcbspRxChan, hMcbspDev, MCBSP_MODE_INPUT, &mcbspChanparamRx, mcbspAppCallback, &rxChanMode); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Create Channel (RX) failed\n", coreNum); + return; + } + + /* Create a TX channel for the transmission */ + status = mcbspCreateChan(&hMcbspTxChan, hMcbspDev, MCBSP_MODE_OUTPUT, &mcbspChanparamTx, mcbspAppCallback, &txChanMode); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Create Channel (TX) failed\n", coreNum); + return; + } + edmaTxDone = 0; /* Reset for next iteration */ + edmaRxDone = 0; /* Reset for next iteration */ + mcbspTxDone = 0; /* Reset for next iteration */ + mcbspRxDone = 0; /* Reset for next iteration */ + goto restart_mcbsp_point; + + default: + debugCommand=0; + break; + + } + + } + + if ((errBuffCount == 0 ) & (retval ==0)) + { + MCBSP_log("Debug(Core %d): MCBSP Digital Loopback Application completed successfully : "\ + "Num iterations %d Num buffers per iteration %d!!!\n", + coreNum, num_iterations, NUM_BUFS); + MCBSP_log("\n All tests have passed \n"); + } + else + { + MCBSP_log("Debug(Core %d): MCBSP Digital Loopback application FAILED : "\ + "Num iterations %d Num buffers per iteration %d Failed buffers %d!!!\n", + coreNum, num_iterations, NUM_BUFS, errBuffCount); + } + + /* Delete RX channel */ + status = mcbspDeleteChan(hMcbspRxChan); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Delete Channel (RX) failed\n", coreNum); + return; + } + + /* Delete TX channel*/ + status = mcbspDeleteChan(hMcbspTxChan); + if (MCBSP_STATUS_COMPLETED != status) + { + MCBSP_log ("Debug(Core %d): Error: Delete Channel (TX) failed\n", coreNum); + return; + } + return; +} + +/* + * \brief Void main(Void) + * + * Main function of the sample application. This function calls the + * function to configure the mcbsp instance. + * + * \param None + * + * \return None + */ +#include "ti/sysbios/hal/Cache.h" + +Void main(Void) +{ + Task_Params taskParams; + EDMA3_DRV_Result edmaResult = 0; +#ifdef SIMULATOR_SUPPORT + uint8_t uchValue, uchReadValue; +#endif + + Board_initCfg arg = BOARD_INIT_MODULE_CLOCK | BOARD_INIT_PINMUX_CONFIG | BOARD_INIT_UART_STDIO; + Board_init(arg); + + /* Get the core number. */ + coreNum = 0; //CSL_chipReadReg (CSL_CHIP_DNUM); + +#ifdef SIMULATOR_SUPPORT +#warn MCBSP Digital Loopback example is not supported on SIMULATOR !!! + MCBSP_log ("MCBSP Digital Loopback example is not supported on SIMULATOR. Exiting!\n"); + return; +#else + MCBSP_log ("Debug(Core %d): Running MCBSP Digital Loopback example on the DEVICE\n", coreNum); +#endif + + /* Initialize the system only if the core was configured to do so. */ + if (coreNum == CORE_SYS_INIT) + { +#if 0 + MCBSP_log ("Debug(Core %d): System Initialization for MCBSP\n", coreNum); + /* Read FPGA register */ + if (0 != (platform_fpgaReadConfigReg(MCBSP_FPGA_MISC_REG_OFFSET, &uchReadValue))) + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register READ failed \n", coreNum); + return; + } + /* Clear field for configuration */ + uchValue = (uchReadValue & (~0x3)); +#ifndef PLATFORM_FPGA_MCBSP_AMC_EN + uchValue |= 0x3; +#endif + /* Drive McBSP_AMC_EN# high. Output SLCLKs, TxCLKs, RxCLKs, FSTs, FSRs as Hi-Z. + * These clocks and syncs are tri-stated and McBSP is accessed over 80-pin header */ + if (0 != (platform_fpgaWriteConfigReg(MCBSP_FPGA_MISC_REG_OFFSET, (uchValue)))) + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register WRITE failed \n", coreNum); + return; + } + + /* DEBUG: Verify if FPGA register is configured correctly */ + if (0 != (platform_fpgaReadConfigReg(MCBSP_FPGA_MISC_REG_OFFSET, &uchReadValue))) + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register READ failed \n", coreNum); + return; + } + + if (uchValue != uchReadValue) + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register setting failed \n", coreNum); + return; + } + else + { + MCBSP_log ("Debug(Core %d): FPGA McBSP_AMC_EN# register is set to %d \n", coreNum, uchValue); + } +#endif + /* MCBSP Driver Initialization: This should always be called before + * invoking the MCBSP Driver. */ + mcbspInit(); + + /* Device Specific MCBSP Initializations */ + McbspDevice_init(); + + /* MCBSP Driver is operational at this time. */ + MCBSP_log ("Debug(Core %d): MCBSP Driver Initialization Done\n", coreNum); + + /* Write to the SHARED memory location at this point in time. The other cores cannot execute + * till the MCBSP Driver is up and running. */ + isMCBSPInitialized[0] = 1; + + /* The MCBSP IP block has been initialized. We need to writeback the cache here because it will + * ensure that the rest of the cores which are waiting for MCBSP to be initialized would now be + * woken up. */ + //CACHE_wbL1d ((void *) &isMCBSPInitialized[0], MCBSP_MAX_CACHE_ALIGN, CACHE_FENCE_WAIT); + Cache_wb ((void *) &isMCBSPInitialized[0], MCBSP_CACHE_LENGTH,0x7fff, 1); + } + else + { + /* All other cores need to wait for the MCBSP to be initialized before they proceed with the test. */ + MCBSP_log ("Debug(Core %d): Waiting for MCBSP to be initialized.\n", coreNum); + + /* All other cores loop around forever till the MCBSP is up and running. + * We need to invalidate the cache so that we always read this from the memory. */ + while (isMCBSPInitialized[0] == 0) + //CACHE_invL1d ((void *) &isMCBSPInitialized[0], MCBSP_MAX_CACHE_ALIGN, CACHE_FENCE_WAIT); + Cache_inv ((void *) &isMCBSPInitialized[0], MCBSP_CACHE_LENGTH, 0x7fff, 1); + + + MCBSP_log ("Debug(Core %d): MCBSP can now be used.\n", coreNum); + } + + /* Initialize EDMA3 library */ + hEdma[0] = edma3init(0, &edmaResult); + + if (edmaResult != EDMA3_DRV_SOK) + { + /* Report EDMA Error */ + MCBSP_log("Debug(Core %d): EDMA Driver Initialization FAILED\n", coreNum); + } + else + { + MCBSP_log("Debug(Core %d): EDMA Driver Initialization Done\n", coreNum); + } + + /* Create the Digital Loopback Application Task */ + Task_Params_init(&taskParams); + Task_create(mcbspDigLpbkApp, &taskParams, NULL); + + /* Start BIOS */ + BIOS_start(); + + return; +} + +/* ========================================================================== */ +/* END OF FILE */ +/* ========================================================================== */ diff --git a/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg new file mode 100644 index 000000000..44dedf67b --- /dev/null +++ b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk.cfg @@ -0,0 +1,78 @@ +/* + * Copyright 2012-2018 by Texas Instruments Incorporated. + * + * All rights reserved. Property of Texas Instruments Incorporated. + * Restricted rights to use, duplicate or disclose this code are + * granted through contract. + * + */ + +/* THIS FILE WAS GENERATED BY ti.sysbios.genx */ + +/* + * ======== mcbspMasterDigLpbk.cfg ======== + * + */ + +/* Load and use the required BIOS packages */ +var BIOS = xdc.useModule('ti.sysbios.BIOS'); +var Task = xdc.useModule('ti.sysbios.knl.Task'); +var cache = xdc.useModule('ti.sysbios.hal.Cache'); +var Idle = xdc.useModule('ti.sysbios.knl.Idle'); +var Queue = xdc.useModule('ti.sysbios.knl.Queue'); +var ECM = xdc.useModule('ti.sysbios.family.c64p.EventCombiner'); +//var CpIntc = xdc.useModule('ti.sysbios.family.c66.tci66xx.CpIntc'); +var Memory = xdc.useModule('xdc.runtime.Memory'); +var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem'); + +/* Load and use the System Package */ +var System = xdc.useModule('xdc.runtime.System'); +var SysStd = xdc.useModule('xdc.runtime.SysStd'); + +/* Create a default system heap using ti.bios.HeapMem. */ +var heapMemParams1 = new HeapMem.Params; +heapMemParams1.size = 32768; +heapMemParams1.sectionName = "systemHeap"; +Program.global.heap0 = HeapMem.create(heapMemParams1); + +/* This is the default memory heap. */ +Memory.defaultHeapInstance = Program.global.heap0; + +/* + * Create and install logger for the whole system. + * Enable Event Groups here and registering of ISR for specific GEM INTC is done + * using EventCombiner_dispatchPlug() and Hwi_eventMap() APIs + */ +ECM.eventGroupHwiNum[0] = 7; +ECM.eventGroupHwiNum[1] = 8; +ECM.eventGroupHwiNum[2] = 9; +ECM.eventGroupHwiNum[3] = 10; + +/* Load and use the mcbsp, EDMA, PlatformLib etc. packages */ +var Edma = xdc.loadPackage('ti.sdo.edma3.drv'); + +var devType = "omapl138" +var mcbsp = xdc.useModule('ti.drv.mcbsp.Settings'); +mcbsp.deviceType = devType; + +/* Load the uart package */ +var Uart = xdc.loadPackage('ti.drv.uart'); +Uart.Settings.socType = devType; + +var Csl = xdc.useModule('ti.csl.Settings'); +Csl.deviceType = devType; +Csl.libProfile = "release"; + +/* Load the OSAL package */ +var osType = "tirtos" +var Osal = xdc.useModule('ti.osal.Settings'); +Osal.osType = osType; +Osal.socType = devType; + +/* Load the Board package and set the board name */ +var Board = xdc.loadPackage('ti.board'); +Board.Settings.boardName = "lcdkOMAPL138"; + +/* Circular buffer size for System_printf() */ +System.SupportProxy = SysStd; + diff --git a/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd new file mode 100644 index 000000000..6021dd060 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk.cmd @@ -0,0 +1,9 @@ +SECTIONS +{ + .init_array: load >> IRAM + .mcbsp: load >> DDR + .mcbspSharedMem: load >> DDR + platform_lib: load >> DDR + systemHeap: load >> IRAM +} + diff --git a/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c new file mode 100644 index 000000000..6cda4227c --- /dev/null +++ b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/mcbspMasterDigLpbk_osal.c @@ -0,0 +1,639 @@ +/** + * @file mcbspMasterDigLpbk_osal.c + * + * @brief + * This is the OS abstraction layer and is used by the MCBSP + * driver for the MCBSP Example Digital Loopback Application. + * + * \par + * ============================================================================ + * @n (C) Copyright 2012, Texas Instruments, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * \par +*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if 0 +/* CSL Include Files */ +#include +#include +#include +#include +#endif +/* IPC includes */ +#include +#include +#include +#include + +/********************************************************************** + ************************** Local Definitions ************************* + **********************************************************************/ + +#define MCBSP_HW_SEM 1 +#define PLATFORM_SPI_HW_SEM 2 /**< SPI BUS arbitration - Used by platform library */ + +#ifdef MCBSP_LOOP_PING_PONG +#define MAX_MEM_MGR_ENTRIES 8 +#else +#define MAX_MEM_MGR_ENTRIES 4 +#endif + +typedef struct MEM_MGMT_ENTRY +{ + uint8_t* ptrMemory; + uint32_t isFree; +}MEM_MGMT_ENTRY; + +MEM_MGMT_ENTRY gDataBufferMemMgr[MAX_MEM_MGR_ENTRIES]; +int32_t gDataBufferMemMgrMaxSize = 0; + +/********************************************************************** + ************************** Global Variables ************************** + **********************************************************************/ +UInt32 malloc_counter = 0; +UInt32 free_counter = 0; + +/********************************************************************** + ************************** Extern Definitions ************************ + **********************************************************************/ + + +/********************************************************************** + **************************** OSAL Functions ************************** + **********************************************************************/ + +/** + * @b Description + * @n + * Utility function which converts a local address to global. + * + * @param[in] addr + * Local address to be converted + * + * @retval + * Global Address + */ +void *Osal_local2Global (void *addr) +{ + UInt32 corenum; + + /* Get the core number. */ + corenum = 0;//CSL_chipReadReg(CSL_CHIP_DNUM); + return addr; + + if(((UInt32)addr & 0xff000000) == 0) { + /* Compute the global address. */ + return ((void *)((UInt32)(addr) + (0x10000000 + (corenum*0x1000000)))); + } + else + return(addr); +} + +/** + * @b Description + * @n + * The function is used to allocate a memory block of the specified size. + * + * @param[in] numBytes + * Number of bytes to be allocated. + * + * @retval + * Allocated block address + */ +Void* Osal_mcbspMalloc(UInt32 numBytes) +{ + Error_Block errorBlock; + Void* ptr; + + /* Increment the allocation counter. */ + malloc_counter++; + + /* Allocate the memory. */ + ptr = Memory_alloc(NULL, numBytes, 0, &errorBlock); + + /* Return the allocated memory block. */ + return ptr; +} + +/** + * @b Description + * @n + * The function is used to clean up a specific memory block and is called + * from the MCBSP Driver. + * + * @param[in] ptr + * Pointer to the memory block to be cleaned up. + * @param[in] size + * Size of the memory block being cleaned up. + * + * @retval + * Not Applicable + */ +Void Osal_mcbspFree (Void* ptr, UInt32 size) +{ + /* Increment the free counter. */ + free_counter++; + Memory_free(NULL, ptr, size); +} + +/** + * @b Description + * @n + * The function is used to allocate a block of memory for all the data buffer + * operations. This function is called by the application. + * + * @param[in] numBuffers + * Number of data buffers + * @param[in] dataBufferSize + * Size of each data buffer + * + * @retval + * Success - 0 + * @retval + * Error - <0 + */ +int32_t Osal_dataBufferInitMemory(uint32_t dataBufferSize) +{ + Error_Block errorBlock; + uint8_t* ptrMemory; + uint32_t index; + + /* Allocate memory for all the data buffers */ + ptrMemory = (uint8_t*)Memory_alloc(NULL, MAX_MEM_MGR_ENTRIES*dataBufferSize, 128, &errorBlock); + if (ptrMemory == NULL) + return -1; + + /* Convert to a global address */ + ptrMemory = Osal_local2Global(ptrMemory); + + /* Now we chop up the memory and add it to the memory manager. */ + for (index = 0; index < MAX_MEM_MGR_ENTRIES; index++) + { + /* Populate the data memory management entry. */ + gDataBufferMemMgr[index].isFree = 1; + gDataBufferMemMgr[index].ptrMemory = ptrMemory; + + /* Increment the memory to the next address */ + ptrMemory = ptrMemory + dataBufferSize; + } + + /* Remember the memory buffer size */ + gDataBufferMemMgrMaxSize = dataBufferSize; + + /* Memory Manager has been created. */ + return 0; +} + +/** + * @b Description + * @n + * The function is used to allocate a data buffer of the specified + * size. Data buffers should always be allocated from the global + * address space. + * + * @param[in] numBytes + * Number of bytes to be allocated. + * + * @retval + * Allocated block address + */ +Void* Osal_mcbspDataBufferMalloc(UInt32 numBytes) +{ + uint32_t index; + void* ptrMemory = NULL; + + /* Basic Validation: Ensure that the memory size requested is within range. */ + if (numBytes > gDataBufferMemMgrMaxSize) + return NULL; + + /* Increment the allocation counter. */ + malloc_counter++; + + /* Lock out interrupts */ + Hwi_disable(); + + /* Cycle through for a free entry. */ + for (index = 0; index < MAX_MEM_MGR_ENTRIES; index++) + { + /* Check if the entry is free or not? */ + if (gDataBufferMemMgr[index].isFree == 1) + { + /* Entry was free. We can use it. */ + ptrMemory = gDataBufferMemMgr[index].ptrMemory; + + /* Mark the entry as used. */ + gDataBufferMemMgr[index].isFree = 0; + + /* We have found a match. */ + break; + } + } + + /* Unlock interrupts. */ + Hwi_enable(); + + /* Return the allocated memory. */ + return ptrMemory; +} + +/** + * @b Description + * @n + * The function is used to clean up a previously allocated data buffer + * block. All data buffers are in the global address space + * + * @param[in] ptr + * Pointer to the data buffer block to be cleaned up + * @param[in] size + * Size of the data buffer + * + * @retval + * Not Applicable + */ +void Osal_mcbspDataBufferFree(void* ptr, uint32_t numBytes) +{ + uint32_t index; + + /* Increment the free counter. */ + free_counter++; + + /* Lock out interrupts */ + Hwi_disable(); + + /* Cycle through and clean up */ + for (index = 0; index < MAX_MEM_MGR_ENTRIES; index++) + { + /* Check if the entry is free or not? */ + if (gDataBufferMemMgr[index].ptrMemory == (uint8_t*)ptr) + { + /* Mark the entry as free. */ + gDataBufferMemMgr[index].isFree = 1; + + /* We have found a match. */ + break; + } + } + + /* Unlock interrupts. */ + Hwi_enable(); + return; +} + +/** + * @b Description + * @n + * The function is the MCBSP OSAL Logging API which logs + * the messages on the console. + * + * @param[in] fmt + * Formatted String. + * + * @retval + * Not Applicable + */ +Void Osal_mcbspLog( String fmt, ... ) +{ +} + +/** + * @b Description + * @n + * The function is used to create a critical section. + * + * @retval + * Semaphore Handle created + */ +Void* Osal_mcbspCreateSem(Void) +{ + return (Void*)Semaphore_create(0, NULL, NULL); +} + +/** + * @b Description + * @n + * The function is used to delete a critical section. + * + * @param[in] semHandle + * Semaphore handle to be deleted + * + * @retval + * Not Applicable + */ +Void Osal_mcbspDeleteSem(Void* semHandle) +{ + Semaphore_delete(semHandle); +} + +/** + * @b Description + * @n + * The function is used to pend on a semaphore + * + * @param[in] semHandle + * Semaphore handle on which the API will pend + * + * @retval + * Not Applicable + */ +Void Osal_mcbspPendSem(Void* semHandle) +{ + Semaphore_pend(semHandle, BIOS_WAIT_FOREVER); +} + +/** + * @b Description + * @n + * The function is used to post a semaphore + * + * @param[in] semHandle + * Semaphore handle which will be posted + * + * @retval + * Not Applicable + */ +Void Osal_mcbspPostSem(Void* semHandle) +{ + Semaphore_post(semHandle); +} + +/** + * @b Description + * @n + * This is the Multicore OSAL Implementation to protect the driver shared + * resources across multiple cores. + * + * @retval + * Semaphore Opaque Handle + */ +void* Osal_mcbspEnterMultipleCoreCriticalSection(void) +{ + /* Get the hardware semaphore */ + // while ((CSL_semAcquireDirect (MCBSP_HW_SEM)) == 0); + return NULL; +} + +/** + * @b Description + * @n + * The function is called to end the critical section which was protecting + * shared resources from access across multiple cores. + * + * @param[in] critSectHandle + * Semaphore opaque handle. + * + * @retval + * None + */ +Void Osal_mcbspExitMultipleCoreCriticalSection(Void* critSectHandle) +{ + //CSL_semReleaseSemaphore (MCBSP_HW_SEM); +} + +/** + * @b Description + * @n + * The function is used to provide critical section to prevent access of shared + * resources from single core and multiple threads. + * + * @param[in] drvHandle + * Driver Handle which needs critical section to protect its resources. + * + * @retval + * Opaque handle + */ +Void* Osal_mcbspEnterSingleCoreCriticalSection() +{ + /* Disable interrupts */ + return (Void*)Hwi_disable(); +} + +/** + * @b Description + * @n + * The function is called to end the critical section access of shared resources + * from single cores. + * + * @param[in] drvHandle + * Driver Handle which needed critical section to protect its resources. + * @param[in] critSectHandle + * Opaque handle retreived when the Single Core Protection Enter API was called + * + * @retval + * Not Applicable. + */ +Void Osal_mcbspExitSingleCoreCriticalSection(Void* critSectHandle) +{ + /* Driver Managed Configuration: We need to enable interrupts. */ + Hwi_enable(); +} + +/** + * @b Description + * @n + * The function is used by the MCBSP driver to indicate that + * its about to access a block of memory and we need to ensure + * that the cache contents for this block are invalidated before + * we try and use it. + * + * @param[in] ptr + * Pointer to the buffer which is being accessed + * @param[in] size + * Size of the buffer which is to be accessed. + * + * @retval + * None + */ +#include "ti/sysbios/hal/Cache.h" +void Osal_mcbspBeginMemAccess(void* ptr, uint32_t size) +{ + UInt key; + + /* Disable Interrupts */ + key = Hwi_disable(); + + /* Cleanup the prefetch buffer also. */ + //CSL_XMC_invalidatePrefetchBuffer(); + + /* Invalidate the cache. */ + //CACHE_invL1d (ptr, size, CACHE_FENCE_WAIT); + + Cache_inv ((void *) ptr,size, 0x7fff, 1); + + /* Reenable Interrupts. */ + Hwi_restore(key); +} + +/** + * @b Description + * @n + * The function is used by the MCBSP driver to indicate that its + * ending access to a block of memory. We need to ensure that the + * contents of the cache are written back to the actual memory. + * + * @param[in] ptr + * Pointer to the buffer + * @param[in] size + * Size of the buffer + * + * @retval + * None + */ +void Osal_mcbspEndMemAccess(void* ptr, uint32_t size) +{ + UInt key; + + /* Disable Interrupts */ + key = Hwi_disable(); + + /* Writeback the cache. */ + //CACHE_wbL1d (ptr, size, CACHE_FENCE_WAIT); + Cache_wb ((void *) ptr,size, 0x7fff, 1); + /* Reenable Interrupts. */ + Hwi_restore(key); +} + +/** + * @brief The function is used by the MCBSP driver to test for an + * empty queue. + * + * Parameter + * @n handle - Handle of a previously created Queue instance object + * + * Return Value + * @n TRUE - If the queue is empty + */ +Bool Osal_mcbspQueueEmpty(void* handle) +{ + return Queue_empty(handle); +} + +/** + * @brief The macro is used by the MCBSP driver to get an + * element from the front of queue. The function + * removes the element from the front of queue and + * returns a pointer to it. + * + * Parameter + * @n handle - Handle of a previously created Queue instance object + * + * Return Value + * @n Handle (pointer) to former first element + */ +void* Osal_mcbspQueueGet(void* handle) +{ + return Queue_get(handle); +} + +/** + * @brief The macro is used by the MCBSP driver to put an + * element at the end of queue. + * + * Parameter + * @n handle - Handle of a previously created Queue instance object + * @n elem - Pointer to new queue element + * + * Return Value + * @n None + */ +void Osal_mcbspQueuePut(void* handle, Mcbsp_QueueElem* elem) +{ + Queue_put(handle, (Queue_Elem *)elem); + return; +} + +/** + * @brief The macro is used by the MCBSP driver to wait 'n' + * bit clocks to ensure proper synchronization internally. + * + * Parameter + * @n nticks - Number of bit clocks to wait + * + * Return Value + * @n None + */ +void Osal_mcbspWaitNBitClocks(uint32_t nticks) +{ + Task_sleep(nticks); + return; +} + +/* OSAL functions for Platform Library */ +uint8_t *Osal_platformMalloc (uint32_t num_bytes, uint32_t alignment) +{ + return malloc(num_bytes); +} + +void Osal_platformFree (uint8_t *dataPtr, uint32_t num_bytes) +{ + /* Free up the memory */ + if (dataPtr) + { + free(dataPtr); + } +} + +void Osal_platformSpiCsEnter(void) +{ + /* Get the hardware semaphore. + * + * Acquire Multi core CPPI synchronization lock + */ + //while ((CSL_semAcquireDirect (PLATFORM_SPI_HW_SEM)) == 0); + + return; +} + +void Osal_platformSpiCsExit (void) +{ + /* Release the hardware semaphore + * + * Release multi-core lock. + */ + //CSL_semReleaseSemaphore (PLATFORM_SPI_HW_SEM); + + return; +} diff --git a/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_cs.c b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_cs.c new file mode 100644 index 000000000..92c20ab46 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_cs.c @@ -0,0 +1,420 @@ +/* + * sample_cs.c + * + * Sample functions showing the implementation of critical section entry/exit + * routines and various semaphore related routines (all BIOS6 depenedent). + * These implementations MUST be provided by the user / application, using the + * EDMA3 driver, for its correct functioning. + * + * Copyright (C) 2009-2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#include +#include +#include +#include +#include + +#include "bios6_edma3_drv_sample.h" + +extern unsigned int ccXferCompInt[][EDMA3_MAX_REGIONS]; +extern unsigned int ccErrorInt[]; +extern unsigned int tcErrorInt[][EDMA3_MAX_TC]; + +/** + * Shadow Region on which the executable is running. Its value is + * populated with the DSP Instance Number here in this case. + */ +extern unsigned int region_id; + +/** + * \brief EDMA3 OS Protect Entry + * + * This function saves the current state of protection in 'intState' + * variable passed by caller, if the protection level is + * EDMA3_OS_PROTECT_INTERRUPT. It then applies the requested level of + * protection. + * For EDMA3_OS_PROTECT_INTERRUPT_XFER_COMPLETION and + * EDMA3_OS_PROTECT_INTERRUPT_CC_ERROR, variable 'intState' is ignored, + * and the requested interrupt is disabled. + * For EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR, '*intState' specifies the + * Transfer Controller number whose interrupt needs to be disabled. + * + * \param level is numeric identifier of the desired degree of protection. + * \param intState is memory location where current state of protection is + * saved for future use while restoring it via edma3OsProtectExit() (Only + * for EDMA3_OS_PROTECT_INTERRUPT protection level). + * \return None + */ +void edma3OsProtectEntry (unsigned int edma3InstanceId, + int level, unsigned int *intState) + { + if (((level == EDMA3_OS_PROTECT_INTERRUPT) + || (level == EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR)) + && (intState == NULL)) + { + return; + } + else + { + switch (level) + { + /* Disable all (global) interrupts */ + case EDMA3_OS_PROTECT_INTERRUPT : + *intState = Hwi_disable(); + break; + + /* Disable scheduler */ + case EDMA3_OS_PROTECT_SCHEDULER : + Task_disable(); + break; + + /* Disable EDMA3 transfer completion interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_XFER_COMPLETION : + EventCombiner_disableEvent(ccXferCompInt[edma3InstanceId][region_id]); + break; + + /* Disable EDMA3 CC error interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_CC_ERROR : + EventCombiner_disableEvent(ccErrorInt[edma3InstanceId]); + break; + + /* Disable EDMA3 TC error interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR : + switch (*intState) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + /* Fall through... */ + /* Disable the corresponding interrupt */ + EventCombiner_disableEvent(tcErrorInt[edma3InstanceId][*intState]); + break; + + default: + break; + } + + break; + + default: + break; + } + } + } + + +/** + * \brief EDMA3 OS Protect Exit + * + * This function undoes the protection enforced to original state + * as is specified by the variable 'intState' passed, if the protection + * level is EDMA3_OS_PROTECT_INTERRUPT. + * For EDMA3_OS_PROTECT_INTERRUPT_XFER_COMPLETION and + * EDMA3_OS_PROTECT_INTERRUPT_CC_ERROR, variable 'intState' is ignored, + * and the requested interrupt is enabled. + * For EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR, 'intState' specifies the + * Transfer Controller number whose interrupt needs to be enabled. + * \param level is numeric identifier of the desired degree of protection. + * \param intState is original state of protection at time when the + * corresponding edma3OsProtectEntry() was called (Only + * for EDMA3_OS_PROTECT_INTERRUPT protection level). + * \return None + */ +void edma3OsProtectExit (unsigned int edma3InstanceId, + int level, unsigned int intState) + { + switch (level) + { + /* Enable all (global) interrupts */ + case EDMA3_OS_PROTECT_INTERRUPT : + Hwi_restore(intState); + break; + + /* Enable scheduler */ + case EDMA3_OS_PROTECT_SCHEDULER : + Task_enable(); + break; + + /* Enable EDMA3 transfer completion interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_XFER_COMPLETION : + EventCombiner_enableEvent(ccXferCompInt[edma3InstanceId][region_id]); + break; + + /* Enable EDMA3 CC error interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_CC_ERROR : + EventCombiner_enableEvent(ccErrorInt[edma3InstanceId]); + break; + + /* Enable EDMA3 TC error interrupt only */ + case EDMA3_OS_PROTECT_INTERRUPT_TC_ERROR : + switch (intState) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + /* Fall through... */ + /* Enable the corresponding interrupt */ + EventCombiner_enableEvent(tcErrorInt[edma3InstanceId][intState]); + break; + + default: + break; + } + + break; + + default: + break; + } + } + + +/** + * \brief EDMA3 Cache Invalidate + * + * This function invalidates the D cache. + * + * \param mem_start_ptr [IN] Starting address of memory. + * Please note that this should be + * aligned according to the cache line size. + * \param num_bytes [IN] length of buffer + * \return EDMA3_DRV_SOK if success, else error code in case of error + * or non-alignment of buffers. + * + * Note: This function is required if the buffer is in DDR. + * For other cases, where buffer is NOT in DDR, user + * may or may not require the below implementation and + * should modify it according to her need. + */ +EDMA3_DRV_Result Edma3_CacheInvalidate(unsigned int mem_start_ptr, + unsigned int num_bytes) + { + EDMA3_DRV_Result cacheInvResult = EDMA3_DRV_SOK; + + /* Verify whether the start address is cache aligned or not */ + if((mem_start_ptr & (EDMA3_CACHE_LINE_SIZE_IN_BYTES-1u)) != 0) + { +#ifdef EDMA3_DRV_DEBUG + EDMA3_DRV_PRINTF("\r\n Cache : Memory is not %d bytes alinged\r\n", + EDMA3_CACHE_LINE_SIZE_IN_BYTES); +#endif + cacheInvResult = EDMA3_NON_ALIGNED_BUFFERS_ERROR; + } + else + { + Cache_inv((Ptr)mem_start_ptr, num_bytes, Cache_Type_ALL, TRUE); + } + + return cacheInvResult; +} + + + +/** + * \brief EDMA3 Cache Flush + * + * This function flushes (cleans) the Cache + * + * \param mem_start_ptr [IN] Starting address of memory. + * Please note that this should be + * aligned according to the cache line size. + * \param num_bytes [IN] length of buffer + * \return EDMA3_DRV_SOK if success, else error code in case of error + * or non-alignment of buffers. + * + * Note: This function is required if the buffer is in DDR. + * For other cases, where buffer is NOT in DDR, user + * may or may not require the below implementation and + * should modify it according to her need. + */ +EDMA3_DRV_Result Edma3_CacheFlush(unsigned int mem_start_ptr, + unsigned int num_bytes) + { + EDMA3_DRV_Result cacheFlushResult = EDMA3_DRV_SOK; + + /* Verify whether the start address is cache aligned or not */ + if((mem_start_ptr & (EDMA3_CACHE_LINE_SIZE_IN_BYTES-1u)) != 0) + { +#ifdef EDMA3_DRV_DEBUG + EDMA3_DRV_PRINTF("\r\n Cache : Memory is not %d bytes alinged\r\n", + EDMA3_CACHE_LINE_SIZE_IN_BYTES); +#endif + cacheFlushResult = EDMA3_NON_ALIGNED_BUFFERS_ERROR; + } + else + { + Cache_wb((Ptr)mem_start_ptr, num_bytes, Cache_Type_ALL, TRUE); + } + + return cacheFlushResult; +} + + +/** + * Counting Semaphore related functions (OS dependent) should be + * called/implemented by the application. A handle to the semaphore + * is required while opening the driver/resource manager instance. + */ + +/** + * \brief EDMA3 OS Semaphore Create + * + * This function creates a counting semaphore with specified + * attributes and initial value. It should be used to create a semaphore + * with initial value as '1'. The semaphore is then passed by the user + * to the EDMA3 driver/RM for proper sharing of resources. + * \param initVal [IN] is initial value for semaphore + * \param semParams [IN] is the semaphore attributes. + * \param hSem [OUT] is location to recieve the handle to just created + * semaphore + * \return EDMA3_DRV_SOK if succesful, else a suitable error code. + */ +EDMA3_DRV_Result edma3OsSemCreate(int initVal, + const Semaphore_Params *semParams, + EDMA3_OS_Sem_Handle *hSem) + { + EDMA3_DRV_Result semCreateResult = EDMA3_DRV_SOK; + + if(NULL == hSem) + { + semCreateResult = EDMA3_DRV_E_INVALID_PARAM; + } + else + { + *hSem = (EDMA3_OS_Sem_Handle)Semaphore_create(initVal, semParams, NULL); + if ( (*hSem) == NULL ) + { + semCreateResult = EDMA3_DRV_E_SEMAPHORE; + } + } + + return semCreateResult; + } + + +/** + * \brief EDMA3 OS Semaphore Delete + * + * This function deletes or removes the specified semaphore + * from the system. Associated dynamically allocated memory + * if any is also freed up. + * \param hSem [IN] handle to the semaphore to be deleted + * \return EDMA3_DRV_SOK if succesful else a suitable error code + */ +EDMA3_DRV_Result edma3OsSemDelete(EDMA3_OS_Sem_Handle hSem) + { + EDMA3_DRV_Result semDeleteResult = EDMA3_DRV_SOK; + + if(NULL == hSem) + { + semDeleteResult = EDMA3_DRV_E_INVALID_PARAM; + } + else + { + Semaphore_delete((Semaphore_Handle *)&hSem); + } + + return semDeleteResult; + } + + +/** + * \brief EDMA3 OS Semaphore Take + * + * This function takes a semaphore token if available. + * If a semaphore is unavailable, it blocks currently + * running thread in wait (for specified duration) for + * a free semaphore. + * \param hSem [IN] is the handle of the specified semaphore + * \param mSecTimeout [IN] is wait time in milliseconds + * \return EDMA3_DRV_Result if successful else a suitable error code + */ +EDMA3_DRV_Result edma3OsSemTake(EDMA3_OS_Sem_Handle hSem, int mSecTimeout) + { + EDMA3_DRV_Result semTakeResult = EDMA3_DRV_SOK; + unsigned short semPendResult; + + if(NULL == hSem) + { + semTakeResult = EDMA3_DRV_E_INVALID_PARAM; + } + else + { + semPendResult = Semaphore_pend(hSem, mSecTimeout); + if (semPendResult == FALSE) + { + semTakeResult = EDMA3_DRV_E_SEMAPHORE; + } + } + + return semTakeResult; + } + + +/** + * \brief EDMA3 OS Semaphore Give + * + * This function gives or relinquishes an already + * acquired semaphore token + * \param hSem [IN] is the handle of the specified semaphore + * \return EDMA3_DRV_Result if successful else a suitable error code + */ +EDMA3_DRV_Result edma3OsSemGive(EDMA3_OS_Sem_Handle hSem) + { + EDMA3_DRV_Result semGiveResult = EDMA3_DRV_SOK; + + if(NULL == hSem) + { + semGiveResult = EDMA3_DRV_E_INVALID_PARAM; + } + else + { + Semaphore_post(hSem); + } + + return semGiveResult; + } + +/* End of File */ + diff --git a/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_init.c b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_init.c new file mode 100644 index 000000000..54fc95574 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_init.c @@ -0,0 +1,223 @@ +/* + * sample_init.c + * + * Sample Initialization for the EDMA3 Driver for BIOS 6 based applications. + * It should be MANDATORILY done once before EDMA3 usage. + * + * Copyright (C) 2009-2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#include +#include +#include + +#include "bios6_edma3_drv_sample.h" + +/** @brief EDMA3 Driver Instance specific Semaphore handle */ +extern EDMA3_OS_Sem_Handle semHandle[]; + +/** To Register the ISRs with the underlying OS, if required. */ +extern void registerEdma3Interrupts (unsigned int edma3Id); +/** To Unregister the ISRs with the underlying OS, if previously registered. */ +extern void unregisterEdma3Interrupts (unsigned int edma3Id); + +/* To find out the DSP# */ +extern unsigned short determineProcId(); + +/** + * To check whether the global EDMA3 configuration is required or not. + * It should be done ONCE by any of the masters present in the system. + * This function checks whether the global configuration is required by the + * current master or not. In case of many masters, it should be done only + * by one of the masters. Hence this function will return TRUE only once + * and FALSE for all other masters. + */ +extern unsigned short isGblConfigRequired(unsigned int dspNum); + +/** + * DSP instance number on which the executable is running. Its value is + * determined by reading the processor specific register DNUM. + */ +unsigned int dsp_num; + +/** + * Shadow Region on which the executable is runnig. Its value is populated + * with the DSP Instance Number here in this case. + */ +unsigned int region_id; + +/* Number of EDMA3 controllers present in the system */ +extern const unsigned int numEdma3Instances; + +/* External Global Configuration Structure */ +extern EDMA3_DRV_GblConfigParams sampleEdma3GblCfgParams[]; + +/* External Instance Specific Configuration Structure */ +extern EDMA3_DRV_InstanceInitConfig sampleInstInitConfig[][EDMA3_MAX_REGIONS]; + +#if defined (CHIP_TI814X) +extern EDMA3_DRV_Result sampleInitXbarEvt(EDMA3_DRV_Handle hEdma, unsigned int edma3Id); +#endif + +/** + * \brief EDMA3 Initialization + * + * This function initializes the EDMA3 Driver and registers the + * interrupt handlers. + * + * \return EDMA3_DRV_SOK if success, else error code + */ +EDMA3_DRV_Handle edma3init (unsigned int edma3Id, EDMA3_DRV_Result *errorCode) + { + EDMA3_DRV_Result edma3Result = EDMA3_DRV_E_INVALID_PARAM; + Semaphore_Params semParams; + EDMA3_DRV_GblConfigParams *globalConfig = NULL; + EDMA3_DRV_InitConfig initCfg; + EDMA3_RM_MiscParam miscParam; + EDMA3_DRV_Handle hEdma = NULL; + + if ((edma3Id >= numEdma3Instances) || (errorCode == NULL)) + return hEdma; + + /* DSP instance number */ + dsp_num = determineProcId(); +// dsp_num = 0; /* selection of region ID */ + + globalConfig = &sampleEdma3GblCfgParams[edma3Id]; + + /* Configure it as master, if required */ + miscParam.isSlave = isGblConfigRequired(dsp_num); + edma3Result = EDMA3_DRV_create (edma3Id, globalConfig , + (void *)&miscParam); + + if (edma3Result == EDMA3_DRV_SOK) + { + /** + * Driver Object created successfully. + * Create a semaphore now for driver instance. + */ + Semaphore_Params_init(&semParams); + + initCfg.drvSemHandle = NULL; + edma3Result = edma3OsSemCreate(1, &semParams, &initCfg.drvSemHandle); + } + + if (edma3Result == EDMA3_DRV_SOK) + { + /* Save the semaphore handle for future use */ + semHandle[edma3Id] = initCfg.drvSemHandle; + + /* Driver instance specific config NULL */ + initCfg.drvInstInitConfig = NULL; + +#ifndef EDMA3_DRV_USE_DEF_RM_CFG + /* Hook for running examples with default RM config */ + /* configuration structure for the Driver */ + initCfg.drvInstInitConfig = &sampleInstInitConfig[edma3Id][dsp_num]; +#endif + + initCfg.isMaster = TRUE; + /* Choose shadow region according to the DSP# */ + initCfg.regionId = (EDMA3_RM_RegionId)dsp_num; + /*Saving the regionId for using it in the sample_cs.c file */ + region_id = (EDMA3_RM_RegionId)dsp_num; + /* Driver instance specific config NULL */ + + initCfg.gblerrCb = NULL; + initCfg.gblerrData = NULL; + + /* Open the Driver Instance */ + hEdma = EDMA3_DRV_open (edma3Id, (void *) &initCfg, &edma3Result); + } + +#if defined (CHIP_TI814X) + { + if(hEdma && (edma3Result == EDMA3_DRV_SOK)) + { + edma3Result = sampleInitXbarEvt(hEdma, edma3Id); + } + } +#endif + if(hEdma && (edma3Result == EDMA3_DRV_SOK)) + { + /** + * Register Interrupt Handlers for various interrupts + * like transfer completion interrupt, CC error + * interrupt, TC error interrupts etc, if required. + */ + registerEdma3Interrupts(edma3Id); + } + + *errorCode = edma3Result; + return hEdma; + } + + +/** + * \brief EDMA3 De-initialization + * + * This function removes the EDMA3 Driver instance and unregisters the + * interrupt handlers. + * + * \return EDMA3_DRV_SOK if success, else error code + */ +EDMA3_DRV_Result edma3deinit (unsigned int edma3Id, EDMA3_DRV_Handle hEdma) + { + EDMA3_DRV_Result edma3Result = EDMA3_DRV_E_INVALID_PARAM; + + /* Unregister Interrupt Handlers first */ + unregisterEdma3Interrupts(edma3Id); + + /* Delete the semaphore */ + edma3Result = edma3OsSemDelete(semHandle[edma3Id]); + + if (EDMA3_DRV_SOK == edma3Result ) + { + /* Make the semaphore handle as NULL. */ + semHandle[edma3Id] = NULL; + + /* Now, close the EDMA3 Driver Instance */ + edma3Result = EDMA3_DRV_close (hEdma, NULL); + } + + if (EDMA3_DRV_SOK == edma3Result ) + { + /* Now, delete the EDMA3 Driver Object */ + edma3Result = EDMA3_DRV_delete (edma3Id, NULL); + } + + return edma3Result; + } + +/* End of File */ + diff --git a/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_omapl138_cfg.c b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_omapl138_cfg.c new file mode 100644 index 000000000..5e670ca80 --- /dev/null +++ b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_omapl138_cfg.c @@ -0,0 +1,1391 @@ +/* + * sample_omapl138_cfg.c + * + * SoC specific EDMA3 hardware related information like number of transfer + * controllers, various interrupt ids etc. It is used while interrupts + * enabling / disabling. It needs to be ported for different SoCs. + * + * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#include + +/* Number of EDMA3 controllers present in the system */ +#define NUM_EDMA3_INSTANCES 2u +const unsigned int numEdma3Instances = NUM_EDMA3_INSTANCES; + +/* Number of DSPs present in the system */ +#define NUM_DSPS 1u +const unsigned int numDsps = NUM_DSPS; + +/* Determine the processor id by reading DNUM register. */ +unsigned short determineProcId() +{ + return 1; +} + +signed char* getGlobalAddr(signed char* addr) +{ + return (addr); /* The address is already a global address */ +} +unsigned short isGblConfigRequired(unsigned int dspNum) +{ + (void) dspNum; + + return 1; +} + +/* Semaphore handles */ +EDMA3_OS_Sem_Handle semHandle[NUM_EDMA3_INSTANCES] = {NULL,NULL}; + +/** Number of PaRAM Sets available */ +#define EDMA3_NUM_PARAMSET (128u) +/** Number of TCCS available */ +#define EDMA3_NUM_TCC (32u) + +/** Number of Event Queues available */ +#define EDMA3_0_NUM_EVTQUE (2u) +#define EDMA3_1_NUM_EVTQUE (1u) + +/** Number of Transfer Controllers available */ +#define EDMA3_0_NUM_TC (2u) +#define EDMA3_1_NUM_TC (1u) + +#ifdef __TMS470__ /* values for ARM */ + +#else /* values for DSP */ +/** Interrupt no. for Transfer Completion */ +#define EDMA3_0_CC_XFER_COMPLETION_INT (8u) +#define EDMA3_1_CC_XFER_COMPLETION_INT (91u) + +/** Interrupt no. for CC Error */ +#define EDMA3_0_CC_ERROR_INT (56u) +#define EDMA3_1_CC_ERROR_INT (92u) + +/** Interrupt no. for TCs Error */ +#define EDMA3_0_TC0_ERROR_INT (57u) +#define EDMA3_0_TC1_ERROR_INT (58u) +#define EDMA3_0_TC2_ERROR_INT (0u) +#define EDMA3_0_TC3_ERROR_INT (0u) +#define EDMA3_0_TC4_ERROR_INT (0u) +#define EDMA3_0_TC5_ERROR_INT (0u) +#define EDMA3_0_TC6_ERROR_INT (0u) +#define EDMA3_0_TC7_ERROR_INT (0u) + +#define EDMA3_1_TC0_ERROR_INT (93u) +#define EDMA3_1_TC1_ERROR_INT (0u) +#define EDMA3_1_TC2_ERROR_INT (0u) +#define EDMA3_1_TC3_ERROR_INT (0u) +#define EDMA3_1_TC4_ERROR_INT (0u) +#define EDMA3_1_TC5_ERROR_INT (0u) +#define EDMA3_1_TC6_ERROR_INT (0u) +#define EDMA3_1_TC7_ERROR_INT (0u) + +/** + * EDMA3 interrupts (transfer completion, CC error etc.) correspond to different + * ECM events (SoC specific). These ECM events come + * under ECM block XXX (handling those specific ECM events). Normally, block + * 0 handles events 4-31 (events 0-3 are reserved), block 1 handles events + * 32-63 and so on. This ECM block XXX (or interrupt selection number XXX) + * is mapped to a specific HWI_INT YYY in the tcf file. + * Define EDMA3_HWI_INT_XFER_COMP to specific HWI_INT, corresponding + * to transfer completion interrupt. + * Define EDMA3_HWI_INT_CC_ERR to specific HWI_INT, corresponding + * to CC error interrupts. + * Define EDMA3_HWI_INT_TC_ERR to specific HWI_INT, corresponding + * to TC error interrupts. + */ +/* EDMA 0 */ +#define EDMA3_0_HWI_INT_XFER_COMP (7u) +#define EDMA3_0_HWI_INT_CC_ERR (8u) +#define EDMA3_0_HWI_INT_TC0_ERR (8u) +#define EDMA3_0_HWI_INT_TC1_ERR (8u) + +/* EDMA 1 */ +#define EDMA3_1_HWI_INT_XFER_COMP (9u) +#define EDMA3_1_HWI_INT_CC_ERR (9u) +#define EDMA3_1_HWI_INT_TC0_ERR (9u) + +#endif /* __TMS470__ */ + +/** + * \brief Mapping of DMA channels 0-31 to Hardware Events from + * various peripherals, which use EDMA for data transfer. + * All channels need not be mapped, some can be free also. + * 1: Mapped + * 0: Not mapped + * + * This mapping will be used to allocate DMA channels when user passes + * EDMA3_DRV_DMA_CHANNEL_ANY as dma channel id (for eg to do memory-to-memory + * copy). The same mapping is used to allocate the TCC when user passes + * EDMA3_DRV_TCC_ANY as tcc id (for eg to do memory-to-memory copy). + * + * To allocate more DMA channels or TCCs, one has to modify the event mapping. + */ + /* 31 0 */ +#define EDMA3_0_DMA_CHANNEL_TO_EVENT_MAPPING_0 (0xFF3FF3FFu) +#define EDMA3_1_DMA_CHANNEL_TO_EVENT_MAPPING_0 (0x3F07FFFFu) + +/** + * \brief Mapping of DMA channels 32-63 to Hardware Events from + * various peripherals, which use EDMA for data transfer. + * All channels need not be mapped, some can be free also. + * 1: Mapped + * 0: Not mapped + * + * This mapping will be used to allocate DMA channels when user passes + * EDMA3_DRV_DMA_CHANNEL_ANY as dma channel id (for eg to do memory-to-memory + * copy). The same mapping is used to allocate the TCC when user passes + * EDMA3_DRV_TCC_ANY as tcc id (for eg to do memory-to-memory copy). + * + * To allocate more DMA channels or TCCs, one has to modify the event mapping. + */ +/* DMA channels 32-63 DOES NOT exist in omapl138. */ +#define EDMA3_0_DMA_CHANNEL_TO_EVENT_MAPPING_1 (0x0u) +#define EDMA3_1_DMA_CHANNEL_TO_EVENT_MAPPING_1 (0x0u) + +/* Variable which will be used internally for referring number of Event Queues*/ +unsigned int numEdma3EvtQue[NUM_EDMA3_INSTANCES] = { + EDMA3_0_NUM_EVTQUE, + EDMA3_1_NUM_EVTQUE + }; + +/* Variable which will be used internally for referring number of TCs. */ +unsigned int numEdma3Tc[NUM_EDMA3_INSTANCES] = { + EDMA3_0_NUM_TC, + EDMA3_1_NUM_TC + }; + +/** + * Variable which will be used internally for referring transfer completion + * interrupt. + */ +unsigned int ccXferCompInt[NUM_EDMA3_INSTANCES][EDMA3_MAX_REGIONS] = { + { + 0u, EDMA3_0_CC_XFER_COMPLETION_INT, 0u, 0u, 0u, 0u, 0u, 0u, + }, + { + 0u, EDMA3_1_CC_XFER_COMPLETION_INT, 0u, 0u, 0u, 0u, 0u, 0u, + }, + }; + +/** + * Variable which will be used internally for referring channel controller's + * error interrupt. + */ +unsigned int ccErrorInt[NUM_EDMA3_INSTANCES] = { + EDMA3_0_CC_ERROR_INT, + EDMA3_1_CC_ERROR_INT + }; + +/** + * Variable which will be used internally for referring transfer controllers' + * error interrupts. + */ +unsigned int tcErrorInt[NUM_EDMA3_INSTANCES][8] = { + { + EDMA3_0_TC0_ERROR_INT, EDMA3_0_TC1_ERROR_INT, + EDMA3_0_TC2_ERROR_INT, EDMA3_0_TC3_ERROR_INT, + EDMA3_0_TC4_ERROR_INT, EDMA3_0_TC5_ERROR_INT, + EDMA3_0_TC6_ERROR_INT, EDMA3_0_TC7_ERROR_INT, + }, + { + EDMA3_1_TC0_ERROR_INT, EDMA3_1_TC1_ERROR_INT, + EDMA3_1_TC2_ERROR_INT, EDMA3_1_TC3_ERROR_INT, + EDMA3_1_TC4_ERROR_INT, EDMA3_1_TC5_ERROR_INT, + EDMA3_1_TC6_ERROR_INT, EDMA3_1_TC7_ERROR_INT, + } + }; + +/** + * Variables which will be used internally for referring the hardware interrupt + * for various EDMA3 interrupts. + */ +unsigned int hwIntXferComp[NUM_EDMA3_INSTANCES] = { + EDMA3_0_HWI_INT_XFER_COMP, + EDMA3_1_HWI_INT_XFER_COMP + }; + +unsigned int hwIntCcErr[NUM_EDMA3_INSTANCES] = { + EDMA3_0_HWI_INT_CC_ERR, + EDMA3_1_HWI_INT_CC_ERR + }; + +unsigned int hwIntTcErr[NUM_EDMA3_INSTANCES][8] = { + { + EDMA3_0_HWI_INT_TC0_ERR, + EDMA3_0_HWI_INT_TC1_ERR, + }, + { + EDMA3_1_HWI_INT_TC0_ERR, + } + }; + +/* Driver Object Initialization Configuration */ +EDMA3_DRV_GblConfigParams sampleEdma3GblCfgParams[NUM_EDMA3_INSTANCES] = +{ + { + /* EDMA3 INSTANCE# 0 */ + /** Total number of DMA Channels supported by the EDMA3 Controller */ + 32u, + /** Total number of QDMA Channels supported by the EDMA3 Controller */ + 8u, + /** Total number of TCCs supported by the EDMA3 Controller */ + 32u, + /** Total number of PaRAM Sets supported by the EDMA3 Controller */ + 128u, + /** Total number of Event Queues in the EDMA3 Controller */ + 2u, + /** Total number of Transfer Controllers (TCs) in the EDMA3 Controller*/ + 2u, + /** Number of Regions on this EDMA3 controller */ + 4u, + + /** + * \brief Channel mapping existence + * A value of 0 (No channel mapping) implies that there is fixed association + * for a channel number to a parameter entry number or, in other words, + * PaRAM entry n corresponds to channel n. + */ + 0u, + + /** Existence of memory protection feature */ + 0u, + + /** Global Register Region of CC Registers */ + (void *)0x01C00000u, + /** Transfer Controller (TC) Registers */ + { + (void *)0x01C08000u, + (void *)0x01C08400u, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL + }, + /** Interrupt no. for Transfer Completion */ + EDMA3_0_CC_XFER_COMPLETION_INT, + /** Interrupt no. for CC Error */ + EDMA3_0_CC_ERROR_INT, + /** Interrupt no. for TCs Error */ + { + EDMA3_0_TC0_ERROR_INT, + EDMA3_0_TC1_ERROR_INT, + EDMA3_0_TC2_ERROR_INT, + EDMA3_0_TC3_ERROR_INT, + EDMA3_0_TC4_ERROR_INT, + EDMA3_0_TC5_ERROR_INT, + EDMA3_0_TC6_ERROR_INT, + EDMA3_0_TC7_ERROR_INT + }, + + /** + * \brief EDMA3 TC priority setting + * + * User can program the priority of the Event Queues + * at a system-wide level. This means that the user can set the + * priority of an IO initiated by either of the TCs (Transfer Controllers) + * relative to IO initiated by the other bus masters on the + * device (ARM, DSP, USB, etc) + */ + { + 0u, + 1u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + /** + * \brief To Configure the Threshold level of number of events + * that can be queued up in the Event queues. EDMA3CC error register + * (CCERR) will indicate whether or not at any instant of time the + * number of events queued up in any of the event queues exceeds + * or equals the threshold/watermark value that is set + * in the queue watermark threshold register (QWMTHRA). + */ + { + 16u, + 16u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + + /** + * \brief To Configure the Default Burst Size (DBS) of TCs. + * An optimally-sized command is defined by the transfer controller + * default burst size (DBS). Different TCs can have different + * DBS values. It is defined in Bytes. + */ + { + 16u, + 16u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + + /** + * \brief Mapping from each DMA channel to a Parameter RAM set, + * if it exists, otherwise of no use. + */ + { + 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, + 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, + 16u, 17u, 18u, 19u, 20u, 21u, 22u, 23u, + 24u, 25u, 26u, 27u, 28u, 29u, 30u, 31u, + /* DMA channels 32-63 DOES NOT exist in OMAPL138. */ + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS + }, + + /** + * \brief Mapping from each DMA channel to a TCC. This specific + * TCC code will be returned when the transfer is completed + * on the mapped channel. + */ + { + 0u, 1u, 2u, 3u, + 4u, 5u, 6u, 7u, + 8u, 9u, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + 12u, 13u, 14u, 15u, + 16u, 17u, 18u, 19u, + 20u, 21u, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + 24u, 25u, 26u, 27u, + 28u, 29u, 30u, 31u, + /* DMA channels 32-63 DOES NOT exist in OMAPL138. */ + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC + }, + + /** + * \brief Mapping of DMA channels to Hardware Events from + * various peripherals, which use EDMA for data transfer. + * All channels need not be mapped, some can be free also. + */ + { + EDMA3_0_DMA_CHANNEL_TO_EVENT_MAPPING_0, + EDMA3_0_DMA_CHANNEL_TO_EVENT_MAPPING_1 + } + }, + + { + /* EDMA3 INSTANCE# 1 */ + /** Total number of DMA Channels supported by the EDMA3 Controller */ + 32u, + /** Total number of QDMA Channels supported by the EDMA3 Controller */ + 8u, + /** Total number of TCCs supported by the EDMA3 Controller */ + 32u, + /** Total number of PaRAM Sets supported by the EDMA3 Controller */ + 128u, + /** Total number of Event Queues in the EDMA3 Controller */ + 1u, + /** Total number of Transfer Controllers (TCs) in the EDMA3 Controller */ + 1u, + /** Number of Regions on this EDMA3 controller */ + 4u, + + /** + * \brief Channel mapping existence + * A value of 0 (No channel mapping) implies that there is fixed association + * for a channel number to a parameter entry number or, in other words, + * PaRAM entry n corresponds to channel n. + */ + 0u, + + /** Existence of memory protection feature */ + 0u, + + /** Global Register Region of CC Registers */ + (void *)0x01E30000u, + /** Transfer Controller (TC) Registers */ + { + (void *)0x01E38000u, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL, + (void *)NULL + }, + /** Interrupt no. for Transfer Completion */ + EDMA3_1_CC_XFER_COMPLETION_INT, + /** Interrupt no. for CC Error */ + EDMA3_1_CC_ERROR_INT, + /** Interrupt no. for TCs Error */ + { + EDMA3_1_TC0_ERROR_INT, + EDMA3_1_TC1_ERROR_INT, + EDMA3_1_TC2_ERROR_INT, + EDMA3_1_TC3_ERROR_INT, + EDMA3_1_TC4_ERROR_INT, + EDMA3_1_TC5_ERROR_INT, + EDMA3_1_TC6_ERROR_INT, + EDMA3_1_TC7_ERROR_INT, + }, + + /** + * \brief EDMA3 TC priority setting + * + * User can program the priority of the Event Queues + * at a system-wide level. This means that the user can set the + * priority of an IO initiated by either of the TCs (Transfer Controllers) + * relative to IO initiated by the other bus masters on the + * device (ARM, DSP, USB, etc) + */ + { + 0u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + /** + * \brief To Configure the Threshold level of number of events + * that can be queued up in the Event queues. EDMA3CC error register + * (CCERR) will indicate whether or not at any instant of time the + * number of events queued up in any of the event queues exceeds + * or equals the threshold/watermark value that is set + * in the queue watermark threshold register (QWMTHRA). + */ + { + 16u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + + /** + * \brief To Configure the Default Burst Size (DBS) of TCs. + * An optimally-sized command is defined by the transfer controller + * default burst size (DBS). Different TCs can have different + * DBS values. It is defined in Bytes. + */ + { + 16u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u, + 0u + }, + + /** + * \brief Mapping from each DMA channel to a Parameter RAM set, + * if it exists, otherwise of no use. + */ + { + 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, + 8u, 9u, 10u, 11u, 12u, 13u, 14u, 15u, + 16u, 17u, 18u, 19u, 20u, 21u, 22u, 23u, + 24u, 25u, 26u, 27u, 28u, 29u, 30u, 31u, + /* DMA channels 32-63 DOES NOT exist in OMAPL138. */ + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS, + EDMA3_MAX_PARAM_SETS, EDMA3_MAX_PARAM_SETS + }, + + /** + * \brief Mapping from each DMA channel to a TCC. This specific + * TCC code will be returned when the transfer is completed + * on the mapped channel. + */ + { + 0u, 1u, 2u, 3u, + 4u, 5u, 6u, 7u, + 8u, 9u, 10u, 11u, + 12u, 13u, 14u, 15u, + 16u, 17u, 18u, EDMA3_RM_CH_NO_TCC_MAP, + EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + 24u, 25u, 26u, 27u, + 28u, 29u, EDMA3_RM_CH_NO_TCC_MAP, EDMA3_RM_CH_NO_TCC_MAP, + /* DMA channels 32-63 DOES NOT exist in OMAPL138. */ + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, + EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC, EDMA3_MAX_TCC + }, + + /** + * \brief Mapping of DMA channels to Hardware Events from + * various peripherals, which use EDMA for data transfer. + * All channels need not be mapped, some can be free also. + */ + { + EDMA3_1_DMA_CHANNEL_TO_EVENT_MAPPING_0, + EDMA3_1_DMA_CHANNEL_TO_EVENT_MAPPING_1 + } + }, +}; + + +/* Driver Instance Initialization Configuration */ +EDMA3_DRV_InstanceInitConfig sampleInstInitConfig[NUM_EDMA3_INSTANCES][EDMA3_MAX_REGIONS] = +{ + /* EDMA3 INSTANCE# 0 */ + { + /* Resources owned/reserved by region 0 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + /* Resources owned/reserved by region 1 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0xFFFFFFFFu, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x000000FFu}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0xFFFFFFFFu, 0x00000000u}, + + /* Resources reserved by Region 1 */ + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0xFFFFFFFFu, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* resvdDmaChannels */ + /* 31 0 */ + {0xFF3FF3FFu, + /* 63..32 */ + 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 */ + {EDMA3_0_DMA_CHANNEL_TO_EVENT_MAPPING_0, + /* 63..32 */ + EDMA3_0_DMA_CHANNEL_TO_EVENT_MAPPING_1}, + }, + /* Resources owned/reserved by region 2 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 3 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 4 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 5 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 6 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 7 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + }, + /* EDMA3 INSTANCE# 1 */ + { + /* Resources owned/reserved by region 0 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + /* Resources owned by Region 1 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0xFFFFFFFFu, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x000000FFu}, + + /* ownTccs */ + /* 31 0 63 32 */ + { + 0xFFFFFFFFu, + 0x00000000u + }, + + /* Resources reserved by Region 1 */ + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + { + 0xFFFFFFFFu, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + }, + + /* resvdDmaChannels */ + /* 31 0 */ + { + EDMA3_1_DMA_CHANNEL_TO_EVENT_MAPPING_0, + /* 63..32 */ + EDMA3_1_DMA_CHANNEL_TO_EVENT_MAPPING_1 + }, + + /* resvdQdmaChannels */ + /* 31 0 */ + { + 0x00000000u + }, + + /* resvdTccs */ + /* 31 0 */ + { + 0x3F07FFFFu, + /* 63..32 */ + 0x00000000u + }, + }, + /* Resources owned/reserved by region 2 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 3 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 4 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x0000F000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 5 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 6 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + }, + + /* Resources owned/reserved by region 7 */ + { + /* ownPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* ownDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* ownQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* ownTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdPaRAMSets */ + /* 31 0 63 32 95 64 127 96 */ + {0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 159 128 191 160 223 192 255 224 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 287 256 319 288 351 320 383 352 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, + /* 415 384 447 416 479 448 511 480 */ + 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u}, + + /* resvdDmaChannels */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + + /* resvdQdmaChannels */ + /* 31 0 */ + {0x00000000u}, + + /* resvdTccs */ + /* 31 0 63 32 */ + {0x00000000u, 0x00000000u}, + } + } +}; + +/* End of File */ + diff --git a/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_omapl138_int_reg.c b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_omapl138_int_reg.c new file mode 100644 index 000000000..e82c9392b --- /dev/null +++ b/packages/ti/drv/mcbsp/example/omapl138/MCBSPDigLpbk/sample_omapl138_int_reg.c @@ -0,0 +1,152 @@ +/* + * sample_omapl138_int_reg.c + * + * Platform specific interrupt registration and un-registration routines. + * + * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +#include +#include +#include + +#include + +/** + * EDMA3 TC ISRs which need to be registered with the underlying OS by the user + * (Not all TC error ISRs need to be registered, register only for the + * available Transfer Controllers). + */ +void (*ptrEdma3TcIsrHandler[EDMA3_MAX_TC])(unsigned int arg) = + { + &lisrEdma3TC0ErrHandler0, + &lisrEdma3TC1ErrHandler0, + &lisrEdma3TC2ErrHandler0, + &lisrEdma3TC3ErrHandler0, + &lisrEdma3TC4ErrHandler0, + &lisrEdma3TC5ErrHandler0, + &lisrEdma3TC6ErrHandler0, + &lisrEdma3TC7ErrHandler0, + }; + +extern unsigned int ccXferCompInt[][EDMA3_MAX_REGIONS]; +extern unsigned int ccErrorInt[]; +extern unsigned int tcErrorInt[][EDMA3_MAX_TC]; +extern unsigned int numEdma3Tc[]; + +/** + * Variables which will be used internally for referring the hardware interrupt + * for various EDMA3 interrupts. + */ +extern unsigned int hwIntXferComp[]; +extern unsigned int hwIntCcErr[]; +extern unsigned int hwIntTcErr[]; + +extern unsigned int dsp_num; + +/** To Register the ISRs with the underlying OS, if required. */ +void registerEdma3Interrupts (unsigned int edma3Id) + { + static UInt32 cookie = 0; + unsigned int numTc = 0; + + /* Disabling the global interrupts */ + cookie = Hwi_disable(); + + /* Enable the Xfer Completion Event Interrupt */ + EventCombiner_dispatchPlug(ccXferCompInt[edma3Id][dsp_num], + (EventCombiner_FuncPtr)(&lisrEdma3ComplHandler0), + edma3Id, 1); + EventCombiner_enableEvent(ccXferCompInt[edma3Id][dsp_num]); + + /* Enable the CC Error Event Interrupt */ + EventCombiner_dispatchPlug(ccErrorInt[edma3Id], + (EventCombiner_FuncPtr)(&lisrEdma3CCErrHandler0), + edma3Id, 1); + EventCombiner_enableEvent(ccErrorInt[edma3Id]); + + /* Enable the TC Error Event Interrupt, according to the number of TCs. */ + while (numTc < numEdma3Tc[edma3Id]) + { + EventCombiner_dispatchPlug(tcErrorInt[edma3Id][numTc], + (EventCombiner_FuncPtr)(ptrEdma3TcIsrHandler[numTc]), + edma3Id, 1); + EventCombiner_enableEvent(tcErrorInt[edma3Id][numTc]); + numTc++; + } + + /** + * Enabling the HWI_ID. + * EDMA3 interrupts (transfer completion, CC error etc.) + * correspond to different ECM events (SoC specific). These ECM events come + * under ECM block XXX (handling those specific ECM events). Normally, block + * 0 handles events 4-31 (events 0-3 are reserved), block 1 handles events + * 32-63 and so on. This ECM block XXX (or interrupt selection number XXX) + * is mapped to a specific HWI_INT YYY in the tcf file. So to enable this + * mapped HWI_INT YYY, one should use the corresponding bitmask in the + * API C64_enableIER(), in which the YYY bit is SET. + */ + Hwi_enableInterrupt(hwIntXferComp[edma3Id]); + Hwi_enableInterrupt(hwIntCcErr[edma3Id]); + Hwi_enableInterrupt(hwIntTcErr[edma3Id]); + + /* Restore interrupts */ + Hwi_restore(cookie); + } + +/** To Unregister the ISRs with the underlying OS, if previously registered. */ +void unregisterEdma3Interrupts (unsigned int edma3Id) + { + static UInt32 cookie = 0; + unsigned int numTc = 0; + + /* Disabling the global interrupts */ + cookie = Hwi_disable(); + + /* Disable the Xfer Completion Event Interrupt */ + EventCombiner_disableEvent(ccXferCompInt[edma3Id][dsp_num]); + + /* Disable the CC Error Event Interrupt */ + EventCombiner_disableEvent(ccErrorInt[edma3Id]); + + /* Enable the TC Error Event Interrupt, according to the number of TCs. */ + while (numTc < numEdma3Tc[edma3Id]) + { + EventCombiner_disableEvent(tcErrorInt[edma3Id][numTc]); + numTc++; + } + + /* Restore interrupts */ + Hwi_restore(cookie); + } + diff --git a/packages/ti/drv/mcbsp/include/Module.xs b/packages/ti/drv/mcbsp/include/Module.xs new file mode 100644 index 000000000..8faf45ab0 --- /dev/null +++ b/packages/ti/drv/mcbsp/include/Module.xs @@ -0,0 +1,33 @@ +/****************************************************************************** + * FILE PURPOSE: MCBSP LLD include files. + ****************************************************************************** + * FILE NAME: module.xs + * + * DESCRIPTION: + * This file contains the module specification for MCBSP LLD include directory + * + * Copyright (C) 2012, Texas Instruments, Inc. + *****************************************************************************/ + +/* Load the library utility. */ +var libUtility = xdc.loadCapsule ("../build/buildlib.xs"); + +/************************************************************************** + * FUNCTION NAME : modBuild + ************************************************************************** + * DESCRIPTION : + * The function is used to add all the header files in the include + * directory into the package. + **************************************************************************/ +function modBuild() +{ + /* Add all the .h files to the release package. */ + var testFiles = libUtility.listAllFiles (".h", "include", true); + for (var k = 0 ; k < testFiles.length; k++) + Pkg.otherFiles[Pkg.otherFiles.length++] = testFiles[k]; + + /* Add all the .mk files to the release package. */ + var mkFiles = libUtility.listAllFiles (".mk", "include", true); + for (var k = 0 ; k < mkFiles.length; k++) + Pkg.otherFiles[Pkg.otherFiles.length++] = mkFiles[k]; +} diff --git a/packages/ti/drv/mcbsp/include/mcbsp_pvt.h b/packages/ti/drv/mcbsp/include/mcbsp_pvt.h new file mode 100644 index 000000000..9bbe7d0aa --- /dev/null +++ b/packages/ti/drv/mcbsp/include/mcbsp_pvt.h @@ -0,0 +1,448 @@ +/* + * mcbsp_pvt.h + * + * McBSP Driver internal header file + * + * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ +/** + * \file mcbsp_pvt.h + * + * \brief Header file conataining the driver internal definitions and data + * structures. + * + * (C) Copyright 2012, Texas Instruments, Inc + * + */ + +#ifndef _MCBSP_PVT_H_ +#define _MCBSP_PVT_H_ + + +/*============================================================================*/ +/* INCLUDE FILES */ +/*============================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + +/* MCBSP LLD includes */ +#include +#include +#include +#include + +/*============================================================================*/ +/* MACRO DEFINTIONS */ +/*============================================================================*/ + +#define Mcbsp_MAXLINKCNT (2u) +/**< Maximum number of EDMA jobs linked at a time (Must be 2). */ + +#define Mcbsp_TXEVENTQUE (1u) +/**< Transmit EDMA channel event queue number */ + +#define Mcbsp_RXEVENTQUE (2u) +/**< Receive EDMA channel event queue number */ + +#define Mcbsp_CNT_MAX_VAL (0xFFFFu) +/**< Max possible value of aCnt, bCnt and cCnt */ + +#define Mcbsp_STATUS_INVALID (0xFFFF) +/**< Generic invalidate status */ + +#define Mcbsp_STATUS_VALID (0x1) +/**< Generic validate status */ + +#define Mcbsp_MAX_IOBUF_SIZE (32768u) +/**< Maximum sixe of the I/O buffer programmable */ + +#define Mcbsp_FRAME_LENGTH (127u) +/**< No of frames Max supported by the mcbsp */ + +#ifndef CSL_MCBSP_PER_CNT +#define CSL_MCBSP_PER_CNT CSL_MCBSP_CNT +#endif +/*============================================================================*/ +/* ENUMERATED DATA TYPES */ +/*============================================================================*/ + +/** + * \brief Mcbsp driver state + * + * Mcbsp driver state enums used to track the driver and channel state. + */ +typedef enum Mcbsp_DriverState_t +{ + Mcbsp_DriverState_DELETED, + Mcbsp_DriverState_CREATED, + Mcbsp_DriverState_INITIALIZED, + Mcbsp_DriverState_OPENED, + Mcbsp_DriverState_CLOSED, + Mcbsp_DriverState_DEINITIALIZED +}Mcbsp_DriverState; +/**< Mcbsp driver and channel states */ + +/** + * \brief Mcbsp SPCR control enums + * + * These enums are used to control the settings of the SPCR register. + */ +typedef enum Mcbsp_SpcrCtrl_t +{ + Mcbsp_SpcrCtrl_RX_ENABLE = (1u), + /**< To enable receiver in resetControl Function */ + + Mcbsp_SpcrCtrl_TX_ENABLE = (2u), + /**< To enable Transmitter in resetControl Function */ + + Mcbsp_SpcrCtrl_RX_DISABLE = (4u), + /**< To disable Receiver in resetControl Function */ + + Mcbsp_SpcrCtrl_TX_DISABLE = (8u), + /**< To disable Transmitter in resetControl Function */ + + Mcbsp_SpcrCtrl_FSYNC_ENABLE = (16u), + /**< To enable Frame Sync Generation in resetControl Function */ + + Mcbsp_SpcrCtrl_SRG_ENABLE = (32u), + /**< To enable Sample Rate Generator in resetControl Function */ + + Mcbsp_SpcrCtrl_FSYNC_DISABLE = (64u), + /**< To disable Frame Sync Generation in resetControl Function*/ + + Mcbsp_SpcrCtrl_SRG_DISABLE = (128u) + /**< To disable Sample Rate Generator in resetControl Function*/ +}Mcbsp_SpcrCtrl; +/**< Mcbsp SPCR control enums */ + +/*============================================================================*/ +/* DATA STRUCTURES */ +/*============================================================================*/ + +typedef struct Mcbsp_Object_t Mcbsp_Object; + +/** + * \brief Mcbsp channel Object + * + * This structure maintains the current channel state. It also holds + * information on DMA channel being used and holds the application + * callback function to be called in case of an interrupt. + * + * This structure is initialized by mdCreateChan and a pointer to this + * is passed down to all other channel related functions. Lifetime of + * the data structure is from its creation by mdCreateChan till it + * is invalidated by mdDeleteChan.each instance object will have two channel + * object one for TX and one for the RX channel. + */ +typedef struct Mcbsp_ChannelObj_t +{ + uint16_t mode; + /**< Mode of operation of the channel (MCBSP_MODE_INPUT or MCBSP_MODE_OUTPUT) */ + + Mcbsp_DriverState chanState; + /**< operational state of the channel (opened/closed) */ + + Mcbsp_Object *devHandle; + /**< Pointer to McBSP device driver instance object */ + + Mcbsp_CallbackFxn cbFxn; + /**< Driver call back function to be called once a I/O buffer is processed*/ + + void* cbArg; + /**< Callback Function argument */ + + void* edmaHandle; + /**< Handle to the EDMA3 driver(given by application) */ + + uint32_t edmaEventQue; + /**< EDMA event queue to be used by the channel */ + + EDMA3_RM_TccCallback edmaCallback; + /**< Edma callback function pointer */ + + uint32_t xferChan; + /**< eDMA ChannelID */ + + uint32_t tcc ; + /**< EDMA transfer completion code */ + + uint32_t pramTbl[Mcbsp_MAXLINKCNT]; + /**< Logical channel numbers of EDMA, which are used for linking */ + + uint32_t pramTblAddr[Mcbsp_MAXLINKCNT]; + /**< Physical address of logical channel numbers of EDMA, which * + * are used for linking */ + + void* ptrQPendList; + /**< Queue to hold the pending I/O buffers received from the application */ + + void* ptrQFloatList; + /**< Queue to manage floating I/O buffers in DMA */ + + Mcbsp_IOBuf *tempIOBuf; + /**< Temporary I/O buffer holder */ + + Mcbsp_IOBuf *dataIOBuf; + /**< Temporary I/O buffer holder used to load the next buffer in to EDMA */ + + uint32_t submitCount; + /**< Number of submit calls pending in the driver */ + + Mcbsp_BufferFormat dataFormat; + /**< Application supplied buffer format */ + + Bool nextFlag; + /**< Flag to indicate if the state machine can be stopped or not */ + + volatile Bool bMuteON; + /**< Flag to set the mute ON/OFF status */ + + volatile Bool paused; + /**< Flag to indicate if the audio is paused or not */ + + volatile Bool flush; + /**< Flag to indicate if the Driver IO request flush is set */ + + volatile Bool isTempIOBufValid; + /**< Flag to indicate whether a valid buffer is available in tempIOBuf */ + + Bool enableHwFifo; + /**< whether the FIFO has to be enabled for this channel */ + + Mcbsp_GblErrCallback gblErrCbk; + /**< Callback to called in case an error occurs(supplied by application) */ + + uint32_t userDataBufferSize; + /**< Size of the data buffer to be transferred */ + + void* loopJobBuffer; + /**< Buffer to be transferred when the loop job is running */ + + uint16_t loopJobLength; + /** + +PackagePackager +{} + +PackageRelease +<%PatchVersion%> + +PackageSummary +{} + +PackageVersion +<%MajorVersion%>.<%MinorVersion%> + +PreserveFilePermissions +Yes + +ProjectID +7411AF15-11B6-4788-A724-5593C23D1A85 + +ProjectVersion +1.2.5.1 + +SaveOnlyToplevelDirs +No + +ScriptExt +.bat + +ShortAppName +mcbsplld + +SkipUnusedFileGroups +Yes + +Theme +Modern_Wizard + +ThemeDir +Modern_Wizard + +ThemeVersion +1 + +UpgradeApplicationID +{} + +Version +1.00.00 + +} + +array set ::InstallJammer::InstallCommandLineOptions { +debug +{Debugging Switch Yes No {} {run installer in debug mode}} + +debugconsole +{ShowConsole Switch Yes No {} {run installer with a debug console open}} + +mode +{InstallMode Choice No No {Console Default Silent Standard} {set the mode to run the installer in}} + +prefix +{InstallDir String No No {} {set the installation directory}} + +test +{Testing Switch Yes No {} {run installer without installing any files}} + +} +array set ::InstallJammer::UninstallCommandLineOptions { +debugconsole +{ShowConsole Switch Yes No {} {run uninstaller with a debug console open}} + +mode +{UninstallMode Choice No No {Console Silent Standard} {set the mode to run the uninstaller in}} + +test +{Testing Switch Yes No {} {run uninstaller without uninstalling any files}} + +} +FileGroup ::9C2BD124-0063-45FA-B2A1-C07E95BD54A1 -setup Install -active Yes -platforms {AIX-ppc FreeBSD-4-x86 FreeBSD-x86 HPUX-hppa Linux-x86 MacOS-X Solaris-sparc Windows TarArchive ZipArchive} -name {Program Files} -parent FileGroups +File ::FE37B907-83B3-438F-9B8B-A82F07506482 -type dir -directory <%InstallDir%> -name <%PackageBaseDir%> -parent 9C2BD124-0063-45FA-B2A1-C07E95BD54A1 +Component ::4A7B5960-702D-4678-8533-D085CF653F0E -setup Install -active Yes -platforms {AIX-ppc FreeBSD-4-x86 FreeBSD-x86 HPUX-hppa Linux-x86 MacOS-X Solaris-sparc Windows} -name {Default Component} -parent Components +SetupType ::88F9D095-410E-4CF2-80DB-1423246F8E42 -setup Install -active Yes -platforms {AIX-ppc FreeBSD-4-x86 FreeBSD-x86 HPUX-hppa Linux-x86 MacOS-X Solaris-sparc Windows} -name Typical -parent SetupTypes +SetupType ::B1323B62-5067-4380-9E19-A2F6DFE8F186 -setup Install -active Yes -platforms {AIX-ppc FreeBSD-4-x86 FreeBSD-x86 HPUX-hppa Linux-x86 MacOS-X Solaris-sparc Windows} -name Custom -parent SetupTypes + +InstallComponent 4833AC49-ACAD-4F73-9DCA-5117D5C142A5 -setup Install -type pane -title {Welcome Screen} -component Welcome -active Yes -parent StandardInstall +InstallComponent ED5A5BCE-2833-4247-A114-51E972369F26 -setup Install -type pane -conditions {42CE5801-5679-4E0A-B2D6-BF04187F6D6D 7B57D332-CFA8-4B68-AC63-2AA9DE785606} -title {Select Destination} -component SelectDestination -command insert -active Yes -parent StandardInstall +Condition 42CE5801-5679-4E0A-B2D6-BF04187F6D6D -active Yes -parent ED5A5BCE-2833-4247-A114-51E972369F26 -title {Script Condition} -component ScriptCondition +Condition 7B57D332-CFA8-4B68-AC63-2AA9DE785606 -active Yes -parent ED5A5BCE-2833-4247-A114-51E972369F26 -title {File Permission Condition} -component FilePermissionCondition +InstallComponent 498D9EBC-6F70-4CCC-8A88-B3F019A2B880 -setup Install -type pane -title {Start Copying Files} -component StartCopyingFiles -active Yes -parent StandardInstall +InstallComponent 0A802EE9-DF59-4623-91FC-CB9765D8F9B3 -setup Install -type pane -title {License Agreement} -component License -active Yes -parent StandardInstall +InstallComponent 2E8052B5-4C1E-45E5-8C6E-5021E7D9835A -setup Install -type action -conditions {318C333C-A42B-4001-954A-DCC1EB64CE38 C6028DBC-6E23-4643-9B0F-4F7524BA11E5} -title {Modify Widget} -component ModifyWidget -command insert -active Yes -parent 0A802EE9-DF59-4623-91FC-CB9765D8F9B3 +Condition 318C333C-A42B-4001-954A-DCC1EB64CE38 -active Yes -parent 2E8052B5-4C1E-45E5-8C6E-5021E7D9835A -title {String Is Condition} -component StringIsCondition +Condition C6028DBC-6E23-4643-9B0F-4F7524BA11E5 -active Yes -parent 2E8052B5-4C1E-45E5-8C6E-5021E7D9835A -title {String Is Condition} -component StringIsCondition +InstallComponent 13317AAD-0D0A-4D0A-9BEA-922810029FE5 -setup Install -type pane -title {Copying Files} -component CopyFiles -active Yes -parent StandardInstall +InstallComponent 8758570E-CC44-456D-918E-2E5249DAC439 -setup Install -type action -title {Disable Buttons} -component ModifyWidget -active Yes -parent 13317AAD-0D0A-4D0A-9BEA-922810029FE5 +InstallComponent AAF9B489-84A3-4C35-A9CB-BBA9130F22F7 -setup Install -type action -title {Execute Action} -component ExecuteAction -active Yes -parent 13317AAD-0D0A-4D0A-9BEA-922810029FE5 +InstallComponent 648469D4-E8C8-4AFC-9AE3-F3BC6252F8CE -setup Install -type action -title {Move Forward} -component MoveForward -active Yes -parent 13317AAD-0D0A-4D0A-9BEA-922810029FE5 +InstallComponent CEC0D285-9438-4659-94E5-AC4B5F753CDB -setup Install -type pane -title {Setup Complete} -component SetupComplete -active Yes -parent StandardInstall +InstallComponent E0654B3D-6ABE-4640-9503-3DCE15658FEE -setup Install -type pane -title {Copying Files} -component CopyFiles -active Yes -parent DefaultInstall +InstallComponent 0FF988B2-BC2F-4F17-BE70-28D7FE7846C9 -setup Install -type action -title {Disable Buttons} -component ModifyWidget -active Yes -parent E0654B3D-6ABE-4640-9503-3DCE15658FEE +InstallComponent 836D6530-DC39-4773-BE74-19D0B2B54492 -setup Install -type action -title {Execute Action} -component ExecuteAction -active Yes -parent E0654B3D-6ABE-4640-9503-3DCE15658FEE +InstallComponent 01720202-EE2E-4FE8-897F-E7F5D4445E2B -setup Install -type action -title {Move Forward} -component MoveForward -active Yes -parent E0654B3D-6ABE-4640-9503-3DCE15658FEE +InstallComponent 6428BA12-614A-4569-8D06-E7F83657F0F1 -setup Install -type pane -title {Setup Complete} -component SetupComplete -active Yes -parent DefaultInstall +InstallComponent FF7E9736-C092-4E83-8CA7-634DAEBB819A -setup Install -type action -title {Console Ask Yes Or No} -component ConsoleAskYesOrNo -active Yes -parent ConsoleInstall +InstallComponent A7800E5F-F3E8-41B2-BE9F-8C7B3BC59209 -setup Install -type action -conditions 5F91FDFD-757E-48E1-A71E-A886EACEFEA2 -title Exit -component Exit -command insert -active Yes -parent ConsoleInstall +Condition 5F91FDFD-757E-48E1-A71E-A886EACEFEA2 -active Yes -parent A7800E5F-F3E8-41B2-BE9F-8C7B3BC59209 -title {String Is Condition} -component StringIsCondition +InstallComponent 16772531-4012-4BDA-946C-64DA3926C388 -setup Install -type action -conditions 2358DAA5-293A-4A4D-91F8-5F48B2F85AD6 -title {Console Get User Input} -component ConsoleGetUserInput -command insert -active Yes -parent ConsoleInstall +Condition 2358DAA5-293A-4A4D-91F8-5F48B2F85AD6 -active Yes -parent 16772531-4012-4BDA-946C-64DA3926C388 -title {File Permission Condition} -component FilePermissionCondition +InstallComponent EFC3A89B-C0AB-441F-9AF0-420E66AE1431 -setup Install -type action -title {Console Message} -component ConsoleMessage -active Yes -parent ConsoleInstall +InstallComponent 10512CB0-772F-47B7-A58B-61B920D94C1F -setup Install -type action -title {Execute Action} -component ExecuteAction -active Yes -parent ConsoleInstall +InstallComponent A116668A-21D1-4E54-A590-9E523E6CF807 -setup Install -type action -title {Console Message} -component ConsoleMessage -active Yes -parent ConsoleInstall +InstallComponent 4A6B20C7-EEA3-4C05-A9FA-7234E3DBE91E -setup Install -type action -title Exit -component Exit -active Yes -parent ConsoleInstall +InstallComponent 5442E77A-E443-4D83-8FE8-0D4FED32E57A -setup Install -type action -title {Execute Action} -component ExecuteAction -active Yes -parent SilentInstall +InstallComponent 76F4FED5-0F82-4FE4-A14C-0DD5392B9BBF -setup Install -type action -title Exit -component Exit -active Yes -parent SilentInstall +InstallComponent 52CA7D36-64EE-4764-94D3-B6A39AC459FE -setup Install -type actiongroup -title {Setup Actions} -alias {Setup Actions} -active Yes -parent ActionGroupsInstall +InstallComponent 20725B89-270C-423C-A0E6-A7632A296664 -setup Install -type actiongroup -title {Startup Actions} -alias {Startup Actions} -active Yes -parent ActionGroupsInstall +InstallComponent 2C2E1A2C-CB1E-49A3-A557-82185D2F1B9A -setup Install -type action -conditions {60B1FD97-331A-4F0D-8CA9-4EA1F08E7FC8 1F9C9836-090E-4017-95FD-C4F288FD3A99} -title Exit -component Exit -command insert -active Yes -parent 20725B89-270C-423C-A0E6-A7632A296664 +Condition 60B1FD97-331A-4F0D-8CA9-4EA1F08E7FC8 -active Yes -parent 2C2E1A2C-CB1E-49A3-A557-82185D2F1B9A -title {String Is Condition} -component StringIsCondition +Condition 1F9C9836-090E-4017-95FD-C4F288FD3A99 -active Yes -parent 2C2E1A2C-CB1E-49A3-A557-82185D2F1B9A -title {Ask Yes or No} -component AskYesOrNo +InstallComponent FF789AC3-26B4-42DD-824B-E49A00C4777B -setup Install -type action -title {Create Install Panes} -component CreateInstallPanes -active Yes -parent 20725B89-270C-423C-A0E6-A7632A296664 +InstallComponent 9D397587-6063-49F6-9BA4-E43087E1FB87 -setup Install -type actiongroup -title {Install Actions} -alias {Install Actions} -active Yes -parent ActionGroupsInstall +InstallComponent 62C46726-ACBB-4E99-8A2F-DD5BFB8E6DCD -setup Install -type action -title {Install Selected Files} -component InstallSelectedFiles -active Yes -parent 9D397587-6063-49F6-9BA4-E43087E1FB87 +InstallComponent CF6BE1B7-08AA-4981-814E-20DDC4DD857C -setup Install -type action -conditions BD8849A8-F751-4F23-960A-81E257F72CAB -title {Install Uninstaller} -component InstallUninstaller -command insert -active Yes -parent 9D397587-6063-49F6-9BA4-E43087E1FB87 +Condition BD8849A8-F751-4F23-960A-81E257F72CAB -active Yes -parent CF6BE1B7-08AA-4981-814E-20DDC4DD857C -title {String Is Condition} -component StringIsCondition +InstallComponent F700A731-92D7-4A9A-91AB-71A5AFCB2E5E -setup Install -type action -conditions 969091FA-E868-4D96-8A8E-5F1E210773ED -title {Windows Uninstall Registry} -component AddWindowsUninstallEntry -command insert -active Yes -parent 9D397587-6063-49F6-9BA4-E43087E1FB87 +Condition 969091FA-E868-4D96-8A8E-5F1E210773ED -active Yes -parent F700A731-92D7-4A9A-91AB-71A5AFCB2E5E -title {String Is Condition} -component StringIsCondition +InstallComponent 0402CF48-EBA5-47C5-A284-9D3E54108FD3 -setup Install -type action -conditions 1174CE7D-A448-4E31-8816-3A25BD3B73D9 -title {Uninstall Shortcut} -component InstallProgramFolderShortcut -command insert -active Yes -parent 9D397587-6063-49F6-9BA4-E43087E1FB87 +Condition 1174CE7D-A448-4E31-8816-3A25BD3B73D9 -active Yes -parent 0402CF48-EBA5-47C5-A284-9D3E54108FD3 -title {String Is Condition} -component StringIsCondition +InstallComponent A026EF93-0A9B-4999-A486-955C04DCFB09 -setup Install -type actiongroup -title {Finish Actions} -alias {Finish Actions} -active Yes -parent ActionGroupsInstall +InstallComponent 0370AA35-7C4C-4E74-8F5E-C66476F94086 -setup Install -type actiongroup -title {Cancel Actions} -alias {Cancel Actions} -active Yes -parent ActionGroupsInstall +InstallComponent 5FEBB1BD-3149-4C74-A78B-371B77E1FB9F -setup Uninstall -type pane -title Uninstall -component Uninstall -active Yes -parent StandardUninstall +InstallComponent E6CA0D36-9668-4BA2-9E9C-602C3494E55A -setup Uninstall -type action -title {Modify Widget} -component ModifyWidget -active Yes -parent 5FEBB1BD-3149-4C74-A78B-371B77E1FB9F +InstallComponent 88E02976-6EA5-4751-B9D9-103F6F8227BD -setup Uninstall -type action -title {Execute Action} -component ExecuteAction -active Yes -parent 5FEBB1BD-3149-4C74-A78B-371B77E1FB9F +InstallComponent 228A3DE6-B4F9-4C11-A5F3-3DF0662DD301 -setup Uninstall -type action -title {Move Forward} -component MoveForward -active Yes -parent 5FEBB1BD-3149-4C74-A78B-371B77E1FB9F +InstallComponent 076D9CCF-B23A-4447-8710-F537D58862A1 -setup Uninstall -type pane -conditions A86627D3-E9C1-4C26-911F-88A6FEC509F8 -title {Uninstall Details} -component UninstallDetails -command insert -active Yes -parent StandardUninstall +Condition A86627D3-E9C1-4C26-911F-88A6FEC509F8 -active Yes -parent 076D9CCF-B23A-4447-8710-F537D58862A1 -title {String Is Condition} -component StringIsCondition +InstallComponent C499EBD2-D0B6-4873-AA19-CDF54C0ACED4 -setup Uninstall -type pane -title {Uninstall Complete} -component UninstallComplete -active Yes -parent StandardUninstall +InstallComponent 24B5E09F-F106-4E29-9D0F-B9ED9AECB943 -setup Uninstall -type action -title {Console Ask Yes Or No} -component ConsoleAskYesOrNo -active Yes -parent ConsoleUninstall +InstallComponent B6214AD1-C7FA-4D8A-B51E-F65A7BC21E97 -setup Uninstall -type action -conditions 64C4C595-A95A-451B-A6F1-A1E59E4C0B8F -title Exit -component Exit -command insert -active Yes -parent ConsoleUninstall +Condition 64C4C595-A95A-451B-A6F1-A1E59E4C0B8F -active Yes -parent B6214AD1-C7FA-4D8A-B51E-F65A7BC21E97 -title {String Is Condition} -component StringIsCondition +InstallComponent F864D537-DF36-457D-BE7D-A5E6F2EB0CC3 -setup Uninstall -type action -title {Console Message} -component ConsoleMessage -active Yes -parent ConsoleUninstall +InstallComponent 92D22608-7C5F-4CAD-AAE5-87326173AE33 -setup Uninstall -type action -title {Execute Action} -component ExecuteAction -active Yes -parent ConsoleUninstall +InstallComponent 114852AB-A479-460A-B139-F9C6E555725A -setup Uninstall -type action -title {Console Message} -component ConsoleMessage -active Yes -parent ConsoleUninstall +InstallComponent C9837310-0797-4CBF-A9BA-858915E68834 -setup Uninstall -type action -title Exit -component Exit -active Yes -parent ConsoleUninstall +InstallComponent 15A00390-3975-4EEB-8BC1-6EDFCE8BC568 -setup Uninstall -type action -title {Execute Action} -component ExecuteAction -active Yes -parent SilentUninstall +InstallComponent 8E57417F-BDEC-404E-BEB3-D4150CCFDAEA -setup Uninstall -type action -title Exit -component Exit -active Yes -parent SilentUninstall +InstallComponent 6A5748B3-5EF0-4D83-A630-0CADE4297BDC -setup Uninstall -type actiongroup -title {Setup Actions} -alias {Setup Actions} -active Yes -parent ActionGroupsUninstall +InstallComponent B9E7DFF9-FA48-4550-96B8-9B34A099DB31 -setup Uninstall -type actiongroup -title {Startup Actions} -alias {Startup Actions} -active Yes -parent ActionGroupsUninstall +InstallComponent 70931750-18F3-4193-BD62-25072CAB7BBC -setup Uninstall -type action -conditions {165FC255-9AD5-4B2B-9568-802DB97E2B08 4141B0E2-5A8A-423C-9823-6B01CF4DAA01} -title Exit -component Exit -command insert -active Yes -parent B9E7DFF9-FA48-4550-96B8-9B34A099DB31 +Condition 165FC255-9AD5-4B2B-9568-802DB97E2B08 -active Yes -parent 70931750-18F3-4193-BD62-25072CAB7BBC -title {String Is Condition} -component StringIsCondition +Condition 4141B0E2-5A8A-423C-9823-6B01CF4DAA01 -active Yes -parent 70931750-18F3-4193-BD62-25072CAB7BBC -title {Ask Yes or No} -component AskYesOrNo +InstallComponent 385606CF-EDE2-4760-9F57-F7680187B9AD -setup Uninstall -type actiongroup -title {Uninstall Actions} -alias {Uninstall Actions} -active Yes -parent ActionGroupsUninstall +InstallComponent 459C9EA6-D9EA-4D3D-915F-AD575C7F3C73 -setup Uninstall -type action -title {Uninstall Selected Files} -component UninstallSelectedFiles -active Yes -parent 385606CF-EDE2-4760-9F57-F7680187B9AD +InstallComponent 040C8D36-0AB4-4436-99BA-EBDFC9B77FF6 -setup Uninstall -type actiongroup -title {Finish Actions} -alias {Finish Actions} -active Yes -parent ActionGroupsUninstall +InstallComponent 8DBDA5C6-A4D9-464C-9AB1-9BC6FF981A3A -setup Uninstall -type actiongroup -title {Cancel Actions} -alias {Cancel Actions} -active Yes -parent ActionGroupsUninstall + +array set Properties { +01720202-EE2E-4FE8-897F-E7F5D4445E2B,Conditions +{0 conditions} + +0370AA35-7C4C-4E74-8F5E-C66476F94086,Alias +{Cancel Actions} + +0370AA35-7C4C-4E74-8F5E-C66476F94086,Conditions +{0 conditions} + +0402CF48-EBA5-47C5-A284-9D3E54108FD3,Conditions +{1 condition} + +0402CF48-EBA5-47C5-A284-9D3E54108FD3,FileName +<%ShortAppName%>-uninstall + +0402CF48-EBA5-47C5-A284-9D3E54108FD3,ShortcutName +{Uninstall <%AppName%>} + +0402CF48-EBA5-47C5-A284-9D3E54108FD3,TargetFileName +<%Uninstaller%> + +0402CF48-EBA5-47C5-A284-9D3E54108FD3,WorkingDirectory +<%InstallDir%> + +040C8D36-0AB4-4436-99BA-EBDFC9B77FF6,Alias +{Finish Actions} + +040C8D36-0AB4-4436-99BA-EBDFC9B77FF6,Conditions +{0 conditions} + +076D9CCF-B23A-4447-8710-F537D58862A1,BackButton,subst +1 + +076D9CCF-B23A-4447-8710-F537D58862A1,CancelButton,subst +1 + +076D9CCF-B23A-4447-8710-F537D58862A1,Caption,subst +1 + +076D9CCF-B23A-4447-8710-F537D58862A1,Conditions +{1 condition} + +076D9CCF-B23A-4447-8710-F537D58862A1,Message,subst +1 + +076D9CCF-B23A-4447-8710-F537D58862A1,NextButton,subst +1 + +076D9CCF-B23A-4447-8710-F537D58862A1,Subtitle,subst +1 + +076D9CCF-B23A-4447-8710-F537D58862A1,Text,subst +1 + +076D9CCF-B23A-4447-8710-F537D58862A1,Title,subst +1 + +0A802EE9-DF59-4623-91FC-CB9765D8F9B3,AcceptRadiobutton,subst +0 + +0A802EE9-DF59-4623-91FC-CB9765D8F9B3,Active +Yes + +0A802EE9-DF59-4623-91FC-CB9765D8F9B3,BackButton,subst +1 + +0A802EE9-DF59-4623-91FC-CB9765D8F9B3,CancelButton,subst +1 + +0A802EE9-DF59-4623-91FC-CB9765D8F9B3,Caption,subst +1 + +0A802EE9-DF59-4623-91FC-CB9765D8F9B3,Conditions +{0 conditions} + +0A802EE9-DF59-4623-91FC-CB9765D8F9B3,DeclineRadiobutton,subst +0 + +0A802EE9-DF59-4623-91FC-CB9765D8F9B3,Message,subst +1 + +0A802EE9-DF59-4623-91FC-CB9765D8F9B3,NextButton,subst +1 + +0A802EE9-DF59-4623-91FC-CB9765D8F9B3,Subtitle,subst +1 + +0A802EE9-DF59-4623-91FC-CB9765D8F9B3,Text,subst +1 + +0A802EE9-DF59-4623-91FC-CB9765D8F9B3,Title,subst +1 + +0FF988B2-BC2F-4F17-BE70-28D7FE7846C9,Conditions +{0 conditions} + +0FF988B2-BC2F-4F17-BE70-28D7FE7846C9,State +disabled + +0FF988B2-BC2F-4F17-BE70-28D7FE7846C9,Widget +{Back Button;Next Button} + +10512CB0-772F-47B7-A58B-61B920D94C1F,Action +{Install Actions} + +114852AB-A479-460A-B139-F9C6E555725A,Conditions +{0 conditions} + +114852AB-A479-460A-B139-F9C6E555725A,Message,subst +1 + +1174CE7D-A448-4E31-8816-3A25BD3B73D9,CheckCondition +{Before Action is Executed} + +1174CE7D-A448-4E31-8816-3A25BD3B73D9,Operator +false + +1174CE7D-A448-4E31-8816-3A25BD3B73D9,String +<%UpgradeInstall%> + +13317AAD-0D0A-4D0A-9BEA-922810029FE5,BackButton,subst +1 + +13317AAD-0D0A-4D0A-9BEA-922810029FE5,CancelButton,subst +1 + +13317AAD-0D0A-4D0A-9BEA-922810029FE5,Caption,subst +1 + +13317AAD-0D0A-4D0A-9BEA-922810029FE5,Conditions +{0 conditions} + +13317AAD-0D0A-4D0A-9BEA-922810029FE5,FileLabel,subst +1 + +13317AAD-0D0A-4D0A-9BEA-922810029FE5,Message,subst +1 + +13317AAD-0D0A-4D0A-9BEA-922810029FE5,NextButton,subst +1 + +13317AAD-0D0A-4D0A-9BEA-922810029FE5,ProgressValue,subst +1 + +13317AAD-0D0A-4D0A-9BEA-922810029FE5,Subtitle,subst +1 + +13317AAD-0D0A-4D0A-9BEA-922810029FE5,Title,subst +1 + +15A00390-3975-4EEB-8BC1-6EDFCE8BC568,Action +{Uninstall Actions} + +15A00390-3975-4EEB-8BC1-6EDFCE8BC568,Conditions +{0 conditions} + +165FC255-9AD5-4B2B-9568-802DB97E2B08,CheckCondition +{Before Action is Executed} + +165FC255-9AD5-4B2B-9568-802DB97E2B08,String +<%GuiMode%> + +16772531-4012-4BDA-946C-64DA3926C388,Conditions +{1 condition} + +16772531-4012-4BDA-946C-64DA3926C388,Prompt +<%ConsoleSelectDestinationText%> + +16772531-4012-4BDA-946C-64DA3926C388,VirtualText +InstallDir + +1F9C9836-090E-4017-95FD-C4F288FD3A99,CheckCondition +{Before Action is Executed} + +1F9C9836-090E-4017-95FD-C4F288FD3A99,Message,subst +1 + +1F9C9836-090E-4017-95FD-C4F288FD3A99,Title,subst +1 + +1F9C9836-090E-4017-95FD-C4F288FD3A99,TrueValue +No + +20725B89-270C-423C-A0E6-A7632A296664,Alias +{Startup Actions} + +20725B89-270C-423C-A0E6-A7632A296664,Conditions +{0 conditions} + +228A3DE6-B4F9-4C11-A5F3-3DF0662DD301,Conditions +{0 conditions} + +2358DAA5-293A-4A4D-91F8-5F48B2F85AD6,CheckCondition +{Before Next Action is Executed} + +2358DAA5-293A-4A4D-91F8-5F48B2F85AD6,FailureMessage +<%DirectoryPermissionText%> + +2358DAA5-293A-4A4D-91F8-5F48B2F85AD6,Filename +<%InstallDir%> + +2358DAA5-293A-4A4D-91F8-5F48B2F85AD6,Permission +{can create} + +24B5E09F-F106-4E29-9D0F-B9ED9AECB943,Conditions +{0 conditions} + +24B5E09F-F106-4E29-9D0F-B9ED9AECB943,Default +Yes + +24B5E09F-F106-4E29-9D0F-B9ED9AECB943,Prompt +<%UninstallStartupText%> + +2C2E1A2C-CB1E-49A3-A557-82185D2F1B9A,Comment +{Ask the user if they want to proceed with the install.} + +2E8052B5-4C1E-45E5-8C6E-5021E7D9835A,Conditions +{2 conditions} + +2E8052B5-4C1E-45E5-8C6E-5021E7D9835A,State +disabled + +2E8052B5-4C1E-45E5-8C6E-5021E7D9835A,Widget +NextButton + +318C333C-A42B-4001-954A-DCC1EB64CE38,CheckCondition +{Before Action is Executed} + +318C333C-A42B-4001-954A-DCC1EB64CE38,String +{<%Property <%CurrentPane%> UserMustAcceptLicense%>} + +385606CF-EDE2-4760-9F57-F7680187B9AD,Alias +{Uninstall Actions} + +4141B0E2-5A8A-423C-9823-6B01CF4DAA01,CheckCondition +{Before Action is Executed} + +4141B0E2-5A8A-423C-9823-6B01CF4DAA01,Message,subst +1 + +4141B0E2-5A8A-423C-9823-6B01CF4DAA01,Title,subst +1 + +4141B0E2-5A8A-423C-9823-6B01CF4DAA01,TrueValue +No + +42CE5801-5679-4E0A-B2D6-BF04187F6D6D,Comment +{Do not display this pane if this is an upgrade install unless there is more than one installation present} + +42CE5801-5679-4E0A-B2D6-BF04187F6D6D,Script +{!<%UpgradeInstall%> || <%PreviousInstallCount%> != 1} + +459C9EA6-D9EA-4D3D-915F-AD575C7F3C73,Conditions +{0 conditions} + +4833AC49-ACAD-4F73-9DCA-5117D5C142A5,BackButton,subst +1 + +4833AC49-ACAD-4F73-9DCA-5117D5C142A5,CancelButton,subst +1 + +4833AC49-ACAD-4F73-9DCA-5117D5C142A5,Caption,subst +1 + +4833AC49-ACAD-4F73-9DCA-5117D5C142A5,Conditions +{0 conditions} + +4833AC49-ACAD-4F73-9DCA-5117D5C142A5,Message,subst +1 + +4833AC49-ACAD-4F73-9DCA-5117D5C142A5,NextButton,subst +1 + +498D9EBC-6F70-4CCC-8A88-B3F019A2B880,BackButton,subst +1 + +498D9EBC-6F70-4CCC-8A88-B3F019A2B880,CancelButton,subst +1 + +498D9EBC-6F70-4CCC-8A88-B3F019A2B880,Caption,subst +1 + +498D9EBC-6F70-4CCC-8A88-B3F019A2B880,Conditions +{0 conditions} + +498D9EBC-6F70-4CCC-8A88-B3F019A2B880,Message,subst +1 + +498D9EBC-6F70-4CCC-8A88-B3F019A2B880,NextButton,subst +1 + +498D9EBC-6F70-4CCC-8A88-B3F019A2B880,Subtitle,subst +1 + +498D9EBC-6F70-4CCC-8A88-B3F019A2B880,Text,subst +1 + +498D9EBC-6F70-4CCC-8A88-B3F019A2B880,Title,subst +1 + +4A6B20C7-EEA3-4C05-A9FA-7234E3DBE91E,ExitType +Finish + +4A7B5960-702D-4678-8533-D085CF653F0E,Description,subst +1 + +4A7B5960-702D-4678-8533-D085CF653F0E,DisplayName,subst +1 + +4A7B5960-702D-4678-8533-D085CF653F0E,FileGroups +9C2BD124-0063-45FA-B2A1-C07E95BD54A1 + +4A7B5960-702D-4678-8533-D085CF653F0E,Name +{Default Component} + +4A7B5960-702D-4678-8533-D085CF653F0E,RequiredComponent +Yes + +52CA7D36-64EE-4764-94D3-B6A39AC459FE,Alias +{Setup Actions} + +52CA7D36-64EE-4764-94D3-B6A39AC459FE,Conditions +{0 conditions} + +5442E77A-E443-4D83-8FE8-0D4FED32E57A,Action +{Install Actions} + +5442E77A-E443-4D83-8FE8-0D4FED32E57A,Conditions +{0 conditions} + +5F91FDFD-757E-48E1-A71E-A886EACEFEA2,CheckCondition +{Before Action is Executed} + +5F91FDFD-757E-48E1-A71E-A886EACEFEA2,Operator +false + +5F91FDFD-757E-48E1-A71E-A886EACEFEA2,String +<%Answer%> + +5FEBB1BD-3149-4C74-A78B-371B77E1FB9F,BackButton,subst +1 + +5FEBB1BD-3149-4C74-A78B-371B77E1FB9F,CancelButton,subst +1 + +5FEBB1BD-3149-4C74-A78B-371B77E1FB9F,Caption,subst +1 + +5FEBB1BD-3149-4C74-A78B-371B77E1FB9F,Conditions +{0 conditions} + +5FEBB1BD-3149-4C74-A78B-371B77E1FB9F,FileValue,subst +1 + +5FEBB1BD-3149-4C74-A78B-371B77E1FB9F,Message,subst +1 + +5FEBB1BD-3149-4C74-A78B-371B77E1FB9F,NextButton,subst +1 + +5FEBB1BD-3149-4C74-A78B-371B77E1FB9F,ProgressValue,subst +1 + +5FEBB1BD-3149-4C74-A78B-371B77E1FB9F,Subtitle,subst +1 + +5FEBB1BD-3149-4C74-A78B-371B77E1FB9F,Title,subst +1 + +60B1FD97-331A-4F0D-8CA9-4EA1F08E7FC8,CheckCondition +{Before Action is Executed} + +60B1FD97-331A-4F0D-8CA9-4EA1F08E7FC8,String +<%GuiMode%> + +62C46726-ACBB-4E99-8A2F-DD5BFB8E6DCD,Conditions +{0 conditions} + +6428BA12-614A-4569-8D06-E7F83657F0F1,BackButton,subst +1 + +6428BA12-614A-4569-8D06-E7F83657F0F1,CancelButton,subst +1 + +6428BA12-614A-4569-8D06-E7F83657F0F1,Caption,subst +1 + +6428BA12-614A-4569-8D06-E7F83657F0F1,Conditions +{0 conditions} + +6428BA12-614A-4569-8D06-E7F83657F0F1,Message,subst +1 + +6428BA12-614A-4569-8D06-E7F83657F0F1,NextButton,subst +1 + +648469D4-E8C8-4AFC-9AE3-F3BC6252F8CE,Conditions +{0 conditions} + +64C4C595-A95A-451B-A6F1-A1E59E4C0B8F,CheckCondition +{Before Action is Executed} + +64C4C595-A95A-451B-A6F1-A1E59E4C0B8F,Operator +false + +64C4C595-A95A-451B-A6F1-A1E59E4C0B8F,String +<%Answer%> + +6A5748B3-5EF0-4D83-A630-0CADE4297BDC,Alias +{Setup Actions} + +6A5748B3-5EF0-4D83-A630-0CADE4297BDC,Conditions +{0 conditions} + +70931750-18F3-4193-BD62-25072CAB7BBC,Comment +{Ask the user if they want to proceed with the uninstall.} + +70931750-18F3-4193-BD62-25072CAB7BBC,Conditions +{2 conditions} + +76F4FED5-0F82-4FE4-A14C-0DD5392B9BBF,ExitType +Finish + +7B57D332-CFA8-4B68-AC63-2AA9DE785606,CheckCondition +{Before Next Pane is Displayed} + +7B57D332-CFA8-4B68-AC63-2AA9DE785606,FailureMessage +<%DirectoryPermissionText%> + +7B57D332-CFA8-4B68-AC63-2AA9DE785606,Filename +<%InstallDir%> + +7B57D332-CFA8-4B68-AC63-2AA9DE785606,Permission +{can create} + +836D6530-DC39-4773-BE74-19D0B2B54492,Action +{Install Actions} + +836D6530-DC39-4773-BE74-19D0B2B54492,Conditions +{0 conditions} + +8758570E-CC44-456D-918E-2E5249DAC439,Conditions +{0 conditions} + +8758570E-CC44-456D-918E-2E5249DAC439,State +disabled + +8758570E-CC44-456D-918E-2E5249DAC439,Widget +{Back Button;Next Button} + +88E02976-6EA5-4751-B9D9-103F6F8227BD,Action +{Uninstall Actions} + +88E02976-6EA5-4751-B9D9-103F6F8227BD,Conditions +{0 conditions} + +88F9D095-410E-4CF2-80DB-1423246F8E42,Components +4A7B5960-702D-4678-8533-D085CF653F0E + +88F9D095-410E-4CF2-80DB-1423246F8E42,Description,subst +1 + +88F9D095-410E-4CF2-80DB-1423246F8E42,DisplayName,subst +1 + +88F9D095-410E-4CF2-80DB-1423246F8E42,Name +Typical + +8DBDA5C6-A4D9-464C-9AB1-9BC6FF981A3A,Alias +{Cancel Actions} + +8DBDA5C6-A4D9-464C-9AB1-9BC6FF981A3A,Conditions +{0 conditions} + +8E57417F-BDEC-404E-BEB3-D4150CCFDAEA,Conditions +{0 conditions} + +8E57417F-BDEC-404E-BEB3-D4150CCFDAEA,ExitType +Finish + +92D22608-7C5F-4CAD-AAE5-87326173AE33,Action +{Uninstall Actions} + +969091FA-E868-4D96-8A8E-5F1E210773ED,CheckCondition +{Before Action is Executed} + +969091FA-E868-4D96-8A8E-5F1E210773ED,Operator +false + +969091FA-E868-4D96-8A8E-5F1E210773ED,String +<%UpgradeInstall%> + +9C2BD124-0063-45FA-B2A1-C07E95BD54A1,Destination +<%InstallDir%> + +9C2BD124-0063-45FA-B2A1-C07E95BD54A1,FileSize +75612381 + +9C2BD124-0063-45FA-B2A1-C07E95BD54A1,Name +{Program Files} + +9D397587-6063-49F6-9BA4-E43087E1FB87,Alias +{Install Actions} + +9D397587-6063-49F6-9BA4-E43087E1FB87,Conditions +{0 conditions} + +A026EF93-0A9B-4999-A486-955C04DCFB09,Alias +{Finish Actions} + +A026EF93-0A9B-4999-A486-955C04DCFB09,Conditions +{0 conditions} + +A116668A-21D1-4E54-A590-9E523E6CF807,Conditions +{0 conditions} + +A116668A-21D1-4E54-A590-9E523E6CF807,Message,subst +1 + +A7800E5F-F3E8-41B2-BE9F-8C7B3BC59209,Conditions +{1 condition} + +A86627D3-E9C1-4C26-911F-88A6FEC509F8,String +<%ErrorsOccurred%> + +AAF9B489-84A3-4C35-A9CB-BBA9130F22F7,Action +{Install Actions} + +AAF9B489-84A3-4C35-A9CB-BBA9130F22F7,Conditions +{0 conditions} + +AIX-ppc,Active +No + +AIX-ppc,DefaultDirectoryPermission +0755 + +AIX-ppc,DefaultFilePermission +0755 + +AIX-ppc,Executable +<%AppName%>-<%Version%>-<%Platform%>-Install<%Ext%> + +AIX-ppc,FallBackToConsole +Yes + +AIX-ppc,InstallDir +<%Home%>/<%ShortAppName%> + +AIX-ppc,InstallMode +Standard + +AIX-ppc,InstallType +Typical + +AIX-ppc,ProgramExecutable +{} + +AIX-ppc,ProgramFolderAllUsers +No + +AIX-ppc,ProgramFolderName +<%AppName%> + +AIX-ppc,ProgramLicense +<%InstallDir%>/LICENSE.txt + +AIX-ppc,ProgramName +{} + +AIX-ppc,ProgramReadme +<%InstallDir%>/README.txt + +AIX-ppc,PromptForRoot +Yes + +AIX-ppc,RequireRoot +No + +AIX-ppc,RootInstallDir +/usr/local/<%ShortAppName%> + +B1323B62-5067-4380-9E19-A2F6DFE8F186,Components +4A7B5960-702D-4678-8533-D085CF653F0E + +B1323B62-5067-4380-9E19-A2F6DFE8F186,Description,subst +1 + +B1323B62-5067-4380-9E19-A2F6DFE8F186,DisplayName,subst +1 + +B1323B62-5067-4380-9E19-A2F6DFE8F186,Name +Custom + +B6214AD1-C7FA-4D8A-B51E-F65A7BC21E97,Conditions +{1 condition} + +B9E7DFF9-FA48-4550-96B8-9B34A099DB31,Alias +{Startup Actions} + +B9E7DFF9-FA48-4550-96B8-9B34A099DB31,Conditions +{0 conditions} + +BD8849A8-F751-4F23-960A-81E257F72CAB,CheckCondition +{Before Action is Executed} + +BD8849A8-F751-4F23-960A-81E257F72CAB,Operator +false + +BD8849A8-F751-4F23-960A-81E257F72CAB,String +<%UpgradeInstall%> + +C499EBD2-D0B6-4873-AA19-CDF54C0ACED4,BackButton,subst +1 + +C499EBD2-D0B6-4873-AA19-CDF54C0ACED4,CancelButton,subst +1 + +C499EBD2-D0B6-4873-AA19-CDF54C0ACED4,Caption,subst +1 + +C499EBD2-D0B6-4873-AA19-CDF54C0ACED4,Conditions +{0 conditions} + +C499EBD2-D0B6-4873-AA19-CDF54C0ACED4,Message,subst +1 + +C499EBD2-D0B6-4873-AA19-CDF54C0ACED4,NextButton,subst +1 + +C6028DBC-6E23-4643-9B0F-4F7524BA11E5,CheckCondition +{Before Action is Executed} + +C6028DBC-6E23-4643-9B0F-4F7524BA11E5,Operator +false + +C6028DBC-6E23-4643-9B0F-4F7524BA11E5,String +<%LicenseAccepted%> + +C9837310-0797-4CBF-A9BA-858915E68834,Conditions +{0 conditions} + +C9837310-0797-4CBF-A9BA-858915E68834,ExitType +Finish + +CEC0D285-9438-4659-94E5-AC4B5F753CDB,BackButton,subst +1 + +CEC0D285-9438-4659-94E5-AC4B5F753CDB,CancelButton,subst +1 + +CEC0D285-9438-4659-94E5-AC4B5F753CDB,Caption,subst +1 + +CEC0D285-9438-4659-94E5-AC4B5F753CDB,Conditions +{0 conditions} + +CEC0D285-9438-4659-94E5-AC4B5F753CDB,Message,subst +1 + +CEC0D285-9438-4659-94E5-AC4B5F753CDB,NextButton,subst +1 + +CF6BE1B7-08AA-4981-814E-20DDC4DD857C,Conditions +{1 condition} + +E0654B3D-6ABE-4640-9503-3DCE15658FEE,BackButton,subst +1 + +E0654B3D-6ABE-4640-9503-3DCE15658FEE,CancelButton,subst +1 + +E0654B3D-6ABE-4640-9503-3DCE15658FEE,Caption,subst +1 + +E0654B3D-6ABE-4640-9503-3DCE15658FEE,Conditions +{0 conditions} + +E0654B3D-6ABE-4640-9503-3DCE15658FEE,FileLabel,subst +1 + +E0654B3D-6ABE-4640-9503-3DCE15658FEE,Message,subst +1 + +E0654B3D-6ABE-4640-9503-3DCE15658FEE,NextButton,subst +1 + +E0654B3D-6ABE-4640-9503-3DCE15658FEE,ProgressValue,subst +1 + +E0654B3D-6ABE-4640-9503-3DCE15658FEE,Subtitle,subst +1 + +E0654B3D-6ABE-4640-9503-3DCE15658FEE,Title,subst +1 + +E6CA0D36-9668-4BA2-9E9C-602C3494E55A,Conditions +{0 conditions} + +E6CA0D36-9668-4BA2-9E9C-602C3494E55A,State +disabled + +E6CA0D36-9668-4BA2-9E9C-602C3494E55A,Widget +{NextButton; CancelButton} + +ED5A5BCE-2833-4247-A114-51E972369F26,BackButton,subst +1 + +ED5A5BCE-2833-4247-A114-51E972369F26,BrowseButton,subst +1 + +ED5A5BCE-2833-4247-A114-51E972369F26,BrowseText,subst +1 + +ED5A5BCE-2833-4247-A114-51E972369F26,CancelButton,subst +1 + +ED5A5BCE-2833-4247-A114-51E972369F26,Caption,subst +1 + +ED5A5BCE-2833-4247-A114-51E972369F26,Conditions +{2 conditions} + +ED5A5BCE-2833-4247-A114-51E972369F26,DestinationLabel,subst +0 + +ED5A5BCE-2833-4247-A114-51E972369F26,Message,subst +1 + +ED5A5BCE-2833-4247-A114-51E972369F26,NextButton,subst +1 + +ED5A5BCE-2833-4247-A114-51E972369F26,Subtitle,subst +1 + +ED5A5BCE-2833-4247-A114-51E972369F26,Title,subst +1 + +EFC3A89B-C0AB-441F-9AF0-420E66AE1431,Conditions +{0 conditions} + +EFC3A89B-C0AB-441F-9AF0-420E66AE1431,Message,subst +1 + +F700A731-92D7-4A9A-91AB-71A5AFCB2E5E,Conditions +{1 condition} + +F864D537-DF36-457D-BE7D-A5E6F2EB0CC3,Conditions +{0 conditions} + +F864D537-DF36-457D-BE7D-A5E6F2EB0CC3,Message,subst +1 + +FF789AC3-26B4-42DD-824B-E49A00C4777B,Conditions +{0 conditions} + +FF7E9736-C092-4E83-8CA7-634DAEBB819A,Conditions +{0 conditions} + +FF7E9736-C092-4E83-8CA7-634DAEBB819A,Default +Yes + +FF7E9736-C092-4E83-8CA7-634DAEBB819A,Prompt +<%InstallStartupText%> + +FreeBSD-4-x86,Active +No + +FreeBSD-4-x86,DefaultDirectoryPermission +0755 + +FreeBSD-4-x86,DefaultFilePermission +0755 + +FreeBSD-4-x86,Executable +<%AppName%>-<%Version%>-<%Platform%>-Install<%Ext%> + +FreeBSD-4-x86,FallBackToConsole +Yes + +FreeBSD-4-x86,InstallDir +<%Home%>/<%ShortAppName%> + +FreeBSD-4-x86,InstallMode +Standard + +FreeBSD-4-x86,InstallType +Typical + +FreeBSD-4-x86,ProgramExecutable +{} + +FreeBSD-4-x86,ProgramFolderAllUsers +No + +FreeBSD-4-x86,ProgramFolderName +<%AppName%> + +FreeBSD-4-x86,ProgramLicense +<%InstallDir%>/LICENSE.txt + +FreeBSD-4-x86,ProgramName +{} + +FreeBSD-4-x86,ProgramReadme +<%InstallDir%>/README.txt + +FreeBSD-4-x86,PromptForRoot +Yes + +FreeBSD-4-x86,RequireRoot +No + +FreeBSD-4-x86,RootInstallDir +/usr/local/<%ShortAppName%> + +FreeBSD-x86,Active +No + +FreeBSD-x86,DefaultDirectoryPermission +0755 + +FreeBSD-x86,DefaultFilePermission +0755 + +FreeBSD-x86,Executable +<%AppName%>-<%Version%>-<%Platform%>-Install<%Ext%> + +FreeBSD-x86,FallBackToConsole +Yes + +FreeBSD-x86,InstallDir +<%Home%>/<%ShortAppName%> + +FreeBSD-x86,InstallMode +Standard + +FreeBSD-x86,InstallType +Typical + +FreeBSD-x86,ProgramExecutable +{} + +FreeBSD-x86,ProgramFolderAllUsers +No + +FreeBSD-x86,ProgramFolderName +<%AppName%> + +FreeBSD-x86,ProgramLicense +<%InstallDir%>/LICENSE.txt + +FreeBSD-x86,ProgramName +{} + +FreeBSD-x86,ProgramReadme +<%InstallDir%>/README.txt + +FreeBSD-x86,PromptForRoot +Yes + +FreeBSD-x86,RequireRoot +No + +FreeBSD-x86,RootInstallDir +/usr/local/<%ShortAppName%> + +HPUX-hppa,Active +No + +HPUX-hppa,DefaultDirectoryPermission +0755 + +HPUX-hppa,DefaultFilePermission +0755 + +HPUX-hppa,Executable +<%AppName%>-<%Version%>-<%Platform%>-Install<%Ext%> + +HPUX-hppa,FallBackToConsole +Yes + +HPUX-hppa,InstallDir +<%Home%>/<%ShortAppName%> + +HPUX-hppa,InstallMode +Standard + +HPUX-hppa,InstallType +Typical + +HPUX-hppa,ProgramExecutable +{} + +HPUX-hppa,ProgramFolderAllUsers +No + +HPUX-hppa,ProgramFolderName +<%AppName%> + +HPUX-hppa,ProgramLicense +<%InstallDir%>/LICENSE.txt + +HPUX-hppa,ProgramName +{} + +HPUX-hppa,ProgramReadme +<%InstallDir%>/README.txt + +HPUX-hppa,PromptForRoot +Yes + +HPUX-hppa,RequireRoot +No + +HPUX-hppa,RootInstallDir +/usr/local/<%ShortAppName%> + +Linux-x86,Active +Yes + +Linux-x86,DefaultDirectoryPermission +0755 + +Linux-x86,DefaultFilePermission +0755 + +Linux-x86,Executable +setupLinux_<%AppName%>_<%Version%>.bin + +Linux-x86,FallBackToConsole +Yes + +Linux-x86,InstallDir +<%Home%>/<%ShortAppName%> + +Linux-x86,InstallMode +Standard + +Linux-x86,InstallType +Typical + +Linux-x86,ProgramExecutable +{} + +Linux-x86,ProgramFolderAllUsers +No + +Linux-x86,ProgramFolderName +<%AppName%> + +Linux-x86,ProgramLicense +<%InstallDir%>/LICENSE.txt + +Linux-x86,ProgramName +{} + +Linux-x86,ProgramReadme +{} + +Linux-x86,PromptForRoot +Yes + +Linux-x86,RequireRoot +No + +Linux-x86,RootInstallDir +/usr/local/<%ShortAppName%> + +MacOS-X,Active +No + +MacOS-X,DefaultDirectoryPermission +0755 + +MacOS-X,DefaultFilePermission +0755 + +MacOS-X,Executable +<%AppName%>-<%Version%>-<%Platform%>-Install<%Ext%> + +MacOS-X,FallBackToConsole +Yes + +MacOS-X,InstallDir +<%Home%>/<%ShortAppName%> + +MacOS-X,InstallMode +Standard + +MacOS-X,InstallType +Typical + +MacOS-X,ProgramExecutable +{} + +MacOS-X,ProgramFolderAllUsers +No + +MacOS-X,ProgramFolderName +<%AppName%> + +MacOS-X,ProgramLicense +<%InstallDir%>/LICENSE.txt + +MacOS-X,ProgramName +{} + +MacOS-X,ProgramReadme +<%InstallDir%>/README.txt + +MacOS-X,PromptForRoot +Yes + +MacOS-X,RequireRoot +No + +MacOS-X,RootInstallDir +/usr/local/<%ShortAppName%> + +Solaris-sparc,Active +No + +Solaris-sparc,DefaultDirectoryPermission +0755 + +Solaris-sparc,DefaultFilePermission +0755 + +Solaris-sparc,Executable +<%AppName%>-<%Version%>-<%Platform%>-Install<%Ext%> + +Solaris-sparc,FallBackToConsole +Yes + +Solaris-sparc,InstallDir +<%Home%>/<%ShortAppName%> + +Solaris-sparc,InstallMode +Standard + +Solaris-sparc,InstallType +Typical + +Solaris-sparc,ProgramExecutable +{} + +Solaris-sparc,ProgramFolderAllUsers +No + +Solaris-sparc,ProgramFolderName +<%AppName%> + +Solaris-sparc,ProgramLicense +<%InstallDir%>/LICENSE.txt + +Solaris-sparc,ProgramName +{} + +Solaris-sparc,ProgramReadme +<%InstallDir%>/README.txt + +Solaris-sparc,PromptForRoot +Yes + +Solaris-sparc,RequireRoot +No + +Solaris-sparc,RootInstallDir +/usr/local/<%ShortAppName%> + +TarArchive,Active +No + +TarArchive,CompressionLevel +6 + +TarArchive,DefaultDirectoryPermission +0755 + +TarArchive,DefaultFilePermission +0755 + +TarArchive,Executable +<%AppName%>-<%Version%>-<%Platform%>-Install<%Ext%> + +TarArchive,FallBackToConsole +Yes + +TarArchive,InstallDir +<%Home%>/<%ShortAppName%> + +TarArchive,InstallMode +Standard + +TarArchive,InstallType +Typical + +TarArchive,OutputFileName +<%ShortAppName%>_<%Version%>.tar.gz + +TarArchive,ProgramExecutable +{} + +TarArchive,ProgramFolderAllUsers +No + +TarArchive,ProgramFolderName +<%AppName%> + +TarArchive,ProgramLicense +<%InstallDir%>/LICENSE.txt + +TarArchive,ProgramName +{} + +TarArchive,ProgramReadme +<%InstallDir%>/README.txt + +TarArchive,PromptForRoot +Yes + +TarArchive,RequireRoot +No + +TarArchive,RootInstallDir +/usr/local/<%ShortAppName%> + +TarArchive,VirtualTextMap +{<%InstallDir%> <%ShortAppName%>} + +Windows,Active +Yes + +Windows,Executable +setupwin32_<%AppName%>_<%Version%><%Ext%> + +Windows,IncludeTWAPI +No + +Windows,InstallDir +<%WinInstallDir%> + +Windows,InstallMode +Standard + +Windows,InstallType +Typical + +Windows,ProgramExecutable +{} + +Windows,ProgramFolderAllUsers +No + +Windows,ProgramFolderName +<%AppName%> + +Windows,ProgramLicense +<%InstallDir%>/LICENSE.txt + +Windows,ProgramName +{} + +Windows,ProgramReadme +{} + +Windows,WindowsIcon +{Setup Blue Screen.ico} + +ZipArchive,Active +No + +ZipArchive,CompressionLevel +6 + +ZipArchive,DefaultDirectoryPermission +0755 + +ZipArchive,DefaultFilePermission +0755 + +ZipArchive,Executable +<%AppName%>-<%Version%>-<%Platform%>-Install<%Ext%> + +ZipArchive,FallBackToConsole +Yes + +ZipArchive,InstallDir +<%Home%>/<%ShortAppName%> + +ZipArchive,InstallMode +Standard + +ZipArchive,InstallType +Typical + +ZipArchive,OutputFileName +<%ShortAppName%>_<%Version%>.zip + +ZipArchive,ProgramExecutable +{} + +ZipArchive,ProgramFolderAllUsers +No + +ZipArchive,ProgramFolderName +<%AppName%> + +ZipArchive,ProgramLicense +<%InstallDir%>/LICENSE.txt + +ZipArchive,ProgramName +{} + +ZipArchive,ProgramReadme +<%InstallDir%>/README.txt + +ZipArchive,PromptForRoot +Yes + +ZipArchive,RequireRoot +No + +ZipArchive,RootInstallDir +/usr/local/<%ShortAppName%> + +ZipArchive,VirtualTextMap +{<%InstallDir%> <%ShortAppName%>} + +} + +::msgcat::mcmset de { +114852AB-A479-460A-B139-F9C6E555725A,Message +<%UninstallCompleteText%> + +A116668A-21D1-4E54-A590-9E523E6CF807,Message +<%InstallationCompleteText%> + +EFC3A89B-C0AB-441F-9AF0-420E66AE1431,Message +<%InstallingApplicationText%> + +F864D537-DF36-457D-BE7D-A5E6F2EB0CC3,Message +<%UninstallingApplicationText%> + +} +::msgcat::mcmset en { +0A802EE9-DF59-4623-91FC-CB9765D8F9B3,Text +{Software Evaluation Agreement + +IMPORTANT - THIS IS A LEGALLY BINDING AGREEMENT. PLEASE READ IT CAREFULLY. +IF YOU DO NOT AGREE WITH THE FOLLOWING PROVISIONS, YOU MAY NOT USE THE +ENCLOSED MATERIALS. AFTER YOU READ THIS LICENSE AGREEMENT, YOU WILL BE ASKED +WHETHER YOU ACCEPT AND AGREE TO THE TERMS OF THIS LICENSE AGREEMENT. DO NOT +CLICK "I HAVE READ AND AGREE" UNLESS: (1) YOU ARE AUTHORIZED TO ACCEPT AND AGREE TO THE TERMS OF THIS LICENSE AGREEMENT ON BEHALF OF YOURSELF AND YOUR COMPANY; AND (2) YOU INTEND TO ENTER INTO AND TO BE BOUND BY THE TERMS OF THIS LEGALLY BINDING AGREEMENT ON BEHALF OF YOURSELF AND YOUR COMPANY. + +This Software Evaluation Agreement (or "Agreement") is a legal agreement +between you ("You," either an individual or entity) and Texas Instruments +Incorporated ("TI"). The "Evaluation Materials" subject to this Agreement +include the enclosed or downloaded software programs and documentation that +accompany this Agreement and any "on-line" or electronic documentation +associated with the software programs. The "Evaluation Materials" include +certain TI proprietary software programs that are specifically designed and +licensed for execution solely and exclusively on or with TI Devices. For the +purposes of this Agreement the term "TI Devices" means a TI EVM or DSK manufactured by or for TI. By installing, copying or otherwise using the Evaluation Materials, you agree to abide by the following provisions. + +This Agreement is displayed for You to read prior to using the Evaluation Materials. If You do not accept or agree with these provisions then: + +(1) do not unzip, download, copy, install or otherwise use the Evaluation Materials; and + +(2) return the Evaluation Materials to TI's designated representative. + +Intellectual Property, Title and Limited License Grants - The Evaluation Materials contain copyrighted material, trade secrets and other proprietary information of TI and its licensors and are protected by copyright laws, international copyright treaties, and trade secret laws, as well as other intellectual property laws and treaties. The Evaluation Materials are licensed, not sold to You, and can only be used in accordance with the terms of this Agreement. You agree that You will not mortgage, pledge or encumber the Evaluation Materials in any way. TI and its licensors retain all title and ownership of the Evaluation Materials, including all intellectual property rights in the Evaluation Materials and all copies of the Evaluation Materials. + +a. Limited Evaluation License. Subject to the terms of this Agreement, TI +grants to You a fully paid-up, royalty free, non-transferable, +non-sub-licensable, non-exclusive, non-assignable, site-specific, temporary, +limited license to use the Evaluation Materials solely and exclusively with or +on TI Devices and solely for testing and evaluation purposes in accordance +with the terms of this Agreement. You agree that upon termination of this +Agreement, this license expires and that You will destroy any and all copies +of the Evaluation Materials, including any portions or derivatives thereof, in +your possession, custody or control and will provide to TI's designated representative a written statement signed by You or Your companyÆs authorized representative certifying such destruction. + +b. Limited Demonstration License. Subject to the terms of this Agreement, TI +grants to You a free, non-transferable, non-exclusive, non-assignable, +worldwide, non-sub-licensable, temporary, limited license to demonstrate the +Evaluation Materials as they are used in a product that includes a TI Device +and consists of both hardware and software components, including executable +versions of the software programs included with the Evaluation Materials that +execute solely and exclusively on a TI Device and not on a device manufactured +by or for an entity other than TI, provided that such software programs are +demonstrated solely in object or executable versions only and such hardware +and software programs are not left with or retained by any third party and +remain in your possession and under your control at all times. You agree that +upon termination of this Agreement, this license expires and that You will +destroy any and all copies of the Evaluation Materials, including any portions +or derivatives thereof, in your possession, custody or control and will +provide to TI's designated representative a written statement signed by You or your companyÆs authorized representative certifying such destruction. + +c. No Development, Production or Distribution License. You acknowledge and agree that this license is limited to testing, evaluation and limited demonstration purposes only and You specifically agree not to use or distribute the Evaluation Materials, or any portion or derivative thereof, to any third party for any commercial purpose. NOTWITHSTANDING ANYTHING TO THE CONTRARY, THIS AGREEMENT DOES NOT CONVEY ANY LICENSE TO USE THE EVALUATION MATERIALS, OR ANY PORTION OR DERIVATIVE THEREOF, IN PRODUCTION, OR TO DISTRIBUTE THE EVALUATION MATERIALS, OR ANY PORTION OR DERIVATIVE THEREOF, TO ANY THIRD PARTY. YOU ARE REQUIRED TO EXECUTE A SEPARATE LICENSE AGREEMENT WITH TI BEFORE MANUFACTURING OR DISTRIBUTING THE EVALUATION MATERIALS, OR ANY PORTION OR DERIVATIVE THEREOF, OR ANY PRODUCTS THAT CONTAIN THE EVALUATION MATERIALS, OR ANY PORTION OR DERIVATIVE THEREOF. + +d. No Other License. Notwithstanding anything to the contrary, nothing in this Agreement shall be construed as a license to any intellectual property rights of TI or its licensors other than those rights embodied in the software programs provided to You by TI as part of the Evaluation Materials. EXCEPT AS PROVIDED HEREIN, NO OTHER LICENSE, WHETHER EXPRESS, IMPLIED, OR STATUTORY, BY ESTOPPEL OR OTHERWISE, TO ANY OTHER TI INTELLECTUAL PROPERTY RIGHTS IS GRANTED HEREIN. + +e. Use Restrictions. You will not disclose the Evaluation Materials, or +any portion or derivative thereof, to any person other than those employees, +consultants and contractors whose job performance directly requires access to +the Evaluation Materials. You will use the Evaluation Materials solely for +testing, evaluation and limited demonstration purposes and will not use or +distribute the Evaluation Materials, or any portion thereof, to any third +party for any commercial purpose. You will not copy, publish, disclose, +provide, transfer or make available the Evaluation Materials, or any portion +thereof, to any third party. You will not sub-license, transfer or assign the +Evaluation Materials or Your rights under this Agreement to any third party. +You will not (a) incorporate, combine, or distribute the Evaluation Materials, +or any portions or derivatives thereof, with any Public Software, or (b) use +Public Software in the development of any derivatives of the Evaluation +Materials, in such a way that would cause the Evaluation Materials, or any +portions or derivatives thereof, to be subject to all or part of the license +obligations or other intellectual property related terms with respect to such +Public Software, including but not limited to, the obligations that the +Evaluation Materials, or any portions or derivatives thereof, incorporated +into, combined, or distributed with such Public Software (i) be disclosed or +distributed in source code form, be licensed for the purpose of making +derivatives of such software, or be redistributed free of charge, contrary to +the terms and conditions of this Agreement, (ii) be used with devices other +than TI Devices, or (iii) be otherwise used or distributed in a manner +contrary to the terms and conditions of this Agreement. As used herein, +"Public Software" means any software that contains, or is derived in whole or +in part from, any software distributed as open source software, including but +not limited to software licensed under the following or similar models: (a) +GNU's General Public License (GPL) or Lesser/Library GPL (LGPL), (b) the Artistic License (e.g., PERL), (c) the Mozilla Public License, (d) the Netscape Public License, (e) the Sun Community Source License (SCSL), (f) the Sun Industry Standards Source License (SISL), (g) the Apache Server license, (h) QT Free Edition License, (i) IBM Public License, and (j) BitKeeper. + +f. Intellectual Property Rights. You acknowledge and agree that the +Evaluation Materials contain copyrighted material, trade secrets and other +proprietary information of TI or its licensors. To protect TI and its +licensors' rights in the Evaluation Materials, You agree that You will not decompile, reverse engineer, disassemble or otherwise translate any of the software programs included with the Evaluation Materials to a human-perceivable form nor permit any person or entity under Your employ or control to do so. In no event will You alter, remove or destroy any copyright or proprietary notice of TI or its licensors included in the Evaluation Materials. TI and its licensors reserve all rights not specifically granted under this Agreement. You further acknowledge and agree that all fixes, modifications and improvements to the Evaluation Materials conceived of or made by TI that are based, either in whole or in part, on Your feedback, suggestions or recommendations are the exclusive property of TI and all right, title and interest in and to all such fixes, modifications and improvements to the Evaluation Materials will vest solely in TI. + +Warranties and Disclaimers. + +a. No Warranty of Production or Support. Nothing contained in this +Agreement will be construed as a warranty or representation by TI to maintain +production of any TI semiconductor device or other hardware or software with +which the Evaluation Materials may be used or to otherwise support the +Evaluation Materials in any manner. You acknowledge and agree that the +Evaluation Materials are provided to You "AS-IS" and that TI is under no obligation to maintain or support the Evaluation Materials or to assist You in Your use of the Evaluation Materials. + +b. Disclaimers. TI does not warrant that operation of the Evaluation +Materials will be error-free, or that the Evaluation Materials will meet Your +individual requirements. THE EVALUATION MATERIALS ARE PROVIDED "AS IS" AND WITH ALL FAULTS. TI MAKES NO WARRANTIES OR REPRESENTATIONS, EXPRESS, IMPLIED, OR STATUTORY, REGARDING THE EVALUATION MATERIALS, INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT OF ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADE SECRETS OR OTHER INTELLECTUAL PROPERTY RIGHTS. TI DISCLAIMS ANY WARRANTY OF TITLE, QUIET ENJOYMENT, QUIET POSSESSION, AND NON-INFRINGEMENT OF ANY THIRD PARTY INTELLECTUAL PROPERTY RIGHTS WITH REGARD TO THE EVALUATION MATERIALS OR YOUR USE OF THOSE MATERIALS. YOU AGREE TO USE YOUR INDEPENDENT ANALYSIS, EVALUATION, AND JUDGMENT IN THE EVALUATION OF THE EVALUATION MATERIALS. FURTHER, THE EVALUATION MATERIALS ARE NOT FAULT TOLERANT AND ARE NOT DESIGNED, MANUFACTURED, OR INTENDED FOR USE IN OR WITH ONLINE CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT FLIGHT CONTROL, AIRCRAFT NAVIGATION OR COMMUNICATIONS SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE MALFUNCTION OR FAILURE OF THE EVALUATION MATERIALS COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE. + +Evaluation Reports and Access. At TI's request, You will provide to TI, +evaluation reports concerning performance of the Evaluation Materials that +include Your evaluation of the strengths and weaknesses of the Evaluation +Materials, any benchmarking results relating to a comparison of the Evaluation +Materials with competitive products, and any recommended improvements. In +performing this evaluation, You agree that You will use the Evaluation +Materials under normal conditions. TI's designated representative for such discussions regarding any evaluations, benchmarking, malfunctions or needed improvements to the Evaluation Materials is: + + Texas Instruments Incorporated + Catalog Software Operations + 12203 Southwest Freeway + Mail Station 722 + Stafford, Texas 77477 + 281-274-5888 + +Confidential Information. + +The term "Confidential Information" shall mean the Evaluation Materials, +whether so marked or not, and any benchmarking results for the Evaluation +Materials. You agree that You will (i) use the Evaluation Materials only in +connection with fulfilling Your rights and obligations under this Agreement, +and (ii) implement reasonable procedures to prohibit the disclosure, +unauthorized duplication, misuse or removal of TI's Confidential Information +and will not disclose such Confidential Information to any third party, except +as may be necessary and required in connection with the rights and obligations +under this Agreement. Without limiting the foregoing, You agree to hold TI's +Confidential Information in confidence and to use at least the same procedures +and degree of care that You use to prevent disclosure of Your own confidential +information of like importance, but in no instance less than reasonable degree +of care. You agree to obtain executed confidentiality agreements with Your +employees, consultants and contractors having access to TI's Confidential Information and to diligently take steps to enforce such agreements or be responsible for the actions of such employees, consultants and contractors in this respect. Employment agreements used in the normal course of business that include confidentiality provisions shall satisfy the requirements of this section. The obligations set forth in this Section (Confidential Information) will survive any termination of this Agreement for three (3) years after such termination. + +Intellectual Property Indemnification Disclaimer. + +You acknowledge and agree that the Evaluation Materials are based on industry recognized standards, including, but not limited to, the ITU and ITU-T standards, the TCP/IP standard, the ISO MPEG and JPEG standards, and the SMPTE standard, and software programs published by industry recognized standards bodies and that certain third parties claim to own patents, copyrights or other intellectual property rights that cover implementation of those standards. You acknowledge and agree that this Agreement does not convey any license to any such third party patents, copyrights, and other intellectual property rights and that You are solely responsible for any intellectual property infringement claims made by such third parties that relate to Your use of the Evaluation Materials. + +YOU AGREE THAT TI SHALL NOT BE LIABLE FOR AND SHALL NOT DEFEND OR INDEMNIFY +YOU AGAINST ANY THIRD PARTY INFRINGEMENT CLAIM THAT RELATES TO OR IS BASED ON +YOUR USE OF THE EVALUATION MATERIALS IN ANY MANNER. THE FOREGOING STATES TI'S ENTIRE LIABILITY WITH RESPECT TO INFRINGEMENT OF ANY PATENT OR OTHER INTELLECTUAL PROPERTY RIGHT UNDER THIS AGREEMENT AND IS IN LIEU OF ALL WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, IN REGARD THERETO. + +Termination. + +The Agreement is effective until terminated and begins on the date you accept +this Agreement's terms and conditions. You may terminate this Agreement at any time by written notice to TI. Without prejudice to any other rights, if You fail to comply with any of the terms or conditions of this Agreement, TI may terminate this Agreement. Upon any termination, all licenses granted under this Agreement expire. + +Further, TI may terminate this Agreement on thirty (30) days written notice to +You, at any time, for TI's convenience. Upon termination of this Agreement, +all licenses granted under this Agreement expire, and You will destroy any and +all copies of the Evaluation Materials or any portions or derivatives thereof, +in Your possession, custody or control, and provide to TI a written statement +signed by You, or Your company's authorized representative, certifying such destruction. + +Liability Limitations. + +IN NO EVENT SHALL TI, OR ANY APPLICABLE LICENSOR, BE LIABLE FOR ANY SPECIAL, INDIRECT, COLLATERAL, INCIDENTAL, PUNATIVE, OR CONSEQUENTIAL DAMAGES HOWEVER CAUSED, ON ANY THEORY OF LIABILITY, IN CONNECTION WITH OR ARISING OUT OF THE LICENSES GRANTED HEREIN, THIS AGREEMENT OR USE OF THE EVALUATION MATERIALS, REGARDLESS OF WHETHER OR NOT TI HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THESE EXCLUDED DAMAGES INCLUDE, BUT ARE NOT LIMITED TO, COST OF REMOVAL OR REINSTALLATION, OUTSIDE COMPUTER TIME, LABOR COSTS, LOSS OF GOODWILL, LOSS OF PROFITS, LOSS OF SAVINGS, LOSS OF DATA, OR LOSS OF USE OR INTERRUPTION OF BUSINESS. + +IN NO EVENT SHALL TI'S AGGREGATE LIABILITY UNDER THIS AGREEMENT EXCEED FIVE HUNDRED DOLLARS ($500). The existence of more than one claim will not enlarge or extend these limits. + +Governing Law, Jurisdiction and Severability. This Agreement will be governed by and interpreted in accordance with the laws of the State of Texas, U.S.A., without reference to that stateÆs conflict-of-laws principles. This Agreement shall not be governed by the United Nations Convention on Contracts for the International Sale of Goods, nor shall it be governed by the Uniform Computer Information Transactions Act. Any dispute arising out of or related to this Agreement will be brought in, and each party consents to non-exclusive jurisdiction and venue in, the state and federal courts sitting in Dallas County, Texas, U.S.A. Each party waives all defenses of lack of personal jurisdiction and forum non-conveniens and agrees that process may be served on either party in a manner authorized by applicable law or court rule. If for any reason a court of competent jurisdiction finds any provision of the Agreement to be unenforceable, that provision will be enforced to the maximum extent possible to effectuate the intent of the parties and the remainder of the Agreement shall continue in full force and effect. + +Export Control. You hereby acknowledge and agree that unless prior +authorization is obtained from the United States Department of Commerce, +neither You nor your agents will export, re-export, or release, directly or +indirectly, any technology, software, or software source code (as defined in +Part 772 of the Export Administration Regulations of the U.S. Department of +Commerce ("EAR")), received from TI, or export, directly or indirectly, any +direct product of such technology, software, or software source code (as +defined in Part 734 of the EAR), to any destination or country to which the +export, re-export or release of the technology, software, software source +code, or direct product is prohibited by the EAR. You agree that none of the +Licensed Materials may be downloaded or otherwise exported or re-exported (i) +into (or to a national or resident of) Cuba, Iran, Iraq, Libya, North Korea, +Sudan and Syria or any other country for which the U.S. has embargoed goods; +or (ii) to anyone on the U.S. Treasury Department's List of Specially Designated Nationals or the U.S. Commerce DepartmentÆs Denied Person List or Entity List. You represent and warrant that you are not located in, under the control of, or a national or resident of any such country or on any such list and you will not use or transfer the Licensed Materials for use in any sensitive nuclear, chemical or biological weapons, or missile technology end-uses unless authorized by the U.S. Government by regulation or specific license. The assurances provided for herein are furnished to TI by You in compliance with Part 740 (Technology and Software Under Restriction) of the EAR. You also understand and acknowledge that products, technology (regardless of the form in which it is provided), software or software source code, received from TI under this Agreement may be under export control of the United States or other countries. You shall comply with the United States and other applicable non-U.S. laws and regulations governing the export, re-export and release of any products, technology, software, or software source code received under this Agreement from TI. You shall not undertake any action that is prohibited by the EAR. Without limiting the generality of the foregoing, You specifically agrees that You shall not transfer or release products, technology, software, or software source code of TI to, or for use by, military end users or for use in military, missile, nuclear, biological, or chemical weapons end uses. +You shall secure at Your own expense, such licenses and export and import documents as are necessary for You to fulfill its obligations under this Agreement. If such licenses or government approvals cannot be obtained, TI may terminate this Agreement, or shall otherwise be excused from the performance of any obligations it may have under this Agreement for which the licenses or government approvals are required. + +Governing Language. This Agreement is written and executed in the English language. If a translation of this Agreement is required for any purpose, including but not limited to registration of the Agreement pursuant to any governmental laws, regulations or rules, You warrant and represent that You will be solely responsible for creating such translation. It is understood and agreed that any translation of this Agreement into a language other than English is intended solely in order to comply with such laws or for reference purposes, and the English language version shall be authoritative and controlling. + +Registration Requirements. If required, You agree that You will be solely responsible for performing all acts and obtaining all approvals that may beárequired in connection with this Agreement by the government of the People's Republic of China, including but not limited to registering pursuant to, and otherwise complying with, the PRC Measures on the Administration of Software Products, Management Regulations on Technology Import-Export, and Technology Import and Export Contract Registration Management Rules. Upon receipt of such approvals from the government authorities, You will forward evidence of all such approvals to TI for its records. In the event that You fail to obtain any such approval or registration, You shall be solely responsible for any and all losses, damages or costs resulting therefrom, and shall indemnify TI for all such losses, damages or costs. + +Entire Agreement. This is the entire Agreement between You and TI and supersedes any prior and contemporaneous agreements, understandings, negotiations and discussions between the parties related to the subject matter of this Agreement. Neither party shall be bound by any conditions, definitions, warranties, understandings, nor representations with respect to the subject matter hereof other than as expressly provided herein. These terms and conditions will prevail notwithstanding any different, conflicting or additional terms and conditions that may appear in any purchase order, acknowledgement or other writing not expressly incorporated into this Agreement. No amendment or modification of this Agreement will be effective unless in writing and signed by a duly authorized representative of TI. You hereby warrant and represent that You have obtained all authorizations and other applicable consents required empowering you to enter into this Agreement and use the Evaluation Materials. + + + +} + +114852AB-A479-460A-B139-F9C6E555725A,Message +<%UninstallCompleteText%> + +1F9C9836-090E-4017-95FD-C4F288FD3A99,Message +<%InstallStartupText%> + +1F9C9836-090E-4017-95FD-C4F288FD3A99,Title +<%InstallApplicationText%> + +2555563F-1BC1-4F42-8413-82FBC0DBEB72,Caption +{Installing CSL Libraries} + +2555563F-1BC1-4F42-8413-82FBC0DBEB72,Message +{Installation of the CSL Libraries in progress} + +4141B0E2-5A8A-423C-9823-6B01CF4DAA01,Message +<%UninstallStartupText%> + +4141B0E2-5A8A-423C-9823-6B01CF4DAA01,Title +<%UninstallApplicationText%> + +4A7B5960-702D-4678-8533-D085CF653F0E,Description +<%ProgramFilesDescription%> + +88F9D095-410E-4CF2-80DB-1423246F8E42,Description +<%TypicalInstallDescription%> + +A116668A-21D1-4E54-A590-9E523E6CF807,Message +<%InstallationCompleteText%> + +B1323B62-5067-4380-9E19-A2F6DFE8F186,Description +<%CustomInstallDescription%> + +CFC03BF9-B5A7-4504-85AF-FE5AEA67EC4A,Message +Testing + +EFC3A89B-C0AB-441F-9AF0-420E66AE1431,Message +<%InstallingApplicationText%> + +F864D537-DF36-457D-BE7D-A5E6F2EB0CC3,Message +<%UninstallingApplicationText%> + +} +::msgcat::mcmset es { +114852AB-A479-460A-B139-F9C6E555725A,Message +<%UninstallCompleteText%> + +A116668A-21D1-4E54-A590-9E523E6CF807,Message +<%InstallationCompleteText%> + +EFC3A89B-C0AB-441F-9AF0-420E66AE1431,Message +<%InstallingApplicationText%> + +F864D537-DF36-457D-BE7D-A5E6F2EB0CC3,Message +<%UninstallingApplicationText%> + +} +::msgcat::mcmset fr { +114852AB-A479-460A-B139-F9C6E555725A,Message +<%UninstallCompleteText%> + +A116668A-21D1-4E54-A590-9E523E6CF807,Message +<%InstallationCompleteText%> + +EFC3A89B-C0AB-441F-9AF0-420E66AE1431,Message +<%InstallingApplicationText%> + +F864D537-DF36-457D-BE7D-A5E6F2EB0CC3,Message +<%UninstallingApplicationText%> + +} +::msgcat::mcmset hu { +114852AB-A479-460A-B139-F9C6E555725A,Message +<%UninstallCompleteText%> + +A116668A-21D1-4E54-A590-9E523E6CF807,Message +<%InstallationCompleteText%> + +EFC3A89B-C0AB-441F-9AF0-420E66AE1431,Message +<%InstallingApplicationText%> + +F864D537-DF36-457D-BE7D-A5E6F2EB0CC3,Message +<%UninstallingApplicationText%> + +} +::msgcat::mcmset it { +114852AB-A479-460A-B139-F9C6E555725A,Message +<%UninstallCompleteText%> + +A116668A-21D1-4E54-A590-9E523E6CF807,Message +<%InstallationCompleteText%> + +EFC3A89B-C0AB-441F-9AF0-420E66AE1431,Message +<%InstallingApplicationText%> + +F864D537-DF36-457D-BE7D-A5E6F2EB0CC3,Message +<%UninstallingApplicationText%> + +} +::msgcat::mcmset nl { +114852AB-A479-460A-B139-F9C6E555725A,Message +<%UninstallCompleteText%> + +A116668A-21D1-4E54-A590-9E523E6CF807,Message +<%InstallationCompleteText%> + +EFC3A89B-C0AB-441F-9AF0-420E66AE1431,Message +<%InstallingApplicationText%> + +F864D537-DF36-457D-BE7D-A5E6F2EB0CC3,Message +<%UninstallingApplicationText%> + +} +::msgcat::mcmset pl { +114852AB-A479-460A-B139-F9C6E555725A,Message +<%UninstallCompleteText%> + +A116668A-21D1-4E54-A590-9E523E6CF807,Message +<%InstallationCompleteText%> + +EFC3A89B-C0AB-441F-9AF0-420E66AE1431,Message +<%InstallingApplicationText%> + +F864D537-DF36-457D-BE7D-A5E6F2EB0CC3,Message +<%UninstallingApplicationText%> + +} +::msgcat::mcmset pt_br { +114852AB-A479-460A-B139-F9C6E555725A,Message +<%UninstallCompleteText%> + +A116668A-21D1-4E54-A590-9E523E6CF807,Message +<%InstallationCompleteText%> + +EFC3A89B-C0AB-441F-9AF0-420E66AE1431,Message +<%InstallingApplicationText%> + +F864D537-DF36-457D-BE7D-A5E6F2EB0CC3,Message +<%UninstallingApplicationText%> + +} + diff --git a/packages/ti/drv/mcbsp/makefile b/packages/ti/drv/mcbsp/makefile new file mode 100644 index 000000000..ed314b9c7 --- /dev/null +++ b/packages/ti/drv/mcbsp/makefile @@ -0,0 +1,46 @@ +# +# Copyright (c) 2018, Texas Instruments Incorporated +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the name of Texas Instruments Incorporated nor the names of +# its contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +ifeq ($(RULES_MAKE), ) +include $(PDK_INSTALL_PATH)/ti/build/Rules.make +else +include $(RULES_MAKE) +endif + +COMP = drvmcbsp + +lib_$(COMP)_BUILD_DEPENDENCY = soc + +$(COMP)_DOXYGEN_SUPPORT = yes + +include $(PDK_INSTALL_PATH)/ti/build/comp_top.mk + diff --git a/packages/ti/drv/mcbsp/mcbsp_component.mk b/packages/ti/drv/mcbsp/mcbsp_component.mk new file mode 100644 index 000000000..286cde1d0 --- /dev/null +++ b/packages/ti/drv/mcbsp/mcbsp_component.mk @@ -0,0 +1,129 @@ +# +# Copyright (c) 2018, Texas Instruments Incorporated +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# * Neither the name of Texas Instruments Incorporated nor the names of +# its contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +# File: mcbsp_component.mk +# This file is component include make file of mcbsp library. +# List of variables set in this file and their purpose: +# _RELPATH - This is the relative path of the module, typically from +# top-level directory of the package +# _PATH - This is the absolute path of the module. It derives from +# absolute path of the top-level directory (set in env.mk) +# and relative path set above +# _INCLUDE - This is the path that has interface header files of the +# module. This can be multiple directories (space separated) +# _PKG_LIST - Names of the modules (and sub-modules) that are a part +# part of this module, including itself. +# _BOARD_DEPENDENCY - "yes": means the code for this module depends on +# board and the compiled obj/lib has to be kept +# under directory +# "no" or "" or if this variable is not defined: means +# this module has no board dependent code and hence +# the obj/libs are not kept under dir. +# _CORE_DEPENDENCY - "yes": means the code for this module depends on +# core and the compiled obj/lib has to be kept +# under directory +# "no" or "" or if this variable is not defined: means +# this module has no core dependent code and hence +# the obj/libs are not kept under dir. +# _APP_STAGE_FILES - List of source files that belongs to the module +# , but that needs to be compiled at application +# build stage (in the context of the app). This is +# primarily for link time configurations or if the +# source file is dependent on options/defines that are +# application dependent. This can be left blank or +# not defined at all, in which case, it means there +# no source files in the module that are required +# to be compiled in the application build stage. +# + +ifeq ($(mcbsp_component_make_include), ) + +# under other list +drvmcbsp_BOARDLIST = +drvmcbsp_SOCLIST = k2g omapl138 c6657 +drvmcbsp_k2g_CORELIST = c66x +drvmcbsp_omapl138_CORELIST = c674x +drvmcbsp_c6657_CORELIST = c66x + +############################ +# mcbsp package +# List of components included under mcbsp lib +# The components included here are built and will be part of mcbsp lib +############################ + +mcbsp_LIB_LIST = mcbsp +drvmcbsp_LIB_LIST = $(mcbsp_LIB_LIST) + +############################ +# mcbsp examples +# List of examples under mcbsp +# All the tests mentioned in list are built when test target is called +# List below all examples for allowed values +############################ +mcbsp_EXAMPLE_LIST = + +# +# mcbsp Modules +# + +# mcbsp LIB +mcbsp_COMP_LIST = mcbsp +mcbsp_RELPATH = ti/drv/mcbsp +mcbsp_PATH = $(PDK_MCBSP_COMP_PATH) +mcbsp_LIBNAME = ti.drv.mcbsp +export mcbsp_LIBNAME +mcbsp_LIBPATH = $(mcbsp_PATH)/lib +export mcbsp_LIBPATH +mcbsp_OBJPATH = $(mcbsp_RELPATH)/mcbsp +export mcbsp_OBJPATH +mcbsp_MAKEFILE = -f build/makefile.mk +export mcbsp_MAKEFILE +mcbsp_BOARD_DEPENDENCY = no +mcbsp_CORE_DEPENDENCY = no +mcbsp_SOC_DEPENDENCY = yes +export mcbsp_COMP_LIST +export mcbsp_BOARD_DEPENDENCY +export mcbsp_CORE_DEPENDENCY +export mcbsp_SOC_DEPENDENCY +mcbsp_PKG_LIST = mcbsp +export mcbsp_PKG_LIST +mcbsp_INCLUDE = $(mcbsp_PATH) +mcbsp_SOCLIST = $(drvmcbsp_SOCLIST) +export mcbsp_SOCLIST +mcbsp_$(SOC)_CORELIST = $(drvmcbsp_$(SOC)_CORELIST) +export mcbsp_$(SOC)_CORELIST + +export drvmcbsp_LIB_LIST +export mcbsp_LIB_LIST + +mcbsp_component_make_include := 1 +endif diff --git a/packages/ti/drv/mcbsp/mcbsp_drv.h b/packages/ti/drv/mcbsp/mcbsp_drv.h new file mode 100644 index 000000000..7fe90c6a1 --- /dev/null +++ b/packages/ti/drv/mcbsp/mcbsp_drv.h @@ -0,0 +1,1245 @@ +/* + * mcbsp_drv.h + * + * This file contains Application programming interface for the Mcbsp driver and + * command/macro definitions used by the Mcbsp driver. + * + * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +/** + * \file mcbsp_drv.h + * + * \brief McBSP driver interface definition file + * + * This file contains the interfaces, data types and symbolic + * definitions that are needed by the application to utilize the + * services of the McBSP device driver. + * + * (C) Copyright 2012, Texas Instruments, Inc + * + */ + +#ifndef _MCBSP_DRV_H_ +#define _MCBSP_DRV_H_ + +/*============================================================================*/ +/* INCLUDE FILES */ +/*============================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + +/* CSL RL includes */ +#include +#include +#include "mcbspver.h" + +/*============================================================================*/ +/* MACRO TYPES */ +/*============================================================================*/ + +/** + * \def MCBSP_LOOPJOB_ENABLE + * To enable loop job mode support in the MCBSP driver, uncomment + * following compiler switch and rebuild the MCBSP LLD. + */ +/* #define MCBSP_LOOPJOB_ENABLE */ + +/** + * \def Mcbsp_POLLED_RETRYCOUNT + * This macro specifies the default retry count to be used by the Mcbsp + * driver when polling for any hardware bit to be set or reset. + * + * \note This default value used by the driver can be changed by an IOCTL + * "Mcbsp_Ioctl_SET_TIMEOUT". + */ +#define Mcbsp_POLLED_RETRYCOUNT (0xFFFFu) + +/** + * \def MCBSP_CACHE_LENGTH + * Defines the Maximum length of cache line that is possible. + */ +#define MCBSP_CACHE_LENGTH (128u) + +/** + * \def MCBSP_MAX_CACHE_ALIGN + * Defines the Maximum cache line size for alignment. + */ +#define MCBSP_MAX_CACHE_ALIGN (128u) + +/** + * \def MCBSP_COMPILE_TIME_SIZE_CHECK + * This macro generates compiler error if postulate is false, so + * allows 0 overhead compile time size check. This "works" when + * the expression contains sizeof() which otherwise doesn't work + * with preprocessor. + */ +#define MCBSP_COMPILE_TIME_SIZE_CHECK(postulate) \ + do { \ + typedef struct { \ + uint8_t McbspNegativeSizeIfPostulateFalse[((int)(postulate))*2 - 1]; \ + } McbspPostulateCheck_t; \ + } \ + while (0) + +/*============================================================================*/ +/* ENUMERATED DATA TYPES */ +/*============================================================================*/ + +/** + * \brief Mcbsp device operational mode. + * + * This enum is used to define the operational mode of the mcbsp device + * like normal mcbsp device. + */ +typedef enum Mcbsp_DevMode_t +{ + Mcbsp_DevMode_McBSP = (0u) + /**< Option to operate in normal McBSP mode */ + +}Mcbsp_DevMode; +/**< Mcbsp device operational mode. */ + +/** + * \brief Mcbsp driver operational mode + * + * Enumeration of the different modes of operation available for the + * Mcbsp device driver.(Mcbsp driver supports only EDMA mode). + */ +typedef enum Mcbsp_OpMode_t +{ + Mcbsp_OpMode_POLLED = 0, + /**< Polled Mode */ + + Mcbsp_OpMode_INTERRUPT, + /**< Interrupt Mode */ + + Mcbsp_OpMode_DMAINTERRUPT + /**< DMA Mode */ + +}Mcbsp_OpMode; +/**< Mcbsp driver operational mode */ + +/** + * \brief Mcbsp Emulation mode settings + * + * Use this symbol to set the Emulation Mode to Free mode or any other + * mode. + * + * \note The SOFT mode settings are applicable only is the FREE mode is + * disabled.Hence if the soft mode is selected (both enable or disable) + * the driver will internally disable the FREE mode. + */ +typedef enum Mcbsp_EmuMode_t +{ + Mcbsp_EmuMode_SOFT_ABORT = (0u), + /**< SOFT mode is disabled. */ + + Mcbsp_EmuMode_SOFT_STOP = (1u), + /**< SOFT mode is enabled */ + + Mcbsp_EmuMode_FREE = (2u) + /**< FREE mode is enabled */ + +}Mcbsp_EmuMode; +/**< Mcbsp emulation modes */ + +/** + * \brief McBSP digital loopback mode selection + * + * Enum to select the enable/disable of Loopback mode of the mcbsp. + */ +typedef enum Mcbsp_Loopback_t +{ + Mcbsp_Loopback_DISABLE = 0, + /**< loopback mode off */ + + Mcbsp_Loopback_ENABLE = 1 + /**< loopback mode on */ + +} Mcbsp_Loopback; +/**< McBSP digital loopback mode selection */ + +/** + * \brief ENUM for receive data justification settings + * + * Use this symbol for setting up RCV sign-extension and justification + * mode + */ +typedef enum Mcbsp_Rxjust_t +{ + Mcbsp_RxJust_RZF = (0u), + /**< RCV setting - right justify, fill MSBs with zeros */ + + Mcbsp_RxJust_RSE = (1u), + /**< RCV setting - right justify, sign-extend the data into MSBs */ + + Mcbsp_RxJust_RxJUST_LZF = (2u) + /**< RCV setting - left justify, fill LSBs with zeros */ + +}Mcbsp_Rxjust; +/**< Enumeration for the Receive data justification */ + +/** + * \brief Transmit pin mode configuration + * + * DX pin settings used for setting the pin in high impedance mode. + */ +typedef enum Mcbsp_DxEna_t +{ + Mcbsp_DxEna_OFF = (0), + /**< DX enabler is OFF */ + + Mcbsp_DxEna_ON = (1u) + /**< DX enabler is ON */ +}Mcbsp_DxEna; +/**< DX pin High impedance enable/disable option */ + +/** + * \brief Polarity of the CLKS pin + * + * Enum to Set the polarity of the CLKS pin used to generate Frame Sync + * and bit clock + */ +typedef enum Mcbsp_ClkSPol_t +{ + Mcbsp_ClkSPol_RISING_EDGE = 0, + /**< Rising edge of CLKS generates CLKG and FSG. */ + + Mcbsp_ClkSPol_FALLING_EDGE = 1 + /**< Falling edge of CLKS generates CLKG and FSG. */ + +}Mcbsp_ClkSPol; +/**< Polarity of the CLKS pin */ + +/** + * \brief SRG clock source + * + * Use this symbol to select input clock source for Sample Rate + * Generator + */ +typedef enum Mcbsp_SrgClk_t +{ + Mcbsp_SrgClk_CLKS = (0u), + /**< input clock source for Sample Rate Generator is CLKS pin */ + + Mcbsp_SrgClk_CLKCPU = (1u), + /**< input clock source for Sample Rate Generator is CPU */ + + Mcbsp_SrgClk_CLKR = (2u), + /**< input clock source for Sample Rate Generator is BCLKR pin */ + + Mcbsp_SrgClk_CLKX = (3u) + /**< input clock source for Sample Rate Generator is BCLKX pin */ + +}Mcbsp_SrgClk; +/**< SRG clock source selection */ + +/** + * \brief Enum to specify the supported buffer formats. + * + * Interleaved and non-interleaved is standard format, this enumeration + * captures the standard and custom data formats. + */ +typedef enum Mcbsp_BufferFormat_t +{ + /* This mode is used for buffer containing the data in continous * + * memory locations where each sample is "wordWidth" long. This * + * format is supported for following configurations * + * Note : interleaved and non interleaved does not apply for this * + * buffer format */ + Mcbsp_BufferFormat_1SLOT, + + /* This is used for transfer of data with multiple slots.please note * + * that the slot data is not interleaved in this format. */ + Mcbsp_BufferFormat_MULTISLOT_NON_INTERLEAVED, + + /* This is used for transfer of data for multiple slots.please note * + * that the slot data is interleaved in this format. */ + Mcbsp_BufferFormat_MULTISLOT_INTERLEAVED +}Mcbsp_BufferFormat; +/**< Mcbsp supported buffer formats */ + +/** + * \brief Mcbsp PHASE control enums + * + * \note These enums are used to control the Phase settings of the MCBSP. + */ +typedef enum Mcbsp_Phase_t +{ + Mcbsp_Phase_SINGLE = (0u), + /**< Single phase for frame */ + + Mcbsp_Phase_DUAL = (1u) + /**< Dual phase for frame */ +} Mcbsp_Phase; +/**< Mcbsp frame phase selection ENUMERATION */ + +/** + * \brief Mcbsp supported wordlength. + * + * Enumerated constant for wordlength supported by the MCBSP device + */ +typedef enum Mcbsp_WordLength_t +{ + Mcbsp_WordLength_8 = 8u, + /**< Word length of 8 bits */ + + Mcbsp_WordLength_12 = 12u, + /**< Word length of 12 bits */ + + Mcbsp_WordLength_16 = 16u, + /**< Word length of 16 bits */ + + Mcbsp_WordLength_20 = 20u, + /**< Word length of 20 bits */ + + Mcbsp_WordLength_24 = 24u, + /**< Word length of 24 bits */ + + Mcbsp_WordLength_32 = 32u + /**< Word length of 32 bits */ + +}Mcbsp_WordLength; +/**< Mcbsp supported wordlength. */ + +/** + * \brief Frame sync ignore status enum + * + * \note Use this symbol to detect or ignore frame synchronisation + */ +typedef enum Mcbsp_FrmSync_t +{ + Mcbsp_FrmSync_DETECT = (0u), + /**< detect frame synchronisation */ + + Mcbsp_FrmSync_IGNORE = (1u) + /**< ignore frame synchronisation */ + +}Mcbsp_FrmSync; +/**< Frame sync detection options ENUMERATION */ + +/** + * \brief Enum to select Data delay in bits + * + * Use this Enum to set XMT/RCV Data Delay (in bits) + */ +typedef enum Mcbsp_DataDelay_t +{ + Mcbsp_DataDelay_0_BIT = (0u), + /**< sets XMT/RCV Data Delay to 0 bits */ + + Mcbsp_DataDelay_1_BIT = (1u), + /**< sets XMT/RCV Data Delay to 1 bits */ + + Mcbsp_DataDelay_2_BIT = (2u) + /**< sets XMT/RCV Data Delay to 2 bits */ + +} Mcbsp_DataDelay; +/**< Enum to select Data delay in bits */ + +/** + * \brief Enum to select the companding law + * + * Use this Enum to select the appropriate companding rule applicable. + */ +typedef enum Mcbsp_Compand_t +{ + Mcbsp_Compand_OFF_MSB_FIRST = (0u), + /**< No companding, data transfer starts with MSB first. */ + + Mcbsp_Compand_OFF_LSB_FIRST = (1u), + /**< No companding, 8-bit data transfer starts with LSB first. */ + + Mcbsp_Compand_MULAW = (2u), + /**< mu-law comapanding enable for channel */ + + Mcbsp_Compand_ALAW = (3u) + /**< A-law comapanding enable for channel */ + +}Mcbsp_Compand; +/**< Enum to select the companding law */ + +/** + * \brief McBSP 32-bit reversal feature + * + * This ENUM allows the user to select the option of BIT reversal. + */ +typedef enum Mcbsp_BitReversal_t +{ + Mcbsp_BitReversal_DISABLE = (0u), + /**< 32-bit reversal disabled */ + + Mcbsp_BitReversal_ENABLE = (1u) + /**< 32-bit reversal enabled. 32-bit data is received LSB first. Word * + * length should be set for 32-bit operation; else operation undefined */ + +}Mcbsp_BitReversal; +/**< McBSP 32-bit reversal feature */ + +/** + * \brief Frame sync clock source + * + * Use this ENUM to set the frame sync clock source as internal or + * external + */ +typedef enum Mcbsp_FsClkMode_t +{ + Mcbsp_FsClkMode_EXTERNAL = (0u), + /**< frame sync clock source as internal */ + + Mcbsp_FsClkMode_INTERNAL = (1u), + /**< frame sync clock source as external */ + + Mcbsp_FsClkMode_DXR_XSR = (2u) + /**< frame sync is generated on DXR_XSR copy */ + +} Mcbsp_FsClkMode; +/**< Frame sync clock source */ + +/** + * \brief Clock source selection ENUM + * + * Use this symbol to set the clock source as internal or external + */ +typedef enum Mcbsp_TxRxClkMode_t +{ + Mcbsp_TxRxClkMode_EXTERNAL = (0u), + /**< clock source as internal */ + + Mcbsp_TxRxClkMode_INTERNAL = (1u) + /**< clock source as external */ + +} Mcbsp_TxRxClkMode; +/**< Clock source selection ENUM */ + +/** + * \brief Clock polarity + * + * Use this symbol to set XMT or RCV clock polarity as rising or + * falling edge + */ +typedef enum Mcbsp_ClkPol_t +{ + Mcbsp_ClkPol_RISING_EDGE = (0u), + /**< Data sampled on rising edge of the bit Clock */ + + Mcbsp_ClkPol_FALLING_EDGE = (1u), + /**< Data sampled on falling edge of the bit Clock */ + + Mcbsp_ClkPol_SRG_RISING_EDGE = (0u), + /**< SRG clock polarity is rising edge */ + + Mcbsp_ClkPol_SRG_FALLING_EDGE = (1u) + /**< SRG clock polarity Is falling edge */ + +} Mcbsp_ClkPol; +/**< Clock polarity */ + +/** + * \brief Frame sync polarity + * + * Use this symbol to set frame sync polarity as active-high or + * active-low + */ +typedef enum Mcbsp_FsPol_t +{ + Mcbsp_FsPol_ACTIVE_HIGH = (0u), + /**< frame sync polarity is active-high */ + + Mcbsp_FsPol_ACTIVE_LOW = (1u) + /**< frame sync polarity is active-low */ + +}Mcbsp_FsPol; +/**< Frame sync polarity */ + +/** + * \brief MCBSP Interrupt mode + * + * Use this symbol to set Interrupt mode (i.e. source of interrupt + * generation).This symbol is used on both RCV and XMT for RINT and + * XINT generation mode. + */ +typedef enum Mcbsp_IntMode_t +{ + Mcbsp_IntMode_ON_READY = (0u), + /**< Interrupt generated on RRDY of RCV or XRDY of XMT */ + + Mcbsp_IntMode_ON_EOB = (1u), + /**< Interrupt generated on end of 16-channel block transfer in * + * multichannel mode */ + + Mcbsp_IntMode_ON_FSYNC = (2u), + /**< Interrupt generated on frame sync */ + + Mcbsp_IntMode_ON_SYNCERR = (3u) + /**< Interrupt generated on synchronisation error */ + +}Mcbsp_IntMode; +/**< MCBSP Interrupt mode */ + +/** + * \brief Transmit multichannel selection mode bit. + * + * MCM determines whether all channels or only selected channels are + * enabled and unmasked for transmission/reception. + * + */ +typedef enum Mcbsp_McmMode_t +{ + Mcbsp_McmMode_ALL_CHAN_ENABLED_UNMASKED = (0u), + /**< All the 128 channels are enabled */ + + Mcbsp_McmMode_ALL_CHAN_DISABLED_UNMASKED = (1u), + /**< All channels are disabled unless selected by enable mask */ + + Mcbsp_McmMode_ALL_CHAN_ENABLED_MASKED = (2u), + /**< All channels are enabled but masked unless selected by Enable mask */ + + Mcbsp_McmMode_ALL_CHAN_DISABLED_MASKED = (3u) + /**< Symmetric transmission and reception */ + +}Mcbsp_McmMode; +/**< Transmit multichannel selection mode bit. */ + +/** + * \brief Partition A/B block channel selection bit. + */ +typedef enum Mcbsp_PartitionSel_t +{ + Mcbsp_PartitionMode_CHAN_0_15 = (0u), + /**< Select the channel 0-15 in block A */ + + Mcbsp_PartitionMode_CHAN_16_31 = (0u), + /**< Select the channel 16-31 in block B */ + + Mcbsp_PartitionMode_CHAN_32_47 = (1u), + /**< Select the channel 32-47 in block A */ + + Mcbsp_PartitionMode_CHAN_48_63 = (1u), + /**< Select the channel 48-63 in block B */ + + Mcbsp_PartitionMode_CHAN_64_79 = (2u), + /**< Select the channel 64-79 in block A */ + + Mcbsp_PartitionMode_CHAN_80_95 = (2u), + /**< Select the channel 80-95 in block B */ + + Mcbsp_PartitionMode_CHAN_96_111 = (3u), + /**< Select the channel 96-111 in block A */ + + Mcbsp_PartitionMode_CHAN_112_127 = (3u) + /**< Select the channel 112-127 in block B */ + +}Mcbsp_PartitionSel; +/**< Partition A/B block selection bit. */ + +/** + * \brief Multichannel partition mode selection. + * + * Multichannel mode allows selection of either an 2 partition mode or + * 8 partition mode.This enum allows the user to select the required + * partition mode of choice. + */ +typedef enum Mcbsp_PartitionMode_t +{ + Mcbsp_PartitionMode_2 = (0u), + /**< 2-partition mode. Only partitions A and B are used. */ + + Mcbsp_PartitionMode_8 = (1u) + /**< 8-partition mode. All partitions (A through H) are used */ + +}Mcbsp_PartitionMode; +/**< Multichannel partition mode selction */ + +/*============================================================================*/ +/* DATA STRUCTURES */ +/*============================================================================*/ + +/** + * \brief McBSP sample rate generator configuration structure + * + * Configurations for the Sample rate generator to generate the BCLK + * and Frame Sync signals are specified using this structure. + */ +typedef struct Mcbsp_srgConfig_t +{ + Bool gSync; + /**< sample rate generator clock syncronization bit (only if CLKS is used)*/ + + Mcbsp_ClkSPol clksPolarity; + /**< CLKS polarity used to drive the CLKG and FSG clocks */ + + Mcbsp_SrgClk srgInputClkMode; + /**< Source for the Sample rate generator (CLKS,CPU,CLKX,CLKR) */ + + uint32_t srgrInputFreq; + /**< input clock frequency for the SRGR (freq of CLKS or CLKX etc..) */ + + uint32_t srgFrmPulseWidth; + /**< Set the Frame Sync Pulse width in terms of FSG clock */ + +} Mcbsp_srgConfig; +/**< McBSP sample rate generator configuration structure */ + +/** + * \brief Mcbsp TX/RX section configuration structure. + * + * This strcuture specifies the configuration for the McBSP data stream + * including the whether it is single phase or dual phase, number of + * frames,the word length in each phase and data delay etc. + */ +typedef struct Mcbsp_DataConfig_t +{ + Mcbsp_Phase phaseNum; + /**< Phase of the McBSP data stream */ + + Mcbsp_WordLength wrdLen1; + /**< Length of the data word in first phase */ + + Mcbsp_WordLength wrdLen2; + /**< Length of the data word in second when dual phase is selected */ + + uint32_t frmLen1; + /**< Length of the data frame in first phase */ + + uint32_t frmLen2; + /**< Length of the data frame in second phase */ + + Mcbsp_FrmSync frmSyncIgn; + /**< Frame sync ignore bit */ + + Mcbsp_DataDelay dataDelay; + /**< Data delay to be configured in number of Bits */ + + Mcbsp_Compand compandSel; + /**< companding selection */ + + Mcbsp_BitReversal bitReversal; + /**< Transmit 32-bit bit reversal feature enable bit. */ + + Mcbsp_IntMode intMode; + /**< Event for which the interrupt is to be generated */ + + Mcbsp_Rxjust rjust; + /**< Receive sign extension and justification settings (RX only setting) */ + + Mcbsp_DxEna dxState; + /**< High impedance enable/disbale bit for the DX pin (TX only setting) */ + +}Mcbsp_DataConfig; +/**< Mcbsp TX/RX section configuration structure. */ + +/** + * \brief Mcbsp multi channel control settings + * + * structure to configure the multi channel settings for the mcbsp.used + * when the multi channel configuration is to be enabled. + */ +typedef struct Mcbsp_McrSetup_t +{ + Mcbsp_McmMode multiChanMode; + /**< Multi channel mode to be selcted */ + + Mcbsp_PartitionSel partitionSelA; + /**< Channel selection for partition A */ + + Mcbsp_PartitionSel partitionSelB; + /**< Channel selection for partition B */ + + Mcbsp_PartitionMode partitionMode; + /**< Channel partition mode selection */ +}Mcbsp_McrSetup; +/**< Mcbsp multi channel control settings */ + +/** + * \brief Mcbsp clock settings setup structure. + * + * This structure contains the information required to configure the + * clocks for the Mcbsp.Both the frame sync settings and the bit clock + * settings can be configured in this structure. + */ +typedef struct Mcbsp_ClkSetup_t +{ + Mcbsp_FsClkMode frmSyncMode; + /**< Frame sync mode bit (FSXM/FSRM)(Internal/External) */ + + uint32_t samplingRate; + /**< Frame sync frequency */ + + Mcbsp_TxRxClkMode clkMode; + /**< Bit clock mode (internal or external) */ + + Mcbsp_FsPol frmSyncPolarity; + /**< frmSyncTxPolarity */ + + Mcbsp_ClkPol clkPolarity; + /**< clkTxPolarity */ +}Mcbsp_ClkSetup; +/**< Mcbsp clock settings setup structure */ + +/** + * \brief Mcbsp Hardware specific information Object + * + * This structure maintains the information specific to the hardware instance + * of the Mcbsp. information like the base address and the cpu event numbers + * and DMA events is specific to the instance. This structure is a collection + * of such information. + */ +typedef struct +{ + uint32_t instNum; + /**< Instance of MCBSP being referred by this object */ + + CSL_McbspRegsOvly regs; + /**< Pointer to the register overlay structure of the MCBSP */ + + CSL_BfifoRegsOvly fifoRegs; + /**< Fifo address of the mcbsp instance */ + + CSL_BdataRegsOvly dataAddress; + /**< Mcbsp data registers address */ + + uint32_t edmaTxEventNum; + /**< edma Transmit event number */ + + uint32_t edmaRxEventNum; + /**< edma Receive event number */ + + uint32_t cpuTxEventNum; + /**< Transmit interrupt number */ + + uint32_t cpuRxEventNum; + /**< Receive interrupt number */ + +}Mcbsp_HwInfo_Unpadded; + +typedef struct +{ + /** Data structure without padding, so sizeof() can compute padding */ + Mcbsp_HwInfo_Unpadded obj; + /** Pad out to end of MCBSP_MAX_CACHE_ALIGN bytes to prevent something else + * from being placed on same cache line as Mcbsp_HwInfo. Note that pad[0] + * is illegal, so must add full MCBSP_MAX_CACHE_ALIGN if structure is + * already padded by chance. */ + uint8_t pad[MCBSP_MAX_CACHE_ALIGN - + (sizeof(Mcbsp_HwInfo_Unpadded) % MCBSP_MAX_CACHE_ALIGN)]; +} Mcbsp_HwInfo; +/**< Mcbsp Hardware specific information Object */ + +/** + * \brief Loop job buffer structure. + * This structure defines the format of the Loop job buffer. + * + * \note Loop job buffer is a buffer used by the mcbsp in edma mode. The + * Mcbsp uses this buffer when no iobufs are present and the mcbsp + * is also not stopped. In this condition the Mcbsp utilises the + * loop job buffer to transmit a known pattern of data from the loopjob + * buffer or receives the data in to a loop job buffer + */ +typedef struct Mcbsp_TempBuffer_t +{ + Uint8 scratchBuf[(4u) + MCBSP_CACHE_LENGTH]; + /**< This buffer will be aligned and also the same buffer will be used + * for all slots and also only 4 bytes are required because the + * max wordwidth is 4 and the cache length is used for buffer alignment */ + uint32_t *scratchBuffer; + /**< Pointer to hold the aligned buffer */ +}Mcbsp_TempBuffer; +/**< loop job buffer format. */ + +/*============================================================================*/ +/* DATA TYPES */ +/*============================================================================*/ + +/** + * \brief Global error callback function protype + * + * This is the global error callback function for the McBSP driver. + * This function is called directly called from ISR context in case of + * error. + * \note Since this function is called from an ISR context,care should be taken + * that this function conforms to ISR coding guidelines. + */ +typedef void (*Mcbsp_GblErrCallback)(uint32_t Arg1,uint32_t Arg2,uint32_t Arg3); + +/** + * \brief McBSP channel setup params + * + * This structure holds configuration to be used for + * creating a channel of the Mcbsp. These parameters need to be + * specified during the creation of the channel. + */ +typedef struct Mcbsp_ChanParams_t +{ + uint32_t wordWidth; + /**< This parameter informs the driver what is the width word (not * + * slot) and this help driver indirectly to decided no. of bytes to * + * be transfered for each slot- This is very * + * important parameter - in case of invalid value default value * + * driver will assume is 32 */ + + void* userLoopJobBuffer; + /**< Buffer to be transferred when the loop job is running. */ + + uint16_t userLoopJobLength; + /**< Number of bytes of the userloopjob buffer for each slot + * Please note that this is no. of bytes and this should be + * pre-calcuated properly for word width of slot - Please refer the + * wordWidth of this structure */ + + Mcbsp_GblErrCallback gblCbk; + /**< callback required when global error occurs - must be callable * + * directly from the ISR context */ + + void* edmaHandle; + /**< Handle to the EDMA Driver */ + + uint32_t edmaEventQue; + /**< EDMA event queue to be used by the channel */ + + uint32_t hwiNumber; + /**< Variable to specify the Hwi number to be used by the driver */ + + Mcbsp_BufferFormat dataFormat; + /**< Format of the application supplied buffer */ + + Bool enableHwFifo; + /**< Option to enable/disable the Hardware FIFO */ + + Mcbsp_DataConfig *chanConfig; + /**< settings to configure the TX or RX hardware sections */ + + Mcbsp_ClkSetup *clkSetup; + /**< clock setup for the RX or the TX section */ + + Mcbsp_McrSetup *multiChanCtrl; + /**< multiple channel control settings */ + + uint32_t chanEnableMask[4]; + /**< Mask of the channels to be enabled or disabled */ + + uint32_t numEnabledChannels; + /**< Number of channels enabled with multichannel mode + * Note: This should match the number of bits in chanEnable Mask if in + * Mcbsp_McmMode_ALL_CHAN_DISABLED_UNMASKED mode */ + +}Mcbsp_ChanParams; +/**< Mcbsp Channel setup parameters */ + +/** + * \brief McBSP device create params + * + * This structure holds the configuration to be used for the + * creation of the Mcbsp device instance.This configuration need to be + * supplied during the creation of the device instance. + */ +typedef struct Mcbsp_Params_t +{ + Mcbsp_DevMode mode; + /**< Mode in which mcbsp instance needs to be created */ + + Mcbsp_OpMode opMode; + /**< Operation mode of driver i.e. interrupt or EDMA.Mcbsp supports only + * EDMA mode */ + + Bool enablecache; + /**< whether the cache operations are to be performed on the application + * buffers or not */ + + Mcbsp_EmuMode emulationMode; + /**< Emulation mode settings for the Mcbsp */ + + Mcbsp_Loopback dlbMode; + /**< digital loop back mode (ENABLE/DISABLE) */ + + Mcbsp_srgConfig *srgSetup; + /**< configuration for the sample rate generator configurations */ + + void* txQPendingList; + /**< Queue to hold the pending buffers received from the application */ + + void* txQFloatingList; + /**< Queue to manage floating buffers in DMA */ + + void* rxQPendingList; + /**< Queue to hold the pending buffers received from the application */ + + void* rxQFloatingList; + /**< Queue to manage floating buffers in DMA */ + +} Mcbsp_Params; +/**< McBSP device setup params */ + +/** + * \brief McBSP queue element + * + * Doubly linked list for queue elements. + * Required for Mcbsp_IOBuf structure. + */ +typedef struct Mcbsp_QueueElem_t { + struct Mcbsp_QueueElem_t* volatile next; + struct Mcbsp_QueueElem_t* volatile prev; +} Mcbsp_QueueElem; + +/** + * \brief McBSP frame object params + * + * Mcbsp_IOBuf structures are managed by the driver. MCBSP + * buffers are the basis for all I/O operations. 'cmd' field + * contains the command id for the driver. 'status' is filled + * in by the driver and contains the status of the commmand. + */ +typedef struct Mcbsp_IOBuf_t +{ + Mcbsp_QueueElem link; + /**< queue link */ + + void* addr; + /**< buffer address */ + + uint32_t size; + /**< buffer size */ + + uint32_t arg; + /**< arg to be used by end app */ + + uint32_t cmd; + /**< command for driver - READ, WRITE, ABORT or FLUSH */ + + int32_t status; + /**< status of command */ + + uint32_t misc; + /**< reserved for driver */ +} Mcbsp_IOBuf; +/**< Mcbsp frame object params */ + +/** + * \brief MCBSP driver callback function + * + * This is the driver's callback function. The driver will + * call a function of this type whenever an I/O operation + * is over. + */ +typedef void (*Mcbsp_CallbackFxn)(void* arg, Mcbsp_IOBuf *ioBuf); + +/*============================================================================*/ +/* IOCTL COMMANDS */ +/*============================================================================*/ + +/** + * \brief McBSP Ioctl commands + * + * List of all the ioctl commands supported by the Mcbsp driver. + * + */ +typedef enum Mcbsp_IOCTL_t +{ + Mcbsp_IOCTL_START = 128, + /**< Starts the data transfer */ + + Mcbsp_IOCTL_SAMPLE_RATE_CHANGE, + /**< Command to chnage the sample rate */ + + Mcbsp_IOCTL_STOP, + /**< Stops the data transfer */ + + Mcbsp_IOCTL_SRGR_START, + /**< Start the McBSP SRG */ + + Mcbsp_IOCTL_SRGR_STOP, + /**< Stop the McBSP SRG */ + + Mcbsp_IOCTL_FSGR_START, + /**< Start the McBSP FSG */ + + Mcbsp_IOCTL_FSGR_STOP, + /**< Stop the McBSP FSG */ + + Mcbsp_IOCTL_SET_TIMEOUT, + /**< Modify the timeout value in the driver */ + + Mcbsp_IOCTL_MUTE_ON, + /**< Mute ON the transfer */ + + Mcbsp_IOCTL_MUTE_OFF, + /**< Take out of Muted state */ + + Mcbsp_IOCTL_PAUSE, + /**< Pause the playback operation */ + + Mcbsp_IOCTL_RESUME, + /**< Resume the playback operation */ + + Mcbsp_IOCTL_CHAN_RESET, + /**< Reset an I/O channel */ + + Mcbsp_IOCTL_DEVICE_RESET, + /**< Reset both input and output channel */ + + Mcbsp_IOCTL_SET_CLKMODE, + /**< Set Bit clock mode for the McBSP */ + + Mcbsp_IOCTL_SET_FRMSYNCMODE, + /**< Set Frame Sync mode for the McBSP */ + + Mcbsp_IOCTL_CONFIG_SRGR, + /**< configure Sample Rate Generator */ + + Mcbsp_IOCTL_SET_BCLK_POL, + /**< Set the CLKR or CLKX clock polarity */ + + Mcbsp_IOCTL_SET_FRMSYNC_POL, + /**< Set the FSR and FSX polarity */ + + Mcbsp_IOCTL_MODIFY_LOOPJOB, + /**< Enable/disable the loopjob */ + + Mcbsp_IOCTL_SYNCERR_INT_ENABLE, + /**< Enable/disable the sync error */ + + Mcbsp_IOCTL_LOOPBACK, + /**< enable/disable the loop back mode */ + + Mcbsp_IOCTL_CANCEL_PENDING_IO + /**< Cancel all the current pending IO in the driver */ + +} Mcbsp_IOCTL; +/**< McBSP Ioctl commands list */ + +/*============================================================================*/ +/* MCBSP MODES */ +/*============================================================================*/ +/** + * \brief McBSP Create Modes + * + * Mcbsp driver create functions take a mode parameter. + * + */ +/** + * \def MCBSP_MODE_INPUT + * Defines the mode as input. + */ +#define MCBSP_MODE_INPUT 0x0001 +/** + * \def MCBSP_MODE_OUTPUT + * Defines the mode as output. + */ +#define MCBSP_MODE_OUTPUT 0x0002 +/** + * \def MCBSP_MODE_INOUT + * Defines the mode as input and output. + */ +#define MCBSP_MODE_INOUT (MCBSP_MODE_INPUT | MCBSP_MODE_OUTPUT) + +/*============================================================================*/ +/* MCBSP STATUS CODES */ +/*============================================================================*/ +/** + * \brief McBSP Driver Status Codes + * + * Mcbsp driver status codes. + * + */ +/** + * \def MCBSP_STATUS_COMPLETED + * Defines the status as completed successfully. + */ +#define MCBSP_STATUS_COMPLETED 0 +/** + * \def MCBSP_STATUS_PENDING + * Defines the status as queued and pending. + */ +#define MCBSP_STATUS_PENDING 1 +/** + * \def MCBSP_STATUS_FLUSHED + * Defines the status as request flushed. Queued writes + * will be completed w/ MCBSP_STATUS_COMPLETED. Queued + * read requests return w/ MCBSP_STATUS_FLUSHED. + */ +#define MCBSP_STATUS_FLUSHED 2 + +/** + * \def MCBSP_STATUS_ABORTED + * Defines the status as request aborted. Non-completed + * read or write requests return w/ MCBSP_STATUS_ABORTED. + */ +#define MCBSP_STATUS_ABORTED 3 + + +/*============================================================================*/ +/* MCBSP DRIVER ERROR CODES */ +/*============================================================================*/ +/** + * \brief McBSP Driver Error Codes + * + * Mcbsp driver error codes. + * + */ +/** + * \def MCBSP_ERR_BADIO + * Generic failure condition + */ +#define MCBSP_ERR_BADIO -1 +/** + * \def MCBSP_ERR_TIMEOUT + * Timeout occurred + */ +#define MCBSP_ERR_TIMEOUT -2 +/** + * \def MCBSP_ERR_NOIOBUFFERS + * No buffers available for I/O + */ +#define MCBSP_ERR_NOIOBUFFERS -3 +/** + * \def MCBSP_ERR_FREE + * Unable to free resources + */ +#define MCBSP_ERR_FREE -4 +/** + * \def MCBSP_ERR_ALLOC + * Unable to allocate resource + */ +#define MCBSP_ERR_ALLOC -5 +/** + * \def MCBSP_ERR_ABORT + * I/O was aborted before completed + */ +#define MCBSP_ERR_ABORT -6 +/** + * \def MCBSP_ERR_BADMODE + * Invalid device mode + */ +#define MCBSP_ERR_BADMODE -7 +/** + * \def MCBSP_ERR_EOF + * End-of-File was encountered + */ +#define MCBSP_ERR_EOF -8 +/** + * \def MCBSP_ERR_NOTIMPL + * Operation not implemented or supported + */ +#define MCBSP_ERR_NOTIMPL -9 +/** + * \def MCBSP_ERR_BADARGS + * Invalid arguments specified + */ +#define MCBSP_ERR_BADARGS -10 +/** + * \def MCBSP_ERR_TIMEOUTUNREC + * Unrecoverable timeout occurred + */ +#define MCBSP_ERR_TIMEOUTUNREC -11 +/** + * \def MCBSP_ERR_INUSE + * Device already in use + */ +#define MCBSP_ERR_INUSE -12 + +/** + * \brief McBSP Driver Buffer Frame Command Codes + * + * Mcbsp driver frame command codes. + * + */ +/** + * \def Mcbsp_IOBuf_Cmd_READ + * Read command + */ +#define Mcbsp_IOBuf_Cmd_READ 0 +/** + * \def Mcbsp_IOBuf_Cmd_WRITE + * Write command + */ +#define Mcbsp_IOBuf_Cmd_WRITE 1 +/** + * \def Mcbsp_IOBuf_Cmd_ABORT + * Abort command + */ +#define Mcbsp_IOBuf_Cmd_ABORT 2 +/** + * \def Mcbsp_IOBuf_Cmd_FLUSH + * Flush command + */ +#define Mcbsp_IOBuf_Cmd_FLUSH 3 + +/** + * \brief McBSP Driver Command Codes Reserved for Control + * + * Mcbsp driver command codes reserved for control. + * + */ +/** + * \def MCBSP_CTRL_CHAN_RESET + * Reset channel only + */ +#define MCBSP_CTRL_CHAN_RESET 0 +/** + * \def MCBSP_CTRL_CHAN_TIMEDOUT + * Channel timeout occured + */ +#define MCBSP_CTRL_CHAN_TIMEDOUT 1 +/** + * \def MCBSP_CTRL_DEVICE_RESET + * Reset entire device + */ +#define MCBSP_CTRL_DEVICE_RESET 2 + +/********************************************************************** + **************************** EXPORTED API **************************** + **********************************************************************/ + +int32_t mcbspInit (void); +int32_t mcbspBindDev(void* *devp, int32_t devid, void* devParams); +int32_t mcbspUnBindDev(void* devp); +int32_t mcbspCreateChan(void* *chanp, void* devp, int32_t mode, + void* chanParams, Mcbsp_CallbackFxn cbFxn, + void* cbArg); +int32_t mcbspDeleteChan(void* chanp); +int32_t mcbspSubmitChan(void* chanp, Mcbsp_IOBuf *const ioBuf); +int32_t mcbspControlChan(void* chanp, Mcbsp_IOCTL cmd, void* arg); +void mcbspGblXmtIsr(void *hChan); +void mcbspGblRcvIsr(void *hChan); + +#ifdef __cplusplus +} +#endif /* extern "C" */ + +#endif /* _MCBSP_DRV_H_ */ +/*============================================================================*/ +/* END OF FILE */ +/*============================================================================*/ diff --git a/packages/ti/drv/mcbsp/mcbsp_osal.h b/packages/ti/drv/mcbsp/mcbsp_osal.h new file mode 100644 index 000000000..bd1b5c11a --- /dev/null +++ b/packages/ti/drv/mcbsp/mcbsp_osal.h @@ -0,0 +1,515 @@ +/** + * @file mcbsp_osal.h + * + * @brief + * This is the sample OS Adaptation layer which is used by the MCBSP + * driver. The OSAL layer can be ported in either of the following + * manners to a native OS: + * + * Approach 1: + * @n Use Prebuilt Libraries + * - Ensure that the provide an implementation of all + * Osal_XXX API for their native OS. + * - Link the prebuilt libraries with their application. + * - Refer to the "example" directory for an example of this + * @n Pros: + * - Customers can reuse prebuilt TI provided libraries + * @n Cons: + * - Level of indirection in the API to get to the actual OS call + * + * Approach 2: + * @n Rebuilt Library + * - Create a copy of this file and modify it to directly + * inline the native OS calls + * - Rebuild the MCBSP Driver library; ensure that the Include + * path points to the directory where the copy of this file + * has been provided. + * - Please refer to the "test" directory for an example of this + * @n Pros: + * - Optimizations can be done to remove the level of indirection + * @n Cons: + * - MCBSP Libraries need to be rebuilt by the customer. + * + * \par + * NOTE: + * (C) Copyright 2012 Texas Instruments, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * \par +*/ +#ifndef __MCBSP_OSAL_H__ +#define __MCBSP_OSAL_H__ + +#include +#include + +/** @addtogroup MCBSP_OSAL_API + @{ */ + +/********************************************************************** + ************************* Extern Declarations ************************ + **********************************************************************/ + +extern void* Osal_mcbspMalloc(uint32_t numBytes); +extern void Osal_mcbspFree (void* ptr, uint32_t size); +extern void* Osal_mcbspDataBufferMalloc(uint32_t numBytes); +extern void Osal_mcbspDataBufferFree(void* ptr, uint32_t numBytes); +extern void Osal_mcbspLog(char* fmt, ... ); +extern void* Osal_mcbspCreateSem(void); +extern void Osal_mcbspDeleteSem(void* semHandle); +extern void Osal_mcbspPendSem(void* semHandle); +extern void Osal_mcbspPostSem(void* semHandle); +extern void* Osal_mcbspEnterMultipleCoreCriticalSection(void); +extern void Osal_mcbspExitMultipleCoreCriticalSection(void* critSectHandle); +extern void* Osal_mcbspEnterSingleCoreCriticalSection(); +extern void Osal_mcbspExitSingleCoreCriticalSection(void* critSectHandle); +extern void Osal_mcbspBeginMemAccess(void* ptr, uint32_t size); +extern void Osal_mcbspEndMemAccess(void* ptr, uint32_t size); + +extern Bool Osal_mcbspQueueEmpty(void* handle); +extern void* Osal_mcbspQueueGet(void* handle); +extern void Osal_mcbspQueuePut(void* handle, Mcbsp_QueueElem* elem); +extern void Osal_mcbspWaitNBitClocks(uint32_t nticks); +extern void *Osal_local2Global (void *addr); +/** + * @brief The macro is used by the MCBSP driver to create a semaphore for + * each MCBSP socket opened in blocking mode. Semaphores created should + * *initially* be created with a count of 0 i.e. unavailable. + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void* Osal_mcbspCreateSem(void); + @endverbatim + * + * Parameter + * @n Not Applicable + * + * Return Value + * @n Semaphore Handle + */ +#define Mcbsp_osalCreateSem() Osal_mcbspCreateSem() + +/** + * @brief The macro is used by the MCBSP driver to delete a previously + * created semaphore. This is called when a MCBSP socket opened in blocking mode + * is being closed. + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void Osal_mcbspDeleteSem(void* semHandle) + @endverbatim + + * Parameter + * @n Semaphore Handle returned by the create semaphore + * + * Return Value + * @n Not Applicable + */ +#define Mcbsp_osalDeleteSem(X) Osal_mcbspDeleteSem(X) + +/** + * @brief The macro is used by the MCBSP driver to pend on a semaphore + * This is called when an application tries to receive data on a blocking + * socket when there is no data available. Since all semaphores are initially + * created to be unavailable; this will cause the application to block. + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void Osal_mcbspPendSem(void* semHandle) + @endverbatim + * + * Parameter + * @n Semaphore Handle + * + * Return Value + * @n Not Applicable + */ +#define Mcbsp_osalPendSem(X) Osal_mcbspPendSem(X) + +/** + * @brief The macro is used by the MCBSP driver to post the semaphore + * The driver posts the semaphore once data is received on a specific + * socket. + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void Osal_mcbspPostSem(void* semHandle) + @endverbatim + * + * Parameter + * @n Semaphore Handle + * + * Return Value + * @n Not Applicable + */ +#define Mcbsp_osalPostSem(X) Osal_mcbspPostSem(X) + +/** + * @brief The macro is used by the MCBSP driver to allocate memory + * The MCBSP driver uses this macro to allocate memory for its internal + * driver structures. This is invoked during the driver initialization + * and startup process. + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void* Osal_mcbspMalloc(uint32_t numBytes) + @endverbatim + * + * Parameter + * @n Number of bytes to be allocated + * + * Return Value + * @n Pointer to the allocated block size + * + * @sa + * Mcbsp_osalDataBufferMalloc + */ +#define Mcbsp_osalMalloc(X) Osal_mcbspMalloc(X) + +/** + * @brief The macro is used by the MCBSP driver to free a previously + * allocated block of memory + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void Osal_mcbspFree(void* ptr, uint32_t numBytes) + @endverbatim + * + * Parameter + * @n Pointer to the block of memory to be cleaned up. + * @n Size of the allocated memory which is being freed. + * + * Return Value + * @n Not applicable. + */ +#define Mcbsp_osalFree(X, Y) Osal_mcbspFree(X, Y) + +/** + * @brief The macro is used by the MCBSP driver to allocate memory + * for the data buffers in Driver Managed Configuration. All data + * buffers should allocated should be in the global address space. + * This macro is invoked during the data path. + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void* Osal_mcbspDataBufferMalloc(uint32_t numBytes) + @endverbatim + * + * Parameter + * @n Number of bytes to be allocated + * + * Return Value + * @n Pointer to the allocated block size + */ +#define Mcbsp_osalDataBufferMalloc(X) Osal_mcbspDataBufferMalloc(X) + +/** + * @brief The macro is used by the MCBSP driver to convert local address + * to Global address space + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void *Osal_local2Global (void *addr) + @endverbatim + * + * Parameter + * @n Local address pointer + * + * Return Value + * @n Global address pointer + */ + +#define Mcbsp_osalLocal2Global(X) Osal_local2Global(X) +/** + * @brief The macro is used by the MCBSP driver to free a previously + * allocated block data buffer. This macro is used to clean up previously + * allocated data buffers and is invoked during the data path. + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void Osal_mcbspDataBufferFree(void* ptr, uint32_t numBytes) + @endverbatim + * + * Parameter + * @n Pointer to the block of memory to be cleaned up. + * @n Size of the allocated memory which is being freed. + * + * Return Value + * @n Not applicable. + */ +#define Mcbsp_osalDataBufferFree(X, Y) Osal_mcbspDataBufferFree(X, Y) + +/** + * @brief The macro is used by the MCBSP driver to log various + * messages. + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void Osal_mcbspLog( char* fmt, ... ) + @endverbatim + * + * Parameter + * @n printf-style format string + * + * Return Value + * @n Not applicable. + */ +#define Mcbsp_osalLog Osal_mcbspLog + +/** + * @brief The macro is used by the MCBSP Driver to protect its shared resources + * access from MULTIPLE CORES. This is required if the MCBSP Driver API's are being + * invoked from multiple cores. If this is not the case then these macros can be + * defined to be NOP. + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void* Osal_mcbspEnterMultipleCoreCriticalSection(void) + @endverbatim + * + * Parameter + * @n None + * + * Return Value + * @n Opaque Handle used for holding critical section locking information + */ +#define Mcbsp_osalEnterMultipleCoreCriticalSection Osal_mcbspEnterMultipleCoreCriticalSection + +/** + * @brief The macro is used by the MCBSP driver to end the protection of its + * internal shared "resources" from MULTIPLE CORE access. + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void Osal_mcbspExitMultipleCoreCriticalSection(void* critSectHandle) + @endverbatim + * + * Parameter + * @n Opaque Handle used for holding critical section locking information + * + * Return Value + * @n None + */ +#define Mcbsp_osalExitMultipleCoreCriticalSection Osal_mcbspExitMultipleCoreCriticalSection + +/** + * @brief The macro is used by the MCBSP driver to protect its internal shared + * resources from SINGLE CORE MULTIPLE CONTEXT (thread or ISR) access. If all + * the MCBSP Driver APIs are being called from threads then this API could + * use semaphores. However if the MCBSP driver API's are being called from + * both ISR & Thread context then the critical section here would need to + * disable/enable interrupts. + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void* Osal_mcbspEnterSingleCoreCriticalSection() + @endverbatim + * + * Parameter + * @n None + * + * Return Value + * @n Opaque Handle used for holding critical section locking information + */ +#define Mcbsp_osalEnterSingleCoreCriticalSection Osal_mcbspEnterSingleCoreCriticalSection + +/** + * @brief The macro is used to denote the end of the protection of the internal + * shared resource from SINGLE CORE MULTIPLE CONTEXT access. + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void Osal_mcbspExitSingleCoreCriticalSection(void* critSectHandle) + @endverbatim + * + * Parameter + * @n critSectHandle - Opaque Handle used for holding critical section locking information + * + * Return Value + * @n None + */ +#define Mcbsp_osalExitSingleCoreCriticalSection Osal_mcbspExitSingleCoreCriticalSection + +/** + * @brief The macro is used by the MCBSP driver to indicate that a block + * of memory is about to be accessed. If the memory block is cached then + * this indicates that the application would need to ensure that the cache + * is updated with the data from the actual memory. + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void Osal_mcbspBeginMemAccess(void* ptr, uint32_t size) + @endverbatim + * + * Parameter + * @n ptr - Pointer to the memory + * @n size - Size of the memory being accessed. + * + * Return Value + * @n None + */ +#define Mcbsp_osalBeginMemAccess Osal_mcbspBeginMemAccess + +/** + * @brief The macro is used by the MCBSP driver to indicate that the block of + * memory has finished being accessed. If the memory block is cached then the + * application would need to ensure that the contents of the cache are updated + * immediately to the actual memory. + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void Osal_mcbspEndMemAccess(void* ptr, uint32_t size) + @endverbatim + * + * Parameter + * @n ptr - Pointer to the memory + * @n size - Size of the memory + * + * Return Value + * @n None + */ +#define Mcbsp_osalEndMemAccess Osal_mcbspEndMemAccess + +/** + * @brief The macro is used by the MCBSP driver to test for an + * empty queue. + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void Osal_mcbspQueueEmpty(void* handle) + @endverbatim + * + * Parameter + * @n handle - Handle of a previously created Queue instance object + * + * Return Value + * @n TRUE - If the queue is empty + */ +#define Mcbsp_osalQueueEmpty Osal_mcbspQueueEmpty + +/** + * @brief The macro is used by the MCBSP driver to get an + * element from the front of queue. The function + * removes the element from the front of queue and + * returns a pointer to it. + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void* Osal_mcbspQueueGet(void* handle) + @endverbatim + * + * Parameter + * @n handle - Handle of a previously created Queue instance object + * + * Return Value + * @n Handle (pointer) to former first element + */ +#define Mcbsp_osalQueueGet Osal_mcbspQueueGet + +/** + * @brief The macro is used by the MCBSP driver to put an + * element at the end of queue. + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void Osal_mcbspQueuePut(void* handle, Mcbsp_QueueElem* elem) + @endverbatim + * + * Parameter + * @n handle - Handle of a previously created Queue instance object + * @n elem - Pointer to new queue element + * + * Return Value + * @n None + */ +#define Mcbsp_osalQueuePut Osal_mcbspQueuePut + +/** + * @brief The macro is used by the MCBSP driver to wait 'n' + * bit clocks to ensure proper synchronization internally. + * + * Prototype: + * The following is the C prototype for the expected OSAL API. + * + * @verbatim + void Osal_mcbspWaitNBitClocks(uint32_t nticks) + @endverbatim + * + * Parameter + * @n nticks - Number of bit clocks to wait + * + * Return Value + * @n None + */ +#define Mcbsp_osalWaitNBitClocks Osal_mcbspWaitNBitClocks +/** +@} +*/ + +#endif /* __MCBSP_OSAL_H__ */ + diff --git a/packages/ti/drv/mcbsp/mcbsp_types.h b/packages/ti/drv/mcbsp/mcbsp_types.h new file mode 100644 index 000000000..60146ef6e --- /dev/null +++ b/packages/ti/drv/mcbsp/mcbsp_types.h @@ -0,0 +1,49 @@ +/** + * @file mcbsp_types.h + * + * @brief + * This is a wrapper header file which includes the standard types + * which are used by the MCBSP Driver. + * + * \par + * NOTE: + * (C) Copyright 2012 Texas Instruments, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * \par +*/ +#ifndef __MCBSP_TYPES_H__ +#define __MCBSP_TYPES_H__ + +#include +#include + +#endif /* __MCBSP_TYPES_H__ */ + diff --git a/packages/ti/drv/mcbsp/mcbspver.h b/packages/ti/drv/mcbsp/mcbspver.h new file mode 100644 index 000000000..b48d624e3 --- /dev/null +++ b/packages/ti/drv/mcbsp/mcbspver.h @@ -0,0 +1,68 @@ +#ifndef _MCBSPVER_H +#define _MCBSPVER_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* ============================================================= */ +/** + * @file mcbspver.h + * + * path ti/drv/mcbsp/mcbspver.h + * + * @brief MCBSP Driver Version Definitions + * + * ============================================================ + * Copyright (c) Texas Instruments Incorporated 2012 + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +/** + * @brief This is the MCBSP Driver Version. Versions numbers are encoded in the following + * format: + * 0xAABBCCDD -> Arch (AA); API Changes (BB); Major (CC); Minor (DD) + */ +#define MCBSP_DRV_VERSION_ID (0x0100000C) + +/** + * @brief This is the version string which describes the MCBSP driver along with the + * date and build information. + */ +#define MCBSP_DRV_VERSION_STR "MCBSP Driver Revision: 01.00.00.12" + + +#ifdef __cplusplus +} +#endif + + +#endif /* _MCBSPVER_H */ diff --git a/packages/ti/drv/mcbsp/mcbspver.h.xdt b/packages/ti/drv/mcbsp/mcbspver.h.xdt new file mode 100644 index 000000000..69dfdb0e0 --- /dev/null +++ b/packages/ti/drv/mcbsp/mcbspver.h.xdt @@ -0,0 +1,100 @@ +%%{ +/*! + * This template implements the mcbspver.h + */ + /* Versioning */ + var ver = this; + var ver1 = [00,00,00,00]; + var ver2 = [00,00,00,00]; + + for each(i=0;i Arch (AA); API Changes (BB); Major (CC); Minor (DD) + */ +#define MCBSP_DRV_VERSION_ID `versionID` + +/** + * @brief This is the version string which describes the MCBSP driver along with the + * date and build information. + */ +#define MCBSP_DRV_VERSION_STR `versionStr` + + +#ifdef __cplusplus +} +#endif + + +#endif /* _MCBSPVER_H */ diff --git a/packages/ti/drv/mcbsp/package.bld b/packages/ti/drv/mcbsp/package.bld new file mode 100644 index 000000000..3b0e0b185 --- /dev/null +++ b/packages/ti/drv/mcbsp/package.bld @@ -0,0 +1,122 @@ +/****************************************************************************** + * FILE PURPOSE: Build description for the MCBSP Driver + ****************************************************************************** + * FILE NAME: package.bld + * + * DESCRIPTION: + * This file contains the build specification and description for the MCBSP driver + * + * The file takes the following parameters from the command line through the + * XDCARGS variable. + * XDCARGS[0] = MCBSP Driver Install Type + * Valid Values are "TAR" or "SETUP" + * DEFAULT is "SETUP" + * + * Example for a valid command: + * xdc XDCARGS="SETUP" release + * + * Copyright (C) 2012, Texas Instruments, Inc. + *****************************************************************************/ + +/* List of all subdirectories that combine to make the MCBSP Driver Package. */ +var subDirectories = [ "src", "docs", "include","device","example" ]; + +var mcbspDriverInstallType; + +/* Determine if we need to create the InstallJammer Application or not? + * MCBSP LLD Deliverables be either of the following formats: + * - TAR Ball Package + * - Setup Executable + * DEFAULT is a SETUP Executable. */ + +if ((arguments[0] != "TAR") && (arguments[0] != "SETUP")) + mcbspDriverInstallType = "TAR"; +else + mcbspDriverInstallType = arguments[0]; + +/* Irrespective of the InstallType we always create a TAR Ball Package as a part + * of the RTSC Build. Here we determine the name of the TAR Ball Package + * Format is as follows: + * mcbsp_ */ +var mcbspRTSCFileName = "mcbsp" + "_" + + mcbspDriverReleaseVersion[0] + "_" + mcbspDriverReleaseVersion[1] + "_" + + mcbspDriverReleaseVersion[2] + "_" + mcbspDriverReleaseVersion[3]; + +/****************************************************************** + ************************ Release Banner ************************** + ******************************************************************/ + +print ("************* MCBSP Driver Build Information *************"); +print ("MCBSP Driver Install : " + mcbspDriverInstallType); +print ("MCBSP Driver LLD Version : " + mcbspDriverReleaseVersion); +print ("Tools Directory : " + toolsBaseDir); +print ("RTSC File Name : " + mcbspRTSCFileName); +print ("MCBSP Driver LLD Path : " + driverPath); +if (pOpts == 1) +{ + print ("CC LE opts : " + C66LE.ccOpts.prefix); + print ("CC BE opts : " + C66BE.ccOpts.prefix); + print ("****************************************************************"); +} + +/* Create the release package for the MCBSP LLD */ +Pkg.defaultRelease = Pkg.addRelease (mcbspRTSCFileName, {prefix: "./packages/"}); + +/* Moving forward we need to set the Archiver of the package to be ZIP. This is currently + * not supported in the XDC tools being used. Currenly builds need to be done with the + * following options:- + * xdc MK_FIXLISTOPTS=-t release + * ZIP is a better option as it works natively with INSTALL Jammer and we can remove the + * uncompression into a temporary directory. XDC Tools with xdc-rXX support the ZIP archiver. */ +//Pkg.attrs = {archiver : "zip"}; + +/* Cycle through all the sub-directories and build all the files */ +for (var i = 0; i < subDirectories.length; i++) +{ + /* Load the capsule in the sub directory. */ + var caps = xdc.loadCapsule (subDirectories[i]+"/Module.xs"); + + print ("Building directory " + subDirectories[i]); + + /* Build the capsule. */ + caps.modBuild(); + + /* Package the module.xs files for building via package */ + Pkg.otherFiles[Pkg.otherFiles.length++] = subDirectories[i]+"/Module.xs"; +} + +/* Package the remaining files */ +Pkg.otherFiles[Pkg.otherFiles.length++] = "config.bld"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "config_mk.bld"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "package.bld"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "package.xdc"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "package.xs"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "Settings.xdc"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "Settings.xdc.xdt"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "mcbsp_drv.h"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "mcbsp_osal.h"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "mcbsp_types.h"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "mcbspver.h"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "mcbspver.h.xdt"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "docs/Doxyfile"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "docs/doxyfile.xdt"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "build/buildlib.xs"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "makefile"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "build/makefile.mk"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "src/src_files_common.mk"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "mcbsp_component.mk"; +Pkg.otherFiles[Pkg.otherFiles.length++] = "./lib"; + +/* Generate Users Manual Doxyfile */ +var tplt = xdc.loadTemplate("./docs/doxyfile.xdt"); +tplt.genFile("./docs/Doxyfile",mcbspDriverReleaseVersion); + +/* Generate Settings.xdc */ +var tplt = xdc.loadTemplate("./Settings.xdc.xdt"); +tplt.genFile("./Settings.xdc",mcbspDriverReleaseVersion); + +/* Generate paver.h */ +var tplt = xdc.loadTemplate("./mcbspver.h.xdt"); +tplt.genFile("./mcbspver.h",mcbspDriverReleaseVersion); + + diff --git a/packages/ti/drv/mcbsp/package.xdc b/packages/ti/drv/mcbsp/package.xdc new file mode 100644 index 000000000..2ce1672e7 --- /dev/null +++ b/packages/ti/drv/mcbsp/package.xdc @@ -0,0 +1,15 @@ +/****************************************************************************** + * FILE PURPOSE: Package specification file + ****************************************************************************** + * FILE NAME: package.xdc + * + * DESCRIPTION: + * This file contains the package specification for the MCBSP Driver + * + * Copyright (C) 2012-2019, Texas Instruments, Inc. + *****************************************************************************/ + +package ti.drv.mcbsp[1, 0, 0, 12] { + module Settings; +} + diff --git a/packages/ti/drv/mcbsp/package.xs b/packages/ti/drv/mcbsp/package.xs new file mode 100644 index 000000000..9978fe306 --- /dev/null +++ b/packages/ti/drv/mcbsp/package.xs @@ -0,0 +1,86 @@ +/* + * ======== package.xs ======== + * + */ + + +/* + * ======== Package.getLibs ======== + * This function is called when a program's configuration files are + * being generated and it returns the name of a library appropriate + * for the program's configuration. + */ + +function getLibs(prog) +{ + var suffix = prog.build.target.suffix; + + var name = this.$name + ".a" + suffix; + + /* Read LIBDIR variable */ + var lib = java.lang.System.getenv("LIBDIR"); + + /* If NULL, default to "lib" folder */ + if (lib == null) + { + lib = "./lib"; + } else { + print ("\tSystem environment LIBDIR variable defined : " + lib); + } + + /* Device types supported */ + var deviceTypes = [ + 'k2g', + 'omapl138', + 'c6657' + ]; + + /* Search for the supported devices (defined in config.bld) */ + for each(var device in deviceTypes) + { + if (this.Settings.deviceType.equals(device)) + { + lib = lib + "/" + device; + break; + } + } + + /* Get target folder, if applicable */ + if ( java.lang.String(suffix).contains('66') ) + lib = lib + "/c66"; + else if ( java.lang.String(suffix).contains('674') ) + lib = lib + "/c674"; + + var libProfiles = ["debug", "release"]; + for each(var profile in libProfiles) + { + if (this.Settings.libProfile.equals(profile)) + { + lib = lib + "/" + profile; + break; + } + } + + + /* Get library name with path */ + lib = lib + "/" + name; + if (java.io.File(this.packageBase + lib).exists()) { + print ("\tLinking with library " + this.$name + ":" + lib); + return lib; + } + + /* Could not find any library, throw exception */ + throw new Error("\tLibrary not found: " + this.packageBase + lib); +} + +/* + * ======== package.close ======== + */ +function close() +{ + if (xdc.om.$name != 'cfg') { + return; + } +} + + diff --git a/packages/ti/drv/mcbsp/setupenv.bat b/packages/ti/drv/mcbsp/setupenv.bat new file mode 100644 index 000000000..9a1dbfb25 --- /dev/null +++ b/packages/ti/drv/mcbsp/setupenv.bat @@ -0,0 +1,84 @@ +@REM ****************************************************************************** +@REM * FILE PURPOSE: Environment Setup for building MCBSP LLD +@REM ****************************************************************************** +@REM * FILE NAME: setupenv.bat +@REM * +@REM * DESCRIPTION: +@REM * Configures and sets up the Build Environment +@REM * +@REM * Copyright (C) 2012, Texas Instruments, Inc. +@REM ***************************************************************************** + +@echo --------------------------------------- +@echo Configuring MCBSP LLD Build Environment +@echo off + +IF DEFINED PARTNO GOTO partno_defined +@REM Configure the Part Number +set PARTNO=K2G +:partno_Defined + +IF DEFINED PDK_INSTALL_PATH GOTO pdk_defined +set PDK_INSTALL_PATH=C:\ti3\pdk_keystone2_3_02_00_00\packages +:pdk_defined + +@REM --------------------------------- +@REM Enabling MINI PACKAGE to be Built +@REM --------------------------------- +set MINI_PACKAGE=OFF +@echo MINI PACKAGE is set to %MINI_PACKAGE% + +@REM This is the base location for the various tools. +set XDCCGROOT=T:\c6xx\cgen7_4_02\c6000\cgtools +set C6X_GEN_INSTALL_PATH=T:\c6xx\cgen7_4_02\c6000\cgtools +set EDMA3_INSTALL_PATH=C:\ti\edma3_lld_02_11_09_08\packages + +@REM EDMA3 LLD installation path variables +@REM set EDMA3LLD_BIOS6_INSTALLDIR=C:/ti/edma3_lld_02_11_05_02 + +REM ******************************************************************************* +REM *************************** XDC PATH Configuration **************************** +REM ******************************************************************************* +REM MCBSP LLD depends upon the following packages:- +REM - CSL Package for the CSL Register Layer +REM - EDMA3 LLD +REM - RM LLD +REM - BIOS Package +REM These packages should be installed before trying to build the driver else +REM compilations will fail. +REM CSL/LLDs Package: CSL, MCBSP and RM are a part of the CSL/LLDs package. + +@REM Specify the XDC Tool Path +set XDC_INSTALL_PATH=T:/gen/xdc/xdctools_3_24_06_63 +set XDCPATH=../../..;%XDC_INSTALL_PATH%/packages + +@REM Configure the XDCPATH +set XDCPATH=%XDCPATH%;%PDK_INSTALL_PATH%;%C6X_GEN_INSTALL_PATH%/include;%EDMA3_INSTALL_PATH% + +@REM Eclipse Help Plugin (Not required by customers) +set XDC_ECLIPSE_PLUGIN_INSTALL_PATH=T:/gen/xdc/xdc_eclipse_plugin_gen/20091203 +set XDC_FILTER_INSTALL_PATH=T:/gen/xdc/xdcFilter/20100428 +set XDCPATH=%XDCPATH%;%XDC_ECLIPSE_PLUGIN_INSTALL_PATH% +set XDCPATH=%XDCPATH%;%XDC_FILTER_INSTALL_PATH% + +@REM Configure the paths to ensure that the XDC is available. +set PATH=%PATH%;%XDC_INSTALL_PATH%;%XDC_INSTALL_PATH%\bin;T:\Doxygen\doxygen\1.5.1-p1\bin + +@REM Third Party Tools: Install-Jammer (Not required by customers) +set PATH=%PATH%;T:\gen\InstallJammer\v1_3_0 + +set PATH=%PATH%;%XDCCGROOT%\bin;T:\gen\gnu\99-11-01\cygwin-b20\H-i586-cygwin32\bin +set PATH=%PATH%;T:\SDOApps\cg_xml\cg_xml_v2_30_00\bin + +@REM Third Party Tools: HTML Help compiler. +set PATH=%PATH%;T:\Doxygen\HTML_Help_Workshop\10-01-2007 + +@REM Environment Variable which control STATIC Analysis of the code +set STATIC_ANALYZE_PATH=T:\gen\coverity\prevent-mingw-3.4.0 +set PATH=%PATH%;%STATIC_ANALYZE_PATH%\bin + +@REM Set the Title Window appropriately. +Title MCBSP LLD Build Environment + +@echo MCBSP LLD Build Environment Configured +@echo --------------------------------------- diff --git a/packages/ti/drv/mcbsp/setupenv.sh b/packages/ti/drv/mcbsp/setupenv.sh new file mode 100644 index 000000000..4df8d24d3 --- /dev/null +++ b/packages/ti/drv/mcbsp/setupenv.sh @@ -0,0 +1,4 @@ +export C6X_GEN_INSTALL_PATH="D:/ti/ccsv5/tools/compiler/c6000_7.4.1" +export PDK_INSTALL_PATH="d:/ti/git/freon" +export XDC_INSTALL_PATH="d:/tixdctools_3_24_05_48" +export EDMA3LLD_BIOS6_INSTALLDIR="d:/ti/edma3_lld_02_11_05_02" diff --git a/packages/ti/drv/mcbsp/src/Module.xs b/packages/ti/drv/mcbsp/src/Module.xs new file mode 100644 index 000000000..a91726d8c --- /dev/null +++ b/packages/ti/drv/mcbsp/src/Module.xs @@ -0,0 +1,87 @@ +/****************************************************************************** + * FILE PURPOSE: MCBSP Source module specification file. + ****************************************************************************** + * FILE NAME: Module.xs + * + * DESCRIPTION: + * This file contains the module specification for the MCBSP source directory. + * + * Copyright (C) 2012, Texas Instruments, Inc. + *****************************************************************************/ + +/* Load the library utility. */ +var libUtility = xdc.loadCapsule ("../build/buildlib.xs"); + +/* List of all the MCBSP LLD Files */ +var mcbsplldFile = [ + "src/mcbsp_drv.c", + "src/mcbsp_ioctl.c", + "src/mcbsp_edma.c" +]; + +/************************************************************************** + * FUNCTION NAME : modBuild + ************************************************************************** + * DESCRIPTION : + * The function is used to build all the components of the MCBSP library + **************************************************************************/ +function modBuild() +{ + + if (socs.length != 0) + { + /* Build the device independent libraries for all the targets specified. */ + for (var targets=0; targets < socs["all"].targets.length; targets++) + { + if(socs["all"].build == "false") + continue; + var targetFiles = mcasplldFiles.slice(); /* make copy */ + var libOptions = { + copts: socs["all"].copts, + incs: lldIncludePath, + }; + libUtility.buildLibrary ("", "false", "false", libOptions, Pkg.name, socs["all"].targets[targets], targetFiles); + } + + /* Build library targets for device dependent SoCs */ + for (var soc=0; soc < soc_names.length; soc++) + { + var dev = socs[soc_names[soc]]; + + /* do not proceed if this SoC is not configured to be built */ + if (dev.build == "false") + continue; + + if (dev.socDevLib == "true") + { + var targetFiles_soc = mcasplldFiles.slice(); /* make copy */ + targetFiles_soc.push (deviceConstruct[0]+soc_names[soc]+deviceConstruct[1]); + /* Build the libraries for all the targets specified. */ + for (var targets=0; targets < dev.targets.length; targets++) + { + var libOptions = { + copts: dev.copts, + incs: lldIncludePath, + }; + libUtility.buildLibrary (soc_names[soc], "false", "true", libOptions, Pkg.name, dev.targets[targets], targetFiles_soc); + } + } + } + } + + /* Add all the .c files to the release package. */ + var testFiles = libUtility.listAllFiles (".c", "src", true); + for (var k = 0 ; k < testFiles.length; k++) + Pkg.otherFiles[Pkg.otherFiles.length++] = testFiles[k]; + + /* Add all the .h files to the release package. */ + var testFiles = libUtility.listAllFiles (".h", "src", true); + for (var k = 0 ; k < testFiles.length; k++) + Pkg.otherFiles[Pkg.otherFiles.length++] = testFiles[k]; + + /* Add all the .mk files to the release package. */ + var mkFiles = libUtility.listAllFiles (".mk", "src", true); + for (var k = 0 ; k < mkFiles.length; k++) + Pkg.otherFiles[Pkg.otherFiles.length++] = mkFiles[k]; +} + diff --git a/packages/ti/drv/mcbsp/src/mcbsp_drv.c b/packages/ti/drv/mcbsp/src/mcbsp_drv.c new file mode 100644 index 000000000..f9f114e7e --- /dev/null +++ b/packages/ti/drv/mcbsp/src/mcbsp_drv.c @@ -0,0 +1,2724 @@ +/* + * mcbsp_drv.c + * + * This file contains Driver Layer Interface implementation for the McBSP Driver. + * McBSP Driver provides Driver Layer Interface to do operations on the McBSP + * peripheral like device initialization, channel creation, control commands for + * peripheral specific operations etc. It uses EDMA3 for data transfer. + * + * Copyright (C) 2012 - 2018 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +/*============================================================================*/ +/* INCLUDE FILES */ +/*============================================================================*/ + +/* MCBSP Types and OSAL definitions: These files can be override by customers + * to point to their copies. Because of this the files have not been explicitly + * specified to include the driver path.*/ +#include +#include + +/* MCBSP Driver Includes */ +#include +#include + + +/* ========================================================================== */ +/* GLOBAL MODULE STATE */ +/* ========================================================================== */ + +/** + * \brief Array of Mcbsp instance State objects array + */ +#ifdef __cplusplus +#pragma DATA_SECTION (".mcbsp") +#pragma DATA_ALIGN (MCBSP_MAX_CACHE_ALIGN) +#else +#pragma DATA_SECTION (Mcbsp_Instances, ".mcbsp"); +#pragma DATA_ALIGN (Mcbsp_Instances, MCBSP_MAX_CACHE_ALIGN) +#endif + +Mcbsp_Object Mcbsp_Instances[CSL_MCBSP_PER_CNT]; + +/** + * \brief Mcbsp structure containing the information specific to an instance. + */ +/* Shared Memory Variable to ensure synchronizing SRIO initialization + * with all the other cores. */ +/* Created an array to pad the cache line with MCBSP_MAX_CACHE_ALIGN size */ +#ifdef __cplusplus +#pragma DATA_SECTION (".mcbsp") +#pragma DATA_ALIGN (MCBSP_MAX_CACHE_ALIGN) +#else +#pragma DATA_SECTION (Mcbsp_deviceInstInfo, ".mcbsp"); +#pragma DATA_ALIGN (Mcbsp_deviceInstInfo, MCBSP_MAX_CACHE_ALIGN) +#endif +Mcbsp_HwInfo Mcbsp_deviceInstInfo[CSL_MCBSP_PER_CNT]; + +/** + * \brief Mute buffer per instance + * + * \note Buffer used when the mcbsp is placed in mute. + */ +#ifdef __cplusplus +#pragma DATA_SECTION (".mcbsp") +#pragma DATA_ALIGN (MCBSP_MAX_CACHE_ALIGN) +#else +#pragma DATA_SECTION (Mcbsp_muteBuf, ".mcbsp"); +#pragma DATA_ALIGN (Mcbsp_muteBuf, MCBSP_MAX_CACHE_ALIGN) +#endif +Mcbsp_TempBuffer Mcbsp_muteBuf[CSL_MCBSP_PER_CNT]; + +#ifdef MCBSP_LOOPJOB_ENABLE +/** + * \brief Destination loop buffer per instance + * + * \note Buffer used during the loop job mode for the Transmit section + */ +#ifdef __cplusplus +#pragma DATA_SECTION (".mcbsp") +#pragma DATA_ALIGN (MCBSP_MAX_CACHE_ALIGN) +#else +#pragma DATA_SECTION (Mcbsp_loopDstBuf, ".mcbsp"); +#pragma DATA_ALIGN (Mcbsp_loopDstBuf, MCBSP_MAX_CACHE_ALIGN) +#endif +Mcbsp_TempBuffer Mcbsp_loopDstBuf[CSL_MCBSP_PER_CNT]; + +/** + * \brief Receive loop buffer per instance + * + * \note Buffer used during the loop job mode for the Receive section + */ +#ifdef __cplusplus +#pragma DATA_SECTION (".mcbsp") +#pragma DATA_ALIGN (MCBSP_MAX_CACHE_ALIGN) +#else +#pragma DATA_SECTION (Mcbsp_loopSrcBuf, ".mcbsp"); +#pragma DATA_ALIGN (Mcbsp_loopSrcBuf, MCBSP_MAX_CACHE_ALIGN) +#endif +Mcbsp_TempBuffer Mcbsp_loopSrcBuf[CSL_MCBSP_PER_CNT]; +#endif /* MCBSP_LOOPJOB_ENABLE */ + +/*============================================================================*/ +/* LOCAL FUNCTION PROTOTYPES */ +/*============================================================================*/ +int32_t mcbspSubmitReq(Mcbsp_Object_Unpadded *instHandle, + Mcbsp_ChannelObj *chanHandle, + Mcbsp_IOBuf *ioBuf); +void mcbspConfigureFifo(Mcbsp_HwInfo_Unpadded *hMcbsp, + Mcbsp_ChannelObj *chanHandle, + Bool enableHwFifo); + +#ifndef MCBSP_LOOPJOB_ENABLE +extern uint32_t Mcbsp_edmaChanNum; +#endif /* MCBSP_LOOPJOB_ENABLE */ + + +/* ========================================================================== */ +/* MODULE PUBLIC FUNCTIONS */ +/* ========================================================================== */ + +/** + * @b Description + * @n + * This is the MCBSP Driver Initialization API which needs to be + * invoked by the users to initialize the MCBSP peripheral. This call + * is *mandatory* and should be called before calling any of the + * other driver API's. + * + * This should only be called *ONCE* for the device. + * + * @retval + * MCBSP_STATUS_COMPLETED if successful + * @retval + * MCBSP_ERR_BADARGS if not successful + * MCBSP_ERR_ALLOC + */ +int32_t mcbspInit (void) +{ + int32_t devId = 0; + void *criticalSectionInfo; + + /* Begin Critical Section before accessing shared resources. */ + criticalSectionInfo = Mcbsp_osalEnterMultipleCoreCriticalSection (); + + /* Invalidate the Cache Contents */ + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_Instances, sizeof(Mcbsp_Instances)); + + /* initialize the information for all the device instances */ + for (devId = 0; devId < CSL_MCBSP_PER_CNT; devId++) + { + /* initialise the instance object */ + memset((void *)&Mcbsp_Instances[devId], 0, sizeof(Mcbsp_Object)); + Mcbsp_Instances[devId].obj.inUse = FALSE; + } + + /* Writeback Global Object */ + Mcbsp_osalEndMemAccess ((void *)Mcbsp_Instances, sizeof(Mcbsp_Instances)); + + /* End Critical Section */ + Mcbsp_osalExitMultipleCoreCriticalSection (criticalSectionInfo); + + return MCBSP_STATUS_COMPLETED; +} + +/** + * \brief Allocates and configures the McBSP instance specified by devid. + * + * Acquires the Handle of the McBSP and configure the McBSP by + * default for the following things. + * o Data output for audio playback + * o Data input for audio recording + * o Configure the McBSP in DSP/TDM data format mode of the audio + * codec. + * o Configure the McBSP to receive the Frame Sync and bit clock + * externally for both receiver and transmitter. + * o McBSP can also be configured to generate Frame Sync and + * bit clock internally by enabling sample rate generator and + * frame sync generator blocks respectively depending on the + * fields set in the device parameter structure which shall + * be passed to mcbspBindDev() function as one of the parameter. + * + * \param devp [OUT] pointer to hold allocated instance object ptr + * \param devid [IN] instance number of the mcbsp + * \param devParams [IN] user supplied data params. + * + * \return MCBSP_STATUS_COMPLETED if successful + * + * MCBSP_ERR_BADARGS if not successful + * MCBSP_ERR_ALLOC + * + * \enter devp should be non NULL and valid pointer, + * devId should be < CSL_MCBSP_PER_CNT + * devParams should be non NULL and valid pointer, + * + * \leave Not implemented + */ +int32_t mcbspBindDev(void* *devp, int32_t devid, void* devParams) +{ + Mcbsp_Object_Unpadded *instHandle = NULL; + Mcbsp_Params *params = NULL; + uint32_t ctrlMask = 0x00; + uint32_t count = 0x00; + int32_t status = MCBSP_STATUS_COMPLETED; + void *criticalSectionInfo; + + /* Begin Critical Section before accessing shared resources. */ + criticalSectionInfo = Mcbsp_osalEnterMultipleCoreCriticalSection (); + + /* Invalidate the Cache Contents */ + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_Instances, sizeof(Mcbsp_Instances)); + Mcbsp_osalBeginMemAccess ((void *)Mcbsp_deviceInstInfo, sizeof(Mcbsp_deviceInstInfo)); + +#ifndef MCBSP_DISABLE_INPUT_PARAM_CHECK + if ((NULL == devp) || (NULL == devParams) || (devid >= CSL_MCBSP_PER_CNT)) + { + status = MCBSP_ERR_BADARGS; + } + + if (MCBSP_STATUS_COMPLETED == status) + { + if (TRUE == Mcbsp_Instances[devid].obj.inUse) + { + status = MCBSP_ERR_INUSE; + } + else + { +#endif /* MCBSP_DISABLE_INPUT_PARAM_CHECK */ + /* copy the pointer to the instance object */ + instHandle = &(Mcbsp_Instances[devid].obj); + + /* set the module state as in use */ + Mcbsp_Instances[devid].obj.inUse = TRUE; + + params = (Mcbsp_Params *)devParams; + +#ifndef MCBSP_DISABLE_INPUT_PARAM_CHECK + /* Only DMA mode of the operation is supported for Mcbsp mode */ + if ((Mcbsp_DevMode_McBSP == params->mode) && + (Mcbsp_OpMode_DMAINTERRUPT != params->opMode)) + { + status = MCBSP_ERR_BADMODE; + } + else + { + if (NULL == params->srgSetup) + { + status = MCBSP_ERR_BADMODE; + } + } + } + } +#endif /* MCBSP_DISABLE_INPUT_PARAM_CHECK */ + + if (MCBSP_STATUS_COMPLETED == status) + { + /* update the instance of the device being created */ + instHandle->instNum = devid; + + /* update the user supplied params to the instance object */ + instHandle->mode = params->mode; + instHandle->opMode = params->opMode; + instHandle->enablecache = params->enablecache; + + /* copy the SOC related information in to the instance object */ + instHandle->hwInfo = Mcbsp_deviceInstInfo[devid].obj; + + /* stop the state machine of RX and TX */ + instHandle->stopSmFsXmt = TRUE; + instHandle->stopSmFsRcv = TRUE; + + instHandle->retryCount = Mcbsp_POLLED_RETRYCOUNT; + + /* configure the default values for the transmit channel */ + instHandle->xmtObj.mode = (uint16_t)MCBSP_MODE_OUTPUT; + instHandle->xmtObj.devHandle = NULL; + instHandle->xmtObj.cbFxn = NULL; + instHandle->xmtObj.cbArg = NULL; + instHandle->xmtObj.edmaHandle = NULL; + instHandle->xmtObj.edmaEventQue = Mcbsp_TXEVENTQUE; + instHandle->xmtObj.edmaCallback = NULL; + instHandle->xmtObj.xferChan = 0x00; + instHandle->xmtObj.tcc = 0x00; + instHandle->xmtObj.tempIOBuf = NULL; + instHandle->xmtObj.submitCount = 0x00; + instHandle->xmtObj.dataFormat = Mcbsp_BufferFormat_1SLOT; + instHandle->xmtObj.bMuteON = FALSE; + instHandle->xmtObj.paused = FALSE; + instHandle->xmtObj.flush = FALSE; + instHandle->xmtObj.isTempIOBufValid = FALSE; + instHandle->xmtObj.enableHwFifo = TRUE; + instHandle->xmtObj.gblErrCbk = NULL; + instHandle->xmtObj.userDataBufferSize = 0x00; + instHandle->xmtObj.loopJobBuffer = NULL; + instHandle->xmtObj.loopJobLength = 0x00; + instHandle->xmtObj.nextLinkParamSetToBeUpdated = 0x00; + instHandle->xmtObj.loopjobUpdatedinParamset = FALSE; + instHandle->xmtObj.roundedWordWidth = 0x00; + + instHandle->rcvObj.mode = (uint16_t)MCBSP_MODE_INPUT; + instHandle->rcvObj.devHandle = NULL; + instHandle->rcvObj.cbFxn = NULL; + instHandle->rcvObj.cbArg = NULL; + instHandle->rcvObj.edmaHandle = NULL; + instHandle->rcvObj.edmaEventQue = Mcbsp_RXEVENTQUE; + instHandle->rcvObj.edmaCallback = NULL; + instHandle->rcvObj.xferChan = 0x00; + instHandle->rcvObj.tcc = 0x00; + instHandle->rcvObj.tempIOBuf = NULL; + instHandle->rcvObj.submitCount = 0x00; + instHandle->rcvObj.dataFormat = Mcbsp_BufferFormat_1SLOT; + instHandle->rcvObj.bMuteON = FALSE; + instHandle->rcvObj.paused = FALSE; + instHandle->rcvObj.flush = FALSE; + instHandle->rcvObj.isTempIOBufValid = FALSE; + instHandle->rcvObj.enableHwFifo = TRUE; + instHandle->rcvObj.gblErrCbk = NULL; + instHandle->rcvObj.userDataBufferSize = 0x00; + instHandle->rcvObj.loopJobBuffer = NULL; + instHandle->rcvObj.loopJobLength = 0x00; + instHandle->rcvObj.nextLinkParamSetToBeUpdated = 0x00; + instHandle->rcvObj.loopjobUpdatedinParamset = FALSE; + instHandle->rcvObj.roundedWordWidth = 0x00; + +#ifdef MCBSP_LOOPJOB_ENABLE + /* driver is compiled in loop Job mode */ + instHandle->loopJobMode = TRUE; +#else + instHandle->loopJobMode = FALSE; +#endif + + for (count = 0; count < Mcbsp_MAXLINKCNT; count++) + { + instHandle->xmtObj.pramTbl[count] = 0x00; + instHandle->rcvObj.pramTbl[count] = 0x00; + instHandle->xmtObj.pramTblAddr[count] = 0x00; + instHandle->rcvObj.pramTblAddr[count] = 0x00; + } + + /* set the status of the channel to closed */ + instHandle->xmtObj.chanState = Mcbsp_DriverState_CLOSED; + instHandle->rcvObj.chanState = Mcbsp_DriverState_CLOSED; + + /* Pending and Floating queues for TX and RX channels */ + instHandle->xmtObj.ptrQPendList = params->txQPendingList; + instHandle->xmtObj.ptrQFloatList = params->txQFloatingList; + instHandle->rcvObj.ptrQPendList = params->rxQPendingList; + instHandle->rcvObj.ptrQFloatList = params->rxQFloatingList; + + if (MCBSP_STATUS_COMPLETED == status) + { + /* Reset the McBSP Transmitter, receiver and SRGR before * + * configuration */ + ctrlMask = ((Mcbsp_SpcrCtrl_TX_DISABLE | + Mcbsp_SpcrCtrl_RX_DISABLE) | + (Mcbsp_SpcrCtrl_SRG_DISABLE | + Mcbsp_SpcrCtrl_FSYNC_DISABLE)); + + status = Mcbsp_localResetCtrl(instHandle,ctrlMask); + if (MCBSP_STATUS_COMPLETED != status) + { + /* Writeback Global Object */ + Mcbsp_osalEndMemAccess ((void *)Mcbsp_Instances, sizeof(Mcbsp_Instances)); + Mcbsp_osalEndMemAccess ((void *)Mcbsp_deviceInstInfo, sizeof(Mcbsp_deviceInstInfo)); + + /* End Critical Section */ + Mcbsp_osalExitMultipleCoreCriticalSection (criticalSectionInfo); + + return status; + } + + /* copy the configuration for the sample rate generator and config* + * the emulation mode and DLB mode settings */ + + /* Configure the McBSP with user supplied parameters */ + instHandle->srgrConfig = *(params->srgSetup); + + /* reset the Mcbsp */ + instHandle->hwInfo.regs->SPCR = 0x00u; + + /* set the DLB mode settings */ + instHandle->hwInfo.regs->SPCR &= (~CSL_MCBSP_SPCR_DLB_MASK); + instHandle->hwInfo.regs->SPCR |= + (params->dlbMode << CSL_MCBSP_SPCR_DLB_SHIFT); + + /* set the clock stop mode settings */ + instHandle->hwInfo.regs->SPCR &= (~CSL_MCBSP_SPCR_CLKSTP_MASK); + + /* set the emulation state */ + instHandle->hwInfo.regs->SPCR &= (~(CSL_MCBSP_SPCR_SOFT_MASK | + CSL_MCBSP_SPCR_FREE_MASK)); + instHandle->hwInfo.regs->SPCR |= + (params->emulationMode << CSL_MCBSP_SPCR_SOFT_SHIFT); + } + + if (MCBSP_STATUS_COMPLETED != status) + { + *devp = NULL; + } + else + { + *devp = &(Mcbsp_Instances[devid]); + + /* set the status of the driver to created */ + instHandle->devState = Mcbsp_DriverState_CREATED; + } + } + + /* Writeback Global Object */ + Mcbsp_osalEndMemAccess ((void *)Mcbsp_Instances, sizeof(Mcbsp_Instances)); + Mcbsp_osalEndMemAccess ((void *)Mcbsp_deviceInstInfo, sizeof(Mcbsp_deviceInstInfo)); + + /* End Critical Section */ + Mcbsp_osalExitMultipleCoreCriticalSection (criticalSectionInfo); + + return status; +} + +/** + * \brief Creates a communication channel in specified mode to communicate + * data between the application and the McBSP device instance. This + * function sets the required hardware configurations for the data + * transactions. It returns configured channel handle to application + * which will be used in all further transactions with the channel. + * + * Pre-requisites: + * 1. Valid chanParams structure + * This takes much information pertaining to mcbsp channel + * configuration such as how many slots are used for this + * channel what are their communication parameters, clock settings etc. + * 2. Valid device pointer + * + * \param chanp [IN] Channel Handler + * \param devp [IN] Device pointer + * \param mode [IN] channel mode -> input or output + * \param chanParams [IN] channel parameters from user + * \param cbFxn [IN] callback function pointer + * \param cbArg [IN] callback function Arguments + * + * \return MCBSP_STATUS_COMPLETED if successful + * MCBSP_ERR_BADIO if not successful + * MCBSP_ERR_ALLOC " + * MCBSP_ERR_BADARGS if passed invalid chanParams structure + */ +int32_t mcbspCreateChan(void* *chanp, + void* devp, + int32_t mode, + void* chanParams, + Mcbsp_CallbackFxn cbFxn, + void* cbArg) +{ + Mcbsp_Object *hInst = NULL; + Mcbsp_Object_Unpadded *instHandle = NULL; + Mcbsp_ChannelObj *chanHandle = NULL; + Mcbsp_ChanParams *chanparam = NULL; + void* criticalSectionInfo; + int32_t status = MCBSP_STATUS_COMPLETED; + +/* Begin parameter checking */ +#ifndef MCBSP_DISABLE_INPUT_PARAM_CHECK + if (((NULL == chanParams) + || (NULL == cbFxn) + || (NULL == cbArg) + || (NULL == devp)) + || ((MCBSP_MODE_INPUT != mode) && (MCBSP_MODE_OUTPUT != mode))) + { + return MCBSP_ERR_BADARGS; + } + else + { +#endif + chanparam = (Mcbsp_ChanParams *)chanParams; +#ifndef MCBSP_DISABLE_INPUT_PARAM_CHECK + if (NULL == chanparam->edmaHandle) + { + return MCBSP_ERR_BADARGS; + } + } +#endif /* MCBSP_DISABLE_INPUT_PARAM_CHECK */ +/* End parameter checking */ + + /* Begin Critical Section before accessing shared resources. */ + criticalSectionInfo = Mcbsp_osalEnterMultipleCoreCriticalSection (); + + /* Invalidate the Cache Contents */ + Mcbsp_osalBeginMemAccess ((void *)devp, sizeof(Mcbsp_Object)); + + if (MCBSP_STATUS_COMPLETED == status) + { + hInst = (Mcbsp_Object *)devp; + instHandle = (Mcbsp_Object_Unpadded *)&(hInst->obj); + + /* get the pointer to the required channel structure */ + if (MCBSP_MODE_INPUT == mode) + { + chanHandle = &instHandle->rcvObj; + } + else + { + chanHandle = &instHandle->xmtObj; + } + + /* we will check if the current requested channel is availablehere* + * protect the channel status so that multiple threads requesting * + * same channel do not cause a corruption */ + if (Mcbsp_DriverState_CLOSED == chanHandle->chanState) + { + chanHandle->chanState = Mcbsp_DriverState_OPENED; + } + else + { + /* Requested channel is already taken hence we will set status* + * as invalid */ + status = MCBSP_ERR_BADMODE; + } + + if (MCBSP_STATUS_COMPLETED == status) + { + chanHandle->mode = (uint16_t)mode; + chanHandle->devHandle = hInst; + + /* Assign the respective callback function */ + chanHandle->cbFxn = cbFxn; + chanHandle->cbArg = cbArg; + + /* This is used in EDMA mode to populate paramsets in PINGPONG */ + chanHandle->nextLinkParamSetToBeUpdated = 0; + + /* Initialize Mute parameter */ + chanHandle->bMuteON = FALSE; + + chanHandle->isTempIOBufValid = FALSE; + + /* Counter that counts outstanding requests of this channel */ + chanHandle->submitCount = 0; + + /* Global error callback registered to channel */ + chanHandle->gblErrCbk = chanparam->gblCbk; + + /* copy the edma event queue details */ + chanHandle->edmaEventQue = chanparam->edmaEventQue; + + /* store the EDMA3 module handle */ + chanHandle->edmaHandle = chanparam->edmaHandle; + + /* configure the FIFO */ + chanHandle->enableHwFifo = chanparam->enableHwFifo; + + /* copy the user settings in to the channel object */ + chanHandle->chanConfig = *(chanparam->chanConfig); + chanHandle->clkSetup = *(chanparam->clkSetup); + chanHandle->numEnabledChannels = chanparam->numEnabledChannels; + chanHandle->dataFormat = chanparam->dataFormat; + } + + if (MCBSP_STATUS_COMPLETED == status) + { + /* configure the actual wordwidth to be used */ + switch (chanparam->wordWidth) + { + case Mcbsp_WordLength_8: + chanHandle->roundedWordWidth = 1u; + break; + case Mcbsp_WordLength_12: + case Mcbsp_WordLength_16: + chanHandle->roundedWordWidth = 2u; + break; + case Mcbsp_WordLength_20: + case Mcbsp_WordLength_24: + chanHandle->roundedWordWidth = 3u; + break; + case Mcbsp_WordLength_32: + default: + chanHandle->roundedWordWidth = 4u; + break; + } + +#ifdef MCBSP_LOOPJOB_ENABLE + /* Configure the loop job for the user specified buffer if given */ + if (NULL == chanparam->userLoopJobBuffer) + { + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + chanHandle->loopJobBuffer = + Mcbsp_loopDstBuf[instHandle->instNum].scratchBuffer; + } + else + { + chanHandle->loopJobBuffer = + Mcbsp_loopSrcBuf[instHandle->instNum].scratchBuffer; + } + chanHandle->loopJobLength = chanHandle->roundedWordWidth; + } + else + { + /* Apps has preference on the loopjob buffer & lets use it */ + chanHandle->loopJobBuffer = chanparam->userLoopJobBuffer; + chanHandle->userLoopJobLength = chanparam->userLoopJobLength; + + /* user loopJob is being used */ + chanHandle->userLoopJob = TRUE; + if (chanHandle->roundedWordWidth > + chanparam->userLoopJobLength) + { + /* not enough loopjob buffer has been provided we * + * should have at least loopbuffer for 1 sync event */ + status = MCBSP_ERR_BADARGS; + } + } +#endif + } + + if ((Mcbsp_DevMode_McBSP == instHandle->mode) && (MCBSP_STATUS_COMPLETED == status)) + { + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + /* Assign the Channel ID and TCC */ + chanHandle->xferChan = instHandle->hwInfo.edmaRxEventNum; + chanHandle->tcc = instHandle->hwInfo.edmaRxEventNum; + chanHandle->edmaCallback = + (EDMA3_RM_TccCallback)&Mcbsp_localEdmaCallback; + } + else + { + /* Assign the Channel ID and TCC */ + chanHandle->xferChan = instHandle->hwInfo.edmaTxEventNum; + chanHandle->tcc = instHandle->hwInfo.edmaTxEventNum; + chanHandle->edmaCallback = + (EDMA3_RM_TccCallback)&Mcbsp_localEdmaCallback; + } + + if (MCBSP_STATUS_COMPLETED == status) + { + mcbspConfigureFifo(&(instHandle->hwInfo), + chanHandle, + chanHandle->enableHwFifo); + } + + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + /* configure the RX section */ + status = Mcbsp_localConfigureRcvChannel(instHandle,chanparam); + } + else + { + /* configure the TX section */ + status = Mcbsp_localConfigureXmtChannel(instHandle,chanparam); + } + + if (MCBSP_STATUS_COMPLETED == status) + { + /* configure the sample rate generator */ + status = Mcbsp_localConfigureSrgr(instHandle,chanHandle); + } + + if (MCBSP_STATUS_COMPLETED == status) + { + /* enable the internal sample rate generator if required */ + if (((MCBSP_MODE_INPUT == chanHandle->mode) && + (TRUE == instHandle->rxSrgEnable)) || + ((MCBSP_MODE_OUTPUT == chanHandle->mode) && + (TRUE == instHandle->txSrgEnable))) + { + /* enable the sample rate generator */ + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_SRG_ENABLE); + instHandle->srgEnabled = TRUE; + + /* wait for the 2CLKG clock cycles */ + Mcbsp_osalWaitNBitClocks(2u); + } + + /* clear the XSYNCERR (to be done only if TX is used) */ + if (MCBSP_MODE_OUTPUT == chanHandle->mode) + { + /* Enable the TX section */ + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_TX_ENABLE); + + /* wait for 2 CLKR or CLX cycles */ + Mcbsp_osalWaitNBitClocks(2u); + + /* Disable the TX section to clear any XYNCERR */ + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_TX_DISABLE); + } + + /* complete the EDMA setup for the driver */ + status = Mcbsp_localSetupEdmaDuringOpen(chanHandle); + } + +#ifdef MCBSP_LOOPJOB_ENABLE + if (MCBSP_STATUS_COMPLETED == status) + { + /* configure the FIFO for the specific channel */ + if (TRUE == chanHandle->enableHwFifo) + { + /* Disable and enable the FIFO so that the events are * + * generated to the Mcbsp for the first time */ + mcbspConfigureFifo(&instHandle->hwInfo,chanHandle,FALSE); + mcbspConfigureFifo(&instHandle->hwInfo,chanHandle,TRUE); + } + + /* enable the EDMA transfer for the channel so that it is * + * ready to transfer the data as soon as the state machine is * + * enabled */ + EDMA3_DRV_enableTransfer( + chanHandle->edmaHandle, + chanHandle->xferChan, + EDMA3_DRV_TRIG_MODE_EVENT); + + /* Start the McBSP hardware */ + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_RX_ENABLE); + } + else + { + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_TX_ENABLE); + } + + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + if (TRUE == instHandle->rxFsgEnable) + { + /* enable the sample rate generator */ + Mcbsp_localResetCtrl( + instHandle, + Mcbsp_SpcrCtrl_FSYNC_ENABLE); + } + } + else + { + if (TRUE == instHandle->txFsgEnable) + { + /* enable the sample rate generator */ + Mcbsp_localResetCtrl( + instHandle, + Mcbsp_SpcrCtrl_FSYNC_ENABLE); + } + } + + /* State machine stop status */ + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + instHandle->stopSmFsRcv = FALSE; + } + else + { + instHandle->stopSmFsXmt = FALSE; + } + } +#endif + } + } + + if (MCBSP_STATUS_COMPLETED != status ) + { + if (NULL != chanHandle) + { + /* set the status of the channel to closed */ + chanHandle->mode = (uint16_t)Mcbsp_DriverState_CLOSED; + } + + /* channel opening for transaction has failed */ + chanHandle = NULL; + } + else + { + *chanp = chanHandle; + } + + /* Writeback Global Object */ + Mcbsp_osalEndMemAccess ((void *)devp, sizeof(Mcbsp_Object)); + + /* End Critical Section */ + Mcbsp_osalExitMultipleCoreCriticalSection (criticalSectionInfo); + + return status; +} + +/** + * \brief frees a channel and all it's associated resources. + * + * Frees the EDMA resources including EDMA master channel and link + * PaRAM entries held by the channel.it also unregisters all the + * interrupt handlers. + * + * \param chanp [IN] Handle to the channel + * + * \return MCBSP_STATUS_COMPLETED if successful + * MCBSP_STATUS_ABORTED if not successful + * + * \enter chanp should be non NULL and valid pointer, + * + * \leave Not implemented + */ +int32_t mcbspDeleteChan(void* chanp) +{ + Mcbsp_Object_Unpadded *instHandle = NULL; + Mcbsp_ChannelObj *chanHandle = NULL; + Uint8 linkCnt = 0; + uint32_t timeOut = 0x00; + int32_t status = MCBSP_STATUS_COMPLETED; + void *criticalSectionInfo; + + /* Begin Critical Section before accessing shared resources. */ + criticalSectionInfo = Mcbsp_osalEnterMultipleCoreCriticalSection (); + +#ifndef MCBSP_DISABLE_INPUT_PARAM_CHECK + if (NULL == chanp) + { + status = MCBSP_ERR_BADARGS; + } + else + { +#endif /* MCBSP_DISABLE_INPUT_PARAM_CHECK */ + chanHandle = (Mcbsp_ChannelObj *)chanp; + + /* Invalidate the Cache Contents */ + Mcbsp_osalBeginMemAccess ((void *)chanHandle->devHandle, sizeof(Mcbsp_Object)); + +#ifndef MCBSP_DISABLE_INPUT_PARAM_CHECK + if (Mcbsp_DriverState_OPENED != chanHandle->chanState) + { + status = MCBSP_ERR_BADMODE; + } + else + { + if (NULL == chanHandle->devHandle) + { + status = MCBSP_ERR_BADARGS; + } + else + { +#endif + instHandle = (Mcbsp_Object_Unpadded *)&(chanHandle->devHandle->obj); + +#ifndef MCBSP_DISABLE_INPUT_PARAM_CHECK + if (NULL == instHandle) + { + status = MCBSP_ERR_BADARGS; + } + } + } + } +#endif /* MCBSP_DISABLE_INPUT_PARAM_CHECK */ + + if (MCBSP_STATUS_COMPLETED == status) + { + /* reset the channel . */ + Mcbsp_localAbortReset(chanHandle); + + /* Disable the current transfer to make sure that there is no * + * running EDMA transfer taking place */ + status = EDMA3_DRV_disableTransfer( + chanHandle->edmaHandle, + chanHandle->xferChan, + EDMA3_DRV_TRIG_MODE_EVENT); + + /* Disable current EDMA transfer */ + if (MCBSP_STATUS_COMPLETED == status) + { + if (MCBSP_MODE_OUTPUT == chanHandle->mode) + { + timeOut = instHandle->retryCount; + + /* Poll for TXEMPTY */ + while ((CSL_MCBSP_SPCR_XEMPTY_MASK == + (CSL_MCBSP_SPCR_XEMPTY_MASK & instHandle->hwInfo.regs->SPCR)) + && (0 != timeOut)) + { + timeOut--; + } + } + + /* Reset McBSP before freeing the edma channels */ + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_RX_DISABLE); + } + else + { + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_TX_DISABLE); + } + + /* Free Edma channels */ + status = EDMA3_DRV_freeChannel( + chanHandle->edmaHandle, + chanHandle->xferChan); +#ifndef MCBSP_LOOPJOB_ENABLE + + /* free the already allocated dummy PaRAM entries */ + EDMA3_DRV_freeChannel(chanHandle->edmaHandle, + Mcbsp_edmaChanNum); +#endif + + if (MCBSP_STATUS_COMPLETED == status) + { + /* free the EDMA PaRAM entries used for Ping pong buffer */ + for (linkCnt = 0; linkCnt < Mcbsp_MAXLINKCNT; linkCnt++) + { + status = EDMA3_DRV_freeChannel( + chanHandle->edmaHandle, + chanHandle->pramTbl[linkCnt]); + if (MCBSP_STATUS_COMPLETED != status) + { + break; + } + } + } + + if (MCBSP_STATUS_COMPLETED == status) + { + /* Set the state of the channel as closed */ + chanHandle->chanState = Mcbsp_DriverState_CLOSED; + + /* Set the Muted state to FALSE */ + chanHandle->bMuteON = FALSE; + + /* Set the Paused state to FALSE */ + chanHandle->paused = FALSE; + } + } + + /* Writeback Global Object */ + Mcbsp_osalEndMemAccess ((void *)chanHandle->devHandle, sizeof(Mcbsp_Object)); + } + + /* End Critical Section */ + Mcbsp_osalExitMultipleCoreCriticalSection (criticalSectionInfo); + + return (status); +} + +/** + * \brief Closes the McBSP device instance from use. + * This API is called by the application when it no longer requires the + * device instance. Note that all the channels have to be closed for + * the device instance to be deleted sucessfully. + * + * \param devp [IN] Handle to the device created. + * + * \return MCBSP_STATUS_COMPLETED if successful + * MCBSP_STATUS_ABORTED if not successful + * + * \enter devp should be non NULL and valid pointer, + * + * \leave Not implemented + */ +int32_t mcbspUnBindDev(void* devp) +{ + Mcbsp_Object *hInst = NULL; + Mcbsp_Object_Unpadded *instHandle = NULL; + int32_t status = MCBSP_STATUS_COMPLETED; + void* criticalSectionInfo; + + /* Begin Critical Section before accessing shared resources. */ + criticalSectionInfo = Mcbsp_osalEnterMultipleCoreCriticalSection (); + +#ifndef MCBSP_DISABLE_INPUT_PARAM_CHECK + if (NULL == devp) + { + status = MCBSP_ERR_BADARGS; + } + else + { +#endif /* MCBSP_DISABLE_INPUT_PARAM_CHECK */ + + hInst = (Mcbsp_Object *)devp; + + /* Invalidate the Cache Contents */ + Mcbsp_osalBeginMemAccess ((void *)hInst, sizeof(Mcbsp_Object)); + + instHandle = (Mcbsp_Object_Unpadded *)&(hInst->obj); + +#ifndef MCBSP_DISABLE_INPUT_PARAM_CHECK + if ((CSL_MCBSP_PER_CNT <= instHandle->instNum) || + (Mcbsp_DriverState_CLOSED != instHandle->xmtObj.chanState) || + (Mcbsp_DriverState_CLOSED != instHandle->rcvObj.chanState)) + { + status = MCBSP_ERR_BADARGS; + } + } +#endif /* MCBSP_DISABLE_INPUT_PARAM_CHECK */ + + if (MCBSP_STATUS_COMPLETED == status) + { + /* reset the Mcbsp */ + instHandle->hwInfo.regs->SPCR = 0x00u; + + /* Mark driver state as deleted and module as not in use */ + instHandle->devState = Mcbsp_DriverState_DELETED; + instHandle->inUse = FALSE; + + /* update the user params to the instance object */ + instHandle->instNum = -1; + + /* Intialize the mcbsp driver to default values */ + memset(instHandle, 0, sizeof(Mcbsp_Object_Unpadded)); + + /* Writeback Global Object */ + Mcbsp_osalEndMemAccess ((void *)hInst, sizeof(Mcbsp_Object)); + } + + /* End Critical Section */ + Mcbsp_osalExitMultipleCoreCriticalSection (criticalSectionInfo); + + return status; +} + +/** + * \brief Submit a I/O buffer to a channel for processing + * + * The application calls this function to cause the driver + * to process the Mcbsp_IOBuf for read/write/flush/abort operations. + * + * \param chanp [IN] Pointer to channel + * \param ioBuf [IN] Pointer to buffer to be submitted + * + * \return MCBSP_STATUS_COMPLETED, if buffer is fully processed + * MCBSP_STATUS_ABORTED, if buffer is aborted + * MCBSP_STATUS_PENDING, if buffer is not fully processed + * MCBSP_ERR_BADIO in case of an error in processing + * + */ +int32_t mcbspSubmitChan(void* chanp, Mcbsp_IOBuf *const ioBuf) +{ + Mcbsp_Object_Unpadded *instHandle = NULL; + Mcbsp_ChannelObj *chanHandle = NULL; + int32_t status = MCBSP_STATUS_COMPLETED; + +#ifndef MCBSP_DISABLE_INPUT_PARAM_CHECK + if ((NULL == chanp) || ( NULL == ioBuf)) + { + status = MCBSP_ERR_BADARGS; + } + else + { +#endif + chanHandle = (Mcbsp_ChannelObj *)chanp; + +#ifndef MCBSP_DISABLE_INPUT_PARAM_CHECK + + if ((NULL == chanHandle) || (NULL == chanHandle->devHandle)) + { + status = MCBSP_ERR_BADARGS; + } + else + { +#endif + instHandle = (Mcbsp_Object_Unpadded *)&(chanHandle->devHandle->obj); +#ifndef MCBSP_DISABLE_INPUT_PARAM_CHECK + if (NULL == instHandle) + { + status = MCBSP_ERR_BADARGS; + } + else + { + if (NULL == ioBuf->addr) + { + if ((Mcbsp_IOBuf_Cmd_READ == ioBuf->cmd) || + (Mcbsp_IOBuf_Cmd_WRITE == ioBuf->cmd)) + { + status = MCBSP_ERR_BADARGS; + } + } + } + } + } +#endif /* MCBSP_DISABLE_INPUT_PARAM_CHECK */ + + if (MCBSP_STATUS_COMPLETED == status) + { + /* process the command sent by the application */ + switch (ioBuf->cmd) + { + case Mcbsp_IOBuf_Cmd_READ: + case Mcbsp_IOBuf_Cmd_WRITE: + if (TRUE != chanHandle->flush) + { + status = mcbspSubmitReq(instHandle,chanHandle,ioBuf); + } + else + { + status = MCBSP_ERR_BADIO; + } + break; + case Mcbsp_IOBuf_Cmd_FLUSH: + /* Flush command has been issued need to abort the receive * + * channel buffers and complete the TX buffers normally */ + chanHandle->flush = TRUE; + Mcbsp_localAbortReset(chanHandle); + chanHandle->flush = FALSE; + break; + case Mcbsp_IOBuf_Cmd_ABORT: + Mcbsp_localAbortReset(chanHandle); + break; + default: + status = MCBSP_ERR_BADIO; + break; + } + } + + return status; +} + +/** + * \brief Implements the IOCTLS for McBSP driver. + * + * ControlChan() implements recieved IOCTL commands from the + * application and executes them accordingly. + * + * \param chanp [IN] Pointer to channel + * \param cmd [IN] specific IOCTL command + * \param arg [IN] arguments required for specific commands + * + * \return MCBSP_STATUS_COMPLETED, if command is executed correctly + * MCBSP_STATUS_ABORTED, if command returns error during execution + * MCBSP_ERR_NOTIMPL, if command is not supported + * MCBSP_ERR_BADARGS if args are not correct + */ +int32_t mcbspControlChan(void* chanp, Mcbsp_IOCTL cmd, void* arg) +{ + Mcbsp_ChannelObj *chanHandle = NULL; + int32_t status = MCBSP_STATUS_COMPLETED; + +#ifndef MCBSP_DISABLE_INPUT_PARAM_CHECK + if (NULL == chanp) + { + status = MCBSP_ERR_BADARGS; + } + else + { +#endif /* MCBSP_DISABLE_INPUT_PARAM_CHECK */ + + chanHandle = (Mcbsp_ChannelObj *)chanp; + + /* Invalidate the Cache Contents */ + Mcbsp_osalBeginMemAccess ((void *)chanHandle->devHandle, sizeof(Mcbsp_Object)); + +#ifndef MCBSP_DISABLE_INPUT_PARAM_CHECK + if (NULL == chanHandle->devHandle) + { + status = MCBSP_ERR_BADARGS; + } + } +#endif + + if (MCBSP_STATUS_COMPLETED == status) + { + /* call the function to process the IOCTL command */ + status = Mcbsp_localSubmitIoctl( + chanHandle, + cmd, + arg, + NULL); + } + + /* Writeback Global Object */ + Mcbsp_osalEndMemAccess ((void *)chanHandle->devHandle, sizeof(Mcbsp_Object)); + + return (status); +} + +/** + * \brief McBSP Tx ISR function + * + * This Function is the interrupt service routine for the Mcbsp TX + * event. + * + * \param hChan [IN] Handle to the channel + * + * \return None + */ +void mcbspGblXmtIsr(void *hChan) +{ + Mcbsp_Object_Unpadded *instHandle = NULL; + Mcbsp_ChannelObj *chanHandle = (Mcbsp_ChannelObj *)hChan; + + instHandle = (Mcbsp_Object_Unpadded *)&(chanHandle->devHandle->obj); + + /* Only DMA mode of operation is supported by the Mcbsp driver hence we * + * will only check if there is an sync error and notify the application */ + if (CSL_MCBSP_SPCR_XSYNCERR_MASK == + (CSL_MCBSP_SPCR_XSYNCERR_MASK & instHandle->hwInfo.regs->SPCR)) + { + /* call the application registered global callback function */ + if (NULL != chanHandle->gblErrCbk) + { + (*chanHandle->gblErrCbk)((uint32_t)chanHandle, + instHandle->hwInfo.regs->SPCR, + NULL); + } + } + + return; +} + +/** + * \brief McBSP Rx ISR function + * + * This Function is the interrupt service routine for the Mcbsp RX + * event. + * + * \param hChan [IN] Handle to the channel + * + * \return None + */ +void mcbspGblRcvIsr(void *hChan) +{ + Mcbsp_Object_Unpadded *instHandle = NULL; + Mcbsp_ChannelObj *chanHandle = (Mcbsp_ChannelObj *)hChan; + + instHandle = (Mcbsp_Object_Unpadded *)&(chanHandle->devHandle->obj); + + /* Only DMA mode of operation is supported by the Mcbsp driver hence we * + * will only check if there is an sync error and notify the application */ + if (CSL_MCBSP_SPCR_RSYNCERR_MASK == + (CSL_MCBSP_SPCR_RSYNCERR_MASK & instHandle->hwInfo.regs->SPCR)) + { + /* call the application registered global callback function */ + if (NULL != chanHandle->gblErrCbk) + { + (*chanHandle->gblErrCbk)((uint32_t)chanHandle, + instHandle->hwInfo.regs->SPCR, + NULL); + } + } + + return; +} + +/*============================================================================*/ +/* LOCAL FUNCTION DEFINTIONS */ +/*============================================================================*/ + +/** + * \brief Submit a I/O buffer to a channel for processing + * + * This function is called with the Mcbsp_IOBuf_Cmd_READ or Mcbsp_IOBuf_Cmd_WRITE + * command to process the IOP. The function handles the MCBSP mode. In case + * that the driver is currently idle it sets up buffer for transfer. In case + * that the driver is currently processing a buffer then it will queue up the + * current buffer and exit. + * + * \param instHandle [IN] pointer to the instance object + * \param chanHandle [IN] handle to the channel + * \param ioBuf [IN] pointer to Mcbsp I/O buffer. + * + * \return MCBSP_STATUS_PENDING in case the buffer is sucesfully processed + * MCBSP_ERR_BADIO in case of any error. + */ +int32_t mcbspSubmitReq(Mcbsp_Object_Unpadded *instHandle, + Mcbsp_ChannelObj *chanHandle, + Mcbsp_IOBuf *ioBuf) +{ + void* criticalSectionInfo; + int32_t status = MCBSP_STATUS_COMPLETED; + + if ((NULL == chanHandle) || (NULL == ioBuf) || (NULL == instHandle)) + { + return MCBSP_ERR_BADIO; + } + if((0 == ioBuf->size) || (ioBuf->size > Mcbsp_MAX_IOBUF_SIZE)) + { + return MCBSP_ERR_BADIO; + } + + /* clean the buffers if the cache operation mode is enabled */ + if (TRUE == instHandle->enablecache) + { + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + /* Invalidate the cache */ + Mcbsp_osalBeginMemAccess(ioBuf->addr, ioBuf->size); + } + else + { + /* Writeback the cache */ + Mcbsp_osalEndMemAccess(ioBuf->addr, ioBuf->size); + } + } + + /*==========================MCBSP MODE ===================================*/ + if (Mcbsp_DevMode_McBSP == instHandle->mode) + { + /* We are entering the crictical section because the current active * + * IOP is being check and it can become NULL at any point. Hence we * + * will protect this code from the interrupt handler. */ + criticalSectionInfo = Mcbsp_osalEnterSingleCoreCriticalSection(); + +#ifdef MCBSP_LOOPJOB_ENABLE + if ((Mcbsp_MAXLINKCNT <= chanHandle->submitCount) || +#else + /* We now have 3 buffers loaded in the EDMA */ + if (((Mcbsp_MAXLINKCNT + 1) <= chanHandle->submitCount) || +#endif + (TRUE == chanHandle->paused)) + { + /* There are enough buffers programmed in the EDMA or if the MCBSP* + * is issued a pause command,hence queue buffer in to the pending * + * queue */ + chanHandle->submitCount++; + + Mcbsp_osalQueuePut(chanHandle->ptrQPendList, (Mcbsp_QueueElem *)ioBuf); + + /* critical section ends */ + Mcbsp_osalExitSingleCoreCriticalSection(criticalSectionInfo); + } + else + { + /* Either one of the paramset or Both the paramsets are free */ + + /* increment the submit count */ + chanHandle->submitCount++; + + Mcbsp_osalQueuePut(chanHandle->ptrQFloatList, (Mcbsp_QueueElem *)ioBuf); + + Mcbsp_localLoadPktToEdma(chanHandle,ioBuf); + + /* critical section ends */ + Mcbsp_osalExitSingleCoreCriticalSection(criticalSectionInfo); + + } /* Pending queue empty or not*/ + } + if (MCBSP_STATUS_COMPLETED == status) + { + status = MCBSP_STATUS_PENDING; + } + return (status); +} + +/** + * \brief McBSP SPCR configuration function + * + * This Function is used to set/reset specific bit of SPCR as specified in + * the given mask. + * + * \param instHandle [IN] pointer to the mcbsp instance object. + * \param selectMask [IN] the SPCR control mask + * + * \return MCBSP_STATUS_COMPLETED if successful + * + * MCBSP_ERR_BADARGS if not successful + */ +int32_t Mcbsp_localResetCtrl(Mcbsp_Object_Unpadded *instHandle, uint32_t selectMask) +{ + if ((NULL == instHandle) || (NULL == instHandle->hwInfo.regs)) + { + return MCBSP_ERR_BADARGS; + } + + /* Configuring SPCR for Frame sync generator enable/disable */ + if (0u != (selectMask & Mcbsp_SpcrCtrl_FSYNC_DISABLE)) + { + instHandle->hwInfo.regs->SPCR &= (~CSL_MCBSP_SPCR_FRST_MASK ); + } + + if (0 != (selectMask & Mcbsp_SpcrCtrl_RX_DISABLE)) + { + instHandle->hwInfo.regs->SPCR &= (~CSL_MCBSP_SPCR_RRST_MASK ); + } + + /* start the sample rate generator */ + if (0u != (selectMask & Mcbsp_SpcrCtrl_SRG_ENABLE)) + { + instHandle->hwInfo.regs->SPCR |= CSL_MCBSP_SPCR_GRST_MASK; + } + + /* Configuring SPCR for Transmit enable/disable */ + if (0 != (selectMask & Mcbsp_SpcrCtrl_TX_DISABLE)) + { + instHandle->hwInfo.regs->SPCR &= (~CSL_MCBSP_SPCR_XRST_MASK); + } + + /* Configuring SPCR for transmit section enable */ + if (0 != (selectMask & Mcbsp_SpcrCtrl_TX_ENABLE)) + { + instHandle->hwInfo.regs->SPCR |= CSL_MCBSP_SPCR_XRST_MASK; + } + + /* Configuring SPCR for Receive section enable */ + if (0 != (selectMask & Mcbsp_SpcrCtrl_RX_ENABLE)) + { + instHandle->hwInfo.regs->SPCR |= CSL_MCBSP_SPCR_RRST_MASK ; + } + + /* Set the FRST bit to 1 to start the internal frame sync generator */ + if (0u != (selectMask & Mcbsp_SpcrCtrl_FSYNC_ENABLE)) + { + instHandle->hwInfo.regs->SPCR |= CSL_MCBSP_SPCR_FRST_MASK; + } + + /* Configuring SPCR for sample rate generator enable/disable */ + if (0u != (selectMask & Mcbsp_SpcrCtrl_SRG_DISABLE)) + { + instHandle->hwInfo.regs->SPCR &= (~CSL_MCBSP_SPCR_GRST_MASK); + } + + return MCBSP_STATUS_COMPLETED; +} + +/** + * \brief This function completes the current pending request and then + * invokes the application registered callback. + * + * \param chanHandle [IN] Handle to the channel + * + * \return None + * + * \enter chanHandle is a valid non null pointer + * + * \leave Not implemented + */ +void Mcbsp_localCompleteCurrentIo(Mcbsp_ChannelObj *chanHandle) +{ + Mcbsp_IOBuf *ioBuf = NULL; + + if (TRUE == chanHandle->isTempIOBufValid) + { + ioBuf = chanHandle->tempIOBuf; + + chanHandle->tempIOBuf = NULL; + chanHandle->isTempIOBufValid = FALSE; + /* call the completion callback function registered with us * + * during channel creation */ + if ((NULL != chanHandle->cbFxn) && (NULL != chanHandle->cbArg)) + { + /* Application callback */ + (*chanHandle->cbFxn)((void*)chanHandle->cbArg,ioBuf); + } + } + + chanHandle->currentError = MCBSP_STATUS_COMPLETED; + chanHandle->userDataBufferSize = 0; +} + +/** + * \brief This function configures the transmit section of the mcbsp + * sync properties. + * + * \param instHandle [IN] pointer to the instance object. + * \param params [IN] User supplied channel parameters + * + * \return MCBSP_ERR_BADARGS if configuration fails. + * MCBSP_STATUS_COMPLETED if configuration is sucessful. + */ +int32_t Mcbsp_localConfigureXmtChannel(Mcbsp_Object_Unpadded *instHandle, + Mcbsp_ChanParams *params) +{ + uint32_t tempVal = 0x00; + int32_t status = MCBSP_STATUS_COMPLETED; + + if ((NULL == instHandle) || (NULL == params)) + { + return MCBSP_ERR_BADARGS; + } + + /* configure the transmit section */ + /* configure the transmit interrupt setting */ + instHandle->hwInfo.regs->SPCR &= (~CSL_MCBSP_SPCR_XINTM_MASK); + instHandle->hwInfo.regs->SPCR |= + (params->chanConfig->intMode << CSL_MCBSP_SPCR_XINTM_SHIFT); + + /* configure the DX enabler */ + instHandle->hwInfo.regs->SPCR &= (~CSL_MCBSP_SPCR_DXENA_MASK); + instHandle->hwInfo.regs->SPCR |= + (params->chanConfig->dxState << CSL_MCBSP_SPCR_DXENA_SHIFT); + + /* configure the transmit control register settings */ + instHandle->hwInfo.regs->XCR &= (~CSL_MCBSP_XCR_XPHASE_MASK); + instHandle->hwInfo.regs->XCR |= + (params->chanConfig->phaseNum << CSL_MCBSP_XCR_XPHASE_SHIFT); + + /* configure the frame length for single and dual phase frames */ + instHandle->hwInfo.regs->XCR &= (~CSL_MCBSP_XCR_XFRLEN1_MASK); + instHandle->hwInfo.regs->XCR |= + ((params->chanConfig->frmLen1 - 1u) << CSL_MCBSP_XCR_XFRLEN1_SHIFT); + + /* configure the word length of the single and dual phase frames */ + switch (params->chanConfig->wrdLen1) + { + case Mcbsp_WordLength_8: + tempVal = 0u; + break; + case Mcbsp_WordLength_12: + tempVal = 1u; + break; + case Mcbsp_WordLength_16: + tempVal = 2u; + break; + case Mcbsp_WordLength_20: + tempVal = 3u; + break; + case Mcbsp_WordLength_24: + tempVal = 4u; + break; + case Mcbsp_WordLength_32: + tempVal = 5u; + break; + default: + /* wordlength is not supported by the driver */ + status = MCBSP_ERR_BADARGS; + break; + } + + instHandle->hwInfo.regs->XCR &= (~CSL_MCBSP_XCR_XWDLEN1_MASK); + instHandle->hwInfo.regs->XCR |= + (tempVal << CSL_MCBSP_XCR_XWDLEN1_SHIFT); + + if (Mcbsp_Phase_DUAL == params->chanConfig->phaseNum) + { + + instHandle->hwInfo.regs->XCR &= (~CSL_MCBSP_XCR_XFRLEN2_MASK); + instHandle->hwInfo.regs->XCR |= + ((params->chanConfig->frmLen2 -1u) << CSL_MCBSP_XCR_XFRLEN2_SHIFT); + + /* configure the word length of the single and dual phase frames */ + switch (params->chanConfig->wrdLen2) + { + case Mcbsp_WordLength_8: + tempVal = 0u; + break; + case Mcbsp_WordLength_12: + tempVal = 1u; + break; + case Mcbsp_WordLength_16: + tempVal = 2u; + break; + case Mcbsp_WordLength_20: + tempVal = 3u; + break; + case Mcbsp_WordLength_24: + tempVal = 4u; + break; + case Mcbsp_WordLength_32: + tempVal = 5u; + break; + default: + /* wordlength is not supported by the driver */ + status = MCBSP_ERR_BADARGS; + break; + } + + instHandle->hwInfo.regs->XCR &= (~CSL_MCBSP_XCR_XWDLEN2_MASK); + instHandle->hwInfo.regs->XCR |= + (tempVal << CSL_MCBSP_XCR_XWDLEN2_SHIFT); + } + /* set the companding selection */ + instHandle->hwInfo.regs->XCR &= (~CSL_MCBSP_XCR_XCOMPAND_MASK); + instHandle->hwInfo.regs->XCR |= + (params->chanConfig->compandSel << CSL_MCBSP_XCR_XCOMPAND_SHIFT); + + /* set the bit reverse settings */ + instHandle->hwInfo.regs->XCR &= (~CSL_MCBSP_XCR_XWDREVRS_MASK); + instHandle->hwInfo.regs->XCR |= + (params->chanConfig->bitReversal << CSL_MCBSP_XCR_XWDREVRS_SHIFT); + + /* frame ignore settings */ + instHandle->hwInfo.regs->XCR &= (~CSL_MCBSP_XCR_XFIG_MASK); + instHandle->hwInfo.regs->XCR |= + (params->chanConfig->frmSyncIgn << CSL_MCBSP_XCR_XFIG_SHIFT); + + /* configure the data delay */ + instHandle->hwInfo.regs->XCR &= (~CSL_MCBSP_XCR_XDATDLY_MASK); + instHandle->hwInfo.regs->XCR |= + (params->chanConfig->dataDelay << CSL_MCBSP_XCR_XDATDLY_SHIFT); + + /* configure the multi channel control register settings */ + instHandle->hwInfo.regs->MCR &= (~CSL_MCBSP_MCR_XMCM_MASK); + instHandle->hwInfo.regs->MCR |= (params->multiChanCtrl->multiChanMode + << CSL_MCBSP_MCR_XMCM_SHIFT); + + /* select the partition mode and the channel selection controls */ + instHandle->hwInfo.regs->MCR &= (~CSL_MCBSP_MCR_XPABLK_MASK); + instHandle->hwInfo.regs->MCR |= (params->multiChanCtrl->partitionSelA + << CSL_MCBSP_MCR_XPABLK_SHIFT); + + instHandle->hwInfo.regs->MCR &= (~CSL_MCBSP_MCR_XPBBLK_MASK); + instHandle->hwInfo.regs->MCR |= (params->multiChanCtrl->partitionSelB + << CSL_MCBSP_MCR_XPBBLK_SHIFT); + + instHandle->hwInfo.regs->MCR &= (~CSL_MCBSP_MCR_XMCME_MASK); + instHandle->hwInfo.regs->MCR |= (params->multiChanCtrl->partitionMode + << CSL_MCBSP_MCR_XMCME_SHIFT); + + /* Configure the channels to be enabled */ + instHandle->hwInfo.regs->XCERE0 = params->chanEnableMask[0]; + instHandle->hwInfo.regs->XCERE1 = params->chanEnableMask[1]; + instHandle->hwInfo.regs->XCERE2 = params->chanEnableMask[2]; + instHandle->hwInfo.regs->XCERE3 = params->chanEnableMask[3]; + + + /* configure the clock polarity */ + if (Mcbsp_ClkPol_RISING_EDGE == params->clkSetup->clkPolarity) + { + /* clock data sampled on rising edge */ + instHandle->hwInfo.regs->PCR &= (~CSL_MCBSP_PCR_CLKXP_MASK); + } + else + { + /* clock data sampled on falling edge */ + instHandle->hwInfo.regs->PCR |= (CSL_MCBSP_PCR_CLKXP_MASK); + } + + /* configure the frame sync polarity */ + if (Mcbsp_FsPol_ACTIVE_HIGH == params->clkSetup->frmSyncPolarity) + { + /* frame sync polarity is active high */ + instHandle->hwInfo.regs->PCR &= (~CSL_MCBSP_PCR_FSXP_MASK); + } + else + { + /* frame sync polarity is active low */ + instHandle->hwInfo.regs->PCR |= (CSL_MCBSP_PCR_FSXP_MASK); + } + + /* check if the frame sync generator is to be enabled for this TX section */ + if (Mcbsp_FsClkMode_EXTERNAL == params->clkSetup->frmSyncMode) + { + /* External frame sync to be used */ + instHandle->hwInfo.regs->PCR &= (~CSL_MCBSP_PCR_FSXM_MASK); + + /* frame sync generator needs to be disabled */ + instHandle->txFsgEnable = FALSE; + } + else + { + /* internal frame sync to be used */ + instHandle->hwInfo.regs->PCR |= (CSL_MCBSP_PCR_FSXM_MASK); + + /* The FRST and GRST has to be cleared to configure the FSGM bit. + * By clearing the FRST and GRST bit, the sample rate generator and the + * frame sync generator will be kept in the reset mode. + * Ref IR SDOCM00077966 + */ + tempVal = instHandle->hwInfo.regs->SPCR; + instHandle->hwInfo.regs->SPCR &= ~(CSL_MCBSP_SPCR_FRST_MASK | + CSL_MCBSP_SPCR_GRST_MASK ); + + /* could be internal or configured for DXR to XSR copy */ + if (Mcbsp_FsClkMode_INTERNAL == params->clkSetup->frmSyncMode) + { + /* set the FSGM bit in the SRGR register */ + instHandle->hwInfo.regs->SRGR |= (CSL_MCBSP_SRGR_FSGM_MASK); + + /* frame sync generator needs to be enabled */ + instHandle->txFsgEnable = TRUE; + } + else + { /* DXR to XSR copy generates frame sync */ + /* reset the FSGM bit in the SRGR register */ + instHandle->hwInfo.regs->SRGR &= (~CSL_MCBSP_SRGR_FSGM_MASK); + + /* frame sync generator needs to be disabled */ + instHandle->txFsgEnable = FALSE; + } + /* The SPCR register values are reverted back once the FSGM bit is set + */ + instHandle->hwInfo.regs->SPCR = tempVal; + } + + /* configure the clock mode (external or internal) */ + if (Mcbsp_TxRxClkMode_EXTERNAL == params->clkSetup->clkMode) + { + instHandle->hwInfo.regs->PCR &= (~CSL_MCBSP_PCR_CLKXM_MASK); + + if (TRUE == instHandle->txFsgEnable) + { + /* frame sync generator is using the internal clock hence need to * + * enable the sample rate generator */ + instHandle->txSrgEnable = TRUE; + } + else + { + /* dont require to enable the sample rate generator */ + instHandle->txSrgEnable = FALSE; + } + } + else + { + /* external mode clock enabled */ + instHandle->hwInfo.regs->PCR |= (CSL_MCBSP_PCR_CLKXM_MASK); + + /* sample rate generator is enabled */ + instHandle->txSrgEnable = TRUE; + } + + return (status); +} + + +/** + * \brief This function configures the receives section of the mcbsp. + * + * \param instHandle [IN] pointer to the instance object. + * \param params [IN] User supplied channel parameters + * + * \return MCBSP_ERR_BADARGS if configuration fails. + * MCBSP_STATUS_COMPLETED if confioguration is sucessful. + */ +int32_t Mcbsp_localConfigureRcvChannel(Mcbsp_Object_Unpadded *instHandle, + Mcbsp_ChanParams *params) +{ + uint32_t tempVal = 0x00; + int32_t status = MCBSP_STATUS_COMPLETED; + + if ((NULL == instHandle) || (NULL == params)) + { + return MCBSP_ERR_BADARGS; + } + + /* configure the receive section */ + /* configure the receive interrupt setting */ + instHandle->hwInfo.regs->SPCR &= (~CSL_MCBSP_SPCR_RINTM_MASK); + instHandle->hwInfo.regs->SPCR |= + (params->chanConfig->intMode << CSL_MCBSP_SPCR_RINTM_SHIFT); + + /* configure the Receive sign-extension and justification */ + instHandle->hwInfo.regs->SPCR &= (~CSL_MCBSP_SPCR_RJUST_MASK); + instHandle->hwInfo.regs->SPCR |= + (params->chanConfig->rjust << CSL_MCBSP_SPCR_RJUST_SHIFT); + + /* configure the receive control register settings */ + instHandle->hwInfo.regs->RCR &= (~CSL_MCBSP_RCR_RPHASE_MASK); + instHandle->hwInfo.regs->RCR |= + (params->chanConfig->phaseNum << CSL_MCBSP_RCR_RPHASE_SHIFT); + + /* configure the frame length for single and dual phase frames */ + instHandle->hwInfo.regs->RCR &= (~CSL_MCBSP_RCR_RFRLEN1_MASK); + instHandle->hwInfo.regs->RCR |= + ((params->chanConfig->frmLen1 - 1u) << CSL_MCBSP_RCR_RFRLEN1_SHIFT); + + /* configure the word length of the single and dual phase frames */ + switch (params->chanConfig->wrdLen1) + { + case Mcbsp_WordLength_8: + tempVal = 0u; + break; + case Mcbsp_WordLength_12: + tempVal = 1u; + break; + case Mcbsp_WordLength_16: + tempVal = 2u; + break; + case Mcbsp_WordLength_20: + tempVal = 3u; + break; + case Mcbsp_WordLength_24: + tempVal = 4u; + break; + case Mcbsp_WordLength_32: + tempVal = 5u; + break; + default: + /* wordlength is not supported by the driver */ + status = MCBSP_ERR_BADARGS; + break; + } + + + instHandle->hwInfo.regs->RCR &= (~CSL_MCBSP_RCR_RWDLEN1_MASK); + instHandle->hwInfo.regs->RCR |= + (tempVal << CSL_MCBSP_RCR_RWDLEN1_SHIFT); + + if (Mcbsp_Phase_DUAL == params->chanConfig->phaseNum) + { + instHandle->hwInfo.regs->RCR &= (~CSL_MCBSP_RCR_RFRLEN2_MASK); + instHandle->hwInfo.regs->RCR |= + ((params->chanConfig->frmLen2 - 1u) << CSL_MCBSP_RCR_RFRLEN2_SHIFT); + + /* configure the word length of the single and dual phase frames */ + switch (params->chanConfig->wrdLen2) + { + case Mcbsp_WordLength_8: + tempVal = 0u; + break; + case Mcbsp_WordLength_12: + tempVal = 1u; + break; + case Mcbsp_WordLength_16: + tempVal = 2u; + break; + case Mcbsp_WordLength_20: + tempVal = 3u; + break; + case Mcbsp_WordLength_24: + tempVal = 4u; + break; + case Mcbsp_WordLength_32: + tempVal = 5u; + break; + default: + /* wordlength is not supported by the driver */ + status = MCBSP_ERR_BADARGS; + break; + } + + instHandle->hwInfo.regs->RCR &= (~CSL_MCBSP_RCR_RWDLEN2_MASK); + instHandle->hwInfo.regs->RCR |= + (tempVal << CSL_MCBSP_RCR_RWDLEN2_SHIFT); + } + /* set the companding selection */ + instHandle->hwInfo.regs->RCR &= (~CSL_MCBSP_RCR_RCOMPAND_MASK); + instHandle->hwInfo.regs->RCR |= + (params->chanConfig->compandSel << CSL_MCBSP_RCR_RCOMPAND_SHIFT); + + /* set the bit reverse settings */ + instHandle->hwInfo.regs->RCR &= (~CSL_MCBSP_RCR_RWDREVRS_MASK); + instHandle->hwInfo.regs->RCR |= + (params->chanConfig->bitReversal << CSL_MCBSP_RCR_RWDREVRS_SHIFT); + + /* frame ignore settings */ + instHandle->hwInfo.regs->RCR &= (~CSL_MCBSP_RCR_RFIG_MASK); + instHandle->hwInfo.regs->RCR |= + (params->chanConfig->frmSyncIgn << CSL_MCBSP_RCR_RFIG_SHIFT); + + /* configure the data delay */ + instHandle->hwInfo.regs->RCR &= (~CSL_MCBSP_RCR_RDATDLY_MASK); + instHandle->hwInfo.regs->RCR |= + (params->chanConfig->dataDelay << CSL_MCBSP_RCR_RDATDLY_SHIFT); + + /* Configure the channels to be enabled */ + instHandle->hwInfo.regs->RCERE0 = params->chanEnableMask[0]; + instHandle->hwInfo.regs->RCERE1 = params->chanEnableMask[1]; + instHandle->hwInfo.regs->RCERE2 = params->chanEnableMask[2]; + instHandle->hwInfo.regs->RCERE3 = params->chanEnableMask[3]; + + /* configure the MCR register */ + switch (params->multiChanCtrl->multiChanMode) + { + case Mcbsp_McmMode_ALL_CHAN_ENABLED_UNMASKED: + case Mcbsp_McmMode_ALL_CHAN_DISABLED_UNMASKED: + break; + default: + status = MCBSP_ERR_BADARGS; + break; + } + + if (MCBSP_STATUS_COMPLETED == status) + { + instHandle->hwInfo.regs->MCR &= (~CSL_MCBSP_MCR_RMCM_MASK); + instHandle->hwInfo.regs->MCR |= (params->multiChanCtrl->multiChanMode + << CSL_MCBSP_MCR_RMCM_SHIFT); + } + + /* select the partition mode and the channel selection controls */ + instHandle->hwInfo.regs->MCR &= (~CSL_MCBSP_MCR_RPABLK_MASK); + instHandle->hwInfo.regs->MCR |= (params->multiChanCtrl->partitionSelA + << CSL_MCBSP_MCR_RPABLK_SHIFT); + + instHandle->hwInfo.regs->MCR &= (~CSL_MCBSP_MCR_RPBBLK_MASK); + instHandle->hwInfo.regs->MCR |= (params->multiChanCtrl->partitionSelB + << CSL_MCBSP_MCR_RPBBLK_SHIFT); + + instHandle->hwInfo.regs->MCR &= (~CSL_MCBSP_MCR_RMCME_MASK); + instHandle->hwInfo.regs->MCR |= (params->multiChanCtrl->partitionMode + << CSL_MCBSP_MCR_RMCME_SHIFT); + + /* configure the clock polarity */ + if (Mcbsp_ClkPol_RISING_EDGE == params->clkSetup->clkPolarity) + { + /* clock data sampled on rising edge */ + instHandle->hwInfo.regs->PCR |= (CSL_MCBSP_PCR_CLKRP_MASK); + } + else + { + /* clock data sampled on falling edge */ + instHandle->hwInfo.regs->PCR &= (~CSL_MCBSP_PCR_CLKRP_MASK); + } + + /* configure the frame sync polarity */ + if (Mcbsp_FsPol_ACTIVE_HIGH == params->clkSetup->frmSyncPolarity) + { + /* frame sync polarity is active high */ + instHandle->hwInfo.regs->PCR &= (~CSL_MCBSP_PCR_FSRP_MASK); + } + else + { + /* frame sync polarity is active low */ + instHandle->hwInfo.regs->PCR |= (CSL_MCBSP_PCR_FSRP_MASK); + } + + + /* check if the frame sync generator is to be enabled for this section */ + if (Mcbsp_FsClkMode_INTERNAL == params->clkSetup->frmSyncMode) + { + /* set the frame sync generation mode */ + instHandle->hwInfo.regs->PCR |= (CSL_MCBSP_PCR_FSRM_MASK); + + /* frame sync generator needs to be enabled */ + instHandle->rxFsgEnable = TRUE; + } + else + { + /* reset the frame sync generation mode */ + instHandle->hwInfo.regs->PCR &= (~CSL_MCBSP_PCR_FSRM_MASK); + + /* frame sync generator needs to be disabled */ + instHandle->rxFsgEnable = FALSE; + } + + /* configure the clock mode (external or internal) */ + if (Mcbsp_TxRxClkMode_EXTERNAL == params->clkSetup->clkMode) + { + instHandle->hwInfo.regs->PCR &= (~CSL_MCBSP_PCR_CLKRM_MASK); + + if (TRUE == instHandle->rxFsgEnable) + { + /* frame sync generator is using the internal clock hence need to * + * enable the sample rate generator */ + instHandle->rxSrgEnable = TRUE; + } + else + { + /* dont require to enable the sample rate generator */ + instHandle->rxSrgEnable = FALSE; + } + } + else + { + /* external mode clock */ + instHandle->hwInfo.regs->PCR |= (CSL_MCBSP_PCR_CLKRM_MASK); + + /* sample rate generator is enabled */ + instHandle->rxSrgEnable = TRUE; + } + return (status); +} + +/** + * \brief This function configures the sample rate generator and frame + * sync properties. + * + * \param instHandle [IN] pointer to the instance object. + * \param chanHandle [IN] Handle to the channel. + * + * \return MCBSP_ERR_BADARGS if calculation fails. + * MCBSP_STATUS_COMPLETED if calculation is sucessful. + */ +int32_t Mcbsp_localConfigureSrgr(Mcbsp_Object_Unpadded *instHandle, + Mcbsp_ChannelObj *chanHandle) +{ + Bool srgrConfig = FALSE; + uint32_t clkgDiv = 0x00; + uint32_t noOfBits = 0x00; + uint32_t framePeriod = 0x00; + Bool sclkme = 0x00; + Bool clksm = 0x00; + int32_t status = MCBSP_STATUS_COMPLETED; + void* criticalSectionInfo; + + if ((NULL == instHandle) || (NULL == chanHandle)) + { + return MCBSP_ERR_BADARGS; + } + + /* check if the SRGR is not configured already */ + /* critical section starts */ + criticalSectionInfo = Mcbsp_osalEnterSingleCoreCriticalSection(); + + if (FALSE == instHandle->srgConfigured) + { + /* set the status that SRGR is configured */ + instHandle->srgConfigured = TRUE; + + /* critical section ends */ + Mcbsp_osalExitSingleCoreCriticalSection(criticalSectionInfo); + + /* check if this channel requires the SRGR to be enabled */ + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + if (TRUE == instHandle->rxSrgEnable) + { + /* Need to configure the SRGR */ + srgrConfig = TRUE; + } + else + { + instHandle->srgConfigured = FALSE; + } + } + else + { + if (TRUE == instHandle->txSrgEnable) + { + /* Need to configure the SRGR */ + srgrConfig = TRUE; + } + else + { + instHandle->srgConfigured = FALSE; + } + } + } + else + { + /* critical section ends */ + Mcbsp_osalExitSingleCoreCriticalSection(criticalSectionInfo); + } + + if (TRUE == srgrConfig) + { + /* set the input clock selection for Sample rate generator */ + switch (instHandle->srgrConfig.srgInputClkMode) + { + /* Input clock is CLKS */ + case Mcbsp_SrgClk_CLKS: + sclkme = 0x00; + clksm = 0x00; + + /* set the CLKS polarity (only if CLKS is used) */ + instHandle->hwInfo.regs->SRGR &= (~CSL_MCBSP_SRGR_CLKSP_MASK); + instHandle->hwInfo.regs->SRGR |= + (instHandle->srgrConfig.clksPolarity + << CSL_MCBSP_SRGR_CLKSP_SHIFT); + + /* set the GSYNC option */ + instHandle->hwInfo.regs->SRGR &= (~CSL_MCBSP_SRGR_GSYNC_MASK); + instHandle->hwInfo.regs->SRGR |= + (instHandle->srgrConfig.gSync + << CSL_MCBSP_SRGR_GSYNC_SHIFT); + break; + /* Input clock for SRG is from CPU clock */ + case Mcbsp_SrgClk_CLKCPU: + sclkme = 0x00; + clksm = 0x01u; + break; + /* Input clock is from receive pin */ + case Mcbsp_SrgClk_CLKR: + sclkme = 0x01u; + clksm = 0x00; + break; + /* Input clock is from transmit pin */ + case Mcbsp_SrgClk_CLKX: + sclkme = 0x01u; + clksm = 0x01u; + break; + default: + status = MCBSP_ERR_BADARGS; + break; + } + + instHandle->hwInfo.regs->PCR &= (~CSL_MCBSP_PCR_SCLKME_MASK); + instHandle->hwInfo.regs->PCR |= (sclkme << CSL_MCBSP_PCR_SCLKME_SHIFT); + + instHandle->hwInfo.regs->SRGR &= (~CSL_MCBSP_SRGR_CLKSM_MASK); + instHandle->hwInfo.regs->SRGR |= (clksm << CSL_MCBSP_SRGR_CLKSM_SHIFT); + + /* calculate and set the CLKG div values */ + if (Mcbsp_Phase_DUAL == chanHandle->chanConfig.phaseNum) + { + noOfBits = ((chanHandle->chanConfig.wrdLen1 + * chanHandle->chanConfig.frmLen1) + + (chanHandle->chanConfig.wrdLen2 + * chanHandle->chanConfig.frmLen2)); + } + else + { + noOfBits = (chanHandle->chanConfig.wrdLen1 + * chanHandle->chanConfig.frmLen1) + + chanHandle->chanConfig.dataDelay; + } + + clkgDiv = ((instHandle->srgrConfig.srgrInputFreq/ + (chanHandle->clkSetup.samplingRate + * noOfBits)) - 1u); + + framePeriod = (noOfBits - 1u); + + if ((0xFF < clkgDiv) || (0xFFF < framePeriod) || + (MCBSP_STATUS_COMPLETED != status)) + { + /* The CLKGDIV or frame period value has exceeded the limit */ + status = MCBSP_ERR_BADARGS; + } + else + { + /* set the value of the CLKGDIV */ + instHandle->hwInfo.regs->SRGR &= (~CSL_MCBSP_SRGR_CLKGDV_MASK); + instHandle->hwInfo.regs->SRGR |= clkgDiv; + + /* set the value of the frame period */ + instHandle->hwInfo.regs->SRGR &= (~CSL_MCBSP_SRGR_FPER_MASK); + instHandle->hwInfo.regs->SRGR |= + (framePeriod << CSL_MCBSP_SRGR_FPER_SHIFT); + + /* set the frame width */ + instHandle->hwInfo.regs->SRGR &= (~CSL_MCBSP_SRGR_FWID_MASK); + instHandle->hwInfo.regs->SRGR |= + (instHandle->srgrConfig.srgFrmPulseWidth << + CSL_MCBSP_SRGR_FWID_SHIFT); + } + } + + return (status); +} + +/** + * \brief Abort the queued up requests. + * + * This commands aborts all the pending IO requests and returns them + * to the application. The current state of the IO request will be set + * to ABORTED. + * + * \param chanHandle [IN] Handle to the channel whose requests are to be + * aborted + * + * \return None + */ +void Mcbsp_localAbortReset(Mcbsp_ChannelObj *chanHandle) +{ + Mcbsp_Object_Unpadded *instHandle = NULL; + Mcbsp_IOBuf *ioBuf = NULL; + void* criticalSectionInfo; + uint32_t timeoutCount = 0x00; + + instHandle = (Mcbsp_Object_Unpadded *)&(chanHandle->devHandle->obj); + + /* initialize the retry count value */ + timeoutCount = instHandle->retryCount; + + /* critical section starts */ + criticalSectionInfo = Mcbsp_osalEnterSingleCoreCriticalSection(); + + if (Mcbsp_DevMode_McBSP == instHandle->mode) + { + /* Disable the EDMA transfer for the current transfer channel */ + EDMA3_DRV_disableTransfer( + chanHandle->edmaHandle, + chanHandle->xferChan, + EDMA3_DRV_TRIG_MODE_EVENT); + + if (MCBSP_MODE_OUTPUT == chanHandle->mode) + { + /* Wait for the TX to be empty */ + while ((CSL_MCBSP_SPCR_XEMPTY_MASK == + (CSL_MCBSP_SPCR_XEMPTY_MASK & instHandle->hwInfo.regs->SPCR)) && + (0 != timeoutCount)) + { + timeoutCount--; + } + } + + /* Stop the McBSP instance */ + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_RX_DISABLE); + } + else + { + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_TX_DISABLE); + } + + /* Empty the floating queue. Aborted request is currently enqueued * + * in the floating queue. Dequeue the floating request in EDMA * + * param table and return the actual transfer element count */ + while (TRUE != Mcbsp_osalQueueEmpty(chanHandle->ptrQFloatList)) + { + ioBuf = (Mcbsp_IOBuf *) Mcbsp_osalQueueGet(chanHandle->ptrQFloatList); + + if (NULL != ioBuf) + { + /* if FLUSH cmd called for INPUT channel then status is equal * + * to FLUSHED otherwise status is equal to ABORTED */ + if ((TRUE == chanHandle->flush) && + (MCBSP_MODE_INPUT == chanHandle->mode)) + { + ioBuf->status = MCBSP_STATUS_FLUSHED; + } + else + { + ioBuf->status = MCBSP_STATUS_ABORTED; + } + + if ((NULL != chanHandle->cbFxn) && (NULL != chanHandle->cbArg)) + { + /* Application callback */ + (*chanHandle->cbFxn)((void*)chanHandle->cbArg,ioBuf); + } + /* Decrement the submit count */ + chanHandle->submitCount--; + } + } + + /* Empty the pending queue */ + while (TRUE != Mcbsp_osalQueueEmpty(chanHandle->ptrQPendList)) + { + ioBuf = (Mcbsp_IOBuf *) Mcbsp_osalQueueGet(chanHandle->ptrQPendList); + + if (NULL != ioBuf) + { + /* if FLUSH cmd called for INPUT channel then status is equal * + * to MCBSP_STATUS_FLUSHED otherwise status is equal to MCBSP_STATUS_ABORTED */ + if ((TRUE == chanHandle->flush) && + (MCBSP_MODE_INPUT == chanHandle->mode)) + { + ioBuf->status = MCBSP_STATUS_FLUSHED; + } + else + { + ioBuf->status = MCBSP_STATUS_ABORTED; + } + + if ((NULL != chanHandle->cbFxn) && (NULL != chanHandle->cbArg)) + { + /* Application callback */ + (*chanHandle->cbFxn)((void*)chanHandle->cbArg,ioBuf); + } + + /* Decrement the submit count */ + chanHandle->submitCount--; + } + } + + /* As EDMA is disabled it might have thrown an error and set error bit* + * Clear the error bit to enable the transfer again */ + EDMA3_DRV_clearErrorBits(chanHandle->edmaHandle,chanHandle->xferChan); + + /* Configure the EDMA channel and EDMA param tables with * + * intialization configuration as they are configured at the * + * create time. */ + Mcbsp_localEdmaChanPaRAMsetup(chanHandle); + +#ifdef MCBSP_LOOPJOB_ENABLE + + /* configure the FIFO for the specific channel */ + if (TRUE == chanHandle->enableHwFifo) + { + /* Disable and enable the FIFO so that the events are * + * generated to the Mcbsp for the first time */ + mcbspConfigureFifo(&instHandle->hwInfo,chanHandle,FALSE); + mcbspConfigureFifo(&instHandle->hwInfo,chanHandle,TRUE); + } + + /* Enable the EDMA transfer to start the Loop job running */ + EDMA3_DRV_enableTransfer( + chanHandle->edmaHandle, + chanHandle->xferChan, + EDMA3_DRV_TRIG_MODE_EVENT); + + chanHandle->loopjobUpdatedinParamset = TRUE; + chanHandle->nextLinkParamSetToBeUpdated = 0; + + /* start the Mcbsp channel */ + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_RX_ENABLE); + } + else + { + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_TX_ENABLE); + } +#endif + } + /* critical section ends */ + Mcbsp_osalExitSingleCoreCriticalSection(criticalSectionInfo); +} +/** + * + * \brief This function configures the Hardware FIFO + * + * \param hMcbsp [IN] pointer to the Mcbsp Hardware information struct + * \param chanHandle [IN] handle to the channel + * \param enableHwFifo [IN] option to Enable or disbale the FIFO + * + * \return None + * + * \enter hMcbsp is a valid non null pointer + * chanHandle is a valid non null pointer + * + * \leave Not implemented + * + */ +void mcbspConfigureFifo(Mcbsp_HwInfo_Unpadded *hMcbsp, + Mcbsp_ChannelObj *chanHandle, + Bool enableHwFifo) +{ + /* check if the HW FIFO usage is requested by the user for this channel */ + if (TRUE == enableHwFifo) + { + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + /* configure the receive channel */ + /* Step 1 : configure the "WNUMDMA" and "WNUMEVT" bits before * + * enabling the FIFO */ + hMcbsp->fifoRegs->RFIFOCTL = + (1 << CSL_BFIFO_RFIFOCTL_RNUMEVT_SHIFT); + + hMcbsp->fifoRegs->RFIFOCTL |= + (CSL_BFIFO_RFIFOCTL_RNUMDMA_1WORDS + << CSL_BFIFO_RFIFOCTL_RNUMDMA_SHIFT); + + /* enable the FIFO now by setting the "WENA" bit */ + hMcbsp->fifoRegs->RFIFOCTL |= + (CSL_BFIFO_RFIFOCTL_RENA_ENABLED + << CSL_BFIFO_RFIFOCTL_RENA_SHIFT); + } + else + { + /* configure the transmit channel */ + /* Step 1 : configure the "WNUMDMA" and "WNUMEVT" bits before * + * enabling the FIFO */ + hMcbsp->fifoRegs->WFIFOCTL = + (1 << CSL_BFIFO_WFIFOCTL_WNUMEVT_SHIFT); + + hMcbsp->fifoRegs->WFIFOCTL |= + (CSL_BFIFO_WFIFOCTL_WNUMDMA_1WORDS + << CSL_BFIFO_WFIFOCTL_WNUMDMA_SHIFT); + + /* enable the FIFO now by setting the "WENA" bit */ + hMcbsp->fifoRegs->WFIFOCTL |= + (CSL_BFIFO_WFIFOCTL_WENA_ENABLED + << CSL_BFIFO_WFIFOCTL_WENA_SHIFT); + } + } + else + { + /* FIFO needs to be disabled */ + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + /* disable the FIFO now by resetting the "WENA" bit */ + hMcbsp->fifoRegs->RFIFOCTL = + (CSL_BFIFO_RFIFOCTL_RENA_DISABLED + << CSL_BFIFO_RFIFOCTL_RENA_SHIFT); + } + else + { + /* disable the FIFO now by resetting the "WENA" bit */ + hMcbsp->fifoRegs->WFIFOCTL = + (CSL_BFIFO_WFIFOCTL_WENA_DISABLED + << CSL_BFIFO_WFIFOCTL_WENA_SHIFT); + } + } +} + +/** + * \brief This is going to complete the current request and abort + * all other reqest. + * + * \param chanHandle [IN] Channel handle + * + * \return None + * + * \enter chanHandle is a valid non null pointer + * + * \leave Not implemented + */ +void Mcbsp_localCancelAndAbortAllIo(Mcbsp_ChannelObj *chanHandle) +{ + chanHandle->submitCount--; + chanHandle->tempIOBuf->status = MCBSP_STATUS_ABORTED; + + Mcbsp_localCompleteCurrentIo(chanHandle); + + Mcbsp_localAbortReset(chanHandle); +} + +#ifndef MCBSP_LOOPJOB_ENABLE +/** + * \brief This function waits for the FIFO to be emptied(if enabled) and the + * TX empty bit to be set so that the TX section could be disabled when + * there is no data present. + * + * \param arg0 [IN] Handle to the TX channel + * \param arg1 [IN] unused + * + * \return None + * + * \enter arg0 is a valid non null pointer + * + * \leave Not implemented + */ +void Mcbsp_TxFifo(int32_t arg0, int32_t arg1) +{ + Mcbsp_ChannelObj *chanHandle = NULL; + Mcbsp_Object *hInst = NULL; + Mcbsp_Object_Unpadded *instHandle = NULL; + uint32_t timeOut = 0x00; + void* criticalSectionInfo; + + chanHandle = (Mcbsp_ChannelObj *)arg0; + hInst = (Mcbsp_Object *)arg1; + instHandle = (Mcbsp_Object_Unpadded *)&(hInst->obj); + + /* critical section starts */ + criticalSectionInfo = Mcbsp_osalEnterSingleCoreCriticalSection(); + + /* update the timeout value from the instance handle */ + timeOut = instHandle->retryCount; + + /* we have come here means that the Mcbsp has got an callback but it * + * did have any more buffer to load Hence here we will wait for the * + * FIFO to become empty (if FIFO is enabled) else wait for the TX to * + * become empty.then we will disable the TX section */ + if (TRUE == chanHandle->enableHwFifo) + { + while ((0 != (instHandle->hwInfo.fifoRegs->WFIFOSTS & + CSL_BFIFO_WFIFOSTS_WLVL_MASK)) + && (0 != timeOut)) + { + /* reduce the timeout count and check if the FIFO is empty */ + timeOut--; + } + } + + /* reinitialize the retry count */ + timeOut = instHandle->retryCount; + + while ((CSL_MCBSP_SPCR_XEMPTY_MASK == + (instHandle->hwInfo.regs->SPCR & CSL_MCBSP_SPCR_XEMPTY_MASK)) + && (0 != timeOut)) + { + /* reduce the retry count and check if the TX has completed * + * transmitting all the bytes */ + timeOut--; + } + + /* we need to stop the frame sycn generator now.But also need to check * + * if 1.The frame sycn generator is actually started By TX. * + * 2.The RX is not feeding of the sample rate generator */ + if ((TRUE == instHandle->txFsgEnable) && + ((TRUE != instHandle->rxFsgEnable) + || (TRUE == instHandle->stopSmFsRcv))) + { + /* Now we can disable the frame sync generator */ + Mcbsp_localResetCtrl( + (Mcbsp_Object_Unpadded *)&(chanHandle->devHandle->obj), + Mcbsp_SpcrCtrl_FSYNC_DISABLE); + instHandle->fsgEnabled = FALSE; + } + + /* Stop the TX section */ + Mcbsp_localResetCtrl( + (Mcbsp_Object_Unpadded *)&(chanHandle->devHandle->obj), + Mcbsp_SpcrCtrl_TX_DISABLE); + + /* Transmit state machine is stopped */ + instHandle->stopSmFsXmt = TRUE; + + /* clear the error bits in the EDMA(as this is the last buffer) */ + EDMA3_DRV_clearErrorBits( + chanHandle->edmaHandle, + chanHandle->xferChan); + + /* complete the IOP now and call the callback to the stream */ + chanHandle->tempIOBuf = (Mcbsp_IOBuf *) Mcbsp_osalQueueGet(chanHandle->ptrQFloatList); + + /* Decrement the submit count for the IO buffers */ + chanHandle->submitCount--; + + chanHandle->isTempIOBufValid = TRUE; + chanHandle->tempIOBuf->status = chanHandle->currentError; + Mcbsp_localCompleteCurrentIo(chanHandle); + + /* critical section ends */ + Mcbsp_osalExitSingleCoreCriticalSection(criticalSectionInfo); + + +} +#endif /* #ifndef MCBSP_LOOPJOB_ENABLE */ + + +/** + * \brief This function toggles the index of the edma params + * + * \param index [IN] pointer to current index + * + * \return None + * + * \enter index is a valid non null pointer + * + * \leave Not implemented + */ +void Mcbsp_localGetNextIndex(uint32_t *index) +{ + *index = (((*index) + 1u) & 0x01u); +} + +/** + * \brief This function loads the buffers to the actual EDMA paramset. + * + * \param chanHandle [IN] Handle to channel. + * \param ioBuf [IN] pointer to the ioBuf + * + * \return None + * + * \enter Not implemented + * + * \leave Not implemented + */ +void Mcbsp_localLoadPktToEdma(Mcbsp_ChannelObj *chanHandle,Mcbsp_IOBuf *ioBuf) +{ +#ifndef MCBSP_LOOPJOB_ENABLE + Mcbsp_Object_Unpadded *instHandle = NULL; +#endif + int32_t status = MCBSP_STATUS_COMPLETED; + +#ifndef MCBSP_LOOPJOB_ENABLE + instHandle = (Mcbsp_Object_Unpadded *)&(chanHandle->devHandle->obj); +#endif + + chanHandle->currentDataSize = (uint16_t)ioBuf->size; + chanHandle->userDataBufferSize = (uint32_t)ioBuf->size; + +#ifdef MCBSP_LOOPJOB_ENABLE + if (Mcbsp_MAXLINKCNT == chanHandle->submitCount) + { +#else + /* The second and the third buffer will go the link paramsets */ + if (Mcbsp_MAXLINKCNT <= chanHandle->submitCount) + { +#endif + /* Though we have to post to param set directly from here, * + * there will be differene between first such buffer and * + * second buffer. As we have control here we are second buffer * + * and first buffer has not yet returned (or corresponding * + * edma callback has not been called.For second buffer, we * + * will be updating the second param set, which is currently * + * hosting loopjob parameter. Hence increment the index to * + * point second paramset and since we are moving out loopjob * + * from both param sets, the loopjobUpdatedinParamset is reset */ + chanHandle->loopjobUpdatedinParamset = FALSE; + Mcbsp_localGetNextIndex( + &chanHandle->nextLinkParamSetToBeUpdated); + } + + /* Now update the data buffer to the link params. The paramset to * + * be updated is decidec by the "nextLinkParamSetToBeUpdated" */ + if (MCBSP_STATUS_COMPLETED != Mcbsp_localUpdtDtPktToLnkPrms(chanHandle,ioBuf)) + { + status = MCBSP_ERR_BADIO; + } + + if ((1u == chanHandle->submitCount) && (MCBSP_STATUS_COMPLETED == status)) + { +#ifdef MCBSP_LOOPJOB_ENABLE + /* if at all this is the very first buffer, then one param set * + * has loop job loaded , self linked and active with the main * + * xfer channel param. other param set is ready loaded (just * + * now)and has link param set as the one having loopjob (this * + * is to ensure that if at all we are not getting any more * + * buffers loopjob be will taken over). Now we have to link * + * the floating / newly loaded param set to xfer channel. */ + if (MCBSP_STATUS_COMPLETED != EDMA3_DRV_linkChannel( + chanHandle->edmaHandle, + chanHandle->xferChan, + chanHandle->pramTbl[chanHandle->nextLinkParamSetToBeUpdated])) + { + status = MCBSP_ERR_BADIO; + } +#else + /* configure the FIFO for the specific channel */ + if (TRUE == chanHandle->enableHwFifo) + { + /* Disable and enable the FIFO so that the events are * + * generated to the Mcbsp for the first time */ + mcbspConfigureFifo(&instHandle->hwInfo,chanHandle,FALSE); + mcbspConfigureFifo(&instHandle->hwInfo,chanHandle,TRUE); + } + + /* enable the EDMA transfer for the channel so that it is * + * ready to transfer the data as soon as the state machine is * + * enabled */ + EDMA3_DRV_enableTransfer( + chanHandle->edmaHandle, + chanHandle->xferChan, + EDMA3_DRV_TRIG_MODE_EVENT); + + /* Start the McBSP hardware */ + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + instHandle->stopSmFsRcv = FALSE; + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_RX_ENABLE); + } + else + { + instHandle->stopSmFsXmt = FALSE; + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_TX_ENABLE); + } + + if (((MCBSP_MODE_INPUT == chanHandle->mode) && + (TRUE == instHandle->rxFsgEnable)) || + ((MCBSP_MODE_OUTPUT == chanHandle->mode) && + (TRUE == instHandle->txFsgEnable))) + { + /* enable the sample rate generator */ + Mcbsp_localResetCtrl( + instHandle, + Mcbsp_SpcrCtrl_FSYNC_ENABLE); + } +#endif /* MCBSP_LOOPJOB_ENABLE */ + } +} + +/** + * \brief Function to modify the sample rate generator configuration + * + * \param chanHandle [IN] Handle to the channel + * \param arg [IN] pointer to the srg config setup + * + * \return None + */ +int32_t Mcbsp_localModifySampleRate(Mcbsp_ChannelObj *chanHandle,void* arg) +{ + Mcbsp_Object_Unpadded *instHandle = NULL; + Mcbsp_ClkSetup *clkConfig = NULL; + int32_t status = MCBSP_STATUS_COMPLETED; + + if ((NULL == arg) || (NULL == chanHandle)) + { + return MCBSP_ERR_BADARGS; + } + + instHandle = &(chanHandle->devHandle->obj); + if (NULL == instHandle) + { + return MCBSP_ERR_BADARGS; + } + + clkConfig = (Mcbsp_ClkSetup *)arg; + + /* check if the Frame sync clock is generated by the module */ + if (TRUE == instHandle->srgConfigured) + { + /* Configure the McBSP with user supplied parameters */ + chanHandle->clkSetup = *(clkConfig); + instHandle->srgConfigured = FALSE; + + /* stop the sample rate generator */ + if (TRUE == instHandle->srgEnabled) + { + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_SRG_DISABLE); + + status = Mcbsp_localConfigureSrgr(instHandle,chanHandle); + + if (MCBSP_STATUS_COMPLETED == status) + { + /* enable the sample rate generator */ + Mcbsp_localResetCtrl( + instHandle, + Mcbsp_SpcrCtrl_SRG_ENABLE); + + /* wait for the 2CLKG clock cycles */ + Mcbsp_osalWaitNBitClocks(2u); + } + + /* clear the XSYNCERR (to be done only if TX is used) */ + if (MCBSP_MODE_OUTPUT == chanHandle->mode) + { + /* Enable the TX section */ + Mcbsp_localResetCtrl( + instHandle, + Mcbsp_SpcrCtrl_TX_ENABLE); + + /* wait for 2 CLKR or CLX cycles */ + Mcbsp_osalWaitNBitClocks(2u); + + /* Disable the TX section to clear any XYNCERR */ + Mcbsp_localResetCtrl( + instHandle, + Mcbsp_SpcrCtrl_TX_DISABLE); + } + } + } + else + { + status = MCBSP_ERR_BADMODE; + + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + if (TRUE != instHandle->rxSrgEnable) + { + /* Since this mode does not use the sample rate generator, so + * there is no point in changing the sample rate. So return + * with success*/ + status = MCBSP_STATUS_COMPLETED; + } + } + else + { + if (TRUE != instHandle->txSrgEnable) + { + /* Since this mode does not use the sample rate generator, so + * there is no point in changing the sample rate. So return + * with success*/ + status = MCBSP_STATUS_COMPLETED; + } + } + } + return (status); +} + +/* ========================================================================== */ +/* END OF FILE */ +/* ========================================================================== */ diff --git a/packages/ti/drv/mcbsp/src/mcbsp_edma.c b/packages/ti/drv/mcbsp/src/mcbsp_edma.c new file mode 100644 index 000000000..64fc8ad7c --- /dev/null +++ b/packages/ti/drv/mcbsp/src/mcbsp_edma.c @@ -0,0 +1,1952 @@ +/* + * mcbsp_edma.c + * + * This file contains local functions for MCBSP driver which contain implemen- + * tation for EDMA operation specifc calls like starting an EDMA transfer for + * for McBSP peripheral, EDMA completion and/or error callbacks etc. + * + * Copyright (C) 2012 - 2018 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +/*============================================================================*/ +/* INCLUDE FILES */ +/*============================================================================*/ + +/* CSL-RLs required for MCBSP LLD */ +#include // Freon only has cslr directory + +/* MCBSP Types includes */ +#include + +/* MCBSP LLD includes */ +#include +#include + +/* MCBSP OSAL layer */ +#include + + + +/*============================================================================*/ +/* IMPORTED VARIABLES */ +/*============================================================================*/ + +extern far Mcbsp_TempBuffer Mcbsp_muteBuf[CSL_MCBSP_PER_CNT]; + +/*============================================================================*/ +/* LOCAL FUNCTION PROTOTYPES */ +/*============================================================================*/ + +int32_t mcbspIsValidIOBuf(Mcbsp_ChannelObj *chanHandle); + +/*============================================================================*/ +/* LOCAL VARIABLES */ +/*============================================================================*/ + +#ifndef MCBSP_LOOPJOB_ENABLE +uint32_t Mcbsp_edmaChanNum; +uint32_t Mcbsp_dummyParamSetAddr; + +/* Edma dummy function*/ +void doNothing(uint32_t tcc, EDMA3_RM_TccStatus edmaStatus, void* appData) +{ +/* DO NOTHING (This is a callback for the dummy transfer) */ +} +#endif +/* ========================================================================== */ +/* FUNCTION DEFINITIONS */ +/* ========================================================================== */ + +/** + * \brief Function to intialize and set up the edma for transfer. + * + * This function does the following + * 1) Requests the EDMA channel from the edma driver. + * 2) Requests the link channels for linking (exclusive for tx & rx) + * 3) set up the param set of main xfer channel (for loopjob transfers) + * 4) set up the param sets of all link channel (for loopjob transfers) + * 5) link the last link channel to itself (this channel will be linked + * to main xfer channel later and to supply the loopjob xfer + * information infinely this is done so; + * other link channels are setup here just for completion sake + * + * \param chanHandle [IN] Handle to the channel for which the edma is setup + * + * \return status MCBSP_STATUS_COMPLETED if is sucess + * error id in case of failure + * + */ +int32_t Mcbsp_localSetupEdmaDuringOpen(Mcbsp_ChannelObj *chanHandle) +{ + uint32_t reqTcc = EDMA3_DRV_TCC_ANY; + Bool falsewhile = TRUE; + uint32_t linkCnt = 0; + uint32_t edmaChanNum = 0; + uint32_t count = 0; + int32_t status = MCBSP_STATUS_COMPLETED; +#ifndef MCBSP_LOOPJOB_ENABLE + EDMA3_RM_EventQueue queueNum = 0; +#endif + + + do + { + falsewhile = FALSE; + if (NULL == chanHandle) + { + return MCBSP_ERR_BADARGS; + } + + /* request the transfer channel from the EDMA driver */ + status = EDMA3_DRV_requestChannel( + chanHandle->edmaHandle, + &chanHandle->xferChan, + &chanHandle->tcc, + chanHandle->edmaEventQue, + (chanHandle->edmaCallback), + chanHandle); + + if (MCBSP_STATUS_COMPLETED != status) + { + status = MCBSP_ERR_BADARGS; + break; + } + + /* if there are any errors set in the EDMA clear them here */ + EDMA3_DRV_clearErrorBits( + chanHandle->edmaHandle, + chanHandle->xferChan); + + /* Acquire the PaRAM entries used for EDMA transfers linking */ + for (count = 0; count < Mcbsp_MAXLINKCNT; count++) + { + /* For requesting for a PaRam set */ + edmaChanNum = EDMA3_DRV_LINK_CHANNEL; + reqTcc = EDMA3_DRV_TCC_ANY; + + status = EDMA3_DRV_requestChannel( + chanHandle->edmaHandle, + &edmaChanNum, + &reqTcc, + chanHandle->edmaEventQue, + (chanHandle->edmaCallback), + NULL); + + if (MCBSP_STATUS_COMPLETED == status) + { + chanHandle->pramTbl[count] = edmaChanNum; + + status = EDMA3_DRV_getPaRAMPhyAddr( + chanHandle->edmaHandle, + chanHandle->pramTbl[count], + &(chanHandle->pramTblAddr[count])); + } + + if (MCBSP_STATUS_COMPLETED != status ) + { + /* free the Synchonized EDMA channel */ + EDMA3_DRV_freeChannel( + chanHandle->edmaHandle, + chanHandle->xferChan); + + /* free the already allocated PaRAM entries */ + for (linkCnt = 0; linkCnt < count; linkCnt++) + { + EDMA3_DRV_freeChannel( + chanHandle->edmaHandle, + chanHandle->pramTbl[linkCnt]); + } + + status = MCBSP_ERR_BADARGS; + break; + } + } + +#ifndef MCBSP_LOOPJOB_ENABLE + /* Configure for dummy PaRAM set*/ + Mcbsp_edmaChanNum = EDMA3_DRV_LINK_CHANNEL; + reqTcc = EDMA3_DRV_TCC_ANY; + + status = EDMA3_DRV_requestChannel( + chanHandle->edmaHandle, + &Mcbsp_edmaChanNum, + &reqTcc, + queueNum, + &doNothing, + NULL); + + if (MCBSP_STATUS_COMPLETED == status) + { + status = EDMA3_DRV_getPaRAMPhyAddr( + chanHandle->edmaHandle, + Mcbsp_edmaChanNum, + &Mcbsp_dummyParamSetAddr); + } +#endif + + /* Configure EDMA channels */ + if (MCBSP_STATUS_COMPLETED == status) + { + status = Mcbsp_localEdmaChanPaRAMsetup(chanHandle); + } + }while(falsewhile); + return status; +} +#ifdef MCBSP_LOOPJOB_ENABLE +/** + * \brief This calls the registered application callback for the current + * receive request and processes the next request in queue. + * This is a mcbsp edma callback function called in edma context + * + * \param tcc [IN] tcc number of EDMA + * \param edmaStatus [IN] status of EDMA transaction + * \param data [IN] paramaters sent to EDMA ISR (chan handler) + * + * \return Nothing + * + * \entry tcc should be a valid value + * status should be a valid value + * data should be a non NULL and valid pointer + * + * \leave Not implemented + */ +void Mcbsp_localEdmaCallback(uint32_t tcc, EDMA3_RM_TccStatus edmaStatus, void* data) +{ + Mcbsp_ChannelObj *chanHandle = NULL; + EDMA3_DRV_PaRAMRegs pramTbl = {0}; + int32_t status = MCBSP_STATUS_COMPLETED; + Mcbsp_IOBuf *ioBuf = NULL; + void* criticalSectionInfo; + + chanHandle = (Mcbsp_ChannelObj *)data; + /* to remove the compiler warning */ + tcc= tcc; + + /* critical section starts */ + criticalSectionInfo = Mcbsp_osalEnterMultipleCoreCriticalSection(); + + if (TRUE != Mcbsp_osalQueueEmpty(chanHandle->ptrQFloatList)) + { + /* should always have a buffer present because this callback is * + * due to that buffer */ + + /* Get the buffer from the top of the queue (atommic operation) */ + chanHandle->tempIOBuf = Mcbsp_osalQueueGet(chanHandle->ptrQFloatList); + + /* get the param table information of transfer channel */ + EDMA3_DRV_getPaRAM(chanHandle->edmaHandle,chanHandle->xferChan,&pramTbl); + + /* Handle the I/O buffers appropriately in case of an breakpoint * + * in case of an breakpoint.either of the buffers (2 link param Pkts) * + * could have caused a callback as both of them as linkedto each other* + * Hence we will handle that condition here */ + if (chanHandle->mode == MCBSP_MODE_INPUT) + { + /* Check if destination address falls into the range of 1st req * + * in the floating queue. */ + if (((pramTbl.destAddr >= (uint32_t)chanHandle->tempIOBuf->addr) + && (pramTbl.destAddr < (uint32_t)chanHandle->tempIOBuf->addr + + chanHandle->tempIOBuf->size)) && + (FALSE == Mcbsp_osalQueueEmpty(chanHandle->ptrQFloatList))) + { + /* Since we have already dequeue the 1st request, dequeue * + * 2nd io request from floating queue */ + ioBuf = (Mcbsp_IOBuf *)Mcbsp_osalQueueGet(chanHandle->ptrQFloatList); + + /* Queue the tempIOBuf (i.e. 1st io request) as this pkt * + * should be first in a queue */ + Mcbsp_osalQueuePut( + chanHandle->ptrQFloatList, + (void*)chanHandle->tempIOBuf); + + /* Queue the ioBuf i.e. 2nd request in floating queue */ + Mcbsp_osalQueuePut(chanHandle->ptrQFloatList,(void*)ioBuf); + } + } + else + { + /* Check if destination address falls into the range of1st request* + * in the floating queue. */ + if (((pramTbl.srcAddr >= (uint32_t)chanHandle->tempIOBuf->addr)&& + (pramTbl.srcAddr < (uint32_t)chanHandle->tempIOBuf->addr + chanHandle->tempIOBuf->size)) && + (FALSE == Mcbsp_osalQueueEmpty(chanHandle->ptrQFloatList))) + { + /* Since we have already dequeue the 1st request, dequeue * + * io request from floating queue */ + ioBuf = (Mcbsp_IOBuf *)Mcbsp_osalQueueGet(chanHandle->ptrQFloatList); + + /* Queue the tempIOBuf (i.e. 1st io request) as this * + * buffer should be first in a queue */ + Mcbsp_osalQueuePut( + chanHandle->ptrQFloatList, + (void*)chanHandle->tempIOBuf); + + /* Queue the ioBuf i.e. 2nd request in floating queue */ + Mcbsp_osalQueuePut(chanHandle->ptrQFloatList,(void*)ioBuf); + status = MCBSP_ERR_NOIOBUFFERS; + } + } + + if (MCBSP_STATUS_COMPLETED == status) + { + if (EDMA3_RM_XFER_COMPLETE != edmaStatus) + { + /* update the status of the IOP as error */ + chanHandle->tempIOBuf->status = MCBSP_ERR_ABORT; + + /* There is a data transfer error in EDMA transfer. clear the * + * Error bits and return */ + EDMA3_DRV_clearErrorBits( + chanHandle->edmaHandle, + chanHandle->xferChan); + } + else + { + chanHandle->tempIOBuf->status = MCBSP_STATUS_COMPLETED; + } + + chanHandle->submitCount--; + } +#ifdef MCBSP_LOOP_PING_PONG + if(MCBSP_STATUS_COMPLETED == status) + { + /* Put back the buffer in the queue */ + chanHandle->submitCount++; + /* Queue the tempIOBuf */ + Mcbsp_osalQueuePut( + chanHandle->ptrQFloatList, + (void*)chanHandle->tempIOBuf); + } +#endif + + if (MCBSP_STATUS_COMPLETED == status) + { +#ifndef MCBSP_LOOP_PING_PONG + /* if the channel is not in a pause mode */ + if (FALSE == chanHandle->paused) + { + /* Now that we have done with the last data buffer - we check * + * if next buffer is available for transmission. Even if we * + * are not having a valid buffer - previous programming of * + * linkchannels (designed in such a way) to send out null * + * buffer Also note that Mcbsp_localIsValidIOBuf function * + * will set the chanHandle->dataIOBuf with next (current now) * + * data buffer from queue */ + if ((Mcbsp_STATUS_VALID == (mcbspIsValidIOBuf(chanHandle)))) + { + /* This is a valid data request. Call function to process * + * it. If DMA cannot be programmed properly with request * + * contents, abort all queued up requests and put state * + * M/C into reset. */ + status = Mcbsp_localEdmaProcessPkt( + chanHandle, + chanHandle->dataIOBuf); + + if (MCBSP_STATUS_COMPLETED != status) + { + Mcbsp_localCancelAndAbortAllIo(chanHandle); + } + } + else + { + + Mcbsp_localGetNextIndex( + &chanHandle->nextLinkParamSetToBeUpdated); + + /* The following function will assign loopjob buffer to * + * free param set Also the control will come here two times* + * for last buffer and last but one buffer (obviously for * + * more than one buffer xfer) For last but buffer callback * + * itself we will come to know that there is no more buffer * + * pending and hence we load loopjob info into next param * + * set and for the last buffer callback will not do it * + * again (for only one buffer scenario the following flag * + * will take care not to update the loopjob second time) */ + if (FALSE == chanHandle->loopjobUpdatedinParamset) + { + chanHandle->loopjobUpdatedinParamset = TRUE; + + Mcbsp_localUpdtDtPktToLnkPrms(chanHandle,NULL); + } + } + } + else +#else + if (TRUE == chanHandle->paused) +#endif + { + /* Control will come over here when either of receive or * + * transmit state machine stop command is issued for receive * + * or transmit channel. If the nextFlag is already set * + * indicates that its time to reset the state machines and * + * disable the edma transfer */ + if (TRUE == chanHandle->nextFlag) + { + chanHandle->nextFlag = FALSE; + } + else + { + /* For the first time when the stop port command is issued* + * we will have one more buffer linked with the transfer * + * channel. So we will not stop at this time. We link the * + * buffer with NULL loopjob buffer and set a nextFlag to * + * TRUE. We will wait for another callback(indicating the * + * io request is complete) to disable EDMA transfer and * + * reset state machines */ + chanHandle->nextFlag = TRUE; + + Mcbsp_localGetNextIndex(&chanHandle->nextLinkParamSetToBeUpdated); + + Mcbsp_localUpdtDtPktToLnkPrms(chanHandle, NULL); + } + } + if (MCBSP_STATUS_COMPLETED == status) + { + chanHandle->isTempIOBufValid = TRUE; + Mcbsp_localCompleteCurrentIo(chanHandle); + } + } + else if (MCBSP_ERR_NOIOBUFFERS == status) + { + /* Handle Underflow condition */ + chanHandle->isTempIOBufValid = TRUE; + chanHandle->tempIOBuf = NULL; + Mcbsp_localCompleteCurrentIo(chanHandle); + } + } + /* critical section ends */ + Mcbsp_osalExitMultipleCoreCriticalSection(criticalSectionInfo); + +} + +/*! + * \brief This function updates the link param set accordingly with data or + * loopjobbuffer. This uses properly maintained index to identify to + * what param set the info has to be updated. + * + * \param chanHandle [IN] Handle to the mcbsp channel + * \param ioBuf [IN] Pointer to I/O buffer + * + * \return MCBSP_STATUS_COMPLETED in case of sucess + * else Error code in case of failure + * + * \entry chanHandle should be non NULL and valid pointer + * ioBuf should be non NULL and valid pointer + * + * \leave Not implemented + */ +int32_t Mcbsp_localUpdtDtPktToLnkPrms(Mcbsp_ChannelObj *chanHandle, + Mcbsp_IOBuf *const ioBuf) +{ + Mcbsp_Object_Unpadded *instHandle = NULL; + EDMA3_DRV_PaRAMRegs pramPtr = {0}; + Bool falsewhile = TRUE; + int32_t status = MCBSP_STATUS_COMPLETED; + EDMA3_DRV_SyncType syncType; + + do + { + falsewhile = FALSE; + if ((NULL == chanHandle) || (NULL == chanHandle->devHandle)) + { + return MCBSP_ERR_BADARGS; + } + + instHandle = (Mcbsp_Object_Unpadded *)&(chanHandle->devHandle->obj); + if (NULL == instHandle) + { + return MCBSP_ERR_BADARGS; + } + + /* if at all this is the first buffer we will update the main params * + * else we will update the link params */ + status = EDMA3_DRV_getPaRAM( + chanHandle->edmaHandle, + chanHandle->pramTbl[chanHandle->nextLinkParamSetToBeUpdated], + &pramPtr); + if (MCBSP_STATUS_COMPLETED != status ) + { + status = MCBSP_ERR_BADARGS; + break; + } + + /* Following the explanation behind the EDMA configuration * + * 1) We will have n arrays of data (now it is data buffer each of length * + * databuffersize bytes) * + * 2) for each sync event we have to fetch the data from each array and * + * write to each slot * + * 3) and the no. bytes transferred in this case from each array will be * + * roundedwordwidth/4 * + * 4) as the loopjob buffer is contigous, we configure the counts as * + * follows * + * a) consider there are arrays of length roundedwordwidth/4 (aCnt) * + * b) these arrays are located apart databuffersize size (bindex) * + * c) there are 'no.of.slots' no. of such arrays (bCnt) * + * d) (a) and (b) constitute one frame of EDMA transfer and it happens * + * for one sync event in AB sync mode. * + * e) such frames have to be sent till we have buffer - ie * + * databuffersize / (roundedwordwidth/8 ) and this constitutes cCnt* + * f) address of buffer (rather offset from start of previous frame) * + * is roundedwordwidth/8 and this forms cIndex * + * * + * Please take some time to visualise the setup mentioned above to check * + * with EDMA configuration * + * Also we change only specific parameters because others will not have * + * change from what we programed intially */ + + /* control will reach this function is two contexts * + * 1) From submitreq function for first time buffers * + * 2) From EDMA callback for further handling of buffers in Queue * + * - we are from EDMA callback becuase we have completed some user * + * data buffer just now */ + + if (NULL != ioBuf) + { + /* 1) when control comes to this function from submitreq control * + * will surely comeinto the block * + * 2) When control comes to this function from EDMA callback, * + * control will some only if there is fuirther more buffers to * + * handle */ + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + pramPtr.destAddr = (uint32_t)ioBuf->addr; + Mcbsp_localGetIndicesSyncType( + chanHandle, + &(pramPtr.destBIdx), + &(pramPtr.destCIdx), + &(pramPtr.aCnt), + &(pramPtr.bCnt), + &(pramPtr.cCnt), + &syncType, + FALSE); + } + else + { + if (TRUE == chanHandle->bMuteON) + { + /* Mute is set hence we need to switch to the mute buffer */ + pramPtr.srcAddr = + (uint32_t)&Mcbsp_muteBuf[instHandle->instNum].scratchBuffer; + Mcbsp_localGetIndicesSyncType( + chanHandle, + &(pramPtr.srcBIdx), + &(pramPtr.srcCIdx), + &(pramPtr.aCnt), + &(pramPtr.bCnt), + &(pramPtr.cCnt), + &syncType, + TRUE); + } + else + { + pramPtr.srcAddr = (uint32_t)ioBuf->addr; + Mcbsp_localGetIndicesSyncType( + chanHandle, + &(pramPtr.srcBIdx), + &(pramPtr.srcCIdx), + &(pramPtr.aCnt), + &(pramPtr.bCnt), + &(pramPtr.cCnt), + &syncType, + FALSE); + } + } + + /* Here we are enabling the interrupt for this param set info * + * we do it here in this way because using int enable API after * + * calling EDMA3_DRV_setPaRAM, may fail our intention. This is * + * because immediately after the set param the paramset might be * + * copied to linked param and will make the consecutive int enable* + * (set opt field) api useless for our purpose */ + pramPtr.opt |= (0x01u<<20u); + + /* we are loading data request in the param set. As per our design* + * when we load the data, we should link this param set with next* + * one most probably * + * a) That may have loopjob loaded * + * b) it may be the currently loaded set, which will be updated * + * in next edma callback. * + * hence in both cases to be run next to this data request */ + pramPtr.linkAddr = + (uint16_t)(chanHandle->pramTblAddr[ \ + ((chanHandle->nextLinkParamSetToBeUpdated+1) & 0x01)] & 0x0000FFFF); + } + else + { + /* we have reached here becuase we dont have any more buffer to * + * submit for Xfer assign loop job to params- no change in linking* + * IMP: The following assignment will be skipped if already both * + * params are having loopjob buffer */ + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + pramPtr.destAddr = (uint32_t)chanHandle->loopJobBuffer; + Mcbsp_localGetIndicesSyncType( + chanHandle, + &(pramPtr.destBIdx), + &(pramPtr.destCIdx), + &(pramPtr.aCnt), + &(pramPtr.bCnt), + &(pramPtr.cCnt), + &syncType, + TRUE); + } + else + { + pramPtr.srcAddr = (uint32_t)chanHandle->loopJobBuffer; + Mcbsp_localGetIndicesSyncType( + chanHandle, + &(pramPtr.srcBIdx), + &(pramPtr.srcCIdx), + &(pramPtr.aCnt), + &(pramPtr.bCnt), + &(pramPtr.cCnt), + &syncType, + TRUE); + } + + /* we are loading loopjob into this param. That means we have * + * reached the end of buffers inpending and floating queues. So * + * this loopjob had to be linked to itself. Also we need to point* + * the index to other param set in order to load data request * + * directly from submit call */ + pramPtr.linkAddr = + (uint16_t)(chanHandle->pramTblAddr[ \ + chanHandle->nextLinkParamSetToBeUpdated] & 0x0000FFFF); + + pramPtr.opt &= (~(0x01<<20)); + } + + /* Update the changed param set info into the appropriate paramset */ + status = EDMA3_DRV_setPaRAM( + chanHandle->edmaHandle, + chanHandle->pramTbl[chanHandle->nextLinkParamSetToBeUpdated], + &pramPtr); + if (MCBSP_STATUS_COMPLETED != status) + { + status = MCBSP_ERR_BADARGS; + break; + } + + if (NULL == ioBuf) + { + /* we are loading loopjob into this param. we need to point the * + * index to other param set in order to load data request directly* + * from submit call */ + Mcbsp_localGetNextIndex(&chanHandle->nextLinkParamSetToBeUpdated); + } + }while(falsewhile); + + return status; +} + +/** + * \brief setup the EDMA channel for the specific channel requested. + * + * This function configures the McBSP synchonized EDMA channel PaRAM + * entries it also configures the various other parameters like + * source and destination address / modes + * + * \param chanHandle [IN] Channel handle + * + * \return MCBSP_STATUS_COMPLETED if setup successful + * Appropriate MCBSP driver error code if configuration has any error + */ +int32_t Mcbsp_localEdmaChanPaRAMsetup(Mcbsp_ChannelObj *chanHandle) +{ + uint32_t linkCnt = 0; + Mcbsp_Object_Unpadded *instHandle = NULL; + EDMA3_DRV_PaRAMRegs paramSet = {0,0,0,0,0,0,0,0,0,0,0,0}; + int32_t status = MCBSP_STATUS_COMPLETED; + EDMA3_DRV_SyncType tempSyncType; + + if ((NULL == chanHandle) || (NULL == chanHandle->devHandle)) + { + return MCBSP_ERR_BADARGS; + } + + instHandle = &(chanHandle->devHandle->obj); + if (NULL == instHandle) + { + return MCBSP_ERR_BADARGS; + } + + /* Configure the McBSP synchonized EDMA channel PaRAM entries * + * Configure source and destination address / modes * + * first - main xfer channel */ + + /* following is the explanation behind the EDMA configuration * + * + * 1) We will have n arrays of data (now it is loopjob buffer each of * + * length x bytes) * + * 2) for each sync event we have to fetch the data from each array * + * and write to each serilaiser * + * 3) and the no. bytes transferred in this case from each array will * + * be roundedwordwidth/4 * + * 4) as the loopjob buffer is continous, we configure the counts as * + * follows * + * a) consider there are arrays of length roundedwordwidth/8(aCnt) * + * b) these arrays are located apart lengthofloopjob size (bindex) * + * c) there are 'no.of.slots' no. of such arrays (bCnt) * + * d) (a) and (b) constitute one frame of EDMA transfer and it * + * happens for one sync event in AB sync mode * + * e) such frames have to be sent till we have buffer - ie * + * lengthofloopjob / (roundedwordwidth/8 ) and this * + * constitutes cCnt * + * f) address of buffer (rather offset from start of previous * + * frame) is roundedwordwidth/8 and this forms cIndex * + * Please take some time to visualise the setup mentioned above to * + * check with EDMA configuration The same kind of setup will be used * + * for data transfers also and the change will be buffer pointer * + * and length of data buffer. */ + + /* Get the PaRAM set for default parameters */ + EDMA3_DRV_getPaRAM(chanHandle->edmaHandle,chanHandle->xferChan,¶mSet); + + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + /* Configuring Source and Dest addresses */ + if (TRUE == chanHandle->enableHwFifo) + { + paramSet.srcAddr = (uint32_t)(instHandle->hwInfo.dataAddress); + } + else + { + paramSet.srcAddr = (uint32_t)&(instHandle->hwInfo.regs->DRR); + } +#ifdef _BIG_ENDIAN + paramSet.srcAddr += (4 - chanHandle->roundedWordWidth); +#endif + paramSet.destAddr = (unsigned int)(chanHandle->loopJobBuffer); + + /* Configuring Src and Dest B&C Indexes */ + paramSet.srcBIdx = 0; + paramSet.srcCIdx = 0; + + if (MCBSP_STATUS_COMPLETED != Mcbsp_localGetIndicesSyncType( + chanHandle, + ¶mSet.destBIdx, + ¶mSet.destCIdx, + ¶mSet.aCnt, + ¶mSet.bCnt, + ¶mSet.cCnt, + &tempSyncType, + TRUE)) + { + status = MCBSP_ERR_BADARGS; + } + } + else + { + /* Configuring Source and Dest addresses */ + paramSet.srcAddr = (unsigned int)(chanHandle->loopJobBuffer); + + if (TRUE == chanHandle->enableHwFifo) + { + paramSet.destAddr = (uint32_t)(instHandle->hwInfo.dataAddress); + } + else + { + paramSet.destAddr = (uint32_t)&(instHandle->hwInfo.regs->DXR); + } +#ifdef _BIG_ENDIAN + paramSet.destAddr += (4 - chanHandle->roundedWordWidth); +#endif + /* Configuring Src and Dest B&C Indexes */ + paramSet.destBIdx = 0; + paramSet.destCIdx = 0; + + if (MCBSP_STATUS_COMPLETED != Mcbsp_localGetIndicesSyncType( + chanHandle, + ¶mSet.srcBIdx, + ¶mSet.srcCIdx, + ¶mSet.aCnt, + ¶mSet.bCnt, + ¶mSet.cCnt, + &tempSyncType, + TRUE)) + { + status = MCBSP_ERR_BADARGS; + } + } + + + /* Configuring bCntReload */ + paramSet.bCntReload = paramSet.bCnt; + + /* Src & Dest are in INCR modes */ + paramSet.opt &= 0xFFFFFFFCu; + + /* FIFO width is 8 bit */ + paramSet.opt &= 0xFFFFF8FFu; + + /* Set EDMA3_DRV_OPT_FIELD_TCINTEN to FALSE */ + paramSet.opt &= (~(CSL_TPCC_PARAM_OPT_ITCINTEN_MASK)); + + paramSet.opt &= (~(CSL_TPCC_PARAM_OPT_TCINTEN_MASK)); + paramSet.opt |= (CSL_TPCC_PARAM_OPT_TCINTEN_DISABLE + << CSL_TPCC_PARAM_OPT_TCINTEN_SHIFT); + + /* Program the TCC */ + paramSet.opt |= ((chanHandle->tcc << CSL_TPCC_PARAM_OPT_TCC_SHIFT) + & CSL_TPCC_PARAM_OPT_TCC_MASK); + + /* EDMA3_DRV_SYNC_AB */ + paramSet.opt &= (~(CSL_TPCC_PARAM_OPT_SYNCDIM_MASK)); + paramSet.opt |= (tempSyncType << CSL_TPCC_PARAM_OPT_SYNCDIM_SHIFT); + + paramSet.opt &= (~(CSL_TPCC_PARAM_OPT_TCCMOD_MASK)); + paramSet.opt |= (1 << CSL_TPCC_PARAM_OPT_TCCMOD_SHIFT); + + /* Now, write the PaRAM Set. */ + status = EDMA3_DRV_setPaRAM( + chanHandle->edmaHandle, + chanHandle->xferChan, + ¶mSet); + + if (MCBSP_STATUS_COMPLETED == status) + { + /* Configure the link PaRAMs with the appropriate parameters Though * + * we configure all the link paramsets, we will be using only one of * + * them to link with main xfer channel */ + for (linkCnt = 0; linkCnt < Mcbsp_MAXLINKCNT; linkCnt++) + { + /* Get the PaRAM set for default parameters */ + EDMA3_DRV_getPaRAM (chanHandle->edmaHandle, + chanHandle->pramTbl[linkCnt], + ¶mSet); + + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + /* Configuring Source and Dest addresses */ + if (TRUE == chanHandle->enableHwFifo) + { + paramSet.srcAddr = (uint32_t)(instHandle->hwInfo.dataAddress); + } + else + { + paramSet.srcAddr = (uint32_t)&(instHandle->hwInfo.regs->DRR); + } +#ifdef _BIG_ENDIAN + paramSet.srcAddr += (4 - chanHandle->roundedWordWidth); +#endif + paramSet.destAddr = (uint32_t)(chanHandle->loopJobBuffer); + + /* Configuring Src and Dest B&C Indexes */ + paramSet.srcBIdx = 0; + paramSet.srcCIdx = 0; + + if (MCBSP_STATUS_COMPLETED != Mcbsp_localGetIndicesSyncType( + chanHandle, + ¶mSet.destBIdx, + ¶mSet.destCIdx, + ¶mSet.aCnt, + ¶mSet.bCnt, + ¶mSet.cCnt, + &tempSyncType, + TRUE)) + { + status = MCBSP_ERR_BADARGS; + } + } + else + { + /* Configuring Source and Dest addresses */ + paramSet.srcAddr = (uint32_t)(chanHandle->loopJobBuffer); + + if (TRUE == chanHandle->enableHwFifo) + { + paramSet.destAddr = (uint32_t)(instHandle->hwInfo.dataAddress); + } + else + { + paramSet.destAddr = (uint32_t)&(instHandle->hwInfo.regs->DXR); + } + +#ifdef _BIG_ENDIAN + paramSet.destAddr += (4 - chanHandle->roundedWordWidth); +#endif + + paramSet.destBIdx = 0; + paramSet.destCIdx = 0; + + if (MCBSP_STATUS_COMPLETED != Mcbsp_localGetIndicesSyncType( + chanHandle, + ¶mSet.srcBIdx, + ¶mSet.srcCIdx, + ¶mSet.aCnt, + ¶mSet.bCnt, + ¶mSet.cCnt, + &tempSyncType, + TRUE)) + { + status = MCBSP_ERR_BADARGS; + } + } + + /* Configuring bCntReload */ + paramSet.bCntReload = paramSet.bCnt; + + /* Src & Dest are in INCR modes */ + paramSet.opt &= 0xFFFFFFFCu; + + /* FIFO width is 8 bit */ + paramSet.opt &= 0xFFFFF8FFu; + + /* EDMA3_DRV_SYNC_AB */ + paramSet.opt &= (~(CSL_TPCC_PARAM_OPT_SYNCDIM_MASK)); + paramSet.opt |= (tempSyncType << CSL_TPCC_PARAM_OPT_SYNCDIM_SHIFT); + + /* Set EDMA3_DRV_OPT_FIELD_TCINTEN to FALSE */ + paramSet.opt |= (CSL_TPCC_PARAM_OPT_TCINTEN_DISABLE + << CSL_TPCC_PARAM_OPT_TCINTEN_SHIFT); + + /* Program the TCC */ + paramSet.opt |= ((chanHandle->tcc << CSL_TPCC_PARAM_OPT_TCC_SHIFT) + & CSL_TPCC_PARAM_OPT_TCC_MASK); + + /* early completion interrupt */ + paramSet.opt &= (~(CSL_TPCC_PARAM_OPT_TCCMOD_MASK)); + paramSet.opt |= (1 << CSL_TPCC_PARAM_OPT_TCCMOD_SHIFT); + + paramSet.opt &= (~(CSL_TPCC_PARAM_OPT_TCINTEN_MASK)); + + if (MCBSP_STATUS_COMPLETED == status) + { + /* Now, write the PaRAM Set. */ + status = EDMA3_DRV_setPaRAM(chanHandle->edmaHandle, + chanHandle->pramTbl[linkCnt], + ¶mSet); + if (MCBSP_STATUS_COMPLETED != status) + { + status = MCBSP_ERR_BADARGS; + break; + } + } + + if (Mcbsp_MAXLINKCNT - 1 > linkCnt ) + { + /* link with next paramset both param sets are linked to each* + * other to enable continous xfer - either user audio data or * + * loopjob buffer MAXLINKCNT must be 2 */ + status = EDMA3_DRV_linkChannel( + chanHandle->edmaHandle, + chanHandle->xferChan, + chanHandle->pramTbl[linkCnt]); + + if (MCBSP_STATUS_COMPLETED != status) + { + status = MCBSP_ERR_BADARGS; + break; + } + + status = EDMA3_DRV_linkChannel( + chanHandle->edmaHandle, + chanHandle->pramTbl[linkCnt] , + chanHandle->pramTbl[linkCnt]); + + if (MCBSP_STATUS_COMPLETED != status) + { + status = MCBSP_ERR_BADARGS; + break; + } + + status = EDMA3_DRV_linkChannel( + chanHandle->edmaHandle, + chanHandle->pramTbl[linkCnt+1] , + chanHandle->pramTbl[linkCnt+1]); + + if (MCBSP_STATUS_COMPLETED != status) + { + status = MCBSP_ERR_BADARGS; + break; + } + + chanHandle->nextLinkParamSetToBeUpdated = 0; + + chanHandle->loopjobUpdatedinParamset = TRUE; + } + }/*for loop for linkcount*/ + } + return (status); +} + +#else +/** + * \brief This calls the registered application callback for the current + * receive request and processes the next request in queue. + * This is a mcbsp edma callback function called in edma context + * + * \param tcc [IN] tcc number of EDMA + * \param edmaStatus [IN] status of EDMA transaction + * \param data [IN] paramaters sent to EDMA ISR (chan handler) + * + * \return Nothing + * + * \entry tcc should be a valid value + * status should be a valid value + * data should be a non NULL and valid pointer + * + * \leave Not implemented + */ +void Mcbsp_localEdmaCallback(uint32_t tcc, EDMA3_RM_TccStatus edmaStatus, void* data) +{ + Mcbsp_Object_Unpadded *instHandle = NULL; + Mcbsp_ChannelObj *chanHandle = NULL; + int32_t status = MCBSP_STATUS_COMPLETED; + Bool falseWhile = TRUE; + void* criticalSectionInfo; + + /* critical section starts */ + criticalSectionInfo = Mcbsp_osalEnterSingleCoreCriticalSection(); + + do + { + falseWhile = FALSE; + + chanHandle = (Mcbsp_ChannelObj *)data; + + if (1u == chanHandle->submitCount) + { + /* This is the last buffer available with the driver.Hence we will* + * stop the EDMA and then proceed to process the buffer */ + EDMA3_DRV_disableTransfer( + chanHandle->edmaHandle, + chanHandle->xferChan, + EDMA3_DRV_TRIG_MODE_EVENT); + + instHandle = (Mcbsp_Object_Unpadded *)&(chanHandle->devHandle->obj); + + /* close the IOP now */ + if (MCBSP_MODE_OUTPUT == chanHandle->mode) + { + /* update the status of the IOP */ + if (EDMA3_RM_XFER_COMPLETE != edmaStatus) + { + /* update the status of the IOP as error */ + chanHandle->currentError = MCBSP_ERR_ABORT; + } + else + { + chanHandle->currentError = MCBSP_STATUS_COMPLETED; + } + + Mcbsp_TxFifo((int32_t)&instHandle->xmtObj, (int32_t)instHandle); + + /* critical section ends */ + Mcbsp_osalExitSingleCoreCriticalSection(criticalSectionInfo); + + break; + } + + /* Stop the McBSP hardware. * + * 1. check if the RX has enabled the FSG and also it is running * + * 2. Also check that the TX state machine is not running off FSG */ + if (TRUE == instHandle->rxFsgEnable) + { + if ((TRUE != instHandle->txFsgEnable) || + (TRUE == instHandle->stopSmFsXmt)) + { + Mcbsp_localResetCtrl( + (Mcbsp_Object_Unpadded *)&(chanHandle->devHandle->obj), + Mcbsp_SpcrCtrl_FSYNC_DISABLE); + + instHandle->fsgEnabled = FALSE; + } + } + + Mcbsp_localResetCtrl( + (Mcbsp_Object_Unpadded *)&(chanHandle->devHandle->obj), + Mcbsp_SpcrCtrl_RX_DISABLE); + + /* receive state machine is stopped */ + instHandle->stopSmFsRcv = TRUE; + + /* clear the error bits that have been set */ + EDMA3_DRV_clearErrorBits( + chanHandle->edmaHandle, + chanHandle->xferChan); + } + else + { + /* critical section ends */ + Mcbsp_osalExitSingleCoreCriticalSection(criticalSectionInfo); + } + + /* To remove the compiler warning */ + tcc = tcc; + + if (EDMA3_RM_XFER_COMPLETE != edmaStatus) + { + /* clear the error bits that have been set */ + EDMA3_DRV_clearErrorBits( + chanHandle->edmaHandle, + chanHandle->xferChan); + + /* update the status of the IOP as error */ + chanHandle->currentError = MCBSP_ERR_ABORT; + break; + } + else + { + chanHandle->currentError = MCBSP_STATUS_COMPLETED; + + /* reduce the submit count as the buffer callback is completed */ + chanHandle->submitCount--; + } + + + if (TRUE == Mcbsp_osalQueueEmpty(chanHandle->ptrQFloatList)) + { + /* This cannot happen, if it happens then it is a sprurios one */ + /* critical section ends */ + Mcbsp_osalExitSingleCoreCriticalSection(criticalSectionInfo); + break; + } + + /* Get the buffer from the top of the queue (atomic operation) */ + chanHandle->tempIOBuf = (Mcbsp_IOBuf *) Mcbsp_osalQueueGet(chanHandle->ptrQFloatList); + + + instHandle = (Mcbsp_Object_Unpadded *)&(chanHandle->devHandle->obj); + + /* check if the STOP command is issued for the channel. if the stop * + * command is issued we will not load the next buffer so that the * + * state machine is stopped */ + if (((MCBSP_MODE_INPUT == chanHandle->mode) && (FALSE == instHandle->stopSmFsRcv)) || + ((MCBSP_MODE_OUTPUT == chanHandle->mode) && (FALSE == instHandle->stopSmFsXmt))) + { + /* now check if any other buffer is available and load that */ + if ((Mcbsp_STATUS_VALID == (mcbspIsValidIOBuf(chanHandle)))) + { + /* Valid buffer is found,load the buffer in to link params*/ + status = Mcbsp_localEdmaProcessPkt( + chanHandle, + chanHandle->dataIOBuf); + + if (MCBSP_STATUS_COMPLETED != status) + { + Mcbsp_localCancelAndAbortAllIo(chanHandle); + } + } + } + + /* complete the IO pkt processing by calling the callback function */ + chanHandle->isTempIOBufValid = TRUE; + Mcbsp_localCompleteCurrentIo(chanHandle); + + /* critical section ends */ + Mcbsp_osalExitSingleCoreCriticalSection(criticalSectionInfo); + }while (falseWhile); + +} + +/** + * \brief This function updates the link param set accordingly with data or + * loopjobbuffer. This uses properly maintained index to identify to + * what param set the info has to be updated. + * + * \param chanHandle [IN] Handle to the mcbsp channel + * \param ioBuf [IN] Pointer to I/O buffer + * + * \return MCBSP_STATUS_COMPLETED in case of sucess + * else Error code in case of failure + * + * \entry chanHandle should be non NULL and valid pointer + * ioBuf should be non NULL and valid pointer + * + * \leave Not implemented + */ +int32_t Mcbsp_localUpdtDtPktToLnkPrms(Mcbsp_ChannelObj *chanHandle, + Mcbsp_IOBuf *const ioBuf) +{ + Mcbsp_Object_Unpadded *instHandle = NULL; + EDMA3_DRV_PaRAMRegs pramPtr = {0}; + Bool falsewhile = TRUE; + int32_t status = MCBSP_STATUS_COMPLETED; + EDMA3_DRV_SyncType syncType; + EDMA3_DRV_PaRAMRegs paramSet = {0,0,0,0,0,0,0,0,0,0,0,0}; + + do + { + falsewhile = FALSE; + if ((NULL == chanHandle) || (NULL == chanHandle->devHandle)) + { + return MCBSP_ERR_BADARGS; + } + + instHandle = (Mcbsp_Object_Unpadded *)&(chanHandle->devHandle->obj); + if (NULL == instHandle) + { + return MCBSP_ERR_BADARGS; + } + + /* if at all this is the first buffer we will update the main params * + * else we will update the link params */ + if (1u == chanHandle->submitCount) + { + status = EDMA3_DRV_getPaRAM( + chanHandle->edmaHandle, + chanHandle->xferChan, + &pramPtr); + } + else + { + status = EDMA3_DRV_getPaRAM( + chanHandle->edmaHandle, + chanHandle->pramTbl[chanHandle->nextLinkParamSetToBeUpdated], + &pramPtr); + } + + if (MCBSP_STATUS_COMPLETED != status ) + { + status = MCBSP_ERR_BADARGS; + break; + } + + if (NULL != ioBuf) + { + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + if (TRUE == chanHandle->enableHwFifo) + { + pramPtr.srcAddr = (uint32_t)(instHandle->hwInfo.dataAddress); + } + else + { + pramPtr.srcAddr = (uint32_t)&(instHandle->hwInfo.regs->DRR); + } +#ifdef _BIG_ENDIAN + pramPtr.srcAddr += (4 - chanHandle->roundedWordWidth); +#endif + pramPtr.destAddr = (uint32_t)ioBuf->addr; + Mcbsp_localGetIndicesSyncType( + chanHandle, + &(pramPtr.destBIdx), + &(pramPtr.destCIdx), + &(pramPtr.aCnt), + &(pramPtr.bCnt), + &(pramPtr.cCnt), + &syncType, + FALSE); + } + else + { + if (TRUE == chanHandle->enableHwFifo) + { + pramPtr.destAddr = (uint32_t)(instHandle->hwInfo.dataAddress); + } + else + { + pramPtr.destAddr = (uint32_t)&(instHandle->hwInfo.regs->DXR); + } +#ifdef _BIG_ENDIAN + pramPtr.destAddr += (4 - chanHandle->roundedWordWidth); +#endif + if (TRUE == chanHandle->bMuteON) + { + /* Mute is set hence we need to switch to the mute buffer */ + pramPtr.srcAddr = + (uint32_t)&Mcbsp_muteBuf[instHandle->instNum].scratchBuffer; + Mcbsp_localGetIndicesSyncType( + chanHandle, + &(pramPtr.srcBIdx), + &(pramPtr.srcCIdx), + &(pramPtr.aCnt), + &(pramPtr.bCnt), + &(pramPtr.cCnt), + &syncType, + TRUE); + } + else + { + pramPtr.srcAddr = (uint32_t)ioBuf->addr; + Mcbsp_localGetIndicesSyncType( + chanHandle, + &(pramPtr.srcBIdx), + &(pramPtr.srcCIdx), + &(pramPtr.aCnt), + &(pramPtr.bCnt), + &(pramPtr.cCnt), + &syncType, + FALSE); + } + } + + /* Here we are enabling the interrupt for this param set info * + * we do it here in this way because using int enable API after * + * calling EDMA3_DRV_setPaRAM, may fail our intention. This is * + * because immediately after the set param the paramset might be * + * copied to linked param and will make the consecutive int enable* + * (set opt field) api useless for our purpose */ + pramPtr.opt |= (0x01u<<20u); + + /* early completion interrupt is enabled */ + pramPtr.opt &= (~(CSL_TPCC_PARAM_OPT_TCCMOD_MASK)); + pramPtr.opt |= (1 << CSL_TPCC_PARAM_OPT_TCCMOD_SHIFT); + + /* set the link address as 0xFFFF */ + pramPtr.linkAddr = 0xFFFFu; + + if (MCBSP_MODE_OUTPUT == chanHandle->mode) + { + status = EDMA3_DRV_getPaRAM (chanHandle->edmaHandle, + Mcbsp_edmaChanNum, + ¶mSet); + + paramSet.aCnt = 1u; + paramSet.linkAddr = 0xFFFF; + paramSet.opt &= ~(0x01 << 3); + + if (MCBSP_STATUS_COMPLETED == status) + { + /* Now, write the dummy PaRAM Set. */ + status = EDMA3_DRV_setPaRAM(chanHandle->edmaHandle, + Mcbsp_edmaChanNum, + ¶mSet); + } + } + } + else + { + status = MCBSP_ERR_BADARGS; + break; + } + + if (1u == chanHandle->submitCount) + { + /* Configuring bCntReload */ + pramPtr.bCntReload = pramPtr.bCnt; + + /* Src & Dest are in INCR modes */ + pramPtr.opt &= 0xFFFFFFFCu; + + /* FIFO width is 8 bit */ + pramPtr.opt &= 0xFFFFF8FFu; + + /* Set EDMA3_DRV_OPT_FIELD_TCINTEN to TRUE */ + pramPtr.opt |= (CSL_TPCC_PARAM_OPT_TCINTEN_ENABLE + << CSL_TPCC_PARAM_OPT_TCINTEN_SHIFT); + + /* Program the TCC */ + pramPtr.opt |= ((chanHandle->tcc << CSL_TPCC_PARAM_OPT_TCC_SHIFT) + & CSL_TPCC_PARAM_OPT_TCC_MASK); + + /* EDMA3_DRV_SYNC_AB */ + pramPtr.opt &= (~(CSL_TPCC_PARAM_OPT_SYNCDIM_MASK)); + pramPtr.opt |= (syncType << CSL_TPCC_PARAM_OPT_SYNCDIM_SHIFT); + + /* set the link address as dummy address for Tx and 0xFFFF for Rx */ + if (MCBSP_MODE_OUTPUT == chanHandle->mode) + { + pramPtr.linkAddr = + (uint16_t)(Mcbsp_dummyParamSetAddr & 0x0000FFFF); + } + else + { + pramPtr.linkAddr = 0xFFFFu; + } + + /* early completion interrupt is enabled */ + pramPtr.opt &= (~(CSL_TPCC_PARAM_OPT_TCCMOD_MASK)); + pramPtr.opt |= (1 << CSL_TPCC_PARAM_OPT_TCCMOD_SHIFT); + + status = EDMA3_DRV_setPaRAM( + chanHandle->edmaHandle, + chanHandle->xferChan, + &pramPtr); + + } + else + { + status = EDMA3_DRV_setPaRAM( + chanHandle->edmaHandle, + chanHandle->pramTbl[chanHandle-> + nextLinkParamSetToBeUpdated], + &pramPtr); + } + + if (2u == chanHandle->submitCount) + { + /* link this paramset with the main channel */ + status = EDMA3_DRV_linkChannel( + chanHandle->edmaHandle, + chanHandle->xferChan, + chanHandle->pramTbl \ + [chanHandle->nextLinkParamSetToBeUpdated]); + + if (MCBSP_STATUS_COMPLETED != status) + { + status = MCBSP_ERR_BADIO; + break; + } + + if (MCBSP_MODE_OUTPUT == chanHandle->mode) + { + /* link the dummy transfer at the end of the link PaRAM */ + status = EDMA3_DRV_linkChannel( + chanHandle->edmaHandle, + chanHandle->pramTbl \ + [chanHandle->nextLinkParamSetToBeUpdated], + Mcbsp_edmaChanNum); + + if (MCBSP_STATUS_COMPLETED != status) + { + status = MCBSP_ERR_BADIO; + break; + } + } + } + + /* link this paramset with the other paramset */ + if (3u == chanHandle->submitCount) + { + status = EDMA3_DRV_linkChannel( + chanHandle->edmaHandle, + chanHandle->pramTbl[ + (chanHandle->nextLinkParamSetToBeUpdated + 1u) & 0x01u], + chanHandle->pramTbl \ + [chanHandle->nextLinkParamSetToBeUpdated]); + + if (MCBSP_STATUS_COMPLETED != status) + { + status = MCBSP_ERR_BADIO; + break; + } + + if (MCBSP_MODE_OUTPUT == chanHandle->mode) + { + /* link the dummy transfer at the end of the link PaRAM */ + status = EDMA3_DRV_linkChannel( + chanHandle->edmaHandle, + chanHandle->pramTbl \ + [chanHandle->nextLinkParamSetToBeUpdated], + Mcbsp_edmaChanNum); + + if (MCBSP_STATUS_COMPLETED != status) + { + status = MCBSP_ERR_BADIO; + break; + } + } + + } + + if (MCBSP_STATUS_COMPLETED != status) + { + status = MCBSP_ERR_BADARGS; + break; + } + }while(falsewhile); + return status; +} + +/** + * \brief setup the EDMA channel for the specific channel requested. + * + * This function configures the McBSP synchonized EDMA channel PaRAM + * entries it also configures the various other parameters like + * source and destination address / modes + * + * \param chanHandle [IN] Channel handle + * + * \return MCBSP_STATUS_COMPLETED if setup successful + * Appropriate MCBSP driver error code if configuration has any error + */ +int32_t Mcbsp_localEdmaChanPaRAMsetup(Mcbsp_ChannelObj *chanHandle) +{ + uint32_t linkCnt = 0; + Mcbsp_Object_Unpadded *instHandle = NULL; + EDMA3_DRV_PaRAMRegs paramSet = {0,0,0,0,0,0,0,0,0,0,0,0}; + int32_t status = MCBSP_STATUS_COMPLETED; + EDMA3_DRV_SyncType tempSyncType; + + if ((NULL == chanHandle) || (NULL == chanHandle->devHandle)) + { + return MCBSP_ERR_BADARGS; + } + + instHandle = &(chanHandle->devHandle->obj); + if (NULL == instHandle) + { + return MCBSP_ERR_BADARGS; + } + + /* Configure the McBSP synchonized EDMA channel PaRAM entries * + * Configure source and destination address / modes * + * first - main xfer channel */ + + /* following is the explanation behind the EDMA configuration * + * + * 1) We will have n arrays of data (now it is loopjob buffer each of * + * length x bytes) * + * 2) for each sync event we have to fetch the data from each array * + * and write to each serilaiser * + * 3) and the no. bytes transferred in this case from each array will * + * be roundedwordwidth/4 * + * 4) as the loopjob buffer is continous, we configure the counts as * + * follows * + * a) consider there are arrays of length roundedwordwidth/8(aCnt) * + * b) these arrays are located apart lengthofloopjob size (bindex) * + * c) there are 'no.of.slots' no. of such arrays (bCnt) * + * d) (a) and (b) constitute one frame of EDMA transfer and it * + * happens for one sync event in AB sync mode * + * e) such frames have to be sent till we have buffer - ie * + * lengthofloopjob / (roundedwordwidth/8 ) and this * + * constitutes cCnt * + * f) address of buffer (rather offset from start of previous * + * frame) is roundedwordwidth/8 and this forms cIndex * + * Please take some time to visualise the setup mentioned above to * + * check with EDMA configuration The same kind of setup will be used * + * for data transfers also and the change will be buffer pointer * + * and length of data buffer. */ + + /* Get the PaRAM set for default parameters */ + EDMA3_DRV_getPaRAM(chanHandle->edmaHandle,chanHandle->xferChan,¶mSet); + + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + /* Configuring Source and Dest addresses */ + if (TRUE == chanHandle->enableHwFifo) + { + paramSet.srcAddr = (uint32_t)(instHandle->hwInfo.dataAddress); + } + else + { + paramSet.srcAddr = (uint32_t)&(instHandle->hwInfo.regs->DRR); + } + +#ifdef _BIG_ENDIAN + paramSet.srcAddr += (4 - chanHandle->roundedWordWidth); +#endif + /* Configuring Src and Dest B&C Indexes */ + paramSet.srcBIdx = 0; + paramSet.srcCIdx = 0; + + if (MCBSP_STATUS_COMPLETED != Mcbsp_localGetIndicesSyncType( + chanHandle, + ¶mSet.destBIdx, + ¶mSet.destCIdx, + ¶mSet.aCnt, + ¶mSet.bCnt, + ¶mSet.cCnt, + &tempSyncType, + TRUE)) + { + status = MCBSP_ERR_BADARGS; + } + } + else + { + /* Configuring Source and Dest addresses */ + if (TRUE == chanHandle->enableHwFifo) + { + paramSet.destAddr = (uint32_t)(instHandle->hwInfo.dataAddress); + } + else + { + paramSet.destAddr = (uint32_t)&(instHandle->hwInfo.regs->DXR); + } +#ifdef _BIG_ENDIAN + paramSet.destAddr += (4 - chanHandle->roundedWordWidth); +#endif + /* Configuring Src and Dest B&C Indexes */ + paramSet.destBIdx = 0; + paramSet.destCIdx = 0; + + if (MCBSP_STATUS_COMPLETED != Mcbsp_localGetIndicesSyncType( + chanHandle, + ¶mSet.srcBIdx, + ¶mSet.srcCIdx, + ¶mSet.aCnt, + ¶mSet.bCnt, + ¶mSet.cCnt, + &tempSyncType, + TRUE)) + { + status = MCBSP_ERR_BADARGS; + } + } + + /* Configuring bCntReload */ + paramSet.bCntReload = paramSet.bCnt; + + /* Src & Dest are in INCR modes */ + paramSet.opt &= 0xFFFFFFFCu; + + /* FIFO width is 8 bit */ + paramSet.opt &= 0xFFFFF8FFu; + + /* Set EDMA3_DRV_OPT_FIELD_TCINTEN to FALSE */ + paramSet.opt &= (~(CSL_TPCC_PARAM_OPT_ITCINTEN_MASK)); + + paramSet.opt &= (~(CSL_TPCC_PARAM_OPT_TCINTEN_MASK)); + paramSet.opt |= (CSL_TPCC_PARAM_OPT_TCINTEN_DISABLE + << CSL_TPCC_PARAM_OPT_TCINTEN_SHIFT); + + /* Program the TCC */ + paramSet.opt |= ((chanHandle->tcc << CSL_TPCC_PARAM_OPT_TCC_SHIFT) + & CSL_TPCC_PARAM_OPT_TCC_MASK); + + /* EDMA3_DRV_SYNC_AB */ + paramSet.opt &= (~(CSL_TPCC_PARAM_OPT_SYNCDIM_MASK)); + paramSet.opt |= (tempSyncType << CSL_TPCC_PARAM_OPT_SYNCDIM_SHIFT); + + /* early completion interrupt is enabled */ + paramSet.opt &= (~(CSL_TPCC_PARAM_OPT_TCCMOD_MASK)); + paramSet.opt |= (1 << CSL_TPCC_PARAM_OPT_TCCMOD_SHIFT); + + /* Now, write the PaRAM Set. */ + status = EDMA3_DRV_setPaRAM( + chanHandle->edmaHandle, + chanHandle->xferChan, + ¶mSet); + + if (MCBSP_STATUS_COMPLETED == status) + { + /* Configure the link PaRAMs with the appropriate parameters Though * + * we configure all the link paramsets, we will be using only one of * + * them to link with main xfer channel */ + for (linkCnt = 0; linkCnt < Mcbsp_MAXLINKCNT; linkCnt++) + { + /* Get the PaRAM set for default parameters */ + EDMA3_DRV_getPaRAM (chanHandle->edmaHandle, + chanHandle->pramTbl[linkCnt], + ¶mSet); + + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + /* Configuring Source and Dest addresses */ + if (TRUE == chanHandle->enableHwFifo) + { + paramSet.srcAddr = (uint32_t)(instHandle->hwInfo.dataAddress); + } + else + { + paramSet.srcAddr = (uint32_t)&(instHandle->hwInfo.regs->DRR); + } +#ifdef _BIG_ENDIAN + paramSet.srcAddr += (4 - chanHandle->roundedWordWidth); +#endif + /* Configuring Src and Dest B&C Indexes */ + paramSet.srcBIdx = 0; + paramSet.srcCIdx = 0; + + if (MCBSP_STATUS_COMPLETED != Mcbsp_localGetIndicesSyncType( + chanHandle, + ¶mSet.destBIdx, + ¶mSet.destCIdx, + ¶mSet.aCnt, + ¶mSet.bCnt, + ¶mSet.cCnt, + &tempSyncType, + TRUE)) + { + status = MCBSP_ERR_BADARGS; + } + } + else + { + /* Configuring Source and Dest addresses */ + if (TRUE == chanHandle->enableHwFifo) + { + paramSet.destAddr = (uint32_t)(instHandle->hwInfo.dataAddress); + } + else + { + paramSet.destAddr = (uint32_t)&(instHandle->hwInfo.regs->DXR); + } +#ifdef _BIG_ENDIAN + paramSet.destAddr += (4 - chanHandle->roundedWordWidth); +#endif + paramSet.destBIdx = 0; + paramSet.destCIdx = 0; + + if (MCBSP_STATUS_COMPLETED != Mcbsp_localGetIndicesSyncType( + chanHandle, + ¶mSet.srcBIdx, + ¶mSet.srcCIdx, + ¶mSet.aCnt, + ¶mSet.bCnt, + ¶mSet.cCnt, + &tempSyncType, + TRUE)) + { + status = MCBSP_ERR_BADARGS; + } + } + + /* Configuring bCntReload */ + paramSet.bCntReload = paramSet.bCnt; + + /* Src & Dest are in INCR modes */ + paramSet.opt &= 0xFFFFFFFCu; + + /* FIFO width is 8 bit */ + paramSet.opt &= 0xFFFFF8FFu; + + /* EDMA3_DRV_SYNC_AB */ + paramSet.opt &= (~(CSL_TPCC_PARAM_OPT_SYNCDIM_MASK)); + paramSet.opt |= (tempSyncType << CSL_TPCC_PARAM_OPT_SYNCDIM_SHIFT); + + /* Set EDMA3_DRV_OPT_FIELD_TCINTEN to FALSE */ + paramSet.opt |= (CSL_TPCC_PARAM_OPT_TCINTEN_DISABLE + << CSL_TPCC_PARAM_OPT_TCINTEN_SHIFT); + + /* Program the TCC */ + paramSet.opt |= ((chanHandle->tcc << CSL_TPCC_PARAM_OPT_TCC_SHIFT) + & CSL_TPCC_PARAM_OPT_TCC_MASK); + + /* early completion interrupt */ + paramSet.opt &= (~(CSL_TPCC_PARAM_OPT_TCCMOD_MASK)); + paramSet.opt |= (1 << CSL_TPCC_PARAM_OPT_TCCMOD_SHIFT); + + if (MCBSP_STATUS_COMPLETED == status) + { + /* Now, write the PaRAM Set. */ + status = EDMA3_DRV_setPaRAM(chanHandle->edmaHandle, + chanHandle->pramTbl[linkCnt], + ¶mSet); + } + }/*for loop for linkcount*/ + } + return (status); +} +#endif /* #ifdef MCBSP_LOOPJOB_ENABLE */ + +/** + * \brief This checks is the next request in queue is data request. If this is + * an abort request, it calls the appropriate function to deal + * with it. + * + * \param chanHandle [IN] Handle to the Mcbsp Channel + * + * \return Mcbsp_STATUS_INVALID,if no outstanding requests + * Mcbsp_STATUS_VALID, if pending buffer is there + * + */ +int32_t mcbspIsValidIOBuf(Mcbsp_ChannelObj *chanHandle) +{ + int32_t status = Mcbsp_STATUS_INVALID; + + if ((NULL == chanHandle) || (NULL == chanHandle->devHandle)) + { + return MCBSP_ERR_BADARGS; + } + + /* check if the queue has any request to be processed */ + if (FALSE == Mcbsp_osalQueueEmpty(chanHandle->ptrQPendList)) + { + chanHandle->dataIOBuf = (Mcbsp_IOBuf *) Mcbsp_osalQueueGet(chanHandle->ptrQPendList); + + if (NULL != chanHandle->dataIOBuf) + { + /* we have a valid buffer to process next */ + chanHandle->currentDataSize = + (uint16_t)(chanHandle->dataIOBuf->size); + chanHandle->userDataBufferSize = + (uint32_t)(chanHandle->dataIOBuf->size); + + /* Additional to assigning the important parameters as above * + * for DMA mode , we will have max 2 buffers floating and hence * + * we use a activequue to manage this */ + Mcbsp_osalQueuePut(chanHandle->ptrQFloatList, (Mcbsp_QueueElem *)chanHandle->dataIOBuf); + + /* Set the status as valid */ + status = Mcbsp_STATUS_VALID; + } + } + else + { + /* we dont have any buffer in queue stop xmt/rcv SM before giving * + * error */ + chanHandle->dataIOBuf = NULL; + + /* Set the status as invalid to program the loopjob buffer */ + status = Mcbsp_STATUS_INVALID; + } + return status; +} + +/** + * \brief Process the buffer and update the EDMA paramset + * + * For the transmit operation, the eDMA channel's destination + * port is tied to the MCBSP DAT port. In case of receive, the eDMA + * channel's source port is tied to the MCBSP DAT port. The source + * address for transmit eDMA channel and the destination address for + * the receive eDMA channel are set here. + * + * \param chanHandle [IN] Pointer to channel + * \param ioBuf [IN] Pointer to request to be processed + * + * \return MCBSP_STATUS_COMPLETED, if the address is set correctly + * MCBSP_ERR_BADIO otherwise + */ +int32_t Mcbsp_localEdmaProcessPkt(Mcbsp_ChannelObj *chanHandle, + Mcbsp_IOBuf *ioBuf) +{ + int32_t status = MCBSP_STATUS_COMPLETED; + + if ((NULL == chanHandle) || (NULL == ioBuf)) + { + return MCBSP_ERR_BADARGS; + } + + /* we are going to update the paramset from EDMA callback context. That * + * means the one of the param sets are having audio data just completed * + * data request and one having currently loaded (active) data request * + * Current index is pointing only latest paramset (that is active) so * + * move the index */ + Mcbsp_localGetNextIndex(&chanHandle->nextLinkParamSetToBeUpdated); + + /* update the edma paramset with the buffer details */ + status = Mcbsp_localUpdtDtPktToLnkPrms(chanHandle, ioBuf); + + return (status); +} + +/** + * \brief Mcbsp_localGetIndicesSyncType + * + * This function computes the parameters requied to configure EDMA 3 based + * on the buffer format seleted while creating the driver. + * + * Entry Criteria : This function expects channel variables such as no of slots + * length of buffers is updated. + * + * \param chanHandle [IN] Pointer to channel handle + * \param bIndex [IN] Pointer to stores computed bIndex + * \param cIndex [IN] Pointer to stores computed cIndex + * \param aCnt [IN] Pointer to stores computed aCnt + * \param bCnt [IN] Pointer to stores computed bCnt + * \param cCnt [IN] Pointer to stores computed cCnt + * \param syncType [IN] Pointer to stores computed mode of EDMA + * \param forLoopJobBuf [IN] To calucalate above for loopJob or data + * + * CAUTION: This function could be called with pointer pointing to EDMA 3 + * paramset pointer (avoiding couple of variables). Care should be + * take to ensure that data types used in EDMA 3 paramset is + * consistent with EDMA 3 defined data types. + * + * \return MCBSP_ERR_BADARGS on invalid buffer format, else MCBSP_STATUS_COMPLETED + */ +int32_t Mcbsp_localGetIndicesSyncType(Mcbsp_ChannelObj *chanHandle, + volatile int16_t *bIndex, + volatile int16_t *cIndex, + volatile uint16_t *aCnt, + volatile uint16_t *bCnt, + volatile uint16_t *cCnt, + EDMA3_DRV_SyncType *syncType, + Bool forLoopJobBuf) +{ + uint32_t tempSize = 0x0; + int32_t status = MCBSP_STATUS_COMPLETED; + + if(((NULL == chanHandle) || (NULL == bIndex) || (NULL == cIndex) + || (NULL == aCnt) || (NULL == bCnt) || (NULL == cCnt) + || (NULL == syncType))) + { + return MCBSP_ERR_BADARGS; + } + + /* Get the size of the buffer to be used. In case of mute command and * + * normal IOP we will use the actual size of the buffer. For the loop job * + * case 1. if internal loop job then the minimum loop job length will be * + * used. * + * case 2. user supplied loop job buffer then the user loop job length * + * will be used. */ + if ((TRUE == forLoopJobBuf) && (FALSE == chanHandle->bMuteON)) + { + if (TRUE == chanHandle->userLoopJob) + { + /* use the user supplied buffer length for the EDMA params */ + tempSize = chanHandle->userLoopJobLength; + } + else + { + tempSize = chanHandle->loopJobLength; + } + } + else + { + tempSize = chanHandle->userDataBufferSize; + } + + /* Get the indices */ + switch (chanHandle->dataFormat) + { + case Mcbsp_BufferFormat_1SLOT: + case Mcbsp_BufferFormat_MULTISLOT_INTERLEAVED: + *aCnt = chanHandle->roundedWordWidth; + *bCnt = 1u; + *cCnt = (uint16_t)(tempSize/(*aCnt)); + *bIndex = (int16_t)tempSize; + *cIndex = (int16_t)(*aCnt); + *syncType = EDMA3_DRV_SYNC_AB; + break; + case Mcbsp_BufferFormat_MULTISLOT_NON_INTERLEAVED: + *aCnt = chanHandle->roundedWordWidth; + *bCnt = (uint16_t)(chanHandle->numEnabledChannels); + + /* temp Size is always a multiple of the acnt hence the division * + * result will always be an integer */ + *cCnt = (uint16_t)(tempSize /((*aCnt) * (*bCnt))); + /* temp Size is always a multiple of the bcnt when using the * + * multiple slots hence the result will be always an integer */ + *bIndex = (int16_t)(tempSize/(*bCnt)); + *cIndex = (int16_t)((*aCnt) - (((*bCnt)- 1u) * (tempSize/(*bCnt)))); + *syncType = EDMA3_DRV_SYNC_A; + break; + default: + status = MCBSP_ERR_BADARGS; + break; + } + + /* if the loop job buffer being used is the driver internal loop job * + * buffer, dont increment the index for it.Same is the case if mute is ON */ + if (TRUE == forLoopJobBuf) + { + if ((TRUE == chanHandle->bMuteON) || + (FALSE == chanHandle->userLoopJob)) + { + *bIndex = 0; + *cIndex = 0; + } + } + return status; +} + +/* ========================================================================== */ +/* END OF FILE */ +/* ========================================================================== */ + diff --git a/packages/ti/drv/mcbsp/src/mcbsp_ioctl.c b/packages/ti/drv/mcbsp/src/mcbsp_ioctl.c new file mode 100644 index 000000000..43f6f42e2 --- /dev/null +++ b/packages/ti/drv/mcbsp/src/mcbsp_ioctl.c @@ -0,0 +1,630 @@ +/* + * mcbsp_ioctl.c + * + * This file contains local functions for McBSP driver which contain implemen- + * tation for control operation specifc for the McBSP peripheral. + * + * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +/* ========================================================================== */ +/* INCLUDE FILES */ +/* ========================================================================== */ + +/* MCBSP CSL-RL */ +#include + +/* MCBSP Types includes */ +#include + +/* MCBSP LLD includes */ +#include +#include + +/* MCBSP OSAL layer */ +#include + +#ifdef MCBSP_LOOPJOB_ENABLE +extern far Mcbsp_TempBuffer Mcbsp_loopDstBuf[CSL_MCBSP_PER_CNT]; +extern far Mcbsp_TempBuffer Mcbsp_loopSrcBuf[CSL_MCBSP_PER_CNT]; +#endif + +/* ========================================================================== */ +/* FUNCTION DEFINTIONS */ +/* ========================================================================== */ + +/** + * \brief Implements the IOCTLS for McBSP driver. + * + * This function implements the McBSP device specific control operations + * including Start/Stop, Pause/Resume, Channel and Device Reset, + * Mute-ON/OFF, McBSP sample rate generator configuration etc. + * + * \param chanHandle [IN] Handle to channel + * \param cmd [IN] Control command number + * \param arg [IN] Arguments for control command + * \param param [IN] user defined data structure + * + * \return MCBSP_STATUS_COMPLETED in case of sucess. + * MCBSP_ERR_NOTIMPL in case the command is not supported. + * MCBSP driver error code in case of any error. + */ +int32_t Mcbsp_localSubmitIoctl(Mcbsp_ChannelObj *chanHandle, + Mcbsp_IOCTL cmd, + void* arg, + void* param) +{ + Mcbsp_Object_Unpadded *instHandle = NULL; + Mcbsp_srgConfig *srgConfig = NULL; + int32_t status = MCBSP_STATUS_COMPLETED; +#ifdef MCBSP_LOOPJOB_ENABLE + Mcbsp_IOBuf *ioBuf = NULL; + uint16_t linkCnt = 0; + Mcbsp_ChanParams *params = NULL; +#endif + + if ((NULL == chanHandle) || (NULL == chanHandle->devHandle)) + { + return MCBSP_ERR_BADARGS; + } + + instHandle = &(chanHandle->devHandle->obj); + if (NULL == instHandle) + { + return MCBSP_ERR_BADARGS; + } + + /* To remove compiler warning */ + param = param; + + /********************command to start the Mcbsp section********************/ + if (Mcbsp_IOCTL_START == cmd) + { + /* stop the Mcbsp channel */ + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + if (TRUE == instHandle->stopSmFsRcv) + { + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_RX_ENABLE); + instHandle->stopSmFsRcv = FALSE; + } + else + { + /* Already stop port command is issued. This is a redundant * + * command. */ + status = MCBSP_ERR_BADARGS; + } + } + else + { + if (TRUE == instHandle->stopSmFsXmt) + { + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_TX_ENABLE); + instHandle->stopSmFsXmt = FALSE; + } + else + { + /* Already stop port command is issued. This is a redundant * + * command. */ + status = MCBSP_ERR_BADARGS; + } + } + } + + /********************command to stop the Mcbsp section*********************/ + else if (Mcbsp_IOCTL_STOP == cmd) + { + /* abort all the buffers in the driver */ + Mcbsp_localAbortReset(chanHandle); + + /* stop the hardware */ + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_RX_DISABLE); + instHandle->stopSmFsRcv = TRUE; + } + else + { + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_TX_DISABLE); + instHandle->stopSmFsXmt = TRUE; + } + } + /****************command to start sample rate generator********************/ + else if (Mcbsp_IOCTL_SRGR_START == cmd) + { + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_SRG_ENABLE); + } + /*****************command to stop sample rate generator********************/ + else if (Mcbsp_IOCTL_SRGR_STOP == cmd) + { + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_SRG_DISABLE); + } + /*****************command to start frame sync generator********************/ + else if (Mcbsp_IOCTL_FSGR_START == cmd) + { + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_FSYNC_ENABLE); + } + else if (Mcbsp_IOCTL_FSGR_STOP == cmd) + { + Mcbsp_localResetCtrl(instHandle,Mcbsp_SpcrCtrl_FSYNC_DISABLE); + } + /******************command to configure the clock polarity*****************/ + else if (Mcbsp_IOCTL_SET_BCLK_POL == cmd) + { + if (NULL == arg) + { + return MCBSP_ERR_BADARGS; + } + + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + if (Mcbsp_ClkPol_FALLING_EDGE == (Mcbsp_ClkPol)(*(uint32_t *)arg)) + { + instHandle->hwInfo.regs->PCR &= (~CSL_MCBSP_PCR_CLKRP_MASK); + } + else + { + instHandle->hwInfo.regs->PCR |= CSL_MCBSP_PCR_CLKRP_MASK; + } + } + else + { + if (Mcbsp_ClkPol_FALLING_EDGE == (Mcbsp_ClkPol)(*(uint32_t *)arg)) + { + instHandle->hwInfo.regs->PCR |= CSL_MCBSP_PCR_CLKXP_MASK; + } + else + { + instHandle->hwInfo.regs->PCR &= (~CSL_MCBSP_PCR_CLKXP_MASK); + } + } + } + /*****************command to configure the frame sync polarity*************/ + else if (Mcbsp_IOCTL_SET_FRMSYNC_POL == cmd) + { + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + if (Mcbsp_FsPol_ACTIVE_LOW == (Mcbsp_FsPol)(*(uint32_t *)arg)) + { + instHandle->hwInfo.regs->PCR |= CSL_MCBSP_PCR_FSRP_MASK; + } + else + { + instHandle->hwInfo.regs->PCR &= (~CSL_MCBSP_PCR_FSRP_MASK); + } + } + else + { + if (Mcbsp_FsPol_ACTIVE_LOW == (Mcbsp_FsPol)(*(uint32_t *)arg)) + { + instHandle->hwInfo.regs->PCR |= CSL_MCBSP_PCR_FSXP_MASK; + } + else + { + instHandle->hwInfo.regs->PCR &= (~CSL_MCBSP_PCR_FSXP_MASK); + } + } + } + /****************** commmand to enable the sync error interrupt************/ + else if (Mcbsp_IOCTL_SYNCERR_INT_ENABLE == cmd) + { + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + instHandle->hwInfo.regs->SPCR |= CSL_MCBSP_SPCR_RINTM_MASK; + } + else + { + instHandle->hwInfo.regs->SPCR |= CSL_MCBSP_SPCR_XINTM_MASK; + } + } + /*****************command to enable disable the LOOP back mode*************/ + else if (Mcbsp_IOCTL_LOOPBACK == cmd) + { + if (NULL != arg) + { + if (Mcbsp_Loopback_DISABLE == (Mcbsp_Loopback)(*(uint32_t *)arg)) + { + instHandle->hwInfo.regs->SPCR |= (CSL_MCBSP_SPCR_DLB_MASK); + } + else + { + instHandle->hwInfo.regs->SPCR &= (~CSL_MCBSP_SPCR_DLB_MASK); + } + } + else + { + status = MCBSP_ERR_BADARGS; + } + } + /*********************command to set the bit clock mode *******************/ + else if (Mcbsp_IOCTL_SET_CLKMODE == cmd) + { + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + /* configure the clock mode (external or internal) */ + if (Mcbsp_TxRxClkMode_EXTERNAL == (Mcbsp_TxRxClkMode)(*(Uint8 *)arg)) + { + instHandle->hwInfo.regs->PCR &= (~CSL_MCBSP_PCR_CLKRM_MASK); + + if (TRUE == instHandle->rxFsgEnable) + { + /* frame sync generator is using the internal clock hence * + * need to enable the sample rate generator */ + instHandle->rxSrgEnable = TRUE; + } + else + { + /* dont require to enable the sample rate generator */ + instHandle->rxSrgEnable = FALSE; + } + } + else + { + /* external mode clock */ + instHandle->hwInfo.regs->PCR |= (CSL_MCBSP_PCR_CLKRM_MASK); + + /* sample rate generator is enabled */ + instHandle->rxSrgEnable = TRUE; + } + + } + else + { + /* configure the clock mode (external or internal) */ + if (Mcbsp_TxRxClkMode_EXTERNAL == (Mcbsp_TxRxClkMode)(*(Uint8 *)arg)) + { + instHandle->hwInfo.regs->PCR &= (~CSL_MCBSP_PCR_CLKXM_MASK); + + if (TRUE == instHandle->txFsgEnable) + { + /* frame sync generator is using the internal clock hence * + * need to enable the sample rate generator */ + instHandle->txSrgEnable = TRUE; + } + else + { + /* dont require to enable the sample rate generator */ + instHandle->txSrgEnable = FALSE; + } + } + else + { + /* external mode clock enabled */ + instHandle->hwInfo.regs->PCR |= (CSL_MCBSP_PCR_CLKXM_MASK); + + /* sample rate generator is enabled */ + instHandle->txSrgEnable = TRUE; + } + } + } + + /******************** Command to set the frame sycn mode*******************/ + else if (Mcbsp_IOCTL_SET_FRMSYNCMODE == cmd) + { + /* Reciever Bit Clock mode */ + if (MCBSP_MODE_INPUT == chanHandle->mode) + { + /* check if the frame sync generator is to be enabled for section */ + if (Mcbsp_FsClkMode_INTERNAL == (Mcbsp_FsClkMode)(*(Uint8 *)arg)) + { + /* set the frame sync generation mode */ + instHandle->hwInfo.regs->PCR |= (CSL_MCBSP_PCR_FSRM_MASK); + + /* frame sync generator needs to be enabled */ + instHandle->rxFsgEnable = TRUE; + } + else + { + /* reset the frame sync generation mode */ + instHandle->hwInfo.regs->PCR &= (~CSL_MCBSP_PCR_FSRM_MASK); + + /* frame sync generator needs to be disabled */ + instHandle->rxFsgEnable = FALSE; + } + } + else + { + /* check if the frame sync generator is to be enabled for section */ + if (Mcbsp_FsClkMode_EXTERNAL == (Mcbsp_FsClkMode)(*(Uint8 *)arg)) + { + /* External frame sync to be used */ + instHandle->hwInfo.regs->PCR &= (~CSL_MCBSP_PCR_FSXM_MASK); + + /* frame sync generator needs to be disabled */ + instHandle->txFsgEnable = FALSE; + } + else + { + /* could be internal or configured for DXR to XSR copy */ + if (Mcbsp_FsClkMode_INTERNAL == (Mcbsp_FsClkMode)(*(Uint8 *)arg)) + { + /* internal frame sync to be used */ + instHandle->hwInfo.regs->PCR |= (CSL_MCBSP_PCR_FSXM_MASK); + + /* set the FSGM bit in the SRGR register */ + instHandle->hwInfo.regs->SRGR |= (CSL_MCBSP_SRGR_FSGM_MASK); + + /* frame sync generator needs to be enabled */ + instHandle->txFsgEnable = TRUE; + } + else + { /* DXR to XSR copy generates frame sync */ + /* internal frame sync to be used */ + instHandle->hwInfo.regs->PCR |= (CSL_MCBSP_PCR_FSXM_MASK); + + /* reset the FSGM bit in the SRGR register */ + instHandle->hwInfo.regs->SRGR &= (~CSL_MCBSP_SRGR_FSGM_MASK); + + /* frame sync generator needs to be disabled */ + instHandle->txFsgEnable = FALSE; + } + } + } + } + /****************** command to configure the sample rate generator*********/ + else if (Mcbsp_IOCTL_CONFIG_SRGR == cmd) + { + if (NULL == arg) + { + return MCBSP_ERR_BADARGS; + } + + srgConfig = (Mcbsp_srgConfig *)(arg); + + memcpy(&instHandle->srgrConfig,srgConfig,sizeof(Mcbsp_srgConfig)); + + Mcbsp_localConfigureSrgr(instHandle,chanHandle); + } + /********************command to reset the channel**************************/ + else if ((Mcbsp_IOCTL_CHAN_RESET == cmd) || (MCBSP_CTRL_CHAN_RESET == cmd)) + { + Mcbsp_localAbortReset(chanHandle); + } + /********************command to reset the device***************************/ + else if ((Mcbsp_IOCTL_DEVICE_RESET == cmd) || (MCBSP_CTRL_DEVICE_RESET == cmd)) + { + Mcbsp_localAbortReset(&instHandle->rcvObj); + Mcbsp_localAbortReset(&instHandle->xmtObj); + } + /********************command to change the sample rate*********************/ + else if (Mcbsp_IOCTL_SAMPLE_RATE_CHANGE == cmd) + { + status = Mcbsp_localModifySampleRate(chanHandle,arg); + } + /********************command to cancel pending IO**************************/ + else if (Mcbsp_IOCTL_CANCEL_PENDING_IO == cmd) + { + Mcbsp_localAbortReset(chanHandle); + } +#ifdef MCBSP_LOOPJOB_ENABLE + /****************command to pause the Mcbsp channel************************/ + else if (Mcbsp_IOCTL_PAUSE == cmd) + { + if (FALSE == chanHandle->paused) + { + chanHandle->paused = TRUE; + } + else + { + status = MCBSP_ERR_BADMODE; + } + } + /***************** command to resume the Mcbsp channel*********************/ + else if (Mcbsp_IOCTL_RESUME == cmd) + { + if (TRUE == Mcbsp_osalQueueEmpty(chanHandle->ptrQFloatList)) + { + for (linkCnt = 0;linkCnt < Mcbsp_MAXLINKCNT;linkCnt++) + { + if (FALSE == Mcbsp_osalQueueEmpty(chanHandle->ptrQPendList)) + { + ioBuf = (Mcbsp_IOBuf *)Mcbsp_osalQueueGet(chanHandle->ptrQPendList); + + if (NULL == ioBuf) + { + return MCBSP_ERR_BADARGS; + } + + /* floating queue not full . Process this request. */ + Mcbsp_osalQueuePut(chanHandle->ptrQFloatList, (void*)ioBuf); + + chanHandle->currentDataSize = (uint16_t)ioBuf->size; + chanHandle->userDataBufferSize = (uint32_t)ioBuf->size; + + /* for DMA mode we will not use chanHandke->dataIOBuf * + * to hold current buffer - we use floatingqueue */ + chanHandle->dataIOBuf = NULL; + + if ((Mcbsp_MAXLINKCNT - 1u) == linkCnt) + { + /* Though we have to post to param set directly * + * from here,there will be differene between first * + * such buffer and second buffer. As we have control * + * here we are second buffer and first buffer has not * + * yet returned (or corresponding edma callback has * + * not been called.For second buffer, we will be * + * updating the second param set, which is currently * + * hosting loopjob parameter. Hence increment the * + * index to point second paramset and since we are * + * moving out loopjob from both param sets, the * + * oopjobUpdatedinParamset is reset */ + chanHandle->loopjobUpdatedinParamset =FALSE; + Mcbsp_localGetNextIndex( + &chanHandle->nextLinkParamSetToBeUpdated); + } + + /* Now update the data buffer to the link params. The * + * paramset to be updated is decidec by the * + * "nextLinkParamSetToBeUpdated" */ + if (MCBSP_STATUS_COMPLETED != + Mcbsp_localUpdtDtPktToLnkPrms(chanHandle,ioBuf)) + { + status = MCBSP_ERR_BADIO; + break; + } + + if (0 == linkCnt) + { + /* if at all this is the very first buffer, then * + * one param set has loop job loaded , self linked * + * and active with the main xfer channel param. * + * other param set is ready loaded (just now and * + * has link paramater set as the one having loopjob * + * (this is to ensure that if at all we are not * + * getting any more buffers loopjob be will taken * + * over). Now we have to link the floating / newly * + * loaded param set to xfer channel. */ + status = EDMA3_DRV_linkChannel( + chanHandle->edmaHandle, + chanHandle->xferChan, + chanHandle->pramTbl[chanHandle->nextLinkParamSetToBeUpdated]); + + if (MCBSP_STATUS_COMPLETED != status) + { + status = MCBSP_ERR_BADIO; + break; + } + else + { + EDMA3_DRV_enableTransfer( + chanHandle->edmaHandle, + chanHandle->xferChan, + EDMA3_DRV_TRIG_MODE_EVENT); + } + } + } + } + } + chanHandle->paused = FALSE; + } + /********************command to Mute the Mcbsp section*********************/ + else if (Mcbsp_IOCTL_MUTE_ON == cmd) + { + if (MCBSP_MODE_OUTPUT == chanHandle->mode) + { + if(TRUE == chanHandle->bMuteON) + { + status = MCBSP_ERR_BADMODE; + } + else + { + chanHandle->bMuteON = (Bool)TRUE; + } + } + else + { + status = MCBSP_ERR_BADMODE; + } + } + /********************command to UnMute the Mcbsp section*******************/ + else if (Mcbsp_IOCTL_MUTE_OFF == cmd) + { + /* Take out from the the Muted state */ + if (MCBSP_MODE_OUTPUT == chanHandle->mode) + { + /* Check if mute is not ON */ + if (FALSE == chanHandle->bMuteON) + { + status = MCBSP_ERR_BADARGS; + } + else + { + chanHandle->bMuteON =(Bool)FALSE; + } + } + else + { + status = MCBSP_ERR_NOTIMPL; + } + } + /********************command to Modify the loop job buffer*****************/ + else if (Mcbsp_IOCTL_MODIFY_LOOPJOB == cmd) + { + params = (Mcbsp_ChanParams *)arg; + if (NULL == params) + { + return MCBSP_ERR_BADARGS; + } + + if (NULL == params->userLoopJobBuffer) + { + if (MCBSP_MODE_OUTPUT == chanHandle->mode) + { + chanHandle->loopJobBuffer = &Mcbsp_loopSrcBuf[instHandle->instNum].scratchBuffer; + } + else + { + chanHandle->loopJobBuffer = &Mcbsp_loopDstBuf[instHandle->instNum].scratchBuffer; + } + chanHandle->userLoopJob = FALSE; + } + else + { + chanHandle->loopJobBuffer = params->userLoopJobBuffer; + + if (chanHandle->roundedWordWidth > params->userLoopJobLength) + { + chanHandle->loopJobLength = chanHandle->roundedWordWidth; + } + else + { + chanHandle->loopJobLength = params->userLoopJobLength; + chanHandle->userLoopJobLength = params->userLoopJobLength; + chanHandle->userLoopJob = TRUE; + } + } + } +#endif +#ifndef MCBSP_LOOPJOB_ENABLE + /*****************command to modify the Timeout count value****************/ + else if (Mcbsp_IOCTL_SET_TIMEOUT == cmd) + { + if (NULL == arg) + { + return MCBSP_ERR_BADARGS; + } + + /* modify the retry count value to be used */ + instHandle->retryCount = *(uint32_t *)arg; + } +#endif + else + { + status = MCBSP_ERR_NOTIMPL; + } + return (status); +} + +/*============================================================================*/ +/* END OF FILE */ +/*============================================================================*/ diff --git a/packages/ti/drv/mcbsp/src/src_files_common.mk b/packages/ti/drv/mcbsp/src/src_files_common.mk new file mode 100644 index 000000000..4c8eb62cb --- /dev/null +++ b/packages/ti/drv/mcbsp/src/src_files_common.mk @@ -0,0 +1,12 @@ + +SRCDIR = . src +INCDIR = . src +# Common source files across all platforms and cores +SRCS_COMMON += mcbsp_drv.c mcbsp_ioctl.c mcbsp_edma.c + +PACKAGE_SRCS_COMMON = makefile mcbsp_component.mk mcbsp_osal.h \ + docs/ReleaseNotes_MCBSP_LLD.pdf \ + mcbsp_drv.h include/mcbsp_pvt.h \ + mcbsp_types.h \ + build/makefile.mk src/src_files_common.mk + -- 2.39.2