From 867c9f8201d25746a22632faac4a362eb9bda762 Mon Sep 17 00:00:00 2001 From: Michael Dryden Date: Tue, 25 Mar 2014 15:36:08 -0400 Subject: [PATCH] Fixed DAC pin assignment. --- DSTAT-temp/DSTAT-temp.cproj | 576 ++++++++++++++++++------------------ DSTAT-temp/src/main.c | 40 ++- DSTAT-temp/src/max5443.c | 14 +- DSTAT1.atsuo | Bin 53248 -> 47616 bytes 4 files changed, 334 insertions(+), 296 deletions(-) diff --git a/DSTAT-temp/DSTAT-temp.cproj b/DSTAT-temp/DSTAT-temp.cproj index bd33899..f86064f 100644 --- a/DSTAT-temp/DSTAT-temp.cproj +++ b/DSTAT-temp/DSTAT-temp.cproj @@ -10,114 +10,114 @@ 3.4.1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + atxmega256a3u xmegaau @@ -131,11 +131,11 @@ Native true false - + exception_table 0 true true - + 0x20000000 2 @@ -147,94 +147,94 @@ True - True - True - True - True - True - False - - - BOARD=USER_BOARD - IOPORT_XMEGA_COMPAT - - - - - ../src - ../src/asf/common/applications/user_application/user_board - ../src/asf/common/boards - ../src/asf/common/boards/user_board - ../src/asf/common/utils - ../src/asf/xmega/utils - ../src/asf/xmega/utils/preprocessor - ../src/config - ../src/asf/xmega/drivers/cpu - ../src/asf/xmega/drivers/nvm - ../src/asf/xmega/drivers/pmic - ../src/asf/xmega/drivers/rtc - ../src/asf/xmega/drivers/sleep - ../src/asf/xmega/drivers/tc - ../src/asf/xmega/drivers/usart - ../src/asf/common/services/clock - ../src/asf/common/services/delay - ../src/asf/common/services/ioport - ../src/asf/common/services/sleepmgr - ../src/asf/common/services/spi - ../src/asf/common/services/usb - ../src/asf/common/services/usb/class/cdc - ../src/asf/common/services/usb/class/cdc/device - ../src/asf/common/services/usb/udc - ../src/asf/common/utils/stdio/stdio_usb - ../src/asf/xmega/drivers/usb - ../common/applications/user_application/user_board - ../src/ASF/common/services/hugemem - ../src/ASF/xmega/drivers/dma - - - Optimize for size (-Os) - -fdata-sections - True - -std=gnu99 -fno-strict-aliasing -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -mrelax - - - - -Wl,--relax - -mrelax -DBOARD=USER_BOARD - - - ../src - ../src/asf/common/applications/user_application/user_board - ../src/asf/common/boards - ../src/asf/common/boards/user_board - ../src/asf/common/utils - ../src/asf/xmega/utils - ../src/asf/xmega/utils/preprocessor - ../src/config - ../src/asf/xmega/drivers/cpu - ../src/asf/xmega/drivers/nvm - ../src/asf/xmega/drivers/pmic - ../src/asf/xmega/drivers/rtc - ../src/asf/xmega/drivers/sleep - ../src/asf/xmega/drivers/tc - ../src/asf/xmega/drivers/usart - ../src/asf/common/services/clock - ../src/asf/common/services/delay - ../src/asf/common/services/ioport - ../src/asf/common/services/sleepmgr - ../src/asf/common/services/spi - ../src/asf/common/services/usb - ../src/asf/common/services/usb/class/cdc - ../src/asf/common/services/usb/class/cdc/device - ../src/asf/common/services/usb/udc - ../src/asf/common/utils/stdio/stdio_usb - ../src/asf/xmega/drivers/usb - ../common/applications/user_application/user_board - ../src/ASF/common/services/hugemem - ../src/ASF/xmega/drivers/dma - - - + True + True + True + True + True + False + + + BOARD=USER_BOARD + IOPORT_XMEGA_COMPAT + + + + + ../src + ../src/asf/common/applications/user_application/user_board + ../src/asf/common/boards + ../src/asf/common/boards/user_board + ../src/asf/common/utils + ../src/asf/xmega/utils + ../src/asf/xmega/utils/preprocessor + ../src/config + ../src/asf/xmega/drivers/cpu + ../src/asf/xmega/drivers/nvm + ../src/asf/xmega/drivers/pmic + ../src/asf/xmega/drivers/rtc + ../src/asf/xmega/drivers/sleep + ../src/asf/xmega/drivers/tc + ../src/asf/xmega/drivers/usart + ../src/asf/common/services/clock + ../src/asf/common/services/delay + ../src/asf/common/services/ioport + ../src/asf/common/services/sleepmgr + ../src/asf/common/services/spi + ../src/asf/common/services/usb + ../src/asf/common/services/usb/class/cdc + ../src/asf/common/services/usb/class/cdc/device + ../src/asf/common/services/usb/udc + ../src/asf/common/utils/stdio/stdio_usb + ../src/asf/xmega/drivers/usb + ../common/applications/user_application/user_board + ../src/ASF/common/services/hugemem + ../src/ASF/xmega/drivers/dma + + + Optimize for size (-Os) + -fdata-sections + True + -std=gnu99 -fno-strict-aliasing -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -mrelax + + + + -Wl,--relax + -mrelax -DBOARD=USER_BOARD + + + ../src + ../src/asf/common/applications/user_application/user_board + ../src/asf/common/boards + ../src/asf/common/boards/user_board + ../src/asf/common/utils + ../src/asf/xmega/utils + ../src/asf/xmega/utils/preprocessor + ../src/config + ../src/asf/xmega/drivers/cpu + ../src/asf/xmega/drivers/nvm + ../src/asf/xmega/drivers/pmic + ../src/asf/xmega/drivers/rtc + ../src/asf/xmega/drivers/sleep + ../src/asf/xmega/drivers/tc + ../src/asf/xmega/drivers/usart + ../src/asf/common/services/clock + ../src/asf/common/services/delay + ../src/asf/common/services/ioport + ../src/asf/common/services/sleepmgr + ../src/asf/common/services/spi + ../src/asf/common/services/usb + ../src/asf/common/services/usb/class/cdc + ../src/asf/common/services/usb/class/cdc/device + ../src/asf/common/services/usb/udc + ../src/asf/common/utils/stdio/stdio_usb + ../src/asf/xmega/drivers/usb + ../common/applications/user_application/user_board + ../src/ASF/common/services/hugemem + ../src/ASF/xmega/drivers/dma + + + @@ -245,96 +245,96 @@ True - True - True - True - True - True - False - - - BOARD=USER_BOARD - IOPORT_XMEGA_COMPAT - - - - - ../src - ../src/asf/common/applications/user_application/user_board - ../src/asf/common/boards - ../src/asf/common/boards/user_board - ../src/asf/common/utils - ../src/asf/xmega/utils - ../src/asf/xmega/utils/preprocessor - ../src/config - ../src/asf/xmega/drivers/cpu - ../src/asf/xmega/drivers/nvm - ../src/asf/xmega/drivers/pmic - ../src/asf/xmega/drivers/rtc - ../src/asf/xmega/drivers/sleep - ../src/asf/xmega/drivers/tc - ../src/asf/xmega/drivers/usart - ../src/asf/common/services/clock - ../src/asf/common/services/delay - ../src/asf/common/services/ioport - ../src/asf/common/services/sleepmgr - ../src/asf/common/services/spi - ../src/asf/common/services/usb - ../src/asf/common/services/usb/class/cdc - ../src/asf/common/services/usb/class/cdc/device - ../src/asf/common/services/usb/udc - ../src/asf/common/utils/stdio/stdio_usb - ../src/asf/xmega/drivers/usb - ../common/applications/user_application/user_board - ../src/ASF/common/services/hugemem - ../src/ASF/xmega/drivers/dma - - - Optimize (-O1) - -fdata-sections - Maximum (-g3) - True - -std=gnu99 -fno-strict-aliasing -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -mrelax - - - - -Wl,--relax - -mrelax -DBOARD=USER_BOARD - - - ../src - ../src/asf/common/applications/user_application/user_board - ../src/asf/common/boards - ../src/asf/common/boards/user_board - ../src/asf/common/utils - ../src/asf/xmega/utils - ../src/asf/xmega/utils/preprocessor - ../src/config - ../src/asf/xmega/drivers/cpu - ../src/asf/xmega/drivers/nvm - ../src/asf/xmega/drivers/pmic - ../src/asf/xmega/drivers/rtc - ../src/asf/xmega/drivers/sleep - ../src/asf/xmega/drivers/tc - ../src/asf/xmega/drivers/usart - ../src/asf/common/services/clock - ../src/asf/common/services/delay - ../src/asf/common/services/ioport - ../src/asf/common/services/sleepmgr - ../src/asf/common/services/spi - ../src/asf/common/services/usb - ../src/asf/common/services/usb/class/cdc - ../src/asf/common/services/usb/class/cdc/device - ../src/asf/common/services/usb/udc - ../src/asf/common/utils/stdio/stdio_usb - ../src/asf/xmega/drivers/usb - ../common/applications/user_application/user_board - ../src/ASF/common/services/hugemem - ../src/ASF/xmega/drivers/dma - - - Default (-Wa,-g) - + True + True + True + True + True + False + + + BOARD=USER_BOARD + IOPORT_XMEGA_COMPAT + + + + + ../src + ../src/asf/common/applications/user_application/user_board + ../src/asf/common/boards + ../src/asf/common/boards/user_board + ../src/asf/common/utils + ../src/asf/xmega/utils + ../src/asf/xmega/utils/preprocessor + ../src/config + ../src/asf/xmega/drivers/cpu + ../src/asf/xmega/drivers/nvm + ../src/asf/xmega/drivers/pmic + ../src/asf/xmega/drivers/rtc + ../src/asf/xmega/drivers/sleep + ../src/asf/xmega/drivers/tc + ../src/asf/xmega/drivers/usart + ../src/asf/common/services/clock + ../src/asf/common/services/delay + ../src/asf/common/services/ioport + ../src/asf/common/services/sleepmgr + ../src/asf/common/services/spi + ../src/asf/common/services/usb + ../src/asf/common/services/usb/class/cdc + ../src/asf/common/services/usb/class/cdc/device + ../src/asf/common/services/usb/udc + ../src/asf/common/utils/stdio/stdio_usb + ../src/asf/xmega/drivers/usb + ../common/applications/user_application/user_board + ../src/ASF/common/services/hugemem + ../src/ASF/xmega/drivers/dma + + + Optimize (-O1) + -fdata-sections + Maximum (-g3) + True + -std=gnu99 -fno-strict-aliasing -Wstrict-prototypes -Wmissing-prototypes -Werror-implicit-function-declaration -Wpointer-arith -mrelax + + + + -Wl,--relax + -mrelax -DBOARD=USER_BOARD + + + ../src + ../src/asf/common/applications/user_application/user_board + ../src/asf/common/boards + ../src/asf/common/boards/user_board + ../src/asf/common/utils + ../src/asf/xmega/utils + ../src/asf/xmega/utils/preprocessor + ../src/config + ../src/asf/xmega/drivers/cpu + ../src/asf/xmega/drivers/nvm + ../src/asf/xmega/drivers/pmic + ../src/asf/xmega/drivers/rtc + ../src/asf/xmega/drivers/sleep + ../src/asf/xmega/drivers/tc + ../src/asf/xmega/drivers/usart + ../src/asf/common/services/clock + ../src/asf/common/services/delay + ../src/asf/common/services/ioport + ../src/asf/common/services/sleepmgr + ../src/asf/common/services/spi + ../src/asf/common/services/usb + ../src/asf/common/services/usb/class/cdc + ../src/asf/common/services/usb/class/cdc/device + ../src/asf/common/services/usb/udc + ../src/asf/common/utils/stdio/stdio_usb + ../src/asf/xmega/drivers/usb + ../common/applications/user_application/user_board + ../src/ASF/common/services/hugemem + ../src/ASF/xmega/drivers/dma + + + Default (-Wa,-g) + diff --git a/DSTAT-temp/src/main.c b/DSTAT-temp/src/main.c index 0a26752..7961205 100644 --- a/DSTAT-temp/src/main.c +++ b/DSTAT-temp/src/main.c @@ -30,6 +30,7 @@ int8_t command_handler(char command){ break; case 'L': //LSV - start, stop, slope scanf("%5i%5i%5i",&p1,&p2,&u1); + printf("%i,%i,%i",&p1,&p2,&u1); lsv_experiment(p1,p2,u1,2); break; case 'C': //CV - v1, v2, start, scans, slope @@ -41,7 +42,7 @@ int8_t command_handler(char command){ case 'R': //CA break; default: - printf("E"); + printf("Ee"); return 1; } @@ -90,8 +91,45 @@ int main(void){ if (getchar() == 'k') break; } + +// sine wave test +// #define DAC_PER_4 2 +// +// uint16_t i; +// uint16_t delta[DAC_PER_4]; +// +// for (i=0; i 0; i--) +// { +// max5443_set_voltage1(32768+delta[i]); +// //printf("%u \r\n",delta[i]); +// } +// for (i = 0; i < DAC_PER_4; i++) +// { +// max5443_set_voltage1(32768-delta[i]); +// //printf("%u \r\n",delta[i]); +// } +// +// for (i = DAC_PER_4-1; i > 0; i--) +// { +// max5443_set_voltage1(32768-delta[i]); +// //printf("%u \r\n",delta[i]); +// } +// } + while (1){ command_handler((char)getchar()); +// lsv_experiment(0,1000,100,2); } } \ No newline at end of file diff --git a/DSTAT-temp/src/max5443.c b/DSTAT-temp/src/max5443.c index b59609b..464a5b0 100644 --- a/DSTAT-temp/src/max5443.c +++ b/DSTAT-temp/src/max5443.c @@ -15,15 +15,15 @@ struct usart_spi_device spi_device_conf_c = { }; void max5443_init_pins(void){ - arch_ioport_set_port_dir(IOPORT_PORTF, PIN4_bm|PIN5_bm|PIN7_bm, IOPORT_DIR_OUTPUT); - arch_ioport_set_port_level(IOPORT_PORTF, PIN4_bm|PIN5_bm|PIN7_bm, PIN4_bm|PIN5_bm|PIN7_bm); + arch_ioport_set_port_dir(IOPORT_PORTC, PIN4_bm|PIN5_bm|PIN7_bm, IOPORT_DIR_OUTPUT); + arch_ioport_set_port_level(IOPORT_PORTC, PIN4_bm|PIN5_bm|PIN7_bm, PIN4_bm|PIN5_bm|PIN7_bm); } void max5443_init_module(void){ usart_spi_init(&USARTC1); usart_spi_setup_device(&USARTC1, &spi_device_conf_c, SPI_MODE_0, 24000000UL, 0); - dma_init(); +// dma_init(); } static void dma_init(void){ @@ -31,15 +31,15 @@ static void dma_init(void){ memset(&dmach_conf, 0, sizeof(dmach_conf)); dma_channel_set_burst_length(&dmach_conf, DMA_CH_BURSTLEN_1BYTE_gc); - dma_channel_set_transfer_count(&dmach_conf, 2); + dma_channel_set_transfer_count(&dmach_conf, 1); dma_channel_set_src_reload_mode(&dmach_conf,DMA_CH_SRCRELOAD_BURST_gc); dma_channel_set_dest_reload_mode(&dmach_conf,DMA_CH_DESTRELOAD_BURST_gc); - dma_channel_set_src_dir_mode(&dmach_conf, DMA_CH_SRCDIR_INC_gc); + dma_channel_set_src_dir_mode(&dmach_conf, DMA_CH_SRCDIR_FIXED_gc); dma_channel_set_dest_dir_mode(&dmach_conf, DMA_CH_DESTDIR_FIXED_gc); - dma_channel_set_source_address(&dmach_conf,(uint16_t)(uintptr_t)&TCC1_CNT); + dma_channel_set_source_address(&dmach_conf,(uint16_t)(uintptr_t)(&TCC1_CNT+0x01)); dma_channel_set_destination_address(&dmach_conf,(uint16_t)(uintptr_t)&USARTC1_DATA); dma_channel_set_trigger_source(&dmach_conf, DMA_CH_TRIGSRC_TCC0_OVF_gc); @@ -51,7 +51,7 @@ static void dma_init(void){ //dma_channel_set_interrupt_level(&dmach_conf, DMA_INT_LVL_LO); dma_channel_write_config(DMA_CHANNEL, &dmach_conf); - //dma_channel_enable(DMA_CHANNEL); + dma_channel_enable(DMA_CHANNEL); } void max5443_set_voltage1(uint16_t dacindex){ diff --git a/DSTAT1.atsuo b/DSTAT1.atsuo index 53ebcc89ab96a78c2ff62d1cb91d8009f03925cb..3292e95dc3ae3c2e236f7f76c65bbb4aac2520e6 100644 GIT binary patch delta 3413 zcmd5+bCSwKwzo z?z#7#bI-ZwoO`}6?%jO%IBzJ7FImJe%=3sMgc(r`34EF4!Nc#iLKs^k+g2MAScNQf z>A|)N@CY2D+MkT4Sj^xQRKRIrCa?kl+!d4)A>3au7u>M|@&-6`94eaJB*gZcz&9g9D-({R9q8h(ZK4`jNp%mmsL@Q~sXP)8W8* zFbAw8yI?q=ENt&s-P-s|zcr5@;j(w?^2cFV#u6tO*p`S4W+n6Mx!bOOTe<9b#S_0d zA$e!?hdlq`lW=YBL;i}LjZvN$=4{rCv7-m~4n)>2 z0&iBb&dNBLR>sOSG1bgkrkSxZjf@59cBT_SSDP5Bdhp67(cS2JVaLsFH-G2oIDVX} zhR~uvwl9xrr*MofYp&NwkfFJgq8(37;DU&$Zc57aq@=*rq-tR} zj-z~bx{@yn;rGm#sOY(&e+pVomhrKRc@r=#cj%@jA$d62wYBZK?Yj#ei zE=z4=wYuf$RbVj7Q6C=T(b&B$xV^8_#hG)%2dfg-UlIC_RMzZp2R! zdk|A~U@y}95cI~vTX~9vqeu)RMi3l=GQNZTF~lh1J-D3r@*G;PevkMAf^uBO{*Q>y z5nmwwf`Eh?|I8h%v-%#8-%M#2v)fh`%H5BECV~Lwt*%O78pn z2i!OL9|(ny57ct;h{;Tdb~5=2x5!YCd6e@4n*2U@=l`$nexy3`pCV0F1%sg|g1iKV z)CMq?N5d!2$HT-LF?=2vg~cA#!^2Vo7@}rFnmG)#Aa#{R!vHqrHSx#T!73o

h~U zjfKi=l}e>ns|#`pa@6ZT^_wP#iIb8Sy1NQg8dl3{j7pQ%n4?td3Ja9l!h%A4XieEU zIXPJxL+1K!HY-bOt*^HzZ91D)nZ;UJWu4Yir)t}auXRd3a(wCsA*^hhlv zzr~Vs4!gGl(CW?MU>al;czUVB>X(_St##MqxoBLI00$~ zgJH{n6i)Q(_tf#=Uca}`TTdX<69=Cj_z2QL>htmLk#MQi(Q0j~UfXPIv{biuwp$%d zAaTf`d$1flL$R=ApaS|1I^oKo8WTDYx(-YHv>1#BrEu%;Voq_WnjoQriLFxZ%3u&d z=~dkPBLM_O)!;=D_FNG3ZWY6>ZE-MIEQ7FvO1M5`fVLwM@Y!$-7+y|*HgzJb&}V>m zt$@scid{|M?MsI%jp1-+({8Bkk#cUko{)XqhSjH^@V%TPd_~o@VGA#ircy4#1wZSb z&85E{&j|3mH9itp5uF#u z|BaVRVduaP;Qj&hhM02?yLr&)m=Es_hH}NnMhPgQW1)OB8dN9baJ$?LL(O_{@3@QM z2!#?uJe2Md!N#s`$Ww+1t$0v5hGu|lhRjVp;8g{A_K2W&_Z1&Y_ebH}kN2qfq`+6+ z$MmQ=t~3q4*eH^!_TpVKCH0)71^9dUHG=fH#lDK<afHC1aQlCsd8LmM+%Gob zz^Z$Vi$vcfd5#)I#E3>0PQIm%mis>97EK=N=qDtMQXyXCcm+WljJ+#^i|U7DUEKlRxq#get)Z-VN3%{pZnKsN|iFj^cG{f_i zM>CblqOVw=9(+8DJPr8Af=b%)tGop%C!@q&vKcL7WK@iS_E;%m0@HApB9w`yyNH^R RYU1I4hZ4_10sP{)_8(7ejvoL3 delta 3554 zcmcgudr*|u6~A{MpUZ1uc?)D&5OI~)0xJR%vLYxFMNn*w0sf>~mDMmA zk~Hi*ZrXo<+YJ)Ty#`aAnG0L z@qSuQR!&MvfX2PY^um3E;N)>1rcZWMK;Ys>SZP>nm`S|?~Ihq{?T0fV5x`j zhKw}2yrQ^PVJrp<34C3Fxw?}TVW0UaeX)hHlVo@!V&=s1HlkW*DRbEYqB~XEMf5tjW7;q= zH(%!`mZq)H6g#H(BIXHU6wgERycgh}YlYPss$Kt{C)%45uz$Os?6i(^C0J)?$$J;< z<-Ab-G_Fu1@erCEq)hHbb7H%+g!q?2@mb;uJ?H8!ya>%n?Yvn2G|5Yg4o@qxw*;zo zok!HUK~W3n>#Rh1%QD|awv*K=$Bv}zmt=R8?6w;;e1X_T9#3o1+t1L*SwautDnZnD zKlSGb1B5}sdBO$4MS@cQXR|C(g1AP4VS-Hf8R0d;ZwaG>-{Hfo&KRL34&-kLg8q>D zyDEK8?Q!5q3(~dTCn}1Dv)y`Bc{zr2^EuB{(%Y2Rg{qbu)3h_YSv}nlTUjOU6bE^T zJ4Li^a_+bqh<>8?z(KKpXby!lzzK)dfuwvRjHxO3c|a;YS>B7DgGsRLh{0IC7} zS-U-Pn^;K7+TL7Omn~1M&~ev_37z2KJs7L5eTmlYLw|um4fK3|54@n=Rp=ZpbaD(| zEJs$3MN`RKMQ&{aRaa%>KG{+1mhjNu9}gNOaTFQKL!&j-NpP%p!`Tw^c;DuivS!vu zw<9e>cjc7-iEJA?JiB1`$qVN$dKFaV%+;UsdKDz4u zATeeOVl0?;{bVjAh=Xtc&#a+ZpY}7$r?< zgN_Xv820<|>*#21Mb^Sh3W>OIj^IRpC(iEo#6V{`?pg~;9z}8|=`|v2w>R;@#J@v) zI~?f_V-pi@Fy=`pWLT2Cl2l@d*-O!#gQDJCjP?0>2o-TF-G%S$GMJxt8W^(>Pg8Cx zQ^+GGlD%%AN`nUjW=vQ^;hiB4ggA+}X~P|Z?rM(bx0iZsCW(>Ii^?IGL`*lUW(1Iw z4tVo(=#B}~(wiL2pYx+!>BR_ihfqjoH}WDska~ zsAGS!Ar>92?RaCoLFPv$x&Ne{+3BjDN>RAF($^(C-_`Y|#2uu$R5`KZT}60HXOl)q zB5~|}u|S_gWS$rdx=s`m*O}U-QQw4{m2>3y0})y@jN0L>&sGCzz_G&(SY17LCYXzl zJ|TA>P2)b(HS~Y2G^*#XmY66Fk-l%SxZcM^kBw?Z$>@?;6!uA|7&?iz{y>!UorLAw zAJN_4O>~#+8c5UfB~yvGaEjFWm4g&WalTCjbpqz0Ocd8=!1jVs_BmFnLC;k?9H)Zt z#t;4R?q~=+4#ra4V{l_t0&Z;em*Zc_;4mJ_QH6;Zt2LqLS`p&v!eq;p*EnM3m3ZdT z3cOeAPXo`w_u8??9R=BTI!5CfS*m=-HH{SMbIGV>Q>Ko*FJ4h^H%Sf?M8ln?MYuYu zlaHTyo4a1m=SHC__0iBBu6~V#yPneF){oO6K1`-QPIO-*GF^&B`$0b(>MPZKEn{=i7vUPYw5I(1&dc%`A<|X9`|1M#@|*2pm0^tBT_GQ{oCqtHXJ`=MAvm6be3A_ zqvc@PuV(gMC}h5EoGBj=BBr&DN6fajd9j>?wI!L!nYPTw}32D`~qp z>Xd}a%0<-)Hrr;Ky(S~WmTFJkm;2a_QCc1n{3o%4+WtYk_}I>UtlL7}^y;)O_2OFa zLPy!d;M3wwQCg^bh-gu`xnB;h@1|_=o~bR~JzJ%6AMs2vXj)11;;|7;RhvnSqL?@} zru;ui|MWKgS5b-LSJo5nz#^gc<&=r!2>TLfV7iIBS$x|)qBxb?#EQ6JKlL(XEZ%*L r=s805k)ptcvS5>V(59PMkt0eMpchYM2tL1XSfTVYpXlFI$29&Q