From 7210c26629f508f69eb51ecd5a701e73f8e91b10 Mon Sep 17 00:00:00 2001 From: zhaohe <1013909206@qq.com> Date: Wed, 28 Jul 2021 18:52:56 +0800 Subject: [PATCH] =?UTF-8?q?v1.1=E5=BC=80=E6=9C=BA=E7=82=B9=E4=BA=AE?= =?UTF-8?q?=E6=8C=87=E7=A4=BA=E7=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .mxproject | 28 ++++----- Core/Inc/main.h | 1 + Core/Src/gpio.c | 20 +++++-- Core/Src/main.c | 2 +- FilterBox.ioc | 41 ++++++++----- MDK-ARM/FilterBox.uvguix.zel | 107 +++++++++++++--------------------- MDK-ARM/FilterBox.uvprojx | 2 +- MDK-ARM/doc/timingctrller20191220.pdf | Bin 0 -> 40069 bytes MDK-ARM/startup_stm32f103xb.lst | 10 ++-- README.md | 15 ++++- src/main_app.c | 9 ++- 11 files changed, 125 insertions(+), 110 deletions(-) create mode 100644 MDK-ARM/doc/timingctrller20191220.pdf diff --git a/.mxproject b/.mxproject index 51c8d38..3586575 100644 --- a/.mxproject +++ b/.mxproject @@ -9,23 +9,23 @@ CDefines=USE_HAL_DRIVER;STM32F103xB;USE_HAL_DRIVER;USE_HAL_DRIVER; [PreviousGenFiles] AdvancedFolderStructure=true HeaderFileListSize=6 -HeaderFiles#0=E:/stm32_keil_workstation/FilterBox/Core/Inc/gpio.h -HeaderFiles#1=E:/stm32_keil_workstation/FilterBox/Core/Inc/iwdg.h -HeaderFiles#2=E:/stm32_keil_workstation/FilterBox/Core/Inc/usart.h -HeaderFiles#3=E:/stm32_keil_workstation/FilterBox/Core/Inc/stm32f1xx_it.h -HeaderFiles#4=E:/stm32_keil_workstation/FilterBox/Core/Inc/stm32f1xx_hal_conf.h -HeaderFiles#5=E:/stm32_keil_workstation/FilterBox/Core/Inc/main.h +HeaderFiles#0=C:/Users/zel/Desktop/filterBox/Core/Inc/gpio.h +HeaderFiles#1=C:/Users/zel/Desktop/filterBox/Core/Inc/iwdg.h +HeaderFiles#2=C:/Users/zel/Desktop/filterBox/Core/Inc/usart.h +HeaderFiles#3=C:/Users/zel/Desktop/filterBox/Core/Inc/stm32f1xx_it.h +HeaderFiles#4=C:/Users/zel/Desktop/filterBox/Core/Inc/stm32f1xx_hal_conf.h +HeaderFiles#5=C:/Users/zel/Desktop/filterBox/Core/Inc/main.h HeaderFolderListSize=1 -HeaderPath#0=E:/stm32_keil_workstation/FilterBox/Core/Inc +HeaderPath#0=C:/Users/zel/Desktop/filterBox/Core/Inc HeaderFiles=; SourceFileListSize=6 -SourceFiles#0=E:/stm32_keil_workstation/FilterBox/Core/Src/gpio.c -SourceFiles#1=E:/stm32_keil_workstation/FilterBox/Core/Src/iwdg.c -SourceFiles#2=E:/stm32_keil_workstation/FilterBox/Core/Src/usart.c -SourceFiles#3=E:/stm32_keil_workstation/FilterBox/Core/Src/stm32f1xx_it.c -SourceFiles#4=E:/stm32_keil_workstation/FilterBox/Core/Src/stm32f1xx_hal_msp.c -SourceFiles#5=E:/stm32_keil_workstation/FilterBox/Core/Src/main.c +SourceFiles#0=C:/Users/zel/Desktop/filterBox/Core/Src/gpio.c +SourceFiles#1=C:/Users/zel/Desktop/filterBox/Core/Src/iwdg.c +SourceFiles#2=C:/Users/zel/Desktop/filterBox/Core/Src/usart.c +SourceFiles#3=C:/Users/zel/Desktop/filterBox/Core/Src/stm32f1xx_it.c +SourceFiles#4=C:/Users/zel/Desktop/filterBox/Core/Src/stm32f1xx_hal_msp.c +SourceFiles#5=C:/Users/zel/Desktop/filterBox/Core/Src/main.c SourceFolderListSize=1 -SourcePath#0=E:/stm32_keil_workstation/FilterBox/Core/Src +SourcePath#0=C:/Users/zel/Desktop/filterBox/Core/Src SourceFiles=; diff --git a/Core/Inc/main.h b/Core/Inc/main.h index 13d1cee..1fbeeee 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -10,6 +10,7 @@ *

© Copyright (c) 2021 STMicroelectronics. * All rights reserved.

* + * This software component is licensed by ST under BSD 3-Clause license, * the "License"; You may not use this file except in compliance with the * License. You may obtain a copy of the License at: diff --git a/Core/Src/gpio.c b/Core/Src/gpio.c index 7549652..2e946a9 100644 --- a/Core/Src/gpio.c +++ b/Core/Src/gpio.c @@ -51,6 +51,9 @@ void MX_GPIO_Init(void) __HAL_RCC_GPIOB_CLK_ENABLE(); /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9, GPIO_PIN_RESET); /*Configure GPIO pins : PC13 PC14 PC15 */ @@ -58,15 +61,20 @@ void MX_GPIO_Init(void) GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - /*Configure GPIO pins : PA0 PA1 PA2 PA3 - PA5 PA6 PA7 PA8 - PA11 PA12 PA15 */ - GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3 - |GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8 - |GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_15; + /*Configure GPIO pins : PA0 PA5 PA6 PA7 + PA8 PA11 PA12 PA15 */ + GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7 + |GPIO_PIN_8|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_15; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + /*Configure GPIO pins : PA1 PA2 PA3 */ + GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + /*Configure GPIO pin : PA4 */ GPIO_InitStruct.Pin = GPIO_PIN_4; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; diff --git a/Core/Src/main.c b/Core/Src/main.c index 1857408..5611c7d 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -89,7 +89,7 @@ int main(void) /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_USART1_UART_Init(); - // MX_IWDG_Init(); + //MX_IWDG_Init(); /* USER CODE BEGIN 2 */ extern int app_main(void); app_main(); diff --git a/FilterBox.ioc b/FilterBox.ioc index 1fcd049..47bb3c0 100644 --- a/FilterBox.ioc +++ b/FilterBox.ioc @@ -13,18 +13,21 @@ Mcu.Name=STM32F103C(8-B)Tx Mcu.Package=LQFP48 Mcu.Pin0=PD0-OSC_IN Mcu.Pin1=PD1-OSC_OUT -Mcu.Pin10=PB9 -Mcu.Pin11=VP_IWDG_VS_IWDG -Mcu.Pin12=VP_SYS_VS_Systick -Mcu.Pin2=PA4 -Mcu.Pin3=PA9 -Mcu.Pin4=PA10 -Mcu.Pin5=PA13 -Mcu.Pin6=PA14 -Mcu.Pin7=PB6 -Mcu.Pin8=PB7 -Mcu.Pin9=PB8 -Mcu.PinsNb=13 +Mcu.Pin10=PB6 +Mcu.Pin11=PB7 +Mcu.Pin12=PB8 +Mcu.Pin13=PB9 +Mcu.Pin14=VP_IWDG_VS_IWDG +Mcu.Pin15=VP_SYS_VS_Systick +Mcu.Pin2=PA1 +Mcu.Pin3=PA2 +Mcu.Pin4=PA3 +Mcu.Pin5=PA4 +Mcu.Pin6=PA9 +Mcu.Pin7=PA10 +Mcu.Pin8=PA13 +Mcu.Pin9=PA14 +Mcu.PinsNb=16 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F103C8Tx @@ -42,12 +45,24 @@ NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +PA1.GPIOParameters=GPIO_PuPd +PA1.GPIO_PuPd=GPIO_PULLUP +PA1.Locked=true +PA1.Signal=GPIO_Output PA10.Mode=Asynchronous PA10.Signal=USART1_RX PA13.Mode=Serial_Wire PA13.Signal=SYS_JTMS-SWDIO PA14.Mode=Serial_Wire PA14.Signal=SYS_JTCK-SWCLK +PA2.GPIOParameters=GPIO_PuPd +PA2.GPIO_PuPd=GPIO_PULLUP +PA2.Locked=true +PA2.Signal=GPIO_Output +PA3.GPIOParameters=GPIO_PuPd +PA3.GPIO_PuPd=GPIO_PULLUP +PA3.Locked=true +PA3.Signal=GPIO_Output PA4.Locked=true PA4.Signal=GPIO_Input PA9.Mode=Asynchronous @@ -79,7 +94,7 @@ ProjectManager.FreePins=true ProjectManager.HalAssertFull=true ProjectManager.HeapSize=0x200 ProjectManager.KeepUserCode=true -ProjectManager.LastFirmware=true +ProjectManager.LastFirmware=false ProjectManager.LibraryCopy=0 ProjectManager.MainLocation=Core/Src ProjectManager.NoMain=false diff --git a/MDK-ARM/FilterBox.uvguix.zel b/MDK-ARM/FilterBox.uvguix.zel index c85892d..3a7c98f 100644 --- a/MDK-ARM/FilterBox.uvguix.zel +++ b/MDK-ARM/FilterBox.uvguix.zel @@ -16,12 +16,12 @@ 346 Code Coverage - 850 656 + 850 160 204 Performance Analyzer - 1010 151 151 194 + 1010 @@ -42,13 +42,13 @@ 1937 Watch 2 - 133 249 133 + 133 133 133 1935 Call Stack + Locals - 219 133 133 + 133 133 133 2506 @@ -72,28 +72,28 @@ 44 - 2 - 3 + 0 + 1 - -32000 - -32000 + -1 + -1 -1 -1 - 98 - 117 - 2049 - 1142 + 18 + 207 + 1642 + 911 0 - 1275 - 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000B000000040000000100000040453A5C73746D33325F6B65696C5F776F726B73746174696F6E5C46696C746572426F785C436F72655C5372635C73746D3332663178785F68616C5F6D73702E63000000001373746D3332663178785F68616C5F6D73702E6300000000F6FA7D00FFFFFFFF32453A5C73746D33325F6B65696C5F776F726B73746174696F6E5C46696C746572426F785C7372635C6D61696E5F6170702E63000000000A6D61696E5F6170702E6300000000EAD6A300FFFFFFFF4A453A5C73746D33325F6B65696C5F776F726B73746174696F6E5C46696C746572426F785C6465705C7A7773645F636F6D706F6E656E745C71756575655C7A6C6F6F705F71756575652E68000000000D7A6C6F6F705F71756575652E6800000000B3A6BE00FFFFFFFF41453A5C73746D33325F6B65696C5F776F726B73746174696F6E5C46696C746572426F785C4D444B2D41524D5C737461727475705F73746D33326631303378622E730000000015737461727475705F73746D33326631303378622E7300000000A5C2D700FFFFFFFF33453A5C73746D33325F6B65696C5F776F726B73746174696F6E5C46696C746572426F785C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000D9ADC200FFFFFFFF33453A5C73746D33325F6B65696C5F776F726B73746174696F6E5C46696C746572426F785C436F72655C496E635C6D61696E2E6800000000066D61696E2E6800000000F7B88600FFFFFFFF3B453A5C73746D33325F6B65696C5F776F726B73746174696F6E5C46696C746572426F785C436F72655C5372635C73746D3332663178785F69742E63000000000E73746D3332663178785F69742E63000000009CC1B600FFFFFFFF50453A5C73746D33325F6B65696C5F776F726B73746174696F6E5C46696C746572426F785C6465705C73746D33325F636F6D706F6E656E745F76325C666C6173685C666C6173685F6F7065726174652E63000000000F666C6173685F6F7065726174652E6300000000BCA8E100FFFFFFFF59453A5C73746D33325F6B65696C5F776F726B73746174696F6E5C46696C746572426F785C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F6770696F2E63000000001473746D3332663178785F68616C5F6770696F2E6300000000F0A0A100FFFFFFFF4A453A5C73746D33325F6B65696C5F776F726B73746174696F6E5C46696C746572426F785C6465705C7A7773645F636F6D706F6E656E745C71756575655C7A6C6F6F705F71756575652E63000000000D7A6C6F6F705F71756575652E6300000000BECEA100FFFFFFFF5A453A5C73746D33325F6B65696C5F776F726B73746174696F6E5C46696C746572426F785C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F666C6173682E63000000001573746D3332663178785F68616C5F666C6173682E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000940100006600000080070000FC020000 + 912 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000800000001000000010000003B433A5C55736572735C7A656C5C4465736B746F705C66696C746572426F785C436F72655C5372635C73746D3332663178785F68616C5F6D73702E63000000001373746D3332663178785F68616C5F6D73702E6300000000C5D4F200FFFFFFFF2D433A5C55736572735C7A656C5C4465736B746F705C66696C746572426F785C7372635C6D61696E5F6170702E63000000000A6D61696E5F6170702E6300000000D9ADC200FFFFFFFF3C433A5C55736572735C7A656C5C4465736B746F705C66696C746572426F785C4D444B2D41524D5C737461727475705F73746D33326631303378622E730000000015737461727475705F73746D33326631303378622E7300000000F7B88600FFFFFFFF2E433A5C55736572735C7A656C5C4465736B746F705C66696C746572426F785C436F72655C5372635C6D61696E2E6300000000066D61696E2E63000000009CC1B600FFFFFFFF2E433A5C55736572735C7A656C5C4465736B746F705C66696C746572426F785C436F72655C496E635C6D61696E2E6800000000066D61696E2E6800000000BCA8E100FFFFFFFF36433A5C55736572735C7A656C5C4465736B746F705C66696C746572426F785C436F72655C5372635C73746D3332663178785F69742E63000000000E73746D3332663178785F69742E6300000000F0A0A100FFFFFFFF54433A5C55736572735C7A656C5C4465736B746F705C66696C746572426F785C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F6770696F2E63000000001473746D3332663178785F68616C5F6770696F2E6300000000BECEA100FFFFFFFF55433A5C55736572735C7A656C5C4465736B746F705C66696C746572426F785C447269766572735C53544D3332463178785F48414C5F4472697665725C5372635C73746D3332663178785F68616C5F666C6173682E63000000001573746D3332663178785F68616C5F666C6173682E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000006B020000800000006206000073020000 @@ -116,7 +116,7 @@ 16 - 940100006600000090050000F4000000 + 6B02000080000000670600000E010000 @@ -132,7 +132,7 @@ 0 16 - 03000000660000008D010000CC020000 + 03000000660000008D01000029020000 16 @@ -152,7 +152,7 @@ 0 16 - 03000000660000008D010000CC020000 + 03000000660000008D01000029020000 16 @@ -432,7 +432,7 @@ 0 16 - 03000000660000008D010000CC020000 + 03000000660000008D01000029020000 16 @@ -452,7 +452,7 @@ 0 16 - 03000000660000008D010000CC020000 + 03000000660000008D01000029020000 16 @@ -472,7 +472,7 @@ 0 16 - 00000000FD02000080070000E6030000 + 000000005A0200008B05000043030000 16 @@ -512,7 +512,7 @@ 0 16 - 03000000000300007D070000CD030000 + 030000005D020000880500002A030000 16 @@ -1112,7 +1112,7 @@ 0 16 - 03000000660000008D010000CC020000 + 03000000660000008D01000029020000 16 @@ -1132,7 +1132,7 @@ 0 16 - 03000000000300007D070000CD030000 + 030000005D020000880500002A030000 16 @@ -1152,7 +1152,7 @@ 0 16 - 03000000000300007D070000CD030000 + 030000005D020000880500002A030000 16 @@ -1232,7 +1232,7 @@ 0 16 - 00000000E603000080070000F9030000 + 00000000430300008B05000056030000 16 @@ -1281,14 +1281,14 @@ 2619 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF94010000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000940100006600000090050000F4000000940100004F00000090050000DD0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFFC0300004F0000000004000023020000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C0000018000400000000000000004000066000000900500003A020000000400004F00000090050000230200000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF900100004F00000094010000E5020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000000006600000090010000FC020000000000004F00000090010000E50200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF000000000F020000900500001302000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000002A02000090050000CC020000000000001302000090050000B502000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000013020000CC020000B502000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000E502000080070000E902000001000000010000100400000001000000E3FCFFFF6F000000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000001000000000000000003000080070000FD03000000000000E902000080070000E60300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF94010000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E6500200000000000006B02000080000000670600000E010000940100004F00000090050000DD0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFFC0300004F0000000004000023020000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000001800040000000000000D7040000800000006706000054020000000400004F00000090050000230200000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF900100004F0000009401000042020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000D7000000800000006702000073020000000000004F00000090010000420200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF000000000F020000900500001302000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000D70000004402000067060000E6020000000000001302000090050000B502000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000013020000CC020000B502000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000420200008B0500004602000001000000010000100400000001000000E3FCFFFF6F000000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000001000000D700000077020000620600007403000000000000460200008B050000430300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File - 2381 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000018696E697469616C5F706F736974696F6E5F70726F636573739600000000000000130018696E697469616C5F706F736974696F6E5F70726F636573730C52533438355F52585F4255461252533438355F526563656976655F4461746108686E645F696E6974176170705F73656E645F6D73675F746F5F6170707461736B0F6D6573685F737461636B5F696E69740A70726F647563745F696412676170207374617465206F757464617465640B6472697665725F696E697403626173156D6573685F696E6E65725F6D73675F68616E646C650C6C70735F6D6F64655F73657403636C6B0A6C6F675F6469726563740D55415254305F454E41424C4544124E5246585F55415254305F454E41424C454406554152544531124E5246585F55415254455F454E41424C4544114E5246585F554152545F454E41424C454400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000 + 2348 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000004646F776E9600000000000000130004646F776E18696E697469616C5F706F736974696F6E5F70726F636573730C52533438355F52585F4255461252533438355F526563656976655F4461746108686E645F696E6974176170705F73656E645F6D73675F746F5F6170707461736B0F6D6573685F737461636B5F696E69740A70726F647563745F696412676170207374617465206F757464617465640B6472697665725F696E697403626173156D6573685F696E6E65725F6D73675F68616E646C650C6C70735F6D6F64655F73657403636C6B0A6C6F675F6469726563740D55415254305F454E41424C4544124E5246585F55415254305F454E41424C454406554152544531124E5246585F55415254455F454E41424C454400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000 1423 @@ -2585,7 +2585,7 @@ 0 100 - 4 + 1 ../Core/Src/stm32f1xx_hal_msp.c 0 @@ -2597,18 +2597,9 @@ ..\src\main_app.c - 0 - 236 - 266 - 1 - - 0 - - - ..\dep\zwsd_component\queue\zloop_queue.h - 0 - 3 - 13 + 1 + 264 + 295 1 0 @@ -2616,7 +2607,7 @@ startup_stm32f103xb.s 0 - 118 + 120 133 1 @@ -2625,7 +2616,7 @@ ../Core/Src/main.c 0 - 68 + 70 76 1 @@ -2633,9 +2624,9 @@ ../Core/Inc/main.h - 3 - 3 - 12 + 2 + 5 + 13 1 0 @@ -2643,43 +2634,25 @@ ../Core/Src/stm32f1xx_it.c 0 - 79 + 81 88 1 0 - ..\dep\stm32_component_v2\flash\flash_operate.c - 0 - 1 - 48 - 1 - - 0 - - ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c 0 - 423 + 425 432 1 0 - ..\dep\zwsd_component\queue\zloop_queue.c - 0 - 250 - 289 - 1 - - 0 - - ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c 0 - 676 + 678 689 1 diff --git a/MDK-ARM/FilterBox.uvprojx b/MDK-ARM/FilterBox.uvprojx index 2257957..20bdea8 100644 --- a/MDK-ARM/FilterBox.uvprojx +++ b/MDK-ARM/FilterBox.uvprojx @@ -365,7 +365,7 @@ USE_HAL_DRIVER,STM32F103xB - ../Core/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include;..\dep + ../Core/Inc; ../Drivers/STM32F1xx_HAL_Driver/Inc; ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy; ../Drivers/CMSIS/Device/ST/STM32F1xx/Include; ../Drivers/CMSIS/Include; ..\dep diff --git a/MDK-ARM/doc/timingctrller20191220.pdf b/MDK-ARM/doc/timingctrller20191220.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d51bce310f3535569fe7fc98509563ce39eb9bb5 GIT binary patch literal 40069 zcmZsC1yCii*5=?oxHAJ>+~MNx?hb>)#ogWA-Felex9Ijj557 zgO!!BgQK~%os}_=k%^ND2xO#!XApFDGP89cqI7dKb2t0?7IrW;aQaVx9mqt?!07AM zok+pKmdMrBmEOeM#@Nom+{TIC$mT2QS1`!g$oT(F%S_J-B+{l-H@5-Vx;hfcsSq(S z(las=xv{Yj37dThaWwvlR{l>_%uURVLE2Q>RR5=Fb6Xn`1E;TQi*NxMflQ2SjBHGd zKu$&u8b%HZMn(!Mcs@RO<1fKqO0xW4%8Hp=IT<@Jh*^DQ7BM!m1sTIL$Qaw0I++mx zzeKQnWpi};(#;wPULyRwMXSbm*q;2!$7c}iAh_ycW$JZ|HO<_wGJ$dhi%LB{=~c2e zhN=VV=V(>r!mi-wV~nR*^>}w&0xu3M)$&Gx4rZ>aR~w69mp zdmH`v?D%bcb*j?St8I__$Khcv@8?T+N~*Nnbd5Z3^Y{ve@9W+6@nz2E@V}q%O^0F$ zV3YrF=-ZGY8!#JIu-4uNC~Ng2hfoo1>FR^k3%zog`m{WX-%qA|45{{|h0>kig5}T{ zCK*pA^kl%d5<0*6x_KK08Z8^?I3MgXe>|@Gdc+Xx82&EG$T9EIM*De^Dxd51e5cMI zF^y~O^*mm374_+!9d-D5vwkan&(G`oTv0;k)7F6ST@!i2Mz+aElP%@@Iw8H=`?V6Q zkiw*nz}6E=E^fCAI)KF{X3MTHn{wfPme4V&JS}%@N}kqXToz!gORe6S#)-Vul?cA__qC@n9Pr7bc4yiiB)*Sg+2)=I8iO1=>N`kWEcIswdSUE8icn^ zVv^lBNc0@25RkS-eqL+r7xJVTPHspF$tf&NuV7R!QA&|c*rDpFVS&H0k`lBF!FXd%0f>}w2g@(cqK292tS%&=OnYF-FtN2Obd7#qJpArUGY!T z{@pRP$N&E0x&{07;TW5LNn_v#d@y<$UKr#-m!P{N6O*`?Z}`P$ccx(Sl-&E%mC2Nq zoVp`u|H)#fU7?S+15ex5f%WF~Wg#t~b(l)^4uhjoU8cS!BwxnhB6t>B93Iy*VkA8B z&p5gX6cLpr*jWY|L~~dGB=N0LmvI$hI%AnAG?7H+Xu=FiRrucc+~rdr8V7#h5BjtE zAp$9A+a9)RBH_}8=d&-dNK!^7Ck&gYto>}}Dm&pS>mv*ldn z%LME^IPgz6G2dR{8vmZZ(!%L-)R3w{CP|Q9MgY`miYQfR60&>Rno1>Oj0phT7%nt3 zq+3x6UMCnoWF(@AOiDgJn@o%}!u2!?w7;TEgzlf8P1eorG8vH#ufWzV=S;(#2@_VD z%$ssFz+iZl4yZA5FLKLwdqW||xtHq70bFN$(U$YFzvuu8p4w+ONBUnC*f{6bU=eEr zjN{2bIFl#iAn>U3`G$Rrq1_lzTkUn=&nwEZS$?b)yN%MJin zV9fHxS*Tr*f(^*I>VfmYq z&)gqRCMoQEp6cEbAr3s6qY+C}DoEh2R7AW?<&!8ho&-_Zu&k){1GC%)dAp7A{Ke(#MFM zir#5Sz&-{R7sd-5yfzGLzD{&m8pGQ3A;ItrLzc;-La}NrrJmABW7<)b0?NaK5_L*% z4mJxsHNd|anijhz#G8{2ib}HBlQqpwi8>fqR>(DPLw}74`>iFdQx}g-GtOYINiJ!u zHtgFzh+DTpx6C7OFA5wru@!6nAv;1DP!Ffe={{V0ik3H6)cHL&cg@Icusto!N36Sa zeV-iz<>=y7BSM8qL{cDCiP^4@KI6_WF}-k;a-?H4;Tk|Utt5@6ejZeG#xqXP0S&`G zacy~6T`Zs#!s=HC{av&)5%sGUvOe>bLVKg<*S6jJYgSaAMQ60#Jh;W=X$vSp^yE;T zJfkknOP#uzQ4VK*{akQfFpIS`d4vTnqV@$<3#^eY(>J9!Eu-F;1#}EYA&X$+#u5rA zBhr0wZa+A7{6&gyu97Qi%ec~`H}X}a=9hjm;`f$uvMI>c21;cw!%mFWX_h_j|9-Q; z30PUWGKjM)9`36(!l?LWKP^4f-;H-+PfDsiKq7!G{oZA85~*6O;MGSKBm@lT@NDn& zjLtfPYHlS_o|7pK=EbFyMo<6s0J6v&ogX|zm5XAWnKg>{QM?*q)o&CziC2VfgP+$; zZ^cZ*Da<`E9nzT8M_0=mEb;84vDT>z`{Tw|XRtYCRqK0gmC|Vhfz4az|FltOemYrxU#D$1bC>mclIS&urXe+LlemPI6 z%1R^+!>q%+U?;YLQHxkPFP!3sc(H)D+)&Y-GeBv}Yd|&(gR*X^!;Ku_2~vwWjaUJs zc?^$R4jC)I^pq%}r)h-C-s&XP3^yDi2jmfBQp1fH$AFL5`2*#43@Hk5ZPsob*OD@= zFz#$3tC=9T@99hu^@kOx9vp#eX`pz1e)#J^;MfD0PnNW-9p=DF&`)6OtbIvOP((cS^}_A*i3 z-Jyd3*dDm2ST~we-o*H?~RNk0oy2(&6i+F&QlXI=!?{= zGOKZN0%MS;Vdt+;>5_6e(6##X!>0QM)#1n_(IY71d-6cLNv<`o(AT0X@hxH52+24& z3Ho(WyX?MPp__OMSE^}bzHcXYLo&!AUOzc}+AQ1wiw0rdIpe1VT%+7Fihp)`l}dw?CU|mDxreY`KJyu=lX=V*KNelzgB7; zgwyXRJMYvh|Mup>nOPmz+zP2IVH>m7bcoqo6J2ib$C}AcdlriC zzgLef9wOZ9rE+>5?EC5NEghj?DA}3SbY|L8u8T4xkUUPJBo7!}iIeHfBL%n-O&<3OX`gk`*f$TP{4RMZf@kuUh z7}%2+lvzzf05;g80wK2B)4}W8qxJrPujzwM(>^D6w>^Mz@elSBzoK|#Z4k8s;!Uil z_TRYN7BV>s&3NYpsQbBzfAIEjb998E`V^MIeA z%{}dv-~CX4PMX86A^hW(ee=zSCrpp`cCzR5PLs-wYF}4lwVwHCn+aBo}#=m(skW zwx##8)aO?E+Rb8DzxB$Ob9&=@%_p_G%;A?a({$HIvH5 zw?psqK?_bQy!INAf9KBcBJ64Xt#^1dY5Unvk`_cD-}k&cWch4zo8sGo{yglv6!yk{ zLHfDB1@&P<@>%mLZnuc%XJ()-^CN-m^D~R=GXdxSd-WI@ z2Em{kZ$xm|7Gc^DeiX%ddyf(8{o(!E{$)>Z3Q735Nu5T3W&E={&IVD_7dPcmj!$?D z12d~k8mMRKkrpWPIdJlQu7}*0^xf3-FSn!-aEK58}muOwXpooU+?@!0+lxJ&mL6={WCD-m(-dJX{*R=A<3jj zV(-H}j9NUp1;ySa`q=tj@U788d=M6APrRg9Gy!e3!Bw6mR;x^X_T?>NQcV#j z)O{2a>NJm72(OX$n0E}Wc7#J+t)7%fHx)g$jJ0%GS{4qlqDY|KpMmDao3$02QbROU zpubC1h%MjN2AkqGyxZvmd#U}g`44YErcywf9n!z<>LKI8#({TXsn45&TWtrgb`|l? zpM=O6RSs!lTM1utLZc?u=GqfMy%I%AO2p{I)SYSy0ov7otwljcpkwDcMVxkD$)aOF z8cBjg+QO07nipI*``N!3aU0AzJe>)NlX(SFiHf`PTh~Pr2Y>pI=F9oUr%nSI528r$zRJ{J)Z^vLA|UMfUj$Tv3+?iAxeGQcSOx z>%QHwKROl4@SVjOCVEGnY&?R03E=#GqTlFhOH`QEx6~3^8hzC_dizFvmg(Sf&1QJo z@VaF1YxkCx+r=P)E&zFrY|TqbC-C&Lr!`SNY3rnWhB{TP&EG{k4oo>;C4BV*_2ey} z3AXBQbc>jJv{$9bHal1Gn99jv*T^|c53Li7%M_={=1OKyMl;_VAv-lc=~70P?LTj* z0g-3%YIQu-16pj=#V#^q(XQn2f2!1fs>dD|39jcbDlV)EpZ4;8cJ&;WMC>~cu%tHQ zRJThv1hkKv23K4Jgv$1ZwME{U#->NPO@yyqHu8;aD)N?*F}$5OaQ^^NNfKbxa7)y; zbB-9_pML*EiZUozq@P=BA2(JT*g3NPovQ-Jc60p{xe9kD)@gxI$#LOF?7X&7=g)&k zSM}S$U1UL;CIZV0oyxg7N1plP5kVU^?oHB#?o98ql6&d&yR3T)DKWs1Ug&j9aqY@6L;g3E~`Cy*@Xa>zH2Ew;JIy2iw>^ zFAJga)v+e+j^SH(c(qEqm)t*e4Ge=}qtZ^sH@0&L+}q#g%sG zkmcAsHk9`9p64xduYyjJ?2>BHDJ4Xwm6gojX1OQ*5xYZ@PLJfb6Vjv&a$sr#dAsoW5tkiyoa zx=oQ0bN+=gkp7yy9y1V(+>(VKz|8e;TJpl?=fyFc7`80<0k8W3ULvhi$2IM2gy4o< zU9B=<<`rG{yQhiJ@lB;!1qspe&t0_s@#$)s`!0SBgO}DpjQzapamdUaJ7O>yMLWz8 zNfJAQLodbmP#ejc53|^_RwNxBT41+1YL3S`3rBxqtxlgmk)w+e;%;8L?yoise4wlm zVmgA;9ZIw?z-CzC6|~Cuu&V97u>+n(h|n?y!;pE&taJ@eim}$E^8oM5fjn}auP!C7 z{vApDv_Y#lZn7~8VW0WC8Z7r!ui(hRJtu?ecdouB3++BF_e67#y0rJJW%=>@T3TQm zZGwK8K73~bJZ3ovm#5(c`lE9Mv{5kUwoCGBbRhCD;E0LZ4yLMgrdyJ1`clB{k8rs; ziop|6qR{bl#)Fp3mLk2m%}ugQ5*h#m%O?g+3$-b+NeWR@J`w%ctg#^T?5I+)#`vx2 zm+^^O(=R5x1u6A5rP5-eddvOt9pU5Y;`Eu$WirtIm|AeWnMb!$P4yj8J)Il9PL1xh z$9*5t9HlNIdoZCg69<>DYvb?AdB|Q`ZK7g>SHx^cUX^}v;4v^9Lk5W&poMAk%Zi4A z+4M(4y&mJ)jYiHv9eG!X;lB2W{{k@L<=LpnhM5eYM2d%_Jf+5E`U zbm+8nVkg=S3cb~gyI5@2cHJ5 zuXTnFvHFdgK0B&VA%hJmEz(KDza?;d(u&}K%Apl%WbfZNPB$8FB1_;VK-Il(str*? zBBd35;w-$YbMdvb{_PExoV0ojUH6vd{>MC_#TAO(!Qe()vhH zCuKsg*EB#Nk{1>>2ebx~*_F795l(UCNKDO>$L`H}2M4)a&gm(44ZN|0vi!yns4-ic zOcPMPoF#_ipg2%z0`nzAv}N||=Cak8k6@!ct7|!*UTDf9a60)FgY2=?G%vO85k0@$ z$p=SI7KM}BBWMVVguXz^?8}T>$31HGm;w4&`g+wUxvZEZdL(DNBjSlM zJ4aF9+B~PfT$FxJ;rpKN+tep}Wn40+!|~?Rk|Fi}+%vL>15jajdl}ANn^s;PjBe*} z^5Mp`K+Y1m%7)Mh&VZAHX94!^-3&bv>8%>5oBd)I|6Gl=jq)6x9W{W4FvT1zyBS6<}>tOXstS&Krm!lNa2M)jOI!@l*jo07gDNE-G6-u$z%ttPJ6sPn@u6Y_(t2*s?Y=#pDOJC7< z+?k3~@PF955y|#;7XC%jCHT|5ZXn$BL_38a|LUb+Za-ZmI` zg(75-Q#uJ&6gaD5r}?%18DBdE$04~Bq}6E|0w8KfSr`8q}^( zVI|IS4(F7?I&{5lsG{a=td6U!=iCqh|4us1cyZd%JS@~n7DtDS7CIa9_Yw9M-?>@v zQ}a7wF%-A%u&<>j8u{ls%CmVcgoOGd6w`Axwd$v1*+8`rAt?- zIRwm-HEQ|;jItjmn0nkxG~|D5+$&qdv?|*tY}yp9Ch2~e573?4v`Eb5>$WX8l`1!u zD3m!`vt88}ujLt-9j!iS7fsG_Av_cEAIXw9 z6AlrJ(J^BfXYAQgi;82ommVVoZinbdxF4wiYBP?#EcZmH-N!F->5_BGP?QghznAwA ziftSB)OHGCJ?ARIc9+W_&9oV~{j5HX1&g2!zGf^t-zPBf?VAJ2W6%50j+T5upFQRd zLAGxdYC6Zr=4d9Kzc#=`>FF*QVQ*Sz>S^KjqqAMBI%zCb=A1tDu( zIJ!^mClAivch9RmJ86#7w4MCE###rsQq!_K1~i6`47XZRPR)xHgD4iN!N!$RD6WYT zjILurOr&U{L!`aALwtaphjcg&ZUeq$j=sgQueZc*HZsFrzV0@a^YDHq5tKPwU66$^peVk+3l z-;}~`z%6W583aBY)^S*4cV!)8q4MLUZk~6WUDs9T!9uW&LKoXX?r)~P$M8Gy<8864 zD`qejkys;=Wi)&>CuB;Yc6zD|OuJ0QeYzi6!QKR+rx#9H+$Z!K7AK3Ao|3_tuIqu< z@1B1~nWMiXF%@#R;@h0tEJ$eJZ2H}Ipr7kwFlSlEseJeh#bOZoaM~Ey| zF}zUNL1=uhlWK+R%?`Jf;iOYRp@2qZ|AE8ZyvkF0wFlrho0^EMD_V5)$c~{g3Gpk4 z5EjZ|olVUJV2(}mn~iO3RRguk2yUa8L76hCdjrj^z~_i959C?j5vy}k}xJg^RBcKaVs%S-_`f$?xdP?sq3?7Mz^#QS=m<+dXQ8mqID;v z(TZ=4#Z<$`FVd;3{Z|KRJGVjrZ#`~Aq3~F@qceSzdCxUCMhjRS;QZct+fB@@3cXA% zTh~X8A72Lik8mm3)ul4}SB>S-`7Z$(=L2~7@gAJXao#%^u$VcYbn&(SBYp6HOIJQ2 zfH!UyqHa3|@Jw&t6av0BR$}hyi zRZuIv@xnIj-il^(xD2);JM2nsrF>b=Sw^h{=+z}DgpLr9F4owcu+7GnJkyfO=qaG0URxIMBPeirax zdiyNeW6i8cu?T7KQI{#@?c?$pR)@xP$RIB&a z@FA(ssv7@!4784St*b{*cW5|E@UE;K5;Gi|Xn?eZ&{1{fq!rd`b{>%{JU0rSw<7$v zB+*EvX7W|Yr2RK<&2B36|29|SR}*uiZfCCmhXqgn(-l^a2LI859Z+&wFP;SshS#7| zX(ignr>0?Th2dH^TfD+3eZ{8l0}p97-u!(zT&BpM9l*L8%F2eOY_JqIB4+2$=P#(& z9GRRgvos8U`d@1**0=`1{jzJ_gjY>C$cB8(&arerx(|mxMQeu4 zPlwZ>BFe@Rz8hdFeDIf`4-mx;lziog zm+Xcz!bO5kHt39(M8^+kfE53Ol1?H7+L;KsriEzZ;QoZ$7#Rph>eUPwUM2>{wgAvg z*luS=fkt_tbaxC;I@3Yj1W#Vw1Wvbx$Az>tw63}S%KHzK&j z^;_mFe8>1v^i0`~319)HNqSo{X1Y_l$ZX8y5uql?=3Rt*(&`{2%2=#n5a`%I3bZ$5 zW@Vyf;=;g6&qRo?8xjN+CroROo;;()ofKn4Mq&KIye3N^tAvag(e9QonI}(KPQpy7 zt0xBXsh37!Ld9RZ3mD%eS48>lf4OsDN=97FJNcmJUD>C2TscG?g*aobR60Hd}QXpP^y6hZO*)IDc8+C3USopO-7 zq3UxQ66#sAC9F^Xjm!XPu($;GDc?h*^_HLW{9fW<#dGSkzf~C{Y8CPA3bUPD^i_GgJFOJhz9RV<+3nARtj%)5Xfw z5t4(W7{<|~GHF6w?(?XGkXt>pVKEAma!6(QnSV9+$~NZWsAN(8M?P6dn_bekQL62? zGa%vdU&2yImz!OwEBnsa3KRW&Jo&PfJaTP9sR5~fXxAZD?TM8KLIxc*wH@(_%kA;k zKFy5MKjOOn!cs0P)NKP%&YAiMN8uMN6%&X*~3fHJ)&fL=+KJTc22 z6pO&YGrmn4RqMaW6}Epb$yZP9Cz@YJ9-L#Ay;sIT^MDOL^BOF=hg>{*+oDO#n#J)#$Szkmo*o%iT8Po zVM%Raz(o;)@KgIGp7y%6werHAB_v8jX@zSvvTdRGhuDm6-S)ILGdHm@ak+YfJ^h`2 zP2D8e@r!3%6%+~{K_9*vLS(E<@57O0V>PX%9FM~J#5vLo%TFbCGl&51eoKn2&klV%W?5zyq+b_Ajh~x!*D#vamj3n1h;j@T(cm%fLrw^x zq9-6jlz-`l&$jI27kS~KI2|d|yvR>iZpcE)&h%Kk9Cu)2l}h2B9*raN0waE+T(nzz zsC0Fh>^>hYfm=l}_7DzYZ*P?D-1&E=%@{C%0rz5L#5qW%sYHj7)Nm`GR%B}8pO1pBVgjWxNA9Mb4^(zg z{7cf6=Wb7CkN3!@Tu6lbofNvaYr|iqTk}LM?aS30M=aILcfnEf*HU|Li=?E4@k{Bo z?K08s8>M{y$9KtXCH;so7b(0WCX;AUc!R#{XOYn6q4zZun6^A!N-&>~d%;>s(H6vj z@-t^k7Wu>4E6)t0&()0wuTSrzvmfq~9K(}W!m)YA7pyhLO3<_Q%Jqk*3l85vfr{^o z6-)Q^^BLqT{S!*ySrE^uws?I@6(w3cdt-<=Y^p@*Nm$aIvA|otQ&J7(` z&nb2N&X5U#S4S*difl@|yzaSJiSI?({q8I(-Q@3SXw-iFE#(wWT0~yUK^fe{%8?@#SV3?LWyyu~i!)(L< z47mID`;Lb-AC${>5M2y)wRW&d*rVA+{;k_j?^kh{K!pXWn!YfTTFG?DQ316t0 zQ$9j|g`OHFLq&M;&60>^CV1`5b#13B-^ZjA?AL2;N0P2(E849VJJ3od3Yopr1pEph z`zPY_49`i`nB9y@m3DZe9WC;BDu|=c-7`qQ8ifMxMx3k$0`k=U2eIC^X5OxmI7MBU zd8vfByXjy>=|n`ei%DlpO3l$1?1m|U^V~n8fCJui45rHtPc6J2jEzg}*kS}yafVwxrh_h?Z69nRte`eNPF4bH9!76>+v<{idN%eV&xP5P@3uvUGe*|eKkqtKR&0MM%1T)F zLj0E7v{y!^X20GNp8pew&XlRR2pKXGd%3Z`MQuZ%vdGMCV&>b455>PXM37jUZTs2} zgYCv2+p>lqZ*`Cl%~|4gphq(K;T^@SCa`jpc9-8l$N|%_L0FLW!dH28v+X$)`^-ms z6p!C6@A{I1FHV$wT6US-`1C_>^U1D7rVQmxrZat!4@T8S&vKEdj3(9=Kc`zVGyy&M}f0(#GB@)*M zg3s0DuVL@h{yIO$vCM$OxQp!-Z4`^NnqAo;uPEHGN0mVP1) zQ%eCmBwD&0EI8P)%!rwDDEetr5N~yHxyaqtprDJQVpp%?W&ZHXkw@=YdXh~|H>+o$ z-MRZ279b$PM^&fsu|{p2%n@$y2apx{KL2%Z%*sZ(Xh_C4?LXkPrieg{2aAPh?up}< zE&_Ga7J!We3+Pf)jDPLOUk357;i>Bkoj6Fo;0KF8B|K4IW*(l_8G>5#8vtjk`TeS0 zQ87JW!|@A=c{aKG7sqKg!LvSMeF%ljW-{#L?1K2ZZNGLOL(bcG%Hp^=x}<~60db&r zCHlvYKChFd4~wTrz^T8aua3E*G|X$9bZgHP9W}kn<2u@BONwPwo_ryx^EAE zA#PFAn56y+B1hE(*G}V?P+TX-cd@Mr9YR+FY75ZLt`86RmhOgg)z?1t zBM+C+T}SUqyYI!Bqy~tI{U3ztcOfI_dnc1#jSL;tY)6kv*BVtZr7OOUvhT9wB2BEf zZ=7A5a}4WE5eII^2Oc~UX_v!JRlc&d{zM;UyR2J#o9onNNGxb8*)tw^6KSp5in6L^ zym=$pP_3qhXI6=Q(oxCD{fd0}!OcA`<@|J_`F-4IJjvRk&joJ-_fADKpGUN``U-=_ zNl7IY@ltdrqW4l{r<9@@)!UJKupwiPXt-avB0OR2O1J%=WJpCkZjIZ+S=N$b3O-Em z3_;HO!mWf{e2#h0s=w#K>H)#?s_jFKVi5ORyb-J6`{FNSbe+Acfn~Fy@!S&oB|Tn3 z9#OOS?Q}tvxg-qf?RMp%HBW1lNJg|co+hf{L>yZKP3>k5S`PJ=JQ@z1f#Os!bW9h> zWN^(xCO?-9cqsIeDI4b183nkHdb_A8czhBSTs_m|<*~78Tcxz5tASmfu*ifCTZPw#1s1_D4{mqH*yJXv$yovE$12OhYXaB`Pn{`+@k`bLc89f&- zY5Nt4MRI+gYR8S+-j0mo6Ay36ce`yFvHhp;#|e8@k3S9wjmB^gjBN$=?S; z8O<-=`uQCBw7cQU$|i^$6`uVPFqJA(6gw!AP3jY|22n44&%HwA*IG z*ipz;Um1u#y_5dQ1xaHo<&P?q7>e8bu<_8tNa|k8NUA4%`uR893zPU>4Iep8G1Z`@ z^23u^?8eI<#)Z{#)YSD#k9=Q*Q@p<W!C4pMNx8)5PM)1qowx&O5PkH(6J_DgMVT z#BuRQE?_szRQ%OTQa&wdKW&!5i}Y2QLt?>|0HF31vlz9nS$@Y= z|CJ+s*&COh&_Ui`pN6j^)iQ967pi3UdT_@?ZB6xo57Ns?#6+o2-Cy>6ut)4K(m=(wazoKy16`ucJr$7!>%ccnWG3V+=yZ;uBT!ii98o z$VS$vNhV@2-5Xa+xlctFmdi91b!@h{y;UY+9Q5F7Hw5{37?KJ4%MH4v#$r=#ID;#B1oQRWG+)m~ ze|srF&p)#Nt+?hswP@xokbO-KPvh1h5u1dYvD-IN$iQQ!fA$C!+7h4Uf)8>+;Rf~@ z<=F{>JLt^rkr)(d9|nA|yN$6<1GxOF>nFX|Hb2-yD~WgCur9_B_YATAtKO+v2>Dbj zg8OO%`FHb$Xr)Ss*^>uf^!^*6z)Hzt2?lVD^)^H~gUc_wbCjATu*YIW zJ@#+h36Av$6?|VG_)bVRRR+=IQrvY`?1!En7koy z&j@D4OkUVPBWJYr%jRDPgvJ^524gN4Xfy5O3iw1F%wap`(#a8tJ<#zmu)sOLAd2;m1P~jymNiAt@6? zMqMnpi8Xd*O_+2m($Mf`yQaLpaiBX_M$e}dsMuX}p0R$|U2HWp(2u)?nVJq-wL03# zB`dj?P(Zfir?vZK!LMxLE`Q%>u&|B`o#oa=pWIH!pgaAwrVs$n(itETX(~^ zq{LZQ3POeiz=LegC&Q>p1qNLt=-kXP^EjNbWCWp7q=68+Zj~+7oqE}w)ipe>t@p$X zz^jNkkkMu2jYU}3TZLGeG zrZuEa=45+EN-vZZk9E_M ze-}^-67o-f%(EF}C=ao-1YyoK5liXVCLt8-u=lb21CUG2p_5|o+HLh^-ia-gYPXzI zMh?Z?@hk?O{!2XNoy>{*X-5O$IPpM#d~udO4hbv*e=jau1jWo+`~qZQ8<&x(kL1He zAQXuCCGZ7cAH|pPCO3)Q3ol^A%VJ>?xFuthIWtzI>sV=xl_v;`PA3u2>NTPuwl?=> zXR5D@o%qFXsS;CWK!y>}s&4C%kMe6%(<0CD2 z3?%@3dYIdV5gt2D)X+L866A3Fp>Y`LfwsBnKm5e}0#+E$-}#Mz!TzNocsBEYD)1)T zP2y+96RpWBgo0QpGQ=fArz>@@f1;F(fZDI|dzTv+p_(0NchDXpL_$~t(}KA9j={a@ z{&_YD!79@X2367T5h}98i6jv9uq^DlmZ}BD$kvxs!vFZ|q;1<#oxEK_l{3L0_d%L* zhKJ}9Nygc#-Q6ZCB&RhChvAyk~DOTym`1@Pl1NX83b$ep%WpaI1B1utwuOc%ky~T+{`Pj z^{XlM<#%i{u}YoO*29t(u2z!*-;LC%2uiUVK`h_bhMq+Xh{iBNGGDCs2pTAHN7xco zi2)fo)$IkPkRut1mFUY-qX}a4TVIPp8%z{^u zy&$oNs$~RVvv8?#IEaXUTM=dooZ+vV4bW-KAi26J)EdpO2apY4MZC80Gd`A(>5L6o z+6B*_QJN%Ii37|^8cG>H7PQ2m7Wf-@8~wdm!f!S+>yqt{A)A#tXU4n_Yy zr>N)?W#OHJSUj3sRfHtW)q3LzLUN6S;=|j_&cS0)?Y=dx2qETc+#%lvg`zon7%ofx z3ksrij}Wi>R%{0->IhZvGjWQ6~l+PBfY6OjL4rCsNL%;mES~J^c|5M`s1K`P^nKvtNGPZm{3*=xgL1 zDV<#|riDi_AyA-}PR#P6QqFIjmHEdqwg55npcnmo9_LT+Owu7yB(R^{j~GPYKhmuUP;3n zb_gg``-h@6pq18(Z;+RpJ=m>Iei-mlB|@Q4*295<5_qMBm7g1s7XI{aOvAMG(O&av zLHw*?j-=_7lK=KTCOh6Fqa~+@Gkq(jgd)#&7gBET2og^C?bYO}?ij4@c{R@8H11)! zjXg=oK<+Vu1fB#w8)Z+1Wgeq5Z@o_GD%KnhkV$FAu|-|l8)$10>(j$?tXmIi6xxg{ z9LUR6+RsrjV4f;7$Sv?hL78grt4w$eAA;V5d=@>z>a=JQ{ezk!YVb!YW?fO7ZgE82 z!Ata(odSL8f)UDm7+QDsN*v>I4i~nRA0#SA_bbHEfzO{*1DzYn2O0q$x}U0jL`G%& zmd8$7lf+_Bq6xP?LZ7?-RUdf@YqD&6MC+noV?TNzTfy5;%|9ISF~-2Z!>G}BlF6wu z5{kTGs%uA`u%{>C{ycp6H3V|Gi?uScW+?iaGaK4^Mk<0d>jik|VCeK{(@Y#@Y zp+DKAYH57GqxB$3T=?hUwML7mbl48jDuLoqrubZKk%_^D0j6?K041tlo;bH`FG9u- znt7RwguDUsv2DMK(h%Z`2f#k>dW3qE$`O9Voo>uqCk7prZvswM?%vevf%aYZqg6$1 zy9<5ViN_EZ`it$bePhQ@4Vgh5`H~9_FKE=1`OG^ldhzatN7a4>>I)l>1pMOMzx1L0 z>oL`EaEdn=$g|5{0vy6qx8|!#+1xYvi9JK1f%=3w0S_uzi4xR9ju6y3I`v%Q+ex5J znj%$IrZ1zLD8b@&89C7@(mI|MRnuCI^o=C!UgQ0% zq{esSMHQ3kLoHkU4JR z{EXc!o|Wz4X?|DNq52Zcimm09Y~<4!4{`2y@#_~|9ZP5rFhJ@K{oHQr9;G>$omKTQ z_kwVrk5=mTnoSAnxxHx^%lWHcI8N+#)3&zvnfxJanZY29+!rsQ&?7zY-lA+EMMGUc!UjtmsdqlySZ|)}*~@dLdNh%N^fmfc%Ig~_6n7F&$EK!YqBRRbcZ z+2Hd^*02YMP;ef!(RK6e%fs@|_IIR?-5#4EMYjgU17)z@2G~%*3r)Br)am(uBvH78Lm`!pbzId zaH{-b*|=x3K+PxH!qT056g@XLp1Ih+)GxnTK6G3x8yeth9~UcXuT4y)>asQH7SGn) zX>Dx}7`h1u8>erS*x(Ql{xCux>g=u24^5JYPieT^j~%6NM^JgVh`u=1J2pK``7BSx zq=pQ2S;fQ@#m$H-Ykqlieo=%T`8Gw%g#<3vk|fa|E_W*biq1(n;}<+(?vynW!Vo;a zVLFR1!e-As9LGA&k6DgJN|$PDQeNnTh?k!_u7f9^DhA>pbRSZ6Kin_l6lc7Rt&HaA zbzYc)ZTLtsWAEPj@rnDX%YUHoGs2`}cMea7qckIDSJB1DFTJ|B>QjU^tz}k0pyrPs z#kbegW_e;q;McP_?+H_oioqd}BRfMf-lKQf6a-ou%h=A!TrN z3=I}B`f&{Hds9rVr1S-p>w2b;qV}qf%)nuBpy2s0dK}8)dW<33pKvn!Up>zWqYEo| z=H6@!Dan6aKe8Fru@ejt?w_l{wu3=yFt7Ur7R-I&;QEDJS`}lig~*wwmVuT@OMLvK zCo0}{xcn2bm4fMKGm(-pK+7y4;kxOZK>WmlfYM0(eUq^ubx9g5w$0oa0AbEomzKtc zH(-t%QZk7s1SkFkZ&`jJ61UVdO)}bl5$&0igmA@ljukYRwcP!dw=zo-67VZqLlITyqI(z_ESLQp-2y}&7Nvmuw2p%x92w5UoH0`6Tn|NMJ;&{iMoiVpg zmA^DP^aA=leDp$R;;~%(rjDF8;2JJl`jA3A<*LiN4ztFz-Xi!-6h&@%2CUkwk{y#Q z1Dd)VyTJ%cgyG&B16AG%uGo$nbT>^$kGpw3OQJc-y*(}T7&i+zP3=S_>~a5xsrBfY zHfUZFx$%))S49JYXq{OXy>aMWzu?6pTG5#^Hs)15Z-(RGc<^ly|Xsrx5pIO@Yj>7mw-U&DV(Sy3&gvIW)_2-GR?j zwP75H6WUTM%P~H|mZ-12OPy~Ou%hP%9%77Ara^cIg0$-bQ`ad3py+p*r2kUgs43l+%sqVVcUtGt6RVWAhn63zJrc3aMc-g!3J3%ycu0{yv|wyr?R?9DQ(& z6@*N_vN4C9+-tVKf)9$Fjem$rmMU1h1EDy_i4`Y;-Ce#pTD^)I%59^ zem?D>D3-@>@9RdU<_qFhq7NZUooOw@cO(SeF&45&UWjA!8*r3@@<@qRo0?8>LO z2Omdj&j0>wwaxxq?F0x&w?BO96E!~puzfxL*y-H1D7>69GKsG&HFW!Jo=%!7W?Ox}4qe_-*jYsZG^Cr1Jk}g3!KGUo zaF5^{<{+EKTPvpO+LL3vE~I?)hnfMQcSd+0zxqk_MD}cA47AeX!iz&e)>WNr&qGkc zHw+!^OLNc8v(1fEH`BxLWmB!1u0QH$u%6mvOy7jR1->}oDuk9reU5&2957AE$lRCs zRaBIH4-54}kPFNFHbyz%TgXL0d5;K(z#w^5LNw3<$1=pI9to|7I!pDE7q3P&hb>9) zfVcbUOxZ-@2AU3N`!P#qxtf~hQ`}S*4c@t&d_c`aa{j@p6wcjXc12R-2vST8OV%KT zPC!;Tk4v)qrmv5Cl7P&_-P2F=r&*uY`|=+Z%yFK5mXVVk3ybgi1unh8T(fVKe`Q{y z!HQ7NybwJ%b=uv&-zl1TPL58OxqbhF!I}7kJfKIDFcw6eFc-v;@cj6}!}oBiN6|k0 zns!^fZSo!ac1Os!nOxdorb+m$5!dd)T6t5O6mAD!HTg`BDM5Ju6clDf)09_VYuJ>HwpYoAN-UA|4Jd z24Sg=B)zrE+x7 z1!}=HrYS1brsAQ)(Kb6O%wOoSQ;*Z*hnLV4+*ESjRRtSqSba#^euNWKAy%T;i~n9# zw*90TA8W8|8eQ~Bi(bMmcp`mm?`p*Y%Rna@yq9}HB%eATCuW?+v>dM$RaGq}U5e~% zNM#NBTjLs_|bs2nTV!+nG z&tNvmkCKy_@KApfejwBW`0;$D7Ee;RGEZIp=gv+NIqX+Mj798;3*=p7!!jd* z^E>t{#pd^VGZB<1hapQK(g{?-`In;QU*cfM;T?;&T0`q zwEo&kLBG||;P>cBLJXk{LXDezgZ?vkw{fOa0^I|=TTo+ZJ&zphJU2yHs<5Ko@QaEw z6exD3*Jf8J*u!Nzl$)gPW<~c}HJY2qY_y31!Wp(ufvxTZ(S=kn;uIJ98D#cIz^Z)- zW;LQBFn3*5)Ch{O@G6S$je71{*PD1=5|<(RK)tzKTxJxSN^j?6Js>wmYx~z;NMCCu zroW~1+92)$wwLYmR!P*Kdm4dc<%t;KpgoNYrr&!S)4$BPowyA_PCqM!{G>atNG0Ym z%riCiI-F`yDuyNj5?e5h%c~UQ{RN1`m6HmcTg6G^{7TCy1tL z#+=&r0j7J|E)SF2fqD+->tK&?#Z;?E@tB9E`9in&M zu2A2!_amB$r-UWtrVw5>?|h5XDHtJx!9(2nBM#o1dsB#DK0@gjid)nrn((G;0m;fx z6>OM+(IjXikrqzICl?u3Pn`1&LmdvShzq>|t4i*>NlfYm0a+0e+*$T?h!D#4Kwkv& z$B6>9UQ}wAeraTdclnMNGrlJZwNw;h!>XnWF}@22S}2i(V2PD?8j|?VX&3h8j9i8D zyoUp3;D35jNw>@9@@MC$7bDv7D4SD1qNBRG1xdksd5VC-JagbYCMIAOA2}sNp4~8- ztIeOi`JAr2M~XvW^Y~4n;}FkU1W~TxZUG+}E^G{^S;=ce_AFaStcykOx@*N z6`n$qS4?^o-89fcRGrJ(ReGQbTbB3wEtSuaaBVt6=OGx4= zJHbj>=S;TZFWKhNN;Nw12&9uKbJRJ3y+%D-PztV(|kH+l;C~%Y`w9Pf{%?qP&QrC`s%%yd_(i{`R&QJ~934n~OdA|j38x+@Y z{6^*G)j>b&D^N*ZHysa+O)DNATimm#>h-i%(+t=ckrvm69BW)ScT$p%ogwC_&9qS) zFGF7hIplitX=W2n;8Oy72YJv}D-1e0uKpc&#&}U4)9T1@^Bf832)Gu8UQK@BYQf7M zv`l&)^2gOHVr~y>Lscdp9sL|I?s1(Rvns+(#GOgaHlh?S58TX(&4OAkhOKw&trqA$C`;R>@qr_FM%zem7b9Cj**E_T{j5E&$c~!>xQGUPher$N@N) zMCr1kT-ue~CLIYcs00ZwQ;ulT*XNk}t4m;-Q8N<9?pJ)j+xZO3nJ9nX9<~=B@Yq1A z2RWz9#4?yS@504FIFx>Dg=YoS>Vu=JT57;I3UOo`NeGQ0cnQ4g%g{9# z!u>EvJhO)t^C76d?u3PsvpCR|S|1BL?--C4k03`b?GxGA*4nI=M%+&wFgD#Nv!Nyq zY3b40bp?4IdJOG@XvXP4V(mQwTB9EkVz<-#WpiVE(e;(Y@DE19zvv7(|B22}&C>zM ztYl;kVlh-Qast}9kg|i`Re@)g2bx+MiP(GSvVhKcIM_%z0i62q%ql=N72Z$w2CDtaV-RAnaj^BYZxG?7{b?Irv~@sCms8)OQx60G+t2lg zMR$@9_{?~~_LmnXy{o}n)B0cEMn_@4b?O=X^0*&9&D3)k@*;JkFZ*^{8|!lP;?RFJ zXg!Z8%!T9E_4rnh-G?4sgo8}dfoFz6#mkCZ*oPsn}qbhk#;pZ58A_tZVR-3ZYBdyM*fkRyauvtagY8>nLg&;W zQ1sN3y`s*4>H+x=%IcjHr}+2jDA_d&2`a5Po#QfE%G8rp5bXePv~!{lAGWe6sd*1R zteNm1WHmc~2K6PT1hFep_9xc9RjVh@{TLmQ5yRP@Omn=ipz`_A5+LUy3Qv+yBPaMp z@d8cMKTc3^?ob*aSD);(29UKpk{(HGL2!1b1GZ3EX5D-+QS!64Mx22snjIi7)!=8* z&z@Zi%m?vMo%ZKCD~Kt41)w{frDu>~<*{$>CD>HQT&{j)g}IJ0fnRcPg{FKG~btn#_&CBOd*ht~t-1Mi!O8AOGN^Q>HahG_px*N3f@MHU? zd;gvO3;Xibbn!4xH*x)AD~LdGV}wQ%-I1hAH8XGyCHDdGV_x~!$Fn%=KKjJBvGfzM zEfrhJ{w3GtZF&)LG3vpkDCQOfSb!g#q%sMpk;E5DKFlWE3K`SGK%E|kOQr!W>KgU_ zk=$Bcev{OK7xlVveubjj_gAPhqU6G6QbtnALK{E6n=rX;b+%U!!Vq(qZWbY{@;QA` zL6KlopZJ9K*@;-rC2=k#@O(s$a*v;;&2cAEq4L(y(0@#O;q;2se_Lpo9z!=ZFb;BD zR@i$s_R~pI(t8BGFj>1Ca05b#4NA0DCc4FddZ=!jq8SFYw5>A{V@!7raZ5T4G`Z50 zPzi_G5Y*;(HJ2*gt6}+!I5_0L8YqsJM2OM%lr;imrHsW9gZN-7(V19im_l8BkDD#m;v$C+iDpIt$84d zl>9}y*}GI|i&yBfYo+7OwBd_YM<3qjC>csKAm~G8NY(JYF%8(Lo-c=BnZ0MDpTfbH z5d-(oE)YDfRuN?<%86d&IIWhb&@AdptG8ti&B;$8$wCbDcAZ7(cXlP#bixdOZ zs+0p9$LJ;-^pMM8OoI_3$>o^v=q81wdnXC|Al6u?$e<#jM|oxB5hTcNC7?@t3?+0+ zpJ$;38!-;ir2lS7utYVEt4Re11->__a&;qAkfG7O;Z;*vJW_cK))#t*eyvSPI>P`6 zP25Ti|K1^b4otfSzj__{CVItjOo*C3{TgZwyMsHj`sN<4@!fTf%-bPS)C&B=y zm#GR?E1)D&5D|;`rb7f3JCYwq+y4yKVx(Sde(M^U&W9F0D9`Bo9IA)Np0G%cl9E2H z_2F|_L5Yw&&?Qwq)hVcm6+_yBE`fEH#T(Wsgomfx_|Q^nK&~(M^Ez-xFGH^YEArb6 z?kPoMnHC_yUHz?bM*TdkiGvSC1z6M$2v)70)j+d)MJ~nCQ(1N;1aecBHgO z+|cE?cV;$2k(l(~>4M7`Ta5He6`)+ud`36W;Z!&M&V!!Em1wc=rgi$~C`X&@W+81E zOpdpH7tU?^?Th-{eSGx8Qi6t_mXG%}i zEK_)Bb}=VmaWm0ZOZ4N ze#It~s8m!IDU<|ouuuj)d+}yZzC{n>f}YpJf~+BiM4upBKBFL+c9Sn+;nSmcYPhNH zd~Ct^)wufMNuu%6r2on4dpj>$U@>RUug}`5rsMrceBXXm(2sqqCVyCdV+>3iBpOf8 zZpTVy_Kl5s_tjI<8V#Osjr=ra+hj#T@ZVq4Q3o1Cr=9{=T2wf&jHM{q3%C zi64{p8_%|S0VK?X_x6Hq9JpY)?0rJFmS^-E!%~d<>jW7r9wbh9Z3#B2N9sIk@e!=X3iO>97rc|^zUrQSf_c@HIz}=dt?#s_SOv!PX#j%T0g>G5b%b>r*mW#L*^%?g?s@LO(n-b=n7DcuZtlsmYqj2x7VO`Nr&i_VPy}P`V@X8oel!5pw&l+n)vmjV25>2Bl<54 z^e68MQsa`4@tB#^;@b^J_&0zI=)u}f!3NRla5_?UV&o5gMN;Z)X@X8u6DJwPZb|u` zxyXB+IrRu%h|r5g8aw?L;3bX(OSr2HpOO_PFSkk|^9Xg z*rD;W1+25#ULpHUBSbf*Q`h2w3j7j$ZYXjv=(1T#vk_!e74 zM_nBDiu8(_G}q4=7W64;2w0}?e^J%R6Lz|1q2us=AB=}+mause61hbXX;ux`w^Fo@ z9_VMS;s6_7+3kwYi1v4Jg5m>EPPv#nA@Tuk@n;!qy|IzXI3==L%zO|8z-;r1O4@8} z3oLt`Xk*=i|gCJ}FnlmH89CEb@dclE-8EnAusC3|HQ>o%{2 zhvXp3RcCi~kNgAHGRgsaUKNynC1JUQ^q+%Mzjm1>%`QtTaw;m^S=3F~=kp^S2iw^{ z(zooRWg$JQJ$G2=y#HyoDJ*);_rATyz-~8)5Ffr>*o{|lArU) zmFqse-s`bioS`LfF6W7BFCNt2Bv>#8Q?B5*{L(|kw!o#|Kgi`fLVhB`;we2Varhn` z5qq##iw(DZ{D9F=ty?`ieoXz-$K(f~Zc!e@@$9yUq<>lXlF+rW@FihV5!GPE-QOuN z;Ici;lzh)m(40t-#ds`={;tgrA87j>oyd`h1nDcd3@VTe7-3i#_i5-xTiLX-R@Jh;}lAzK)ts zcBe<6n?8m559cT6OO7FZz8wp=J()&(8u&VOgy7mnYW)&HqqfBwtSAIJXXEs~@|((YnR z@J6{!54(YhOg3m6H|=KGKA}hW8et-X%ABYt~~#H)IxtPF}ucl0}g z46K>k&onIceS4pm6bsxmq&bK!wmFaRqbgnTp<$44jC1|b2;b*rPKc#p(KFuo8T%!4 z6a>M+P4lpQ;kUbDyc4R={j5JCCdQ(hC>91L747dhxI8?R4o9UlDV;H4LG^8dLq$-} zm!c&|ho%5+ohvOJ#7yXYy?t)VgopA`!dkv<0Ul$dxU$W+em87;l_WQ@aL7cvq2=@E;(E^pw2l3BYG&J$(TB8cK-%D0h`z#$CwKTe z!HY0or<=}o+eLP~Vrg6K(5F=y7{1Ng{zWz0qjj|@7$Ae?iZS>HR_-_=fqL$6j|8KF zGpklB;5BB04}bO-&7PI;L!a;b9q61fpRRjo&7>*9<2u_ESjw=%p*s_lPWr0S@! z3TD;G$#%Gx0hhn`nOme*SMCBf`4w54*# z2^e9LOjFnxM;B?mtSASuttrq6_D-%Uo!!BYu#nWJ+m@Wa_b~s=7}TCU53RI6 zSa$g2EqhwN(0GvBTQKajD8tVBQ#46IVvrS$eYpaY+8x~OvcsO|#2}lJ=j21@l?*Du zhU7bGa{u`3u)B5z;6+8;dSHUM^EFAgIZY?1`M4q?(gWUM@ z3-JNDh$&`uji0DA_mico@*BS$tCJi+6Tu^=I^Jv%hn$0v8;?RI2x_fXj1wO{wOBq9o~xXC3kTZ zko!ZwgY^$yR=9(Jscg2e`iGuu!Zva9nk?C-_C%ipwsm7r`xpQE8s^Rd=;Ph?8V>&<-4Eo7j*~eX_w4U zYqvY)&)TTQo5?>=k`B!LPos-BLuWQhBR^oI%#(10$O{oCaaQULK`Dw`89=5fEIJpZ zE<{S~DR8XTQKcQej9p6wS!o8%YzS z%n~8-P6_;PMWrlspN}&<8RUf8cdnh15pVlbhmXT*5)C!l8XtVhcU|r8ntomN-y$Np z92OtDSeLlkvm?TOH!6`AVee>~6ALYz{dC@vv;#=}bTfQgL4O)v{8m!1DS9)^Ol}(& zHz|%acCxVsjNP`~BHLbD%vE_(vr4eGJW+=MA?WrS_hfyOp0*r-GnwRT?*@~4zr*eg z_pBmJ`I`nU>5b7ngLR<3s!rW062Yl0(nb=(ED|%)#^-hUU+0IDx40?HI2{-IRQ)>V z;|}v1t9mISUdt)gi+A)5WCJO5y4O$k8F<+pK0Sz2o!;~-rC4c)IllBvlUUYS-cHC* z3_|T!29_Ho)lnST*7N0x$N`W2M=UZlE{cF&rf#PT1X@X}QE&D9g)qs8X-{NdOR6qY zY@Xy_$K{91hC$`oct-1=qC6%KYNo75(?U#Fl?k&F{VP9L9Ky@SCnxk$jTTBeXcgSa z-3h|V2d+FDm_WRpf8#qA57DjP`(s`MHS~Lne&9gtb8&jEw=5T zdc*eOh$8IFYrAH$lB8ROhwH=LJJ)jQJYdJO?3fn7xoaDB_smNypQ$UvMbS!lhq%nr zp}`EQktIH|yvjI-6Gb>wgV)ocnWO|2RI>Q{2W#h?*wDJEe5V*C6Rx^rLOXkJAxdjJ zc#EDEpEQzh6|@T5#LAc|J5hmxnX>vgt8r&~67*wHwv3Q+hdc1;ltDWnRe8PbWd3Cw z-)d=N*IS-@l7ool$53m)cN2=6yiQrqWanN${9%`X65|x<<#76PH_Bi=>S}^_F*xa5 zQY^-cpY3BA%UhuW-F`3M7++Xz>gvu#@Q!n0sH9D|xUmMj1eA;EIN9d1x*|$j$*iub zB|(IYH;v{Vap#lcgz|)Wh=rWy5AWQUp>L0OsM4Q^ zgx%T}2~tbk7J?Pws@rDkM6cNSJOi)aw5kSIOz^u9$}{;!zuXx9a#xJva)hSbN`Mw{ z%eXUB=;LrX=(E)k>?Op-6xsYdsF-^F!&8IeMCZjyTR2%yjhrnqt_2MN^u<}NQ%y=q zsfXPo`MC4tVIb7!PaYS6A0Kua6Y-uFP0a*3RaGYEe6r_cQMaZ(oCx4$&*CuN`ru?+ zrWP6j?8l)i->pYZ0Q*^@4sA@dt6LD?B|r~`4>LEb`pU(3@s?_Blo>>tu_B^wFF5B;r!V?u@wXvz4TyIWOZvTjpwvebWH6U`J>%&UqEtgbVf@H6)4% z2&`+&?BgZ2Y?h4WD9Kl{AqZBCISfya7D^ZG!1Cm9XmWupZ>d@-yvqiwtb(ZrIkMMETl?*sNnO(OY&Mp3o%h>80fr*p;_Jh5^+$E6vp`@JM zKQ$B6lWCOHV=dK--8CON7+c1YwpBwm%5i?U79GOGT3qGhx!~ z4%o&V*#Hxq4xaE%&@jn=%S54a<4~5F$(8}t)R26bjkZlYJECf08+4B%h%XcWY(WoQ zLxIDoJxc!r*&>j7F*oKKR3tPbMn;3H^^i0!O+y@4$~lFpnmZ$!8rh=UXp7}%zA*mS z=oaq9aQ7pQ&T2BH>XgZq2Vig>mmh-fMl0TGlTrlvwZ71H-wlL#j}j}XbzQ8kK$9I| zCYx-YhM9cuUeE8LD|`klfL*-fMpK3>v@G%#qQX_>B)DLz9|q=X;b*Xq{Mi_5a)e^4 zd+_l&C0M;aDmuqz3C&J#HGIV4;TQRO?eZGxObZ(72*=Oeli>?XmsKo&ok$6a7n-cw ziH#~|Z=}E~5TcHHaAW{T+gJ@<$fC^y@S>>};TvG_y>w1Vvle5_3Txg_?I^!3;>?Ln zwfr3kQp`)ddRB?ycMPwd6$e+w;Zi`af|$FKu}?XMqakVP)($kWpS>J3-=bq|24-ra zC@_6@d4SA(C2)~RVBabllqPzZz24x7WC`C7v!TjL$Lgn-Hx12`wKE&$L+h^%(e8=e$XrW-^7o$}A3U@mUifHd zHYj%kXR-ipLuf%vw;1H$YlxnuGoucL%X*|F4JykEIO%x;!ta~iXoBd8yh8a&?@%Qj z>zsO^{mS(h$R_h&h0kXxx{b+9Qu6_o#x!N2sUim%2M>O>6ZL*6ayFK0-)QXb zj8>AI<52%@*#AA<`;ai)5R;+VPtAhJ*HTY8Xj8Lb|}8|7kFa7n2X2@#)9@*II>hZI-V;g*4hrb z#Hrp)BHFexJ({{ASTpO$d7FNvefLs!3l?)|cxjXje*#vFaT<7eeMWa77J!I}7QjmV z!ybE)6oBmR=z}p)tG%;7UPOvm zss)EzLOvcG{AEH{x>^XKLh8xZV<2EQ~VhX)zdYp&$of<?v?Fg}_wpcf*P>`it{~7Sx1X@@{VGl-%G4A&$s&0I+EGuGIy|w&O?8uB* z8W#$*Y_y*$qKDXcHIh{QGP{c~@^JaHMUnGLNzu|yaz~u`Xs*bXcO|KZfmD6g*_;Ow z??n$n4D*ddNmZ}n5D`K!XL+u9A}~As$i93wiI(CRU+iO2Q}Ms+f&`Ne0`qEze|zQ7 zG~+tk;b1$^w@LAN2-hELB;Z`NaQnVDlUR(eNa>``O|l`Gk<)xEDWWt6yxjT6+bApz zn(q_N@WX6SfYNcA#^i0(zS78b=*vP!cyvBO81g8LaqgNkJkTAhwal5z4|B2}(1Lai zVTH)kj-W^;aPuRm^SE&HKOgy(1lGoS(W$B}LV7Z{RZoC&B@#`jMA!2Ns)f3xoV6s6 zidpQ#LxY?Z$#LwopM%mR99tY@99b%?@#(^L!X)nGfn2njE;j|2)o^svUA(0?X)Ol; zj(9#4)vsI4Dh&H*0Vi?3h1$kD#gu$is!Rl*a+M^Cc83e~BERJEQpLvXx1QG$_Z+#j zCo=z_;$hRuOs_J5GU4c?pR@Fah|QU7Tp~#A)jC8q$d?m%Yt%i(Thx@|y%ov&`3E4* z>4mQ7<51{V=sqqOjuU#UsWO z4@mQ->9Go-B#vJorZfnAe&Mq5tpL2ej&e^Hb(kGFFyg2Jq~*WusP{v%*8AdrT?R&P zfYdHZ7IdkxuUGtS;S&5qKUeRQRz zq#A!z6v5yY)%fS&^b-XP>L@j;(3qA%w_(@;+R(kU5E-Vvyo~*mJ~EbHLs@0LHu1IG zYmk7ckbMxvuf;dD0@s33V88bn6<4S6likb>y@N=u%`MdIOwQFt_F^>otCW5hz_h?w zARc>#k$d6+XElxE2Oh#RXXAdCT6bJs-yIRiPlPhZY|Fduaq~mFEinW;aKfyG5l+*4 zl{=;tO`l9v6Ho=KcBVsF@OTivi{|qNWdaBfA#<#29KbMl*VkbD76-Jm%nsM8ove_S z#v5W`OdMe$ovSZuaDv8#oQQ*sXXd)Eh~i~TSqLlA^Wf?LjP}j$*0qze`PXxC8jPXO;~;((ZfRhQZ>#y|ucCk0EZ zNRbsfpq}vSs?@{9#|qsyW|&s6B#0m&)DuSXnpk zG}o?biP}tzQ>Ai1J0SugYIMygs6)1N7;~$m-4XN#tCGE?yy`^_l5M~&2}L%1z)7gY zq?M9xd?q7D*eyFYmyAQ8uAqh5gdDk61oXPp5h_QGle#&Lgt%7?jW|-2%?;*`Q{ffj zYG7n0gTFu}UjVu0WGFW*xB%3Z2%H~9IMTN{fwF;tfzTi}TBEZ1o;P5J-q<5s+X~2Y z0@LzK?M0F;rDoW0dmA>xA#ajf8e`efepqd`6)CyIrqrpiHjs!-&7pQ9i3&&L!lDzd zGwA>$5vAx<=n#Jz+bogDQN7x+n0vXVDeknaHnXKK9(Zn-KJ3?H99pZbx0_;hYPGo% zvH45upTdz?k5^dbBcivC*ray`(XX={-izjx1)Ks^FM5|;SeZ&F&!i?0BWC-hcLkA^pJ3Hqfe z>9%1IdZf{nhBU3%>)S0sGJ@#NP|ynqwf<#SVUOW7xDcmFBJd|nt1>n>VGya&q{tHk z36^GRv4O-FXF|(Z@+s4no;=_&2xG?nr-GSH6j0Q0uC9W&PX~3)Qv|fTZ(!?@-Bx;e|d#`|{?R=4Ph`8mLh{Len+7tsbLRI3}@ABJSnfWJoC0SZ^M*oZQK2kjXN$^Op z=KK_2M;Z6(7Trq%xF~B=ofDOcTGOrRq6@-4oApSvBE2?rKL@wh1Kt3;iura}7OCIX zz?+`r^8nX=H=OUO4)}SxmOO?=Yzi5TayB{irsg+UCFC{++A|*uYt5^qg6@c+P{Y4s zY7zs#VYSTAlz8)?(qeoZ&7VYF;{s^YaFc=ho>4+|rI!X60wk*cM!KCvgD&g5y>I>--LWjRHyb9Rrkym6151`sL} zL{7K)2&suIO9>>>mYw>yCueS&%V+K)AY$jH?4lVPnNug2UC@3(NxtRvoWn&7Vtdxt z$!E&5!E)seOU&kXOF8>(r4v>}N)2)Vb)#64#Pdfwn8a|XSkMj%bg%Y^3}GAKzAWdeUl>p!iGx* zi+2$I*2aG{Ov*H{-Y4ZEoUG?~-gNvee+S<>K z7^PPYk80ZFw1BekQhPvwv-F3VWuqwwv{SvAo=YM%d|`#!jfYyej<>vBEJRf{6=^bR z9s3OHX9}0v(wC>TN+h0lxVjvVIajN}Kgopz?7a6hOxXLzWmwl?fsq`vp-K=ZE~^;& zf#cREnRX+5h&t8eV#3!T!zfs}{kJgpRBSr<^ zCi*pS5gk`(4vsWOp~nzoEiB1HhAZiMGUC$=ZXqV4W&N7Z!pX@rY9&*S2L z8$38l9AjmLj0bs!&%fNL&P#d6xM=C?a2lvjrIAhMr82OQ4zpa&XX3B;hOPDn$o7Jp zhiIrE6U%RG26hVGE(_Pv%Dl%{DJ*CGjj$!7k6SrZA`VA7#0CVOIL=iJr2AI?bIVL5-G-0r1Dq?6hQ^YrC zBSAmPgot(T7*<#_<6u_=t(lVRyDa=K1%DLPrdc)%`vtJc3kPg{NyC7daKkXGXM@+0 zLi=q2(kw*?p1PtF){XW0`*OcV5fhb86+H8>D31DF@e3`{Pl>{BK}i{{4r>bcQPMax z@LH6vdUL25h=f}a*LC1%0p=1HPLi#m*{ zSgb7S3nnb>#kYlZN3!R#U6+)RvEMuLDY=34?*h{Q`}Z&J98q-v|DKHu_@|uT|8KLA znI+iiSwa6Y{;wqDe@RV#O-26a)a2Jx=D$*te~bA$&zV`()!5}Vg<8$Y75I7?o>{@j z7RW5Y3ePNJHN zuj~KW?;i^IJ`g80%t0SYJ7GI#%fHV5sBI7fI-59II=I+7k%AuK ze+7x(7yb<;{vPqi46g|BHz?Q`nLGamgjcK(d9Ao$01#G4yBOJ6nh4vO+W<*fK-CmR4pKl%a|;(z01N0{VP})qGLGNJuPeWvFtV|- z{ZpC6Yca;ZNeNovKfy8(SpAJOfTKxn|m4#G4x)_-6c zJLqHjpMx66xc>vxejon>)LzH^T|4&MkNY=S|8rCW`F{V5Yr^WPTG}%73aXa2s;+kM z%xd=Pc9tMJ03>Dovm)+4ao^ZE{`THp4G8Go{`>{H!PndWTV15A|FPih_l18G`tK3{ zVle)Lgc84%%>BfWPeN#D#in{ zk%C;q|6uQ4Rr8nl|3$$b8~eYO>)9%G%k;6Jb{x_llz0p^79NSfHJ{`Ll;Z|{OOY?) zG^BbfkMh%d)=pcQf9xul`|{f3xw6B4m}-l8+Byu5SC(pLYp?_@dPz4R56Z+@&hvMDVnO1n?=!rB8Op0e3l^P|U%Pv_Jvh7tPy|#^ zxM#ILAiklcsJGmMest6u(n9EuK7W zEfXIQAK+dMu^P}`n`>Lws6MOlowRF#zefpC-hFeC?vx7GG0(H^`1 z9`gLweuL(aO|zSZjxWY3Nw?D7V?IWVH{RknHW_{m;^a6NP4g45ce|W0P%_XS+^HVms0|^9$uh;H(zSED--kUG< zVBZ$O$=sU|Jy`cC6GyMDE&1Yt<4Qc6^y%8!FO->P=?Yyj zAJK7@p)@sj9)1kv$((FfUDtZraMz!cCztu!*5GNs`paAj%+xpirs<;6c6_49H{b!q zL7pEAqLrkToD|}D=5xeVr{2-8`}+^S-fekz)wD)o8L0iT_aQlv3*Vtt67G5**8tJ0 z7E?_n-1i>c)S~Ark~PFOMWgoFYzZT~02Z>anWC%_Cb&^hga6Chx#(>@+X|eRB%umC z$vl?%;{1MP{If6=-}CE5-)}#wE}locKYzWsNZ#~(*m_xAy}$6aw7#7fIB(i$cfB3> zv0`OgsPni(uvqnf6?R@xO*UH?R(ca@N{7&!ln@dKRgh4m7ZEAaLT}PLiZp>pm98L) zU{DZ{AYJJ#NGJ48=m;1Pk#eH{S!e0*#hJ@@W`DEio4J|iU2Bi1ICKSruQP@2&nUBK z!bNAVBfAsm73x^hLNpaPSi$NT+ptFcq;^`ww*xvorUO+qT$yQ%V}FJZ$Y*5_D4OXb z1zMfp$mc9Z)oqNiP?5%77aeKma=`XwPrRxG?wByq3sI7mKTxXbq~uCswG<4YziRtq zH-T#IhJcl=9(cTHLAl%S_9jg?&&=3H)WyNUcXBoKoj8+gAjb@hesy9;zo@Yqtsx5y zP;Bv0M;V2Psq4Gkdfupvo;-s)0sICmH4U9TCt|qV%Y-$H%;47DsD@fY;d*G2v9@U2 zYL64paCG`|=5uhx^o+F!8i6JSEX-%e9 z2oq%z66;iEWJjVFX2F6xP_tT2mWaNGgJWGc$G7k= zq62Re5GdRbANFX_HdRNSO8MmIb_TZu2TZbA!N|?tytzvhDdPB6Ryp)~+_Rl?lSfe1L@Xg1S!xdr?l!NrUlb7b;91mvEWXvZJX1kU6&IIuZGOZe z&!clni1|wAYvbg2b-rRe=?k%IycwCm-)UH$Pv_vYRk9<$@h~#YCGSyCaATbVR-%}@ z&x>Gl7`$I2n!^!(4@^oC3=HJHs!OUF(zw=NG$VCY+}*l zTqr55M*ck?3-$X!3U?PVyyMBPXD&6j45{z9^WlW8%+73?67}Ya_H2xcHWPaE76R@P zB@_>p(FX{wA^{uk4R;}LkNtq>4_kVQu8?WD8Cy(POo)J0RZVD)QdhhtxZp#5Y0w73 zK&+rkgHt#~pR1j*v+>k!O|_X|lG&~>jzJIYui>PK+uL0w4f1{*DKY8YO~ z&!CO-D6M3%D0Z@E8WI~IMSNnzzsEIOjC3ww8x4$&)@}~5jy7Pc`c|rNMi|WB9>d4i zG0|q&yr^UsP+oybjOJ@-2E|cRHs6TGYwxDX(3wld0L#0Fc?~CHg{pOc?g;C^Qi#32yEx$fOTZ;EUILWQeR=RL zD_eRw8xixNMxX4}8a2n#LZSCsk|6F#Df)i2Qlv-uJQ0Hp&GGhFkAFl74%8ds%j&Ee`u$AillGb~s`O*KHK(SohwxPA2P$d8O^gY!9KUq$DH>qS!`GX(L4L&LaWk8X2BP0%+55ciW*m`eVuvidH6-)nyDIlHokh4go#VWa9I&{O?e3c7 z$I|QuIY}k=bLZ`V(Dq&(Zo0o?hp&MkjLAg8JpC1V!z1 zRqFC(LbBxR`Dd&r&_~Z(oS7bAtU2QStDiHxs&Jz1_>99*t+y`@tW;Fk-RM;L0B#s# zIC~vXX~~V^I98XaucMr?H9^BGot3XK5D-EZ8B6;RecB0&Ym_C)>{1|=f^#&W1CqW& z$C&#H>kug?>x%j+FD|G)9J|PV!%VmY?|@Zn-7e%uY)>#agSr%mLKUw-G<``{TNbBtA}lrd z+tK`dEbYa{B8{GPH^UWfnEp3X5%6r3jM zp7j=;=bt%hoKhJO%aADwA7-C3vvEB*$xnMwd7jWhImq!=a!ggD4u&k`Z z3FV6-j(UghN^CV}$Os&{GB152Yvas>?5oE4DNRuwXY@THirwy&@8+yuJ?FB`>-P?~ zH)d!k>q|!u;#}NAzV67Wt?yu=JiM*;R3ql)5!+K)@mT9i9spm~lB^8seQI0ta*9of z2ygIsjLwsAQYt~4kL0T~vVcac=>5~4ljgx2ljqJO`mqz)VP{IVZYQ=>54NpDsyBOK z=2pVTbv~1r-eP|oMsMPHG_9#AaA=58_vkn@zo4J}!@flWf_6QwJC{`%K5NOJ?cifbYj5 z<5peYkAqq<{p(HPhvn}s`#Ip6b+tIxa0h3)=1Rj0o1H)Waf+_$Ur_v<1P#p9jVPdGJ8Ny=mDqpM* zRax8iJ&td7Vk{NgfoZZzcYIe!;Qb|0vW0$%1vRZ5cltMbFI6XLw<1}>wUeYC zSY5EP&KNzmVhu&S{`*$?`(6HjMx4*jYCV2E3~;#gKkervKO4Z~zZwWCh4+O1t%0EU)%`I}LP8RZPyG)~ zQUWT4_YD8g@UZ?TCi+tYN#j|}pPD2PAN(&3BnguGD;Fs!-naTQ76bxI{}n4GBk@-( ze(`_h2L^)id-i93U+5@xk=eDE